Repository navigation
ci(web): releases fail when the built web app cannot boot - #25929
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Needs Human Approval Macroscope's review found this PR requires human approval — This PR adds CI and release smoke testing for the built web client without changing shipped application behavior. The new verification script also adds a file-level static-analysis suppression, which requires human review under the applicable policy. 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.
|
| Layer / File(s) | Summary |
|---|---|
Built-client boot probe apps/web/scripts/verify-built-boot.ts, apps/web/tsconfig.json |
The script checks for the build output, serves the SPA to headless Chromium, records browser errors, and waits for a React mount or the boot-error control. The TypeScript project includes the script. |
CI and release integration .github/workflows/ci.yml, .github/workflows/release.yml |
Both web-test jobs build the web client and run the boot check after the existing web tests. |
Priority:
Estimated code review effort: 2 (Simple) | ~15 minutes
Change: Feature
Possibly related issues
- pingdotgg/t3code issue 25906: The pull request adds a release-time boot probe for the built web artifact, but does not add the requested startup self-check for Linux desktop artifacts.
Suggested reviewers: juliusmarminge
Merge Risk: 
Minimal · up to 7dd73
-
The built-client check distinguishes the inspected boot-error path from a successful mount. No actionable merge-blocking issue remains after normal checks.
Pre-merge checks: 
4
-
Full details: Description check
-
Explanation
The description explains the boot failure problem, the new verification script, affected CI jobs, observed verification results, runtime impact, and an explicit coverage limitation. It does not use the template headings or state explicit maintainer approval, but it provides the required information in a focused form.
-
Finishing Touches
-
📝 Generate docstrings
-
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
## What's Changed * refactor(mobile): subagent timers share the visible second clock by @juliusmarminge in pingdotgg/t3code#25854 * refactor(mobile): app update checks start with the app by @juliusmarminge in pingdotgg/t3code#25856 * refactor(mobile): workspace tabs, home filters and connection status derive instead of syncing by @juliusmarminge in pingdotgg/t3code#25813 * refactor(mobile): settings permission and update checks without sync effects by @juliusmarminge in pingdotgg/t3code#25895 * fix(desktop): run the packaged bundle self-check on macOS artifacts by @stbenjam in pingdotgg/t3code#25900 * fix(web): the Add ChatGPT account dialog animates closed once the account connects by @juliusmarminge in pingdotgg/t3code#25868 * refactor(web): composer clears scroll-collapse in render, not after paint by @juliusmarminge in pingdotgg/t3code#25909 * refactor(web): composer overlay re-measures from one layout effect by @juliusmarminge in pingdotgg/t3code#25915 * refactor(web): file browser records the right-click position on its own panel by @juliusmarminge in pingdotgg/t3code#25908 * refactor(web): preview element picker drops its unmount guard by @juliusmarminge in pingdotgg/t3code#25920 * fix(web): PR Code tab no longer requests the diff of a commit the PR dropped by @juliusmarminge in pingdotgg/t3code#25916 * perf(mobile): worktree setup updates commit the thread screen once by @juliusmarminge in pingdotgg/t3code#25910 * fix(desktop): a broken release opens an error window instead of hanging by @t3dotgg in pingdotgg/t3code#25903 * ci(web): releases fail when the built web app cannot boot by @t3dotgg in pingdotgg/t3code#25929 * ci(release): desktop builds that cannot open no longer publish by @t3dotgg in pingdotgg/t3code#25928 * refactor(web): file tree drag mentions use React drag handlers by @juliusmarminge in pingdotgg/t3code#25913 * refactor(mobile): git action results buzz from where they are reported by @juliusmarminge in pingdotgg/t3code#25912 * fix(mobile): the Add environment form shows only its own pairing errors by @juliusmarminge in pingdotgg/t3code#25859 * refactor(mobile): showcase capture runs as an app service, not a chain of effects by @juliusmarminge in pingdotgg/t3code#25857 * fix(server): bound hung delegated stop effects so later runs can start by @juliusmarminge in pingdotgg/t3code#25675 * feat(mobile): add One UI navigation preference on Android by @PixPMusic in pingdotgg/t3code#25758 **Full Changelog**: pingdotgg/t3code@v0.1.4-nightly.20261027.3770...v0.1.4-nightly.20261027.3783 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.4-nightly.20261027.3783
On Sunday, nightly
0.1.3-nightly.20261026.3705opened to "T3 Code could not load" on every platform (#25294). The web bundle crashed at boot, and nothing in CI ever boots the built bundle. Browser tests run source modules, so the production chunk graph goes untested. #25295 fixed that bug and added a guard for chunk import cycles. Other boot-time crashes can still ship.This adds
apps/web/scripts/verify-built-boot.ts. It loads the builtapps/web/distin headless Chromium, with no server, and fails if the app shows its boot error instead of mounting React. It runs after the web tests in the CI "Test Web" job and in the "Release web tests" job, which a release must pass before it publishes.Proof: the probe passes on current
main. With Sunday'svite.config.ts(from04a21bb1c1^), it fails withTypeError: Cannot read properties of undefined (reading 'map')in theiconschunk, the same error users saw.Notes:
Reviewed with sol-loop: 1 round with GPT-6.1 Sol. Sol verdict: approved
Created with Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code