125 lines
2.9 KiB
Markdown
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
|