feat(web): show real server version, accurate relay counts, env-config notice on admin panel #103

Merged
Claude-Run merged 1 commit from feat/VS-85-server-panel-version-config into main 2026-07-03 21:10:18 +02:00
Member

The admin Server panel (vervain-apps AdminPage) rendered VERSION "unknown", ACTIVE SESSIONS / RELAY SERVERS "0", and "The server has no config file" for env-only deployments. All four stem from server-side wiring in vervain-server, not the frontend:

VERSION: the serverversion reply shipped an empty tags list, so the panel (which joins the tag list into its Version label) had nothing to show. Ship vervain_build_info::VERSION as the sole tag. That constant is stamped at compile time and can never be the literal "unknown".

OCI build: the Dockerfile declares VERVAIN_BUILD_VERSION / _GIT_HASH / _DATE ARGs but the build workflow never passed them, so inside the builder (no .git in the context) the version silently fell back to CARGO_PKG_VERSION (a bare crate version) and the hash to "unknown". Pass all three as --build-arg, sourcing the version from the resolve step's git describe --tags --always so the shipped image reports the release identity.

Relay counts: serverstats RelaySessions / RelayCount (read by the panel's ACTIVE SESSIONS / RELAY SERVERS) counted only web_relays, under-reporting whenever device-file or MCP relays were live. Count all three registries, matching the per-relay relays listing.

Config section: an env-only deployment (VS-55) has no config.json, and the panel showed a bare "no config file" that read as a misconfiguration. When no file is present, return an explicit env-configuration notice instead of null. The in-memory seed config is deliberately not dumped: it can hold the agent fetcher token that is never persisted.

#VS-85

The admin Server panel (vervain-apps `AdminPage`) rendered VERSION "unknown", ACTIVE SESSIONS / RELAY SERVERS "0", and "The server has no config file" for env-only deployments. All four stem from server-side wiring in vervain-server, not the frontend: VERSION: the `serverversion` reply shipped an empty `tags` list, so the panel (which joins the tag list into its Version label) had nothing to show. Ship `vervain_build_info::VERSION` as the sole tag. That constant is stamped at compile time and can never be the literal "unknown". OCI build: the Dockerfile declares `VERVAIN_BUILD_VERSION` / `_GIT_HASH` / `_DATE` ARGs but the build workflow never passed them, so inside the builder (no `.git` in the context) the version silently fell back to `CARGO_PKG_VERSION` (a bare crate version) and the hash to "unknown". Pass all three as `--build-arg`, sourcing the version from the resolve step's `git describe --tags --always` so the shipped image reports the release identity. Relay counts: `serverstats` RelaySessions / RelayCount (read by the panel's ACTIVE SESSIONS / RELAY SERVERS) counted only `web_relays`, under-reporting whenever device-file or MCP relays were live. Count all three registries, matching the per-relay `relays` listing. Config section: an env-only deployment (VS-55) has no config.json, and the panel showed a bare "no config file" that read as a misconfiguration. When no file is present, return an explicit env-configuration notice instead of `null`. The in-memory seed config is deliberately not dumped: it can hold the agent fetcher token that is never persisted. #VS-85
feat(web): show real server version, accurate relay counts, env-config notice on admin panel
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m0s
Create release / Create release from merged PR (pull_request) Has been skipped
5fbc1c6c48
The admin Server panel (vervain-apps `AdminPage`) rendered VERSION "unknown", ACTIVE SESSIONS / RELAY SERVERS "0", and "The server has no config file" for env-only deployments. All four stem from server-side wiring in vervain-server, not the frontend:

VERSION: the `serverversion` reply shipped an empty `tags` list, so the panel (which joins the tag list into its Version label) had nothing to show. Ship `vervain_build_info::VERSION` as the sole tag. That constant is stamped at compile time and can never be the literal "unknown".

OCI build: the Dockerfile declares `VERVAIN_BUILD_VERSION` / `_GIT_HASH` / `_DATE` ARGs but the build workflow never passed them, so inside the builder (no `.git` in the context) the version silently fell back to `CARGO_PKG_VERSION` (a bare crate version) and the hash to "unknown". Pass all three as `--build-arg`, sourcing the version from the resolve step's `git describe --tags --always` so the shipped image reports the release identity.

Relay counts: `serverstats` RelaySessions / RelayCount (read by the panel's ACTIVE SESSIONS / RELAY SERVERS) counted only `web_relays`, under-reporting whenever device-file or MCP relays were live. Count all three registries, matching the per-relay `relays` listing.

Config section: an env-only deployment (VS-55) has no config.json, and the panel showed a bare "no config file" that read as a misconfiguration. When no file is present, return an explicit env-configuration notice instead of `null`. The in-memory seed config is deliberately not dumped: it can hold the agent fetcher token that is never persisted.

#VS-85
Claude-Run deleted branch feat/VS-85-server-panel-version-config 2026-07-03 21:10:19 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/vervain-server!103
No description provided.