Skip to content

feat: manual VACUUM button in Settings and version in sidebar#79

Merged
mikemiles-dev merged 1 commit into
mainfrom
feat/vacuum-button-and-version
Jun 8, 2026
Merged

feat: manual VACUUM button in Settings and version in sidebar#79
mikemiles-dev merged 1 commit into
mainfrom
feat/vacuum-button-and-version

Conversation

@mikemiles-dev

Copy link
Copy Markdown
Owner

Adds a 'Database Maintenance' card to Settings with a 'Run VACUUM' button (admin only) that calls a new POST /api/admin/vacuum endpoint. The handler runs VACUUM and a truncating WAL checkpoint, returning size_before, size_after, and elapsed_ms so the UI can show how much space was reclaimed. Audit-logged as settings.vacuum.

Also exposes the controller version on /api/health as a new 'version' field, populated from CARGO_PKG_VERSION, and renders it as 'vX.Y.Z' in the sidebar footer under the existing health dot. Confirms at a glance which version is actually running — needed it to verify the 0.2.2-alpha redeploy on the demo and figured the UI should just show it.

Bumps version to 0.2.3-alpha.

@mikemiles-dev mikemiles-dev force-pushed the feat/vacuum-button-and-version branch from 405083f to 142412f Compare June 8, 2026 01:13
- Bump version to 0.2.3-alpha.
- Settings → Database Maintenance → 'Run VACUUM' button. POST
  /api/admin/vacuum runs VACUUM and a truncating WAL checkpoint, returning
  size_before, size_after, and elapsed_ms. Admin-only, audit-logged as
  settings.vacuum. New Db::vacuum() helper next to the existing purge_old_*
  methods in src/db/settings.rs.
- Controller version surfaced on /api/health via a new 'version' field
  from CARGO_PKG_VERSION, and rendered as 'vX.Y.Z' in the sidebar footer
  under the health dot.
- Pipelines page no longer stuck on 'Loading…' under auto-refresh.
  fetchGroupsPage wiped the grid and rendered the loader on every
  auto-refresh tick (every 5s), and the per-group pipeline-schedule
  lookups were sequential. Three layered fixes: only show the loader on
  initial load; skip a tick if the previous fetch is still in flight via
  a groupsFetchInFlight flag; parallelize per-group schedule fetches with
  Promise.all.
- CI security job: replace EmbarkStudios/cargo-deny-action@v2 with a
  direct 'cargo deny check' invocation. The action built its own Docker
  image on every run and was failing with 'Docker build failed with exit
  code 1'. Install cargo-deny via taiki-e/install-action and run directly.
- CI security job: replace rustsec/audit-check@v2 with a direct 'cargo
  audit' invocation. The action was failing after ~2m50s with 'Error:
  Unexpected end of JSON input' parsing cargo-audit output. Same fix
  pattern as cargo-deny — install via taiki-e/install-action and run
  cargo audit directly.
@mikemiles-dev mikemiles-dev force-pushed the feat/vacuum-button-and-version branch from 142412f to 7ca7dfa Compare June 8, 2026 01:15
@mikemiles-dev mikemiles-dev merged commit a021254 into main Jun 8, 2026
4 checks passed
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