sova-devtools
In-app DevTools for Sova — bottom bar on HTML pages, SSE site-wide timeline, request snapshots (DB / logs / HTTP / mail / session).
Guide: https://s00d.github.io/sova/plugins/devtools
Enable with SOVA_DEVTOOLS=1 or [development.devtools] enabled = true. Default: on in debug builds.
On install the plugin calls logger_skip_path("/_devtools") so the panel does not flood access logs. Apps can skip other paths with sova::logger_skip_path("/healthz"). Console/tracing lines show up under Logs (and on the request snapshot when request_id is present).
Frontend
UI lives in ui/ (Vite + Vue 3 + Tailwind CSS + Vue Router + Pinia + TypeScript + Lucide).
Visual: Symfony-style chip toolbar + Clockwork master-detail panes (IBM Plex, Lucide).
Playground (UI only): npm --prefix plugins/sova-devtools/ui run playground — viewport 375/768/1280 + mock fixtures.
Shipped: custom EventBus feed (hub.emit + auth/mail forwards), memory profiler v2 (cross-platform RSS, peak/min summary, live SSE).
Backlog: AJAX XHR timeline, OTel deep link, jemalloc flamegraph.
Embedding model
- Each HTML page gets a tiny
bridge.js(status bar only). - The full panel is the SPA at
/_devtools/app:- Dock — iframe toggled by the status bar (open state only in
sessionStorage). - New tab — button opens
/_devtools/appin a new browser tab; does not change dock behavior.
- Dock — iframe toggled by the status bar (open state only in
Built assets are committed under assets/ and embedded via include_str!.
License
MIT — see LICENSE.