sova-devtools 0.1.6

In-app DevTools bar for Sova (HTML inject, SSE timeline, request snapshots)
Documentation

crates.io docs.rs License

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

cargo add sova --features "web,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/app in a new browser tab; does not change dock behavior.
npm --prefix plugins/sova-devtools/ui ci
npm --prefix plugins/sova-devtools/ui run build

Built assets are committed under assets/ and embedded via include_str!.

License

MIT — see LICENSE.