#14340 + #11908 / combined verification

#14340 and #11908 together: a Claude thread keeps its conversation across subscriptions, even after the session stopped

#14340 lets Claude instances that share ~/.claude/projects switch in an existing thread. #11908 carries the persisted resume cursor when the session has already stopped. Merged together, both the live and the stopped switch keep context on two different subscriptions; the stopped case is the one #14340 could not cover alone.

1

Stopped session, then switch

Context kept

One turn on Claude asking it to remember KIWI-58, then a server restart so the session is stopped. Switched the thread to Claude Work and asked for the word: it answered KIWI-58. The provider log shows session.started on claude-work with the resume cursor of the stopped claudeAgent session. On #14340 alone the same flow answered “I don't know”.

04-stopped-session-switch-with-11908.png · 2560×1600 · right-click to save

2

Live session: picker

Selectable

Same combined build, new thread. After one turn on Claude, Claude Work and its models are selectable in the existing thread.

02-after-picker-unlocked.png · 2560×1600 · right-click to save

3

Live session: after the switch

Context kept

Switched while the session was live and asked for the word set under Claude. Claude Work answered MANGO-17.

03-after-switch-keeps-context.png · 2560×1600 · right-click to save

Build

  • #14340 head 0cd75a9 merged with #11908 head f68d312: no conflicts
  • Isolated vp run dev, web client, Chromium 2x
  • Platform: Linux 6.12 (Debian 13), Claude Code 2.1.286, Claude Sonnet 5

Instances

  • Claude: empty CLAUDE_CONFIG_DIR (~/.claude)
  • Claude Work: second config dir, own credentials, projects -> ~/.claude/projects
  • Two different subscriptions in different organizations

Checks on the merge

  • apps/server/src/provider and ProviderCommandReactor: 1682/1682
  • apps/server typecheck: clean
  • Not exercised: macOS, Windows, desktop and mobile clients, a real usage-limit switch