merge: sync upstream through b73232bdd (15 commits) - #397
Merged
Conversation
Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Adopts the 15 upstream commits that landed after 083fa4a: mobile thread title regeneration (pingdotgg#6253), Open VSX theme search (pingdotgg#5654), a better right panel empty state (pingdotgg#6258), compact sidebar footer actions (pingdotgg#6210), CLI OAuth parameters preserved through browser sign-in (pingdotgg#6285) and assorted web/mobile fixes. Nine conflicts, almost all of them pingdotgg#6253 meeting fork additions in the same mobile files. What needed judgement: thread-list-items had two menus after the union — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback. The builder now takes the regeneration items so a row has one menu carrying both, and the arrays are merged. HomeRouteScreen drops upstream's onEnvironmentChange: it is single-environment selection, and the fork replaced that surface with a multi-select that is already wired beside it (onToggleEnvironment / onClearEnvironments). useThreadListActions kept local copies of actionFailureMessage and ThreadListAction after upstream extracted them into threadActionMessages. The extracted module already carries the fork's settle and unsettle actions, so the local copies go. ChangedFilesTree takes upstream's @container/changed-files inside the fork's cn() so the caller-supplied className survives. Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
Unioning conflict hunks kept both sides' code but not both sides' dependency
arrays. Two came out short:
renderV2Item passes snoozePresetMinute={nowMinute} and upstream listed
nowMinute as a dependency; without it a screen left mounted across a minute
boundary keeps handing rows a stale minute, so snooze presets drift from the
times they claim.
The v2 layout memo reads props.threadGrouping for its recency headers but did
not depend on it, so switching grouping could keep recency headers until some
other input changed identity.
Also fixes CONTRIBUTING's link to .github/VOUCHED.td. The fork deleted that
file, and I claimed in the merge that nothing referenced it — the link is right
there in the contributing guide, so a contributor following the trust-status
docs lands on a 404.
Found by the gpt-5.6-sol adversarial review.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
renderV2Item passes snoozeSupported={snoozeEnvironmentIds.has(...)} but did not
depend on that set, so a row could keep offering — or withholding — snooze after
the environment's capability resolved.
Found by the grok-4.5 adversarial review, alongside the nowMinute drop.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
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.
Adopts upstream through
b73232bdd— the 15 commits after083fa4ab2.Important
Merge with a merge commit, not squash. Squashing collapses the second parent and discards
upstream's commits as ancestors — the thing that keeps "commits behind upstream" honest.
Upstream commits entering the product
b73232bddf131228a5e321667b1849bac8946fd088af9b54bfc931e1378a1f45a8461480d37a9b09b560d4a45652e5a75a8c196f422ef0b57ca232db08457f63e6faef6VOUCHED.tddeletion standsResolutions
Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending. Three needed judgement:
thread-list-items.tsxmenuActionsdeclarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on oneuseCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActionsnow takes the regeneration items and splices them in, on both the settlement-supported and legacy branches, so a row has one menu carrying both features. Dependency arrays mergedHomeRouteScreen.tsxonEnvironmentChange={setSelectedEnvironmentId}— single-environment selection. The fork replaced that surface with a multi-selectonToggleEnvironment/onClearEnvironmentsare already wired beside ituseThreadListActions.tsactionFailureMessage/ThreadListActionintothreadActionMessages; the fork still declared them locally, so the import collided with the local declarationsettle/unsettleactions, so it is a true supersetChangedFilesTreetakes upstream's@container/changed-filesinside the fork'scn()so thecaller-supplied
classNamesurvives; the rest are additive unions.Note on the Pull Requests button
pingdotgg#6210 reshapes the sidebar footer into compact icon buttons, and it landed here without a
conflict. I checked it deliberately, since that file holds the button you could not find: upstream's
change applied intact, and the gate is still
usePrimaryEnvironment()only (SidebarChrome.tsx:131).So the button now looks different, but the reason it stays hidden when your primary environment is
old or disconnected is unchanged — still worth its own fix.
Adversarial review
Both reviewers went through all the resolutions. Neither found a HIGH. Four findings were real
and are fixed in
f8948145band3d263e1dc.renderV2Item's dependency array lostnowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arraysnoozeEnvironmentIds, which the row reads forsnoozeSupportedprops.threadGroupingbut did not depend on itCONTRIBUTING.md:13still links to.github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongshowDesktopUpdateDownloadedToastis never calledLegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own lookBoth independently confirmed the parts I most wanted checked: every menu entry in
thread-list-itemsis reachable and dispatched with no duplicates or dead handlers; droppingonEnvironmentChangeis correct becauseHomeScreenPropsrequires the multi-select trio instead andno upstream selection surface became unreachable;
threadActionMessagesis an exact superset of thefork's local copies including the settle/unsettle wording;
@container/changed-filesappears once onthe real query container with the caller's
classNameintact; andmain.tsxuses both the fork'spreload recovery and upstream's Clerk appearance.
On
SidebarChrome.tsx— the file behind the missing Pull Requests button, which did notconflict:
git diff HEAD^2 HEADon it is empty, so the merge result is upstream's tip exactly.pingdotgg#6210's compact footer landed intact, and the gate is still
usePrimaryEnvironment()-only at:131-133. Notably both reviewers confirmed upstream uses that same gate — so it is upstream'sown single-environment assumption, not a fork-side removal.
Verification
vp buildof the web app passes.CodexTextGenerationlaunch-args one,which reproduces on unmerged
fork/dev.pnpm-lock.yamlregenerated rather than hand-merged.Note
A full-suite run surfaced the pre-existing
browserHistoryStore.test.tsflake (~1 in 3). Not fromthis branch — reproduced earlier on clean
fork/devand atf067b34a1.Co-authored by @patroza
opened by Patrick Roza in chat thread Discord · Discord · T3