sync(upstream): merge upstream/main 48aa875c0 into fork/dev - #372
Merged
Conversation
Co-authored-by: t3-turbo-simulation <simulation@t3turbo.local> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Theo Browne <me@t3.gg>
… bottom (pingdotgg#5566) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
pingdotgg#5572) Co-authored-by: Claude <noreply@anthropic.com>
…rovider update (pingdotgg#5570) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…otgg#5573) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tgg#5558) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
omegent-app
Bot
force-pushed
the
sync/upstream-48aa875c0
branch
from
August 7, 2026 08:15
8bba7f5 to
7280ad1
Compare
Adopts the ten upstream commits after #368: timeline live-follow (pingdotgg#5566), reconnect-loop handling during server stalls (pingdotgg#5561), plans folded into chat (pingdotgg#5558/pingdotgg#5551), plus server settle/reconnect fixes and the transfer-budget CI test (pingdotgg#5350). The fork's "keep the open WebSocket lease when a foreground liveness probe fails" is replaced by upstream's probe model. Both target reconnect churn during server stalls; upstream splits the wake reasons (probe vs reconnect), adds tolerance windows and a first-attempt ladder skip. Keeping both was incoherent: the auto-merge left the fork's swallow in front of upstream's wakeProbeFailed path, making it dead code. The fork's diagnostics log, labelled ping-timeout errors and followNetworkStatus resume handling are kept around it. Welds found by typecheck and tests, not by conflict markers: - ChatView and ThreadFeed each ended up with two follow-state variables, the fork's superseded one still being written; converged on upstream's. - findSidebarProposedPlan was dropped from session-logic while ChatView still called it; restored. - Two timeline row-union members merged into one malformed member. - The fork's pre-latch ThreadFeed handlers survived as duplicates alongside upstream's; removed, with the fork's unread-activity dot rebuilt on the latch. - resolveOlderHistoryAutoLoad, left over from the superseded pagination candidate, was referenced only by its own tests; removed with them. - Upstream's transfer-budget test opened a socket without the fork's omegent-t3 product handshake, so the environment rejected it. Plan sidebar wiring is removed with the surface upstream deleted; the fork's settle-independent follow-up composer gate is kept. Co-authored-by: Patrick Roza <42661+patroza@users.noreply.github.com>
omegent-app
Bot
force-pushed
the
sync/upstream-48aa875c0
branch
from
August 7, 2026 08:37
7280ad1 to
d5ac3b9
Compare
omegent-app Bot
added a commit
that referenced
this pull request
Aug 7, 2026
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>
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
48aa875c0— the ten commits that landed after #368, headlined bypingdotgg#5566 (timeline live-follow), pingdotgg#5561 (reconnect loops during server stalls) and
pingdotgg#5558/pingdotgg#5551 (plans fold into chat, Build/Plan toggle removed).
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
48aa875c0a8cd2ad2e4a07c1ca9cf5c9948c2288d416addfe45c669547cf2461c7d059f56fa457607ae7b27de8Behavioural decision you should know about
The fork's "keep the open WebSocket lease when a foreground liveness probe fails" is replaced by
upstream's probe model. Both address the same symptom — reconnect churn while the server is
stalled. The fork swallowed the probe failure; upstream pingdotgg#5561 instead splits the wake reasons
(
application-active-probevsapplication-active-reconnect), adds tolerance windows, and lets thefirst post-probe attempt skip a backoff rung.
Keeping both was not an option: the auto-merge produced exactly that, and the fork's swallow made
upstream's
wakeProbeFailedmachinery unreachable dead code. I took upstream's model and kept thefork's additions around it (connection diagnostics log, labelled ping-timeout errors,
followNetworkStatusresume handling). Say the word and I'll restore the lease-keeping behaviouron top of upstream's model instead.
Resolutions
13 conflicted files. What actually needed judgement:
supervisor.tswakeProbeFailedpath — the swallow made it deadtapCause(see above)session.test.tstransportclosetimeoutreporting kept; both tests re-timed to the new windowChatView.tsxmaintainTimelineAtEnd+timelineLiveFollowEnabled)ThreadFeed.tsxisAtEnd, with the fork's stale handlers surviving as duplicatesPlanSidebar.tsxand folded plans into chat; the fork carried sidebar auto-open, dismissal and a togglefindSidebarProposedPlankept (the latter was silently dropped by the auto-merge while ChatView still called it)MessagesTimeline.logic.tsresolveOlderHistoryAutoLoadleft over from the superseded pagination candidate, referenced only by its own tests#message-{id}scroll effect sat inside a block upstream rewrotegrokSegments.test.tsThreadPlanProgressServicemissing from a fork test's layerAdversarial review
Both reviewers ran over the
git show --ccresolution surface with the merged worktree available.grok-4.5 — no high or medium findings; races/ordering, React effects and test-assertion integrity all reported clean. Four low findings, all fixed:
quickly replaces a stalled mobile session after a probe timeout, plus areleaseCount === 1assertion matching the desktop-side testThreadFeed:isAtEndRefnever read or written after init;userNavigationInProgressRefwrite-only — leftovers of the retired fork latchThreadFeed:contentInsetstill destructured from the scroll event, unused since upstream's latch usesgetState()SidebarV2: upstream'srole="status"sr-only "Regenerating title" absent from both title rowsthread.titleRegenerationand restored in both rowsgpt-5.6-sol — two findings, both fixed:
findSidebarProposedPlanlost its only production consumer: it was restored during the merge because ChatView called it, but the plan-sidebar resolution removed that callactiveProposedPlanusesfindLatestProposedPlandirectlyBoth independently confirmed the intentional keep/drop surface is coherent: probe failures now reach
wakeProbeFailed(tapCause, not swallowed), the live-follow rename is consistent through ChatView → MessagesTimeline → tests, steering-queue chips skip the live-edge re-arm, mobile unread only latches while follow is broken, and the transfer-budget test adds the omegent-t3 handshake rather than loosening the gate.Verification
CodexTextGenerationlaunch-args one,which reproduces on unmerged
fork/dev.pnpm-lock.yamlregenerated rather than hand-merged.Co-authored by @patroza
opened by Patrick Roza in chat thread Discord · Discord · T3