feat: plan viewer, UI API extension, app home, help and docs #5

Merged
KofTwentyTwo merged 2 commits from feature/plans-and-home into develop 2026-10-15 17:12:51 +00:00
KofTwentyTwo commented 2026-10-15 17:10:08 +00:00 (Migrated from github.com)

Phase C of docs/SPEC.md (sections 7, 8, 10).

  • Plan viewer: ExplainService and the Query plan record action. Plain EXPLAIN, or EXPLAIN (GENERIC_PLAN) for parameterized statements (PG 16+). EXPLAIN (ANALYZE, BUFFERS) only for a single SELECT/WITH without data-modifying CTEs, in a READ ONLY transaction with SET LOCAL statement_timeout, always rolled back, behind db_performance.explain_analyze. Every request audited in db_perf_explain; ANALYZE plans and parameter values never stored. Results carry the SQL Workbench link and an assistant prompt (normalized SQL + plan only).
  • UI API extension db-performance 1.0.0 at /qqq/v1/qbit/db-performance: GET overview, GET activity (live; raw SQL only with view_live_text), POST explain, GET statements/lookup (SQL Workbench -> query history). Committed OpenAPI fragment + contract test.
  • App home: Setup, Database time, Top queries, Findings, Live activity, Connections, QQQ attribution, Tables; typed widget data, full width, guided empty states.
  • Help bundle help/qbit-db-performance.yaml with HelpBundleAssertions coverage; README, CHANGELOG, UPGRADE.

Tests: 86 incl. PostgreSQL 17 (explain safety: writes via ANALYZE rejected or fail read-only, timeout, permissions). Implementation by Codex, reviewed and merged with develop by Claude.

🤖 Generated with Claude Code

Phase C of docs/SPEC.md (sections 7, 8, 10). - Plan viewer: `ExplainService` and the **Query plan** record action. Plain EXPLAIN, or `EXPLAIN (GENERIC_PLAN)` for parameterized statements (PG 16+). `EXPLAIN (ANALYZE, BUFFERS)` only for a single SELECT/WITH without data-modifying CTEs, in a READ ONLY transaction with `SET LOCAL statement_timeout`, always rolled back, behind `db_performance.explain_analyze`. Every request audited in `db_perf_explain`; ANALYZE plans and parameter values never stored. Results carry the SQL Workbench link and an assistant prompt (normalized SQL + plan only). - UI API extension `db-performance` 1.0.0 at `/qqq/v1/qbit/db-performance`: `GET overview`, `GET activity` (live; raw SQL only with `view_live_text`), `POST explain`, `GET statements/lookup` (SQL Workbench -> query history). Committed OpenAPI fragment + contract test. - App home: Setup, Database time, Top queries, Findings, Live activity, Connections, QQQ attribution, Tables; typed widget data, full width, guided empty states. - Help bundle `help/qbit-db-performance.yaml` with HelpBundleAssertions coverage; README, CHANGELOG, UPGRADE. Tests: 86 incl. PostgreSQL 17 (explain safety: writes via ANALYZE rejected or fail read-only, timeout, permissions). Implementation by Codex, reviewed and merged with develop by Claude. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.