5.0 KiB
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 majoroder-Version x.y.z - Nur bauen, nichts veröffentlichen:
-NoPublish(Ergebnis inrelease-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, Berechtigungwrite: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) undnpm 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.jsonund werden übert()/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 intauri.conf.json. - Das Gitea-Token kommt aus der Umgebungsvariable
GITEA_TOKENoder 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).