fix(desktop): Beta-Update-Hinweis auch bei gleicher Version aber neuerem Commit anzeigen (WR-02)

desktop-collect.sh vergibt fuer den Beta-Kanal (main) jedem Commit dieselbe
X.Y.Z-Version aus dem letzten Freigabe-Tag (D-07) -- der bisherige Vergleich
nur ueber `version` liess Nutzer zwischen zwei Tags nie eine neuere
Beta-Version sehen, obwohl manifest.json ein neues `commit`-Feld traegt.
build.rs bettet jetzt per `git rev-parse --short=7 HEAD` denselben
Commit-Stempel, den desktop-collect.sh fuer manifest.json schreibt, als
APP_COMMIT zur Kompilierzeit ein; lib.rs vergleicht bei channel == "beta"
zusaetzlich den Commit. Fuer den Live-Kanal bleibt es beim reinen
Versionsvergleich, D-07 (X.Y.Z in tauri.conf.json/Cargo.toml) bleibt
unveraendert. cargo check + cargo clippy -- -D warnings sind sauber.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-16 17:40:52 +02:00
parent 1b2f803c3e
commit 579e24b81a
2 changed files with 30 additions and 1 deletions
+19
View File
@@ -1,3 +1,22 @@
fn main() {
// Commit-Stempel zur Kompilierzeit einbetten (WR-02, Code-Review Phase 18):
// `desktop-collect.sh` vergibt fuer den Beta-Kanal (main) jedem Commit
// dieselbe X.Y.Z-Version (D-07) -- die Unterscheidung zwischen zwei
// Beta-Bauten steckt nur im `commit`-Feld von manifest.json. Ohne einen
// eigenen Commit-Stempel im Binary kann `lib.rs` diesen Fall nicht
// erkennen. `--short=7` spiegelt exakt das Format, das
// `desktop-collect.sh` fuer manifest.json schreibt. Fehlt `git` (z. B.
// Quell-Tarball ohne .git-Ordner), bleibt der Wert leer -- dann greift
// nur noch der reine Versionsvergleich.
let commit = std::process::Command::new("git")
.args(["rev-parse", "--short=7", "HEAD"])
.output()
.ok()
.filter(|output| output.status.success())
.and_then(|output| String::from_utf8(output.stdout).ok())
.map(|s| s.trim().to_string())
.unwrap_or_default();
println!("cargo:rustc-env=APP_COMMIT={commit}");
tauri_build::build()
}