fix(web): retry startup after the server recovers - #11291
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This single-file fix makes the existing Try again action rerun the failed startup loader, allowing the web app to recover after the server returns. Its effect is limited to explicit interaction with the existing error screen, with no default, schema, infrastructure, or security changes. No code changes detected at You can add or adjust custom eligibility rules. Learn more. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 7 remain after this review. 📝 WalkthroughWalkthroughThe root route error view now obtains the router and uses ChangesRoot route retry flow
Priority: ➖ Normal Estimated code review effort: 1 (Trivial) | ~5 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to The retry flow recovers when the server returns, while repeated failures leave the existing error screen available. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
00e2e5e to
e330a61
Compare
## What's Changed * fix(web): offer recovery from missing pages by @shivamhwp in pingdotgg/t3code#11314 * fix(web): retry startup after the server recovers by @shivamhwp in pingdotgg/t3code#11291 * feat(web): add optional compact sidebar rail by @maria-rcks in pingdotgg/t3code#11525 * feat(web): add opt-in in-app thread notifications by @Bil0000 in pingdotgg/t3code#11570 * feat(web): organize connections by environment by @maria-rcks in pingdotgg/t3code#11542 * fix(web): keep sparse sidebar shelves at the bottom by @maria-rcks in pingdotgg/t3code#11595 * fix(cursor): preserve internal agent errors without transport labels by @shivamhwp in pingdotgg/t3code#11365 * fix(server): fall back when new worktrees are unavailable by @tris203 in pingdotgg/t3code#6208 * feat: badge background thread notifications on desktop and web by @Bil0000 in pingdotgg/t3code#11569 * feat(web): add compact thread list mode by @saphid in pingdotgg/t3code#9417 **Full Changelog**: pingdotgg/t3code@v0.0.41-nightly.20260913.1658...v0.0.41-nightly.20260913.1675 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.41-nightly.20260913.1675
A failed startup session probe leaves the root error screen visible after the server recovers. "Try again" only resets the error boundary, so it never retries the failed route loader. The button now calls
router.invalidate()to rerun the startup probe and open the app when it succeeds.Refs #3513. This covers manual retry; the reported session-store write failure and automatic recovery remain open. It follows the request in #3520 for a current reproduction.
Reproduction and validation
Reproduced on main
7bd7f99e6cab940892ff9240549c507bfd066aeein a real Chromium client against disposable T3 state. Intercept/api/auth/sessionwith the DevTools Fetch domain and return HTTP 500, load the app, then allow the request through and click "Try again". Before this change, the error remains and the request count stays unchanged. Afterward, one fresh request succeeds and the app opens. Retrying while the endpoint still returns 500 retains the error screen, and a later retry recovers.18 auth bootstrap tests and web typecheck pass. Scoped lint reports two existing React warnings. Web and desktop share this error screen; native desktop boot and remote/relay recovery were not separately exercised. Mobile uses separate navigation.
Before, after clicking "Try again" with a recovered endpoint:
After:
Recovery recording:
startup-retry-recovery.mp4
Model: GPT-6. Harness: Codex in T3 Code.
Summary by CodeRabbit
Rebased on main
20363c32c9bfdbf49c2716ef11d1f18483fcc01b. Scoped validation rerun after rebasing; existing native and human review limits remain.