- Shipped
- August 27, 2026 at 11:43 PM UTC
- Author
- Kamo
- Commit
- b747b98
The console backdrop and the member Wallpaper editor both read the tenant's `config.json` for `backgroundImageCount`, and both asked for it with `cache: 'force-cache'`. That mode does not merely prefer the cache — it ignores freshness entirely and goes to the network only when no entry exists, so `max-age=0, must-revalidate` on the object had no say. A brand-new org is seeded with the base template, and **************** carries `backgroundImageCount: 0`. So a single fetch made between org creation and the first background upload cached "no wallpapers" for the life of that entry, and the console then painted the plain gradient indefinitely while the org's five backgrounds sat in MinIO, correctly provisioned and never requested. The org's colours and logo applied correctly throughout, because DynamicMetaLoader fetches the same file with `no-store`. Now `no-cache`: still stored, revalidated before reuse, so a repeat load costs a 304 on a ~200-byte body. The derivation moves to `app/lib/orgThemeImages.ts` — both call sites had their own copy of it, and `app/hooks/**` is not in vitest's include allowlist, so a test written beside the hook would never have run. `useOrgThemeImages` also drops its module cache on KAMO_THEME_REAPPLY, which a branding save already dispatches; without that the cache outlived the very change it was invalidated by, until a full reload.