From 4aa9ae9b23d4032f016e6f84d179b632aac29662 Mon Sep 17 00:00:00 2001 From: Mischa Date: Sat, 4 Jul 2026 23:32:53 +0200 Subject: [PATCH 1/3] chore: stop tracking config/versions.yaml (per-install Grav state) versions.yaml records each install's Grav schema-migration state and differs per environment (dev 2.0.4, prod 2.0.7). Tracking it in the shared content repo caused cross-env drift; with git-sync enabled it would push one env's version stamp to all others. Gitignore + untrack so each install owns its own (Grav regenerates it). Mirrors the existing treatment of security.yaml / api-private.php. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Np4cMQLF77i664CAQXySzU --- .gitignore | 2 ++ config/versions.yaml | 6 ------ 2 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 config/versions.yaml diff --git a/.gitignore b/.gitignore index 4e7cc00..8b1c03d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,9 +3,11 @@ !/plugins/cache-on-save/ !/plugins/story-blocks/ /data/ +/accounts/testrunner.yaml /pages/01.trips/italy-2026-demo/ /pages/02.post/*ui-test*/ /config/plugins/git-sync.yaml /config/plugins/api-private.php /config/security.yaml +/config/versions.yaml /themes/intotheeast/node_modules/ diff --git a/config/versions.yaml b/config/versions.yaml deleted file mode 100644 index 7c71bc3..0000000 --- a/config/versions.yaml +++ /dev/null @@ -1,6 +0,0 @@ -core: - grav: - version: 1.7.53 - schema: 1.7.53_2026-06-09_0 - history: - - { version: 1.7.53, date: '2026-06-17 22:27:48' } From 28400183728dd5e572060473e5c4809337c9743a Mon Sep 17 00:00:00 2001 From: Mischa Date: Sun, 5 Jul 2026 00:26:41 +0200 Subject: [PATCH 2/3] chore: stop tracking per-install secrets in config - gitignore config/security-private.php (CSRF/nonce + rate-limit signing salt); it is a per-install secret Grav auto-generates and its own header says not to commit. Each environment now keeps its own uncommitted salt. - drop the runtime-generated popularity.salt from api.yaml; Grav re-derives it per install. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Np4cMQLF77i664CAQXySzU --- .gitignore | 1 + config/plugins/api.yaml | 1 - config/security-private.php | 7 ------- 3 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 config/security-private.php diff --git a/.gitignore b/.gitignore index 8b1c03d..219ceb2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,6 @@ /config/plugins/git-sync.yaml /config/plugins/api-private.php /config/security.yaml +/config/security-private.php /config/versions.yaml /themes/intotheeast/node_modules/ diff --git a/config/plugins/api.yaml b/config/plugins/api.yaml index 945a4e8..e3b1e18 100644 --- a/config/plugins/api.yaml +++ b/config/plugins/api.yaml @@ -57,4 +57,3 @@ popularity: ignore: - '/test*' - /modular - salt: 37517ad926e4f900863af7f1b58718cdccc34f7265dedd09d33b6f820046c510 diff --git a/config/security-private.php b/config/security-private.php deleted file mode 100644 index f4deb76..0000000 --- a/config/security-private.php +++ /dev/null @@ -1,7 +0,0 @@ - Date: Sat, 4 Jul 2026 22:31:12 +0000 Subject: [PATCH 3/3] (Grav GitSync) Automatic Commit from into-the-east-grav-sync --- accounts/mischa.yaml | 8 ++-- .../config/plugins/api-private.php | 7 ++++ .../config/plugins/git-sync.yaml | 33 ++++++++++++++++ .../config/security-private.php | 7 ++++ env/intotheeast.com/config/system.yaml | 38 +++++++++++++++++++ pages/02.post/post-form.md | 29 ++++---------- 6 files changed, 97 insertions(+), 25 deletions(-) create mode 100644 env/intotheeast.com/config/plugins/api-private.php create mode 100644 env/intotheeast.com/config/plugins/git-sync.yaml create mode 100644 env/intotheeast.com/config/security-private.php create mode 100644 env/intotheeast.com/config/system.yaml diff --git a/accounts/mischa.yaml b/accounts/mischa.yaml index aaae62e..6be01ab 100644 --- a/accounts/mischa.yaml +++ b/accounts/mischa.yaml @@ -10,10 +10,12 @@ admin_next: preferences: pluginsViewMode: cards colorMode: dark - accentHue: 271 - accentSaturation: 91 - fontFamily: inter + accentHue: 38 + accentSaturation: 92 + fontFamily: public-sans pagesViewMode: tree + fontSize: large + editorMode: normal content_editor: '' groups: { } access: diff --git a/env/intotheeast.com/config/plugins/api-private.php b/env/intotheeast.com/config/plugins/api-private.php new file mode 100644 index 0000000..1e07a37 --- /dev/null +++ b/env/intotheeast.com/config/plugins/api-private.php @@ -0,0 +1,7 @@ +$z>\%+G''Jo' +branch: main +logging: false +password: gitsync-def502005b5427cc6afd28ea66682788711e72b3e31bcb6bd302db4232e48a8783900ed76bf2cf891b3e4545dd925a5f5276fa683bf033797b5c6074f7ef0c520c455e34e27392be46615378e779cba61fe4a7f710fcbf157fb9709142794bce7d785e3738de84dd6887e0287f2923e96ae12ce446e4e61285a3ce48 +sync: + direction: both + on_save: true + on_delete: true + on_media: true + cron_enable: false + cron_at: '0 12,23 * * *' +remote: + name: origin + branch: main +git: + author: gituser + message: '(Grav GitSync) Automatic Commit' + name: GitSync + email: mischa@gorinskat.nl + bin: git + ignore: '' + private_key: '' diff --git a/env/intotheeast.com/config/security-private.php b/env/intotheeast.com/config/security-private.php new file mode 100644 index 0000000..d185898 --- /dev/null +++ b/env/intotheeast.com/config/security-private.php @@ -0,0 +1,7 @@ +/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 diff --git a/pages/02.post/post-form.md b/pages/02.post/post-form.md index c8431ea..7366bac 100644 --- a/pages/02.post/post-form.md +++ b/pages/02.post/post-form.md @@ -1,19 +1,15 @@ --- -title: 'New Entry' +title: 'New journal entry' template: post-form access: site.login: true - -# Keep in sync with active_trip in user/config/site.yaml pageconfig: - parent: '/trips/italy-2026-demo/dailies' + parent: /trips/italy-2026-demo/dailies slug_field: 'date,title' overwrite_mode: false - pagefrontmatter: template: entry published: true - form: name: new-entry action: /post @@ -26,77 +22,66 @@ form: autofocus: true validate: required: true - - name: date - label: Date & Time + label: 'Date & Time' type: datetime default: now format: 'Y-m-d H:i' validate: required: true - - name: content - label: "What happened today?" + label: 'What happened today?' type: textarea rows: 10 validate: required: true - - name: photos - label: Photos (max 4) + label: 'Photos (max 4)' type: filepond multiple: true destination: '@self' limit: 4 accept: - 'image/*' - - name: lat label: Latitude type: text placeholder: 'tap "Get Location" below' - - name: lng label: Longitude type: text placeholder: '' - - name: location_city label: City type: text placeholder: 'e.g. Kyoto' - - name: location_country label: Country type: text placeholder: 'e.g. Japan' - - name: weather_temp_c type: hidden - - name: weather_desc type: hidden - novalidate: true - buttons: - type: submit - value: Post Daily + value: 'Post Daily' classes: btn-post - process: add_page: true upload: true message: 'Entry posted successfully!' reset: true --- +