- CrashDetail (components/shared): headline is abort_msg when present, else the Xtensa exception name. For aborts, pc/exception/fault address are shown muted with a note that they describe abort() and that the first 2-4 frames are abort internals. Shows task, uptime at crash, heap stats with a "likely heap exhaustion / fragmentation" badge (largest_block < 12000 or free_heap < 25000, F-055), PC + backtrace as 0x%08X in ESP serial format, a copyable addr2line command (PC, backtrace, then the PC parsed from "abort() was called at PC ..."), elf_sha256, and a backtrace-corrupted flag. When the server has the build's ELF and addr2line, a Decode button shows function + file:line per frame. - Health tab boot history uses it, previews the headline in the row, and gets a "Sync from device" button (telemetry.get_boot_history, merged server-side). - New /devices/crashes page (linked from the Fleet header): crashes grouped across devices with per-device counts and the latest occurrence. - Firmware release modal: optional firmware.elf attachment. - API reference: boot_report payload documents the F-070 fields. - lib/crashReport.js holds the parsing/formatting rules; lib/clipboard.js a copy helper with a non-secure-context fallback. Co-Authored-By: Claude Opus 5.5 <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.