Skip to content

sync(upstream): merge upstream/main b2ee17d7c into fork/dev - #377

Merged
patroza merged 5 commits into
fork/devfrom
sync/upstream-b2ee17d7c
Aug 7, 2026
Merged

sync(upstream): merge upstream/main b2ee17d7c into fork/dev#377
patroza merged 5 commits into
fork/devfrom
sync/upstream-b2ee17d7c

Conversation

@omegent-app

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

Copy link
Copy Markdown

Adopts upstream through b2ee17d7c — the four commits after #375.

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
b2ee17d7c feat(web): thread actions from the chat header title (pingdotgg#5592)
7963cc70f feat(server): record runtime mode per turn and on mode changes (pingdotgg#5593)
b792ed9f7 fix(web): stabilize chat timeline positioning (pingdotgg#5449)
2e66b1fdf fix(web): live background-work banner no longer hides behind the update notice (pingdotgg#5595)

Resolutions

Where Situation Resolution
ChatHeader.tsx upstream's inline rename + title-as-menu (pingdotgg#5592) landed in the region carrying the fork's remote-VS-Code open and usage-dot/host-resource chrome woven: upstream's rename/menu structure adopted; the fork chrome sits after the title ternary and stays reachable on both server and non-server branches (the fork's anti-stack-drop source assertions in ChatHeader.test.ts pass)
SidebarV2.tsx upstream replaced the fork's buildSidebarV2ThreadContextMenuItems with the shared threadActionMenu.logic builder used by the header shared builder adopted; the fork's copy-thread-id entry moved into the shared menu and given a toast-backed handler in useThreadActionMenu, so both surfaces offer it
ChatView.tsx banners upstream's pingdotgg#5595 fold (reconnect + version skew → one calm line, suppression while an update runs) vs the fork's narrower resuming-update suppression upstream's logic taken as a superset
ChatView.tsx scroll upstream's pingdotgg#5449 anchor-clear + rAF-deferred scrollToEnd vs the fork's unread-flag clearing in the same callback both kept
ComposerBannerStack / ChatHeader.test.ts additive unions (default variant + urgent flag; both test suites) unioned

Adversarial review

grok-4.5 and gpt-5.6-sol over the git show --cc surface with worktree access. Both independently converged on the same defect:

Finding Disposition
HIGH (grok) / MED (codex) — the resolution dropped upstream's !reconnectingThroughVersionSkew guard on the server-version banner, so idle-reconnect-through-skew would show both the folded calm line and the update offer — exactly the stacking pingdotgg#5595 removes Fixed. Guard restored with a comment naming why
LOW (grok) — dead buildSidebarV2ThreadContextMenuItems import left in SidebarV2 Fixed. Removed

Clean per both: menu ids ↔ handlers across both consumers, rename focus/blur/escape paths, fork chrome reachability, timeline weave, and the updated test expectations (extended, not weakened).

Verification

  • Full recursive typecheck clean across 17 packages.
  • 2,278 tests pass; the only failure is the pre-existing CodexTextGeneration launch-args one,
    which reproduces on unmerged fork/dev.
  • pnpm-lock.yaml regenerated.

Co-authored by @patroza

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

t3dotgg and others added 5 commits August 7, 2026 10:10
…te notice (pingdotgg#5595)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…otgg#5593)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Adopts the four upstream commits after #375: thread actions from the chat
header title (pingdotgg#5592), per-turn runtime-mode recording (pingdotgg#5593), chat timeline
positioning stabilization (pingdotgg#5449), and the background-work banner no longer
hiding behind the update notice (pingdotgg#5595).

The chat header gains upstream's inline rename and title-menu (shared
threadActionMenu.logic) woven around the fork's remote-VS-Code open and
usage-dot/host-resource chrome. SidebarV2 adopts the shared menu builder in
place of the fork's buildSidebarV2ThreadContextMenuItems; the fork's
copy-thread-id entry moves into the shared menu (and gains a handler in
useThreadActionMenu) so both surfaces offer it.

ChatView takes upstream's folded reconnect/version banner logic (pingdotgg#5595, a
superset of the fork's resuming-update suppression) and the anchor-clearing
rAF scroll (pingdotgg#5449), keeping the fork's unread-flag clearing and its
unread-activity observer.

Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
@patroza
patroza merged commit f8d8555 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 seven upstream commits after #377: iOS terminal clear no longer
resets the session (pingdotgg#5440), Android scroll padding above the nav bar (pingdotgg#5415),
Android composer opacity (pingdotgg#5582), Clerk auth navigation headers (pingdotgg#5140), the
mobile app version bump to 1.0.2 (pingdotgg#5588), click-to-unpin (pingdotgg#5578), and the
correct new-thread shortcut in the sidebar tooltip (pingdotgg#5594).

Three resolutions:

- ThreadComposer: pingdotgg#5582 moves the backdrop gradient off Animated.View, where
  Reanimated silently drops experimental_backgroundImage on Android — the very
  bug it fixes. The fork's gradient was on that Animated.View, so it is removed
  there and the fork's stronger lower-band stops (0.82/0.96 dark, 0.88/0.98
  light) ride on upstream's plain-View backdrop instead.
- app.config: upstream's 1.0.2 version bump with the fork's
  MOBILE_RUNTIME_VERSION_OVERRIDE escape hatch kept; its default policy is the
  same fingerprint upstream documents.
- SidebarV2: upstream's pingdotgg#5594 label ordering (chat.new before chat.newLocal)
  adopted — the fork's button has exactly the semantics upstream describes,
  routing multi-project setups through the palette picker and creating
  immediately otherwise. The fork's board and command-palette labels stay.

Upstream's two new react-mocking harness tests (pingdotgg#4479) are added to the fork's
isolatedUnitTestFiles. The fork's unit project runs isolate: false to reuse each
worker's module graph; upstream has no such config, so those tests assume full
isolation. Under a shared registry the component graph can already be bound to
the real react/compiler-runtime by an earlier file, the vi.mock("react") never
applies, and the compiled component reports a memo-cache hit and skips the hooks
the test asserts on. That is what made AddProviderInstanceDialog.environment
fail this PR's CI while passing in isolation. Two other react-mocking tests were
already in that list.

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.

3 participants