Skip to content

Resume terminal attaches within one shell session; open changed files in subfolder projects - #218

Merged
henrychu04 merged 1 commit into
coder-onlyfrom
t3code/terminal-replay-epoch-changed-file-paths
Oct 20, 2026
Merged

henrychu04 merged 1 commit into
coder-onlyfrom
t3code/terminal-replay-epoch-changed-file-paths

Conversation

@henrychu04

Copy link
Copy Markdown
Owner

Follow-up to #217: two existing fork gaps from the Fable review of the upstream sync.

Terminal reattach across shell sessions: every terminal session restarts its event sequence numbers. A tab could keep a cached position from an earlier session of the same terminal (after a close and reopen, a restart, or a helper restart). Reattaching then had the new session's output appended to the old screen. Snapshots now carry an attachEpoch; the client caches it and sends afterEpoch with afterSequence, and the helper replays only within the same session, otherwise sending a snapshot. A throwaway test reproduced the splice before the fix (output,output,output,resumed) and got a snapshot after it.

Changed files in subfolder projects: in the Git actions dialog, changed files are listed with repository-relative paths, but the Files surface opens paths relative to the thread's folder. The dialog now maps each path into that folder and disables files that sit outside a subfolder project.

Verification:

  • Every AGENTS.md typecheck, pnpm build, pnpm knip:check, and vp fmt --check pass.
  • Full test:coder is green except two known flakes: the serverSettings symlink watcher and upstream's order-dependent MessagesTimeline reading-position test.

🤖 Generated with Claude Code

…nged files in subfolder projects

Each terminal session restarts its event sequences, so the attach replay window matched a
client's cached cursor from an earlier session by number and appended the new session's
output to the old buffer. Sessions now carry an attachEpoch in their snapshots; the client
caches it and sends afterEpoch with afterSequence, and the helper replays only when the epoch
matches, otherwise sending a snapshot.

Git status paths are repository-relative, while the Files surface opens paths relative to the
thread's folder. The Git actions dialog now maps a changed file into that folder, and disables
files outside a subfolder project.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@henrychu04
henrychu04 merged commit 02c29cf into coder-only Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant