101 lines
4.0 KiB
Markdown
101 lines
4.0 KiB
Markdown
---
|
|
title: Dossier-Launcher
|
|
linkTitle: Launcher
|
|
weight: 3
|
|
toc: true
|
|
---
|
|
|
|
Der **Dossier-Launcher** ist eine separate **Tauri 2** Standalone-App. Sie verwaltet Projekte, hält Settings, liefert Auto-Updates und lebt im System-Tray. Aktuell produktiv im Einsatz für Projekt-Switching, Window-Layout-Push und Plugin-Settings.
|
|
|
|
## Was er macht
|
|
|
|
{{< cards >}}
|
|
{{< card title="Projekt-Verwaltung" icon="collection" subtitle="Liste aller DOSSIER-Projekte mit Pfad, letztem Zugriff und Phase." >}}
|
|
{{< card title="Settings-Sync" icon="cog" subtitle="Schreibt Plugin-Settings in dossier_settings.json — Rhino liest live." >}}
|
|
{{< card title="Auto-Updates" icon="cloud-download" subtitle="Über tauri-plugin-updater, signiert mit Code-Signing-Key." >}}
|
|
{{< card title="System-Tray" icon="desktop-computer" subtitle="Quick-Open der letzten 5 Projekte, ohne Hauptfenster zu öffnen." >}}
|
|
{{< card title="Window-Layouts" icon="template" subtitle="Live-Push von Window-Layouts an laufende Rhino-Session." >}}
|
|
{{< card title="Recent-Cache" icon="clock" subtitle="recent.json — letzte 50 geöffnete Projekte für Quick-Access." >}}
|
|
{{< /cards >}}
|
|
|
|
## Technologie
|
|
|
|
| Komponente | Stack |
|
|
|--------------|------------------------------------|
|
|
| Frontend | React + Vite (`launcher/src/`) |
|
|
| Backend | Rust + Tauri 2 (`launcher/src-tauri/`) |
|
|
| Update-Plugin| `tauri-plugin-updater` |
|
|
| Tray-Plugin | `tauri-plugin-tray` |
|
|
| IPC zu Rhino | Dateibasiert (kein Socket) |
|
|
|
|
## Settings-Files
|
|
|
|
Pfad-Hierarchie:
|
|
|
|
1. **Primär** (Launcher schreibt):
|
|
`~/Library/Application Support/ch.gabrielevarano.Dossier/dossier_settings.json`
|
|
2. **Legacy-Fallback** (read-only):
|
|
`~/Library/Application Support/RhinoPanel/dossier_settings.json`
|
|
|
|
Recent-Cache:
|
|
`~/Library/Application Support/ch.gabrielevarano.Dossier/recent.json`
|
|
|
|
## Bekannte Settings-Keys
|
|
|
|
| Key | Beschreibung |
|
|
|----------------------|-------------------------------------------------------|
|
|
| `windowLayout` | Aktives Window-Layout (XML-Display-Name) |
|
|
| `autoApplyLayout` | Bool — Layout beim Projekt-Wechsel anwenden? |
|
|
| `pendingApplyLayout` | Pending Layout-Name — wird von `oberleiste.tick_idle()` gepollt und gelöscht |
|
|
| `rhinoApp` | Pfad zum Rhino-App-Bundle |
|
|
| `templatePath` | Default-Template für neue Projekte |
|
|
|
|
## Window-Layouts auf Mac
|
|
|
|
Mac Rhino 8 speichert Window-Layouts als **XML** unter:
|
|
|
|
```text
|
|
~/Library/Application Support/McNeel/Rhinoceros/8.0/settings/Scheme__Default/workspaces/<GUID>.xml
|
|
```
|
|
|
|
Display-Name aus dem `<RhinoUI name="…">` Attribut. Der Launcher liest diese Datei direkt — kein `.rwl` wie auf Windows.
|
|
|
|
**Apply** via Reflection über `Rhino.UI.WindowLayout.*`, Fallback `_-SetActiveLayout "Name" _Enter`.
|
|
|
|
## Live-Push Workflow
|
|
|
|
```text
|
|
Launcher ─writes─▶ pendingApplyLayout key ──▶ dossier_settings.json
|
|
│
|
|
▼
|
|
Rhino-Plugin: oberleiste.tick_idle() ─polls─▶ liest + clearet
|
|
│
|
|
▼
|
|
Window-Layout aktiv
|
|
```
|
|
|
|
Polling-Intervall: 500 ms im Rhino-Idle-Handler. Latenz spürbar < 1 s.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
cd launcher
|
|
npm install
|
|
npm run tauri dev # Development-Mode
|
|
```
|
|
|
|
Release-Build mit Code-Signing:
|
|
|
|
```bash
|
|
cd launcher
|
|
./scripts/release.sh # → schreibt latest.json für Updater
|
|
```
|
|
|
|
Voraussetzungen siehe [Tauri Prerequisites](https://v2.tauri.app/start/prerequisites/).
|
|
|
|
## Standalone
|
|
|
|
**Rhino läuft ohne Launcher** — Settings haben sinnvolle Defaults, Plugin funktioniert direkt aus dem PackageManager-Install.
|
|
|
|
**Launcher läuft ohne Rhino** — Projekt-Verwaltung, Settings-Editor und Updates funktionieren auch ohne installiertes Rhino. IPC ist bewusst dateibasiert.
|