merge: sync upstream through 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming
, '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 0a7c662d3 (10 commits) - #392

Merged
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3
Aug 10, 2026
Merged

merge: sync upstream through 0a7c662d3 (10 commits)#392
omegent-app[bot] merged 12 commits into
fork/devfrom
sync/upstream-0a7c662d3

Conversation

@omegent-app

@omegent-appomegent-appBot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 0a7c662d3 — the 10 commits after 3d74474f6, headlined by pingdotgg#4849, the
multi-provider pull requests page with in-app reviews
, plus themed confirmation dialogs (pingdotgg#5624),
built-in theme contrast (pingdotgg#6000) and the v0.0.33 release prep.

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
0a7c662d3fix(web): improve built-in theme contrast (pingdotgg#6000)
b91a000a1feat(web): add duplicate action to the T3 Code default theme (pingdotgg#6013)
8de0aa24dperf(desktop): probe the Windows shell environment concurrently (pingdotgg#5878)
cad2c9361feat: multi-provider pull requests page with in-app reviews (pingdotgg#4849)
78f462c4echore(release): prepare v0.0.33
3b72d17cbfix(mobile): parse EAS fingerprint JSON (pingdotgg#5991)
d440442dbfix(mobile): stop Android user bubbles with code blocks from overlapping (pingdotgg#5659)
67ef189d8fix(mobile): detect PowerShell cmdlet errors in work log rows (pingdotgg#5726)
fbcae59effix(web): use import/export-appropriate icons for theme buttons (pingdotgg#5964)
9821bca1cfix(web): use themed confirmation dialogs (pingdotgg#5624)

Resolutions

12 conflicted files. The two that actually mattered:

WhereSituationResolution
ElectronDialog.tsthe real weld — and my first resolution of it was wrong. The fork owns an owner-aware confirm (Option<BrowserWindow>); pingdotgg#5624 added showMessageBox next to it. The auto-merge kept the fork's confirmimplementation while dropping its interface declaration, its ElectronDialogConfirmError class, its ElectronDialogConfirmInput, the CONFIRM_BUTTON_INDEX constant and its entry in the ElectronDialogError union — leaving a method that existed but could not be calledI first restored all five faithfully from HEAD^1. Review then showed the whole surface was dead — pingdotgg#5624 removed the bridge, preload API and IPC channel — so it is removed instead, and confirmations run through upstream's themed dialog. See the review section
LegacySidebar.tsxupstream re-rendered the whole Projects group unwrapped; the fork wraps it in showProjectGroups and puts a flat/recency list above it. Upstream's copy would have rendered the group twice, since the shared region below already completes the fork'sfork's structure kept; upstream's new requiredopenPullRequestsInRightPanel prop threaded to the two fork-only call sites, and pingdotgg#6000's contrast change (text-muted-foreground/60text-icon-muted) applied by hand rather than lost

The rest were additive unions — the fork's identity.* RPCs beside upstream's 13 new pullRequests.*
ones, fork props beside onOpenPullRequest, fork-owned release workflow and desktop dialog tests
kept whole. routeTree.gen.ts was regenerated with the router plugin, not hand-merged.

Two consequences of upstream's new feature that needed fixing rather than resolving: fork test
helpers gained upstream's new ProcessRunOutput invalid-UTF-8 fields, and upstream's new
StyledDiffCodeView.test.tsx joined the fork's isolatedUnitTestFiles — it uses vi.mock and fails
under the fork's isolate: false, which is the documented fork-only case that list exists for.

Checks I ran on the two riskiest unions

Rather than trust the unions:

  • Every RPC method has an authorization scope. 101 methods, 98 scoped; the 3 that are not
    (projects.add / list / remove) are identical on HEAD^1 and on upstream/main, so they
    are pre-existing and not something this merge introduced. Method count 88 (fork) → 101 confirms
    upstream's 13 arrived intact.
  • onOpenPullRequest is genuinely wired, not a prop nothing supplies: ChatView.tsx:6697
    ChatHeader.tsx:494GitActionsControl.tsx:1240 invokes it. Upstream's in-app PR opening
    works on the fork.

Adversarial review

Both reviewers went through all 12 resolutions. Neither found a HIGH. Two findings were real and
are fixed in 46200ae7d; the rest confirmed sound.

FindingDisposition
gpt-5.6-sol, MEDIUM — the restored native ElectronDialog.confirm is dead production code. pingdotgg#5624 removed confirm from DesktopBridge, the preload API and the IPC channel/handler, so the fork's owner-aware implementation had no caller left but its own tests, competing with the themed dialog that actually runsFixed by removing the whole surface rather than keeping it. My faithful restore was the wrong instinct: I checked that the pieces were consistent, not that anything still called them. Verified on HEAD^1 that its one production caller (ipc/methods/window.ts:231) is gone. Declaration, implementation, error class and union entry, input type, button-index constant and tests all removed; confirmations run through LocalApi.dialogs.confirmConfirmDialogHost
grok-4.5, MEDIUM — the fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR opening. Its rows called openPrLink without a thread ref and always fell out to the browserFixed. Threading the required prop into the project rows was enough to make the merge typecheck, which is exactly why this stayed invisible. The recency rows now take openPullRequestsInRightPanel and use the same contract as the project rows
both, LOWWS_METHODS.projects{List,Add,Remove} have no scope entryNot a bypass. They have no Rpc.make, no handler and no caller — dead legacy names, identical on both parents. The real invariant (registered WsRpcGroup requests vs RPC_REQUIRED_SCOPES) is complete and test-enforced
grok-4.5, LOW — remaining text-muted-foreground/60 chrome elsewhere in the legacy sidebarCosmetic, left alone

Confirmed sound by both: the LegacySidebar Projects group renders once with the prop threaded and
routeThreadRef !== null preserved; onOpenPullRequest is live end-to-end; the route tree matches
all 22 route files with /board, /jump and /pull-requests present; the invalid-UTF-8 fixture
additions track a real upstream decode change rather than masking one; isolating
StyledDiffCodeView.test.tsx preserves its assertions rather than weakening them; and the fork's PR
badges and upstream's PR page are distinct surfaces — branch-scoped VCS status versus
repository-wide PullRequestService — with no competing state or dead fetching path.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — it caught a duplicate useComposerDraftStore import my union
    left behind, which typecheck did not.
  • 2,751 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.

Co-authored by @patroza

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

StiensWoutand others added 12 commits August 10, 2026 02:23
…ing (pingdotgg#5659)
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…g#4849)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…dotgg#5878)
Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Adopts the 10 upstream commits that landed after 3d74474, headlined by the
multi-provider pull requests page with in-app reviews (pingdotgg#4849), themed
confirmation dialogs (pingdotgg#5624), built-in theme contrast (pingdotgg#6000) and the v0.0.33
release prep.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5624 replaced the desktop's native confirmation with a themed React dialog: it
removed `confirm` from DesktopBridge, the preload API and the IPC channel and
handler. The auto-merge had dropped the fork's `confirm` declaration while
keeping its implementation, and restoring it faithfully — as I first did — left
a service whose only remaining callers were its own tests, competing with the
themed dialog that actually runs. The whole surface goes: declaration,
implementation, error class and union entry, input type, button-index constant
and the tests. All confirmations now go through LocalApi.dialogs.confirm and
ConfirmDialogHost, which is upstream's intent.
The fork's flat/recency sidebar list never received pingdotgg#4849's right-panel PR
opening. Threading the required prop into the project rows was enough to make
the merge typecheck, so the gap was invisible: the recency rows called
openPrLink without a thread ref and always fell out to the browser. They now
take openPullRequestsInRightPanel and use the same contract as the project
rows — open in the panel, and navigate to the thread so the panel has something
to sit beside.
Found by the gpt-5.6-sol and grok-4.5 adversarial reviews respectively.
Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-appBot merged commit bd5fac7 into fork/devAug 10, 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.

8 participants

@StiensWout@UtkarshUsername@myacoub91@Brechard@juliusmarminge@Bil0000@tsouth89@chrisdeeming