Files
RFP_Infinity-Vis/Infinity_Vis_1/FEATURE_INVENTORY.md

125 lines
2.9 KiB
Markdown

# Current Feature Inventory
This inventory was collected from the current `app/` codebase and is the scope
target for the clean rebuild.
## Core control flow
- Mapping/project open, save, and save-as
- Startup auto-load of sample mapping
- Live scene and Next scene
- FOH mode with `Go` and `Fade Go`
- Tempo transport and transition time control
- Utility modes such as blackout and single-tile white test
## Pattern system
Current built-in patterns:
- `solid`
- `checker`
- `row_gradient`
- `column_gradient`
- `center_pulse`
- `sparkle`
- `breathing`
- `wave_line`
- `scan`
- `arrow`
- `scan_dual`
- `sweep`
- `saw`
- `two_dots`
- `strobe`
- `stopwatch`
- `snake`
Pattern parameter surface in the current app includes:
- brightness
- fade / smoothing
- tempo multiplier
- direction
- checker mode
- scan style and angle
- on/off width
- band thickness
- flip horizontal / vertical
- strobe mode and duty cycle
- stopwatch mode
- color mode
- primary / secondary colors
- palette
- symmetry
- center pulse mode
- step size
- block size
- pixel group size
- randomness
## Preview and UI
- Main desktop Qt window
- Pattern panel
- Preset browser
- Tile preview / technical preview / LEDs-only preview
- Fullscreen preview window
- Selected tile panel
- Utility controls
- Output diagnostics panel
## Mapping and editing
- XML mapping load/save/validation
- Tile table editing
- Segment table editing
- Raw XML editor
- Calibration and enable flags per tile
- Controller IP / host / name / MAC metadata persistence
## WLED-assisted mapping
- Network scan for WLED devices
- Device discovery via `/json/info` and `/json`
- Per-device identify action
- Tile assignment workflow inside Mapping Settings
- Immediate persistence back to the mapping file
## Presets
- JSON-backed preset storage
- Seed presets on first run
- Save, load, and delete presets
## Output
- Preview backend
- DDP backend for WLED
- Art-Net backend seam
- Output enable/disable
- Output FPS target
- Render FPS / Send FPS / Output health diagnostics
- Controller-side FPS polling for WLED live mode
## Performance pain points in the current code
- A lot of per-frame object churn:
- `PreviewFrame`
- `TileFrame`
- `TilePatternSample`
- many `RGBColor` instances
- nested `dict[str, list[RGBColor]]` payloads
- Per-frame rebuilding of LED pixel lists for each segment
- Preview and output coordination still centered around one controller loop
- Multiple render engines and transition helpers duplicating state
- DDP payload generation starts from nested Python objects instead of a compact frame buffer
## Rebuild priorities for Infinity_Vis_1
- fixed-size runtime state
- lower per-frame allocation
- preview cadence separated from hardware output cadence
- controller-first payload generation
- shared-IP multi-tile controller topology as a first-class concept
- clean feature layering so UI, preview, render, and output can scale independently