feat(18-01): Task 2 — Version aus dem Freigabe-Tag, Basislinie 1.1.0

desktop-version.sh (D-07): schreibt die reine X.Y.Z-Form des letzten
Freigabe-Tags in tauri.conf.json und Cargo.toml; --print nur zur
Anzeige, keine Vorab-/Metadatenform wird je geschrieben (Pitfall 2 —
NSIS-Ressourcen sind rein numerisch). Negativproben (v1.2.3-beta
abgelehnt, v2.0.0 akzeptiert aber ungeschrieben) bestehen.

Basislinie 1.1.0 (aktueller Tag v1.1.0) in tauri.conf.json, Cargo.toml,
Cargo.lock (cargo check) und package.json eingecheckt — die Wahrheit im
CI bleibt der Tag, dies ist nur die Vorgabe fuer lokale Baue.

Frischer AppImage-Bau mit der Basislinie bestaetigt: desktop-collect.sh
liefert jetzt Tessera-1.1.0.AppImage samt Manifest.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-16 16:10:07 +02:00
parent ae8fecb538
commit 614289a350
5 changed files with 65 additions and 6 deletions
+53
View File
@@ -0,0 +1,53 @@
#!/bin/sh
# desktop-version.sh -- Version aus dem letzten Freigabe-Tag in
# tauri.conf.json und Cargo.toml schreiben (Phase 18, D-07).
#
# Die Wahrheit der Client-Version ist der Freigabe-Tag (git describe), nicht
# eine im Repository eingecheckte Zahl -- dieses Skript liest den Tag und
# schreibt ihn vor jedem Bau in beide Dateien. Geschrieben wird IMMER die
# reine Form X.Y.Z, nie eine Vorab- oder Metadaten-Form (Pitfall 2: NSIS'
# VIProductVersion/VIFileVersion sind rein numerisch, das ist eine
# Windows-Ressourcen-Vorgabe, keine Tauri-Entscheidung). Die
# Beta-vs-Freigabe-Unterscheidung lebt ausschliesslich im Dateinamen-Suffix
# und in manifest.json (desktop-collect.sh), nicht hier.
#
# DESKTOP_TAG dient nur der lokalen Probe (siehe unten); im CI ist
# `fetch-depth: 0` Pflicht, sonst findet `git describe` keinen Tag.
#
# Option --print: nur die ermittelte Version ausgeben, nichts schreiben.
#
# Dieses Skript kennt kein Secret.
set -eu
CONF="apps/desktop/src-tauri/tauri.conf.json"
CARGO="apps/desktop/src-tauri/Cargo.toml"
PRINT_ONLY=0
if [ "${1:-}" = "--print" ]; then
PRINT_ONLY=1
fi
if [ -n "${DESKTOP_TAG:-}" ]; then
TAG="$DESKTOP_TAG"
else
if ! TAG="$(git describe --tags --abbrev=0 --match 'v[0-9]*' 2>/dev/null)"; then
echo "Kein erreichbarer Freigabe-Tag (v*) -- im CI ist fetch-depth: 0 Pflicht." >&2
exit 1
fi
fi
VERSION="${TAG#v}"
if ! printf '%s' "$VERSION" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
echo "Tag '$TAG' ergibt keine reine X.Y.Z-Version ('$VERSION') -- Vorab-/Metadatenformen werden nie geschrieben (Pitfall 2)." >&2
exit 1
fi
if [ "$PRINT_ONLY" = "1" ]; then
printf '%s\n' "$VERSION"
exit 0
fi
jq --arg v "$VERSION" '.version = $v' "$CONF" > "$CONF.tmp" && mv "$CONF.tmp" "$CONF"
sed -i "s/^version = \".*\"/version = \"$VERSION\"/" "$CARGO"
echo "Desktop-Version gesetzt: $VERSION (aus Tag $TAG)"
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@tessera/desktop", "name": "@tessera/desktop",
"version": "0.0.1", "version": "1.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"tauri": "tauri", "tauri": "tauri",
+1 -1
View File
@@ -3986,7 +3986,7 @@ dependencies = [
[[package]] [[package]]
name = "tessera-desktop" name = "tessera-desktop"
version = "0.0.1" version = "1.1.0"
dependencies = [ dependencies = [
"reqwest 0.12.28", "reqwest 0.12.28",
"serde", "serde",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "tessera-desktop" name = "tessera-desktop"
version = "0.0.1" version = "1.1.0"
edition = "2021" edition = "2021"
[lib] [lib]
+9 -3
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json", "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
"productName": "Tessera", "productName": "Tessera",
"version": "0.0.1", "version": "1.1.0",
"identifier": "de.ctl.tessera.desktop", "identifier": "de.ctl.tessera.desktop",
"build": { "build": {
"frontendDist": "../src", "frontendDist": "../src",
@@ -26,7 +26,13 @@
}, },
"bundle": { "bundle": {
"active": true, "active": true,
"targets": ["appimage", "nsis"], "targets": [
"icon": ["icons/icon.png", "icons/icon.ico"] "appimage",
"nsis"
],
"icon": [
"icons/icon.png",
"icons/icon.ico"
]
} }
} }