merge: sync upstream through 3d74474f6 (20 commits) - #388
Merged
Conversation
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>
…gdotgg#5887) 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adopts upstream through
3d74474f6— the 20 commits that landed after02f4ce566.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
3d74474f6f0e297518d43210050ef051bdb80ca9fb3fbcbd55d63796906805f73b2e8fdd5da45337ff21d5e4449a1472d952abe668000d38866dcf993fa1c583d769f02c8ad4b813bd18d8d6d659986ce3062b4618cdeb901d63Resolutions
Seven conflicted files. What actually needed judgement:
ChatHeader.tsxWorkspaceBreadcrumb. The fork keeps two extra elements in that row — the provider-usage status dot with itsAiUsageStatstooltip, andHostResourceStatus</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 matchedprojectGrouping.tsderiveProjectGroupLabel; the auto-merge kept both upstream's newsharedDisplayNamesblock and the fork's older one — a duplicate declaration that the type-check passed but the bundler rejectedUsagePage.tsxcolSpan={PROVIDER_ORDER.length + 3}fix from #387routeTree.gen.tssettings.projects_.$projectKey→projects.$projectKey, colliding with the fork's_chat.board/_chat.jumproutesmobile-eas-production.ymlmainvia Blacksmith runners. The fork had already rewritten the same workflow for manual dispatch, its owneas-continuous-deploy.sh, afork/integrationrelease branch and GitHub-hosted runnerssettingsSearch.test.tsproject-new-thread-workspace, which pingdotgg#5923 removed from the settings catalog when project settings moved to their own routesworktree-remove-confirmation, with the reason recorded. Verified the entry moved rather than the fork's setting being droppedSidebar.tsxAdversarial 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.
mobile-fingerprint-check.yml, which landed without a conflict and so was never inspected. It runs onblacksmith-8vcpu-ubuntu-2404, triggers on every PR touchingapps/mobile,packages/client-runtime,packages/contracts,packages/shared,assetsorscripts, and the fork has no Blacksmith runners5f0e08c03. 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/workflowsPROVIDER_ORDERwas typedreadonly UsageProviderKind[], which accepts an incomplete list. TheRecordmaps 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 omissiond577ef0e7, web and mobile. The order is now aconsttuple with a type-level exhaustiveness assertion. Verified it actually fires: adding a fifth literal to the schema producesType '"probe"' does not satisfy the constraint 'never'at the guardSidebar.tsximport union leftEllipsisIcondead; the project row's button isSettingsIconafter pingdotgg#5923ProjectSettingsPanelChatHeaderis unreachable, sinceheaderDotClassderives fromheaderUsageOn the resolutions themselves, independently confirmed by both: the fork's usage dot and
HostResourceStatusstill render as siblings in the header row with rename/menu behaviour intactinside upstream's breadcrumb;
projectGroupingmatches upstream's implementation exactly with nofork labelling rule lost;
UsagePagehas no two-provider assumption left anywhere; the regeneratedroute tree matches all 21 route modules on disk with the fork's
_chat.board/_chat.jumpintactand no reference to the deleted route; and the mobile release workflow is internally coherent, with
its script,
app.config.tsandT3CODE_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 stopsold 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
vp buildof the web app passes — worth calling out separately, because the duplicate declarationin
projectGrouping.tstype-checked fine and only the bundler caught it.CodexTextGenerationlaunch-args one,which reproduces on unmerged
fork/dev(this merge touches nothing undertextGeneration/).pnpm-lock.yamlregenerated rather than hand-merged.d577ef0e7(provider-order guard) and5f0e08c03(fingerprint-check runner + dead import).Co-authored by @patroza
opened by Patrick Roza in chat thread Discord · Discord · T3