ui: ModelCard tweaks + replace dummy-run fixture with live dev snapshot#24
Merged
Merged
Conversation
ModelCard:
- Move Metrics out of the always-visible header pill row and into the
click-expand action area as a "Metrics Dashboard" button next to
OpenWebUI. Same shape, same affordance — both are model actions.
- Open-in-OpenWebUI button restyled to bg-black for a quieter primary.
- Header device line replaces a flat distinct-device list with a
topologySummary() across replicas: if every replica has the same
shape (almost always), show it once ("2 nodes × 4x NVIDIA GH200");
if they differ, show "Various" rather than picking one to display.
Dummy-run fixture:
- Replace the synthesised dnt_table_upgraded.json (which generated
artefacts like x10 replica counts and a 43-replica total) with a
live dev-mesh snapshot dnt_table_dev_live.json. 11 real peers
including multi-node replicas — exercises the topology summary,
shared-worker_group_id grouping, and the new framework_args /
expires_at labels. The synthesised fixture stays on disk for the
build_upgraded.py generator + unit tests that depend on it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Four small UI changes to the model card, plus a fixture swap so `make dummy-run` actually exercises the new things.
ModelCard
Metrics moved to expand area. The green "Metrics" pill in the always-visible header is gone; in its place is a "Metrics Dashboard" button inside the click-to-expand action row next to "Open in OpenWebUI". The two reads as a pair of model actions instead of a header badge competing for attention with the 24/7 / Slurm / replica-count chips.
OpenWebUI button → black. `bg-indigo-600` → `bg-black` (hover `bg-neutral-800`). Quieter primary, plays better with the green Metrics Dashboard sibling.
Header device line: replica-aware topology summary. Was a flat de-duped device list (`devices.join(', ')`) which for a multi-node replica showed e.g. "4x NVIDIA GH200 120GB" with no indication of node count. New `topologySummary(replicas)` calls `topologyString(r)` per replica (existing helper, already renders "2 nodes × 4x GH200"). If every replica has the same shape (the common case — one model is launched one way), show it once. If they differ, show "Various" rather than picking one to display.
Fixture
`make dummy-run` was pointing at `dnt_table_upgraded.json` — a synthesised file from `build_upgraded.py`. The synthesised peers had repeated ids / weird groupings, which surfaced in the UI as ridiculous replica counts (`x10` on every model, a total of 43 replicas across 16 models). Useless for visually verifying the changes above.
Replaced with `dnt_table_dev_live.json` — a live snapshot of `http://148.187.108.177:8092/v1/dnt/table\` (the dev mesh bootstrap peer). 11 real peers: a couple of single-node sglang dev launches, two multi-node gemma replicas (5 + 4 peers each sharing a worker_group_id), and the bootstrap peer itself with no services. Exercises:
The synthesised fixture stays on disk for unit tests + the `build_upgraded.py` generator (which still has its own purpose: deterministic test data).
Test plan
🤖 Generated with Claude Code