Erste Version: Tauri-Grundgerüst, WinGet-Anbindung, Selbst-Updater und Release-Skript

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
DavitoandCopilot committed 2026-10-30 15:58:58 +01:00
commit e0773ba299
84 files changed
+12688

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
# VitosUpdater – Projektanweisungen
## Dauerhafte Regel: Release auf Gitea
Wenn der Nutzer schreibt 'Bau den Installer neu und lade es auf Gitea hoch' (oder sinngemäß: Installer neu bauen / auf Gitea hochladen / Release erstellen), führe IMMER scripts/release.ps1 aus: Version erhöhen, Installer bauen und signieren, latest.json erzeugen, committen, taggen, pushen, Gitea-Release inklusive Assets erstellen und das rollende Release 'latest' aktualisieren. Danach auf Deutsch zusammenfassen (Version, Links, Ergebnis der Prüfung). Antworte immer auf Deutsch, Code und Kommentare auf Englisch.
Hinweise zum Aufruf (aus dem Projektordner, `pwsh` oder `powershell`):
- Standard (Patch-Version): `powershell -ExecutionPolicy Bypass -File scripts\release.ps1`
- Größere Sprünge: `-Bump minor`, `-Bump major` oder `-Version x.y.z`
- Nur bauen, nichts veröffentlichen: `-NoPublish` (Ergebnis in `release-out\`)
- Das Skript bricht bei jedem Fehler ab und nimmt eine Versionsänderung vor dem Commit wieder zurück.
- Fehlt `GITEA_TOKEN`, dem Nutzer auf Deutsch erklären, wie er es anlegt (Gitea → Einstellungen → Anwendungen → Zugriffstoken, Berechtigung `write:repository`), und warten. Das Token nie ausgeben oder speichern.
## Projektüberblick
VitosUpdater ist ein Klon von UniGetUI für Windows 10/11: eine einheitliche Oberfläche zum Suchen, Installieren, Aktualisieren und Deinstallieren von Software über mehrere Paketmanager (WinGet, Scoop, Chocolatey, Pip, Npm, .NET Tool, PowerShell Gallery, Cargo, Vcpkg). Technik: Rust (Edition 2021) + Tauri 2, Frontend mit Svelte 5 + TypeScript + Tailwind CSS 4. Der Selbst-Updater nutzt `tauri-plugin-updater` mit `latest.json` auf dem eigenen Gitea (`https://gitea.davito.synology.me`, Repo `Davito/VitosUpdater`).
## Ordnerstruktur
```
build.ps1 Komfortskript für Installer-Build
scripts\release.ps1 Vollständiger Release-Ablauf (siehe oben)
scripts\cdp.mjs Entwicklungshilfe: JavaScript in der laufenden WebView2 auswerten
src\ Frontend (Svelte)
i18n\de.json, t.ts ALLE sichtbaren Texte (nur Deutsch) und Formatierer
views\ Ansichten (Entdecken, Updates, Installiert, Bundles, Einstellungen)
components\ UI-Bausteine (Sidebar, VirtualTable, DetailsPanel, UpdateDialog, ...)
stores\ Zustand (Svelte-5-Runes)
lib\ api.ts (typisierte Tauri-Befehle), types.ts, Hilfsfunktionen
src-tauri\ Backend (Rust)
src\managers\ Trait PackageManager + ein Modul je Manager (winget\ ...)
src\updater\ Selbst-Update (mod.rs: Zustand, Scheduler, Befehle; policy.rs: reine Logik)
src\settings\, commands\, process.rs, logging.rs, models.rs, error.rs
tests\fixtures\ Echte Beispielausgaben der Paketmanager für Parser-Tests
```
Konfiguration und Zustand der App liegen in `%APPDATA%\VitosUpdater` (Logs unter `logs\`).
## Bauen und Testen
Voraussetzungen: Rust (MSVC), Node.js LTS, WebView2, VS Build Tools (C++), Tauri CLI (`cargo install tauri-cli --version "^2"`).
- Entwickeln: `cargo tauri dev` (aus dem Projektordner)
- Rust prüfen: in `src-tauri` → `cargo check`, `cargo clippy --all-targets -- -D warnings`, `cargo test`
- Frontend prüfen: `npm run check` (svelte-check) und `npm run build`
- Das Projekt muss nach jeder Änderung ohne Fehler und Warnungen kompilieren.
- Parser immer mit echter Beispielausgabe testen (Fixtures in `src-tauri\tests\fixtures`). Keine CLI-Flags raten: im Zweifel lokal ausprobieren.
## Sprache und Texte
- Die Oberfläche ist ausschließlich Deutsch: UI-Texte, Schaltflächen, Menüs, Tooltips, Dialoge, Tray, Benachrichtigungen, Fehlermeldungen, Einstellungen, Installer, README.
- Korrektes Deutsch mit echten Umlauten und ß, korrekte Grammatik und Zeichensetzung, deutsche Formate (dd.MM.yyyy, 24 Stunden, Dezimalkomma, „1.234,5 MB“).
- Neutrale Ansprache ohne „du/Sie“ (z. B. „Updates suchen“, „Alle aktualisieren“); einheitliche Begriffe (Paket, Quelle, Aktualisierung, Deinstallieren, Warteschlange, Einstellungen).
- Alle Texte stehen zentral in `src/i18n/de.json` und werden über `t()`/`tp()` verwendet. Nie Texte in Komponenten hartcodieren. Ausnahme: Eigennamen (WinGet, Scoop, Chocolatey).
- Texte, die im Backend entstehen (Fehlermeldungen, Benachrichtigungen), sind ebenfalls Deutsch.
- Code, Bezeichner und Code-Kommentare sind Englisch. Commit-Nachrichten sind Deutsch (sie erscheinen als Release-Notizen im Update-Popup).
## Geheimnisse
- Niemals Geheimnisse einchecken oder ausgeben: Gitea-Token, Signierschlüssel (`updater.key`), Passwörter, `.env`-Dateien.
- Der private Signierschlüssel liegt außerhalb des Repos (`%USERPROFILE%\.vitosupdater\updater.key`); nur der öffentliche Schlüssel steht in `tauri.conf.json`.
- Das Gitea-Token kommt aus der Umgebungsvariable `GITEA_TOKEN` oder der git-ignorierten Datei `.env.local`. Git-Pushes laufen über den Windows Git Credential Manager.
- TLS-Prüfung nie abschalten (keine `dangerous_*`-Optionen im Updater).