feat(ui): surface the build version in Settings + at startup

A field build is now self-identifying. `run_gui` logs `PeerSpeak v<version>
starting` (from env!("CARGO_PKG_VERSION")) on launch, and the Settings panel
shows a muted `PeerSpeak v<version>` footer — pinned to the bottom of the
220px category sidebar (wide layout) and appended under the body in the narrow
(<820px) layout. Compile-time string, no new test, no deps, local-only.

Renders the current crate version, so it tracks the Cargo.toml bump at each
release cut (shows v0.6.1 until 0.6.2 is stamped in Track A).

Codex-implemented (gpt-5.5 xhigh), senior-reviewed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 14:58:33 -04:00
co-authored by Claude Opus 4.8
parent 1bf14ba08f
commit 393c1c7f09
+10
View File
@@ -1100,6 +1100,7 @@ fn effective_background_bytes(
}
pub fn run_gui() -> iced::Result {
crate::log_msg(&format!("PeerSpeak v{} starting", env!("CARGO_PKG_VERSION")));
// Restore the last window size (saved on close). Position is restored too,
// but only on X11 — Wayland's xdg-shell gives clients no way to set their own
// position, so we center there and leave placement to the compositor.
@@ -5240,6 +5241,11 @@ fn view(state: &AppState) -> Element<'_, AppMessage> {
for category in SettingsCategory::ALL {
settings_nav = settings_nav.push(category_button(category));
}
settings_nav = settings_nav
.push(iced::widget::Space::new().height(iced::Length::Fill))
.push(text(format!("PeerSpeak v{}", env!("CARGO_PKG_VERSION")))
.size(11)
.color(color_subtext));
let settings_nav = container(settings_nav)
.padding(12)
.width(iced::Length::Fixed(220.0))
@@ -5258,6 +5264,10 @@ fn view(state: &AppState) -> Element<'_, AppMessage> {
.width(iced::Length::Fill),
vertical_space(10.0),
settings_body,
vertical_space(10.0),
text(format!("PeerSpeak v{}", env!("CARGO_PKG_VERSION")))
.size(11)
.color(color_subtext),
]
.spacing(8)
.width(iced::Length::Fill),