playback namespace: replaced stale root-level 'playback' command with proper playback.play / playback.stop split. playback.play now documents all firmware attributes: pid, uid, name, url, speed, note_assignments, mode (single/timed/interval/infinite), duration, pause_duration, total_duration. clock namespace: filled in previously empty contents for set_timings (pulse_duration, pause_duration), set_alerts (alert_type, alert_interval, hour/half/quarter_bell outputs), set_backlight (backlight, backlight_output, backlight_on/off), set_silence (daytime and nighttime windows with HH:MM strings). Fixed clock.get_timezone returns (ntp_server field, removed non-existent timezone_name). Added exact returns shape for clock.get_face and full field list for clock.get_config matching handler output. system namespace: added exact returns shapes for system.status (player_status, time_elapsed_ms, projected_run_time, strike_counters) and system.health (critical_count, warning_count, firmware_stable, subsystems array). Legacy map: updated playback row to show play→playback.play and stop→playback.stop. UART whitelist updated to playback.play/stop. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.