- Persist admin test map state in the URL on
/admin/testwith map position (x,y,z) and selected layer (layer). - Add a Pydantic-based settings hierarchy for environment variables.
- Update server, queue, admin, and generation code to read configuration from
tilecloud_chain.settings. - Document the new nested environment variable scheme in
tilecloud_chain/USAGE.rst. - Improve WMTS REST error messages for invalid dimensions by returning a 400 with missing, empty, unexpected, or not-allowed dimension values instead of a server error.
- Replace
unsafe-inlinein admin CSP with c2casgiutils nonce-based CSP for inline scripts/styles. - Conditionally enable
headers.ForwardedHeadersMiddlewarefromconfig.settings.proxy_headersto rewrite host, scheme, and port from trusted proxy headers. - Document
C2C__PROXY_HEADERS__TYPEandC2C__PROXY_HEADERS__TRUSTED_HOSTSfor proxy header configuration. - Fix PostgreSQL queue cleanup on generation errors so child tiles release their parent metatile queue item instead of failing with missing
postgresql_id. - In
/tiles/admin/testadd layer dimension selectors.
Environment variable migration (legacy -> new)
Tile generation:
TILEGENERATION_CONFIGFILE->TILECLOUD_CHAIN__CONFIG_FILETILEGENERATION_MAIN_CONFIGFILE->TILECLOUD_CHAIN__MAIN_CONFIG_FILETILEGENERATION_HOSTSFILE->TILECLOUD_CHAIN__HOSTS_FILETILEGENERATION_HOSTS_LIMIT->TILECLOUD_CHAIN__HOSTS_LIMITTILEGENERATION_IGNORE_CONFIG_ERROR->TILECLOUD_CHAIN__IGNORE_CONFIG_ERRORTILEGENERATION_MAX_GENERATION_TIME->TILECLOUD_CHAIN__MAX_GENERATION_TIMETILEGENERATION_ALLOWED_PROCESS_COMMANDS->TILECLOUD_CHAIN__ALLOWED_PROCESS_COMMANDS
Logging:
LOG_TYPE->TILECLOUD_CHAIN__LOGGING__LOG_TYPEOTHER_LOG_LEVEL->TILECLOUD_CHAIN__LOGGING__OTHER_LOG_LEVELSQL_LOG_LEVEL->TILECLOUD_CHAIN__LOGGING__SQL_LOG_LEVELC2CWSGIUTILS_LOG_LEVEL->TILECLOUD_CHAIN__LOGGING__C2CASGIUTILS_LOG_LEVELTILECLOUD_LOG_LEVEL->TILECLOUD_CHAIN__LOGGING__TILECLOUD_LOG_LEVELTILECLOUD_CHAIN_LOG_LEVEL->TILECLOUD_CHAIN__LOGGING__TILECLOUD_CHAIN_LOG_LEVELTILE_SERVER_LOGLEVEL->TILECLOUD_CHAIN__LOGGING__SERVER_LOG_LEVELTILE_MAPCACHE_LOGLEVEL->TILECLOUD_CHAIN__LOGGING__MAPCACHE_LOG_LEVELCI->TILECLOUD_CHAIN__LOGGING__CI
Server:
FRONTEND->TILECLOUD_CHAIN__FRONTENDDEVELOPMENT->TILECLOUD_CHAIN__DEVELOPMENTVISIBLE_ENTRY_POINT->TILECLOUD_CHAIN__ROUTE_PREFIX
Worker:
TILECLOUD_CHAIN_NB_TASKS->TILECLOUD_CHAIN__NB_TASKSTILECLOUD_CHAIN_MAX_OUTPUT_LENGTH->TILECLOUD_CHAIN__MAX_OUTPUT_LENGTHTILECLOUD_CHAIN_SLAVE->TILECLOUD_CHAIN__SLAVETILECLOUD_CHAIN_OBJGRAPH_LIMIT->TILECLOUD_CHAIN__OBJGRAPH_LIMITTILECLOUD_CHAIN_OBJGRAPH_GENE->TILECLOUD_CHAIN__OBJGRAPH_GENE
Tests:
TESTS->TILECLOUD_CHAIN__TESTSTEST_USER->C2C__AUTH__TEST__USERNAME
PostgreSQL:
TILECLOUD_CHAIN_POSTGRESQL_SCHEMA->TILECLOUD_CHAIN__POSTGRESQL__SCHEMA_NAMETILECLOUD_CHAIN_SQLALCHEMY_URL->TILECLOUD_CHAIN__POSTGRESQL__SQLALCHEMY_URLTILECLOUD_CHAIN_OBJGRAPH_POSTGRESQL->TILECLOUD_CHAIN__POSTGRESQL__OBJGRAPH_POSTGRESQLTILECLOUD_CHAIN_OBJGRAPH_LIMIT->TILECLOUD_CHAIN__POSTGRESQL__OBJGRAPH_LIMIT
Redis:
TILECLOUD_CHAIN_REDIS_URL->TILECLOUD_CHAIN__REDIS__URLTILECLOUD_CHAIN_REDIS_DB->TILECLOUD_CHAIN__REDIS__DBTILECLOUD_CHAIN_REDIS_SOCKET_TIMEOUT->TILECLOUD_CHAIN__REDIS__SOCKET_TIMEOUTTILECLOUD_CHAIN_REDIS_SENTINELS->TILECLOUD_CHAIN__REDIS__SENTINELSTILECLOUD_CHAIN_REDIS_SERVICE_NAME->TILECLOUD_CHAIN__REDIS__SERVICE_NAMETILECLOUD_CHAIN_REDIS_SENTINEL_SERVICE_NAME->TILECLOUD_CHAIN__REDIS__SENTINEL_SERVICE_NAMETILECLOUD_CHAIN_REDIS_OPTIONS->TILECLOUD_CHAIN__REDIS__OPTIONSTILECLOUD_CHAIN_REDIS_QUEUE->TILECLOUD_CHAIN__REDIS__QUEUETILECLOUD_CHAIN_REDIS_TIMEOUT->TILECLOUD_CHAIN__REDIS__TIMEOUT
Azure:
AZURE_STORAGE_CONNECTION_STRING->TILECLOUD_CHAIN__AZURE__STORAGE_CONNECTION_STRINGAZURE_STORAGE_BLOB_CONTAINER_URL->TILECLOUD_CHAIN__AZURE__STORAGE_BLOB_CONTAINER_URLAZURE_STORAGE_BLOB_VALIDATE_CONTAINER_NAME->TILECLOUD_CHAIN__AZURE__STORAGE_BLOB_VALIDATE_CONTAINER_NAMEAZURE_STORAGE_ACCOUNT_URL->TILECLOUD_CHAIN__AZURE__STORAGE_ACCOUNT_URL
There is also all the c2cwsgiutils environment variables that should be migrated to c2casgiutils
See: c2casgiutils environment variables and correspondences.