diff --git a/.cursor/rules/readme-maintenance.mdc b/.cursor/rules/readme-maintenance.mdc new file mode 100644 index 0000000..ebb5b82 --- /dev/null +++ b/.cursor/rules/readme-maintenance.mdc @@ -0,0 +1,16 @@ +--- +description: README.md fortlaufend pflegen bei relevanten Änderungen +alwaysApply: true +--- + +# README-Wartung + +Bei Änderungen am Projekt die `README.md` im Repo-Root aktualisieren, wenn betroffen: + +- **Neue Features** → Abschnitt „Schnellstart“ oder „Konfiguration“ ergänzen +- **Geänderte Pfade** (Config, Build) → Tabelle/Text anpassen +- **Neue Abhängigkeiten** → Voraussetzungen aktualisieren +- **Plattform-Änderungen** → Tabelle oder Verweis auf PLATFORM.md +- **Projektstruktur** → Verzeichnisbaum anpassen + +Die README soll für neue Nutzer verständlich und aktuell bleiben. diff --git a/HotKeet/PLATFORM.md b/HotKeet/PLATFORM.md index 7ff1379..66f372e 100644 --- a/HotKeet/PLATFORM.md +++ b/HotKeet/PLATFORM.md @@ -13,7 +13,7 @@ - System-Tray mit Icon - PlaySound/MessageBeep für Signaltöne - WM_CLOSE → Minimieren ins Tray -- Konfiguration: `%LOCALAPPDATA%\hotkeet\settings.json` +- Konfiguration: `%LOCALAPPDATA%\HotKeet\settings.json` - Parakeet-Standardpfade: `C:\voice2text\` ## Linux @@ -26,7 +26,7 @@ ### Konfiguration -- Pfad: `~/.config/hotkeet/settings.json` (oder `$XDG_CONFIG_HOME/hotkeet/`) +- Pfad: `~/.config/HotKeet/settings.json` (oder `$XDG_CONFIG_HOME/HotKeet/`) - Parakeet-CLI Standard: `/usr/local/bin/parakeet-cli` - Modell Standard: `/usr/local/share/voice2text/models/parakeet-tdt-0.6b-v3-int8` @@ -46,7 +46,7 @@ ### Konfiguration -- Pfad: `~/.config/hotkeet/settings.json` (bzw. `$XDG_CONFIG_HOME/hotkeet/`) +- Pfad: `~/.config/HotKeet/settings.json` (bzw. `$XDG_CONFIG_HOME/HotKeet/`) - Parakeet-CLI Standard: `/usr/local/bin/parakeet-cli` ### Bekannte Einschränkungen @@ -72,4 +72,4 @@ cargo build --release ## Migration von mediSchnack-dictate -Alte Konfiguration unter `%LOCALAPPDATA%\medischnack\dictate-settings.json` wird nicht automatisch übernommen. Bei Bedarf manuell nach `hotkeet/settings.json` kopieren. +Alte Konfiguration unter `%LOCALAPPDATA%\medischnack\dictate-settings.json` oder `%LOCALAPPDATA%\hotkeet\settings.json` wird nicht automatisch übernommen. Bei Bedarf manuell nach `HotKeet\settings.json` kopieren. diff --git a/HotKeet/src/config.rs b/HotKeet/src/config.rs index e0f5d34..dda44c6 100644 --- a/HotKeet/src/config.rs +++ b/HotKeet/src/config.rs @@ -1,5 +1,5 @@ //! Konfiguration für HotKeet. -//! Speicherort: Windows %LOCALAPPDATA%\hotkeet\, Linux/macOS ~/.config/hotkeet/ +//! Speicherort: Windows %LOCALAPPDATA%\HotKeet\, Linux/macOS ~/.config/HotKeet/ use serde::{Deserialize, Serialize}; use std::path::PathBuf; @@ -108,7 +108,7 @@ impl DictateConfig { { let base = std::env::var("LOCALAPPDATA") .unwrap_or_else(|_| std::env::var("USERPROFILE").unwrap_or_else(|_| ".".to_string())); - PathBuf::from(base).join("hotkeet").join("settings.json") + PathBuf::from(base).join("HotKeet").join("settings.json") } #[cfg(not(windows))] { @@ -118,7 +118,7 @@ impl DictateConfig { .map(|h| format!("{}/.config", h)) .unwrap_or_else(|_| ".".to_string()) }); - PathBuf::from(base).join("hotkeet").join("settings.json") + PathBuf::from(base).join("HotKeet").join("settings.json") } } diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bb90c20 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 HotKeet Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..86d34a0 --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# HotKeet + +Push-to-Talk Diktier-App mit Offline-Spracherkennung. Hotkey gedrückt = aufnehmen, losgelassen = stoppen, transkribieren, einfügen. + +## Übersicht + +| Komponente | Beschreibung | +|------------|--------------| +| **HotKeet** | GUI-App: Aufnahme, Transkription, Texteinfügung per Hotkey | +| **parakeet-cli** | CLI für Parakeet v3 Speech-to-Text (transcribe-rs) | + +## Schnellstart + +### Voraussetzungen + +- Rust (1.70+) +- **parakeet-cli** muss gebaut und erreichbar sein (im PATH oder Pfad konfigurieren) +- Parakeet-Modell (z.B. `parakeet-tdt-0.6b-v3-int8`) + +### Build + +```bash +# parakeet-cli zuerst bauen +cd parakeet-cli +cargo build --release + +# HotKeet bauen +cd ../HotKeet +cargo build --release +# oder unter Windows: build.cmd +``` + +### Erste Schritte + +1. HotKeet starten – läuft im Tray +2. Rechtsklick auf Tray-Icon → **Einstellungen** +3. **parakeet-cli** und **Modellpfad** per „Durchsuchen…“ auswählen (oder leer lassen = Standard) +4. **Mikrofon** wählen +5. **Speichern** + +Standard-Hotkey: **Ctrl+Shift+D** (drücken = Aufnahme, loslassen = Transkription + Einfügen) + +## Konfiguration + +| Einstellung | Beschreibung | +|-------------|-------------| +| **Hotkey** | Globaler Push-to-Talk (z.B. Ctrl+Shift+D) | +| **Eingabequelle** | Companion-App oder Mikrofon | +| **parakeet-cli Pfad** | Leer = im PATH (Standard: parakeet-cli) | +| **Modellpfad** | Leer = Standardpfad (plattformabhängig) | +| **Einfügemethode** | Auto | Tastaturpuffer | Zwischenablage | + +**Speicherort:** `%LOCALAPPDATA%\HotKeet\settings.json` (Windows) bzw. `~/.config/HotKeet/settings.json` (Linux/macOS) + +## Plattformen + +| Plattform | Status | +|-----------|--------| +| **Windows** | ✅ Voll unterstützt | +| **Linux** | ⚠️ Lauffähig (Tray: libappindicator) | +| **macOS** | ⚠️ Lauffähig | + +Details: [HotKeet/PLATFORM.md](HotKeet/PLATFORM.md) + +## Projektstruktur + +``` +HotKeet/ +├── HotKeet/ # Diktier-App (Rust, egui) +├── parakeet-cli/ # Transkriptions-CLI (Rust, ONNX) +├── LICENSE # MIT +└── README.md +``` + +## Lizenz + +[MIT License](LICENSE)