65 lines
5.0 KiB
Markdown
65 lines
5.0 KiB
Markdown
# 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).
|