Bring main to tested dev stack: fresh-agent, Codex durability, OpenCode restore, tabs sync#358
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4813bbbf2f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| a.cwd === b.cwd && | ||
| a.projectPath === b.projectPath && | ||
| a.isFallback === b.isFallback && | ||
| a.liveTerminalOnly === b.liveTerminalOnly && | ||
| a.ratchetedActivity === b.ratchetedActivity && |
There was a problem hiding this comment.
Compare liveTerminalOnly in sidebar item equality checks
handleItemClick now passes item.liveTerminalOnly into openSessionTab, and openSessionTab uses that flag to decide whether to persist sessionRef on terminal panes (src/store/tabsSlice.ts, sessionRef: liveTerminalOnly ? undefined : ...). After this change, the memo/equality paths in Sidebar no longer track liveTerminalOnly, so an item can stay memoized with stale click payload when only that flag changes (for example during live-only ↔ durable identity transitions). That causes incorrect session association state to be written when opening the session (either persisting a live-only synthetic ref or dropping a durable ref).
Useful? React with 👍 / 👎.
What happened
Freshell has been self-hosting from the local
devintegration branch, whileorigin/mainlagged behind the working stack. This PR bringsorigin/mainto the testeddevintegration state.This is broader than a normal feature PR because Dan had a system failure and lost interim local data and history that would normally have supported cleaner incremental landing steps. Rather than hiding that history behind a narrow hotfix, this PR makes the recovery explicit and lands the integrated result in one review surface.
Branch provenance
origin/mainat8cd9ccf1.origin/devate3fd3481.integration/main-to-tested-dev-stack-20260520.4813bbbf.origin/main + 1 commit.origin/main: 282 files changed, 44,769 insertions, 8,187 deletions.origin/dev: 7 files changed, 147 insertions, 43 deletions.The branch tree is
origin/devplus these integration fixes:package.jsonsrc/components/Sidebar.tsxsrc/store/tabsSlice.tstest/helpers/coding-cli/real-session-contract-harness.tstest/integration/real/coding-cli-session-contract.test.tstest/unit/client/components/panes/PaneContainer.test.tsxtest/unit/server/coding-cli/codex-app-server/runtime.test.tsWhat is included
Why this is one PR
The smaller replacement PR path exists, but the stack is already integrated and tested as a unit on
dev. Replaying those PRs one by one now adds rebase and sequencing risk without adding confidence. This PR is intentionally broad so reviewers can see the actual recovery step:mainis being brought to the tested integration state, with the remaining differences fromdevcalled out above.What this is not
dev.Verification
Final verification on commit
4813bbbf:npm run buildpassed.FRESHELL_TEST_SUMMARY='final integration PR verification after provider script fix' npm run checkpassed.latest-suite: full-suite success exit=0,dirty:0.~/.claude/.credentials.json.npm run test:real:coding-cli-contractswas fixed to use the server Vitest config and passed before the final full check with 7 passed, 2 skipped.Provider binaries validated in WSL:
codex:/home/dan/.nvm/versions/node/v22.21.1/bin/codex,codex-cli 0.132.0.claude:/home/dan/.nvm/versions/node/v22.21.1/bin/claude,2.1.146.opencode:/home/dan/.nvm/versions/node/v22.21.1/bin/opencode,1.15.6.Additional trial validation before the final package-script correction:
Supersedes
This PR appears to supersede these open PRs:
This PR does not appear to supersede #297 or #289 based on the validation pass.
Review notes
Please review this as an integration recovery PR. The review questions are whether this accurately represents the tested
devstate, whether the seven files beyondorigin/devare the right stabilization fixes, and whether any included behavior should become a follow-up cleanup issue aftermainis restored.