2.9 KiB
2.9 KiB
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
GoandFade Go - Tempo transport and transition time control
- Utility modes such as blackout and single-tile white test
Pattern system
Current built-in patterns:
solidcheckerrow_gradientcolumn_gradientcenter_pulsesparklebreathingwave_linescanarrowscan_dualsweepsawtwo_dotsstrobestopwatchsnake
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/infoand/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:
PreviewFrameTileFrameTilePatternSample- many
RGBColorinstances - 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