Repository navigation
ci(release): build the JS bundle once and start desktop targets independently - #490
Merged
Merged
Conversation
…endently Fork Release started desktop packaging only after the full five-platform CLI archive matrix finished, although macOS and Linux need no archive and Windows only needs Linux x64 for WSL. It now calls one desktop build per target, as Fork Nightly does, and the Windows target builds its own WSL archive. Every desktop job and the CLI archive bundle job also rebuilt the server, web client, and Electron main. A single fork-js-bundle.yml job now builds them once per run with the candidate's commit hash, and desktop packaging uses --skip-build. This adapts the build-once graph from upstream pingdotgg#11606, whose recorded import only changed upstream's release.yml.
incognitojam
added a commit
that referenced
this pull request
Sep 28, 2026
…the page (#504) Opening the Pull Requests page with a search that is only a number or `true`, such as `/pull-requests?q=13565`, crashed the page with `(search.q ?? "").trim is not a function`. That is the URL for a search by pull request number. The router parses `13565` as a number and `true` as a boolean. The page's search validator dropped a `q` that was not a string, but the root route has no validator and passes the raw parameters through, so the number still reached `.trim()`. The validator now keeps a number or boolean `q` as its text, so `?q=13565` searches for pingdotgg#13565. | Before (`?q=13565`) | After (`?q=490`) | | --- | --- | |  |  | ## Validation In a dev server on a copy of real data, `/pull-requests?q=490`, `?q=true`, and `?q=fbjni` each load without an error. The search box shows the value, and `?q=490` lists #490. Web typecheck passes. The before screenshot was taken with the same page code before this change. --- Written by an agent (Claude Code, claude-opus-5-5).
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.
Note
Fork Release now starts each desktop target as soon as a single shared JS bundle is built, instead of waiting for all five CLI archives. A dry-run stable release took 10m17s, down from 17m07s.
Problem
Fork Release started desktop packaging only after the full five-platform CLI archive matrix had finished, including Windows ARM64. macOS and Linux need no CLI archive, and Windows only needs the Linux x64 archive for WSL. In a recent dry run, the desktop builds waited about nine minutes before starting.
Every desktop job also rebuilt the server, web client, and Electron main, which took 50–56 seconds per job. The CLI archive workflow built the server and web client again in its own bundle job, and so did the Windows WSL archive.
Change
fork-js-bundle.ymlbuilds the server, web client, and Electron main once per run and uploads them as thejs-bundleartifact. Desktop packaging downloads it and runs with--skip-build. The CLI archive jobs download it instead of running their own bundle job. This adapts the build-once structure from upstreampingdotgg/t3code#11606. That PR is already recorded as imported, but it only changed upstream'srelease.yml, which the fork does not use.linux-x64archive attached to the release; it embeds another archive built from the same commit and bundle.T3CODE_COMMIT_HASHto the checked-out candidate. Previously the CLI bundle fell back toGITHUB_SHA, which is the head of the branch that started the run, not the candidate being released.cli_archives_readyis removed fromfork-desktop-build.ymlbecause nothing uses it anymore.Validation
Fork Release dry run from this branch, promoting
v0.1.0-nightly.20260926.421:.421, which built the same commit on macOS in the old way.dist-electronis byte-identical even though this run built it on Linux. The server bundle differs only in the release version and channel strings.actionlintpasses for all fork workflows, and the fork feature ledger check passes.Not exercised:
Windows desktop packaging and the CLI archive chain now finish at about the same time. The Windows ARM64 CLI archive is the slowest part of that chain and will be addressed separately.
Written by an agent (Claude Code, claude-opus-5-5).