[feat](trx-rs): show server/client build info in HTTP footer

Add compile-time build dates for trx-server and trx-frontend-http, propagate server build metadata through rig state/snapshot, and render both versions + build dates in the HTTP footer.

Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Stanislaw Grams <stanislawgrams@gmail.com>
This commit is contained in:
2026-02-13 11:06:13 +01:00
parent ae40e5cce3
commit 1d0db79ca3
14 changed files with 88 additions and 1 deletions
+1
View File
@@ -6,6 +6,7 @@
name = "trx-server"
version = "0.1.0"
edition = "2021"
build = "build.rs"
[dependencies]
tokio = { workspace = true, features = ["full"] }
+25
View File
@@ -0,0 +1,25 @@
use std::time::{SystemTime, UNIX_EPOCH};
fn utc_ymd_from_unix_secs(secs: i64) -> (i32, u32, u32) {
let days = secs.div_euclid(86_400);
let z = days + 719_468;
let era = if z >= 0 { z } else { z - 146_096 } / 146_097;
let doe = z - era * 146_097;
let yoe = (doe - doe / 1_460 + doe / 36_524 - doe / 146_096) / 365;
let mut y = yoe + era * 400;
let doy = doe - (365 * yoe + yoe / 4 - yoe / 100);
let mp = (5 * doy + 2) / 153;
let d = doy - (153 * mp + 2) / 5 + 1;
let m = mp + if mp < 10 { 3 } else { -9 };
y += if m <= 2 { 1 } else { 0 };
(y as i32, m as u32, d as u32)
}
fn main() {
let secs = match SystemTime::now().duration_since(UNIX_EPOCH) {
Ok(d) => d.as_secs() as i64,
Err(_) => 0,
};
let (y, m, d) = utc_ymd_from_unix_secs(secs);
println!("cargo:rustc-env=TRX_SERVER_BUILD_DATE={y:04}-{m:02}-{d:02}");
}
+2
View File
@@ -224,6 +224,7 @@ fn build_rig_task_config(
initial_mode: cfg.rig.initial_mode.clone(),
server_callsign: resolved.callsign.clone(),
server_version: Some(env!("CARGO_PKG_VERSION").to_string()),
server_build_date: Some(env!("TRX_SERVER_BUILD_DATE").to_string()),
server_latitude: resolved.latitude,
server_longitude: resolved.longitude,
pskreporter_status,
@@ -302,6 +303,7 @@ async fn main() -> DynResult<()> {
let initial_state = RigState::new_with_metadata(
resolved.callsign.clone(),
Some(env!("CARGO_PKG_VERSION").to_string()),
Some(env!("TRX_SERVER_BUILD_DATE").to_string()),
resolved.latitude,
resolved.longitude,
cfg.rig.initial_freq_hz,
+3
View File
@@ -38,6 +38,7 @@ pub struct RigTaskConfig {
pub initial_mode: RigMode,
pub server_callsign: Option<String>,
pub server_version: Option<String>,
pub server_build_date: Option<String>,
pub server_latitude: Option<f64>,
pub server_longitude: Option<f64>,
pub pskreporter_status: Option<String>,
@@ -60,6 +61,7 @@ impl Default for RigTaskConfig {
initial_mode: RigMode::USB,
server_callsign: None,
server_version: None,
server_build_date: None,
server_latitude: None,
server_longitude: None,
pskreporter_status: None,
@@ -102,6 +104,7 @@ pub async fn run_rig_task(
let mut state = RigState::new_with_metadata(
config.server_callsign.clone(),
config.server_version.clone(),
config.server_build_date.clone(),
config.server_latitude,
config.server_longitude,
config.initial_freq_hz,