refactor(web): keep feature component helpers private#10226

merged1
cleanup-web/runtime-internals
cleanup-web/component-internals
openedSep 5, 2026byJJulius Marminge
View on GitHubTwo-way sync enabledPR last imported 3d ago

App feature modules export constants, helpers, and local components that no other module imports. Make those declarations private and remove stale re-exports and two unused helpers.

Keep the lazy-loaded PullRequestCodeTab default export, the project settings entry point, and existing behavior tests. Remove duplicate provider metadata exports while retaining the aliases callers use. Core UI component modules are outside this layer and remain intact.

Layer 2 of 4 in the web runtime-export cleanup stack. Based on #10225.

Verification at the integrated stack tip: vp run --filter @t3tools/web test passes all 4,052 tests across 333 files. Web typecheck and changed-file lint/format pass. vp run knip:check passes. A negative probe confirmed that a wholly unused components/ui/*.tsx file still fails the file audit.

Model: gpt-6 astra. Harness: Codex in T3 Code.

Note

Make apps/web feature component helpers, constants, and components module-local

  • Removes or narrows exports across ~25 web feature modules so helpers, constants, and components stay private to their defining file. Values, props, rendering, and logic are unchanged.
  • Deletes dead exports with no remaining callers: parseTimestampMs in Sidebar.logic.ts and the plural ComposerPendingTerminalContexts component plus its props interface in ComposerPendingTerminalContexts.tsx.
  • Stops cross-module re-exports: DiffWorkerPoolProvider from DiffPanel.tsx and summarizeToolGroup from MessagesTimeline.logic.ts.
  • Risk: any out-of-tree code importing these now-private symbols will fail to compile; in-tree imports were already module-local or have been removed.

Macroscope summarized dec7d74.

Synced from GitHub

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire—13.5 KiB—15.1 KiB✅
CodexThread snapshot wire—7.0 KiB—7.3 KiB✅
CodexLive turn WebSocket wire—6.5 KiB—7.8 KiB✅
CodexLive turn WebSocket decoded—57.0 KiB—66.4 KiB✅
CodexLive turn messages—8—21✅
ClaudeTotal thread wire—13.5 KiB—15.1 KiB✅
ClaudeThread snapshot wire—7.0 KiB—7.3 KiB✅
ClaudeLive turn WebSocket wire—6.5 KiB—7.8 KiB✅
ClaudeLive turn WebSocket decoded—57.8 KiB—66.4 KiB✅
ClaudeLive turn messages—8—21✅

Baseline: unavailable · PR result: dec7d74 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.8 KiB
  • Claude decoded thread snapshot: 114.5 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Synced from GitHub

Approvability

Verdict: Approved at dec7d74

Macroscope's review found this PR approvable — This is an internal web-module cleanup that narrows unused exports without changing implementation logic or existing runtime paths. Repository-wide usage checks found no affected consumers, and no product defaults, schemas, deployment settings, or static-analysis suppressions are involved.

You can add or adjust custom eligibility rules. Learn more.

Added 1 commit

  • refactor(web): keep component implementation helpers privatedec7d74