# Production-only Grav config overrides. # # Deep-merged OVER the committed user/config/system.yaml via Grav's # per-environment config mechanism: on the server this file is deployed to # /user/env//config/system.yaml # and Grav's `environment://config` stream (keyed on the request hostname) # layers it on top of `user://config`. # # These values are deliberately NOT in the committed system.yaml because they # would break local development (see CLAUDE.md ยง1 โ€” dev keeps twig.cache:false # so theme edits take effect immediately). Prod is the only place they apply. # # Deploy with: make remote-apply-env-prod # The user/env/ tree is outside the content repo's tracked folders, so it is # NOT restored by content-push / git-sync / remote-fetch-content โ€” re-run the # target above after any fresh install. twig: cache: true debug: false auto_reload: false # Compression / connection handling. # # This host is not FastCGI (no fastcgi_finish_request()), so Grav's shutdown # "early connection close" falls back to emitting `Content-Encoding: identity` # to ask the webserver not to compress. But Apache's mod_deflate compresses # anyway and adds `Content-Encoding: gzip`, giving TWO conflicting headers โ€” # the browser can't decode the body and renders raw gzip bytes (a garbage # page). Note: allow_webserver_gzip:true takes the SAME identity branch, so it # does not help. The real fix is to disable the early-close path, so Grav never # emits the bogus header and mod_deflate compresses cleanly (single header). debugger: shutdown: close_connection: false # Let the webserver own gzip; Grav does not compress or double-label. cache: gzip: false allow_webserver_gzip: false