feat(desktop): Setup-Seite zeigt Version und Stand der installierten App
Neues Command get_client_info liefert "Tessera-App X.Y.Z · Stand <sha7>" (ohne Stempel nur die Version); die Setup-Seite blendet die Zeile beim Erststart und unter "Server-Adresse ändern" dezent ein. So ist ohne Adressleiste erkennbar, welcher Client-Stand läuft. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@ Diese Liste beschreibt in einfachen Worten, was sich von Version zu Version an T
|
|||||||
- Desktop-App: das Symbol im Infobereich zeigt den verbundenen Tessera-Server – im Hinweistext und als erste Zeile des Menüs; in der App auch unter Einstellungen → Desktop-App als „Verbunden mit: …“
|
- Desktop-App: das Symbol im Infobereich zeigt den verbundenen Tessera-Server – im Hinweistext und als erste Zeile des Menüs; in der App auch unter Einstellungen → Desktop-App als „Verbunden mit: …“
|
||||||
- Desktop-App: Server-Adresse nachträglich änderbar über „Server-Adresse ändern…“ im Menü des Infobereich-Symbols – ohne Neustart
|
- Desktop-App: Server-Adresse nachträglich änderbar über „Server-Adresse ändern…“ im Menü des Infobereich-Symbols – ohne Neustart
|
||||||
- Desktop-App: Update mit einem Klick – „Auf Version X.Y.Z aktualisieren“ im Menü des Infobereich-Symbols lädt das signierte Paket, installiert es und startet die App neu (Windows und Linux); Voraussetzung ist eine https-Adresse, bereits installierte Versionen bis 1.2.0 wechseln einmal noch über den Browser
|
- Desktop-App: Update mit einem Klick – „Auf Version X.Y.Z aktualisieren“ im Menü des Infobereich-Symbols lädt das signierte Paket, installiert es und startet die App neu (Windows und Linux); Voraussetzung ist eine https-Adresse, bereits installierte Versionen bis 1.2.0 wechseln einmal noch über den Browser
|
||||||
|
- Desktop-App: die Seite „Server-Adresse ändern“ (und der Erststart) zeigt Version und Stand der installierten App, z. B. „Tessera-App 1.2.0 · Stand 7479cb4“
|
||||||
|
|
||||||
### Geändert
|
### Geändert
|
||||||
|
|
||||||
|
|||||||
@@ -163,6 +163,19 @@ fn release_labels(current: &Version, release: &Version) -> (String, String) {
|
|||||||
update_labels(version_changed, &version, commit)
|
update_labels(version_changed, &version, commit)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Beschriftung fuer die Setup-Seite: Version und Commit-Stempel der
|
||||||
|
/// installierten App, damit Anwender sehen, welchen Stand sie fahren
|
||||||
|
/// (Beta-Baue teilen sich die X.Y.Z-Version, nur der Stempel unterscheidet
|
||||||
|
/// sie). Ohne Stempel (lokaler Bau ohne Git) nur die Version.
|
||||||
|
fn client_info_label(version: &str, commit: &str) -> String {
|
||||||
|
let commit = commit.trim();
|
||||||
|
if commit.is_empty() {
|
||||||
|
format!("Tessera-App {version}")
|
||||||
|
} else {
|
||||||
|
format!("Tessera-App {version} · Stand {commit}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Parst eine vom Nutzer eingegebene Server-Adresse und erlaubt nur http/https
|
/// Parst eine vom Nutzer eingegebene Server-Adresse und erlaubt nur http/https
|
||||||
/// -- dieselben Fehlertexte wie bisher inline in `check_server`. `check_server`,
|
/// -- dieselben Fehlertexte wie bisher inline in `check_server`. `check_server`,
|
||||||
/// `save_server_url` und `open_server` rufen ausschliesslich diesen Helfer;
|
/// `save_server_url` und `open_server` rufen ausschliesslich diesen Helfer;
|
||||||
@@ -490,6 +503,12 @@ fn open_server(app: AppHandle) -> Result<(), String> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Version und Commit-Stempel der laufenden App fuer die Setup-Seite.
|
||||||
|
#[tauri::command]
|
||||||
|
fn get_client_info() -> String {
|
||||||
|
client_info_label(env!("CARGO_PKG_VERSION"), env!("APP_COMMIT"))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
let app = tauri::Builder::default()
|
let app = tauri::Builder::default()
|
||||||
.plugin(tauri_plugin_store::Builder::new().build())
|
.plugin(tauri_plugin_store::Builder::new().build())
|
||||||
@@ -505,7 +524,8 @@ pub fn run() {
|
|||||||
check_server,
|
check_server,
|
||||||
save_server_url,
|
save_server_url,
|
||||||
get_server_url,
|
get_server_url,
|
||||||
open_server
|
open_server,
|
||||||
|
get_client_info
|
||||||
])
|
])
|
||||||
.setup(|app| {
|
.setup(|app| {
|
||||||
let server_url = stored_server_url(app.handle());
|
let server_url = stored_server_url(app.handle());
|
||||||
@@ -710,6 +730,20 @@ mod tests {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn client_info_label_mit_stempel() {
|
||||||
|
assert_eq!(
|
||||||
|
client_info_label("1.2.0", "7479cb4"),
|
||||||
|
"Tessera-App 1.2.0 · Stand 7479cb4"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn client_info_label_ohne_stempel() {
|
||||||
|
assert_eq!(client_info_label("1.2.0", ""), "Tessera-App 1.2.0");
|
||||||
|
assert_eq!(client_info_label("1.2.0", " "), "Tessera-App 1.2.0");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn update_labels_bei_gleicher_version_beta_commit() {
|
fn update_labels_bei_gleicher_version_beta_commit() {
|
||||||
let (menu_text, body) = update_labels(false, "1.1.0", "abc1234");
|
let (menu_text, body) = update_labels(false, "1.1.0", "abc1234");
|
||||||
|
|||||||
@@ -141,6 +141,13 @@
|
|||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.client-info {
|
||||||
|
margin: 20px 0 0;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: oklch(0.6 0 0);
|
||||||
|
min-height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
.current-server {
|
.current-server {
|
||||||
display: none;
|
display: none;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
@@ -192,6 +199,7 @@
|
|||||||
|
|
||||||
<button id="connect-btn" type="button">Verbinden</button>
|
<button id="connect-btn" type="button">Verbinden</button>
|
||||||
<button id="cancel-btn" type="button" class="secondary" hidden>Abbrechen</button>
|
<button id="cancel-btn" type="button" class="secondary" hidden>Abbrechen</button>
|
||||||
|
<p id="client-info" class="client-info"></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
@@ -360,6 +368,16 @@
|
|||||||
// gespeicherte Adresse (oder wenn der Aufruf fehlschlaegt) bleibt es
|
// gespeicherte Adresse (oder wenn der Aufruf fehlschlaegt) bleibt es
|
||||||
// beim bisherigen Erststart-Verhalten.
|
// beim bisherigen Erststart-Verhalten.
|
||||||
async function init() {
|
async function init() {
|
||||||
|
// Version und Stand der installierten App -- rein informativ; ein
|
||||||
|
// Fehlschlag laesst die Zeile einfach leer.
|
||||||
|
try {
|
||||||
|
const info = await invoke('get_client_info');
|
||||||
|
if (typeof info === 'string') {
|
||||||
|
document.getElementById('client-info').textContent = info;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// Zeile bleibt leer.
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const current = await invoke('get_server_url');
|
const current = await invoke('get_server_url');
|
||||||
if (typeof current === 'string' && current) {
|
if (typeof current === 'string' && current) {
|
||||||
|
|||||||
Reference in New Issue
Block a user