Skip to content

feat(tui): /resume — saved-session picker in the fullscreen TUI - #538

Open
justrach wants to merge 1 commit into
mainfrom
feat/tui-resume
Open

feat(tui): /resume — saved-session picker in the fullscreen TUI#538
justrach wants to merge 1 commit into
mainfrom
feat/tui-resume

Conversation

@justrach

Copy link
Copy Markdown
Owner

Adds /resume to graff tui, matching the line REPL's: a searchable picker over .graff/sessions (base — title (age), newest first), /resume <name> direct form, saved-model re-application, and user/assistant text turns loaded into the transcript so the next turn carries the resumed context.

Seam-pattern plumbing (same as /compact): engine.g_sessions_fn/g_resume_fn wired from tui_launch, callbacks in src/tui_resume.zig, picker in TUI/resume.zig.

Verification

…een TUI

/resume opens a searchable picker over .graff/sessions (the same store and
metadata the line REPL's /resume and /sessions read): base — title (age),
newest first, fuzzy filter, Enter loads. /resume <name> skips the picker.

The load extracts the saved conversation's user/assistant text turns
(plain strings and structured text blocks; tool traffic skipped) into the
transcript, so the next turn resends them as model-visible history, and
re-applies the session's saved model through the /model switch path.

Plumbing follows the /compact seam: engine.g_sessions_fn/g_resume_fn set
from tui_launch, implemented in src/tui_resume.zig; picker UI in
TUI/resume.zig mirrors the model picker. /resume is guarded behind the
mid-turn #521 gate, and its notices force the agent screen so they are
never hidden behind the welcome pane.

Verified end-to-end under a pty against a real session fixture: picker
renders base/title/age, Enter loads 3 turns including an
anthropic-style text-block message, and the resumed rows paint.

Co-Authored-By: Codegraff <blackfloofie@codegraff.com>
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