Skip to content

merge: sync upstream through 3d74474f6 (20 commits) - #388

Merged
omegent-app[bot] merged 23 commits into
fork/devfrom
sync/upstream-3d74474f6
Aug 10, 2026
Merged

merge: sync upstream through 3d74474f6 (20 commits)#388
omegent-app[bot] merged 23 commits into
fork/devfrom
sync/upstream-3d74474f6

Conversation

@omegent-app

@omegent-app omegent-app Bot commented Aug 10, 2026

Copy link
Copy Markdown

Adopts upstream through 3d74474f6 — the 20 commits that landed after 02f4ce566.

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
3d74474f6 fix(web): update pills use readable theme foregrounds (pingdotgg#5938)
f0e297518 fix(web): align project name with headline (pingdotgg#5864)
d43210050 fix(web): trait menu closes after you pick a level (pingdotgg#5879)
ef051bdb8 fix(web): enable restore defaults after theme mix changes (pingdotgg#5928)
0ca9fb3fb fix(web): show worktree icon in sidebar v2 (pingdotgg#5909)
cbd55d637 fix(web): correct model picker trigger padding (pingdotgg#5935)
96906805f Add settings and usage breadcrumbs (pingdotgg#5929)
73b2e8fdd Automate production mobile EAS releases (pingdotgg#5609)
5da45337f Preserve back navigation when opening settings (pingdotgg#5930)
f21d5e444 Move project settings to contextual project routes (pingdotgg#5923)
9a1472d95 fix(web): match usage titlebar text styling (pingdotgg#5897)
2abe66800 fix(server): sandbox user-provided SVGs (pingdotgg#5916)
0d38866dc fix(server): usage no longer double-counts forked Codex sessions (pingdotgg#5887)
f993fa1c5 fix(mobile): long-pressing a thread row no longer navigates into the thread (pingdotgg#5901)
83d769f02 fix(web): match settings search shortcut styling to command palette's (pingdotgg#5841)
c8ad4b813 fix(shell): add ~/.local/bin to the Windows CLI resolver (pingdotgg#5074)
bd18d8d6d fix(web): unify usage page chrome (pingdotgg#5823)
659986ce3 fix(web): thread title button no longer eats the drag area (pingdotgg#5857)
062b4618c fix(shared): bound the file-link label so bracket runs stop rescanning (pingdotgg#5782)
deb901d63 fix(server): favicon resolution no longer pins the event loop (pingdotgg#5538)

Resolutions

Seven conflicted files. What actually needed judgement:

Where Situation Resolution
ChatHeader.tsx pingdotgg#5929/pingdotgg#5930 replaced the header's title row with a WorkspaceBreadcrumb. The fork keeps two extra elements in that row — the provider-usage status dot with its AiUsageStats tooltip, and HostResourceStatus upstream's breadcrumb adopted; the fork's two elements re-attached after </WorkspaceBreadcrumb>, which is where they sat relative to the title before. The auto-merge would have left them orphaned inside a closing tag that no longer matched
projectGrouping.ts upstream rewrote deriveProjectGroupLabel; the auto-merge kept both upstream's new sharedDisplayNames block and the fork's older one — a duplicate declaration that the type-check passed but the bundler rejected upstream's logic kept, the superseded fork copy removed. Caught by the web build, not by typecheck
UsagePage.tsx pingdotgg#5823 restructured the tables; the fork's only local delta here was the colSpan={PROVIDER_ORDER.length + 3} fix from #387 upstream's file taken wholesale, the fork's one-line fix re-applied onto the new structure. This matters now that the fork has four usage providers (claude, codex, grok, kimi) rather than upstream's two
routeTree.gen.ts pingdotgg#5923 moved settings.projects_.$projectKeyprojects.$projectKey, colliding with the fork's _chat.board / _chat.jump routes regenerated with the TanStack router plugin rather than hand-merged, so the tree matches the routes actually on disk. A hand union left four references to the deleted route
mobile-eas-production.yml pingdotgg#5609 rewrote this to auto-release on push to main via Blacksmith runners. The fork had already rewritten the same workflow for manual dispatch, its own eas-continuous-deploy.sh, a fork/integration release branch and GitHub-hosted runners fork's version kept whole. Adopting upstream's would point the fork's release path at a branch it does not use and runners it does not have
settingsSearch.test.ts the fork's "work" assertion expected project-new-thread-workspace, which pingdotgg#5923 removed from the settings catalog when project settings moved to their own routes assertion narrowed to the fork's own worktree-remove-confirmation, with the reason recorded. Verified the entry moved rather than the fork's setting being dropped
Sidebar.tsx icon import collision unioned

Adversarial review

Both reviewers were briefed on all seven resolutions and told to attack each one. Both found every
resolution sound
— and then found two things the resolutions themselves could not have surfaced,
because neither was in a conflicted file.

Finding Disposition
grok-4.5, HIGHpingdotgg#5609 also added mobile-fingerprint-check.yml, which landed without a conflict and so was never inspected. It runs on blacksmith-8vcpu-ubuntu-2404, triggers on every PR touching apps/mobile, packages/client-runtime, packages/contracts, packages/shared, assets or scripts, and the fork has no Blacksmith runners Fixed in 5f0e08c03. This was not hypothetical: its "Native fingerprint diff" check was already sitting queued on this very PR and would never have reported. Same fix as #386. There are now no Blacksmith references left in .github/workflows
gpt-5.6-sol, MEDIUMPROVIDER_ORDER was typed readonly UsageProviderKind[], which accepts an incomplete list. The Record maps beside it are exhaustive by type, so adding a provider forced label/colour/mark updates but not the order — and a provider missing from the order still shows in summary rows while vanishing from daily columns, chart bands, legends and skeletons. The tests iterate the order too, so they would preserve the omission Fixed in d577ef0e7, web and mobile. The order is now a const tuple with a type-level exhaustiveness assertion. Verified it actually fires: adding a fifth literal to the schema produces Type '"probe"' does not satisfy the constraint 'never' at the guard
grok-4.5, LOW — the Sidebar.tsx import union left EllipsisIcon dead; the project row's button is SettingsIcon after pingdotgg#5923 Fixed in the same commit
grok-4.5, LOW — settings search can no longer deep-link to per-project "new thread workspace" Upstream's intent with contextual project routes, not a fork loss. The setting still renders in ProjectSettingsPanel
gpt-5.6-sol, note — the fallback dot branch in ChatHeader is unreachable, since headerDotClass derives from headerUsage Pre-existing on the fork parent, untouched by this merge

On the resolutions themselves, independently confirmed by both: the fork's usage dot and
HostResourceStatus still render as siblings in the header row with rename/menu behaviour intact
inside upstream's breadcrumb; projectGrouping matches upstream's implementation exactly with no
fork labelling rule lost; UsagePage has no two-provider assumption left anywhere; the regenerated
route tree matches all 21 route modules on disk with the fork's _chat.board / _chat.jump intact
and no reference to the deleted route; and the mobile release workflow is internally coherent, with
its script, app.config.ts and T3CODE_MOBILE_* variables all present.

On pingdotgg#5887 specifically (usage double-counting forked Codex sessions), which lands into the usage
code the fork extended last week: gpt-5.6-sol confirmed it arrived intact — fork detection, copied-
history suppression, the reader admitting session_meta, and the scan-cache version bump that stops
old double-counted results surviving. No cross-provider weld: Codex, Grok and Kimi each allocate
independent scan state per file, so Codex fork suppression cannot suppress Grok's process-wide log
or Kimi's per-session records.

Verification

  • Recursive typecheck clean across all 18 packages.
  • vp build of the web app passes — worth calling out separately, because the duplicate declaration
    in projectGrouping.ts type-checked fine and only the bundler caught it.
  • 2,368 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev (this merge touches nothing under textGeneration/).
  • pnpm-lock.yaml regenerated rather than hand-merged.
  • Two fixes on top of the merge from the reviews: d577ef0e7 (provider-order guard) and
    5f0e08c03 (fingerprint-check runner + dead import).

Co-authored by @patroza

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

murenovich and others added 23 commits August 9, 2026 21:10
pingdotgg#5782)

Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…stalled providers are found (pingdotgg#5074)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…thread (pingdotgg#5901)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…5928)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adopts the 20 upstream commits that landed after 02f4ce5, headlined by
project settings moving onto contextual project routes (pingdotgg#5923), settings and
usage breadcrumbs (pingdotgg#5929, pingdotgg#5930), the unified usage page chrome (pingdotgg#5823), a fix
for usage double-counting forked Codex sessions (pingdotgg#5887), SVG sandboxing
(pingdotgg#5916), and favicon resolution no longer pinning the event loop (pingdotgg#5538).

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
PROVIDER_ORDER was typed `readonly UsageProviderKind[]`, which accepts an
incomplete list. The `Record` maps beside it are exhaustive by their own type,
so adding a provider forced updates to labels, colours and marks — but not to
the order. A provider missing from the order still appears in the summary rows,
which come from `merged.providers`, while silently vanishing from the daily
columns, chart bands, legends and skeletons, all of which iterate the order.
The tests iterate it too, so they would preserve the omission rather than catch
it.

The order is now a `const` tuple with a type-level assertion that nothing in
UsageProviderKind is missing from it, on web and mobile both. Verified it fires:
adding a fifth literal to the schema produces "Type '\"probe\"' does not satisfy
the constraint 'never'" at the guard, next to the Record errors.

Found by the gpt-5.6-sol adversarial review.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
pingdotgg#5609 also added mobile-fingerprint-check.yml, which landed without a conflict
and so was never inspected. It runs on blacksmith-8vcpu-ubuntu-2404, which this
fork does not have, and it triggers on every pull request touching apps/mobile,
packages/client-runtime, packages/contracts, packages/shared, assets or
scripts. Its "Native fingerprint diff" check was already sitting queued on this
very PR and would never have reported — a permanently pending check, and a
blocked merge wherever branch protection waits on all of them.

Same fix as #386 for web-preview.yml: GitHub-hosted runners, which is what
every other fork workflow uses. There are now no Blacksmith references left in
.github/workflows.

Also drops the EllipsisIcon import the Sidebar conflict union left behind; the
project row's button is SettingsIcon after pingdotgg#5923.

Found by the grok-4.5 adversarial review.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@omegent-app
omegent-app Bot merged commit f067b34 into fork/dev Aug 10, 2026
6 checks passed
Sign up for free to 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.