Repository navigation
feat(web): notify when an upstream release is ready to merge - #4
Merged
Merged
Conversation
- Compare upstream's latest stable release with fork `main` over the GitHub API, fork builds only, no model calls. - Add a sidebar pill and a Settings > About row; the pill opens a draft worktree thread with the merge prompt prefilled. - Check on startup, every 6 hours and on refocus; results cache for 1 hour, failures for 5 minutes. Manual update checks force a refresh. - Match the project by git remote identity, falling back to name or path: the resolver prefers `upstream`, so a fork reports itself as `origin`. - Gate on a build-time `T3CODE_DESKTOP_VARIANT` define in `apps/web/vite.config.ts`.
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.
Problem
The fork has no signal when
pingdotgg/t3codeships a release it has not merged. Staying current depends on remembering to check, and the desktop updater only follows the fork's own releases.Change
mainthrough the GitHub compare API.mainwith a merge prompt prefilled. Project and model stay editable in the composer and nothing is sent until the user presses Send.upstreamoverorigin, so a fork checkout reports the fork underorigin.T3CODE_DESKTOP_VARIANTdefine inapps/web/vite.config.ts, so official builds do none of it.Surfaces: web only (desktop wraps it). The check runs in the client against the public GitHub API, so local, relay and tunnel connections behave the same. Server, contracts, mobile and providers are untouched. The native "Check for Updates..." menu item runs in the Electron main process and still checks only the fork feed.
Scope and approval
Fork PR into WianVDM/t3code main requested by the fork owner. This change is not proposed to pingdotgg/t3code, so the upstream prior-approval rule does not apply.
Verification
Automated:
vp test run apps/web/src/components/upstreamRelease.logic.test.ts: 25 passed.vp lintandvp fmt --checkon the 10 changed files andtsc-rs --noEmitforapps/web: clean.unmergedforv0.1.2in 2 requests, a cache hit with 0 requests, and a failed fetch retried after 5 minutes and not before.Manual, in a real client (dev server from the worktree with
T3CODE_DESKTOP_VARIANT=fork, state seeded from a read-only snapshot, driven through the in-app preview browser):main, in theWianVDM/t3codeproject, with the merge prompt prefilled and nothing sent.origin.Before and after, same instance and data, 1280px wide. Before is the same build with the check result set to merged, which hides the pill and matches what
mainrenders.Sidebar footer:
Draft opened by the pill, with the merge prompt prefilled:
Not checked:
ci.ymltargets Blacksmith runners that this fork does not have, so no CI result applies to this PR.Models and harness: Claude Sonnet 5.5 (orchestration and review) and Gemini 3.8 Flash (implementation, review and verification subagents) in T3 Code.
Generated with Claude Code