Skip to content

ci(web): releases fail when the built web app cannot boot - #25929

Merged
t3dotgg merged 1 commit into
mainfrom
fix/web-boot-smoke
Oct 27, 2026
Merged

t3dotgg merged 1 commit into
mainfrom
fix/web-boot-smoke

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Oct 27, 2026

Copy link
Copy Markdown
Member

On Sunday, nightly 0.1.3-nightly.20261026.3705 opened 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 built apps/web/dist in 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's vite.config.ts (from 04a21bb1c1^), it fails with TypeError: Cannot read properties of undefined (reading 'map') in the icons chunk, the same error users saw.

Notes:

  • With no server, the client retries its session for about 15s before it renders, so the step takes about 22s including the build.
  • The release job builds without the release env (Clerk key), so the signed-in startup path is not covered.

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Oct 27, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB +6 B (+0.1%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.3 KiB +6 B (+0.5%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 21.6 KiB 21.6 KiB 0 B (0.0%) 24.4 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.3 KiB 1.3 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.9 KiB 21.9 KiB 0 B (0.0%) 24.4 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 7873f53 · PR result: 7dd7316 · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

coderabbitai Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 7873f53 and 7dd7316.

Files selected for processing: 4
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • apps/web/scripts/verify-built-boot.ts
  • apps/web/tsconfig.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.

Walkthrough

The CI and release workflows now build the web client and check that the built client boots in headless Chromium. The check serves the built SPA, records browser errors, and fails if the expected boot result does not occur.

Changes: Built web client boot check

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: Normal

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: Passed 4
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: failing CI and release checks when the built web app cannot boot.
Description check Passed 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 th…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
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.

@t3dotgg
t3dotgg merged commit 30f4d63 into main Oct 27, 2026
44 of 46 checks passed
@t3dotgg
t3dotgg deleted the fix/web-boot-smoke branch October 27, 2026 12:19
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 27, 2026
## 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant