P6-03 repo size trend + agent-update UI fix + dashboard polish #21

Merged
steve merged 17 commits from tidy-up-last-backup-projection into main 2026-05-07 23:00:04 +01:00

17 Commits

Author SHA1 Message Date
steve 1b9b23f205 smoke env: systemd --user unit + Make targets so the dev server outlives shell tool boundaries
CI / Test (rest) (pull_request) Successful in 46s
CI / Test (store) (pull_request) Successful in 1m34s
CI / Test (server-http) (pull_request) Successful in 1m46s
CI / Build (linux/amd64) (pull_request) Successful in 23s
CI / Build (windows/amd64) (pull_request) Successful in 41s
CI / Build (linux/arm64) (pull_request) Successful in 23s
CI / Lint (pull_request) Successful in 2m9s
Spent half an evening fighting a smoke server that kept getting SIGTERM'd
mid-iteration. Root cause: backgrounded processes spawned from sandboxed
shell tool calls don't outlive the parent — even with nohup + disown.

Fix: hand the server to user-systemd as a transient unit so its lifecycle
is owned by the user's session, not by whichever bash subprocess started it.
New Make targets:

  make smoke-restart   build server + (re)launch as systemd --user unit
  make smoke-status    show unit status
  make smoke-logs      tail $HOME/smoke/server.log
  make smoke-stop      stop the unit
  make smoke-deploy    full rebuild + restage agent assets + restart

Documents the workflow in CLAUDE.md so the next session doesn't relitigate.
2026-05-07 22:55:36 +01:00
steve c4dc9e9119 ui+store: dashboard polish — repo size projection + header alignment
- Project total_size_bytes onto hosts.repo_size_bytes inside the
  UpsertHostRepoStats transaction. The hosts row column has been
  unwritten since the initial schema in 0001, so the dashboard's
  Repo size cell has always rendered '—' even after backups. Now
  the column updates atomically alongside the host_repo_stats row,
  and FleetSummary's SUM(repo_size_bytes) becomes accurate too.
- Right-align the Alerts column header so it sits over its
  right-aligned value (was floating left of column, ambiguous).
- Add text-ink-mid to the 30d trend / Alerts / Tags headers so all
  column headers share the same brightness.
2026-05-07 22:55:21 +01:00
steve 7011510092 ui: chart polish — rotated y-axis labels, wider viewBox, single-day fallback
- Add rotated 'Size' (left) and 'Snapshots' (right) axis titles in
  the chart's outer margins so the two y-axes are self-describing.
- Bump the chart viewBox from 600x220 to 640x220 and lift padL from
  56 to 72 so the rotated labels and byte tick numbers don't crowd.
- Dedupe the X-axis labels for short windows (1 or 2 days collapsed
  the start/mid/end indices onto each other, stacking 'May 7' three
  times); the 1-day case now centres a single label, 2-day uses
  start+end only.
- Pin a lone data dot to the chart centre instead of the left edge
  when len(days)==1, so it sits under the centred date label.

Goldens regenerated.
2026-05-07 22:55:12 +01:00
steve 42eeabea9a ui: per-host Jobs sub-tab; drop unused Settings stub
Adds /hosts/{id}/jobs page listing recent jobs for the host (newest
first, capped at 100) with click-through to /jobs/{id}. Converts the
Jobs placeholder <div> to a real <a> nav link; removes the Settings
stub entirely. Also registers durationHuman template func and a
.jobs-row CSS grid to match the existing .schd-row idiom.
2026-05-07 22:49:10 +01:00
steve 7b390e9e5e ws: synthesize job.finished from update watcher so browser stream wakes up 2026-05-07 20:32:48 +01:00
steve afd15c6990 tasks: P6-03 done, repo size trend graphs 2026-05-07 19:20:05 +01:00
steve 2562b2c7b5 test: assert Trend panel renders on full repo page 2026-05-07 19:14:34 +01:00
steve 8be551349c ui: trend panel + range selector on host repo page 2026-05-07 19:10:59 +01:00
steve a48df77f40 ui: 30d repo-size sparkline on every dashboard host row 2026-05-07 19:02:35 +01:00
steve 70769f0841 web/sparkline: guard days[i] against shorter days slice in RenderChart 2026-05-07 18:58:33 +01:00
steve ea74965830 web/sparkline: two-axis trend chart with hover dots 2026-05-07 18:55:31 +01:00
steve 9c209a952e web/sparkline: inline-SVG sparkline renderer (empty / single / multi) 2026-05-07 18:50:23 +01:00
steve 871490b9d4 ws: record daily repo stats history alongside current upsert 2026-05-07 18:46:26 +01:00
steve d317d2e561 store: history table helpers (upsert/list, COALESCE preserves prior values) 2026-05-07 18:43:20 +01:00
steve 00bfef0aee store: migration 0023 host_repo_stats_history 2026-05-07 18:39:44 +01:00
steve 363bdff85b plan: P6-03 repo size trend implementation 2026-05-07 18:15:06 +01:00
steve 20425b3360 spec: P6-03 repo size trend (sparkline + chart) design 2026-05-07 18:09:25 +01:00