- Windows 10/11 mit .NET 10 Desktop Runtime
- Mikrofon angeschlossen
- App starten (aus WSL):
# Erst PluginSDK bauen "/mnt/c/Program Files/dotnet/dotnet.exe" build "\\\\wsl.localhost\\Ubuntu-24.04\\home\\marco\\projects\\typewhisper-win\\src\\TypeWhisper.PluginSDK\\TypeWhisper.PluginSDK.csproj" # Dann Solution "/mnt/c/Program Files/dotnet/dotnet.exe" build "\\\\wsl.localhost\\Ubuntu-24.04\\home\\marco\\projects\\typewhisper-win" # Run "/mnt/c/Program Files/dotnet/dotnet.exe" run --project "\\\\wsl.localhost\\Ubuntu-24.04\\home\\marco\\projects\\typewhisper-win\\src\\TypeWhisper.Windows" --no-build
- App starten → prüfen, dass keine Fehler in der Konsole
- In
%LOCALAPPDATA%\TypeWhisper\Data\typewhisper.dbmit SQLite-Tool prüfen:PRAGMA user_version; -- Sollte 6 sein SELECT sql FROM sqlite_master WHERE name='prompt_actions'; -- target_action_plugin_id, hotkey_key vorhanden SELECT sql FROM sqlite_master WHERE name='transcription_history'; -- model_used vorhanden SELECT sql FROM sqlite_master WHERE name='profiles'; -- hotkey_data vorhanden
- Modell laden (z.B. Parakeet via Marketplace)
- Dictation starten → Text wird normal transkribiert
- Prüfen, dass Dictionary-Korrekturen weiterhin angewendet werden
- Prüfen, dass Snippet-Expansion weiterhin funktioniert
- Prompt Action erstellen mit
TargetActionPluginId(z.B.com.typewhisper.linear) - Plugin installieren und konfigurieren
- Prompt Action ausführen → Text sollte an Plugin statt ins Textfeld gehen
curl http://localhost:8978/v1/status→ JSON mit version, is_recording, supports_streaming, supports_translation
# Alle Einträge
curl "http://localhost:8978/v1/history?limit=5"
# Suche
curl "http://localhost:8978/v1/history?q=test"
# Löschen (mit echter ID)
curl -X DELETE "http://localhost:8978/v1/history?id=SOME_ID"# Alle Profile
curl http://localhost:8978/v1/profiles# Status prüfen
curl http://localhost:8978/v1/dictation/status
# Starten
curl -X POST http://localhost:8978/v1/dictation/start
# Stoppen
curl -X POST http://localhost:8978/v1/dictation/stop# Audio-Datei senden
curl -X POST http://localhost:8978/v1/transcribe \
-F "file=@test.wav" \
-F "language=de"Hinweis: API Server muss in Einstellungen → Allgemein aktiviert sein.
- Einstellungen → (AppSettings.json oder via Code):
ModelAutoUnloadSecondsauf z.B.30setzen - Modell laden → Transkription durchführen
- 30 Sekunden warten
- Prüfen, dass Modell automatisch entladen wird (Debug-Output: "Auto-unloading model after 30s idle")
- Nächste Aufnahme → Modell wird automatisch wieder geladen
- Settings → History öffnen
- Mindestens 2-3 Transkriptionen in der History
- Export-Button klicken
- Alle 4 Formate testen:
- Text (*.txt): Einfaches Textformat mit Header
- CSV (*.csv): Komma-separiert, in Excel öffnen
- Markdown (*.md): Heading, Metadaten, Trennlinien
- JSON (*.json): Strukturiertes Array, valid JSON
- Jede exportierte Datei öffnen und Inhalt prüfen
- Plugin via Marketplace installieren (oder manuell:
plugins/TypeWhisper.Plugin.Gemini/→ App Plugins-Ordner kopieren) - Settings → Plugins → Gemini → API Key eingeben
- "Testen" Button → Grüne Bestätigung
- Prompt Action erstellen mit Provider "Google Gemini"
- Transkribieren → Prompt Action auslösen → Gemini verarbeitet Text
- Plugin installieren
- Settings → Plugins → Linear → API Key eingeben
- "Teams laden" → Teams sollten erscheinen
- Team und Projekt auswählen
- Prompt Action mit
TargetActionPluginId = com.typewhisper.linearerstellen - Text diktieren → Prompt Action → Issue wird in Linear erstellt
- Plugin installieren
- Obsidian muss installiert sein mit mindestens einem Vault
- Settings → Plugins → Obsidian
- Vault sollte automatisch erkannt werden (oder manuell Pfad setzen)
- Optional: Daily-Note-Modus aktivieren
- Prompt Action mit
TargetActionPluginId = com.typewhisper.obsidianerstellen - Text diktieren → Prompt Action → Markdown-Datei im Vault prüfen
- Plugin installieren
- Settings → Plugins → Script Runner
- "Add Script" → Name: "Uppercase", Command:
powershell -c "$input | ForEach-Object { $_.ToUpper() }", Shell: PowerShell - Script aktivieren (Checkbox)
- Diktieren → Text sollte durch Script verarbeitet werden (hier: alles Großbuchstaben)
- Zweites Script hinzufügen, Reihenfolge testen (Move Up/Down)
- Plugin installieren
- Settings → Plugins → Live Transcript → Aktivieren
- Optional: Font-Größe und Opazität anpassen
- Dictation starten (mit einem Streaming-fähigen Modell, z.B. AssemblyAI)
- Während der Aufnahme: schwebendes Fenster sollte am unteren Bildschirmrand erscheinen
- Text erscheint live während des Sprechens
- Nach Aufnahme: Fenster verschwindet nach 3 Sekunden
- Settings → Profile → Profil auswählen/erstellen
- Im Detail-Panel: neues "Profil-Hotkey" Feld
- HotkeyRecorder anklicken → Tastenkombination drücken (z.B. Ctrl+Shift+1)
- Profil speichern
- Test:
- Normales Hotkey drücken → Standard-Profil-Matching (nach App/URL)
- Profil-Hotkey drücken → Dieses spezifische Profil wird aktiviert, unabhängig vom aktiven Fenster
- Im Overlay: Profilname sollte angezeigt werden
- Zweites Profil mit anderem Hotkey erstellen → Beide funktionieren unabhängig
- Settings → Aufnahme
- Level-Meter (Fortschrittsbalken) neben dem "Aktualisieren"-Button sichtbar
- Ins Mikrofon sprechen → Balken reagiert in Echtzeit
- Anderes Mikrofon im Dropdown auswählen → Level-Meter wechselt zum neuen Gerät
- Zu einer anderen Settings-Sektion navigieren → Preview stoppt (kein CPU-Verbrauch)
- Zurück zu Aufnahme → Preview startet wieder
- Settings-Fenster schließen → Preview stoppt
- App startet ohne Fehler
- Alle Settings-Sektionen laden korrekt
- Bestehende Funktionalität nicht gebrochen (Hotkeys, Overlay, Dictionary, Snippets)
- DB-Migration funktioniert (frische DB und Upgrade von v5)
- Export-Dateien haben korrekten Inhalt
- API-Endpoints antworten korrekt
- Plugins laden und zeigen Settings-UI