Files
VitosUpdater/AGENTS.md
T

5.0 KiB
Raw Blame History

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).