sync: absorb upstream v0.0.31 (34 commits) - #38
Conversation
Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…gdotgg#2679) Co-authored-by: codex <codex@users.noreply.github.com>
…e diff HEAD --numstat (pingdotgg#4843)
…otgg#4853) Co-authored-by: Simon Doba <simon.doba@orbit.de> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…gdotgg#4905) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
pingdotgg#4897) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ngdotgg#4882) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…it (pingdotgg#4949) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ingdotgg#4867) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…gdotgg#4964) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…oring (pingdotgg#4967) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ingdotgg#4975) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…g#4807) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
# Conflicts: # apps/web/src/components/SidebarV2.tsx # apps/web/src/components/chat/ChatComposer.tsx # pnpm-lock.yaml # scripts/build-desktop-artifact.ts
Upstream pingdotgg#2679 introduced seven lucide icons the Phosphor shim had no mapping for, and the ci-runners timeout carrier moved with upstream's stashImageCompression -> imageCompression rename. Guard suite is green again on both. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
There was a problem hiding this comment.
Thermo-nuclear code quality review — REQUEST CHANGES
This sync lands several structural regressions on custom: three brand-new files already past the 1k-line bar, a resource-telemetry stack split across parallel mutable state machines, and more feature branches bolted into already oversized reactor/settings/sidebar modules. The fork conflict resolutions mostly preserve intent — that is not enough to clear the maintainability bar for what lands here.
Ordered findings:
- Structural regression — resource telemetry arrives as a sprawling cross-layer stack (native binary + NativeTelemetryClient + aggregator + desktop publisher + background policy + diagnostics UI) instead of clear ownership boundaries.
- Missed code-judo — thread title regeneration should be a dedicated reactor path, not another mode inside
ProviderCommandReactor. - Spaghetti growth —
SettingsPanelsandSidebarV2keep absorbing feature UI/action branches despite already being megafiles. - Boundary / type cleanliness — background subscription scopes rely on module globals and casts instead of a typed adapter.
- 1k-line blockers —
ResourceTelemetryDiagnostics.tsx(1268),native/resource-monitor/src/main.rs(1160), andNativeTelemetryClient.ts(1024) all land above 1k without a decomposition story. - Fork seam —
terminalSlotis inserted next to fenced sidebar customizations without the same fence/manifest discipline.
Not approving. Decompose the 1k+ newcomers and pull title-regeneration / background-activity UI out of the megafiles before this merges.
Sent by Cursor Automation: Thermo-nuclear PR review
| const crypto = yield* Crypto.Crypto; | ||
| const config = yield* ServerConfig; | ||
| const initializedAt = yield* DateTime.now; | ||
| const state = yield* Ref.make(initialState); |
There was a problem hiding this comment.
this lands as a 1k-line service factory that owns spawn lifecycle, protocol decoding, request registries, health publication, collection control, retry state, and supervision. that is too many state machines in one closure. split the protocol client from the sidecar supervisor and the pending-request registry before this lands.
| root_pid: u32, | ||
| sample_interval_ms: u64, | ||
| #[serde(default)] | ||
| external_processes: Vec<ExternalProcess>, |
There was a problem hiding this comment.
this new binary is already 1160 lines and mixes protocol definitions, collection, history retention, command dispatch, main loop, and tests. can we decompose this into protocol/collector/history/runtime modules first? a native sidecar is exactly where we need boring ownership boundaries, not a monolith.
| ); | ||
| } | ||
|
|
||
| export function ResourceTelemetryDiagnostics() { |
There was a problem hiding this comment.
this pushes a brand-new settings page to 1268 lines. formatters, history charting, process tables, source health cards, side effects, retry/kill actions, and confirmation UI should not all live in one component file. decompose this before landing; the 1k-line bar is not met.
| const start: ProviderCommandReactorShape["start"] = Effect.fn("start")(function* () { | ||
| const processEvent = Effect.fn("processEvent")(function* (event: OrchestrationEvent) { | ||
| if ( | ||
| (event.type === "thread.meta-updated" && event.payload.regenerateTitle === true) || |
There was a problem hiding this comment.
this adds another special-case event predicate into an already broad provider command reactor. title regeneration is metadata/text-generation work, not provider session command orchestration. can we move this behind a dedicated title-regeneration reactor so this switch/gate does not keep absorbing unrelated features?
| @@ -524,6 +681,272 @@ export function useSettingsRestore(onRestored?: () => void) { | |||
| }; | |||
| } | |||
|
|
|||
| function BackgroundActivityAdvancedDialog({ | |||
There was a problem hiding this comment.
this settings file was already huge, and the advanced background activity dialog adds another large feature island directly into it. extract the dialog and its repeated interval-row/update logic into a focused module; this works, but it makes the settings megafile more spaghetti.
| if (observation.method !== WS_METHODS.subscribeVcsStatus) { | ||
| return null; | ||
| } | ||
| const input = observation.input as { readonly cwd?: unknown }; |
There was a problem hiding this comment.
why does this boundary need to cast subscription input to { cwd?: unknown }? scope retention is now global mutable state keyed off loosely typed observations. make subscription-to-background-scope a typed adapter/helper instead of normalizing cast-heavy shape checks in the reporter.
| @@ -1161,6 +1218,7 @@ const SidebarV2Row = memo(function SidebarV2Row(props: { | |||
| /* fork:begin sidebar-v2-dev-server-pulse — see .fork/customizations.yaml#sidebar-v2-dev-server-pulse */ | |||
| devServerPort={devServerPort} | |||
| /* fork:end sidebar-v2-dev-server-pulse */ | |||
| terminalSlot={terminalStatusIcon} | |||
There was a problem hiding this comment.
this prop is inserted into the fork-owned card meta seam right beside fenced fork hunks, but it is unfenced. for this fork, inline edits in upstream files need the same fence/manifest discipline or the next sync cannot distinguish intentional custom glue from upstream drift.
Review: sync #38 (upstream v0.0.31, 315 files / +26,935 −4,680)Reviewed the fork-owned surface rather than the upstream commits, since those were reviewed upstream. Everything below was checked against the tree, not the PR description. Verified independently — these hold up
Findings1. 2. …and it's declared optional, while its sibling slot is required. 3. The call site at 4. 5. 6. Nit — the new imports break the file's alphabetical order. 7. CI is not green yet. On Non-issues, noted so they aren't re-litigatedBase is Verdict: the mechanical resolution is good and the risky file ( Generated by Claude Code |


Absorbs
upstream/mainthrough9dd425b22— the v0.0.31 release plus early v0.0.32-nightly work: content-based thread search (pingdotgg#4959), sidebar title regeneration (pingdotgg#4810), pasted-screenshot compression (pingdotgg#4967), the ~300MB desktop size reduction (pingdotgg#4824), native resource diagnostics (pingdotgg#2679), the T3 Connect sign-in restore (pingdotgg#4809), the claude-opus-5 model bump (pingdotgg#4832), and ~20 web/mobile fixes.Conflict resolutions (per manifest intents)
SidebarV2.tsx— kept the fork's three-line card body (sidebar-v2-card-rows) and ported upstream fix(web): restore sidebar v2 thread actions and terminal icon pingdotgg/t3code#4712's two card features into it: the terminal-status glyph now arrives as a newterminalSloton the fork-ownedSidebarV2ThreadCardMeta(repo line, after the branch cluster, mirroring upstream's reading order), and the title-regeneration sr-only status joins the fork's title line. Tooltip takes the union: fork'sdevServerLabel+ real-last-error rows alongside upstream's new terminal-process row. Dropped upstream's re-addedSquarePenIconimport (its usage site doesn't exist in the fork; the lint gate would flag it).ChatComposer.tsx— kept the fork'scomposerPrimaryActionSlotshell (fork-composer-shell) and threaded upstream's new requiredsendDisabledReasonprop through the slot and the mobile pending-actions call site.build-desktop-artifact.ts— kept the fork'sno3y-Code-*artifact name (fork-app-identity), took upstream's newelectronLanguages/filesexclusions (the 300MB shrink applies to fork builds too).pnpm-lock.yaml— regenerated from upstream's side viavp i; the fork's Geist/Phosphor deps re-resolved.Sync fallout fixed
ci-runnersmanifest paths follow upstream'sstashImageCompression→imageCompressionrename (the fenced timeout hunk survived the rename intact).Verified
SidebarV2ThreadCardMeta(18),imageCompression(30 incl. the fenced give-up path),build-desktop-artifact, desktop Clerk suite (12, incl. registrar suppression).tsgoclean onapps/webandapps/desktop;.fork/lint-owned.mjs: 55 files, no warnings;vp fmtclean.main.ts/DesktopClerk.tsverified intact next to upstream's T3 Connect sign-in restore.Also enabled Issues on this repo — the mirror's drift job had been failing its
[fork-drift]issue POST with HTTP 410 (Issues disabled, GitHub's fork default).Model: Claude Fable 5 · Harness: Claude Code
🤖 Generated with Claude Code