Repository navigation
feat(tui): add interactive session migration - #5
Merged
Merged
Conversation
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.
The optional
smigrate tuicommand lets users choose root-qualified source and destination profiles, search and page session metadata, preview the selected history, prepare a transfer, and confirm it through the shared migration core. It keeps the existing CLI behavior and stdlib-only core; Textual 8.2.8 is installed only through thetuiextra.The workflow preserves the reserved target ID, rejects changed source/options before publication, supports cancellation until publication starts, and continues observing native verification after that boundary. Preview text is literal, tools start folded, media is metadata only, and cancellation/deadlines cover the authoritative native export. Physical inputs use bounded immutable snapshots; OpenCode/Kilo enforce the selected export cap before parsing. Shared Hermes/MastraCode/Devin database reads retain the documented conservative metadata preflight rather than claiming an atomic selected-session cap.
This release creates new sessions. Target title override, session updates, handoffs, summaries, and the optional web dashboard remain separate roadmap phases.
Validation: local core suite 1958 passed/57 skipped; optional-extra suite 2007 passed/55 skipped on the final runtime. Ten regression cases added after full-suite collection are covered by the final installed-wheel gate: 153 passed, zero skips (all UI/preview/cancellation/native-UI cases). Ruff, formatting, diff checks, lock checks, wheel/sdist build, lazy core/extra smoke, and package/source byte comparisons passed. Independent review approved the final candidate: 278 focused tests with zero skips, 32 threat checks across eight entrypoints, FIFO/symlink race probes, and lint/format/diff checks passed. Exact-head CI remains the merge gate. New CI exercises the optional UI on Python 3.11–3.13 and keyboard/native composition with stock OpenCode 2.0.23; the native jobs reject skips. The OpenCode endpoints use public import/export. Claude/Codex UI outputs are parsed and composed with the existing exact-client cold-resume gates.
Kimi snapshots preserve the existing absolute
homedirvalidation against the original source. Relativehomedirmetadata retains the legacy adapter policy and does not select read paths; the bounded reader uses only fixed authoritative paths with containment checks.