- Shipped
- September 9, 2026 at 7:40 PM UTC
- Author
- Kamo
- Commit
- 32a86f3
Two rules that only make sense together, and the panel did the opposite of both. A member arriving in a NEW browser tab — a fresh sign-in, a second tab opened for something else — now gets the panel at the front: the Directory (the first tab), the first sub-tab of every strip inside it, and an empty search. For the rest of that session the panel is theirs: closing it, and reloading the page, both put them back exactly where they were. Before, closing it reset the tab, the search box and the Directory filter every time, so it was a place you could never come back to — close it to read the row you just found and you reopened at the top of a list you had already filtered your way out of. Meanwhile the Chats bucket was saved as a per-MEMBER preference, so it came back weeks later on any device: a member who spent Friday afternoon in Support signed in on Monday to a panel still showing Support, with no way to ask for the front. One half never remembered and the other never forgot. Where the member is now lives in one per-tab store beside the pin, for the same reason and with the same scope **************** sign-out needs no code, app/logout/page.tsx already clears it. Every strip reads its own order for "the first one" rather than a default written beside it — DEFAULT_TAB is gone, the landing tab is TAB_ORDER[0], and a remembered sub-tab that no longer exists (a deleted market, a revoked Sales Scripts right) falls back to the front and is forgotten, so a reload does not bounce the member back to a tab that is not there. The maximized chat window's switcher column is deliberately untouched and keeps its saved member preference; BUCKET_MEMORY says which instance is which, keyed off the prop that already tells them apart. Verified: 7392 tests pass (593 files) with the build guards ahead of them, tsc clean. The new panel and store tests were mutation-checked — making the store forget everything turns 19 of them red — because a test that asserts "lands on the first tab" passes just as well against a panel that remembers nothing at all.