Skip to content

XERK-539: show agent + Turma version in the collapsed dashboard host header - #622

Merged
xerhab merged 3 commits into
mainfrom
XERK-539
Sep 1, 2026
Merged

XERK-539: show agent + Turma version in the collapsed dashboard host header#622
xerhab merged 3 commits into
mainfrom
XERK-539

Conversation

@xerhab

@xerhab xerhab commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

What & why

The web dashboard (turma/public/index.html) only surfaced the coding-agent version and the Turma agent version once a host card was expanded (in the .host-meta block). The Android card already shows those two facts in its collapsed header. XERK-539 asks for parity: make that info visible in the web header when the card is collapsed too.

Change

  • New helper hostVerLine(a) (beside codingAgent()): returns "<coding agent> <version> · Turma <agentVersion>", reusing codingAgent()'s legacy raw-string parsing and its unknown fallback.
  • A version line under the hostname, rendered only while the card is collapsed<span class="host-ver">, wrapped with the <h3> in a new .host-name-text flex column. When expanded it disappears and the fuller .host-meta row carries Agent/Turma as before (no duplication).
  • CSS: .host-name-text (column) + .host-ver (muted 12px, word-break: break-word).

turma/public/ only; no server/agent plumbing.

Web ⇄ Android parity

This closes a gap where the web lagged Android — the Android collapsed card header already shows codingAgentLabel · Turma <ver> (FleetScreen.kt). No Android change is needed; the web is catching up to it.

Verification

  • Unit: added hostVerLine cases to turma/tests/host-header.test.js (the two versions present → "Claude Code 2.1.211 · Turma 1.2.3"; neither present → "– · Turma –"). Full turma suite green (1700 pass, 1 pre-existing skip).
  • QA agent verdict: PASS. Built and driven end-to-end in a real headless Chrome across desktop + 390px, light + dark, with a hub fed real heartbeats for every case:
    • Collapsed header shows the line under the hostname; agent name honored, not hardcoded (Qwen 3.0.5 · Turma 1.2.3).
    • Expanded card does not duplicate the line; .host-meta still carries Agent/Turma.
    • Legacy raw claudeVersion ("2.1.211 (Claude Code)") parses to Claude Code 2.1.211 · ….
    • Older agent missing all version fields renders "– · Turma –", no throw.
    • Version line is esc()d — XSS payload in host name/version rendered as literal escaped text, window.__XSS stayed false.
    • Collapse/expand toggle works and collapsedHosts localStorage persistence intact.
    • Layout clean on desktop; on 390px it's cramped (hostname + chip + Restart + status pill share one flex row), but with no horizontal overflow and word-boundary wrapping. QA proved this wrapping is pre-existing (the parent commit wraps identically without the version line) — this change only adds vertical height, it doesn't create or worsen it.
    • Not exercised: a live SSE version-change repaint (same hostCard() path, exercised on initial paint + reload).

…header

The web dashboard only surfaced the coding-agent and Turma versions once a
host card was expanded (in .host-meta), while the Android card shows them in
its collapsed header. Add a version line under the hostname, shown while the
card is collapsed, so the web header carries the same at-a-glance facts —
'<coding agent> <ver> · Turma <ver>' — without expanding. When expanded the
fuller .host-meta row still carries them alongside memory/uptime/repos root.

hostVerLine() reuses the existing codingAgent() legacy-string parsing and the
'–' unknown fallback; unit-tested in host-header.test.js.
… or not

Follow-up: the version line was shown in the header only while collapsed, and
the same facts reappeared in the expanded .host-meta block — so toggling the
card made the info jump from one place to another. Render the header version
line unconditionally (collapsed and expanded alike) and drop the now-redundant
Agent + Turma rows from .host-meta, so the version sits in one fixed spot under
the hostname and stays visible when collapsed. .host-meta keeps memory / uptime
/ repos root / sessions.
@xerhab
xerhab merged commit 12d56cb into main Sep 1, 2026
5 checks passed
@xerhab
xerhab deleted the XERK-539 branch September 1, 2026 23:15
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