Problem
Generic BLE LED strips often ship with closed or mobile-only vendor apps. This utility talks to compatible strips from Chromium on HTTPS with runtime protocol tuning.
Frontend work
- Petite-Vue reactive UI with iro.js color wheel and responsive glassmorphism layout
- Web Bluetooth pairing, GATT discovery, throttled writes, and serialized command chain
- Pluggable protocol profiles, channel order, and debug panel with storage CRUD
- Accessibility hooks: aria-live, aria-label, labeled inputs
Backend & system work
- No backend — GitHub Actions CI with zero npm install static tests
- GitHub Pages deploy publishes `src/` directly with no build step
Key decisions
- Single HTML file with no build step for trivial static hosting and direct device control
- Throttled and serialized BLE writes to avoid overlapping GATT operations
Challenges
- Web Bluetooth requires HTTPS, user gesture, and Chromium — with clear unsupported-context warnings
- Protocol fragmentation across command families, channel orders, and write modes
- Characteristic discovery across many known service/characteristic pairs
Tech stack
Frontend
- HTML5
- Petite-Vue
- Tailwind CSS (CDN)
- iro.js
- Font Awesome
Infrastructure
- GitHub Pages
- GitHub Actions
Testing
- Node.js built-in test runner
Browser APIs
- Web Bluetooth
- localStorage
- Clipboard API