Skip to content

Combined critique #36: split GamePlayerShell/DevtoolsOverlay/EditorChrome by ownership - #865

Merged
Noisemaker111 merged 1 commit into
mainfrom
claude/critique-36-split-god-components
Jul 16, 2026
Merged

Noisemaker111 merged 1 commit into
mainfrom
claude/critique-36-split-god-components

Conversation

@Noisemaker111

Copy link
Copy Markdown
Owner

Pure structural split of three god components by lifecycle/ownership boundary. No behavior, prop, or JSX-output change — every extracted concern moved verbatim into its own module; each top-level component is now a thin composition. The 10 games render/play identically.

packages/shell/src/GamePlayerShell.tsx — 2355 → 905

Concerns extracted:

  • Scene modelsrender/SceneModels.tsx (EntityModel + sprite/bone/part/material-map/fallback boundary).
  • Scene lightingrender/SceneLighting.tsx (ConfiguredLighting, BackdropFog, directional shadow light).
  • World sceneworld/WorldScene.tsx (WorldView/WorldActors/WorldEnvironment, EntityMarker/ObjectMarker, GroundPlane/RockField, RemotePlayers).
  • Sim driversdrivers/FrameDriver.tsx, drivers/HudOnlyDriver.tsx.
  • Runtime diagnosticsdiagnostics/RuntimeDiagnostics.tsx (DiagnosticOverlay, GameUiErrorBoundary, logRuntimeError, RuntimeDiagnostic).
  • Phase stampGamePhaseStamp.tsx.
  • Multiplayer sinkuseShellMultiplayerSync.ts (the join/presence/feed/chat effect as a hook).
  • Shared reserved-input constsshellConstants.ts.

packages/shell/src/devtools/DevtoolsOverlay.tsx — 1280 → 319

Split by panel ownership:

  • Per-tab panels → PerfPanel.tsx, LogsPanel.tsx, NetPanel.tsx, KeysPanel.tsx, ColPanel.tsx, TunePanel.tsx.
  • Shared UI atoms → panelAtoms.tsx; perf culprit diagnosis → perfDiagnose.ts; overrides persistence → devtoolsOverrides.ts.
  • Overlay keeps the report builders + probe + latency wrapper and composes the panels. Public exports (DevtoolsOverlay, DevtoolsRendererProbe, withDevtoolsLatency, buildLeanReport, buildFullReport, applyStoredDevtoolsOverrides, persistDevtoolsOverrides) unchanged — re-exported where moved, so agentBridge / apps/dev / GamePlayerShell imports are untouched.

packages/editor/src/EditorChrome.tsx — 1264 → 651

  • Terrain tool panelTerrainPanel.tsx (TerrainPanel + sculpt/paint controls + default-bounds helper).
  • Right-hand inspectorInspectorPanel.tsx (InspectorPanel + kind/generator/clearance/parent/color/vegetation field components + object adapters).
  • Reusable fieldschromeFields.tsx (NumberField, SliderRow); shared style constantschromeStyles.ts (BTN/INPUT/MICRO).
  • Chrome keeps toolbar, panels, keyboard handling, layout, save hook, and composes the two panels.

Output identical: extractions are verbatim moves with narrowed prop/return surfaces; the exported component APIs and rendered JSX are unchanged. No new dependencies.

Gate

  • bun install
  • bun run build
  • bun scripts/check-types-all.ts → 29/29 workspaces, 0 failing (baseline held) ✓
  • bun run test:all → 4503 pass, 1 skip, 0 fail ✓

Note for maintainer: run bun run gen:skill-api on a clean checkout if desired — no public component API changed, so skills were not regenerated here.


Generated by Claude Code

…rome by ownership

Pure structural split — no behavior, prop, or JSX-output change.

GamePlayerShell.tsx 2355->905: extract scene models, scene lighting,
world scene (markers/env/actors/view/remote), FrameDriver, HudOnlyDriver,
runtime diagnostics, GamePhaseStamp, multiplayer-sync hook, shared consts.

DevtoolsOverlay.tsx 1280->319: extract per-tab panels (Perf/Logs/Net/Keys/Col/Tune),
shared atoms, perf diagnose, overrides persistence; overlay now composes them.

EditorChrome.tsx 1264->651: extract TerrainPanel, InspectorPanel, shared
field components and style constants.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
jgengine-web Skipped Skipped Jul 16, 2026 1:48pm

@Noisemaker111
Noisemaker111 merged commit 83fcd17 into main Jul 16, 2026
8 checks passed
@Noisemaker111
Noisemaker111 deleted the claude/critique-36-split-god-components branch July 16, 2026 13:51
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.

2 participants