Commit Graph

119 Commits

Author SHA1 Message Date
Claude
82995de95a feat(ui): hide device management behind ⚙ MANAGE toggle — form and remove buttons only shown when active 2026-04-05 20:59:35 +00:00
Claude
a024e762c0 test(01): persist human verification items as UAT 2026-04-05 20:17:47 +00:00
Claude
57e40b2be2 docs(01-04): complete device CRUD UI and CSS fix plan — SUMMARY, STATE, ROADMAP, REQUIREMENTS updated
- Close DEV-03: add-device form, POST/DELETE wired, remove buttons on device rows
- Close UI-02: --accent canonical CSS variable, panel IDs all present
- Phase 01 foundation: 4/4 plans complete
2026-04-05 20:15:04 +00:00
Claude
2ff35f9628 feat(01-04): fix CSS variable naming — add --accent as canonical source of truth
- Add --accent: #00ffff as canonical variable in :root
- Make --border-bright and --text-accent aliases of var(--accent)
- Add .device-form styles: flex column, gap, border-top separator
- Add .device-remove styles: borderless, hover red
- Update .device-row to flex row with justify-content: space-between for remove button
- Add .device-row-info for name/metadata stack within each row
2026-04-05 20:13:19 +00:00
Claude
ccc40c8721 feat(01-04): add device CRUD UI — form, POST, DELETE, remove buttons
- Add <form id='add-device-form'> to DEVICES panel with 5 inputs (name, strip_type, led_count, ip, port) and submit button
- Add apiPost() and apiDelete() helper functions to app.js
- Update loadDevices() to render device rows with remove button (.device-remove)
- Add removeDevice(id) function with DELETE /api/devices/{id} + window export for onclick
- Add form submit handler: POST /api/devices, form reset, refresh device list
- Add panel IDs: devices-panel, animations-panel, timeline-panel, transport-panel to index.html
2026-04-05 20:12:44 +00:00
Claude
e95e4748fc docs(01-04): add gap-closure plan for device CRUD UI and CSS fixes
Closes 2 gaps from VERIFICATION.md:
- DEV-03: add-device-form + POST/DELETE handlers in app.js
- UI-02: --accent CSS variable rename + panel IDs in index.html

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:02:11 +00:00
Claude
ab162fb244 docs(01): create gap closure plan 01-04 — device CRUD UI + CSS variable fix 2026-04-05 20:01:48 +00:00
Claude
af1100a850 docs(01-03): complete integration and deployment plan — SUMMARY, STATE, ROADMAP, REQUIREMENTS updated 2026-04-05 19:00:58 +00:00
Claude
a21962cbcf feat(01-03): integration wiring, Docker deployment, lightsync.groll.cloud
- Fix API routing: redirect_slashes=False + strip trailing slashes from route paths
- Fix StaticFiles catch-all intercepting /api/* before FastAPI redirect
- Add [tool.hatch.build.targets.wheel] to pyproject.toml for Docker builds
- Install docker-compose plugin (v2.34.0) as CLI plugin
- Create Dockerfile (python:3.11-alpine, CMD python -m lightsync)
- Create docker-compose.prod.yml (Traefik + Authelia, edge network)
- Deploy lightsync container to lightsync.groll.cloud
- Add LightSync entry to start/projects.json
- Update frontend app.js to use /api/devices (no trailing slash)
2026-04-05 18:59:34 +00:00
Claude
9f3a2fc7a1 docs(01-02): add frontend shell summary — built as part of 01-01 2026-04-05 18:50:32 +00:00
Claude
dd5a1b22fd docs(01-01): complete backend scaffold plan — SUMMARY, STATE, ROADMAP, REQUIREMENTS updated
- Created 01-01-SUMMARY.md with full accomplishment record
- STATE.md: advanced to plan 2/3, progress 33%, added 3 key decisions
- ROADMAP.md: Phase 1 updated to 1/3 summaries (In Progress)
- REQUIREMENTS.md: marked INF-01, INF-02, DEV-01, DEV-02, SHW-01, SHW-02 complete
2026-04-05 18:49:37 +00:00
Claude
5e10272c69 feat(01-01): create device registry, show store, FastAPI app, API routes, and frontend shell
- DeviceRegistry with load/save/add/remove/instantiate and _DEVICE_CLASSES dict
- ShowStore with save/load/list_ids using aiofiles for async I/O
- FastAPI app with lifespan hook (startup: load registry/store, shutdown: save registry)
- API routes: GET/POST /api/devices/, DELETE /api/devices/{id}, GET/POST /api/shows/, GET /api/shows/{id}
- WebSocket stub at /ws with ConnectionManager and ack echo
- Frontend shell: DAW layout with header, sidebar (DEVICES + ANIMATIONS), TIMELINE, TRANSPORT
- Terminal aesthetic: dark theme, cyan accents, monospace fonts, no drop shadows
- .gitignore for runtime data (devices.json, shows/, __pycache__, .venv)
2026-04-05 18:47:25 +00:00
Claude
061edfcf6a feat(01-01): create package structure, Pydantic models, and device abstractions
- pyproject.toml with FastAPI, uvicorn, Pydantic v2, aiofiles, structlog deps
- DeviceConfig Pydantic model with StripType, UUID, validation constraints
- ShowModel with AudioRef, TrackModel, CueModel, AnalysisBlock, schema_version=1
- BaseDevice ABC with encode_frame, encode_animation_cmd, bytes_per_pixel
- SK6812Device (4 bytes/pixel) and WS2801Device (3 bytes/pixel) implementations
2026-04-05 18:45:19 +00:00
Claude
5721bef791 docs(01-foundation): create phase plan — 3 plans in 2 waves 2026-04-05 18:40:20 +00:00
Claude
519849e855 docs(01): research phase 1 foundation — FastAPI, Pydantic v2, device ABC, terminal CSS 2026-04-05 18:34:54 +00:00
Claude
15c8d3e544 docs(01): add phase 1 context — project structure and UI shell decisions 2026-04-05 18:23:10 +00:00
Claude
8b7c0b87ad docs: add requirements, roadmap, and initial state
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 18:03:01 +00:00
Claude
6e05abe7a8 docs: add domain research — stack, features, architecture, pitfalls 2026-04-05 17:59:51 +00:00
Claude
3d756129fa chore: initialize project — LightSync config and PROJECT.md 2026-04-05 17:51:10 +00:00