Zum Inhalt springen
supastack
Dokumentation durchstöbern
WebTanStack Start

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /de/docs/desktop/first-feature.md (or send Accept: text/markdown).

Dein erstes Feature bauen

Ein End-to-End-Weg von einer nativen Shell-Änderung zu einem verifizierten Fenster.

Schritt-für-Schritt für Einsteiger

Voraussetzungen: Lesen Sie die beiden Anfänger-Handbücher unten, schließen Sie die lokale Desktop-Einrichtung ab und öffnen Sie dieses Repository im Editor an seinem Stamm. Die Shell liest SUPASTACK_APP_URL beim Start als Terminal-Einstellung — nicht aus einer gespeicherten .env-Datei.

Kurze Begriffe: Ein Arbeitsbereich umfasst die einzelnen Benutzer, Daten und Einstellungen eines Teams. Der Server ist das vertrauenswürdige Backend; Halten Sie Anbieterschlüssel aus Browser- und Telefoncodes fern. Eine Migration ist eine versionierte Datenbankänderung, die Tabellen erstellt oder aktualisiert. Ein KI-Modell ist der Motor, der antwortet; Der Modellkatalog ist die Liste der verfügbaren Modell-IDs und Preise des Servers. Ein Anbieter ist ein externer Dienst wie ein KI-, E-Mail- oder Abrechnungsdienst. Eine Berechtigung ist eine Bewilligung, die einem Arbeitsbereich die Nutzung einer Funktion ermöglicht. Ein Webhook ist eine Nachricht, die ein Dienst an den URL eines anderen Dienstes sendet.

1. Öffnen Sie .agents/skills/add-a-desktop-capability/SKILL.md — oder bitten Sie Ihren Coding-Agenten, ihr zu folgen — und nehmen Sie eine kleine native Änderung vor, zum Beispiel einen neuen View-Menüeintrag oder ein anderes Aufruf-Tastenkürzel.

2. Führen Sie cargo check aus, starten Sie die Shell und testen Sie die Änderung im geöffneten Fenster.

3. Wiederholen Sie dies auf jedem Betriebssystem, das Sie ausliefern möchten — Tray-, Tastenkürzel- und Menüverhalten unterscheidet sich je nach Plattform.

Nennen Sie für eigenen Code das Verhalten, das Menü oder Tastenkürzel, das es betrifft, und was auf jedem Betriebssystem geschehen soll. Geben Sie Ihrem Coding-Agenten diese Aufgabe und bitten Sie ihn, AGENTS.md, .ai/PROJECT_CONTEXT.md und die .ai/-Spiegel der Dateien zu lesen, die er anfassen wird; lassen Sie ihn Dateien und Prüfungen vor dem Bearbeiten auflisten und Ihnen den Diff zeigen. Verwenden Sie Beispielwerte; fügen Sie niemals ein echtes Geheimnis ein.

Zuerst native oder Produkt entscheiden

Alles, was ein Benutzer als Produkt-UI erlebt — Bildschirme, Daten, Einstellungen —, gehört zur Web-App und kommt automatisch im Fenster an. Nur Verhalten auf Betriebssystemebene gehört zu Rust: Fenster, Tray, Menüs, globale Tastenkürzel, Start bei der Anmeldung und Update-Prüfungen.

apps/desktop/src-tauri/src/lib.rs
apps/desktop/src-tauri/tauri.conf.json
apps/desktop/src-tauri/capabilities/default.json

Die Webview-Sandbox eng halten

Die Webview kann nur aufrufen, was capabilities/default.json auflistet. Eine Änderung, die ein neues Plugin benötigt, fügt die Crate in Cargo.toml hinzu, registriert sie in lib.rs und gewährt die minimale Berechtigung in den Capabilities — niemals einen Platzhalter.

Persistierter Shell-Zustand — Fensterposition, Zoom, Update-Kanal, Fenstereinstellungen — liegt über die mitgelieferten Sidecars im Datenverzeichnis der App, nicht in Dateien, die Sie von Hand verwalten.

Auf jedem Ziel-Betriebssystem verifizieren

Führen Sie cargo test aus, dann ein echtes Fenster unter Windows, macOS und Linux: Fensterzustand-Wiederherstellung, Schließen-in-Tray, Single-Instance-Fokus und das Aufruf-Tastenkürzel bei aktiver Änderung. Ein bestandenes Betriebssystem beweist nicht die beiden anderen.