Skip to content

sync(upstream): merge upstream/main 23f0a1ae3 into fork/dev - #374

Merged
patroza merged 7 commits into
fork/devfrom
sync/upstream-23f0a1ae3
Aug 7, 2026
Merged

sync(upstream): merge upstream/main 23f0a1ae3 into fork/dev#374
patroza merged 7 commits into
fork/devfrom
sync/upstream-23f0a1ae3

Conversation

@omegent-app

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

Copy link
Copy Markdown

Adopts upstream through 23f0a1ae3 — the six commits after #372, headlined by per-device provider
settings (pingdotgg#4479)
and the modular theme library + theme editor (pingdotgg#5226).

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
23f0a1ae3 fix(web): reading a thread clears Done; Woke is dismissible (pingdotgg#5579)
85b1734d4 feat(web): add modular theme library (pingdotgg#5226)
3ffe84f96 fix(web): stop the sidebar "Working" label from pulsing (pingdotgg#5580)
220efad62 fix: add missing space before 'GitHub releases page' link on download page (pingdotgg#4511)
b98a0f0d2 fix(mobile): invisible T3 Connect devices can now be seen and removed (pingdotgg#5563)
95305c36f feat(web): per-device provider settings (pingdotgg#4479)

The one real piece of work: the command-palette overlay host

Upstream's new filePicker.toggle (mod+p), projectSearch.toggle (mod+shift+f)
and themeEditor.toggle (mod+alt+shift+t) shortcuts arrive with a rewritten palette that
hosts three overlays (palette · files · content). The fork rewrote that component, so the host was
ported, not taken:

  • the palette reducer gains mode and ToggleMode, and moves to CommandPalette.logic.ts where
    upstream keeps it (so it stays unit-testable);
  • the files/content overlays bring their own CommandDialogPopup instead of the popup being lifted
    out of OpenCommandPaletteDialog, which the fork has heavily customised;
  • Esc inside an overlay returns to command mode rather than dismissing, matching the
    "Esc Back" affordance both overlays render;
  • both overlays are registered as palette actions ("Go to file", "Search project contents"), so they
    are discoverable by search and not only by shortcut.

Without the port those three default keybindings would have been dead on arrival.

Welds found by typecheck and tests, not by conflict markers

Where Defect Resolution
SidebarV2 two per-row VCS status queries: upstream's full-mode vcsEnvironment.status auto-merged in above the fork's budgeted listStatus, and upstream's new isWoke reads prState declared in its copy fork's query and its pr/prState hoisted above isWoke; upstream's duplicate dropped. Full mode is one poller per worktree — the storm the fork's list mode exists to avoid
ElectronDialog fork's pickApplication (macOS Open With) and upstream's new pickFiles collided at every declaration site; a naive union fused two error classes, two interfaces, and duplicated confirm/showMessageBox both APIs kept, declarations separated, upstream's pickFiles re-indented into the service
keybindings.test.ts the DEFAULT_BINDINGS fixture kept the fork's list while upstream's new assertions expected the two new chords — tests failed against a fixture that no longer matched shipped defaults fixture extended with both bindings
Sidebar.tsx (v1) the fork rewrote the v1 body (search + new-thread header row, recency lists); upstream restructured the same region for its own layout whole-body alternatives — the fork's kept; upstream's fixedHeader restructure not adopted for v1

Keybinding additions (mod+p, mod+shift+f, mod+alt+shift+t) were checked against the fork's
existing chords, including board.open = mod+t: no collisions.

Adversarial review

grok-4.5 and gpt-5.6-sol both ran over the git show --cc surface with the merged worktree
available. They independently converged on the same finding: the overlay host was only half
ported. All four are fixed in this branch.

Finding Disposition
HIGH (grok) / MED (codex)Esc in files/content closed the whole dialog, contradicting the "Esc Back" affordance the overlays render Fixed. onOpenChange intercepts escape-key while mode !== "command" and switches back instead
MED (both) — the "Go to file" / "Search project contents" palette actions were dropped, leaving the overlays shortcut-only Fixed. openOverlayMode threaded into OpenCommandPaletteDialog; both actions registered
MED (codex) / LOW (grok) — the palette's shortcut resolver lost previewFocus/previewOpen, so customized bindings using those when conditions could not match Fixed. Full context restored, previewOpen derived as upstream does
LOW (both) — upstream's reducer tests vanished when the reducer was inlined into the component Fixed. Reducer moved to CommandPalette.logic.ts and upstream's four reducer tests restored

Both cleared the rest: ElectronDialog (no duplicate declarations, both APIs wired), keybinding
registry/handlers/fixtures agree, and the deliberate listStatus choice plus Done/Woke and
non-pulsing Working semantics are coherent.

Verification

  • Full recursive typecheck clean across 17 packages.
  • 2,277 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • One upstream test (AddProviderInstanceDialog.environment, new in feat(web): per-device provider settings pingdotgg/t3code#4479) failed once in a full
    workspace run and passed both in isolation and on two subsequent full runs — order-dependent
    flakiness in upstream's own test, not a resolution defect. Flagging rather than papering over it.
  • pnpm-lock.yaml regenerated rather than hand-merged.

Co-authored by @patroza

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

t3dotgg and others added 7 commits August 7, 2026 00:57
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <jmarminge@gmail.com>
…g#5579)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Adopts the six upstream commits after #372: per-device provider settings
(pingdotgg#4479), the modular theme library and theme editor (pingdotgg#5226), Done/Woke sidebar
semantics (pingdotgg#5579), the non-pulsing Working label (pingdotgg#5580), mobile T3 Connect
device cleanup (pingdotgg#5563), and a download-page copy fix (pingdotgg#4511).

Upstream's new filePicker/projectSearch/themeEditor shortcuts arrive with an
overlay-mode host for the command palette. The fork rewrote that component, so
the host was ported rather than taken: the palette reducer gains `mode` and
`ToggleMode`, and the two overlays bring their own popup instead of the popup
being lifted out of OpenCommandPaletteDialog. Without that the new default
keybindings would have been dead.

Welds found by typecheck and tests, not by conflict markers:
- SidebarV2 ended up with two per-row VCS status queries: upstream's full-mode
  `vcsEnvironment.status` auto-merged in above the fork's budgeted
  `listStatus`. Upstream's new isWoke reads prState, so the fork's query and its
  pr/prState derivation are hoisted above it and the duplicate dropped. Keeping
  the fork's list mode matters: full mode is one poller per worktree.
- ElectronDialog: the fork's pickApplication and upstream's pickFiles are
  independent additions that collided at every declaration site.
- The keybindings test fixture kept the fork's list, silently dropping
  upstream's two new bindings while its new assertions expected them.

The v1 sidebar body is a fork rewrite; upstream restructured the same region for
its own layout, so both sides were whole-body alternatives and the fork's is
kept.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@patroza
patroza merged commit 74a1459 into fork/dev Aug 7, 2026
4 checks passed
omegent-app Bot added a commit that referenced this pull request Aug 7, 2026
Adopts the three upstream commits after #374: mobile keyboard avoiding
(pingdotgg#5451), dev-runner cold-start speedup (pingdotgg#5584), and rewritten --share
instructions (pingdotgg#5586).

Resolutions: dev-runner.ts unions the fork's METRO_PORT passthrough with
upstream's launcher-env scrubbing (T3_SERVICE_LAUNCHER_CONTEXT /
T3_BOOT_SERVICE_UNIT deletion). AGENTS.md's auto-union dropped upstream's
rewritten "Dev servers" bullets into the fork's ship-gate section; the
share/pairing guidance is folded into the fork's own Dev Servers section
instead, replacing its older --share bullet. Lockfile regenerated.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
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.

4 participants