Skip to content

feat: serve dashboard and persist statistics - #13

Merged
jaromil merged 1 commit into
masterfrom
feat/embed-dashboard
Sep 5, 2026
Merged

jaromil merged 1 commit into
masterfrom
feat/embed-dashboard

Conversation

@jaromil

@jaromil jaromil commented Sep 5, 2026 •

Copy link
Copy Markdown
Member

Summary

  • embed the complete dashboard/ tree and serve it at /dashboard
  • inject the running server's configured statistics endpoint into the dashboard
  • add optional native persistence through --stats-state or STATS_STATE_PATH
  • validate and restore the retained seven-day history and cumulative counters at startup
  • checkpoint to an atomic mode-0600 file every minute and after request processing stops during graceful shutdown
  • preserve invalid state files unchanged while allowing the server to start with empty statistics
  • configure the container image to use /run/conspire/stats.json and document named-volume/systemd state directories

Chart.js remains the dashboard's existing CDN dependency.

Verification

  • static GCC/musl make build with ccache
  • cmake --build --preset native-gcc && ctest --preset native-gcc — 3/3 passed
  • npm run test:e2e — 4/4 passed, including a real two-process persistence restart
  • npm run test:e2e:browser — passed
  • npm run check:web — 14/14 passed
  • npm run coverage:browser — 95% lines, 93.94% branches
  • ./scripts/check-release-contract.sh
  • ./scripts/container-smoke.sh --verify-only
  • ./scripts/run-static-analysis.sh

Known toolchain note

The optional Clang preset is still blocked by oatpp 1.4 variadic macros triggering Clang 19 C++20-extension diagnostics under -Werror; the GCC/native and release GCC/musl paths pass.

@jaromil
jaromil merged commit b8eedff into master Sep 5, 2026
5 checks passed
@jaromil jaromil changed the title feat: serve embedded dashboard feat: serve dashboard and persist statistics Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant