feat(tui): prototype missing location recovery - #42353
Merged
Merged
Conversation
Contributor
Author
|
The OpenCode Drive recording is now attached in the PR body. The control timeout was a real simulation bug: an unfocused |
Contributor
Author
|
Updated the prototype to follow the existing permission/question-panel pattern. Storybook now mounts the actual production |
kitlangton
marked this pull request as ready for review
August 13, 2026 17:24
kitlangton
enabled auto-merge (squash)
August 13, 2026 17:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Add a persistent recovery surface when a session's location cannot initialize.
The transcript remains readable, the durable model identity remains visible in existing message chrome, and the normal composer is replaced with a focused
Choose directoryaction using the same question-panel pattern as permissions.Before / After
Before
After
Session location unavailable, the abbreviated path, andChoose directory.Move sessiondialog, scoped to cataloged directories for the same project.How
packages/tui/src/context/location.tsxretains the latest location synchronization error and clears it before each retry.packages/tui/src/routes/session/permission.tsxexposes the existing question-panel shell asSessionQuestionwithout changing permission behavior.packages/tui/src/routes/session/location-missing.tsxrenders the recovery prompt through that shared shell.packages/tui/src/component/dialog-move-session.tsxtreats the project directory catalog as authoritative and flattens category headers while searching.Scope
/cdhandling, or CLI HTTP error exits.Testing
bun typecheckfrompackages/tuibun run test test/new-session-location.test.tsfrompackages/tui(3 passing)bun run test test/cli/tui/data.test.tsxwas attempted twice; 22 event-stream tests timed out with the fixture stuck inreconnectingbun turbo typecheck --concurrency=3(34 tasks passing)Demo
recording-9aefae1b-1e09-43ae-b96c-0fb83d0833c5.mp4
Flow
flowchart TD A[Open durable session] --> B{Location sync succeeds?} B -- Yes --> C[Normal composer] B -- No --> D[Keep transcript visible] D --> E[Show recovery panel] E --> F[Open Move session] F --> G{Destination sync succeeds?} G -- Yes --> C G -- No --> E