--- quick_id: 260929-d37 type: quick wave: 1 autonomous: true files_modified: - apps/desktop/src-tauri/Cargo.toml - apps/desktop/src-tauri/Cargo.lock - apps/desktop/src-tauri/src/lib.rs - CHANGELOG.md --- # Quick 260929-d37: Desktop-Client nur einmal starten (Single-Instance) ## Problem User report (29.09.2026, Windows 11): at system start Tessera launches twice and two tray icons appear. `apps/desktop/src-tauri/src/lib.rs` has no single-instance guard. Autostart via `tauri-plugin-autostart` (HKCU Run key, only set when the user ticks "Mit Windows starten"); a second launch source (Windows 11 "restart restartable apps after sign-in", a stale Run/Startup entry from an older install, or a manual double-click) starts a second full process with its own tray icon. ## Goal Only one Tessera desktop process runs per user session. A second launch hands off to the running one (show + unminimize + focus the main window) and exits immediately — no second tray icon. ## Task 1: Single-instance plugin - files: apps/desktop/src-tauri/Cargo.toml, apps/desktop/src-tauri/Cargo.lock, apps/desktop/src-tauri/src/lib.rs - action: - Add `tauri-plugin-single-instance = "2"` to `[dependencies]` (resolve with cargo; lockfile updated). - Register it as the FIRST plugin in `tauri::Builder` (plugin docs require it to be registered first): `.plugin(tauri_plugin_single_instance::init(|app, _argv, _cwd| { focus main window }))`. - Callback: reuse the exact show/unminimize/set_focus sequence already used by the tray "open" handler (around lib.rs:820-835). If that sequence is duplicated 3x already, extract a small helper `fn show_main_window(app: &AppHandle)` and use it in all places (keep behavior identical). - Short German comment above the plugin line explaining why (double start at Windows sign-in, two tray icons). - No capabilities/permissions change needed (plugin has no JS API); verify by building. - verify: `cd apps/desktop/src-tauri && cargo build` succeeds; `cargo test` (existing unit tests) green; `cargo clippy` no new warnings if clippy is available. - done: builds, tests green, commit `fix(desktop): nur eine Instanz — zweiter Start holt das Fenster nach vorne`. ## Task 2: CHANGELOG - files: CHANGELOG.md - action: under `## Unveröffentlicht` add a `### Behoben` section (after `### Neu`) with one plain-German bullet (app text uses "Sie"), e.g.: "Desktop-App: Tessera startet nicht mehr doppelt. Wird die App ein zweites Mal gestartet – etwa beim Anmelden an Windows –, holt sie nur das vorhandene Fenster nach vorne; im Infobereich erscheint nur noch ein Symbol." Follow existing CHANGELOG style; run the repo's changelog/umlaut checks if any exist (web tests touching CHANGELOG, e.g. `pnpm --filter web test -- changelog`). - done: commit `docs(changelog): Desktop-App startet nicht mehr doppelt`. ## Constraints - Commit locally only. NEVER `git push`. - Do not touch the desktop version numbers (release process handles them). - Real Windows verification is not possible from here; state in SUMMARY that the Windows check (VM 8233 or user's PC after next desktop release) is open.