# Changelog

## [Unreleased]

### Fixed

- **Loader stuck on live site:** Home page could remain stuck on the loading animation and never show content. The app was only initializing the router after `Roles.subscription.ready()` from `alanning:roles`. If that subscription never became ready (e.g. anonymous users, slow/failing DDP, or server issues), the UI never mounted. Changes in `imports/routes/router.js`:
  - Initialize FlowRouter when roles subscription is ready (unchanged), or
  - When login state is known and user is not logged in (no roles needed for landing), or
  - After a 4-second timeout so the app always loads even if the subscription never becomes ready.
  - Protects against stuck loader on https://www.everyspace.co.za/ and similar deployments.

- **GTM / Intercom console errors:** (1) GTM snippet in main.html wrapped in try/catch so script failure does not break the page. (2) Intercom widget loads only after app mount (FlowRouter.initialize()) so 403/blocked does not affect initial load. (3) Router and Users init guard gtag, fbq, and Intercom calls so failures don't throw. Use ROOT_URL=https://www.everyspace.co.za/ in Docker; add domain to Intercom allowed list to fix 403. See [docs/fix-gtm-intercom-console-errors.md](docs/fix-gtm-intercom-console-errors.md).
