What
Add an upgrade note under user-guide/self-hosting/upgrading for the cookie-consent removal and the GTM config change shipped by vibexp/vibexp#740 (PR vibexp/vibexp#741), and sweep any page that documents the removed surfaces.
Why
The change is breaking for a specific operator configuration and silently changes behaviour:
frontend.gtm_enabled (env VITE_GTM_ENABLED) no longer exists. Setting frontend.gtm_id is now the entire opt-in.
- An operator who set
gtm_id but never set gtm_enabled: "true" had GTM off; after upgrading, GTM starts loading. Anyone with both set is unaffected.
- A leftover
gtm_enabled: key does not fail startup — nested unknown keys are silently ignored by the loader (only removed top-level sections fail fast) — so an operator gets no signal. The note is the only warning they will see.
- VibeXP no longer renders a cookie-consent banner and no longer sets Google Consent Mode defaults. Consent policy is now entirely the operator's, configured in their own GTM container. Operators in consent-required jurisdictions must handle it there.
- Any stored
cookieConsent / vx_cookie_consent localStorage entry is deleted on next load.
How
- Add the upgrade entry under
user-guide/self-hosting/upgrading, covering: the removed key, the "gtm_id alone is the opt-in" rule, the behaviour flip above, the removed banner, and the consent-is-yours-now framing.
- Grep the docs site for
gtm_enabled, VITE_GTM_ENABLED, "cookie consent", "consent mode" and update or delete each hit.
- Check the configuration-reference page's
frontend: block matches the shipped config.example.yaml.
Timing: docs track the latest published release, not main — this lands with the release that carries vibexp/vibexp#740, not before.
Acceptance criteria
What
Add an upgrade note under
user-guide/self-hosting/upgradingfor the cookie-consent removal and the GTM config change shipped by vibexp/vibexp#740 (PR vibexp/vibexp#741), and sweep any page that documents the removed surfaces.Why
The change is breaking for a specific operator configuration and silently changes behaviour:
frontend.gtm_enabled(envVITE_GTM_ENABLED) no longer exists. Settingfrontend.gtm_idis now the entire opt-in.gtm_idbut never setgtm_enabled: "true"had GTM off; after upgrading, GTM starts loading. Anyone with both set is unaffected.gtm_enabled:key does not fail startup — nested unknown keys are silently ignored by the loader (only removed top-level sections fail fast) — so an operator gets no signal. The note is the only warning they will see.cookieConsent/vx_cookie_consentlocalStorage entry is deleted on next load.How
user-guide/self-hosting/upgrading, covering: the removed key, the "gtm_id alone is the opt-in" rule, the behaviour flip above, the removed banner, and the consent-is-yours-now framing.gtm_enabled,VITE_GTM_ENABLED, "cookie consent", "consent mode" and update or delete each hit.frontend:block matches the shippedconfig.example.yaml.Timing: docs track the latest published release, not
main— this lands with the release that carries vibexp/vibexp#740, not before.Acceptance criteria
user-guide/self-hosting/upgrading.gtm_enabled/VITE_GTM_ENABLEDreference remains anywhere on the docs site.frontend:config reference matches the shippedconfig.example.yaml.