Settings: Appearance choice stays stale in other tabs #1442

Closed
opened 2026-10-08 04:50:24 +00:00 by kayg · 2 comments
Owner

Steps

  1. Sign in to a real local Instance in Chromium.
  2. Open /settings/appearance in two tabs for the same User.
  3. In the first tab, choose Dark under Colour scheme.
  4. Wait 1.5 seconds after the first tab shows Dark.

Expected

The second tab updates to Dark after the server confirms the change.

Actual

The first tab shows data-mode=dark and Dark selected. The second tab remains in System mode and does not select Dark (aria-checked=false). It keeps showing the old appearance state.

Evidence

  • artifacts/bash3-settings/cross-tab/appearance-source-dark.png
  • artifacts/bash3-settings/cross-tab/appearance-stale-tab.png
  • Reproduction output: sourceMode=dark, secondTabMode=system, secondTabDark=false.

Severity: minor. The setting persists in the source tab, but another open tab stays visually inconsistent until it refreshes.

## Steps 1. Sign in to a real local Instance in Chromium. 2. Open `/settings/appearance` in two tabs for the same User. 3. In the first tab, choose **Dark** under **Colour scheme**. 4. Wait 1.5 seconds after the first tab shows Dark. ## Expected The second tab updates to Dark after the server confirms the change. ## Actual The first tab shows `data-mode=dark` and Dark selected. The second tab remains in System mode and does not select Dark (`aria-checked=false`). It keeps showing the old appearance state. ## Evidence - `artifacts/bash3-settings/cross-tab/appearance-source-dark.png` - `artifacts/bash3-settings/cross-tab/appearance-stale-tab.png` - Reproduction output: `sourceMode=dark`, `secondTabMode=system`, `secondTabDark=false`. Severity: minor. The setting persists in the source tab, but another open tab stays visually inconsistent until it refreshes.
Author
Owner

Fixed on job/bash3-settings in 6a616002d4513c7c1979d718a8f6c5cdf09606bb.

The Settings store now listens for storage changes to the active User's exact namespaced settings key. It reads the current User-owned copy and applies it without writing the change back. A stale User hint or another key is ignored.

Verification:

  • apps/web/e2e/settings-appearance-cross-tab.mjs failed when the listener was removed, then passed with the fix at 390, 820 and 1440 px in Light and Dark. It serves the worktree's production build and emulates macOS.
  • bunx vitest run src/lib/stores/settings-store.test.ts --maxWorkers=2: 14 passed.

Screenshots: artifacts/bash3-settings/cross-tab-after/appearance-{390,820,1440}-{light,dark}.png (actual-size PNGs). They remain in the worktree artifacts and are not committed.

Fixed on `job/bash3-settings` in `6a616002d4513c7c1979d718a8f6c5cdf09606bb`. The Settings store now listens for storage changes to the active User's exact namespaced settings key. It reads the current User-owned copy and applies it without writing the change back. A stale User hint or another key is ignored. Verification: - `apps/web/e2e/settings-appearance-cross-tab.mjs` failed when the listener was removed, then passed with the fix at 390, 820 and 1440 px in Light and Dark. It serves the worktree's production build and emulates macOS. - `bunx vitest run src/lib/stores/settings-store.test.ts --maxWorkers=2`: 14 passed. Screenshots: `artifacts/bash3-settings/cross-tab-after/appearance-{390,820,1440}-{light,dark}.png` (actual-size PNGs). They remain in the worktree artifacts and are not committed.
Author
Owner

Deployed to calternal.cloud in merge round 35a (build cc1af3c12, live 2026-10-09 00:12 IST). Closing.

Deployed to calternal.cloud in merge round 35a (build cc1af3c12, live 2026-10-09 00:12 IST). Closing.
kayg closed this issue 2026-10-08 18:42:08 +00:00
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1442
No description provided.