mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-15 17:12:59 -04:00
97 lines
4.4 KiB
Markdown
97 lines
4.4 KiB
Markdown
# 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
|
|
- [x] 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
|
|
- [x] mini summary app
|
|
- [x] spectator app
|
|
- [x] vip audio upload card
|
|
- [x] admin panel
|
|
- [x] drive dock action
|
|
- [x] gamepad mapping settings
|
|
- [ ] mobile controls
|
|
- [ ] top down map
|
|
- [x] 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
|
|
|
|
### 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.
|
|
|
|
## 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.
|