Files
MultiRoombaRover/rulesdocs/refector_rules_and_tracking.md
T
2026-04-28 14:55:12 -04:00

4.7 KiB

REFACTOR RULES

  • Do NOT change ANY functionality. All changes must be purely internal refactors.
  • Refactor for simplification and maintainability.
  • Remove unused files/code only when verified unused.
  • No backwards compatability is needed anywhere. Clients and the server are both always up to date.
  • Keep behavior/API contracts unchanged.

Required safety checks for every change

  • Preserve imports/exports and call signatures unless internal-only and non-observable.
  • Validate no runtime behavior changes (manual flow checks + targeted tests when available).
  • Make small, reviewable commits per service/component area.
  • Treat npm run build output files committed into this repo as intentional deployment artifacts; do not discard them as noise.

Server backend

  • Every service must live in its own folder, even when it remains a single-file implementation.
  • Convert every service into a folder-based structure.
  • Split very large service files into smaller focused modules.
  • Keep files concise and single-purpose.
  • Add clear title comments at top of split files.

WebUI frontend

  • Every component must live in its own folder, even when it remains a single-file implementation.
  • Split large JSX/components and large backing JS files into folderized modules.
  • Keep modules clear and focused, with title comments.
  • Each component must live entirely inside its own folder; do not leave wrapper/compatibility component files outside that folder.
  • Remove stale compatibility/leftover code only after usage verification.

REFACTOR TRACKING

Current phase

  • Phase 1: Inventory + usage mapping (server + webui)
  • Phase 2: Refactor highest-impact offenders first
  • Phase 3: Sweep remaining services/components
  • Phase 4: Dead code/file removal pass
  • Phase 5: Final regression validation

Server backend

BIGGEST OFFENDERS

  • audio forward service
  • button box service
  • chat service
  • discord bot service
  • home assistant service
  • llm commentary service
  • private rover access request service
  • replay services (already partly split; reformat consistently)
  • room camera services (already partly split; reformat consistently)
  • rover manager service
  • session service
  • turn service
  • verification service
  • video auth service
  • All remaining services: reorganize to folder structure where needed

COMPLETED SERVICES

  • None yet.

LARGE CHANGES

  • None yet.

WebUI frontend

BIGGEST OFFENDERS

  • mini summary app
  • spectator app
  • vip audio upload card
  • admin panel
  • drive dock action
  • gamepad mapping settings
  • mobile controls
  • top down map
  • video tile
  • Sweep webui for unused or unneeded files/code with verification

COMPLETED COMPONENTS

  • mini summary app
  • spectator app
  • video tile
  • vip audio upload card
  • admin panel
  • drive dock action
  • gamepad mapping settings
  • mobile controls

LARGE CHANGES

  • Split webui/src/mini/MiniSummaryApp.jsx into folderized modules under webui/src/mini/MiniSummaryApp/ with a compatibility entrypoint preserved.
  • Split webui/src/spectate/SpectatorApp.jsx into folderized modules under webui/src/spectate/SpectatorApp/ with a compatibility entrypoint preserved.
  • Split webui/src/components/VideoTile.jsx by extracting HUD, overlays, chat input, and constants into webui/src/components/VideoTile/ while preserving the existing VideoTile.jsx public component API.
  • Split webui/src/components/vip/VipAudioUploadCard.jsx by extracting transport/audio helpers and UI atoms into webui/src/components/vip/VipAudioUploadCard/ while preserving the existing VipAudioUploadCard.jsx import/export API.
  • Split webui/src/components/AdminPanel.jsx into webui/src/components/AdminPanel/ and extracted monitor/health/log/LLM helper modules; updated consumers to folder entrypoint and removed external wrapper file.
  • Moved DriveDockAction to webui/src/components/DriveDockAction/index.jsx and updated all consumers to folder entrypoint imports.
  • Split webui/src/components/GamepadMappingSettings.jsx into webui/src/components/GamepadMappingSettings/ with extracted constants/helpers/SliderField modules and removed the standalone component file.
  • Split webui/src/components/MobileControls.jsx into webui/src/components/MobileControls/ with extracted joystick/aux/constants modules; preserved named exports and moved app import to folder entrypoint.

Done criteria (per item)

  • Folderized structure created.
  • Large functions extracted into focused files.
  • Imports/exports updated with no external behavior change.
  • Verified references/usages still resolve.
  • Passed targeted checks/tests for touched area.