Terminal sessions are keyed by (threadId, terminalId) and ids are client-allocated, but the drawer seeded its allocator from the server-known sessions with panel terminals filtered out, while other call sites ignored panel ids or freshly opened local ids the server does not know yet. A drawer terminal could therefore mint the id of an existing panel terminal (deterministically when the drawer was empty), attaching two viewports to one PTY that mirrored each other. Every allocator now seeds from the union of server-known ids, the drawer's local UI-state ids, and the right panel's surface ids, via one allocatable-ids memo per scope. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wout Stiens committed on 7/31/2026, 11:01:00 AMparent5da6b1f
1 file changedLine totals unavailable