merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

merge: sync upstream through b73232bdd (15 commits) - #397

Merged
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd
Aug 12, 2026
Merged

merge: sync upstream through b73232bdd (15 commits)#397
omegent-app[bot] merged 18 commits into
fork/devfrom
sync/upstream-b73232bdd

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 12, 2026

Copy link
Copy Markdown

Adopts upstream through b73232bdd — the 15 commits after 083fa4ab2.

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

Commit
b73232bddfeat(web): reset sidebar width on double click (pingdotgg#6320)
f131228a5fix(web): theme Clerk surfaces (pingdotgg#6300)
e321667b1fix(web): prevent changed files header overlap (pingdotgg#6314)
849bac894fix(connect): preserve CLI OAuth parameters through browser sign-in (pingdotgg#6285)
6fd088af9fix(web): align mobile onboarding header (pingdotgg#6293)
b54bfc931feat(web): a better right panel empty state (pingdotgg#6258)
e1378a1f4fix(mobile): keep ordered lists inside user bubbles (pingdotgg#6154)
5a8461480fix(web): align the composer model picker (pingdotgg#6252)
d37a9b09bfeat(mobile): add thread title regeneration (pingdotgg#6253)
560d4a456fix(web): keep sidebar wordmark visible at minimum width (pingdotgg#6246)
52e5a75a8feat(web): compact sidebar footer actions (pingdotgg#6210)
c196f422efix(web): clean up composer resize animation (pingdotgg#6209)
f0b57ca23feat(web): add Open VSX theme search (pingdotgg#5654)
2db08457ffix(web): use upload icon for disabled push action (pingdotgg#6207)
63e6faef6chore: add dara to vouched (pingdotgg#6259) — the fork's VOUCHED.td deletion stands

Resolutions

Nine conflicts, almost all of them pingdotgg#6253 (mobile title regeneration) landing in the same files the
fork has been extending
. Three needed judgement:

WhereSituationResolution
thread-list-items.tsxthe union produced two menuActions declarations — the fork's settle-aware builder and upstream's regeneration list — and two stacked dependency arrays on one useCallback, which typechecked as a three-argument call rather than failing outrightbuildThreadRowMenuActions now 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 merged
HomeRouteScreen.tsxupstream passes onEnvironmentChange={setSelectedEnvironmentId}single-environment selection. The fork replaced that surface with a multi-selectupstream's prop dropped; the fork's onToggleEnvironment / onClearEnvironments are already wired beside it
useThreadListActions.tsupstream extracted actionFailureMessage / ThreadListAction into threadActionMessages; the fork still declared them locally, so the import collided with the local declarationlocal copies removed — the extracted module already carries the fork's settle / unsettle actions, so it is a true superset

ChangedFilesTree takes upstream's @container/changed-filesinside the fork's cn() so the
caller-supplied className survives; 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 f8948145b and 3d263e1dc.

FindingDisposition
both, MEDIUMrenderV2Item's dependency array lost nowMinute, which upstream listed. Unioning conflict hunks keeps both sides' code but silently keeps only one side's dependency arrayFixed. A screen left mounted across a minute boundary kept handing rows a stale minute, so snooze presets drift from the times they advertise
grok-4.5, MEDIUM — the same array also omitted snoozeEnvironmentIds, which the row reads for snoozeSupportedFixed. A row could keep offering — or withholding — snooze after the environment's capability resolved
gpt-5.6-sol, LOW — the v2 layout memo reads props.threadGrouping but did not depend on itFixed. Switching grouping could keep recency headers until some other input changed identity
gpt-5.6-sol, LOWCONTRIBUTING.md:13 still links to .github/VOUCHED.td, which the fork deletes. My merge message claimed nothing referenced it, and that was wrongFixed. The link is in the contributing guide, so anyone following the trust-status docs hit a 404
grok-4.5, MEDIUM — upstream's showDesktopUpdateDownloadedToast is never calledNot this merge. Verified against both parents: upstream calls it from LegacySidebar.tsx:3552, and the fork parent already did not — a pre-existing fork divergence, not something this weld dropped. Worth its own look
grok-4.5, LOW — regenerate sits above Archive on the settlement branch rather than upstream's exact relative slotCosmetic ordering inside a menu the fork already reorders

Both independently confirmed the parts I most wanted checked: every menu entry in
thread-list-items is reachable and dispatched with no duplicates or dead handlers; dropping
onEnvironmentChange is correct because HomeScreenProps requires the multi-select trio instead and
no upstream selection surface became unreachable; threadActionMessages is an exact superset of the
fork's local copies including the settle/unsettle wording; @container/changed-files appears once on
the real query container with the caller's className intact; and main.tsx uses both the fork's
preload recovery and upstream's Clerk appearance.

On SidebarChrome.tsx — the file behind the missing Pull Requests button, which did not
conflict: git diff HEAD^2 HEAD on 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's
own single-environment assumption, not a fork-side removal.

Verification

  • Recursive typecheck clean across all 18 packages; vp build of the web app passes.
  • 2,763 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Note

A full-suite run surfaced the pre-existing browserHistoryStore.test.ts flake (~1 in 3). Not from
this branch — reproduced earlier on clean fork/dev and at f067b34a1.

Co-authored by @patroza

opened by Patrick Roza in chat thread Discord · Discord · T3

t3-codeBotand others added 18 commits August 11, 2026 20:25
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>
@omegent-app
omegent-appBot merged commit 1ae7185 into fork/devAug 12, 2026
6 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@extoci@maria-rcks@chrisdeeming@none23@StiensWout@juliusmarminge