feat: surface the pinned container image in the CLI and UI - #486
Conversation
Add a VERSION column to `blackfish ls` and `blackfish batch ls` showing the image tag, and the full repo:tag to `blackfish details`. Both tables are already near terminal width, so they show the tag only. Add an Image row to the service summary and the batch job details panel, falling back to a dash where no image was recorded (rows predating image_ref, or never launched). Give Memory its own CircleStackIcon, since Image now uses the cube. Closes #481.
Give revision the same monospace, truncated treatment as model and image, and widen the cutoff from 200px to 320px. A commit SHA (~264px) and a full image reference (~271px) both truncated at the old width, with 768px of panel to spare.
ReviewClean, well-scoped change — presentation-only as described, and the reasoning in the PR body (column widths, Test coverage gap
Minor: duplicated tag-parsing logic
Everything else looks solid
No security or performance concerns — this is read-only display of existing data. |
The CLI commands that call it are pragma: no cover, so this is the only place the tag/dash/fallback branches can be verified.
|
Triage of the automated review: Addressed — no unit test for Not actioned — tag-parsing duplicated in 924 tests passing; lint and MyPy strict clean. |
Summary
VERSIONcolumn toblackfish lsandblackfish batch lsshowing the image tag, and the fullrepo:tagtoblackfish details <id>. Tag only in the tables becausebatch ls --allalready renders at 141 chars — past a standard 120-wide terminal — and the full reference would add ~45 more. NamedVERSIONrather thanIMAGEsinceIMAGEin the services table already means the service type (text_generation).image_refis NULL for anything created before the migration or never launched, so every site falls back to a dash. Memory gets its ownCircleStackIcon, since Image now uses the cube it was previously sharing.image_ref(full ORM objects, no DTO), and every CLI command fetches over the HTTP API — so no backend, serializer, or migration work was needed.Second commit aligns the job-detail value rows:
revisionnow gets the same monospace/truncated treatment as model and image, and the cutoff widens 200px → 320px. Attext-xsmonospace a commit SHA is ~264px and a full image reference ~271px, so both were truncating at a width originally sized forrepo_id(~152px), inside a 768px panel.Part of #212. Follow-ups:
GET /api/imagesdiscovery (#482) and the launcher selectors (#483).Test plan
uv run just lint/just test— 923 passed, 7 skipped; MyPy strict clean. Coverage unchanged at 70%.npm run lint/npm test— 513 passed, 0 lint errors (one pre-existing warning in an untouched file).title, and a dash when unset; the job panel shows the row for a pinned job and omits it when nothing was recorded.ServiceSummarysnapshots updated — reviewed the diff to confirm it is purely the added row, in both the loaded and no-profile branches.Worth noting: two existing services already show
v0.20.0because they were launched after #480 merged — the backfill populated them in normal use, so this confirms the record is being written as well as displayed.-rather thanNoneor an empty cell.Closes #481.