From 393c1c7f0968cd9e813077696f6587c3803dec90 Mon Sep 17 00:00:00 2001 From: Mollusk Date: Mon, 29 Jun 2026 14:58:33 -0400 Subject: [PATCH] feat(ui): surface the build version in Settings + at startup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A field build is now self-identifying. `run_gui` logs `PeerSpeak v starting` (from env!("CARGO_PKG_VERSION")) on launch, and the Settings panel shows a muted `PeerSpeak v` 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 --- src/app/mod.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/app/mod.rs b/src/app/mod.rs index 0f8ad76..1d08110 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -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),