fix(desktop): keep session tabs inside the selected profile context - #88095
cspiritsong wants to merge 1 commit into
Conversation
de820e9 to
5ccc94f
Compare
5ccc94f to
07c2f31
Compare
The profile rail's selection is the foreground identity, but the renderer kept painting the previous profile's context until the pooled backend finished booting, and the top session strip resolved rows from a shared all-profile cache by stored id alone — a same-id row from another profile could title, tint, or resume the wrong bot's tab. - $profileScope now includes the pending swap target, and the session-tile set re-homes synchronously on selection: old tabs leave the strip the same tick the rail is clicked. - findSessionForProfile() (id + owner) is the single resolver for the workspace tab title, chat header, drag payload, tile row/status lookup, and @session:<profile>/<id> openers. - SessionTile carries its owning profile; pane contributions carry it; the layout renderer hides a pane whose owner is not the foreground profile; a stale keep-alive pane cannot resume against the new profile's socket (component guard + delegate-side late-response rejection). - Active rail square/pill gets a tokenized ring and data-active-profile; workspace tab and session tiles show the owner glyph beside the status dot. Session underlines stay session-selection-only. - Cross-profile opens (drag from All Profiles, @session refs) route the foreground to the owner via ensureGatewayProfile before creating a tile. Tests: red first, then green; focused suites pass (145 targeted), tsc + eslint clean. Full UI suite result recorded on the PR body.
07c2f31 to
f9a7f07
Compare
Reviewed by reviewer-e (AI automated review). Important correctness layer for multi-profile desktops: stored-session ids can collide across profiles, so giving every pane/tile an owner (
|
Summary
Keep Desktop session tabs and panes scoped to the selected profile.
Session IDs can collide across profiles, so profile ownership now travels through tab titles, drag payloads,
@session:<profile>/<id>opens, pane filtering, and resume paths. Profile switches re-home tiles synchronously, and late resume responses are discarded if the foreground profile changed.The branch was rebuilt on current
mainwhile preserving the upstream review-state changes.Verification:
git diff --checkpassed