diff --git a/BUILD.md b/BUILD.md
index 15229bb091..e42545ee7c 100644
--- a/BUILD.md
+++ b/BUILD.md
@@ -127,6 +127,8 @@ If you're on Linux ARM64, run the following:
USE_SYSTEM_FPM=1 task package
```
+On Windows, you can instead run `scripts/build-windows.ps1`, which checks for the required prerequisites (Node, Go, Zig, Task) before invoking `task package`.
+
## Debugging
### Frontend logs
diff --git a/README.de.md b/README.de.md
new file mode 100644
index 0000000000..f64f07e444
--- /dev/null
+++ b/README.de.md
@@ -0,0 +1,120 @@
+
+
+[](https://app.fossa.com/projects/git%2Bgithub.com%2Fwavetermdev%2Fwaveterm?ref=badge_shield)
+
+> Dies ist eine von der Community erstellte deutsche Übersetzung. Die aktuellste Originalversion findest du in [README.md](README.md).
+
+Wave ist ein Open-Source-Terminal mit integrierter KI für macOS, Linux und Windows. Es funktioniert mit jedem beliebigen KI-Modell. Nutze deine eigenen API-Schlüssel für OpenAI, Claude oder Gemini, oder betreibe lokale Modelle über Ollama und LM Studio. Es ist kein Konto erforderlich.
+
+Wave unterstützt außerdem dauerhafte SSH-Sitzungen, die Netzwerkunterbrechungen und Neustarts überstehen, inklusive automatischer Wiederverbindung. Bearbeite entfernte Dateien mit einem integrierten grafischen Editor und sieh dir Dateien direkt im Terminal an, ohne es zu verlassen.
+
+
+
+## Hauptfunktionen
+
+- Wave AI - Kontextbewusster Terminal-Assistent, der deine Terminal-Ausgabe liest, Widgets analysiert und Dateioperationen durchführt
+- Dauerhafte SSH-Sitzungen - Entfernte Terminal-Sitzungen überstehen Verbindungsabbrüche, Netzwerkwechsel und Wave-Neustarts dank automatischer Wiederverbindung
+- Flexible Drag-&-Drop-Oberfläche zum Organisieren von Terminal-Blöcken, Editoren, Webbrowsern und KI-Assistenten
+- Integrierter Editor zum Bearbeiten entfernter Dateien mit Syntax-Highlighting und modernen Editor-Funktionen
+- Umfangreiches Dateivorschausystem für entfernte Dateien (Markdown, Bilder, Video, PDFs, CSVs, Verzeichnisse)
+- Schnelles Vollbild-Umschalten für jeden Block - Terminals, Editoren und Vorschauen für bessere Sichtbarkeit vergrößern und sofort zur Mehrblock-Ansicht zurückkehren
+- KI-Chat-Widget mit Unterstützung für mehrere Modelle (OpenAI, Claude, Azure, Perplexity, Ollama)
+- Command Blocks zum Isolieren und Überwachen einzelner Befehle
+- Ein-Klick-Verbindungen zu entfernten Rechnern mit vollem Terminal- und Dateisystemzugriff
+- Sichere Speicherung von Secrets über native System-Backends - API-Schlüssel und Zugangsdaten lokal speichern und über SSH-Sitzungen hinweg nutzen
+- Umfangreiche Anpassungsmöglichkeiten wie Tab-Themes, Terminal-Stile und Hintergrundbilder
+- Leistungsstarkes `wsh`-Befehlssystem zur Verwaltung deines Workspace über die CLI und zum Austausch von Daten zwischen Terminal-Sitzungen
+- Verbundene Dateiverwaltung mit `wsh file` - Dateien nahtlos zwischen lokalen und entfernten SSH-Hosts kopieren und synchronisieren
+
+## Wave AI
+
+Wave AI ist dein kontextbewusster Terminal-Assistent mit Zugriff auf deinen Workspace:
+
+- **Terminal-Kontext**: Liest Terminal-Ausgabe und Scrollback zur Fehlersuche und Analyse
+- **Dateioperationen**: Dateien lesen, schreiben und bearbeiten mit automatischen Backups und Nutzerfreigabe
+- **CLI-Integration**: Nutze `wsh ai`, um Ausgaben weiterzuleiten oder Dateien direkt über die Kommandozeile anzuhängen
+- **BYOK-Unterstützung**: Bring deine eigenen API-Schlüssel für OpenAI, Claude, Gemini, Azure und andere Anbieter mit
+- **Lokale Modelle**: Betreibe lokale Modelle mit Ollama, LM Studio und anderen OpenAI-kompatiblen Anbietern
+- **Kostenlose Beta**: Enthaltenes KI-Guthaben, während wir die Erfahrung weiter verfeinern
+- **Demnächst**: Befehlsausführung (mit Freigabe)
+
+Mehr erfährst du in unserer [Wave AI-Dokumentation](https://docs.waveterm.dev/waveai) und der [Dokumentation zu Wave AI-Modi](https://docs.waveterm.dev/waveai-modes).
+
+## Installation
+
+Wave Terminal läuft unter macOS, Linux und Windows.
+
+Plattformspezifische Installationsanleitungen findest du [hier](https://docs.waveterm.dev/gettingstarted).
+
+Du kannst Wave Terminal auch direkt installieren von: [www.waveterm.dev/download](https://www.waveterm.dev/download).
+
+### Mindestanforderungen
+
+Wave Terminal läuft auf folgenden Plattformen:
+
+- macOS 11 oder neuer (arm64, x64)
+- Windows 10 1809 oder neuer (x64)
+- Linux basierend auf glibc-2.28 oder neuer (Debian 10, RHEL 8, Ubuntu 20.04 usw.) (arm64, x64)
+
+Der WSH-Helper läuft auf folgenden Plattformen:
+
+- macOS 11 oder neuer (arm64, x64)
+- Windows 10 oder neuer (x64)
+- Linux Kernel 2.6.32 oder neuer (x64), Linux Kernel 3.1 oder neuer (arm64)
+
+## Roadmap
+
+Wave wird ständig weiterentwickelt! Unsere Roadmap wird laufend mit unseren Zielen für jedes Release aktualisiert. Du findest sie [hier](./ROADMAP.md).
+
+Möchtest du zu unseren zukünftigen Releases beitragen? Vernetze dich mit uns auf [Discord](https://discord.gg/XfvZ334gwU) oder erstelle eine [Feature-Anfrage](https://github.com/wavetermdev/waveterm/issues/new/choose)!
+
+## Links
+
+- Homepage — https://www.waveterm.dev
+- Download-Seite — https://www.waveterm.dev/download
+- Dokumentation — https://docs.waveterm.dev
+- X — https://x.com/wavetermdev
+- Discord-Community — https://discord.gg/XfvZ334gwU
+
+## Aus dem Quellcode erstellen
+
+Siehe [Wave Terminal erstellen](BUILD.md).
+
+## Mitwirken
+
+Wave nutzt GitHub Issues für die Fehler- und Aufgabenverfolgung.
+
+Weitere Informationen findest du in unserem [Leitfaden für Mitwirkende](CONTRIBUTING.md), der Folgendes enthält:
+
+- [Möglichkeiten mitzuwirken](CONTRIBUTING.md#contributing-to-wave-terminal)
+- [Richtlinien für Beiträge](CONTRIBUTING.md#before-you-start)
+
+### Wave sponsern ❤️
+
+Wenn dir Wave Terminal nützlich ist - privat oder in deinem Unternehmen - ziehe in Betracht, die Entwicklung zu sponsern.
+
+Sponsoring hilft, die Zeit zu unterstützen, die in den Aufbau und die Pflege des Projekts investiert wird.
+
+- https://github.com/sponsors/wavetermdev
+
+## Lizenz
+
+Wave Terminal ist unter der Apache-2.0-Lizenz lizenziert. Weitere Informationen zu unseren Abhängigkeiten findest du [hier](./ACKNOWLEDGEMENTS.md).
+
diff --git a/README.ko.md b/README.ko.md
index d18ccfaed9..c678b6d166 100644
--- a/README.ko.md
+++ b/README.ko.md
@@ -13,7 +13,7 @@
diff --git a/Taskfile.yml b/Taskfile.yml
index bf37a83e45..a90ae76798 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -124,9 +124,13 @@ tasks:
package:
desc: Package the application for the current platform.
cmds:
+ - task: clean
+ - task: package:build
- npm run build:prod && npm exec electron-builder -- -c electron-builder.config.cjs -p never {{.CLI_ARGS}}
+
+ package:build:
+ internal: true
deps:
- - clean
- npm:install
- build:backend
- build:tsunamiscaffold
diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx
index 05389e99ef..8d05c785d6 100644
--- a/docs/docs/config.mdx
+++ b/docs/docs/config.mdx
@@ -45,6 +45,7 @@ wsh editconfig
| app:disablectrlshiftdisplay | bool | Set to true to disable the Ctrl+Shift visual indicator display (defaults to false) |
| app:focusfollowscursor | string | Controls whether block focus follows cursor movement: `"off"` (default), `"on"` (all blocks), or `"term"` (terminal blocks only) |
| app:tabbar | string | Controls the position of the tab bar: `"top"` (default) for a horizontal tab bar at the top of the window, or `"left"` for a vertical tab bar on the left side of the window |
+| app:language | string | Sets the UI language: `"en"` (default) or `"de"` |
| ai:preset | string | the default AI preset to use |
| ai:baseurl | string | Set the AI Base Url (must be OpenAI compatible) |
| ai:apitoken | string | your AI api token |
diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts
index a5c20d6190..7a834ec2ca 100644
--- a/docs/docusaurus.config.ts
+++ b/docs/docusaurus.config.ts
@@ -31,7 +31,7 @@ const config: Config = {
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: "en",
- locales: ["en"],
+ locales: ["en", "de"],
},
plugins: [
[
@@ -113,6 +113,10 @@ const config: Config = {
className: "header-link-custom custom-icon-github",
"aria-label": "GitHub repository",
},
+ {
+ type: "localeDropdown",
+ position: "right",
+ },
]
: [],
].flat(),
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current.json b/docs/i18n/de/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000000..64666b9e83
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,6 @@
+{
+ "version.label": {
+ "message": "Nächste",
+ "description": "The label for version current"
+ }
+}
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/ai-presets.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/ai-presets.mdx
new file mode 100644
index 0000000000..bc23f39c0c
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/ai-presets.mdx
@@ -0,0 +1,253 @@
+---
+sidebar_position: 3.6
+id: "ai-presets"
+title: "KI-Voreinstellungen (veraltet)"
+---
+:::warning Hinweis zur Abkündigung
+Das KI-Widget und seine Voreinstellungen werden durch [Wave AI](./waveai.mdx) ersetzt. Die aktuellen KI-Funktionen und Konfigurationsoptionen findest du in der Wave-AI-Dokumentation.
+:::
+
+
+
+
+Waves KI-Widget kann über Voreinstellungen (Presets) für verschiedene KI-Anbieter und -Modelle konfiguriert werden. Mit Presets kannst du mehrere KI-Konfigurationen definieren und über das Dropdown-Menü im KI-Widget einfach zwischen ihnen wechseln.
+
+## Wie KI-Voreinstellungen funktionieren
+
+KI-Voreinstellungen werden in `~/.config/waveterm/presets/ai.json` definiert. Du kannst diese Datei einfach bearbeiten mit:
+
+```bash
+wsh editconfig presets/ai.json
+```
+
+Jede Voreinstellung definiert einen vollständigen Satz an Konfigurationswerten für das KI-Widget. Wählst du eine Voreinstellung aus dem Dropdown-Menü, werden diese Konfigurationswerte auf das Widget angewendet. Ist keine Voreinstellung ausgewählt, nutzt das Widget die Standardwerte aus `settings.json`.
+
+Hier ein einfaches Beispiel mit Claude:
+
+```json
+{
+ "ai@claude-sonnet": {
+ "display:name": "Claude 3 Sonnet",
+ "display:order": 1,
+ "ai:*": true,
+ "ai:apitype": "anthropic",
+ "ai:model": "claude-3-5-sonnet-latest",
+ "ai:apitoken": ""
+ }
+}
+```
+
+Um eine Voreinstellung zu deinem Standard zu machen, füge diese eine Zeile zu deiner `settings.json` hinzu:
+
+```json
+{
+ "ai:preset": "ai@claude-sonnet"
+}
+```
+
+:::info
+Du kannst deine Standard-Voreinstellung schnell mit dem Befehl `setconfig` festlegen:
+
+```bash
+wsh setconfig ai:preset=ai@claude-sonnet
+```
+
+Das ist einfacher, als die settings.json direkt zu bearbeiten!
+:::
+
+## Anbieterspezifische Konfigurationen
+
+### Anthropic (Claude)
+
+Um Claude-Modelle zu nutzen, erstelle eine Voreinstellung wie diese:
+
+```json
+{
+ "ai@claude-sonnet": {
+ "display:name": "Claude 3 Sonnet",
+ "display:order": 1,
+ "ai:*": true,
+ "ai:apitype": "anthropic",
+ "ai:model": "claude-3-5-sonnet-latest",
+ "ai:apitoken": ""
+ }
+}
+```
+
+### OpenAI
+
+Um OpenAIs Modelle zu nutzen:
+
+```json
+{
+ "ai@openai-gpt41": {
+ "display:name": "GPT-4.1",
+ "display:order": 2,
+ "ai:*": true,
+ "ai:model": "gpt-4.1",
+ "ai:apitoken": ""
+ }
+}
+```
+
+### Lokale LLMs (Ollama)
+
+Um sich mit einer lokalen Ollama-Instanz zu verbinden:
+
+```json
+{
+ "ai@ollama-llama": {
+ "display:name": "Ollama - Llama2",
+ "display:order": 3,
+ "ai:*": true,
+ "ai:baseurl": "http://localhost:11434/v1",
+ "ai:name": "llama2",
+ "ai:model": "llama2",
+ "ai:apitoken": "ollama"
+ }
+}
+```
+
+Hinweis: `ai:apitoken` ist erforderlich, kann aber einen beliebigen Wert haben, da Ollama ihn ignoriert. Weitere Details in der [Ollama-OpenAI-Kompatibilitätsdokumentation](https://github.com/ollama/ollama/blob/main/docs/openai.md).
+
+### Azure OpenAI
+
+Um sich mit Azure-KI-Diensten zu verbinden:
+
+```json
+{
+ "ai@azure-gpt4": {
+ "display:name": "Azure GPT-4",
+ "display:order": 4,
+ "ai:*": true,
+ "ai:apitype": "azure",
+ "ai:baseurl": "",
+ "ai:model": "",
+ "ai:apitoken": ""
+ }
+}
+```
+
+Hinweis: Füge keine Query-Parameter oder `api-version` in `ai:baseurl` ein. `ai:model` sollte der Name deines Modell-Deployments in Azure sein.
+
+### Perplexity
+
+Um Perplexitys Modelle zu nutzen:
+
+```json
+{
+ "ai@perplexity-sonar": {
+ "display:name": "Perplexity Sonar",
+ "display:order": 5,
+ "ai:*": true,
+ "ai:apitype": "perplexity",
+ "ai:model": "llama-3.1-sonar-small-128k-online",
+ "ai:apitoken": ""
+ }
+}
+```
+
+### Google (Gemini)
+
+Um Googles Gemini-Modelle über [Google AI Studio](https://aistudio.google.com) zu nutzen:
+
+```json
+{
+ "ai@gemini-2.0": {
+ "display:name": "Gemini 2.0",
+ "display:order": 6,
+ "ai:*": true,
+ "ai:apitype": "google",
+ "ai:model": "gemini-2.0-flash-exp",
+ "ai:apitoken": ""
+ }
+}
+```
+
+### OpenRouter
+
+Um OpenRouters Modelle zu nutzen:
+
+```json
+{
+ "ai@openrouter": {
+ "display:name": "OpenRouter (Qwen)",
+ "display:order": 7,
+ "ai:*": true,
+ "ai:model": "qwen/qwen3-next-80b-a3b-thinking",
+ "ai:apitoken": "",
+ "ai:baseurl": "https://openrouter.ai/api/v1"
+ }
+}
+```
+
+## Beispiel mit mehreren Voreinstellungen
+
+Du kannst mehrere Voreinstellungen in deiner `ai.json`-Datei definieren:
+
+```json
+{
+ "ai@claude-sonnet": {
+ "display:name": "Claude 3 Sonnet",
+ "display:order": 1,
+ "ai:*": true,
+ "ai:apitype": "anthropic",
+ "ai:model": "claude-3-5-sonnet-latest",
+ "ai:apitoken": ""
+ },
+ "ai@openai-gpt41": {
+ "display:name": "GPT-4.1",
+ "display:order": 2,
+ "ai:*": true,
+ "ai:model": "gpt-4.1",
+ "ai:apitoken": ""
+ },
+ "ai@ollama-llama": {
+ "display:name": "Ollama - Llama2",
+ "display:order": 3,
+ "ai:*": true,
+ "ai:baseurl": "http://localhost:11434/v1",
+ "ai:name": "llama2",
+ "ai:model": "llama2",
+ "ai:apitoken": "ollama"
+ },
+ "ai@perplexity-sonar": {
+ "display:name": "Perplexity Sonar",
+ "display:order": 4,
+ "ai:*": true,
+ "ai:apitype": "perplexity",
+ "ai:model": "llama-3.1-sonar-small-128k-online",
+ "ai:apitoken": ""
+ }
+}
+```
+
+Der Wert `display:order` bestimmt die Reihenfolge, in der Voreinstellungen im Dropdown-Menü erscheinen.
+
+Denk daran, deine Standard-Voreinstellung in `settings.json` zu setzen:
+
+```json
+{
+ "ai:preset": "ai@claude-sonnet"
+}
+```
+
+## Einen Proxy nutzen
+
+Wenn du KI-Anfragen über einen HTTP-Proxy leiten musst, kannst du die Einstellung `ai:proxyurl` zu jeder Voreinstellung hinzufügen:
+
+```json
+{
+ "ai@claude-with-proxy": {
+ "display:name": "Claude 3 Sonnet (via Proxy)",
+ "display:order": 1,
+ "ai:*": true,
+ "ai:apitype": "anthropic",
+ "ai:model": "claude-3-5-sonnet-latest",
+ "ai:apitoken": "",
+ "ai:proxyurl": "http://proxy.example.com:8080"
+ }
+}
+```
+
+Die Proxy-URL sollte das Format `http://host:port` oder `https://host:port` haben. Diese Einstellung funktioniert mit allen KI-Anbietern außer Wave Cloud AI (dem Standard).
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/claude-code.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/claude-code.mdx
new file mode 100644
index 0000000000..34bb29992b
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/claude-code.mdx
@@ -0,0 +1,131 @@
+---
+sidebar_position: 1.9
+id: "claude-code"
+title: "Claude-Code-Integration"
+---
+
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+# Claude-Code-Tab-Badges
+
+Wenn du mehrere Claude-Code-Sitzungen parallel laufen lässt - eine pro Feature, eine pro Repo, ein paar lang laufende Aufgaben - wird es schwierig, ohne jeden Tab einzeln anzuklicken zu wissen, welcher deine Aufmerksamkeit braucht. Waves Badge-System löst das: Hooks in Claude Code schreiben einen kleinen visuellen Indikator in die Tab-Kopfzeile, sobald etwas Wichtiges passiert, sodass du auf einen Blick siehst, welche Sitzungen warten, fertig sind oder Probleme haben.
+
+:::info
+tl;dr Du kannst diese Seite direkt in Claude Code kopieren und einfügen, und es hilft dir, alles einzurichten!
+:::
+
+## So funktioniert es
+
+Claude Code unterstützt [Lifecycle-Hooks](https://code.claude.com/docs/en/hooks) - Shell-Befehle, die automatisch an bestimmten Punkten einer Sitzung ausgeführt werden. Waves Befehl `wsh badge` setzt oder entfernt einen visuellen Indikator am aktuellen Block oder Tab. Durch das Verknüpfen dieser beiden Dinge erhältst du ein ambientes Bewusstsein über all deine Sitzungen, ohne eine davon beobachten zu müssen.
+
+Badges werden automatisch entfernt, sobald du den Block fokussierst - sie sind also rein ein "Hey, schau hier"-Signal. Sobald du hineinklickst und liest, was passiert, verschwindet das Badge von selbst.
+
+Wave zeigt bereits ein Glockensymbol an, wenn ein Terminal ein BEL-Zeichen ausgibt. Diese Hooks ergänzen das um semantische Badges - *Freigabe benötigt*, *fertig* - die Tab-Wechsel und Splits überstehen.
+
+### Badge-Rollup
+
+Hat ein Tab mehrere Terminals (Blöcke), zeigt Wave das Badge mit der höchsten Priorität in der Tab-Kopfzeile. Bei Gleichstand in der Priorität gewinnt das zuerst gesetzte Badge, sodass das dringendste Signal aus jedem Bereich des Tabs nach oben durchdringt.
+
+## Einrichtung
+
+Diese Hooks kommen in deine globalen Claude-Code-Einstellungen, damit sie für jede Sitzung auf deinem Rechner gelten, nicht nur für ein Projekt.
+
+Füge Folgendes zu `~/.claude/settings.json` hinzu. Wenn du bereits einen `hooks`-Schlüssel hast, führe die Einträge zusammen:
+
+```json
+{
+ "hooks": {
+ "Notification": [
+ {
+ "matcher": "permission_prompt",
+ "hooks": [
+ {
+ "type": "command",
+ "command": "wsh badge bell-exclamation --color '#e0b956' --priority 20 --beep"
+ }
+ ]
+ },
+ {
+ "matcher": "elicitation_dialog",
+ "hooks": [
+ {
+ "type": "command",
+ "command": "wsh badge message-question --color '#e0b956' --priority 20 --beep"
+ }
+ ]
+ }
+ ],
+ "Stop": [
+ {
+ "hooks": [
+ {
+ "type": "command",
+ "command": "wsh badge check --color '#58c142' --priority 10"
+ }
+ ]
+ }
+ ],
+ "PreToolUse": [
+ {
+ "matcher": "AskUserQuestion",
+ "hooks": [
+ {
+ "type": "command",
+ "command": "wsh badge message-question --color '#e0b956' --priority 20 --beep"
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+Das war's. Starte alle laufenden Claude-Code-Sitzungen neu, damit die Hooks wirksam werden.
+
+:::warning Bekanntes Problem
+Es gibt ein bekanntes Problem in Claude Code, bei dem `Notification`-Hooks um mehrere Sekunden verzögert ausgelöst werden können. Diese Verzögerung hat nichts mit Wave zu tun - sie tritt in Claude Code selbst auf. Details siehe [#5186](https://github.com/anthropics/claude-code/issues/5186) und [#19627](https://github.com/anthropics/claude-code/issues/19627).
+:::
+
+## Was jeder Hook macht
+
+### Freigabeabfrage — `bell-exclamation` gold, Priorität 20
+
+Claude Code benötigt gelegentlich deine Freigabe, bevor es fortfahren kann - um einen Befehl auszuführen, eine Datei außerhalb des Projekts zu schreiben oder ein Tool zu nutzen, das eine explizite Berechtigung erfordert. Trifft es auf so etwas, hält es an und wartet. Ohne Signal bemerkst du das vielleicht erst nach Minuten.
+
+Dieser Hook wird beim Benachrichtigungstyp `permission_prompt` ausgelöst und setzt ein hochprioritäres, goldenes Badge mit einem hörbaren Signalton. Priorität 20 bedeutet, dass es jedes andere Badge auf diesem Tab schlägt, sodass eine wartende Sitzung immer über einer fertigen erscheint.
+
+Klickst du in den Tab und genehmigst oder lehnst die Anfrage ab, verschwindet das Badge automatisch.
+
+### Sitzung abgeschlossen — `check` grün, Priorität 10
+
+Wenn Claude Code mit der Antwort fertig ist, setzt dieser Hook ein grünes Häkchen-Badge. Es ist ein dezentes Signal: ein Blick auf die Tableiste zeigt, welche Sitzungen fertig sind, und du kannst ihre Ausgabe in beliebiger Reihenfolge durchsehen.
+
+### AskUserQuestion — `message-question` gold, Priorität 20
+
+Wenn Claude Code das Tool `AskUserQuestion` nutzt, ist es pausiert und wartet auf deine Antwort, bevor es fortfahren kann. Dieser `PreToolUse`-Hook wird direkt vor diesem Tool-Aufruf ausgelöst und setzt dasselbe hochprioritäre goldene Badge wie die Freigabeabfrage.
+
+`PreToolUse`-Hooks können jedes Tool anhand seines Namens abgleichen, sodass du auch für andere Tools Badges hinzufügen kannst - zum Beispiel, um ein Signal zu erhalten, wann immer Claude einen Shell-Befehl ausführt (`Bash`) oder eine Datei bearbeitet (`Edit`). Jeder von Claude Code unterstützte Tool-Name kann als Matcher genutzt werden.
+
+## Eigene Icons und Farben wählen
+
+Icon-Namen sind [Font-Awesome](https://fontawesome.com/icons)-Icon-Namen ohne das Präfix `fa-`. Farben sind beliebige gültige CSS-Farben - Hex-Werte, benannte Farben oder alles andere, was CSS akzeptiert.
+
+Ein paar Icon- und Farbideen:
+
+| Situation | Icon | Farbe |
+|-----------|------|-------|
+| Benutzerdefinierter Alarm mit hoher Priorität | `triangle-exclamation` | `#FF453A` |
+| Blockiert / wartet auf Eingabe | `hourglass-half` | `#FF9500` |
+| Neutral / informativ | `circle-info` | `#429DFF` |
+| Hintergrundaufgabe läuft | `spinner` | `#00FFDB` |
+
+Alle verfügbaren Flags findest du in der [`wsh badge`-Referenz](/wsh-reference#badge).
+
+## Prioritäten anpassen
+
+Die Priorität bestimmt, welches Badge gewinnt, wenn mehrere Blöcke in einem Tab jeweils eines haben. Höhere Zahlen haben Vorrang. Die obigen Standardwerte nutzen:
+
+- **20** für Freigabeabfragen — erscheint immer über allem anderen
+- **10** für abgeschlossene Sitzungen — sichtbar, wenn nichts Dringenderes aktiv ist
+
+Wenn du weitere Hooks hinzufügst, halte blockierende Freigabesignale im oberen Bereich (15–25) und informative Signale im unteren Bereich (5–10).
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/config.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/config.mdx
new file mode 100644
index 0000000000..87bc706c39
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/config.mdx
@@ -0,0 +1,386 @@
+---
+sidebar_position: 3.45
+id: "config"
+title: "Konfiguration"
+---
+
+import { Kbd } from "@site/src/components/kbd";
+import { PlatformProvider, PlatformSelectorButton } from "@site/src/components/platformcontext";
+import { VersionBadge, DeprecatedBadge } from "@site/src/components/versionbadge";
+
+
+
+
+
+
+Waves Konfigurationsdateien befinden sich unter `~/.config/waveterm/`.
+
+Die Hauptkonfigurationsdatei ist `settings.json` (`~/.config/waveterm/settings.json`).
+
+Die Datei ist als weitgehend flaches JSON strukturiert. Statt Unterobjekten nutzen wir bevorzugt
+":" als Ebenentrenner.
+
+:::info
+
+Der einfachste Weg, deine Konfigurationsdateien zu bearbeiten, ist der Befehl wsh editconfig, der deine Wave-Konfigurationsdatei in unserem integrierten Vorschau-Editor öffnet.
+
+```
+wsh editconfig
+```
+
+:::
+
+## Konfigurationsschlüssel
+
+| Schlüsselname | Typ | Funktion |
+| ------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| app:globalhotkey | string | Eine systemweite Tastenkombination, um dein zuletzt genutztes Wave-Fenster zu öffnen. Eine Reihe von Tastennamen, getrennt durch `:`. Weitere Infos unter [Anpassbare systemweite globale Tastenkombination](#anpassbare-systemweite-globale-tastenkombination) |
+| app:dismissarchitecturewarning | bool | Deaktiviert Warnungen beim App-Start, wenn du eine nicht-native Architektur für Wave nutzt. Weitere Infos unter [Warum warnt mich Wave beim Start vor der ARM64-Übersetzung?](./faq#why-does-wave-warn-me-about-arm64-translation-when-it-launches). |
+| app:defaultnewblock | string | Legt den standardmäßigen neuen Block fest (Cmd:n, Cmd:d). "term" für Terminal-Block, "launcher" für Launcher-Block (Standard = "term") |
+| app:showoverlayblocknums | bool | Auf false setzen, um das Blocknummern-Overlay zu deaktivieren, das beim Halten von Strg+Umschalt erscheint (Standard true) |
+| app:ctrlvpaste | bool | Unter Windows/Linux nutzt der Wert null (Standard) Strg+V nur unter Windows. Auf true setzen, um Strg+V auf allen Nicht-macOS-Plattformen zu erzwingen, false, um das Tastenkürzel zu deaktivieren. macOS nutzt unabhängig von dieser Einstellung immer Cmd+V |
+| app:confirmquit | bool | Auf false setzen, um den Bestätigungsdialog beim Beenden von Wave Terminal zu deaktivieren (Standard true, erfordert App-Neustart) |
+| app:hideaibutton | bool | Auf true setzen, um den KI-Button in der Tableiste auszublenden (Standard false) |
+| app:disablectrlshiftarrows | bool | Auf true setzen, um die Strg+Umschalt-Block-Navigations-Tastenkombinationen (`Arrow` und `h/j/k/l`) zu deaktivieren (Standard false) |
+| app:disablectrlshiftdisplay | bool | Auf true setzen, um die visuelle Strg+Umschalt-Anzeige zu deaktivieren (Standard false) |
+| app:focusfollowscursor | string | Steuert, ob der Block-Fokus der Mausbewegung folgt: `"off"` (Standard), `"on"` (alle Blöcke) oder `"term"` (nur Terminal-Blöcke) |
+| app:tabbar | string | Steuert die Position der Tableiste: `"top"` (Standard) für eine horizontale Tableiste oben im Fenster, oder `"left"` für eine vertikale Tableiste links im Fenster |
+| app:language | string | Legt die UI-Sprache fest: `"en"` (Standard) oder `"de"` |
+| ai:preset | string | die standardmäßig zu nutzende KI-Voreinstellung |
+| ai:baseurl | string | Legt die KI-Basis-URL fest (muss OpenAI-kompatibel sein) |
+| ai:apitoken | string | dein KI-API-Token |
+| ai:apitype | string | Standard ist "open_ai", kann aber auch auf "azure" (für spezielle Azure-AI-Behandlung), "anthropic" oder "perplexity" gesetzt werden |
+| ai:name | string | in der Wave-AI-Block-Kopfzeile angezeigter Text |
+| ai:model | string | an die API zu übergebender Modellname |
+| ai:apiversion | string | nur für Azure AI (wenn apitype "azure" ist, ist der Standard "2023-05-15") |
+| ai:orgid | string | |
+| ai:maxtokens | int | maximale Tokenanzahl für die API |
+| ai:timeoutms | int | Timeout (in Millisekunden) für KI-Aufrufe |
+| ai:proxyurl | string | HTTP-Proxy-URL für KI-API-Anfragen (gilt nicht für Wave Cloud AI) |
+| conn:askbeforewshinstall | bool | auf false setzen, um das Popup zu deaktivieren, das fragt, ob du wsh-Erweiterungen auf neuen Rechnern installieren möchtest |
+| conn:localhostdisplayname | string | überschreibt den Anzeigenamen für localhost in der UI (z. B. auf "Mein Laptop" oder "Lokal" setzen, oder auf einen leeren String setzen, um den Namen auszublenden) |
+| term:fontsize | float | die Schriftgröße für den Terminal-Block |
+| term:fontfamily | string | für den Terminal-Block zu nutzende Schriftart |
+| term:disablewebgl | bool | auf true setzen, um WebGL-Beschleunigung im Terminal zu deaktivieren (Standard false) |
+| term:localshellpath | string | zum Überschreiben des Standard-Shell-Pfads für lokale Terminals |
+| term:localshellopts | string[] | zur Übergabe zusätzlicher Parameter an term:localshellpath (Beispiel: `["-NoLogo"]` entfernt für PowerShell den Copyright-Hinweis) |
+| term:copyonselect | bool | auf false setzen, um Terminal-Copy-on-Select zu deaktivieren |
+| term:scrollback | int | Größe des Terminal-Scrollback-Puffers, max. 10000 |
+| term:theme | string | Name der standardmäßig anzuwendenden Terminal-Theme-Voreinstellung (Standard ist "default-dark") |
+| term:transparency | float64 | legt die Hintergrundtransparenz des Terminal-Themes fest (Standard 0.5, 0 = nicht transparent, 1.0 = vollständig transparent) |
+| term:allowbracketedpaste | bool | Bracketed-Paste-Modus im Terminal erlauben (Standard false) |
+| term:shiftenternewline | bool | wenn aktiviert, sendet Umschalt+Enter Escape-Sequenz + Zeilenumbruch (\n) statt Wagenrücklauf, nützlich für Claude Code und ähnliche KI-Coding-Tools (Standard false) |
+| term:macoptionismeta | bool | unter macOS die Option-Taste für Terminal-Tastenkombinationen als Meta-Taste behandeln (Standard false) |
+| term:cursor | string | Terminal-Cursor-Stil. Gültige Werte sind `block` (Standard), `underline` und `bar` |
+| term:cursorblink | bool | wenn aktiviert, blinkt der Terminal-Cursor (Standard false) |
+| term:bellsound | bool | wenn aktiviert, wird beim Empfang der Terminal-Glocke (BEL-Zeichen) der System-Signalton abgespielt (Standard false) |
+| term:bellindicator | bool | wenn aktiviert, wird beim Empfang der Terminal-Glocke ein visueller Indikator im Tab angezeigt (Standard false) |
+| term:osc52 | string | steuert das OSC-52-Zwischenablageverhalten: `always` (Standard, erlaubt OSC 52 jederzeit) oder `focus` (erfordert fokussiertes Fenster und fokussierten Block) |
+| term:durable | bool | macht Remote-Terminal-Sitzungen über Netzwerkabbrüche hinweg dauerhaft (Standard false) |
+| term:showsplitbuttons | bool | wenn aktiviert, werden horizontale und vertikale Split-Buttons in der Terminal-Block-Kopfzeile angezeigt (Standard false) |
+| editor:minimapenabled | bool | auf false setzen, um die Editor-Minimap zu deaktivieren |
+| editor:stickyscrollenabled | bool | aktiviert die stickyScroll-Funktion des Monaco-Editors (heftet Kopfzeilen des aktuellen Kontexts an, z. B. Klassennamen, Methodennamen usw.), Standard false |
+| editor:wordwrap | bool | auf true setzen, um Zeilenumbruch im Editor zu aktivieren (Standard false) |
+| editor:fontsize | float64 | legt die Schriftgröße für den Editor fest (Standard 12px) |
+| editor:inlinediff | bool | auf true setzen, um Diffs inline statt nebeneinander anzuzeigen, false für nebeneinander (Standard ist undefined, wodurch Monacos responsives Verhalten genutzt wird) |
+| preview:showhiddenfiles | bool | auf false setzen, um versteckte Dateien in der Verzeichnisvorschau auszublenden (Standard true) |
+| preview:defaultsort | string | legt die Standard-Sortierspalte für die Verzeichnisvorschau fest. `"name"` (Standard) sortiert alphabetisch aufsteigend nach Namen; `"modtime"` sortiert nach letzter Änderungszeit absteigend (neueste zuerst) |
+| markdown:fontsize | float64 | Schriftgröße für normalen Text beim Rendern von Markdown in der Vorschau. Überschriften werden davon ausgehend hochskaliert (Standard 14px) |
+| markdown:fixedfontsize | float64 | Schriftgröße für Codeblöcke beim Rendern von Markdown in der Vorschau (Standard 12px) |
+| web:openlinksinternally | bool | auf false setzen, um Weblinks im externen Browser zu öffnen |
+| web:defaulturl | string | Standard-Webseite, die im Web-Widget geöffnet wird, wenn keine URL angegeben ist (Startseite) |
+| web:defaultsearch | string | Vorlage für Websuchen. z. B. `https://www.google.com/search?q={query}`. "\{query}" wird durch den Suchbegriff ersetzt |
+| autoupdate:enabled | bool | Aktualisierungssuche aktivieren/deaktivieren (erfordert App-Neustart) |
+| autoupdate:intervalms | float64 | Wartezeit in Millisekunden zwischen Aktualisierungsprüfungen (erfordert App-Neustart) |
+| autoupdate:installonquit | bool | ob Updates beim Beenden automatisch installiert werden sollen (erfordert App-Neustart) |
+| autoupdate:channel | string | der Auto-Update-Kanal "latest" (stabile Builds) oder "beta" (häufiger aktualisiert) (erfordert App-Neustart) |
+| tab:preset | string | eine "bg@"-Voreinstellung, die automatisch auf neue Tabs angewendet wird. z. B. `bg@green`. sollte dem Voreinstellungsschlüssel entsprechen. Veraltet zugunsten von `tab:background` |
+| tab:background | string | eine "bg@"-Voreinstellung, die automatisch auf neue Tabs angewendet wird. z. B. `bg@green`. sollte dem Voreinstellungsschlüssel entsprechen |
+| tab:confirmclose | bool | wenn auf true gesetzt, wird vor dem Schließen eines Tabs ein Bestätigungsdialog angezeigt (Standard false) |
+| widget:showhelp | bool | ob Hilfe-/Tipp-Widgets in der rechten Seitenleiste angezeigt werden sollen |
+| window:transparent | bool | auf true setzen, um Fenstertransparenz zu aktivieren (kann nicht mit `window:blur` kombiniert werden) (nur macOS und Windows, erfordert App-Neustart, siehe [Hinweis zur Windows-Kompatibilität](https://www.electronjs.org/docs/latest/tutorial/custom-window-styles#limitations)) |
+| window:blur | bool | aktiviert die Weichzeichnung des Fensterhintergrunds (kann nicht mit `window:transparent` kombiniert werden) (nur macOS und Windows, erfordert App-Neustart, siehe [Hinweis zur Windows-Kompatibilität](https://www.electronjs.org/docs/latest/tutorial/custom-window-styles#limitations)) |
+| window:opacity | float64 | 0-1, Fensterdeckkraft, wenn `window:transparent` oder `window:blur` gesetzt sind |
+| window:bgcolor | string | legt die Fensterhintergrundfarbe fest (sollte Hex sein: #xxxxxx) |
+| window:reducedmotion | bool | auf true setzen, um die meisten Animationen zu deaktivieren |
+| window:tilegapsize | int | ändert den Standard-Abstand (in CSS-Pixeln) zwischen Blöcken |
+| window:magnifiedblockopacity | float64 | ändert die Deckkraft eines vergrößerten Blocks (muss zwischen 0 und 1 liegen, Standard 0.6) |
+| window:magnifiedblocksize | float64 | ändert die Größe eines vergrößerten Blocks als Prozentsatz der Abmessungen seines übergeordneten Layouts (muss zwischen 0 und 1 liegen, Standard 0.9) |
+| window:magnifiedblockblurprimarypx | int | ändert die Weichzeichnung in CSS-Pixeln, die direkt hinter einem vergrößerten Block angewendet wird (siehe [backdrop-filter](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter) für weitere Infos, wie das angewendet wird) |
+| window:magnifiedblockblursecondarypx | int | ändert die Weichzeichnung in CSS-Pixeln, die auf die sichtbaren Bereiche nicht vergrößerter Blöcke angewendet wird, wenn ein Block vergrößert ist (siehe [backdrop-filter](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter) für weitere Infos, wie das angewendet wird) |
+| window:maxtabcachesize | int | Anzahl der zwischengespeicherten Tabs. Bei zwischengespeicherten Tabs ist der Wechsel zwischen ihnen sehr schnell. (Standard 10) |
+| window:showmenubar | bool | zur Nutzung der nativen Betriebssystem-Menüleiste (nur Windows und Linux, erfordert App-Neustart) |
+| window:nativetitlebar | bool | zur Nutzung der nativen Betriebssystem-Titelleiste statt des Overlays (nur Windows und Linux, erfordert App-Neustart) |
+| window:disablehardwareacceleration | bool | deaktiviert die Chromium-Hardwarebeschleunigung, um grafische Fehler zu beheben (erfordert App-Neustart) |
+| window:fullscreenonlaunch | bool | auf true setzen, um das Vordergrundfenster im Vollbildmodus zu starten (Standard false) |
+| window:savelastwindow | bool | wenn `true`, bleibt das zuletzt geschlossene Fenster erhalten und wird beim nächsten App-Start wieder geöffnet (Standard `true`) |
+| window:confirmonclose | bool | wenn `true`, wird der Nutzer aufgefordert zu bestätigen, dass er ein Fenster schließen möchte, wenn es einen ungespeicherten Workspace mit mehr als einem Tab hat (Standard `true`) |
+| window:dimensions | string | legt die Standardabmessungen für neue Fenster im Format "BREITExHÖHE" fest (z. B. "1920x1080"). Beim Erstellen eines neuen Fensters werden diese Abmessungen automatisch angewendet. Breite und Höhe sollten in Pixeln angegeben werden. |
+| telemetry:enabled | bool | zum Aktivieren/Deaktivieren von Telemetrie |
+
+Als Referenz, dies ist die aktuelle Standardkonfiguration (v0.14.0):
+
+```json
+{
+ "ai:preset": "ai@global",
+ "ai:model": "gpt-5-mini",
+ "ai:maxtokens": 4000,
+ "ai:timeoutms": 60000,
+ "app:defaultnewblock": "term",
+ "app:confirmquit": true,
+ "app:hideaibutton": false,
+ "app:disablectrlshiftarrows": false,
+ "app:disablectrlshiftdisplay": false,
+ "app:focusfollowscursor": "off",
+ "autoupdate:enabled": true,
+ "autoupdate:installonquit": true,
+ "autoupdate:intervalms": 3600000,
+ "conn:askbeforewshinstall": true,
+ "conn:wshenabled": true,
+ "editor:minimapenabled": true,
+ "web:defaulturl": "https://github.com/wavetermdev/waveterm",
+ "web:defaultsearch": "https://www.google.com/search?q={query}",
+ "window:tilegapsize": 3,
+ "window:maxtabcachesize": 10,
+ "window:nativetitlebar": true,
+ "window:magnifiedblockopacity": 0.6,
+ "window:magnifiedblocksize": 0.9,
+ "window:magnifiedblockblurprimarypx": 10,
+ "window:fullscreenonlaunch": false,
+ "window:magnifiedblockblursecondarypx": 2,
+ "window:confirmclose": true,
+ "window:savelastwindow": true,
+ "telemetry:enabled": true,
+ "term:bellsound": false,
+ "term:bellindicator": false,
+ "term:osc52": "always",
+ "term:cursor": "block",
+ "term:cursorblink": false,
+ "term:copyonselect": true,
+ "term:durable": false,
+ "waveai:showcloudmodes": true,
+ "waveai:defaultmode": "waveai@balanced",
+ "preview:defaultsort": "name"
+}
+```
+
+:::warning
+
+Wenn du Wave vor v0.9.0 installiert hast, befindet sich deine Konfigurationsdatei unter
+`~/.waveterm/config/settings.json`. Das gilt auch für alle anderen Konfigurationsdateien:
+`termthemes.json`, `presets.json` und `widgets.json`.
+
+:::
+
+## Auflösung von Umgebungsvariablen
+
+Um Secrets nicht direkt in Konfigurationsdateien zu speichern, unterstützt Wave die Auflösung von Umgebungsvariablen über die Syntax `$ENV:VARIABLE_NAME` oder `$ENV:VARIABLE_NAME:fallback`. Dies funktioniert für jeden String-Wert in jeder Konfigurationsdatei (settings.json, presets.json, ai.json usw.).
+
+```json
+{
+ "ai:apitoken": "$ENV:OPENAI_APIKEY",
+ "ai:baseurl": "$ENV:AI_BASEURL:https://api.openai.com/v1"
+}
+```
+
+## WebBookmarks-Konfiguration
+
+Mit WebBookmarks kannst du Weblinks mit anpassbaren Anzeigeeinstellungen speichern und verwalten. Die Lesezeichen werden in einer JSON-Datei (`bookmarks.json`) als Schlüssel-Wert-Map gespeichert, wobei der Schlüssel (`id`) ein beliebiger Bezeichner für das Lesezeichen ist. Üblicherweise sollten deine IDs mit "bookmark@" beginnen. Im Web-Widget kannst du deine Lesezeichen mit aufrufen.
+
+### Lesezeichen-Struktur
+
+Jedes Lesezeichen folgt dieser Struktur (nur `url` ist erforderlich):
+
+```json
+{
+ "url": "https://example.com",
+ "title": "Example Site",
+ "iconurl": "https://example.com/custom-icon.png",
+ "display:order": 1
+}
+```
+
+### Felder
+
+| Feld | Typ | Beschreibung |
+| ------------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
+| url | string | **Erforderlich.** Die URL des Lesezeichens. |
+| title | string | **Optional.** Ein Anzeigetitel für das Lesezeichen. |
+| icon | string | **Optional, selten genutzt.** Überschreibt das Standard-Favicon mit einem Icon-Namen. |
+| iconcolor | string | **Optional, selten genutzt.** Legt eine benutzerdefinierte Farbe für das angegebene Icon fest. |
+| iconurl | string | **Optional.** Gibt eine benutzerdefinierte Icon-URL an, nützlich, wenn das Favicon nicht korrekt ist (z. B. für Kompatibilität mit dem Dark Mode). |
+| display:order | float64 | **Optional.** Legt die Reihenfolge fest, in der Lesezeichen erscheinen. |
+
+### Beispiel `bookmarks.json`
+
+```json
+{
+ "bookmark@google": {
+ "url": "https://www.google.com",
+ "title": "Google"
+ },
+ "bookmark@claude": {
+ "url": "https://claude.ai",
+ "title": "Claude AI"
+ },
+ "bookmark@wave": {
+ "url": "https://waveterm.dev",
+ "title": "Wave Terminal",
+ "display:order": -1
+ },
+ "bookmark@wave-github": {
+ "url": "https://github.com/wavetermdev/waveterm",
+ "title": "Wave Github",
+ "iconurl": "https://github.githubassets.com/favicons/favicon-dark.png"
+ },
+ "bookmark@chatgpt": {
+ "url": "https://chatgpt.com",
+ "iconurl": "https://cdn.oaistatic.com/assets/favicon-miwirzcw.ico"
+ },
+ "bookmark@wave-pulls": {
+ "url": "https://github.com/wavetermdev/waveterm/pulls",
+ "title": "Wave Pull Requests",
+ "iconurl": "https://github.githubassets.com/favicons/favicon-dark.png"
+ }
+}
+```
+
+### Verhalten
+
+- Ist `iconurl` gesetzt, wird das Icon von der angegebenen URL statt vom Standard-Favicon der Seite geladen.
+- Lesezeichen werden nach `display:order` sortiert (falls angegeben), sonst nach ID.
+- `icon` und `iconcolor` werden selten benötigt, da standardmäßig das Favicon der Seite geladen wird.
+- Favicons werden alle 24 Stunden aktualisiert
+
+## Terminal-Theming
+
+Benutzerdefinierte Terminal-Themes befinden sich unter `~/.config/waveterm/termthemes.json`.
+
+Diese JSON-Datei ist als Objekt strukturiert, wobei jeder Unterschlüssel ein Theme definiert.
+Themes werden angewendet, indem du mit der rechten Maustaste auf die Kopfzeile des Terminals klickst und einen Eintrag aus dem Untermenü "Themes" auswählst. Alternativ können sie auf
+den Metadaten-Schlüssel `term:theme` des Blocks angewendet werden. Dabei wird der JSON-Schlüsselwert als Bezeichner genutzt. Beachte, dass für beste Konsistenz alle Farben im Format "#rrggbb" oder "#rrggbbaa" (aa = Alphakanal für Transparenz) angegeben werden sollten.
+
+```
+wsh setmeta this term:theme="default-dark"
+```
+
+Hier ist ein Beispiel für die Definition eines vollständigen Terminal-Themes. Alle integrierten Themes sind hier definiert: https://github.com/wavetermdev/waveterm/blob/main/pkg/wconfig/defaultconfig/termthemes.json (wenn du ein beliebtes Terminal-Theme hinzufügen möchtest, reiche bitte einen PR ein!)
+
+```json
+{
+ "default-dark": {
+ "display:name": "Default Dark",
+ "display:order": 1,
+ "black": "#757575",
+ "red": "#cc685c",
+ "green": "#76c266",
+ "yellow": "#cbca9b",
+ "blue": "#85aacb",
+ "magenta": "#cc72ca",
+ "cyan": "#74a7cb",
+ "white": "#c1c1c1",
+ "brightBlack": "#727272",
+ "brightRed": "#cc9d97",
+ "brightGreen": "#a3dd97",
+ "brightYellow": "#cbcaaa",
+ "brightBlue": "#9ab6cb",
+ "brightMagenta": "#cc8ecb",
+ "brightCyan": "#b7b8cb",
+ "brightWhite": "#f0f0f0",
+ "gray": "#8b918a",
+ "cmdtext": "#f0f0f0",
+ "foreground": "#c1c1c1",
+ "selectionBackground": "",
+ "background": "#00000077",
+ "cursorAccent": ""
+ }
+}
+```
+
+:::info
+
+Du kannst die Konfigurationsdatei termthemes.json einfach öffnen, indem du Folgendes ausführst:
+
+```
+wsh editconfig termthemes.json
+```
+
+:::
+
+| Schlüsselname | Typ | ANSI FG# | ANSI BG# | Funktion |
+| ------------------- | --------- | -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
+| display:name | string | | | der im UI-Kontextmenü angezeigte Name |
+| display:order | float | | | Einträge im Kontextmenü werden nach display:order sortiert |
+| black | CSS-Farbe | 30 | 40 | Farbe für Schwarz |
+| red | CSS-Farbe | 31 | 41 | Farbe für Rot |
+| green | CSS-Farbe | 32 | 42 | Farbe für Grün |
+| yellow | CSS-Farbe | 33 | 43 | Farbe für Gelb |
+| blue | CSS-Farbe | 34 | 44 | Farbe für Blau |
+| magenta | CSS-Farbe | 35 | 45 | Farbe für Magenta |
+| cyan | CSS-Farbe | 36 | 46 | Farbe für Cyan |
+| white | CSS-Farbe | 37 | 47 | Farbe für Weiß |
+| brightBlack | CSS-Farbe | 90 | 100 | Farbe für helles Schwarz |
+| brightRed | CSS-Farbe | 91 | 101 | Farbe für helles Rot |
+| brightGreen | CSS-Farbe | 92 | 102 | Farbe für helles Grün |
+| brightYellow | CSS-Farbe | 93 | 103 | Farbe für helles Gelb |
+| brightBlue | CSS-Farbe | 94 | 104 | Farbe für helles Blau |
+| brightMagenta | CSS-Farbe | 95 | 105 | Farbe für helles Magenta |
+| brightCyan | CSS-Farbe | 96 | 106 | Farbe für helles Cyan |
+| brightWhite | CSS-Farbe | 97 | 107 | Farbe für helles Weiß |
+| gray | CSS-Farbe | | | aktuell ungenutzt |
+| cmdtext | CSS-Farbe | | | aktuell ungenutzt |
+| foreground | CSS-Farbe | | | Vordergrundfarbe (Standard, wenn kein Farbcode angewendet wird) |
+| background | CSS-Farbe | | | Hintergrundfarbe (Standard, wenn kein Farbcode angewendet wird), muss einen Alphakanal (#rrggbbaa) haben, wenn das Terminal transparent sein soll |
+| cursorAccent | CSS-Farbe | | | Farbe für den Cursor |
+| selectionBackground | CSS-Farbe | | | Hintergrundfarbe für ausgewählten Text |
+
+## Anpassbare systemweite globale Tastenkombination
+
+Wave erlaubt es, eine benutzerdefinierte globale Tastenkombination festzulegen, um von überall auf deinem Computer dein zuletzt genutztes Fenster zu öffnen. Diese heißt `"app:globalhotkey"` in der `settings.json`-Datei und besteht aus einer Reihe von Tastennamen, getrennt durch das Zeichen `:`.
+
+### Beispiele
+
+Als praktisches Beispiel: Angenommen, du möchtest `F5` als globale Tastenkombination nutzen. Dann kannst du einfach den Wert von `"app:globalhotkey"` auf `"F5"` setzen und Wave neu starten, damit dies deine globale Tastenkombination wird.
+
+Als weniger praktisches Beispiel: Angenommen, du nutzt die Kombination der Tasten `Ctrl`, `Option` und `e`. Dann wäre der Wert für diese Tastenkombination `"Ctrl:Option:e"`.
+
+### Erlaubte Tastennamen
+
+Wir unterstützen folgende Tastennamen:
+
+- `Ctrl`
+- `Cmd`
+- `Shift`
+- `Alt`
+- `Option`
+- `Meta`
+- `Super`
+- Ziffern (nicht Numpad), dargestellt durch `c{Digit0}` bis `c{Digit9}`
+- Buchstaben `a` bis `z`
+- F-Tasten `F1` bis `F20`
+- Soft-Tasten `Soft1` bis `Soft4`. Diese sind im Wesentlichen identisch mit `F21` bis `F24`.
+- Leertaste, dargestellt als `Space` oder ein wörtliches Leerzeichen
+- `Enter` (auf dem Mac als "Return" beschriftet)
+- `Tab`
+- `CapsLock`
+- `NumLock`
+- `Backspace` (auf dem Mac als "Delete" beschriftet)
+- `Delete`
+- `Insert`
+- Die Pfeiltasten `ArrowUp`, `ArrowDown`, `ArrowLeft` und `ArrowRight`
+- `Home`
+- `End`
+- `PageUp`
+- `PageDown`
+- `Esc`
+- Lautstärkeregler `AudioVolumeUp`, `AudioVolumeDown`, `AudioVolumeMute`
+- Medien-Steuerung `MediaTrackNext`, `MediaTrackPrevious`, `MediaPlayPause` und `MediaStop`
+- `PrintScreen`
+- Numpad-Tasten, dargestellt durch `c{Numpad0}` bis `c{Numpad9}`
+- Das Numpad-Komma, dargestellt durch `Decimal`
+- Das Numpad-Plus/Addieren, dargestellt durch `Add`
+- Das Numpad-Minus/Subtrahieren, dargestellt durch `Subtract`
+- Der Numpad-Stern/Multiplizieren, dargestellt durch `Multiply`
+- Der Numpad-Schrägstrich/Dividieren, dargestellt durch `Divide`
+
+
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/connections.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/connections.mdx
new file mode 100644
index 0000000000..cde90bdce8
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/connections.mdx
@@ -0,0 +1,284 @@
+---
+sidebar_position: 3.1
+id: "connections"
+title: "Verbindungen"
+---
+
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+# Verbindungen
+
+Wave erlaubt es Nutzern, sich mit verschiedenen Rechnern zu verbinden und sie so zusammenzuführen, dass das jeweils eigene Verhalten erhalten bleibt. Aktuell umfasst dies SSH-Remote-Verbindungen und lokale WSL-Verbindungen.
+
+## Auf eine Verbindung in einem Block zugreifen
+
+Der einfachste Weg, auf Verbindungen zuzugreifen, ist ein Klick auf das -Icon. Von dort aus kannst du je nach gewünschter Verbindung Folgendes eingeben:
+
+Für SSH-Verbindungen:
+
+- `[user]@[host]`
+- `[host]`
+- `[user]@[host]:[port]`
+
+Für WSL-Verbindungen:
+
+- `wsl://`
+
+Alternativ kannst du, wenn die Verbindung bereits in der Dropdown-Liste vorhanden ist, entweder darauf klicken oder mit den Pfeiltasten dorthin navigieren und Enter drücken, um dich zu verbinden.
+
+
+
+## Verschiedene Arten von Verbindungen
+
+Da es mehrere verschiedene Verbindungsarten gibt, haben nicht alle Zugriff auf dieselben Funktionen. SSH- und WSL-Verbindungen funktionieren immer in Terminal-Widgets, und wenn die `wsh`-Shell-Erweiterungen installiert sind, funktionieren sie auch in Vorschau-Widgets und im sysinfo-Widget.
+
+## Was sind wsh-Shell-Erweiterungen?
+
+`wsh` ist ein kleines Programm, das bei der Verwaltung von waveterm hilft, unabhängig davon, mit welchem Rechner du gerade verbunden bist. Es ist immer auf deinem Host-Rechner enthalten, du hast aber auch die Möglichkeit, es bei SSH- und WSL-Verbindungen zu installieren. Wenn es auf der Verbindung installiert ist, befindet es sich unter `~/.waveterm/bin/wsh`. Wenn Wave sich dann mit deiner Verbindung verbindet (und nur dann), passiert Folgendes:
+
+- `~/.waveterm/bin` wird für diese einzelne Sitzung zu deinem `PATH` hinzugefügt. So kann der Nutzer den Befehl `wsh` nutzen, ohne den vollständigen Pfad angeben zu müssen.
+- Mehrere Umgebungsvariablen werden in die Sitzung eingefügt, um bestimmte Aufgaben mit `wsh` zu erleichtern. Diese sind [unten aufgeführt](#zusätzliche-umgebungsvariablen).
+- Die benutzerdefinierten Umgebungsvariablen im Eintrag `cmd:env` von `connections.json` werden in die Sitzung eingefügt.
+- Die in `connections.json` festgelegten benutzerdefinierten Initialisierungsskripte werden ausgeführt. Weitere Informationen zu diesen Skripten findest du im Abschnitt unten.
+
+Falls dies aus irgendeinem Grund fehlschlägt, versucht Wave, ohne `wsh` zu arbeiten. Das erkennst du an einem kleinen ****-Icon in der Block-Kopfzeile. Weitere Informationen dazu, was `wsh` kann, findest du unter [wsh-Befehl](/wsh). Und wenn du den Quellcode von `wsh` einsehen möchtest, findest du ihn [hier](https://github.com/wavetermdev/waveterm/tree/main/cmd/wsh).
+
+Mit installiertem `wsh` kannst du bestimmte Widgets vom entfernten Rechner so ansehen, als wäre er dein Host, zum Beispiel die `files`- und `sysinfo`-Widgets. Zusätzlich kann `wsh` genutzt werden, um Widgets über verschiedene Rechner hinweg zu beeinflussen. Als einfaches Beispiel kannst du ein Widget auf dem Host-Rechner schließen, indem du den `wsh`-Befehl in einem Terminal-Fenster auf einem entfernten Rechner nutzt. Weitere Informationen dazu, was du mit `wsh` erreichen kannst, findest du [hier](/wsh).
+
+### Zusätzliche Umgebungsvariablen
+
+Wie oben erwähnt, fügt `wsh` zur Vereinfachung einige Umgebungsvariablen in Remote-Sitzungen ein. Diese sind unten aufgeführt:
+
+| Variablenname | Beschreibung |
+| -------------------- | ----------------------------------------------------------------------------- |
+| TERM_PROGRAM | Wird in Wave auf `waveterm` gesetzt. |
+| WAVETERM | Wird in Wave auf 1 gesetzt. |
+| WAVETERM_BLOCKID | Die ID des Blocks, der dein aktuelles Terminal-Widget enthält. |
+| WAVETERM_CLIENTID | Die ID des RPC-Clients, der von deinem aktuellen Terminal-Widget genutzt wird. |
+| WAVETERM_CONN | Der Name der von deinem aktuellen Terminal-Widget genutzten Remote-Verbindung. |
+| WAVETERM_TABID | Die ID des Tabs, der dein aktuelles Terminal-Widget enthält. |
+| WAVETERM_VERSION | Die aktuelle Semver-Version von Wave. |
+| WAVETERM_WORKSPACEID | Die ID des Workspace, der dein aktuelles Terminal-Widget enthält. |
+
+# Initialisierungsskripte
+
+Wave bietet dir Optionen, um beim Verbinden mit deinen entfernten Rechnern Initialisierungsskripte auszuführen. Diese werden in `connections.json` definiert und können entweder der Pfad zu einem Skript oder ein kurzes, direkt in der Datei geschriebenes Skript sein. Sind mehrere Skripte definiert, wird das spezifischste für die aktuelle Shell relevante Skript angewendet. Die Schlüsselwörter für die Skripte sind:
+
+| Skript-Schlüsselwort | Shells, in denen es angewendet wird |
+| ------------------- | -------------------- |
+| cmd:initscript | alle Shells |
+| cmd:initscript.sh | bash und zsh |
+| cmd:initscript.bash | bash |
+| cmd:initscript.zsh | zsh |
+| cmd:initscript.pwsh | pwsh |
+| cmd:initscript.fish | fish |
+
+## Eine neue Verbindung zum Dropdown hinzufügen
+
+Die standardmäßig in das Dropdown geladenen SSH-Werte werden durch Auswertung der internen Datei `config/connections.json` sowie deiner Dateien `~/.ssh/config` und `/etc/ssh/ssh_config` ermittelt. Eine neue Verbindung kann auf verschiedene Arten hinzugefügt werden:
+
+- Hinzufügen eines neuen `Host`-Eintrags in einer deiner ssh-Konfigurationsdateien, typischerweise `~/.ssh/config`
+- Hinzufügen eines neuen Eintrags in der internen Datei `config/connections.json`
+- Manuelles Eintippen deiner Verbindung im Verbindungsfeld (bei erfolgreicher Verbindung wird sie zur internen Datei `config/connections.json` hinzugefügt)
+- Nutzung von `wsh ssh [user]@[host]` in deinem Terminal (bei erfolgreicher Verbindung wird sie zur internen Datei `config/connections.json` hinzugefügt)
+
+WSL-Verbindungen werden durch Durchsuchen der installierten WSL-Distributionen hinzugefügt, wie sie in der Windows-Registry erscheinen. Sie befinden sich, ähnlich wie SSH-Verbindungen, ebenfalls in der Datei `config/connections.json`.
+
+## SSH-Konfigurationsanalyse
+
+Aktuell können wir jede SSH-Konfigurationsdatei auswerten, die das Schlüsselwort `Match` nicht enthält. Dieses Schlüsselwort ist mit einer von uns genutzten Bibliothek nicht kompatibel, aber wir hoffen, das bald zu beheben. Während alle anderen gültigen Schlüsselwörter ausgewertet werden, unterstützen wir aktuell nur die Funktionalität einer kleinen Teilmenge davon:
+| Schlüsselwort | Beschreibung |
+|---------|-------------|
+| Host | Das Muster, das beim Verbindungsversuch über `[user]@[host]` abgeglichen wird. Wir listen Hosts auf, die keine Platzhalterzeichen (`*`, `?` oder `!`) enthalten. Auch wenn ein Host-Muster Platzhalter enthält, wird es bei der Ermittlung der zugehörigen Werte wie gewohnt ausgewertet.|
+| User | Der Benutzer der SSH-Remote-Verbindung. Wird standardmäßig auf den aktuellen Benutzer auf dem lokalen Rechner gesetzt, wenn nicht angegeben.|
+|HostName| Der tatsächliche Hostname des Rechners, mit dem man sich verbindet. Auf Wunsch kann auch eine IP-Adresse verwendet werden. Wird standardmäßig auf den Host gesetzt, wenn nicht angegeben.
+| Port | Der Port, über den die Verbindung zum entfernten Rechner hergestellt wird. Standard ist `22`, wenn nicht angegeben.|
+| IdentityFile | Kann pro Host mehrfach angegeben werden. Gibt den Pfad zu einer privaten Identitätsdatei (id_rsa, id_ed25519, id_ecdsa usw.) an, die zur Authentifizierung der Verbindung genutzt wird. Jede wird der Reihe nach ausprobiert, und sie können bei Bedarf mit einer Passphrase verschlüsselt sein. Ist kein Wert gesetzt, wird standardmäßig der Reihe nach Folgendes versucht: ~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519_sk, ~/.ssh/id_dsa.|
+|BatchMode| Wenn auf true gesetzt, wird die Benutzerinteraktion über Passwort-, Challenge/Response- und Public-Key-Passphrase-Authentifizierung deaktiviert. Standardmäßig false.|
+|PubkeyAuthentication| (teilweise) Gibt an, ob Public-Key-Authentifizierung versucht werden soll. Teilweise implementiert, da die Werte `unbound` und `host-bound` sich einfach wie `yes` verhalten. Standard ist `yes`.|
+|PasswordAuthentication| Gibt an, ob Passwort-Authentifizierung versucht werden soll. Standard ist `yes`.|
+|KbdInteractiveAuthentication| Gibt an, ob tastaturinteraktive Authentifizierung versucht werden soll. Standard ist `yes`.|
+|PreferredAuthentications| (teilweise) Gibt die Reihenfolge an, in der der Client Authentifizierungen versuchen soll. Teilweise implementiert, da `gssapi-with-mic` oder `hostbased`-Authentifizierung nicht unterstützt werden. Standard ist `publickey,keyboard-interactive,password`|
+|AddKeysToAgent| (teilweise) Diese Option fügt Schlüssel und ihre zugehörige Passphrase automatisch zu deinem laufenden ssh-Agenten hinzu, sofern aktiviert. Teilweise unterstützt, da nur `yes` und `no` als gültige Eingaben akzeptiert werden. Andere Eingaben wie `confirm` oder ein Zeitintervall verhalten sich wie `no`. Standardwert ist `no`.|
+|IdentityAgent| Gibt den Unix-Domain-Socket an, der zur Kommunikation mit dem SSH-Agenten genutzt wird. Damit kann der Identity-Agent `SSH_AUTH_SOCK` überschrieben werden.|
+|IdentitiesOnly| Gibt an, dass nur die angegebenen Authentifizierungs-Identitätsdateien genutzt werden sollen. Das sind entweder die Standarddateien oder die mit dem Schlüsselwort IdentityFile angegebenen. Akzeptiert `yes` oder `no`. Standardwert ist `no`.|
+|ProxyJump| Gibt einen oder mehrere Jump-Proxys als kommagetrennte Liste an. Jeder wird nacheinander per TCP-Weiterleitung angesteuert, bevor die gewünschte Verbindung (ebenfalls per TCP-Weiterleitung) hergestellt wird. Kann auf `none` gesetzt werden, um die Funktion zu deaktivieren.|
+|UserKnownHostsFile| Gibt den Speicherort einer oder mehrerer Host-Key-Datenbankdateien des Benutzers zur Aufzeichnung vertrauenswürdiger Remote-Verbindungen an. Die Dateinamen werden im selben String, durch Leerzeichen getrennt, angegeben. Standardwert ist `"~/.ssh/known_hosts ~/.ssh/known_hosts2"`.|
+|GlobalKnownHostsFile| Gibt den Speicherort einer oder mehrerer globaler Host-Key-Datenbankdateien zur Aufzeichnung vertrauenswürdiger Remote-Verbindungen an. Die Dateinamen werden im selben String, durch Leerzeichen getrennt, angegeben. Standardwert ist `"/etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2"`.|
+
+### Beispiel für einen SSH-Konfigurationshost
+
+Als kurzes Beispiel könnte ein Host in deiner Konfigurationsdatei so aussehen:
+
+```
+Host myhost
+ User username
+ HostName 203.0.113.254
+ IdentityFile ~/.ssh/id_rsa
+ AddKeysToAgent yes
+```
+
+Du könntest dann mit `myhost` oder `username@myhost` auf diese Verbindung zugreifen. Und wenn du manuell einen Port angeben möchtest, z. B. Port 2222, kannst du das entweder tun, indem du `Port 2222` zur Konfigurationsdatei hinzufügst, oder indem du dich mit `username@myhost:2222` verbindest.
+
+## Interne SSH-Konfiguration
+
+Zusätzlich zur regulären ssh-Konfigurationsdatei hat Wave auch eine eigene Konfigurationsdatei zur Verwaltung separater Variablen. Dazu gehören
+| Schlüsselwort | Beschreibung |
+|---------|-------------|
+| conn:wshenabled | Dieser Boolean erlaubt die Nutzung von `wsh` für deine Verbindung. Ist er auf `false` gesetzt, wird `wsh` für diese Verbindung nie genutzt. Standard ist `true`.|
+| conn:askbeforewshinstall | Dieser Boolean wird genutzt, um den Benutzer vor der Installation von wsh zu fragen. Ist er auf false gesetzt, wird `wsh` stattdessen automatisch ohne Nachfrage installiert. Standard ist `true`.|
+| conn:wshpath | Ein String, der den Pfad zur ausführbaren `wsh`-Datei auf der Verbindung angibt. Standard ist `"~/.waveterm/bin/wsh"`.|
+| conn:shellpath | Ein String, der den Pfad zur ausführbaren Shell-Datei auf der Verbindung angibt. Wenn nicht gesetzt, wird die Ausgabe von `$SHELL` auf der Verbindung genutzt.|
+| conn:ignoresshconfig | Dieser Boolean erlaubt es Wave, die Datei `~/.ssh/config` bei der Auflösung von Schlüsselwörtern für diese Verbindung zu ignorieren. Die regulären Standardwerte werden genutzt, aber alle Änderungen daran müssen stattdessen in der Datei `connections.json` angegeben werden. Standard ist false.|
+| display:hidden | Dieser Boolean blendet die Verbindung aus der Dropdown-Liste aus. Standard ist `false` |
+| display:order | Dieser Float bestimmt die Reihenfolge der Verbindungen im Verbindungs-Dropdown. Standard ist `0`.|
+| term:fontsize | Dieser Int kann genutzt werden, um die Terminal-Schriftgröße für Blöcke zu überschreiben, die diese Verbindung nutzen. Die Block-Metadaten haben Vorrang vor dieser Einstellung. Standard ist null, was bedeutet, dass stattdessen die globale Einstellung genutzt wird. |
+| term:fontfamily | Dieser String kann genutzt werden, um eine Terminal-Schriftart für Blöcke anzugeben, die diese Verbindung nutzen. Die Block-Metadaten haben Vorrang vor dieser Einstellung. Standard ist null, was bedeutet, dass stattdessen die globale Einstellung genutzt wird. |
+| term:theme | Dieser String kann genutzt werden, um ein Terminal-Theme für Blöcke anzugeben, die diese Verbindung nutzen. Die Block-Metadaten haben Vorrang vor dieser Einstellung. Standard ist null, was bedeutet, dass stattdessen die globale Einstellung genutzt wird. |
+| cmd:env | Ein JSON-Objekt mit Schlüssel-Wert-Paaren von Umgebungsvariablen und dem Wert, auf den sie für diesen Remote-Rechner gesetzt werden sollen. Funktioniert nur, wenn `wsh` aktiviert ist.
+| cmd:initscript | Ein Skript oder ein Pfad zu einem Skript, das beim Initialisieren dieser Verbindung mit einer beliebigen Shell ausgeführt wird. Funktioniert nur, wenn `wsh` aktiviert ist. |
+| cmd:initscript.sh | Ein Skript oder ein Pfad zu einem Skript, das beim Initialisieren dieser Verbindung mit POSIX-Shells wie `bash` oder `zsh` ausgeführt wird. Funktioniert nur, wenn `wsh` aktiviert ist.
+| cmd:initscript.bash | Ein Skript oder ein Pfad zu einem Skript, das beim Initialisieren dieser Verbindung mit der `bash`-Shell ausgeführt wird. Funktioniert nur, wenn `wsh` aktiviert ist. |
+| cmd:initscript.zsh | Ein Skript oder ein Pfad zu einem Skript, das beim Initialisieren dieser Verbindung mit der `zsh`-Shell ausgeführt wird. Funktioniert nur, wenn `wsh` aktiviert ist. |
+| cmd:initscript.pwsh | Ein Skript oder ein Pfad zu einem Skript, das beim Initialisieren dieser Verbindung mit der `pwsh`-Shell ausgeführt wird. Funktioniert nur, wenn `wsh` aktiviert ist. |
+| cmd:initscript.fish | Ein Skript oder ein Pfad zu einem Skript, das beim Initialisieren dieser Verbindung mit der `fish`-Shell ausgeführt wird. Funktioniert nur, wenn `wsh` aktiviert ist. |
+| ssh:user | Ein String, der den Benutzernamen der Verbindung angibt. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:hostname | Ein String, der den internen Hostnamen der Verbindung angibt. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:port | Ein String, der den numerischen Port für die Verbindung angibt. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:identityfile | Eine Liste von Strings mit den Pfaden zu genutzten Identitätsdateien. Ist ein `wsh ssh`-Befehl mit dem Flag `-i` erfolgreich, wird die Identitätsdatei automatisch hier hinzugefügt. Diese werden vor den Werten aus `~/.ssh/config` genutzt.|
+| ssh:identitiesonly | Ein Boolean, der angibt, ob nur die angegebenen Identitätsdateien genutzt werden sollen. Das bedeutet nur die mit dem Flag `ssh:identityfile` gesetzten Dateien oder die Standardwerte. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:batchmode | Ein Boolean, der angibt, ob Passwort- und Passphrase-Abfragen übersprungen werden sollen. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:pubkeyauthentication | Ein Boolean, der angibt, ob Public-Key-Authentifizierung aktiviert ist. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:passwordauthentication | Ein Boolean, der angibt, ob Passwort-Authentifizierung aktiviert ist. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird. |
+| ssh:passwordsecretname | Ein String, der den Namen eines im [Secret-Speicher](/secrets) gespeicherten Secrets angibt, das als SSH-Passwort genutzt werden soll. Ist dieser gesetzt, wird dieses Passwort automatisch für die Passwort-Authentifizierung genutzt, anstatt den Benutzer zu fragen. |
+| ssh:kbdinteractiveauthentication | Ein Boolean, der angibt, ob tastaturinteraktive Authentifizierung aktiviert ist. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird. |
+| ssh:preferredauthentications | Eine Liste von Strings, die eine Reihenfolge verschiedener Authentifizierungsarten angibt. Jede Authentifizierungsart wird der Reihe nach versucht. Unterstützt werden `"publickey"`, `"keyboard-interactive"` und `"password"` als gültige Typen. Andere Authentifizierungsarten werden nicht behandelt und übersprungen. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:addkeystoagent | Ein Boolean, der angibt, ob die für eine Verbindung genutzten Schlüssel zum ssh-Agenten hinzugefügt werden sollen. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:identityagent | Ein String, der den Pfad zum Unix-Domain-Socket des Identity-Agenten angibt. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:proxyjump | Eine Liste von Strings, die die Namen von Hosts angibt, die nacheinander per TCP-Weiterleitung angesteuert werden müssen, um eine Verbindung herzustellen. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:userknownhostsfile | Eine Liste mit den Pfaden aller Host-Key-Datenbankdateien des Benutzers, die zur Nachverfolgung autorisierter Verbindungen genutzt werden. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+| ssh:globalknownhostsfile | Eine Liste mit den Pfaden aller globalen Host-Key-Datenbankdateien, die zur Nachverfolgung autorisierter Verbindungen genutzt werden. Kann genutzt werden, um den Wert in `~/.ssh/config` zu überschreiben oder ihn zu setzen, wenn die ssh-Konfiguration ignoriert wird.|
+
+### SSH-Agent-Erkennung
+
+Wave löst den Pfad des Identity-Agenten in dieser Reihenfolge auf:
+
+- Ist `ssh:identityagent` (oder `IdentityAgent` in der SSH-Konfiguration) für die Verbindung gesetzt, wird dieser Socket oder diese Pipe genutzt.
+- Ist unter Windows nichts gesetzt, greift Wave auf die integrierte OpenSSH-Agenten-Pipe `\\.\pipe\openssh-ssh-agent` zurück. Stelle sicher, dass der Dienst **OpenSSH Authentication Agent** läuft.
+- Ist unter macOS/Linux nichts gesetzt, fragt Wave deine Shell-Umgebung nach `SSH_AUTH_SOCK`, um den Agentenpfad automatisch zu erkennen.
+
+### Beispiele für interne Konfigurationen
+
+Hier sind ein paar Beispiele für Dinge, die du mit der internen Konfigurationsdatei `connections.json` tun kannst:
+
+#### Eine Verbindung ausblenden
+
+Angenommen, du hast in deiner `~/.ssh/config`-Datei eine Verbindung namens `github.com`, die im Verbindungs-Dropdown als `git@github.com` erscheint. Obwohl sie aus Authentifizierungsgründen in die Konfigurationsdatei gehört, ergibt es keinen Sinn, dass sie im Dropdown erscheint, da keine Verbindung zu einer entfernten Umgebung damit hergestellt wird. In diesem Fall kannst du sie wie im folgenden Beispiel ausblenden:
+
+```json
+{
+ <... weitere Verbindungen hier ...>,
+ "git@github.com" : {
+ "display:hidden": true
+ },
+ <... weitere Verbindungen hier ...>
+}
+```
+
+#### Eine Verbindung verschieben
+
+Angenommen, du hast eine Verbindung namens `rarelyused`, die im Verbindungs-Dropdown als `myusername@rarelyused:9999` erscheint. Da sie so selten genutzt wird, möchtest du sie weiter hinten in der Liste haben. In diesem Fall kannst du sie wie im folgenden Beispiel verschieben:
+
+```json
+{
+ <... weitere Verbindungen hier ...>,
+ "myusername@rarelyused:9999" : {
+ "display:order": 100
+ },
+ <... weitere Verbindungen hier ...>
+}
+```
+
+#### Eine Verbindung mit einem Theme versehen
+
+Angenommen, du hast eine Verbindung namens `myhost`, die im Verbindungs-Dropdown als `myusername@myhost` erscheint. Du nutzt diese Verbindung häufig, verwechselst sie aber immer wieder mit deinen lokalen Verbindungen. In diesem Fall kannst du die interne Konfigurationsdatei nutzen, um sie anders zu gestalten. Zum Beispiel:
+
+```json
+{
+ <... weitere Verbindungen hier ...>,
+ "myusername@myhost" : {
+ "term:theme": "warmyellow",
+ "term:fontsize": 16,
+ "term:fontfamily": "menlo"
+ },
+ <... weitere Verbindungen hier ...>
+}
+```
+
+Dieses Theme, diese Schriftgröße und diese Schriftart gelten dann nur für Widgets, die diese Verbindung nutzen.
+
+### Vollständig intern definiert
+
+Angenommen, du möchtest eine Verbindung einrichten, hast aber keine Lust, die Syntax von `~/.ssh/config` zu lernen. In diesem Fall kannst du die Verbindung vollständig in deiner `connections.json`-Datei definieren. Zum Beispiel:
+
+```json
+{
+ <... weitere Verbindungen hier ...>,
+ "myusername@myhost" : {
+ "ssh:hostname": "190.0.2.0",
+ "ssh:identityfile": ["~/.ssh/myidentityfile"],
+ "ssh:identitiesonly": true,
+ "ssh:addkeystoagent": true
+ },
+ <... weitere Verbindungen hier ...>
+}
+```
+
+Dadurch wird eine Verbindung erstellt, ohne dass sie in der Datei `~/.ssh/config` vorhanden sein muss. Zusätzlich sind ein paar weitere Optionen als Beispiel gesetzt, wie das gemacht werden kann.
+
+### wsh für eine Verbindung deaktivieren
+
+Wave bietet zwar eine Option, `wsh` beim erstmaligen Verbinden mit einem entfernten Rechner zu deaktivieren, es gibt jedoch Fälle, in denen du es nachträglich deaktivieren möchtest. Der einfachste Weg dafür ist, die Datei `connections.json` zu bearbeiten. Angenommen, die Verbindung erscheint im Dropdown als `root@wshless`. Dann kannst du sie manuell mit folgender Zeile deaktivieren:
+
+```json
+{
+ <... weitere Verbindungen hier ...>,
+ "root@wshless" : {
+ "conn:enablewsh": false,
+ },
+ <... weitere Verbindungen hier ...>
+}
+```
+
+Beachte, dass dieselbe Zeile automatisch zu deiner `connections.json`-Datei hinzugefügt wird, wenn du `wsh` beim erstmaligen Verbinden in der GUI deaktivierst.
+
+## Verbindungen mit der CLI verwalten
+
+Der Befehl `wsh` bietet einige speziell für die Interaktion mit Verbindungen gedachte Befehle. Du findest sie [hier](/wsh-reference#conn).
+
+## Fehlerbehebung bei Verbindungen
+
+### Log-Dateien
+
+Gibt es Probleme mit Verbindungen, ist der einfachste erste Schritt, das Debugging in einem Terminal-Widget zu aktivieren, das versucht, sich zu verbinden. Klicke dazu auf den ****-Button und fahre mit der Maus über den Eintrag **`Debug Connection`**. Von dort aus kannst du zwei Log-Level auswählen, `Info` und `Verbose`. Danach werden während der Verbindung Debug-Informationen im Terminal ausgegeben.
+
+Reicht das nicht aus, kannst du auch die vollständige Log-Datei einsehen. Führe dazu den Befehl `wsh wavepath log` aus, um den Speicherort einer Log-Datei zu erhalten.
+
+### Bekannte Einschränkungen
+
+Tritt beim Einrichten von `wsh` ein Fehler auf, startet deine Verbindung trotzdem ohne `wsh`. Abhängig von den Debug-Informationen kann dies jedoch verschiedene Ursachen haben.
+
+#### Shell-Typ
+
+Wave kann `wsh` in folgende Shells einfügen:
+
+- bash
+- zsh
+- pwsh (powershell)
+- fish
+
+Ist die Shell eine andere, funktioniert der `wsh`-Befehl unter Umständen standardmäßig nicht. Der einfachste Weg, das aktuell zu beheben, ist der Wechsel des Shell-Typs. Das geht, indem du den Wert `conn:shellpath` mit einem Pfad zu einer der oben genannten Shells in der Datei `connections.json` für die genutzte Verbindung setzt. Alternativ kannst du den Befehl `chsh` nutzen, um die Shell in dieser Verbindung zu ändern, was sich aber auch außerhalb von Wave auswirkt. Starte Wave anschließend neu, damit die Änderungen wirksam werden.
+
+#### AllowTcpForwarding in sshd
+
+Manche Systeme haben sshd standardmäßig so konfiguriert, dass TCP-Weiterleitung deaktiviert ist. Das findest du auf der Verbindung in der Datei `/etc/ssh/sshd_config`. Suche dort nach der Zeile mit `AllowTcpForwarding`. Ist diese auf `no` gesetzt, ist dies wahrscheinlich der Grund, warum `wsh` auf deiner Verbindung nicht funktioniert. Um `wsh` zum Laufen zu bringen, setze den Wert für `AllowTcpForwarding` auf `yes` oder `local` (beide bieten unterschiedliche Berechtigungsstufen, funktionieren aber in diesem Fall beide). Starte anschließend den `sshd`-Dienst mit der von deinem entfernten Rechner bereitgestellten Methode neu. Starte danach Wave neu, damit es sich mit dieser Änderung neu verbinden kann.
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/customization.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/customization.mdx
new file mode 100644
index 0000000000..a4a9407912
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/customization.mdx
@@ -0,0 +1,83 @@
+---
+sidebar_position: 3.2
+id: "customization"
+title: "Anpassung"
+---
+
+## Tab-Themes
+
+
+
+Klicke mit der rechten Maustaste auf einen beliebigen Tab, um ein Menü zu öffnen, in dem du den Tab umbenennen und verschiedene Hintergründe auswählen kannst.
+
+Es ist auch möglich, eigene Hintergrund-Themes mit benutzerdefinierten Farben, Verläufen, Bildern und mehr zu erstellen, indem du deine Konfigurationsdatei backgrounds.json bearbeitest. Wie Waves integrierte Tab-Hintergründe definiert sind, kannst du in der [Standard-backgrounds.json-Datei](https://github.com/wavetermdev/waveterm/blob/main/pkg/wconfig/defaultconfig/backgrounds.json) nachsehen.
+
+Um standardmäßig einen Tab-Hintergrund auf alle neuen Tabs anzuwenden, setze den Schlüssel `tab:background` in deiner [Wave-Konfigurationsdatei](/config) auf einen der voreingestellten Hintergrund-Schlüssel (z. B. `"bg@ocean-depths"`). Die verfügbaren integrierten Hintergrund-Schlüssel findest du in der [Standard-backgrounds.json-Datei](https://github.com/wavetermdev/waveterm/blob/main/pkg/wconfig/defaultconfig/backgrounds.json).
+
+## Terminal-Anpassung
+
+#### Terminal-Theme
+
+
+
+Klicke mit der rechten Maustaste auf den Kopfbereich eines beliebigen Terminal-Blocks, um ein Menü zu öffnen, in dem du ein Terminal-Theme
+für dieses Terminal festlegen kannst.
+
+Du kannst das Standard-Theme für alle Terminals (deren Theme nicht manuell überschrieben wurde) festlegen, indem du deine settings.json-Datei bearbeitest, den Schlüssel `term:theme` hinzufügst und ihn auf den passenden Schlüssel setzt. Die Schlüssel findest du
+in der [Standard-termthemes.json-Datei](https://github.com/wavetermdev/waveterm/blob/main/pkg/wconfig/defaultconfig/termthemes.json).
+
+Wenn du eine eigene termthemes.json-Datei im Konfigurationsverzeichnis hinzufügst, kannst du auch eigene Terminal-Themes erstellen (folge einfach demselben Format).
+
+#### Schriftgröße
+
+Über dasselbe Kontextmenü kannst du auch die Schriftgröße des Terminals ändern. Um die Standard-Schriftgröße für alle deine (nicht überschriebenen) Terminals zu ändern, setze den Konfigurationsschlüssel `term:fontsize` auf die gewünschte Größe, z. B. `{ "term:fontsize": 14}`.
+
+#### Schriftart
+
+Es gibt keine Benutzeroberfläche, um die Standard-Terminal-Schriftart zu bearbeiten. Sie _kann_ aber überschrieben werden. In deiner settings.json-Datei kannst du den Schlüssel `term:fontfamily` hinzufügen und auf eine Schriftart setzen, die auf deinem lokalen System _installiert_ ist. Wenn du eine nicht installierte oder eine nicht dicktengleiche (non-monospace) Schriftart angibst, sieht dein Terminal schrecklich aus (mach das nicht 🙂) - lösche den Schlüssel, um zur Standardschrift zurückzukehren.
+
+## Widget-Seitenleiste
+
+
+
+Siehe [Benutzerdefinierte Widgets](/customwidgets) für eine ausführliche Dokumentation dazu, wie du änderst, was in deiner rechten Widget-Seitenleiste erscheint.
+
+Mit widgets.json kannst du beliebige Standard-Widgets entfernen und eigene Widgets hinzufügen. Du kannst Icons, Farben, Text und Standardwerte (wie Verzeichnisse, Webseiten, KI-Modell, Remote-Verbindung, Befehle usw.) deiner benutzerdefinierten Widgets vollständig anpassen.
+
+Du kannst die Hilfe-Widgets unten rechts auch ausblenden, indem du den Konfigurationsschlüssel `widget:showhelp` auf `false` setzt.
+
+## Tab-Hintergründe
+
+Wave unterstützt leistungsstarke, benutzerdefinierte Hintergründe für deine Tabs mit Bildern, Mustern, Verläufen und Farben. Der schnellste Weg, einen Bildhintergrund festzulegen, ist der Befehl `wsh setbg`:
+
+```bash
+# Bildhintergrund mit 50% Deckkraft (Standard) festlegen
+wsh setbg ~/pictures/background.jpg
+
+# Farbhintergrund festlegen (Anführungszeichen verhindern, dass # als Shell-Kommentar interpretiert wird)
+wsh setbg "#ff0000" # Hex-Farbe
+wsh setbg forestgreen # CSS-Farbname
+
+# Deckkraft anpassen
+wsh setbg --opacity 0.3 ~/pictures/light-pattern.png
+wsh setbg --opacity 0.7 # nur die Deckkraft des aktuellen Hintergrunds ändern
+
+# Optionen zur Bildpositionierung
+wsh setbg --tile ~/pictures/texture.png # gekacheltes Muster erstellen
+wsh setbg --center ~/pictures/logo.png # zentrieren ohne Skalierung
+wsh setbg --center --size 200px ~/pictures/logo.png # zentrieren mit bestimmter Größe (px, %, auto)
+
+# Hintergrund entfernen
+wsh setbg --clear
+```
+
+Du kannst jedes JPEG-, PNG-, GIF-, WebP- oder SVG-Bild als Hintergrund verwenden. Die Option `--center` ist besonders nützlich für Logos oder Icons, bei denen die Originalgröße beibehalten werden soll.
+
+Um die Metadaten für einen Hintergrund in der Vorschau zu sehen, ohne ihn anzuwenden, nutze das Flag `--print`:
+
+```bash
+wsh setbg --print "#ff0000"
+```
+
+Weitere fortgeschrittene Anpassungsoptionen, einschließlich Verläufe, Farben und das Speichern eigener benutzerdefinierter Hintergründe, findest du in unserer Dokumentation zu [Tab-Hintergründen](/tab-backgrounds).
+
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/customwidgets.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/customwidgets.mdx
new file mode 100644
index 0000000000..64ed40efd0
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/customwidgets.mdx
@@ -0,0 +1,428 @@
+---
+sidebar_position: 6
+id: "customwidgets"
+title: "Benutzerdefinierte Widgets"
+---
+
+# Benutzerdefinierte Widgets
+
+Wave erlaubt es Nutzern, eigene Widgets zu erstellen, um ihre Erfahrung individuell an das anzupassen, was für sie funktioniert. Wir planen, dies in Zukunft stark zu erweitern, aber schon jetzt ist es möglich, Widgets zu erstellen, auf die du per Knopfdruck zugreifen kannst. Alle Widgets können durch Bearbeiten der Datei `/config/widgets.json` erstellt werden. Durch Hinzufügen eines Widgets zu dieser Datei kannst du Widgets zur Widget-Leiste hinzufügen. Standardmäßig sieht die Widget-Leiste so aus:
+
+
+Durch Hinzufügen weiterer Widgets kannst du eine Widget-Leiste erhalten, die so aussieht:
+
+
+
+## Der Aufbau eines Widgets
+
+Alle Widgets haben eine ähnliche Struktur, die ungefähr wie im folgenden Beispiel aussieht:
+
+```json
+"": {
+ "icon": "",
+ "label": "",
+ "color": "",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "cmd",
+ "cmd": ""
+ }
+ }
+}
+```
+
+Das besteht aus mehreren Teilen. Zunächst hat jedes Widget einen eindeutigen Bezeichner. Der zu diesem Namen gehörige Wert ist der äußere `WidgetConfigType`. Er ist unten rot umrandet:
+
+
+
+Dieser `WidgetConfigType` wird von allen Widget-Typen geteilt. Das heißt, alle Widgets — unabhängig vom Typ — nutzen dafür dieselben Schlüssel. Die zulässigen Schlüssel sind:
+
+| Schlüssel | Beschreibung |
+| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| "display:order" | (optional) Überschreibt die Reihenfolge der Widgets mit einer Zahl, falls du eine andere Reihenfolge als in der Datei `widgets.json` möchtest. Standard ist 0. |
+| "icon" | (optional) Der Name eines [Font-Awesome-Icons](#font-awesome-icons). Standard ist `"browser"`. |
+| "color" | (optional) Ein String, der eine Farbe wie in CSS darstellt. Hex-Codes und benutzerdefinierte CSS-Eigenschaften sind eingeschlossen. Standard ist `"var(--secondary-text-color)"`, eine Farbe, die Wave für Text nutzt, der sich von anderem Text abheben soll. Werkseitig ist das `"#c3c8c2"`. |
+| "label" | (optional) Ein String, der die Beschriftung unter dem Widget darstellt. Er dient auch als Tooltip beim Hovern, wenn der Schlüssel `"description"` nicht ausgefüllt ist. Standardmäßig null. |
+| "description" | (optional) Eine Beschreibung dessen, was das Widget tut. Ist sie angegeben, dient sie als Tooltip beim Hovern. Standardmäßig null. |
+| "magnified" | (optional) Ein Boolean, der angibt, ob das Widget vergrößert gestartet werden soll. Standardmäßig false. |
+| "blockdef" | Hier wird der nicht-visuelle Teil des Widgets definiert. Beachte, dass alle weiteren Definitionen innerhalb eines meta-Objekts in diesem stattfinden. |
+
+
+:::info
+
+**Font-Awesome-Icons**
+
+[Font Awesome](https://fontawesome.com/search) bietet eine Vielzahl nützlicher Icons, die du als Widget-Icon in deiner App verwenden kannst. Im einfachsten Fall gibst du nur den Icon-Namen an, und er wird genutzt. Zum Beispiel liefert der String `"house"` ein Icon mit einem Haus. Wir erlauben dir auch, verschiedene Stile auf dein Icon anzuwenden, indem du den Namen wie folgt änderst:
+
+| Format | Beschreibung |
+| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| <icon name> | Das einfache Icon ohne zusätzliche Stile. |
+| solid@<icon name> | Fügt dem Icon die Klasse `fa-solid` hinzu, um den Inhalt mit einer Füllfarbe statt eines Hintergrunds zu füllen. |
+| regular@<icon name> | Fügt dem Icon die Klasse `fa-regular` hinzu, damit der Inhalt keine Füllfarbe hat und stattdessen eine Standardumrisslinie nutzt. |
+| brands@<icon name> | Erforderlich, um einem markenbezogenen Icon die notwendige Klasse `fa-brands` hinzuzufügen. Ohne dies werden Marken-Icons nicht korrekt gerendert. Funktioniert nicht mit Icons, die keine Marken-Icons sind. |
+
+:::
+
+Die übrigen Optionen sind Teil des inneren `MetaTSType` (im Bild blau umrandet). Er enthält alle Details dazu, wie das Widget tatsächlich funktioniert. Die gültigen Schlüssel variieren je nach Widget-Typ. Sie werden im Folgenden im Detail behandelt.
+
+## Terminal- und CLI-Widgets
+
+Ein Terminal-Widget oder CLI-Widget ist ein Widget, das einfach ein Terminal öffnet und einen CLI-Befehl ausführt. Sie sehen meist etwa so aus wie im Beispiel unten:
+
+```json
+{
+ <... other widgets go here ...>,
+ "": {
+ "icon": "",
+ "label": "",
+ "color": "",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "cmd",
+ "cmd": ""
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Der `WidgetConfigType` nutzt die üblichen, allen Widgets gemeinsamen Optionen. Der `MetaTSType` kann die unten aufgeführten Schlüssel enthalten:
+
+| Schlüssel | Beschreibung |
+| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| "view" | Ein String, der den allgemeinen Widget-Typ angibt. Bei benutzerdefinierten Terminal-Widgets muss dies auf `"term"` gesetzt sein. |
+| "controller" | Ein String, der den Typ des genutzten Befehls angibt. Für dauerhaftere Shell-Sitzungen auf "shell" setzen. Für einmalige Befehle auf `"cmd"` setzen. Ist `"cmd"` gesetzt, hat das Widget in seiner Kopfzeile einen zusätzlichen Aktualisieren-Button, der ein erneutes Ausführen des Befehls erlaubt. |
+| "cmd" | (optional) Ist `"controller"` auf `"cmd"` gesetzt, gibt diese Option den tatsächlich auszuführenden Befehl an. Da er als Befehl ausgeführt wird, gibt es keine Shell-Sitzung, es sei denn, du startest einen Befehl, der selbst eine Shell-Sitzung enthält. Standard ist ein leerer String. |
+| "cmd:args" | (optional, Array von Strings) an `cmd` zu übergebende Argumente |
+| "cmd:shell" | (optional) Ist cmd:shell false (Standard), nutzen wir `cmd` + `cmd:args` (geeignet zur Übergabe an `execve`). Ist cmd:shell true, nutzen wir nur `cmd`, und cmd kann Leerzeichen sowie Shell-Syntax (wie Pipes oder Umleitungen usw.) enthalten |
+| "cmd:interactive" | (optional) Ist `"controller"` auf `"term"` gesetzt, fügt dieser Boolean dem gestarteten Terminal das Interactive-Flag hinzu. Standard false. |
+| "cmd:login" | (optional) Ist `"controller"` auf `"term"` gesetzt, fügt dieser Boolean dem term-Befehl das Login-Flag hinzu. Standard false. |
+| "cmd:runonstart" | (optional) Der Befehl wird erneut ausgeführt, wenn der Block erstellt oder die App gestartet wird. Ohne diese Option musst du den Befehl manuell ausführen. Standard true. |
+| "cmd:runonce" | (optional) Läuft beim Start, setzt dann aber "cmd:runonce" und "cmd:runonstart" auf false (sodass künftige Ausführungen einen manuellen Neustart erfordern) |
+| "cmd:clearonstart" | (optional) Beim Ausführen des Befehls wird der Inhalt des Blocks gelöscht. Standard false. |
+| "cmd:closeonexit" | (optional) Schließt den Block automatisch, wenn der Befehl erfolgreich beendet wird (Exit-Code = 0) |
+| "cmd:closeonexitforce" | (optional) Schließt den Block automatisch, wenn der Befehl beendet wird (Erfolg oder Fehlschlag) |
+| "cmd:closeonexitdelay | (optional) Ändert die Verzögerung zwischen Beendigung des Befehls und Schließen des Blocks, in Millisekunden, Standard 2000 |
+| "cmd:env" | (optional) Ein Schlüssel-Wert-Objekt, das mit dem Befehl auszuführende Umgebungsvariablen darstellt. Standard ist ein leeres Objekt. |
+| "cmd:cwd" | (optional) Ein String, der das mit dem Befehl auszuführende aktuelle Arbeitsverzeichnis darstellt. Funktioniert aktuell nur lokal. Standard ist das Home-Verzeichnis. |
+| "cmd:nowsh" | (optional) Ein Boolean, der die wsh-Integration für den Befehl deaktiviert. Standard false. |
+| "cmd:jwt" | (optional) Ein Boolean, der das Hinzufügen eines JWT-Tokens zur Umgebung erzwingt. Erforderlich, um WaveApps als Widgets auszuführen (lokal und remote). Standard false. |
+| "term:localshellpath" | (optional) Legt die für die Ausführung deines Widget-Befehls genutzte Shell fest. Funktioniert nur lokal. Bleibt es leer, ermittelt Wave stattdessen dein Systemstandard. |
+| "term:localshellopts" | (optional) Legt die für `"term:localshellpath"` zu nutzenden Shell-Optionen fest. Nützlich, wenn du eine nicht standardmäßige Shell nutzt und eine bestimmte Option angeben musst, die wir nicht abdecken. Funktioniert nur lokal. Standard ist ein leerer String. |
+| "cmd:initscript" | (optional) nur für den "shell"-Controller. Ein Init-Skript, das vor dem Starten der Shell ausgeführt wird (kann ein Inline-Skript oder ein absoluter lokaler Dateipfad sein) |
+| cmd:initscript.sh" | (optional) wie `cmd:initscript`, gilt aber nur für bash/zsh-Shells |
+| cmd:initscript.bash" | (optional) wie `cmd:initscript`, gilt aber nur für bash-Shells |
+| cmd:initscript.zsh" | (optional) wie `cmd:initscript`, gilt aber nur für zsh-Shells |
+| cmd:initscript.pwsh" | (optional) wie `cmd:initscript`, gilt aber nur für pwsh/powershell-Shells |
+| cmd:initscript.fish" | (optional) wie `cmd:initscript`, gilt aber nur für fish-Shells |
+
+### Beispiel für lokale Shell-Widgets
+
+Wenn du mehrere Shells auf deinem Rechner installiert hast, möchtest du manchmal eine andere als die Standard-Shell nutzen. Für solche Fälle ist es einfach, für jede ein Widget zu erstellen.
+
+Angenommen, du möchtest ein Widget, das eine `fish`-Shell startet. Sobald `fish` auf deinem System installiert ist, kannst du ein Widget wie folgt definieren:
+
+```json
+{
+ <... other widgets go here ...>,
+ "fish" : {
+ "icon": "fish",
+ "color": "#4abc39",
+ "label": "fish",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "shell",
+ "term:localshellpath": "/usr/local/bin/fish",
+ "term:localshellopts": "-i -l"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du ein Terminal mit der `fish`-Shell starten kannst.
+
+
+:::info
+Es ist möglich, dass `fish` nicht in deinem PATH liegt. In diesem Fall funktioniert `"fish"` als Wert von `"term:localshellpath"` nicht. In diesen Fällen musst du einen direkten Pfad dazu angeben. Das ist oft etwas wie `"/usr/local/bin/fish"`, kann auf deinem System aber abweichen.
+:::
+
+Wenn du dasselbe für z. B. Powershell Core, oder `pwsh`, tun möchtest, kannst du das Widget wie folgt definieren:
+
+```json
+{
+ <... other widgets go here ...>,
+ "pwsh" : {
+ "icon": "rectangle-terminal",
+ "color": "#2671be",
+ "label": "pwsh",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "shell",
+ "term:localshellpath": "pwsh"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du ein Terminal mit der `pwsh`-Shell starten kannst.
+
+
+:::info
+Es ist möglich, dass `pwsh` nicht in deinem PATH liegt. In diesem Fall funktioniert `"pwsh"` als Wert von `"term:localshellpath"` nicht. In diesen Fällen musst du einen direkten Pfad dazu angeben. Das könnte auf einem Unix-System etwa `"/usr/local/bin/pwsh"` sein oder unter Windows "C:\\Program Files\\PowerShell\\7\\pwsh.exe", kann auf deinem System aber
+abweichen. Beachte außerdem, dass unter Windows sowohl `pwsh.exe` als auch `pwsh` funktionieren, unter Unix-Systemen aber nur `pwsh`.
+:::
+
+### Beispiel für Remote-Shell-Widgets
+
+Wenn du ein Terminal-Widget für eine bestimmte Verbindung (SSH oder WSL) öffnen möchtest, kannst du den Metadaten-Schlüssel `connection` nutzen. Der Wert des connection-Schlüssels sollte mit connections.json (oder dem, was in deinem Verbindungs-Dropdown erscheint) übereinstimmen. Beachte, dass du nur den kanonischen Namen nutzen solltest (nicht einen benutzerdefinierten "display:name", den du gesetzt hast). Für WSL könnte das etwa `wsl://Ubuntu` sein, für SSH-Verbindungen etwa `user@remotehostname`.
+
+```json
+{
+ <... other widgets go here ...>,
+ "remote-term": {
+ "icon": "rectangle-terminal",
+ "label": "remote",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "shell",
+ "connection": ""
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+### Beispiel für Cmd-Widgets
+
+Hier sind ein paar einfache Cmd-Widgets als Beispiele.
+
+Angenommen, du möchtest ein Widget, das beim Öffnen speedtest-go ausführt. Dann kannst du ein Widget wie folgt definieren:
+
+```json
+{
+ <... other widgets go here ...>,
+ "speedtest" : {
+ "icon": "gauge-high",
+ "label": "speed",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "cmd",
+ "cmd": "speedtest-go --unix",
+ "cmd:clearonstart": true
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du ein Terminal starten kannst, das den Befehl `speedtest-go --unix` ausführt.
+
+
+`"cmd"` für `"controller"` zu nutzen, ist der einfachste Weg, das zu erreichen. `"cmd:clearonstart"` ist nicht notwendig, sorgt aber dafür, dass bei jedem Ausführen des Befehls (was per Rechtsklick auf die Kopfzeile und Auswahl von `Force Controller Restart` geschehen kann) der vorherige Inhalt gelöscht wird.
+
+Angenommen, du möchtest nun eine TUI-App ausführen, zum Beispiel `dua`. Es stellt sich heraus, dass du das mehr oder weniger genauso tun kannst:
+
+```json
+{
+ <... other widgets go here ...>,
+ "dua" : {
+ "icon": "brands@linux",
+ "label": "dua",
+ "blockdef": {
+ "meta": {
+ "view": "term",
+ "controller": "cmd",
+ "cmd": "dua"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du ein Terminal starten kannst, das den Befehl `dua` ausführt.
+
+
+Da dies eine TUI-App ist, die beim Schließen nichts zurückgibt, ändert die Option `"cmd:clearonstart"` das Verhalten nicht, weshalb sie hier weggelassen wurde.
+
+## Web-Widgets
+
+Manchmal möchte man direkt eine Seite zu einer Webseite öffnen. Das lässt sich einfach durch Erstellen eines benutzerdefinierten `"web"`-Widgets erreichen. Sie haben im Allgemeinen diese Form:
+
+```json
+{
+ <... other widgets go here ...>,
+ "": {
+ "icon": "",
+ "label": "",
+ "color": "",
+ "blockdef": {
+ "meta": {
+ "view": "web",
+ "url": ""
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Der `WidgetConfigType` nutzt die üblichen, allen Widgets gemeinsamen Optionen. Der `MetaTSType` kann die unten aufgeführten Schlüssel enthalten:
+| Schlüssel | Beschreibung |
+|-----|-------------|
+| "view" | Ein String, der den allgemeinen Widget-Typ angibt. Bei benutzerdefinierten Web-Widgets muss dies auf `"web"` gesetzt sein.|
+| "url" | Dieser String ist die URL der aktuellen Seite. Als Teil eines Widgets dient er als Startseite des Widgets. Ist er nicht angegeben, wird standardmäßig die global konfigurierbare `"web:defaulturl"` genutzt, die bei einer frischen Installation [https://github.com/wavetermdev/waveterm](https://github.com/wavetermdev/waveterm) ist. |
+| "pinnedurl" | (optional) Dieser String ist die URL, zu der dich der Startseiten-Button führt. Ist er nicht angegeben, wird standardmäßig die global konfigurierbare `"web:defaulturl"` genutzt, die bei einer frischen Installation [https://github.com/wavetermdev/waveterm](https://github.com/wavetermdev/waveterm) ist. |
+
+### Beispiel für Web-Widgets
+
+Angenommen, du möchtest ein Widget, das automatisch bei YouTube startet und YouTube als Startseite nutzt. Das geht so:
+
+```json
+{
+ <... other widgets go here ...>,
+ "youtube" : {
+ "icon": "brands@youtube",
+ "label": "youtube",
+ "blockdef": {
+ "meta": {
+ "view": "web",
+ "url": "https://youtube.com",
+ "pinnedurl": "https://youtube.com"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du ein Web-Widget auf der YouTube-Startseite starten kannst.
+
+
+Alternativ, angenommen du möchtest ein Web-Widget, das wie ein Lesezeichen zu GitHub öffnet, danach aber Google als Startseite nutzt. Das geht einfach so:
+
+```json
+{
+ <... other widgets go here ...>,
+ "github" : {
+ "icon": "brands@github",
+ "label": "github",
+ "blockdef": {
+ "meta": {
+ "view": "web",
+ "url": "https://github.com",
+ "pinnedurl": "https://google.com"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du ein Web-Widget auf der GitHub-Startseite starten kannst.
+
+
+## Sysinfo-Widgets
+
+Das Sysinfo-Widget beschränkt sich bewusst auf eine kleine Teilmenge möglicher Werte, die wir mit der Zeit erweitern werden. Es ist aber dennoch möglich, deine eigene Version davon zu konfigurieren — zum Beispiel, wenn du standardmäßig ein anderes Diagramm laden möchtest. Die allgemeine Form dieses Widgets ist:
+
+```json
+{
+ <... other widgets go here ...>,
+ "": {
+ "icon": "",
+ "label": "",
+ "color": "",
+ "blockdef": {
+ "meta": {
+ "view": "sysinfo",
+ "graph:numpoints": ,
+ "sysinfo:type": ,
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Der `WidgetConfigType` nutzt die üblichen, allen Widgets gemeinsamen Optionen. Der `MetaTSType` kann die unten aufgeführten Schlüssel enthalten:
+| Schlüssel | Beschreibung |
+|-----|-------------|
+| "view" | Ein String, der den allgemeinen Widget-Typ angibt. Bei benutzerdefinierten Sysinfo-Widgets muss dies auf `"sysinfo"` gesetzt sein.|
+| "graph:numpoints" | Die maximale Anzahl an Punkten, die im Diagramm angezeigt werden können. Entspricht der Anzahl der Sekunden, die das Diagrammfenster abdeckt. Standard ist 100.|
+| "sysinfo:type" | Ein String, der die im Diagramm anzuzeigende Typ-Sammlung darstellt. Gültige Werte hierfür sind `"CPU"`, `"Mem"`, `"CPU + Mem"` und `All CPU`. Beachte, dass Groß-/Kleinschreibung beachtet wird. Ist kein Wert angegeben, zeigt das Diagramm standardmäßig `"CPU"`.|
+
+### Beispiel für Sysinfo-Widgets
+
+Angenommen, du hast einen Build-Prozess, der 3 Minuten dauert, und möchtest den gesamten Build im Sysinfo-Diagramm sehen können. Außerdem möchtest du sowohl CPU als auch Speicher sehen, da beide von diesem Prozess betroffen sind. In diesem Fall kannst du ein Widget wie folgt einrichten:
+
+```json
+{
+ <... other widgets go here ...>,
+ "3min-info" : {
+ "icon": "circle-3",
+ "label": "3mininfo",
+ "blockdef": {
+ "meta": {
+ "view": "sysinfo",
+ "graph:numpoints": 180,
+ "sysinfo:type": "CPU + Mem"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du standardmäßig die CPU- und Speicher-Diagramme mit 180 Sekunden an Daten starten kannst.
+
+
+Angenommen, du bist mit den standardmäßigen 100 Punkten (und 100 Sekunden) zufrieden, möchtest aber beim Start alle CPU-Daten sehen. In diesem Fall kannst du Folgendes schreiben:
+
+```json
+{
+ <... other widgets go here ...>,
+ "all-cpu" : {
+ "icon": "chart-scatter",
+ "label": "all-cpu",
+ "blockdef": {
+ "meta": {
+ "view": "sysinfo",
+ "sysinfo:type": "All CPU"
+ }
+ }
+ },
+ <... other widgets go here ...>
+}
+```
+
+Dadurch wird ein Icon zur Widget-Leiste hinzugefügt, mit dem du standardmäßig die Alle-CPU-Diagramme starten kannst.
+
+
+
+## Standard-Widgets überschreiben
+
+Wave wird mit 5 Standard-Widgets in der Widget-Leiste ausgeliefert (terminal, files, web, ai und sysinfo). Du kannst diese ändern oder entfernen, indem du ihre Konfiguration in widgets.json überschreibst. Die Namen der 5 Widgets, in Reihenfolge, sind:
+
+- `defwidget@terminal`
+- `defwidget@files`
+- `defwidget@web`
+- `defwidget@ai`
+- `defwidget@sysinfo`
+
+Um eines davon zu entfernen, setze diesen Schlüssel einfach auf `null` in deiner widgets.json-Datei.
+
+Um ihre Definitionen einzusehen, zu kopieren und einzufügen oder zu verstehen, wie sie funktionieren, kannst du alle ihre Definitionen unter [GitHub - default widgets.json](https://github.com/wavetermdev/waveterm/blob/main/pkg/wconfig/defaultconfig/widgets.json) ansehen.
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/durable-sessions.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/durable-sessions.mdx
new file mode 100644
index 0000000000..9410e04f46
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/durable-sessions.mdx
@@ -0,0 +1,216 @@
+---
+sidebar_position: 3.5
+id: "durable-sessions"
+title: "Dauerhafte Sitzungen"
+---
+
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+# Dauerhafte Sitzungen
+
+Halte deine entfernten SSH-Shell-Sitzungen über Netzwerkwechsel, Ruhezustand des Computers und Wave-Neustarts hinweg am Leben.
+
+## Überblick
+
+Dauerhafte Sitzungen schützen deinen Terminal-Status bei der Arbeit mit entfernten SSH-Verbindungen, ähnlich wie tmux oder screen, aber direkt in Wave integriert. Anders als bei Standard-SSH-Sitzungen, die bei Verbindungsabbruch enden, bleiben bei dauerhaften Sitzungen erhalten:
+
+- **Shell-Status** - Aktuelles Verzeichnis, Umgebungsvariablen und Shell-Verlauf
+- **Laufende Programme** - Hintergrundjobs und lang laufende Befehle werden weiter ausgeführt
+- **Terminal-Verlauf** - Vollständiger Scrollback-Puffer bleibt über Wiederverbindungen hinweg erhalten
+
+Dauerhafte Sitzungen verbinden sich automatisch neu, sobald deine Verbindung wiederhergestellt ist, und setzen genau dort fort, wo du aufgehört hast.
+
+:::info Nur Remote-Verbindungen
+Dauerhafte Sitzungen sind ausschließlich für **entfernte SSH-Verbindungen** konzipiert. Lokale Terminals und WSL-Verbindungen nutzen Standard-Sitzungen, da sie von Netzwerkunterbrechungen nicht betroffen sind und aktiv bleiben, solange Wave läuft.
+:::
+
+## So funktioniert es
+
+Wenn du eine dauerhafte Sitzung startest, startet Wave einen schlanken Job-Manager auf dem entfernten Server. Ähnlich wie tmux und screen tut dieser Manager Folgendes:
+
+1. Hält deinen Shell-Prozess unabhängig von der Wave-Verbindung am Laufen
+2. Puffert Terminal-Ausgaben während der Trennung
+3. Ermöglicht Wave, sich beim Wiederverbinden nahtlos erneut anzuhängen
+4. Übersteht Wave-Neustarts und Netzwerkunterbrechungen
+
+Die Sitzung läuft auf dem entfernten Server weiter, selbst wenn du Wave schließt, deinen Computer in den Ruhezustand versetzt oder das Netzwerk wechselst.
+
+## Sitzungsstatus-Anzeige
+
+Das Schild-Symbol in deiner Terminal-Kopfzeile zeigt den aktuellen Sitzungsstatus:
+
+| Symbol | Status | Beschreibung |
+|------|--------|-------------|
+| | Standard-Sitzung | Verbindungsabbrüche beenden die Sitzung |
+| | Dauerhaft (verbunden) | Sitzung ist geschützt und verbunden |
+| | Dauerhaft (getrennt) | Sitzung läuft, aktuell getrennt |
+| | Dauerhaft (wartend) | Konfiguriert, aber noch nicht gestartet |
+
+Fahre mit der Maus über das Schild-Symbol, um detaillierte Statusinformationen und verfügbare Aktionen zu sehen.
+
+## Konfiguration
+
+Dauerhafte Sitzungen können auf drei Ebenen konfiguriert werden, wobei spezifischere Einstellungen allgemeinere überschreiben:
+
+### Globale Einstellungen (niedrigste Priorität)
+
+Lege den Standard für alle SSH-Verbindungen in deiner `settings.json` fest:
+
+```json
+{
+ "term:durable": true
+}
+```
+
+### Verbindungseinstellungen (mittlere Priorität)
+
+Konfiguriere die Dauerhaftigkeit pro Verbindung in deiner `connections.json`:
+
+```json
+{
+ "connections": {
+ "user@host": {
+ "term:durable": true
+ }
+ }
+}
+```
+
+### Blockeinstellungen (höchste Priorität)
+
+Überschreibe die Einstellung für einzelne Terminal-Blöcke über:
+
+- **Kontextmenü**: Rechtsklick auf Terminal → Erweitert → Session Durability
+- **Flyover-Aktionen**: Klick auf das Schild-Symbol → "Restart as Durable" oder "Restart as Standard"
+- **Kommandozeile**: Nutze `wsh setmeta term:durable=true` oder `wsh setmeta term:durable=false`
+
+Konfigurationshierarchie (höchste zu niedrigste Priorität):
+1. Einstellung auf Blockebene
+2. Einstellung auf Verbindungsebene
+3. Globale Einstellung
+
+### Standardverhalten
+
+- **SSH-Verbindungen**: Dauerhafte Sitzungen standardmäßig deaktiviert (Opt-in über Konfiguration)
+- **Lokale Terminals**: Nutzen immer Standard-Sitzungen (Dauerhaftigkeit nicht anwendbar)
+- **WSL-Verbindungen**: Nutzen immer Standard-Sitzungen (Dauerhaftigkeit nicht anwendbar)
+
+## Zwischen Modi wechseln
+
+### Standard zu dauerhaft
+
+1. Fahre mit der Maus über das reguläre Schild-Symbol
+2. Klicke im Flyover auf **"Restart as Durable"**
+3. Deine Sitzung startet mit aktivierter Dauerhaftigkeit neu
+
+Oder nutze das Kontextmenü:
+- Rechtsklick auf Terminal → Erweitert → Session Durability → Restart Session in Durable Mode
+
+### Dauerhaft zu Standard
+
+1. Öffne das Terminal-Kontextmenü (Rechtsklick)
+2. Navigiere zu Erweitert → Session Durability
+3. Wähle **"Restart Session in Standard Mode"**
+
+:::warning Moduswechsel startet die Sitzung neu
+Der Wechsel zwischen Standard- und dauerhaftem Modus erfordert einen Neustart der Shell. Alle laufenden Prozesse in der aktuellen Sitzung werden beendet.
+:::
+
+## Sitzungsstatus
+
+### Verbunden
+Dein Terminal ist mit der entfernten Sitzung verbunden. Du kannst mit der Shell interagieren und Ausgaben in Echtzeit sehen.
+
+### Getrennt
+Verbindung verloren, aber die Sitzung läuft auf dem entfernten Server weiter. Wave verbindet sich automatisch neu, sobald möglich. Alle von dir gestarteten Befehle laufen weiter.
+
+### Wartet auf Start
+Sitzung ist für Dauerhaftigkeit konfiguriert, aber noch nicht gestartet. Klicke auf "Start Session" oder führe einen Befehl aus, um zu beginnen.
+
+### Wird gestartet
+Der Job-Manager wird auf dem entfernten Server initialisiert. Die Sitzung wird in Kürze verbunden.
+
+### Beendet
+Die Sitzung wurde beendet. Häufige Gründe:
+- **Beendet (Exited)**: Shell wurde normal geschlossen (z. B. `exit` eingegeben)
+- **Verloren (Lost)**: Sitzung auf dem Server nicht gefunden (könnte beendet worden sein oder das System wurde neu gestartet)
+- **Start fehlgeschlagen (Failed to Start)**: Der Job-Manager hatte bei der Initialisierung einen Fehler
+
+Klicke auf "Restart Session", um eine neue dauerhafte Sitzung zu starten, oder auf "Restart as Standard", um den Modus zu wechseln.
+
+## Anwendungsfälle
+
+### Lang laufende Befehle
+Starte einen Build-, Deployment- oder Datenverarbeitungsjob und klapp deinen Laptop zu. Der Befehl läuft weiter, und du kannst später nachsehen.
+
+```bash
+# Einen langen Build starten
+./build.sh
+
+# Laptop zuklappen, Kaffee holen
+# Später: erneut verbinden und die fertige Ausgabe sehen
+```
+
+### Instabile Netzwerke
+Arbeite aus einem Café, im Zug oder über eine Mobilfunkverbindung. Kurze Unterbrechungen beenden deine Sitzung nicht und du verlierst keine Arbeit.
+
+### Mehrere Standorte
+Beginne die Arbeit an deinem Desktop, mach auf deinem Laptop weiter. Deine Sitzung und ihr Status bleiben auf dem entfernten Server erhalten.
+
+### Systemwartung
+Wave-Updates, -Neustarts oder -Abstürze unterbrechen deine Remote-Arbeit nicht. Verbinde dich erneut und mach sofort weiter.
+
+## Sitzungslebenszyklus
+
+Dauerhafte Sitzungen sind an den Terminal-Block in Wave gebunden. Die Sitzung wird beendet, wenn du:
+
+- **Den Block schließt**: Schließt das Terminal und beendet die entfernte Sitzung
+- **Die Verbindung wechselst**: Das Ändern der Verbindung eines Blocks beendet die alte Sitzung
+- **Den Workspace/Tab löschst**: Entfernt den Block und beendet zugehörige Sitzungen
+
+### Aufräumverhalten
+
+Wenn du einen Block schließt, während er **getrennt** ist, läuft die entfernte Sitzung bis zur nächsten Wiederverbindung weiter. Wenn Wave sich wieder mit diesem Server verbindet, räumt es automatisch verwaiste Sitzungen von geschlossenen Blöcken auf.
+
+Das stellt sicher, dass sich entfernte Sitzungen nicht auf deinen Servern ansammeln, wenn du Terminals offline schließt.
+
+## Einschränkungen
+
+- **Lokale Terminals**: Nicht anwendbar (bereits dauerhaft mit deinem lokalen Rechner)
+- **WSL-Verbindungen**: Nicht anwendbar (WSL-Sitzungen werden von Windows verwaltet)
+- **Netzwerklatenz**: Getrennte Sitzungen puffern Ausgaben; das Wiederverbinden kann einen Moment zur Synchronisierung dauern
+- **Serverressourcen**: Jede dauerhafte Sitzung unterhält für die Sitzungsverwaltung einen schlanken Go-Prozess auf dem entfernten Server
+
+## Fehlerbehebung
+
+### Sitzung zeigt "Lost" an
+Die Sitzung wurde auf dem entfernten Server beendet, möglicherweise wegen:
+- Serverneustart
+- Manuelle Beendigung des Job-Manager-Prozesses
+- Dem entfernten System sind die Ressourcen ausgegangen
+
+**Lösung**: Klicke auf "Restart Session", um eine neue dauerhafte Sitzung zu starten.
+
+### Sitzung verbindet sich nicht neu
+Prüfe, ob:
+- Deine SSH-Verbindung zum Server funktioniert (Verbindungsstatus prüfen)
+- Der Job-Manager-Prozess auf dem entfernten Server noch läuft
+
+**Versuche**: Rechtsklick auf Terminal → Erweitert → Force Restart Controller
+
+### Fehler "Failed to Start"
+Der Job-Manager konnte auf dem entfernten Server nicht initialisiert werden. Prüfe die Fehlermeldung für Details.
+
+**Versuche**: Starte die Sitzung neu. Falls das Problem weiter besteht, melde einen Fehlerbericht mit den Fehlerdetails.
+
+:::info Technische Details
+Dauerhafte Sitzungen nutzen Unix-Domain-Sockets auf dem entfernten Server, um dauerhafte Verbindungen zwischen der Shell und Waves Job-Manager aufrechtzuerhalten. Der Job-Manager-Prozess läuft unabhängig und übersteht SSH-Verbindungsabbrüche.
+:::
+
+## Datenschutz & Sicherheit
+
+- Dauerhafte Sitzungen laufen vollständig auf deinen entfernten Servern
+- Alle Daten werden über SSH zwischen deiner lokalen Wave-Instanz und dem entfernten Rechner übertragen
+- Keine offenen Ports auf dem entfernten Rechner - die Kommunikation läuft über deine bestehende SSH-Verbindung
+- Bei Trennung werden Ausgaben lokal auf dem entfernten Rechner gepuffert, bis du dich wieder verbindest
+- Sitzungen sind pro Benutzer isoliert und nutzen die Berechtigungen deines entfernten Benutzers
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx
new file mode 100644
index 0000000000..548498db49
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/faq.mdx
@@ -0,0 +1,70 @@
+---
+sidebar_position: 101
+id: "faq"
+title: "FAQ"
+---
+
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+# FAQ
+
+### Wie kann ich die Blocknummern sehen?
+
+Die Blocknummern erscheinen, wenn du Strg-Umschalt (Ctrl-Shift) gedrückt hältst (und verschwinden wieder, sobald du die Tastenkombination loslässt).
+
+### Wie stelle ich eine Remote-Verbindung her?
+
+In der Kopfzeile gibt es einen Button. Klicke auf das Symbol oder
+und gib `[user]@[host]` ein, mit dem du dich verbinden möchtest.
+
+### Wie nutze ich unter Windows Git Bash als Standard-Shell?
+
+Wave erkennt Git-Bash-Installationen automatisch und fügt sie zum Verbindungs-Dropdown hinzu. Klicke einfach auf das Symbol oder in der Block-Kopfzeile und wähle "Git Bash" aus der Liste.
+
+Alternativ kannst du Git Bash manuell als Standard-Shell festlegen, indem du die Konfigurationsvariable `term:localshellpath` auf
+den Speicherort der Git-Bash-Datei "bash.exe" setzt. Standardmäßig befindet sie sich unter "C:\Program Files\Git\bin\bash.exe".
+Denk daran, dass in JSON Backslashes maskiert werden müssen. Füge dies also zu deiner [settings.json](./config)-Datei hinzu:
+
+```json
+"term:localshellpath": "C:\\Program Files\\Git\\bin\\bash.exe"
+```
+
+### Kann ich WSH außerhalb von Wave nutzen?
+
+`wsh` ist eine interne CLI, um die Kontrolle über Wave auf die Kommandozeile zu erweitern; mehr dazu erfährst du [hier](./wsh). Um Missbrauch durch andere Anwendungen zu verhindern, benötigt `wsh` ein von Wave bereitgestelltes Zugriffstoken und funktioniert außerhalb der App nicht.
+
+
+## Warum warnt mich Wave beim Start vor der ARM64-Übersetzung?
+
+macOS und Windows verfügen beide über Kompatibilitätsschichten, die es x64-Anwendungen erlauben, auf ARM-Rechnern zu laufen. Das hilft, dass mehr Apps auf diesen Systemen laufen, während Entwickler native ARM-Unterstützung für ihre Anwendungen ergänzen. Das geht jedoch mit spürbaren Leistungseinbußen einher.
+
+Für die beste Erfahrung mit Wave wird empfohlen, Wave zu deinstallieren und die Version neu zu installieren, die nativ für deinen Rechner kompiliert wurde. Die richtige Version findest du in unserer [Installationsanleitung](./gettingstarted#installation).
+
+Du kannst diese Warnung deaktivieren, indem du `app:dismissarchitecturewarning=true` in [deiner Konfiguration](./config) setzt.
+
+## Wie nehme ich an den Beta-Builds von Wave teil?
+
+Wave veröffentlicht in zwei Kanälen, `latest` und `beta`. Wenn du die App für macOS, Windows oder Linux über DEB oder RPM installiert hast, kannst du folgende Einstellungen in deiner `settings.json` setzen (siehe [Konfiguration](./config) für weitere Infos):
+
+```json
+"autoupdate:enabled": true,
+"autoupdate:channel": "beta"
+```
+
+Wenn du über Snap installiert hast, kannst du folgenden Befehl verwenden:
+
+```sh
+sudo snap install waveterm --classic --beta
+```
+
+## Kann ich Wave AI nutzen, ohne Telemetrie zu aktivieren?
+
+
+
+Ja! Wave AI ist normalerweise deaktiviert, wenn Telemetrie nicht aktiviert ist. Du kannst Wave-AI-Funktionen jedoch auch ohne Telemetrie aktivieren, indem du dein eigenes benutzerdefiniertes KI-Modell konfigurierst (entweder ein lokales Modell oder mit deinem eigenen API-Schlüssel).
+
+So aktivierst du Wave AI ohne Telemetrie:
+1. Konfiguriere einen benutzerdefinierten KI-Modus (siehe [Wave-AI-Dokumentation](./waveai-modes))
+2. Setze `waveai:defaultmode` auf den Schlüssel deines benutzerdefinierten Modus in deinen Wave-Einstellungen
+
+Sobald du beide Schritte abgeschlossen hast, ist Wave AI aktiviert und du kannst es vollständig privat ohne Telemetrie nutzen. So kannst du lokale Modelle wie Ollama oder deine eigenen API-Schlüssel mit Anbietern wie OpenAI, OpenRouter oder anderen verwenden.
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/gettingstarted.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/gettingstarted.mdx
new file mode 100644
index 0000000000..2d15455826
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/gettingstarted.mdx
@@ -0,0 +1,164 @@
+---
+sidebar_position: 1
+id: "gettingstarted"
+title: "Erste Schritte"
+---
+
+import { PlatformProvider, PlatformSelectorButton, PlatformItem } from "@site/src/components/platformcontext";
+import { Kbd } from "@site/src/components/kbd";
+
+Wave Terminal ist ein modernes Terminal, das neben klassischen Terminal-Funktionen grafische Fähigkeiten wie Web-Browsing, Dateivorschau und KI-Unterstützung bietet. Diese Anleitung hilft dir beim Einstieg.
+
+## Installation
+
+
+
+
+### Plattformanforderungen
+
+
+
+- Unterstützte Architekturen: Apple Silicon, x64
+- Unterstützte Betriebssystemversion: macOS 11 Big Sur oder neuer
+
+
+
+
+
+- Unterstützte Architekturen: x64
+- Unterstützte Betriebssystemversion: Windows 10 1809 oder neuer, Windows 11
+
+:::note
+
+ARM64 ist geplant, wird aber derzeit durch vorgelagerte Abhängigkeiten blockiert (siehe [Windows-ARM-Unterstützung](https://github.com/wavetermdev/waveterm/issues/928)).
+
+:::
+
+
+
+
+
+- Unterstützte Architekturen: x64, ARM64
+- Unterstützte Betriebssystemversion: benötigt glibc-2.28 oder neuer (Debian >=10, RHEL >=8, Ubuntu >=20.04 usw.)
+
+
+
+### Paketmanager
+
+
+
+#### Homebrew
+
+```bash
+brew install --cask wave
+```
+
+
+
+
+
+#### Windows Package Manager
+
+```powershell
+winget install CommandLine.Wave
+```
+
+#### Chocolatey
+
+```powershell
+choco install wave
+```
+
+
+
+
+
+#### Snap
+
+```bash
+sudo snap install --classic waveterm
+```
+
+Weitere Optionen verfügbar: [AUR-Paket](https://aur.archlinux.org/packages/waveterm) (community-gepflegt), [Nix-Paket](https://search.nixos.org/packages?channel=unstable&show=waveterm) (community-gepflegt)
+
+
+
+Du kannst Installationsprogramme auch direkt von unserer [Download-Seite](https://www.waveterm.dev/download) herunterladen.
+
+## Grundkonzepte
+
+### Tabs und Blöcke
+
+- **Tabs**: Wie Browser-Tabs helfen sie, deine Arbeit zu organisieren. Erstelle neue Tabs mit .
+- **Blöcke**: Die Bausteine von Wave. Jeder Block kann ein Terminal, ein Webbrowser, eine Dateivorschau oder ein anderes Widget sein.
+- **Layout**: Blöcke können gezogen, abgelegt und in der Größe angepasst werden, um dein ideales Layout zu erstellen.
+
+### Hauptfunktionen
+
+1. **Terminal-Funktionen**
+
+ - Funktioniert mit gängigen Shells (bash, zsh, fish)
+ - Unterstützt Standard-Terminal-Funktionen (readline, Steuersequenzen usw.)
+ - Enthält den Befehl `wsh` zur Interaktion mit Waves GUI-Funktionen
+ - GPU-beschleunigt (auf den meisten Plattformen)
+
+2. **Grafische Widgets**
+
+ - Dateivorschau (Bilder, Video, Markdown, Code mit Syntax-Highlighting)
+ - Webseiten durchsuchen
+ - Fragen stellen und KI-Hilfe direkt aus dem Terminal erhalten (mehrere KI-Modelle einrichten)
+ - Einfache Systemüberwachungs-Diagramme
+
+3. **Remote-Verbindungen**
+ - Einfache SSH-Verbindungen über den Verbindungs-Button
+ - WSL-Integration unter Windows
+ - Einheitliche Erfahrung bei lokalen und entfernten Sitzungen
+
+## Schnellstart-Anleitung
+
+1. **Öffne deinen ersten neuen Tab**
+
+ - Neue Wave-Tabs starten mit einem einzelnen Terminal-Block
+ - Nutze ihn wie dein gewohntes Terminal
+ - Erstelle weitere Terminal-Blöcke mit
+
+2. **Probiere ein paar grundlegende Befehle aus**
+
+ ```bash
+ # Eine Datei oder ein Verzeichnis anzeigen
+ wsh view ~/Documents
+
+ # Eine Webseite öffnen
+ wsh web open github.com
+
+ # KI-Unterstützung erhalten
+ wsh ai -m "how do I find large files in my current directory?" -s
+ ```
+
+3. **Passe dein Layout an**
+
+ - Ziehe Block-Kopfzeilen, um sie neu anzuordnen
+ - Fahre zwischen Blöcken mit der Maus, um sie in der Größe anzupassen
+ - Rechtsklick auf Tab-Kopfzeilen für Hintergrundoptionen
+ - Rechtsklick auf Block-Kopfzeilen für blockspezifische Optionen
+
+4. **Mit entfernten Rechnern verbinden**
+ - Klicke auf den -Button
+ - Gib `username@hostname` für SSH-Verbindungen ein
+ - Oder wähle unter Windows eine WSL-Distribution aus
+
+## Nächste Schritte
+
+- Entdecke [Tastenkombinationen](./keybindings), um effizienter zu arbeiten
+- Erfahre mehr über [Tab-Layouts](./layout), um deinen Workspace zu organisieren
+- Richte [benutzerdefinierte Widgets](./customwidgets) für schnellen Zugriff auf deine Tools ein
+- Konfiguriere [Wave AI](./waveai), um deine bevorzugten KI-Modelle zu nutzen
+- Schau dir [Konfiguration](./config) für ausführliche Anpassungsoptionen an
+
+## Hilfe erhalten
+
+- Tritt unserer [Discord-Community](https://discord.gg/XfvZ334gwU) für Hilfe und Diskussionen bei
+- Melde Probleme auf [GitHub](https://github.com/wavetermdev/waveterm/issues)
+- Schau in unsere [FAQ](./faq) für häufige Fragen
+
+
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/index.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/index.mdx
new file mode 100644
index 0000000000..02053e2f69
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/index.mdx
@@ -0,0 +1,100 @@
+---
+sidebar_position: -1
+id: "index"
+title: "Startseite"
+hide_title: true
+hide_table_of_contents: true
+---
+
+import { Card, CardGroup } from "@site/src/components/card";
+
+# Willkommen bei Wave Terminal
+
+Wave ist ein [Open-Source](https://github.com/wavetermdev/waveterm)-Terminal, das klassische Terminal-Funktionen mit grafischen Fähigkeiten wie Dateivorschau, Web-Browsing und KI-Unterstützung kombiniert. Es läuft unter macOS, Linux und Windows.
+
+Moderne Entwicklung bedeutet ständigen Wechsel zwischen Terminals und Browsern - Dokumentation nachschlagen, Dateien in der Vorschau ansehen, Systeme überwachen und KI-Tools nutzen. Wave bringt diese grafischen Werkzeuge direkt ins Terminal und lässt dich sie von der Kommandozeile aus steuern. So bleibst du in deinem Terminal-Workflow und hast trotzdem Zugriff auf die visuellen Oberflächen, die du brauchst.
+
+Schau dir [Erste Schritte](./gettingstarted) für Installationsanweisungen an.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+:::info
+
+Wenn du eine Frage hast, kannst du uns gerne im [Discord](https://discord.gg/XfvZ334gwU) fragen. Wenn du einen Fehler melden oder eine Verbesserung vorschlagen möchtest, nutze bitte [Github Issues](https://github.com/wavetermdev/waveterm/issues). Diese Dokumentation ist ebenfalls Open Source, und wir nehmen gerne PRs für die Docs [hier](https://github.com/wavetermdev/waveterm/blob/main/docs) entgegen. Klicke auf den Link "Edit this page" am Ende der Seite, um direkt zur Editor-Seite dieses Dokuments auf GitHub zu gelangen.
+
+:::
+
+
+
+## Roadmap
+
+Möchtest du zu unseren zukünftigen Releases beitragen? Vernetze dich mit uns auf [Discord](https://discord.gg/XfvZ334gwU) oder erstelle eine [Feature-Anfrage](https://github.com/wavetermdev/waveterm/issues/new/choose)!
+
+## Links
+
+- **Homepage** https://waveterm.dev
+- **Download** https://waveterm.dev/download
+- **Discord** https://discord.gg/XfvZ334gwU
+- **GitHub** https://github.com/wavetermdev/waveterm/
+
+## Suchst du die WaveLegacy-Dokumentation?
+
+Die WaveLegacy-Dokumentation findest du unter [legacydocs.waveterm.dev](https://legacydocs.waveterm.dev).
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/keybindings.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/keybindings.mdx
new file mode 100644
index 0000000000..686bc4467e
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/keybindings.mdx
@@ -0,0 +1,122 @@
+---
+sidebar_position: 2
+id: "keybindings"
+title: "Tastenkombinationen"
+---
+
+import { Kbd, KbdChord } from "@site/src/components/kbd";
+import { PlatformProvider, PlatformSelectorButton } from "@site/src/components/platformcontext";
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+
+
+Hier ist die Liste der Standard-Tastenkombinationen in Wave, unterteilt in Abschnitte.
+Manche Tastenkombinationen sind immer aktiv. Andere gelten nur für bestimmte Blocktypen.
+
+Beachte, dass dies die macOS-Tastenkombinationen sind (mit "Cmd"). Für Windows und Linux
+ersetze "Cmd" durch "Alt" (beachte, dass "Ctrl" sowohl unter Mac, Windows als auch Linux "Ctrl" ist).
+
+Chords werden mit einem + zwischen den Tasten dargestellt. Du hast 2 Sekunden Zeit, um nach der ersten Taste die zweite Chord-Taste zu drücken. Escape nach der ersten Chord-Taste ist immer wirkungslos.
+
+## Globale Tastenkombinationen
+
+
+
+
+| Taste | Funktion |
+| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| | Neuen Tab öffnen |
+| | Neuen Block öffnen (standardmäßig ein Terminal-Block mit derselben Verbindung und demselben Arbeitsverzeichnis). Mit der Einstellung `app:defaultnewblock` zum Launcher wechseln |
+| | Sichtbarkeit des WaveAI-Panels umschalten |
+| | Horizontal teilen, neuen Block rechts öffnen |
+| | Vertikal teilen, neuen Block unten öffnen |
+| | Vertikal teilen, neuen Block oben öffnen |
+| | Vertikal teilen, neuen Block unten öffnen |
+| | Horizontal teilen, neuen Block links öffnen |
+| | Horizontal teilen, neuen Block rechts öffnen |
+| | Neues Fenster öffnen |
+| | Aktuellen Block schließen |
+| | Aktuellen Tab schließen |
+| | Aktuellen Block vergrößern / verkleinern |
+| | "Verbindungs"-Umschalter öffnen |
+| | Fokus auf aktuellen Block zurücksetzen (nützlich, wenn der Block den Eingabefokus verloren hat) |
+| | Blocknummern anzeigen |
+| | WaveAI-Eingabe fokussieren |
+| | Zu Blocknummer wechseln |
+| / | Zwischen Blöcken nach links, rechts, oben, unten bewegen |
+| | Aktuellen Block durch einen Launcher-Block ersetzen |
+| | Aktuellen Tab umbenennen |
+| | Zu Tab-Nummer wechseln |
+| / | Zum Tab links wechseln |
+| / | Zum Tab rechts wechseln |
+| | Zu Workspace-Nummer wechseln |
+| | UI aktualisieren |
+| | Terminal-Mehrfacheingabemodus umschalten |
+
+## Tastenkombinationen für die Dateivorschau
+
+| Taste | Funktion |
+| ----------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| | Jedes normale Zeichen (z. B. "a", "b") filtert die Dateiliste |
+| | Setzt den Filter zurück |
+| / | Dateiauswahl nach oben/unten ändern |
+| | Aktuell ausgewählte Datei/Verzeichnis öffnen |
+| | Ein Verzeichnis "nach oben" bewegen (übergeordnetes Verzeichnis) |
+| | Zurück, zur zuvor ausgewählten Datei/Verzeichnis wechseln |
+| | Vorwärts (Gegenteil von Zurück) |
+| | Eine neue Datei öffnen (akzeptiert relative Pfade zum aktuellen Verzeichnis) |
+| | Wenn der Datei-Editor geöffnet ist, Datei speichern |
+| | Für Dateien, die in Vorschau oder bearbeitet werden können (Markdown, CSVs), zwischen Vorschau- und Bearbeitungsmodus wechseln |
+| | Wenn der Datei-Editor geöffnet ist, Änderungen verwerfen |
+
+## Web-Tastenkombinationen
+
+| Taste | Funktion |
+| ------------------------- | ------------------------------------------------------------- |
+| | URL-Eingabeleiste fokussieren |
+| | Wenn die URL-Eingabeleiste fokussiert ist, wird der Webinhalt fokussiert |
+| | Webseite neu laden |
+| | Zurück |
+| | Vorwärts |
+| | In Webseite suchen |
+| | Ein Lesezeichen öffnen |
+
+## WaveAI-Tastenkombinationen
+
+| Taste | Funktion |
+| ----------------------- | ----------------------- |
+| | WaveAI-Panel umschalten |
+| | WaveAI-Eingabe fokussieren |
+| | KI-Chat leeren |
+
+## Terminal-Tastenkombinationen
+
+| Taste | Funktion |
+| ----------------------- | ---------------------------- |
+| | Kopieren |
+| | Einfügen |
+| | Einfügen (nur Windows) |
+| | Terminal leeren |
+| | Im Terminal suchen |
+| | Nach oben scrollen |
+| | Nach unten scrollen |
+| | Nach oben scrollen (nur macOS) |
+| | Nach unten scrollen (nur macOS)|
+| | Zum Zeilenanfang springen (nur macOS) |
+| | Zum Zeilenende springen (nur macOS) |
+| | Eine Seite nach oben scrollen |
+| | Eine Seite nach unten scrollen |
+
+## Tastenkombinationen für den Prozess-Viewer
+
+| Taste | Funktion |
+| ----------------------- | ------------------------------------- |
+| | Live-Updates pausieren / fortsetzen |
+| | Prozessfilter / -suche öffnen |
+| | Suchleiste schließen |
+
+## Anpassbare systemweite globale Tastenkombination
+
+Wave erlaubt es, eine benutzerdefinierte globale Tastenkombination festzulegen, um von überall auf deinem Computer aus dein zuletzt genutztes Fenster zu fokussieren. Weitere Informationen dazu findest du in der [Konfigurationsdokumentation](./config#customizable-systemwide-global-hotkey).
+
+
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/layout.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/layout.mdx
new file mode 100644
index 0000000000..dcad9e32ee
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/layout.mdx
@@ -0,0 +1,10 @@
+---
+sidebar_class_name: hidden
+id: "layout"
+---
+
+import { Redirect } from "@docusaurus/router";
+
+
+
+
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/releasenotes.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/releasenotes.mdx
new file mode 100644
index 0000000000..4998096103
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/releasenotes.mdx
@@ -0,0 +1,696 @@
+---
+id: "releasenotes"
+title: "Release Notes"
+sidebar_position: 200
+---
+
+# Release Notes
+
+### v0.14.5 — 16. Apr 2026
+
+Wave v0.14.5 führt ein neues Prozess-Viewer-Widget, den Quake-Modus für die globale Tastenkombination und mehrere Verbesserungen der Alltagstauglichkeit ein.
+
+- **Prozess-Viewer** - Neues Widget, das laufende Prozesse auf lokalen und entfernten Rechnern anzeigt, mit CPU- und Speichernutzung, sortierbaren Spalten und der Möglichkeit, Signale an Prozesse zu senden
+- **Quake-Modus** - Die globale Tastenkombination (`app:globalhotkey`) schaltet nun ein Wave-Fenster sichtbar/unsichtbar
+- **[Fehlerbehebung] Settings-Widget** - Ein Fehler wurde behoben, bei dem noch nicht existierende Konfigurationsdateien nicht über die Settings-Widget-Oberfläche erstellt oder bearbeitet werden konnten
+- **Dateien per Drag & Drop ins Terminal** - Ziehe Dateien aus dem Finder (macOS) oder deinem Dateimanager in einen Terminal-Block, um deren in Anführungszeichen gesetzten Pfad einzufügen ([#746](https://github.com/wavetermdev/waveterm/issues/746))
+- Neue Opt-in-Einstellung `app:showsplitbuttons` fügt Block-Kopfzeilen horizontale/vertikale Split-Buttons hinzu
+- Die Widget-Seitenleiste kann über das View-Menü umgeschaltet werden; die Sichtbarkeit bleibt pro Workspace erhalten
+- F2 zum Umbenennen des aktiven Tabs
+- Maustaste 3/4 (zurück/vorwärts) navigiert jetzt in Web-Widgets
+- Terminal-Sitzungen setzen jetzt `COLORTERM=truecolor` für bessere Farbunterstützung in CLI-Tools
+- [Fehlerbehebung] Nachgestellte Leerzeichen werden beim Kopieren aus dem Terminal in die Zwischenablage entfernt
+- Paket-Updates und Abhängigkeits-Upgrades
+
+### v0.14.4 — 26. Mär 2026
+
+Wave v0.14.4 führt vertikale Tabs ein, aktualisiert auf xterm.js v6 und enthält eine Reihe von Fehlerbehebungen und internen Verbesserungen.
+
+**Vertikale Tableiste:**
+
+- **Neue Option für vertikale Tableiste** - Tabs können jetzt vertikal an der Fensterseite angezeigt werden, was mehr horizontalen Platz und leichteren Zugriff auf Tabs bietet, wenn viele geöffnet sind. In den Einstellungen zwischen horizontalem und vertikalem Tab-Layout umschaltbar.
+
+**Terminal-Verbesserungen:**
+
+- **xterm.js-v6.0.0-Upgrade** - Upgrade auf das neueste xterm.js v6, was verbesserte Terminal-Kompatibilität und -Darstellung mit sich bringt. Das sollte diverse Darstellungsprobleme beheben, die z. B. bei Claude Code auftraten.
+
+**Weitere Änderungen:**
+
+- **`backgrounds.json`** - `presets/bg.json` wurde in `backgrounds.json` umbenannt, Hintergrundkonfiguration in den neuen Schlüssel `tab:background` verschoben (automatische Migration beim Start)
+- **Konfigurationsfehler verschoben** - Konfigurationsfehler wurden aus der Tableiste entfernt und in die Settings-/WaveConfig-Ansicht verschoben, um weniger Unordnung zu erzeugen
+- **Warnung bei ungespeicherten Änderungen** - Die WaveConfig-Ansicht warnt jetzt, bevor ungespeicherte Änderungen verworfen werden
+- **Stream-Performance** - Datei-Streaming auf eine neue, moderne Schnittstelle mit Flusskontrolle migriert, wodurch ein großer Time-to-First-Byte-Streaming-Fehler behoben wurde
+- **macOS Erster Klick** - Verbesserte Behandlung des ersten Klicks unter macOS (Klick wird abgebrochen, aber Block-/WaveAI-Fokus korrekt gesetzt)
+- Das veraltete Legacy-KI-Widget wurde entfernt
+- [Fehlerbehebung] Fokus-Fehler bei neu erstellten Blöcken behoben
+- [Fehlerbehebung] Problem beim Start einer neuen dauerhaften Sitzung durch Aufteilen einer alten behoben
+- Electron auf v41 aktualisiert
+- Paket-Updates und Abhängigkeits-Upgrades
+
+### v0.14.2 — 12. Mär 2026
+
+Wave v0.14.2 fügt Block-/Tab-Badges, Verbesserungen der Verzeichnisvorschau und diverse Fehlerbehebungen hinzu.
+
+**Block-/Tab-Badges:**
+
+- **Badges auf Blockebene, in Tabs zusammengefasst** - Blöcke können jetzt Icon-Badges (mit Farbe und Priorität) anzeigen, die zusammengefasst und in der Tableiste für einen Statusüberblick auf einen Blick sichtbar sind
+- **Glocken-Indikator standardmäßig aktiviert** - Das Terminal-Glocken-Badge ist jetzt standardmäßig aktiviert und leuchtet den Block und Tab auf, wenn dein Terminal die Glocke auslöst (gesteuert über `term:bellindicator`)
+- **`wsh badge`** - Neuer Befehl `wsh badge` zum Setzen oder Entfernen von Badges an Blöcken über die Kommandozeile. Unterstützt Icons, Farben, Prioritäten, Signalton und PID-gebundene Badges, die automatisch entfernt werden, wenn ein Prozess beendet wird. Ideal in Kombination mit Claude-Code-Hooks, um Benachrichtigungen in der Tableiste sichtbar zu machen ([Dokumentation](https://docs.waveterm.dev/wsh-reference#badge))
+
+**Weitere Änderungen:**
+
+- **Verbesserungen der Verzeichnisvorschau** - Verbesserte Formatierung der Änderungszeit, zebragestreifte Zeilen, bessere Standardsortierung, YAML-Dateiunterstützung und Verbesserungen am Kontextmenü
+- **Suchleiste** - Verbesserungen bei Zwischenablage und Fokus in der Suchleiste
+- [Fehlerbehebung] "New Window" hing sich unter GNOME-Desktops auf/funktionierte nicht - behoben
+- [Fehlerbehebung] "Save Session As..." behoben (Fehler bei der Verfolgung des fokussierten Fensters)
+- [Fehlerbehebung] Zoom-Änderungsbenachrichtigungen wurden nicht korrekt an alle Tabs gesendet (Layout-Inkonsistenzen)
+- Ein Release-Notes-Link im Einstellungsmenü hinzugefügt
+- Arbeit am anthropic-messages-Wave-AI-Backend (für native Claude-Integration)
+- Viel interne Arbeit an Test-/Mock-Infrastruktur, um schnellere asynchrone KI-Bearbeitungen zu ermöglichen
+- Dokumentations-Updates
+- Paket-Updates und Abhängigkeits-Upgrades
+
+### v0.14.1 — 3. Mär 2026
+
+Wave v0.14.1 behebt mehrere folgenreiche Terminal-Fehler (Claude-Code-Scrolling, IME-Eingabe) und fügt neue Konfigurationsoptionen hinzu: Fokus folgt dem Mauszeiger, Anpassung des Cursor-Stils, Workspace-gebundene Widgets und vim-artige Block-Navigation.
+
+**Terminal-Verbesserungen:**
+
+- **Claude-Code-Scroll-Fix** - Ein langjähriger Fehler behoben, durch den Terminal-Fenster unerwartet nach oben sprangen, was viele Claude-Code-Nutzer betraf
+- **IME-Fix** - Koreanische/CJK-Eingabe behoben, bei der Zeichen verloren gingen oder in der Komposition hängen blieben und erst bei Leertaste übernommen wurden
+- **Scroll-Position bei Größenänderung erhalten** - Das Terminal bleibt bei Größenänderungen jetzt am unteren Rand gescrollt, wenn es dort bereits war
+- **Bessere Link-Behandlung** - Terminal-URLs haben jetzt verbesserte Kontextmenüs und Tooltips für einfachere Navigation
+- **Terminal-Scrollback speichern** - Neuer Kontextmenü-Eintrag und `wsh`-Befehl, um den Terminal-Scrollback in eine Datei zu speichern
+
+**Neue Funktionen:**
+
+- **Fokus folgt Mauszeiger** - Neue Einstellung `app:focusfollowscursor` (off/on/term) für Hover-basierten Block-Fokus
+- **Terminal-Cursor-Stil & Blinken** - Neue Einstellungen für Cursor-Stil (block/bar/underline) und Blinken, pro Block konfigurierbar
+- **Tab-Schließen-Bestätigung** - Neue Einstellung `tab:confirmclose`, um vor dem Schließen eines Tabs nachzufragen
+- **Workspace-gebundene Widgets** - Neues optionales Feld `workspaces` in `widgets.json`, um Widgets pro Workspace ein-/auszublenden
+- **Vim-artige Block-Navigation** - Strg+Umschalt+H/J/K/L zum Navigieren zwischen Blöcken hinzugefügt
+- **Neue KI-Anbieter** - Groq und NanoGPT als integrierte KI-Anbieter-Voreinstellungen hinzugefügt
+
+**Weitere Änderungen:**
+
+- Zeitweise auftretende Fehler beim Verbindungswechsel in Terminal-Blöcken behoben
+- Verbesserungen am widgets.json-Schema für bessere Editor-Validierung
+- Paket-Updates und Abhängigkeits-Upgrades
+- Interne Code-Bereinigung und Refactoring
+
+### v0.14.0 — 10. Feb 2026
+
+**Dauerhafte SSH-Sitzungen und verbesserte Verbindungsüberwachung**
+
+Wave v0.14 führt dauerhafte Sitzungen für SSH-Verbindungen ein, sodass deine entfernten Terminal-Sitzungen Verbindungsunterbrechungen, Netzwerkwechsel und Wave-Neustarts überstehen. Dieses Release enthält außerdem größere Verbesserungen der Verbindungsüberwachung, der RPC-Infrastruktur mit Flusskontrolle und erweiterte Terminal-Funktionen.
+
+**Dauerhafte Sitzungen (nur entferntes SSH):**
+- **Unterbrechungen überstehen** - SSH-Terminal-Sitzungen bleiben über Netzwerkwechsel, Ruhezustand des Computers und Wave-Neustarts hinweg bestehen und verbinden sich automatisch neu, sobald die Verbindung wiederhergestellt ist
+- **Sitzungsschutz** - Shell-Status, laufende Programme und Terminal-Verlauf bleiben erhalten, selbst wenn Wave geschlossen oder getrennt ist
+- **Visuelle Statusanzeigen** - Schild-Symbole in Terminal-Kopfzeilen zeigen den Sitzungsstatus (Standard, dauerhaft verbunden, dauerhaft getrennt, dauerhaft wartend) mit detaillierten Flyover-Informationen
+- **Flexible Konfiguration** - Konfiguration auf globaler, Verbindungs- oder Blockebene mit einfachem Wechsel zwischen Standard- und dauerhaftem Modus
+- Siehe die neue [Dokumentation zu dauerhaften Sitzungen](https://docs.waveterm.dev/durable-sessions) für Einrichtung und Nutzung
+
+**Verbesserte Verbindungsüberwachung:**
+- **Verbindungs-Keepalives** - Aktive Überwachung von SSH-Verbindungen mit automatischen Keepalive-Prüfungen
+- **Erkennung hängender Verbindungen** - Ein neuer Verbindungsmonitor erkennt und zeigt "hängende" Verbindungszustände bei Netzwerkproblemen an und liefert klares visuelles Feedback
+- **Bessere Fehlerbehandlung** - Verbesserte Nachverfolgung des Verbindungsstatus und nutzerseitige Statusanzeigen
+
+**Terminal-Verbesserungen:**
+- **OSC-52-Zwischenablage-Unterstützung** - Terminal-Anwendungen können jetzt über OSC-52-Escape-Sequenzen direkt in deine Systemzwischenablage kopieren
+- **Erweitertes Kontextmenü** - Rechtsklick auf Terminals für schnellen Zugriff auf Splits, URL-Öffnen, Themes, Dateibrowser und mehr
+- **Vereinfachtes Kopfzeilenlayout** - Terminal-Kopfzeilen konzentrieren sich jetzt auf Verbindungsinformationen ohne redundante Ansichtstyp-Beschriftungen
+
+**Wave-AI-Updates:**
+- **Bild-/Vision-Unterstützung** - Bildunterstützung für die OpenAI-Chat-Completions-API hinzugefügt, was Vision-Fähigkeiten mit kompatiblen Modellen ermöglicht
+- **Generierung stoppen** - Neue Möglichkeit, KI-Antworten mitten in der Generierung zu stoppen, für OpenAI- und Gemini-Backends
+- **KI-Panel-Scroll-Verriegelung** - Verbessertes automatisches Scroll-Verhalten im Wave-AI-Panel
+- **Konfigurierbare Ausführlichkeit** - Steuerung der Ausführlichkeitsstufen für die OpenAI-Responses-API
+- Veralteter alter KI-Widget-Proxy-Endpunkt abgekündigt
+
+**RPC und Performance:**
+- **RPC-Streaming mit Flusskontrolle** - Neue Streaming-Primitive mit integrierter Flusskontrolle für bessere Performance und Zuverlässigkeit
+- **WSH-Router-Refactor** - Größere Verbesserungen der Routing-Architektur, um Hänger bei Verbindungsunterbrechungen zu verhindern
+- **RPC-Client-/Server-Bereinigung** - Verbesserte RPC-Implementierung und Fehlerbehandlung
+
+**Konfigurations-Updates:**
+- **KI-Button ausblenden** - Neue Einstellung `app:hideaibutton`, um den KI-Button aus der UI auszublenden
+- **Strg+Umschalt-Pfeile deaktivieren** - Neue Einstellung `app:disablectrlshiftarrows` für Konflikte mit Tastenkombinationen
+- **Strg+Umschalt-Anzeige deaktivieren** - Neue Einstellung `app:disablectrlshiftdisplay`, um die Blocknummern-Overlay-Anzeige zu deaktivieren
+
+**Breaking Changes:**
+- **Angeheftete Tabs entfernt** - Die Funktion für angeheftete Tabs wurde aus der UI entfernt
+- **S3 und WaveFile entfernt** - S3-Dateisystem- und Wavefile-Implementierungen entfernt, um Probleme mit großen/rekursiven Dateiübertragungen zu vermeiden und die Codebasis zu vereinfachen
+
+**Weitere Änderungen:**
+- **Bestätigung beim Beenden** - Bestätigungsdialog beim Schließen von Wave mit aktiven Sitzungen hinzugefügt
+- Monaco-Editor-Upgrade, das die Abhängigkeiten `monaco-editor/loader` und `monaco-editor/react` für bessere Performance und Stabilität entfernt
+- Neues Tab-Modell mit React-Provider für verbessertes State-Management
+- Veraltete OSC-23198- und OSC-9283-Legacy-Handler entfernt
+- Contribution-Guidelines aktualisiert
+- Go-Toolchain auf 1.25.6 aktualisiert
+- Erweiterte Dokumentation für OpenAI-kompatible API-Anbieter
+- [Fehlerbehebung] Behandlung leerer Daten in der Sysinfo-Ansicht behoben
+- [Fehlerbehebung] Einstellung `app:ctrlvpaste` unter Windows behoben (kann jetzt deaktiviert werden)
+- [Fehlerbehebung] Doppelter Wave-AI-Systemprompt bei manchen Anbietern behoben
+- [Fehlerbehebung] Hängenbleiben bei Trennung behoben - Trennungen erfolgen jetzt sofort
+- [Fehlerbehebung] Lebenszyklus der Tool-Genehmigung an das Timing der SSE-Verbindung angepasst
+- [Fehlerbehebung] WSL-Verbindungs-Timeout erhöht, um langsamen anfänglichen WSL-Start zu berücksichtigen
+- [Fehlerbehebung] Terminal-Beendigung mit SIGHUP verbessert für einen sauberen Shell-Exit
+- Paket-Updates und Abhängigkeits-Upgrades
+
+### v0.13.1 — 16. Dez 2025
+
+**Windows-Verbesserungen und Wave-AI-Erweiterungen**
+
+Dieses Release konzentriert sich auf deutliche Verbesserungen der Windows-Plattform, visuelle Wave-AI-Updates und mehr Flexibilität bei der lokalen KI-Nutzung.
+
+**Windows-Plattform-Erweiterungen:**
+- **Integriertes Fensterlayout** - Separate Titel- und Menüleiste unter Windows entfernt, Steuerelemente direkt in die Tableisten-Kopfzeile integriert für eine übersichtlichere, einheitlichere Oberfläche
+- **Automatische Git-Bash-Erkennung** - Wave erkennt jetzt automatisch Git-Bash-Installationen und fügt sie zum Verbindungs-Dropdown für einfachen Zugriff hinzu
+- **SSH-Agent-Fallback** - Verbesserte SSH-Agent-Unterstützung mit automatischem Fallback auf `\\.\pipe\openssh-ssh-agent` unter Windows
+- **Aktualisierte Fokus-Tastenkombination** - Die WaveAI-Fokus-Taste wurde unter Windows für bessere Konsistenz auf Alt:0 geändert
+- **Konfigurationsschemas** - Verbesserte Konfigurationsvalidierung und Schema-Unterstützung
+- Strg-V funktioniert unter Windows im Terminal jetzt als Standard-Einfügen
+
+**Wave-AI-Updates:**
+- **Aufgefrischtes visuelles Design** - Vollständige UI-Auffrischung, blaue Akzente entfernt, Transparenzunterstützung für bessere Integration mit benutzerdefinierten Hintergründen hinzugefügt
+- **BYOK ohne Telemetrie** - Wave AI funktioniert jetzt mit Bring-your-own-Key und lokalen Modellen, ohne dass Telemetrie aktiviert sein muss
+- [Fehlerbehebung] Kompatibilität des Tool-Typs "function" mit Anbietern wie Mistral behoben
+
+**Terminal-Verbesserungen:**
+- **Neue Scroll-Tastenkombinationen** - Umschalt+Pos1, Umschalt+Ende, Umschalt+Bild-hoch und Umschalt+Bild-runter für bessere Terminal-Navigation hinzugefügt
+
+**Weitere Änderungen:**
+- Paket-Updates und Abhängigkeits-Upgrades
+
+### v0.13.0 — 8. Dez 2025
+
+**Wave v0.13 bringt lokale KI-Unterstützung, BYOK und einheitliche Konfiguration**
+
+Wave v0.13 ist ein größeres Release, das Wave AI für lokale Modelle, Drittanbieter und Bring-your-own-Key-(BYOK)-Konfigurationen öffnet. Dieses Release enthält außerdem ein komplett neu gestaltetes Konfigurationssystem und mehrere Terminal-Verbesserungen.
+
+**Lokale KI & BYOK-Unterstützung:**
+- **OpenAI-kompatible API** - Wave unterstützt jetzt jeden Anbieter oder lokalen Server, der den Endpunkt `/v1/chat/completions` nutzt, was die Nutzung von Ollama, LM Studio, vLLM, OpenRouter und unzähligen anderen lokalen und gehosteten Modellen ermöglicht
+- **Google-Gemini-Integration** - Native Unterstützung für Googles Gemini-Modelle mit dediziertem API-Adapter
+- **Anbieter-Voreinstellungen** - Vereinfachte Konfiguration mit integrierten Voreinstellungen für OpenAI, OpenRouter, Google, Azure und benutzerdefinierte Endpunkte
+- **Mehrere KI-Modi** - Einfacher Wechsel zwischen verschiedenen Modellen und Anbietern über eine einheitliche Oberfläche
+- Siehe die neue [Dokumentation zu Wave-AI-Modi](https://docs.waveterm.dev/waveai-modes) für Konfigurationsbeispiele und Einrichtungsanleitungen
+
+**Einheitliches Konfigurations-Widget:**
+- **Neue Konfigurationsoberfläche** - Den einfachen JSON-Editor durch ein dediziertes, über die Seitenleiste zugängliches Konfigurations-Widget ersetzt
+- **Bessere Organisation** - Verschiedene Konfigurationstypen (allgemeine Einstellungen, KI-Modi, Secrets) mit verbesserter Validierung und Fehlerbehandlung durchsuchen und bearbeiten
+- **Integrierte Secrets-Verwaltung** - Direkter Zugriff auf Waves Secret-Speicher aus dem Konfigurations-Widget für sichere Zugangsdatenverwaltung
+
+**Terminal-Verbesserungen:**
+- **Bracketed-Paste-Modus** - Jetzt standardmäßig aktiviert, um das Einfügen mehrzeiliger Inhalte und die Kompatibilität mit Tools wie Claude Code zu verbessern
+- **Windows-Einfüge-Fix** - Strg+V funktioniert unter Windows jetzt als Standard-Einfüge-Tastenkombination
+- **SSH-Passwortverwaltung** - SSH-Verbindungspasswörter in Waves Secret-Speicher speichern, um wiederholtes Eintippen von Zugangsdaten zu vermeiden
+
+**Weitere Änderungen:**
+- Paket-Updates und Abhängigkeits-Upgrades
+- Verschiedene Fehlerbehebungen und Stabilitätsverbesserungen
+
+### v0.12.5 — 24. Nov 2025
+
+Schnelles Patch-Release, um das Einfügeverhalten unter Linux zu beheben (verhindert, dass rohes HTML ins Terminal eingefügt wird).
+
+### v0.12.4 — 21. Nov 2025
+
+Schnelles Patch-Release mit Fehlerbehebungen und kleineren Verbesserungen.
+
+- Neue Einstellung `term:macoptionismeta` für macOS, um die Option-Taste im Terminal als Meta-Taste zu behandeln
+- Verzeichnisverfolgung für zsh-Shells behoben
+- Editor-Kopieroperationen behoben
+- Kleinere Wave-AI-Verbesserungen (Bildbehandlung, Scrollen, Fokus)
+- Paket-Updates und Abhängigkeits-Upgrades
+- WIP: WaveApps-Builder-Framework (noch nicht veröffentlicht)
+
+### v0.12.3 — 17. Nov 2025
+
+Patch-Release mit Wave-AI-Modell-Upgrade, neuen Secret-Verwaltungsfunktionen und verbesserter Terminal-Eingabebehandlung.
+
+**Wave-AI-Updates:**
+- **GPT-5.1-Modell** - Upgrade auf OpenAIs GPT-5.1-Modell für verbesserte Antworten
+- **Umschalter für Denkmodus** - Neues Dropdown zur Auswahl zwischen den Denkmodi Quick, Balanced und Deep für optimale Balance zwischen Antwortqualität und Geschwindigkeit
+- [Fehlerbehebung] Pfad-Abgleichsproblem bei der Wiederherstellung von KI-Datei-Schreibsicherungen behoben
+
+**Neue Funktionen:**
+- **Secret-Speicher** - Neues Secret-Verwaltungs-Widget zum Speichern und Verwalten sensibler Zugangsdaten. Zugriff auf Secrets über die CLI mit den Befehlen `wsh secret list/get/set`
+
+**Terminal-Verbesserungen:**
+- **Erweiterte Eingabebehandlung** - Bessere Unterstützung für interaktive CLI-Tools wie Claude Code. Umschalt+Enter fügt jetzt standardmäßig Zeilenumbrüche für mehrzeilige Befehle ein
+- **Bild-Einfüge-Unterstützung** - Bilder direkt ins Terminal einfügen (werden in temporären Dateien gespeichert, Pfad wird eingefügt). Funktioniert hervorragend mit Claude Code!
+- **IME-Fix** - Problem mit doppeltem Text beim Wechseln der Eingabemethode während chinesischer/japanischer/koreanischer Komposition behoben
+
+**Weitere Änderungen:**
+- Verbesserte Backend-Panic-Nachverfolgung für besseres Debugging
+- Speicherleck rund um sysinfo-Ereignisse behoben
+- WIP: Neues WaveApps-Builder-Framework (noch nicht veröffentlicht)
+- Paket-Updates und Abhängigkeitsanhebungen
+
+### v0.12.2 — 4. Nov 2025
+
+Wave v0.12.2 fügt Wave AI die Fähigkeit hinzu, Dateien zu bearbeiten. Vor dem Genehmigen einer Dateibearbeitung kannst du leicht einen Diff einsehen (dargestellt im Monaco-Editor-Diff-Viewer), und nach dem Genehmigen einer Bearbeitung kannst du die Änderung mit einem "Revert File"-Button leicht rückgängig machen.
+
+**Wave-AI-Updates:**
+- **Datei-Schreib-Tool** - Wave AI kann jetzt mit deiner Genehmigung Dateien erstellen und ändern
+- **Visuelle Diff-Vorschau** - Sieh genau, was sich ändert, bevor du Bearbeitungen genehmigst, dargestellt im Monaco Editor
+- **Einfaches Rückgängigmachen** - Dateiänderungen mit einem einfachen "Revert File"-Button rückgängig machen
+- **Dateien per Drag & Drop** - Dateien direkt aus dem Vorschau-Viewer zu Wave AI ziehen
+- **Verzeichnislisten** - `wsh ai` kann jetzt Verzeichnislisten an Chats anhängen
+- **Anpassbare Einstellungen** - Denk-Level und maximale Ausgabe-Tokens pro Chat steuern
+
+**Fehlerbehebungen & Verbesserungen:**
+- Ein erhebliches Speicherleck im RPC-System behoben
+- Schema-Validierung für Konfigurationsdateien funktioniert wieder
+- Verbesserte Tool-Beschreibungen und Eingabevalidierungen (laufen vor Tool-Genehmigungen)
+- Problem mit vorzeitigen Tool-Timeouts behoben
+- Regression mit PowerShell 5.x behoben
+- Problem mit Prompt-Caching beim Anhängen von Dateien behoben
+
+### v0.12.1 — 20. Okt 2025
+
+Patch-Release mit Fokus auf Verbesserungen der Shell-Integration und Wave-AI-Erweiterungen. Dieses Release behebt Syntax-Highlighting im Code-Editor und fügt umfangreiche Shell-Kontext-Verfolgung hinzu.
+
+**Shell-Integration & Kontext:**
+- **OSC-7-Unterstützung** - OSC-7-Unterstützung (aktuelles Arbeitsverzeichnis) für bash, zsh, fish und pwsh hinzugefügt. Wave verfolgt und stellt jetzt automatisch dein aktuelles Verzeichnis über Neustarts hinweg wieder her, sowohl für lokale als auch entfernte Terminals.
+- **Shell-Kontext-Verfolgung** - Shell-Integration für bash-, zsh- und fish-Shells implementiert. Wave verfolgt jetzt, wann deine Shell bereit ist, Befehle zu empfangen, den zuletzt ausgeführten Befehl und Exit-Codes. Dieser erweiterte Kontext ermöglicht besseres Terminal-Management und legt den Grundstein dafür, dass Wave AI Befehle intelligent schreiben und ausführen kann.
+
+**Wave-AI-Verbesserungen:**
+- Zusammenfassungen des Denkprozesses in der UI anzeigen, während auf KI-Antworten gewartet wird
+- Erweiterten Terminal-Kontext hinzugefügt - Wave AI hat jetzt Zugriff auf Shell-Status einschließlich aktuellem Verzeichnis, Befehlsverlauf und Exit-Codes
+- Feedback-Buttons (Daumen hoch/runter) für KI-Antworten hinzugefügt, um die Erfahrung zu verbessern
+- Kopieren-Button hinzugefügt, um KI-Antworten einfach in die Zwischenablage zu kopieren
+
+**Weitere Änderungen:**
+- Unterstützung für mobile User-Agent-Emulation für Web-Widgets [#2442](https://github.com/wavetermdev/waveterm/issues/2442)
+- [Fehlerbehebung] Abstand für Kopfzeilen-Buttons im Code-Editor behoben (Tailwind-Regression)
+- [Fehlerbehebung] Syntax-Highlighting in Code-Editor-Vorschau-Blöcken wiederhergestellt [#2427](https://github.com/wavetermdev/waveterm/issues/2427)
+- Paket-Updates und Abhängigkeitsanhebungen
+
+### v0.12.0 — 16. Okt 2025
+
+**Wave v0.12 ist da, mit Wave AI (Beta)!**
+
+Wave Terminal v0.12.0 führt eine komplett neu gestaltete KI-Erfahrung ein, angetrieben von OpenAI GPT-5. Das ist ein bedeutendes Upgrade und eine Modernisierung gegenüber Waves bisheriger KI-Integration, mit Multimodalitäts-Unterstützung, fortschrittlicher Tool-Integration und einer intuitiven neuen Oberfläche. Allein der Haupt-KI-PR umfasste 128 Commits und fügte über 13.000 Zeilen Code hinzu.
+
+**Wave-AI-Funktionen:**
+- **Neues ausklappbares Chat-Panel** - Zugriff auf Wave AI über Tastenkombinationen (Cmd-Shift-A oder Strg-Umschalt-0) von der linken Bildschirmseite
+- **Multimodale Eingabe** - Unterstützung für Bild-, PDF- und Textdatei-Anhänge
+- **Dateien per Drag & Drop** - Dateien einfach in den Chat ziehen, um sie anzuhängen
+- **Kommandozeilen-Integration** - Dateien und Befehlsausgaben direkt mit `wsh ai` an Wave AI senden
+- **Intelligenter Kontextwechsel** - Wave AI ermöglichen, in deine Widgets und dein Dateisystem zu sehen
+- **Integrierte Tools:**
+ - Websuche-Fähigkeiten
+ - Lokale Datei- und Verzeichnisoperationen
+ - Widget-Screenshots
+ - Zugriff auf Terminal-Scrollback
+ - Web-Navigation
+
+Wave AI befindet sich in einer aktiven Beta-Phase mit enthaltenem KI-Guthaben, während wir die Erfahrung weiter verfeinern. BYOK (Bring Your Own Key) wird verfügbar sein, sobald wir die Kernfunktionen stabilisiert und Feedback dazu gesammelt haben, was am besten funktioniert. Teile dein Feedback in unserem [Discord](https://discord.gg/XfvZ334gwU).
+
+Weitere Informationen und kommende Funktionen findest du in unserer [Wave-AI-Dokumentation](https://docs.waveterm.dev/waveai).
+
+**Weitere Verbesserungen:**
+- Neuer Onboarding-Ablauf, der Block-Vergrößerung, Wave AI und wsh view/edit-Fähigkeiten vorstellt
+- Neuer Befehl `wsh blocks list` zum Auflisten und Filtern von Blöcken nach Workspace, Tab oder Ansichtstyp
+- Fortgesetzte Migration von SCSS zu Tailwind v4
+- Paket-Upgrades und Abhängigkeits-Updates
+- Interne Code-Bereinigung und Refactoring
+
+### v0.11.6 — 22. Sep 2025
+
+Patch-Release zur Behebung eines Editor-Fehlers, wenn zwei Dateien in separaten Bearbeitungs-Widgets geöffnet werden. Fügt außerdem Mermaid-Unterstützung für Markdown-Blöcke hinzu.
+
+* WIP: Große KI-Überarbeitung kommt (Multimodalitäts-Unterstützung, Premium-Modelle und Tool-Unterstützung)
+* WIP: Integration des neuen Tsunami-Widget-Frameworks, um das Schreiben und Ausführen von Wave-Widgets zu vereinfachen
+* Viele Paket-Updates
+* Viel interne Bereinigung (Vorschau-Widget)
+* Weitere Migration zu Tailwind-v4-CSS
+* Build-Updates, Wechsel von yarn zu npm
+
+### v0.11.5 — 28. Aug 2025
+
+Ein weiteres Aufräum-Release, um Wave zu modernisieren und aktueller zu machen.
+
+* Der Wave-AI-Cloud-Proxy nutzt jetzt gpt-5-mini (Upgrade von gpt-4o-mini)
+* JWT-Problem beim Ausführen von "Wave Apps" aus Widgets behoben
+* Eine "$ENV:envvar:fallback"-Syntax zu den Konfigurationsdateien hinzugefügt, damit Waves Konfiguration Werte aus der Umgebung übernehmen kann (hauptsächlich, um Secrets aus den Konfigurationsdateien herauszuhalten)
+* Neue Einstellung, um die Anzeige von Overlay-Blocknummern beim Halten von Strg:Umschalt zu deaktivieren (`app:showoverlayblocknums`)
+* Neue Einstellung, damit Umschalt-Enter mit Tools wie Claude Code funktioniert (`term:shiftenternewline`)
+* Frontend auf React 19 aktualisiert
+* Weitere Teile des Frontends zu Tailwind v4 migriert (in Arbeit)
+* Universellen MacOS-Build entfernt. 90% der Mac-Nutzer sind mittlerweile auf Apple Silicon, sodass der universelle Build weniger wichtig ist (größere Dateigröße, komplizierterer Build-Prozess)
+* [Fehlerbehebung] Build-IDs im RPM-Build entfernt, um Konflikte mit Slack zu beheben
+* Einige Wave-v7-bewusste Upgrades und alte Codepfade entfernt
+* Interne Bereinigung, TypeScript-Fehler, Linting-Fixes usw.
+* Weitere diverse Go-/npm-Paket-Anhebungen
+
+### v0.11.4 — 19. Aug 2025
+
+Schnelles Patch-Release zur Aktualisierung von Paketen, Behebung einiger Sicherheitsprobleme (bei abhängigen Paketen) und einiger kleiner Fehlerbehebungen.
+
+* KI-Bibliotheken aktualisiert, GPT-5 wird jetzt in WaveAI unterstützt
+* Einstellung `ai:proxyurl` hinzugefügt, um Proxy-Zugriff (z. B. SOCKS) für KI-Zugriff zu ermöglichen
+
+### v0.11.3 — 2. Mai 2025
+
+Schnelles Patch-Release zur Aktualisierung von Paketen, Behebung einiger Sicherheitsprobleme (bei abhängigen Paketen) und einiger kleiner Fehlerbehebungen.
+
+### v0.11.2 — 8. März 2025
+
+Schnelles Patch-Release zur Behebung eines Backend-Panics und Rückgängigmachen einer Änderung, die WSL-Verbindungen zum Hängen brachte.
+
+### v0.11.1 — 28. Feb 2025
+
+Wave Terminal v0.11.1 fügt gegenüber v0.11.0 eine Menge neuer Funktionen hinzu (es hätte fast v0.12 werden können)!
+
+Die Hauptfunktion ist, dass unser Datei-/Vorschau-Widget jetzt das Durchsuchen von S3-Buckets unterstützt. Wir lesen Zugangsdaten direkt aus deiner ~/.aws/config, und du kannst jetzt einfach eines deiner AWS-Profile in unserem Verbindungs-Dropdown auswählen, um S3-Dateien anzusehen. Wir unterstützen sogar das Bearbeiten von S3-Textdateien mit unserem integrierten Editor.
+
+Außerdem viele weitere Funktionen und Fehlerbehebungen:
+
+- **S3-Bucket**-Verzeichnisansicht und Dateivorschau
+- **Dateien und Verzeichnisse per Drag & Drop** zwischen Wave-Verzeichnisansichten verschieben. Das funktioniert über Rechner hinweg und zwischen entfernten Rechnern und S3-Verbindungen.
+- JSON-Schema-Unterstützung für einige unserer Konfigurationsdateien hinzugefügt. Du erhältst jetzt Autovervollständigungs-Popups für Felder in unseren Dateien settings.json, widgets.json, ai.json und connections.json.
+- Neue Unterstützung für das Teilen von Blöcken -- Nutze Cmd-D und Cmd-Umschalt-D, um horizontal und vertikal zu teilen. Für mehr Kontrolle kannst du Strg-Umschalt-S und dann Hoch/Runter/Links/Rechts nutzen, um in die gewünschte Richtung zu teilen.
+- Block löschen (ohne ihn aus dem Layout zu entfernen). Mit Strg-Umschalt-D kannst du einen Block entfernen, während er im Layout bleibt. Du kannst dann an seiner Stelle ein neues Widget starten.
+- `wsh file` unterstützt jetzt das Kopieren von Dateien zwischen deinem lokalen Rechner, entfernten Rechnern und zu/von S3
+- Neues Analytics-Framework (ereignisbasiert statt zählerbasiert). Siehe die Telemetrie-Dokumentation für weitere Informationen.
+- Web-Lesezeichen! In deiner bookmarks.json-Datei bearbeiten, im Web-Widget mit Cmd+O öffnen
+- Änderungen an deiner ai.json-Voreinstellungsdatei wirken sich jetzt _sofort_ in KI-Widgets aus
+- Deutlich bessere Fehlerbehandlung und -meldungen bei Fehlern im Vorschau- oder Editor-Widget
+- `wsh ssh --new` hinzugefügt, um die neue SSH-Verbindung in einem neuen Widget zu öffnen
+- Neuer Befehl `wsh launch`, um ein beliebiges, in widget.json definiertes benutzerdefiniertes Widget zu öffnen
+- Bei Nutzung der Terminal-Mehrfacheingabe (Strg-Umschalt-I) wird eingefügter Text jetzt an alle Terminals gesendet
+- [Fehlerbehebung] Einige hängende Goroutinen behoben, wenn Befehle fehlschlugen oder ein Timeout hatten
+- [Fehlerbehebung] Einige Dateiendungs-MIME-Types behoben, um den Editor für mehr Dateitypen zu aktivieren
+- [Fehlerbehebung] Drücken von "Tab" ließ manchmal ein Widget aus dem Bildschirm scrollen und dadurch unbenutzbar werden - behoben
+- [Fehlerbehebung] XDG-Variablen gelangen nicht mehr in Terminal-Widgets
+- Tailwind-CSS- und shadcn-Unterstützung hinzugefügt, um neue Widgets schneller bauen zu können
+- Bessere interne Widget-Abstraktionen
+
+### v0.11.0 — 24. Jan 2025
+
+Wave Terminal v0.11.0 enthält eine grundlegende Überarbeitung unserer Verbindungsinfrastruktur, mit Änderungen sowohl an unserem Backend als auch an den Remote-Dateiprotokollsystemen, zusätzlich zu zahlreichen Funktionen, Fehlerbehebungen und Stabilitätsverbesserungen.
+
+Eine zentrale Neuerung in diesem Release ist das neue Shell-Initialisierungssystem, das die Anpassung deiner Shell-Umgebung über lokale und entfernte Verbindungen hinweg ermöglicht. Du kannst jetzt Umgebungsvariablen und shell-spezifische Init-Skripte sowohl pro Block als auch pro Verbindung konfigurieren.
+
+Für den täglichen Gebrauch haben wir Suchfunktionen sowohl für Terminal- als auch für Web-Blöcke hinzugefügt, zusammen mit einer Terminal-Mehrfacheingabefunktion für gleichzeitige Eingabe an alle Terminals innerhalb eines Tabs. Wir haben außerdem Unterstützung für Google Gemini in Wave AI hinzugefügt, was unsere Suite an KI-Integrationen erweitert.
+
+Hinter den Kulissen haben wir unser Remote-Dateiprotokoll neu gestaltet und damit den Grundstein für die kommende S3-Unterstützung (und S3-kompatible Systeme) in unserem Vorschau-Widget gelegt. Diese architektonische Änderung ebnet den Weg, um in Zukunft weitere Datei-Backends hinzuzufügen.
+
+- **Anpassung der Shell-Umgebung** -- Konfiguriere deine Shell-Umgebung mit Umgebungsvariablen und Init-Skripten, mit Unterstützung für lokale und entfernte Verbindungen
+- **Verbesserungen am Verbindungs-Backend** -- Große Überarbeitung mit verbesserter Shell-Erkennung, besserem Fehler-Logging und weniger 2FA-Abfragen bei Nutzung von ForceCommand
+- **Multi-Shell-Unterstützung** -- Erweiterte Unterstützung für bash-, zsh-, pwsh- und fish-Shells mit shell-spezifischen Initialisierungsfähigkeiten
+- **Terminal-Suche** -- nutze Cmd-F, um Text in Terminal-Widgets zu suchen
+- **Web-Suche** -- nutze Cmd-F, um Text in Web-Ansichten zu suchen
+- **Terminal-Mehrfacheingabe** -- Nutze Strg-Umschalt-I, um Mehrfacheingabe an alle Terminals im selben Tab zu ermöglichen
+- **Wave AI unterstützt jetzt Google Gemini**
+- Verbesserte WSL-Unterstützung mit wsh-freien Verbindungsoptionen
+- Inline-Debugging-Informationen für Verbindungen hinzugefügt
+- Probleme mit der Dateiberechtigungsbehandlung unter Windows-Systemen behoben
+- Verbindungsbezogene Popups werden jetzt nur an das auslösende Fenster ausgeliefert
+- Verbesserte Timeout-Behandlung für SSH-Verbindungen, die 2FA-Abfragen erfordern
+- Behandlung der Escape-Taste in globalen Ereignis-Handlern behoben (Schließen von Modals)
+- Die Verzeichnisvorschau füllt jetzt die gesamte Blockbreite
+- Benutzerdefinierte Widgets können jetzt im vergrößerten Modus gestartet werden
+- Verschiedene Verbesserungen der Workspace-UX rund um Schließen/Löschen
+- file:///-URLs funktionieren jetzt im Web-Widget
+- Maximale Dateigröße für `wsh ai` auf 50k erhöht
+- Maximal zulässiges term:scrollback auf 50k Zeilen erhöht
+- Verbindungen können jetzt vollständig in connections.json definiert werden, ohne auf ~/.ssh/config angewiesen zu sein
+- Option hinzugefügt, um Dateien für die lokale Verbindung im externen Dateibetrachter anzuzeigen
+- Neue Option "New Window" beim Rechtsklick auf das MacOS-Dock-Icon hinzugefügt
+- [Build] Zu kostenlosen Ubuntu-ARM-Runnern für bessere ARM64-Build-Unterstützung gewechselt
+- [Build] Windows-Builds nutzen jetzt zig, was das Windows-Entwicklungssetup vereinfacht
+- [Fehlerbehebung] Das Verbindungs-Dropdown wird jetzt auch befüllt, wenn die ssh-Konfiguration fehlt oder ungültig ist
+- [Fehlerbehebung] Bracketed-Paste-Modus standardmäßig deaktiviert (Konfigurationsoption, um ihn wieder zu aktivieren)
+- [Fehlerbehebung] Timeout für `wsh ssh` auf 60s erhöht
+- [Fehlerbehebung] Fix für das Sysinfo-Widget bei der Anzeige einer sehr großen Anzahl von CPU-Diagrammen
+- [Fehlerbehebung] XDG-Variablen für Snap-Installationen behoben
+- [Fehlerbehebung] SSH-Flag IdentitiesOnly wird jetzt beachtet (nützlich, wenn viele Schlüssel im ssh-agent geladen sind)
+- [Fehlerbehebung] Bessere Einrichtung der Shell-Umgebungsvariablen beim Ausführen lokaler Shells
+- [Fehlerbehebung] Vorschau für große Textdateien behoben
+- [Fehlerbehebung] URLs im Terminal behoben (wieder anklickbar)
+- [Fehlerbehebung] Windows-URLs funktionieren jetzt korrekt für Wave-Hintergrundbilder
+- [Fehlerbehebung] Verbindungen starten ohne wsh, wenn der Unix-Domain-Socket nicht geöffnet werden kann
+- [Fehlerbehebung] Die Verbindungsstatusliste leuchtet jetzt korrekt für aktuell verbundene Verbindungen
+- [Fehlerbehebung] en_US.UTF-8 wird genutzt, wenn die angeforderte LANG in deinem Terminal nicht verfügbar ist
+- Weitere Fehlerbehebungen, Performance-Verbesserungen und Abhängigkeits-Updates
+
+### v0.10.4 — 20. Dez 2024
+
+Schnelles Update mit Fehlerbehebungen und neuen Konfigurationsoptionen
+
+- Konfigurationsoptionen "window:confirmclose" und "window:savelastwindow" hinzugefügt
+- [Fehlerbehebung] Defekte Scrollleiste im KI-Widget behoben
+- [Fehlerbehebung] Standardpfad für die wsh-Shell-Erkennung behoben (genutzt bei Remote-Verbindungen)
+- Abhängigkeits-Updates
+
+### v0.10.3 — 19. Dez 2024
+
+Schnelles Update zu v0.10 mit neuen Funktionen und Fehlerbehebungen.
+
+- Unterstützung für globale Tastenkombination [Dokumentation](https://docs.waveterm.dev/config#customizable-systemwide-global-hotkey)
+- Konfiguration hinzugefügt, um die Schriftgröße für Markdown, KI-Chat und den Vorschau-Editor zu überschreiben [Dokumentation](https://docs.waveterm.dev/config)
+- Möglichkeit hinzugefügt, eine unabhängige Zoomstufe für die Web-Ansicht festzulegen (Rechtsklick auf die Block-Kopfzeile)
+- Neuer Befehl `wsh wavepath`, um das Konfigurationsverzeichnis, das Datenverzeichnis und die Log-Datei zu öffnen
+- [Fehlerbehebung] Absturz behoben, wenn /etc/sshd_config eine nicht unterstützte Match-Direktive enthielt (am häufigsten bei Fedora)
+- [Fehlerbehebung] Workspaces sind jetzt konsistenter über Fenster hinweg, schließt das zugehörige Fenster, wenn Workspaces gelöscht werden
+- [Fehlerbehebung] zsh unter WSL behoben
+- [Fehlerbehebung] Langjährigen Fehler behoben, bei dem manchmal Steuersequenzen in der Terminal-Ausgabe erschienen, wenn zwischen Tabs gewechselt wurde
+- Viele neue Beispiele in der Dokumentation für Shell-Überschreibungen, Voreinstellungen, Widgets und Verbindungen
+- Weitere Fehlerbehebungen und UI-Updates
+
+(Hinweis: Die Release Notes von v0.10.2 und v0.10.3 wurden zusammengeführt)
+
+### v0.10.1 — 12. Dez 2024
+
+Schnelles Update zur Behebung der Workspace-App-Menü-Aktionen. Behebt außerdem den Workspace-Wechsel, sodass immer ein neues Fenster geöffnet wird, wenn er von einem Nicht-Workspace-Fenster aus aufgerufen wird. Das verringert die Gefahr, versehentlich die Tabs eines Nicht-Workspace-Fensters zu verlieren.
+
+### v0.10.0 — 11. Dez 2024
+
+Wave Terminal v0.10.0 führt Workspaces ein, wodurch die Verwaltung mehrerer Arbeitsumgebungen einfacher wird. Wir haben leistungsstarke neue Befehlsausführungsfähigkeiten mit `wsh run` hinzugefügt, mit denen du Befehle in dedizierten Blöcken starten und steuern kannst. Dieses Release bringt außerdem deutliche Verbesserungen bei SSH mit einem neuen Konfigurationssystem für Verbindungen zur Verwaltung deiner entfernten Umgebungen.
+
+- **Workspaces**: Organisiere deine Arbeit in separate Umgebungen, jede mit eigenen Tabs, Layouts und Einstellungen
+- **Command Blocks**: Neuer Befehl `wsh run` zum Starten von Terminal-Befehlen in dedizierten Blöcken, mit Unterstützung für Vergrößerung, automatisches Schließen und Ausführungssteuerung ([Dokumentation](https://docs.waveterm.dev/wsh-reference#run))
+- **Verbindungen**: Neues Konfigurationssystem zur Verwaltung von SSH-Verbindungen, mit Unterstützung für wsh-freien Betrieb, Themes pro Verbindung und mehr ([Dokumentation](https://docs.waveterm.dev/connections))
+- Verbessertes Tab-Management mit besserem Wechselverhalten und Kontextmenüs (viele Fehlerbehebungen)
+- Neue Tab-Funktionen einschließlich angehefteter Tabs und Verbesserungen beim Drag & Drop
+- Dateien/Verzeichnisse direkt in der Verzeichnisvorschau erstellen, umbenennen und löschen
+- Versucht eine wsh-freie Verbindung als Fallback, wenn die wsh-Installation oder -Ausführung fehlschlägt
+- Neues Flag `-i`, um Identitätsdateien mit dem Befehl `wsh ssh` hinzuzufügen
+- Perplexity-API-Integration hinzugefügt ([Dokumentation](https://docs.waveterm.dev/faq#perplexity))
+- Befehl `wsh setbg` für die Hintergrundverwaltung ([Dokumentation](https://docs.waveterm.dev/wsh-reference#setbg))
+- Von Less zu SCSS für das Styling gewechselt
+- [Fehlerbehebung] Tab-Flackern beim Tab-Wechsel behoben
+- [Fehlerbehebung] Größenänderungsverhalten des WaveAI-Textbereichs korrigiert
+- [Fehlerbehebung] Probleme mit gleichzeitigem Start von Block-Controllern behoben
+- [Fehlerbehebung] Vorschau-Blöcke für nicht initialisierte Verbindungen behoben
+- [Fehlerbehebung] Nicht reagierende Kontextmenüs behoben
+- [Fehlerbehebung] Verbindungsfehler im Hilfe-Block behoben
+- Go-Toolchain auf 1.23.4 aktualisiert
+- Viel neue Dokumentation, darunter neue Seiten für [Erste Schritte](https://docs.waveterm.dev/gettingstarted), [KI-Voreinstellungen](https://docs.waveterm.dev/ai-presets) und den [wsh-Überblick](https://docs.waveterm.dev/wsh)
+- Weitere Fehlerbehebungen, Performance-Verbesserungen und Abhängigkeits-Updates
+
+### v0.9.3 — 20. Nov 2024
+
+Neues Minor-Release, das Waves verbundene Computing-Erweiterungen einführt. Wir haben neue `wsh`-Befehle eingeführt, mit denen du Variablen und Dateien speichern und über Terminal-Sitzungen hinweg (sowohl auf lokalen als auch entfernten Rechnern) darauf zugreifen kannst.
+
+- `wsh setvar/getvar` zum Abrufen und Setzen von Variablen -- [Dokumentation](https://docs.waveterm.dev/wsh-reference#getvarsetvar)
+- `wsh file`-Operationen (cat, write, append, rm, info, cp und ls) -- [Dokumentation](https://docs.waveterm.dev/wsh-reference#file)
+- Verbesserte Golang-Panic-Behandlung, um Backend-Abstürze zu verhindern
+- Verbessertes SSH-Konfigurations-Logging und Behebung eines Fehlers bei wiederverwendeten Verbindungen
+- Telemetrie aktualisiert, um zusätzliche Zähler zu verfolgen
+- Neue Konfigurationseinstellungen (unter "window:magnifiedblock") zur Steuerung von Rändern und Anzeige vergrößerter Blöcke
+- Neue Block-/Zonen-Aliase (client, global, block, workspace, temp)
+- `wsh ai`-Dateianhänge werden jetzt mit spezieller Behandlung im KI-Block dargestellt
+- Neuer flüchtiger Blocktyp zum Erstellen von modalen Widgets, die das darunterliegende Layout nicht stören
+- Das Bearbeiten der KI-Voreinstellungsdatei aus dem Wave-AI-Block öffnet jetzt einen flüchtigen Editor
+- Ein Klick außerhalb eines vergrößerten Blocks verkleinert ihn jetzt wieder
+- Neuer Button zum Leeren des KI-Chats (auch an Cmd-L gebunden)
+- Neuer Button zum Zurücksetzen von Terminal-Befehlen in benutzerdefinierten cmd-Widgets
+- [Fehlerbehebung] Das Voreinstellungsverzeichnis wurde unter Windows nicht korrekt geladen
+- [Fehlerbehebung] Vergrößerte Blöcke wurden beim Start nicht korrekt angezeigt
+- [Fehlerbehebung] Fensterdeckkraft und Hintergrundfarbe wurden nicht in allen Fällen korrekt angewendet
+- [Fehlerbehebung] Terminal-Theming beim Anwenden globaler Standardwerte behoben [#1287](https://github.com/wavetermdev/waveterm/issues/1287)
+- MacOS 10.15 (Catalina) wird nicht mehr unterstützt
+- Weitere Fehlerbehebungen, Dokumentationsverbesserungen und Abhängigkeitsanhebungen
+
+### v0.9.2 — 11. Nov 2024
+
+Neues Minor-Release mit Fehlerbehebungen und neuen Funktionen! Der Fehler beim Vollbildmodus von Wave wurde behoben (betraf auch bestimmte Fenstermanager wie Hyprland). Wir haben außerdem viel Arbeit in die Dokumentations-Website (https://docs.waveterm.dev) gesteckt, einschließlich der Dokumentation, wie [Widgets](./widgets) und Voreinstellungen funktionieren!
+
+- Dokumentation aktualisiert
+- Wave AI unterstützt jetzt die Anthropic-API! Schau in die [FAQ](./faq), wie du die Claude-Modelle mit Wave AI nutzt.
+- defaultwidgets.json entfernt und in widgets.json vereinheitlicht. Macht es einfacher, die Standard-Widgets zu überschreiben.
+- Neue Resolver für den `-b`-Parameter in `wsh`. "tab:N" für den Zugriff auf den n-ten Tab, "[view]" und "[view]:N" für den Zugriff auf Blöcke eines bestimmten Ansichtstyps.
+- Neuer Befehl `wsh ai`, um KI-Chats (und Dateien) direkt an einen neuen oder bestehenden KI-Block zu senden
+- Verbesserungen an wsh setmeta/getmeta. setmeta kann jetzt eine JSON-Datei entgegennehmen (auch von stdin lesen), außerdem bessere Ausgabeformate für getmeta (kompatibel mit setmeta)
+- [Fehlerbehebung] Maximale Completion-Tokens in der OpenAI-API gesetzt, sodass wir jetzt mit o1-Modellen arbeiten können (auch Fallback auf Nicht-Streaming-Modus)
+- [Fehlerbehebung] Inhaltsgrößenänderung beim Wechsel in den "Vollbild"-Modus behoben. Dieser Fehler betraf auch bestimmte Fenstermanager (wie Hyprland)
+- Viele weitere kleine Fehlerbehebungen, Dokumentations-Updates und Abhängigkeitsanhebungen
+
+### v0.9.1 — 1. Nov 2024
+
+Kleines Bugfix-Release als Nachfolger zum v0.9.0-Build. Viele Probleme behoben (besonders für Windows).
+
+- CLI-Anwendungen, die Mikrofon-, Kamera- oder Standortzugriff benötigen, funktionieren jetzt unter MacOS. Du siehst ein Sicherheits-Popup in Wave zum Erlauben/Ablehnen [#1086](https://github.com/wavetermdev/waveterm/issues/1086)
+- `wsh version -v` kann jetzt genutzt werden, um die neuen Daten-/Konfigurationsverzeichnisse auszugeben
+- Stellt die alte T1-, T2-, T3-, ...-Tab-Benennungslogik wieder her
+- Vorübergehend zurück zur "Titelleiste" unter Windows, um einen Fehler zu umgehen, bei dem die Fenstersteuerelemente unsere Tabs überlagerten (an einer echten Lösung für das nächste Release wird gearbeitet)
+- Es gibt eine neue Einstellung im Editor, um Zeilenumbruch zu aktivieren/deaktivieren [#1038](https://github.com/wavetermdev/waveterm/issues/1038)
+- Strg-S speichert jetzt Dateien in codeedit [#1081](https://github.com/wavetermdev/waveterm/issues/1081)
+- [#1020](https://github.com/wavetermdev/waveterm/issues/1020) es gibt jetzt eine Voreinstellungs-Konfigurationsoption, um die Farbe des aktiven Rahmens in Tab-Themes zu ändern
+- [Fehlerbehebung] Mehrere Fixes für [#1167](https://github.com/wavetermdev/waveterm/issues/1167), um Tab-Verlust bei Updates zu beheben
+- [Fehlerbehebung] Die Windows-App stürzte beim Öffnen des View-Menüs wegen eines fehlerhaften Accelerator-Keys ab
+- [Fehlerbehebung] Die Auto-Updater-Meldungen in der Tableiste sind jetzt beim Tab-Wechsel konsistenter, und Fehler werden nicht mehr angezeigt, wenn das Netzwerk getrennt ist
+- [Fehlerbehebung] Der Vollbildmodus zeigt jetzt tatsächlich Tabs im Vollbild an
+- [Fehlerbehebung] [#1175](https://github.com/wavetermdev/waveterm/issues/1175) .awk-Dateien können jetzt bearbeitet werden
+- [Fehlerbehebung] [#1066](https://github.com/wavetermdev/waveterm/issues/1066) Das Anwenden eines Standard-Themes aktualisiert den Hintergrund jetzt korrekt ohne Aktualisierung
+
+### v0.9.0 — 28. Okt 2024
+
+Neues größeres Wave-Terminal-Release! Wave-Tabs werden jetzt zwischengespeichert. Der Tab-Wechsel ist
+jetzt deutlich schneller, und Webview-Status, Editor-Status und Scroll-Positionen bleiben jetzt
+über Tab-Wechsel hinweg erhalten. Wir haben außerdem native WSL2-Unterstützung. Du kannst native Wave-Verbindungen
+zu deinen Windows-WSL2-Distributionen über den Verbindungs-Button erstellen.
+
+Wir haben außerdem den Grundstein für einige große Funktionen gelegt, die in den
+kommenden Wochen veröffentlicht werden, darunter Workspaces, KI-Verbesserungen und benutzerdefinierte Widgets.
+
+Viele weitere kleinere Änderungen und Fehlerbehebungen. Die vollständige Liste der PRs findest du unter https://github.com/wavetermdev/waveterm/releases/tag/v0.9.0
+
+### v0.8.13 — 24. Okt 2024
+
+- Wave ist jetzt als Snap für Linux-Nutzer verfügbar! Du findest es [im Snap Store](https://snapcraft.io/waveterm).
+- Wave ist jetzt über den Windows Package Manager verfügbar! Installation über `winget install CommandLine.Wave`
+- "term:fontsize" kann jetzt genutzt werden, um die Schriftgröße eines einzelnen Terminal-Blocks zu überschreiben (auch im Kontextmenü)
+- Wir erlauben jetzt gemischte Groß-/Kleinschreibung bei Hostnamen für Verbindungen, um mit der ssh-Konfiguration kompatibel zu sein
+- Das Linux-App-Icon wurde aktualisiert, um dem Windows-Icon zu entsprechen
+- [Fehlerbehebung] Fehler behoben, der manchmal dazu führte, dass beim Wechseln zwischen Tabs Escape-Sequenzen angezeigt wurden
+- [Fehlerbehebung] Problem behoben, bei dem der Vorschau-Block temporäre Dateien nicht bereinigte (nur Windows)
+- [Fehlerbehebung] Chrome-Sandbox-Berechtigungsfehler unter Linux behoben
+- [Fehlerbehebung] Beendigungslogik unter MacOS/Linux behoben, die manchmal verwaiste Prozesse überleben ließ
+
+### v0.8.12 — 18. Okt 2024
+
+- Unterstützung für mehrere KI-Konfigurationen hinzugefügt! Du kannst jetzt Open AI parallel zu Ollama-Modellen betreiben. KI-Voreinstellungen können in presets.json erstellt werden, und du kannst mit einem neuen Dropdown im KI-Widget einfach zwischen ihnen wechseln
+- WebSocket-Wiederverbindungsfehler behoben. Dies führte manchmal dazu, dass sich das Terminal beim Aufwachen aus dem Ruhezustand aufhängte
+- Speicher-Diagramme und Pro-CPU-Diagramme zum sysinfo-Widget hinzugefügt (und von cpuplot umbenannt)
+- Einen neuen großen roten "Config Error"-Button hinzugefügt, wenn Parse-Fehler in der Konfigurations-JSON-Datei auftreten
+- Das Vorschau-/CodeEdit-Widget zeigt jetzt Fehler (geschlängelte Linien) an, wenn JSON- oder YAML-Dateien nicht geparst werden können
+- Neues App-Icon für Windows, das besser den Fluent-UI-Standards entspricht
+- Kopieren-bei-Auswahl für das Terminal hinzugefügt (standardmäßig aktiviert, kann mit "term:copyonselect" deaktiviert werden)
+- Button zum Stummschalten von Audio in Webviews hinzugefügt
+- Rechtsklick-Option "Open Clipboard URL" hinzugefügt, um einfach eine in der Systemzwischenablage gespeicherte URL in einer Webview zu öffnen
+- [Fehlerbehebung] Leere "Help"-Seiten beim Aufwachen aus dem Ruhezustand oder Neustart der App behoben
+
+### v0.8.11 — 10. Okt 2024
+
+Hotfix-Release zur Behebung einiger in v0.8.10 eingeführter Fehler
+
+- Behebt eine Regression in v0.8.10, die dazu führte, dass neue Tabs manchmal leer und defekt erschienen
+- Layout-Fixes für die Abstände im KI-Widget
+- Die Terminal-Scrollleiste ist jetzt halbtransparent und überlagert die letzte Spalte
+- Behebt die anfängliche Fenstergröße (beim ersten Start) sowohl für kleinere als auch größere Bildschirme
+- Eine "Nicht erneut fragen"-Checkbox für die Installation von `wsh` auf entfernten Rechnern hinzugefügt (setzt ein neues Konfigurations-Flag)
+- Verhindert, dass die App herabgestuft wird, wenn du einen Beta-Build installierst. Die Installation eines Beta-Builds wechselt dich jetzt in den Beta-Update-Kanal.
+
+### v0.8.10 — 9. Okt 2024
+
+Kleines Bugfix-Release (aber mit einigen neuen Funktionen).
+
+- Unterstützung für Azure AI hinzugefügt [siehe FAQ](https://docs.waveterm.dev/faq#how-can-i-connect-to-azure-ai)
+- KI-Fehler erscheinen jetzt im Chat
+- Unter MacOS öffnet das Drücken von "Leertaste" in der Verzeichnisvorschau die ausgewählte Datei in Quick Look
+- [Fehlerbehebung] Transparenz-Einstellungen behoben
+- [Fehlerbehebung] Problem mit nicht standardmäßigen Portnummern im Verbindungs-Dropdown behoben
+- [Fehlerbehebung] Problem mit eingebetteter Docsite behoben (lieferte 404 nach Aktualisierung)
+
+### v0.8.9 — 8. Okt 2024
+
+Viele Fehlerbehebungen und neue Funktionen!
+
+- Neue "Help"-Ansicht -- nutzt eine eingebettete Version unserer Dokumentations-Website -- https://docs.waveterm.dev
+- [Breaking] wsh getmeta, wsh setmeta und wsh deleteblock nehmen jetzt eine blockid über einen `-b`-Parameter statt als Positionsparameter entgegen
+- Erlaubt Metadaten, Block-Icon, -Kopfzeile und -Text zu überschreiben (frame:title, frame:icon und frame:text)
+- Home-Button im Web-Widget, um zur Startseite zurückzukehren, Option, eine Standard-Startseite für die gesamte App oder nur für den angegebenen Block festzulegen
+- Checkpointing des Terminals seltener durchgeführt, um die Häufigkeit des Ausgabefehlers zu reduzieren (an einer vollständigen Lösung wird noch gearbeitet)
+- Neue Terminal-Themes -- Warm Yellow und One Dark Pro
+- Wir unterstützen jetzt GitHub-Flavored-Markdown-Hinweise
+- Befehl `wsh notify`, um eine Desktop-Benachrichtigung zu senden
+- `wsh createblock`, um über die CLI einen beliebigen Block zu erstellen
+- Rechtsklick zum "Bild speichern" in der Webview
+- `wsh edit` erlaubt jetzt das Öffnen neuer Dateien (solange das übergeordnete Verzeichnis existiert)
+- 8 neue lustige Tab-Hintergrund-Voreinstellungen hinzugefügt (Rechtsklick auf einen beliebigen Tab und "Backgrounds" auswählen, um sie auszuprobieren)
+- [Konfiguration] neuer Konfigurationsschlüssel "term:scrollback", um die Anzahl der Scrollback-Zeilen für Terminals festzulegen. Nutze "-1", um 0 zu setzen, Maximum ist 10000.
+- [Konfiguration] neuer Konfigurationsschlüssel "term:theme", um das Standard-Terminal-Theme für alle neuen Terminals festzulegen
+- [Konfiguration] neuer Konfigurationsschlüssel "preview:showhiddenfiles", um die Standardeinstellung "versteckte Dateien anzeigen" für die Vorschau festzulegen
+- [Fehlerbehebung] Formatierungsproblem mit `wsh getmeta` behoben
+- [Fehlerbehebung] Startproblem unter Linux behoben, wenn das Home-Verzeichnis ein NFS-Mount ist
+- [Fehlerbehebung] Cursorfarbe in Terminal-Themes funktioniert jetzt korrekt
+- [Fehlerbehebung] Einige doppelte Scrollleisten bei der Anzeige von Markdown-Inhalten behoben
+- [Fehlerbehebung] Beendigungsablauf verbessert, um wavesrv-Logs besser zu erfassen
+- [Fehlerbehebung] Alt+G-Tastenkombination für Linux/Windows behoben
+- Weitere diverse Fehlerbehebungen, Bereinigungen und Sicherheitsfixes
+
+### v0.8.8 — 1. Okt 2024
+
+Schnelles Patch-Release zur Behebung der "Alt"-Tastenkombinationen unter Windows/Linux. Bringt außerdem eine enorme Performance-Verbesserung bei der KI-Streaming-Geschwindigkeit.
+
+### v0.8.7 — 30. Sep 2024
+
+Schnelles Patch-Release zur Fehlerbehebung:
+
+- Behebt Windows-SSH-Verbindungen (ungültiger Pfad beim Versuch, wsh-Tools zu installieren)
+- Behebt ein Problem bei der Auflösung von `~` in Windows-Pfaden, `~\` funktioniert jetzt statt nur `~/`
+- Versucht, die Hintergrundfarbe für Webseiten zu beheben. Ruft das Meta-Tag für color-scheme ab und setzt bei erkanntem Dark-Modus einen schwarzen Hintergrund (behebt ein Darstellungsproblem bei rohen githubusercontent-Dateien)
+- Unseren useDimensions-Hook so behoben, dass er korrekt auslöst. Behebt einige Größenprobleme, einschließlich der konsistenten Anzeige von Fehlermeldungen bei fehlgeschlagenen SSH-Verbindungen
+- "data:"-URLs in benutzerdefinierten Tab-Hintergründen erlaubt
+- Der Alias "tab" für die UUID des aktuellen Tabs bei Nutzung von wsh
+- [BUILD] Generierte Dateien werden nur bedingt geschrieben, wenn sie aktualisiert wurden
+
+### v0.8.6 — 26. Sep 2024
+
+Ein weiteres schnelles Hotfix-Update. Behebt ein Problem, bei dem das Fenster beim nächsten Start komplett leer wiederhergestellt wurde, wenn alle Tabs in einem Fenster gelöscht worden waren.
+
+Außerdem, als Bonus, haben wir Unterstützung für die fish-Shell hinzugefügt!
+
+### v0.8.5 — 25. Sep 2024
+
+Hotfix, Downgrade der `jotai`-Bibliothek. Das Upgrade verursachte eine erhebliche Regression in codeedit, durch die
+Nutzer keine Dateien mehr bearbeiten konnten.
+
+### v0.8.4 — 25. Sep 2024
+
+- Eine Einstellung `window:disablehardwareacceleration` hinzugefügt, um native Hardwarebeschleunigung zu deaktivieren
+- Neues Startmodell für Legacy-Nutzer, das ihnen die Option gibt, WaveLegacy herunterzuladen
+- WAVETERM_HOME konsistent für das Home-Verzeichnis genutzt
+
+### v0.8.3 — 25. Sep 2024
+
+Weitere Hotfixes für Linux-Nutzer. Wir binden jetzt gegen eine ältere Version von glibc und nutzen
+den zig-Compiler unter Linux (die neuere Version verhinderte die Ausführung auf älteren Distributionen).
+Behebt außerdem ein Berechtigungsproblem bei der Installation über .deb. Es gibt außerdem einen neuen Konfigurationswert
+`window:nativetitlebar`, der die native Titelleiste unter Windows/Linux wiederherstellt.
+
+### v0.8.2 — 24. Sep 2024
+
+Hotfix, behebt einen üblen Absturz beim Start für Linux-Nutzer (dynamisches Linking, aber mit der netcgo-DNS-Bibliothek)
+
+### v0.8.1 — 23. Sep 2024
+
+Kleines Aufräum-Release.
+
+- Zahlenverarbeitung für bestimmte Konfigurationsdateiwerte behoben
+- Link zur Dokumentations-Website hinzugefügt
+- Neuer Zurück-Button für die Verzeichnisansicht hinzugefügt
+- Telemetrie-Fixes
+
+### v0.8.0 — 20. Sep 2024
+
+**Großes neues Release von Wave Terminal**
+
+Der neue Build ist ein Neuanfang und ein klarer Bruch mit der aktuellen Version. Daher werden dein Verlauf, deine Einstellungen und deine Konfiguration nicht übernommen. Wenn du weiterhin die Legacy-Version nutzen möchtest, musst du sie separat herunterladen.
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/secrets.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/secrets.mdx
new file mode 100644
index 0000000000..10a2a4afcd
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/secrets.mdx
@@ -0,0 +1,147 @@
+---
+sidebar_position: 3.2
+id: "secrets"
+title: "Secrets"
+---
+
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+# Secrets
+
+
+
+Wave Terminal bietet einen sicheren Weg, sensible Informationen wie Passwörter, API-Schlüssel und Token zu speichern. Secrets werden verschlüsselt im nativen Schlüsselbund deines Systems gespeichert (macOS Keychain, Windows Credential Manager oder Linux Secret Service), sodass deine sensiblen Daten geschützt bleiben.
+
+## Warum Secrets nutzen?
+
+Mit Secrets in Wave Terminal kannst du:
+
+- **SSH-Passwörter speichern** - Automatische Authentifizierung bei SSH-Verbindungen, ohne Passwörter einzutippen
+- **API-Schlüssel verwalten** - API-Token, Schlüssel und Zugangsdaten sicher aufbewahren
+- **Über Sitzungen hinweg teilen** - Auf deine Secrets aus jedem Terminal-Block oder jeder Remote-Verbindung zugreifen
+- **Klartext-Speicherung vermeiden** - Niemals sensible Daten in Konfigurationsdateien oder Skripten speichern
+
+## Die Secrets-Oberfläche öffnen
+
+Es gibt mehrere Wege, auf die Secrets-Verwaltungsoberfläche zuzugreifen:
+
+1. **Über die Widget-Leiste** (empfohlen):
+ - Klicke auf das Einstellungssymbol **** in der Widget-Leiste
+ - Wähle **Secrets** aus dem Menü
+
+2. **Über die Kommandozeile:**
+ ```bash
+ wsh secret ui
+ ```
+
+
+Die Secrets-Oberfläche bietet eine grafische Oberfläche zum Anzeigen, Hinzufügen, Bearbeiten und Löschen von Secrets.
+
+## Secrets über die CLI verwalten
+
+Wave Terminal bietet eine vollständige CLI zur Verwaltung von Secrets aus jedem Terminal-Block:
+
+```bash
+# Alle Secret-Namen auflisten (nicht die Werte)
+wsh secret list
+
+# Einen bestimmten Secret-Wert abrufen
+wsh secret get MY_SECRET_NAME
+
+# Ein Secret setzen (Format: name=value, keine Leerzeichen um das =)
+wsh secret set GITHUB_TOKEN=ghp_xxxxxxxxxx
+wsh secret set DB_PASSWORD=super_secure_password
+
+# Ein Secret löschen
+wsh secret delete MY_SECRET_NAME
+```
+
+## Regeln für Secret-Namen
+
+Secret-Namen müssen dem Muster entsprechen: `^[A-Za-z][A-Za-z0-9_]*$`
+
+Das bedeutet:
+- Muss mit einem Buchstaben beginnen (A-Z oder a-z)
+- Darf nur Buchstaben, Zahlen und Unterstriche enthalten
+- Darf keine Leerzeichen oder Sonderzeichen enthalten
+
+**Gültige Namen:** `MY_SECRET`, `ApiKey`, `ssh_password_1`
+**Ungültige Namen:** `123_SECRET`, `my-secret`, `secret name`
+
+## Secrets mit SSH-Verbindungen nutzen
+
+
+
+Secrets können genutzt werden, um Passwörter für SSH-Verbindungen automatisch bereitzustellen, sodass du Passwörter nicht wiederholt eintippen musst.
+
+### In connections.json konfigurieren
+
+Füge das Feld `ssh:passwordsecretname` zu deiner Verbindungskonfiguration hinzu:
+
+```json
+{
+ "myserver": {
+ "ssh:hostname": "example.com",
+ "ssh:user": "myuser",
+ "ssh:passwordsecretname": "SERVER_PASSWORD"
+ }
+}
+```
+
+Speichere dann dein Passwort als Secret:
+
+```bash
+wsh secret set SERVER_PASSWORD=my_actual_password
+```
+
+Wenn Wave sich nun mit `myserver` verbindet, nutzt es automatisch das Passwort aus deinem Secret-Speicher, anstatt dich danach zu fragen.
+
+### Vorteile
+
+- **Sicherheit**: Passwort verschlüsselt im System-Schlüsselbund gespeichert
+- **Komfort**: Kein Eintippen von Passwörtern für jede Verbindung nötig
+- **Flexibilität**: Passwörter aktualisieren, indem du das Secret änderst, nicht die Konfiguration
+
+## Sicherheitsaspekte
+
+- **Verschlüsselte Speicherung**: Secrets werden verschlüsselt in deinem Wave-Konfigurationsverzeichnis gespeichert. Der Verschlüsselungsschlüssel selbst wird durch den sicheren Zugangsdatenspeicher deines Betriebssystems geschützt (macOS Keychain, Windows Credential Manager oder Linux Secret Service).
+
+- **Kein Klartext**: Secrets werden niemals unverschlüsselt in Logs oder zugänglichen Dateien gespeichert.
+
+- **Zugriffskontrolle**: Secrets sind ausschließlich für Wave Terminal zugänglich.
+
+
+## Speicher-Backend
+
+Wave Terminal erkennt automatisch das passende Secret-Speicher-Backend für dein Betriebssystem und nutzt es:
+
+- **macOS**: Nutzt die macOS Keychain
+- **Windows**: Nutzt den Windows Credential Manager
+- **Linux**: Nutzt die Secret Service API (freedesktop.org-Spezifikation)
+
+:::warning Linux-Secret-Speicher
+Unter Linux benötigt Wave ein kompatibles Secret-Service-Backend (typischerweise GNOME Keyring oder KWallet). Diese sind normalerweise mit deiner Desktop-Umgebung vorinstalliert. Wird kein kompatibles Backend erkannt, kannst du keine Secrets setzen, und die Oberfläche zeigt eine Warnung an.
+:::
+
+## Fehlerbehebung
+
+### "No appropriate secret manager found"
+
+Dieser Fehler tritt unter Linux auf, wenn kein kompatibles Secret-Service-Backend verfügbar ist. Installiere GNOME Keyring oder KWallet und stelle sicher, dass der Secret Service läuft.
+
+### Secret nicht gefunden
+
+Stelle sicher, dass der Secret-Name korrekt geschrieben ist (Namen unterscheiden Groß-/Kleinschreibung) und dass das Secret existiert:
+
+```bash
+wsh secret list
+```
+
+### Zugriff verweigert unter Linux
+
+Der Secret Service verlangt möglicherweise, dass du deinen Schlüsselbund entsperrst. Das passiert normalerweise nach dem Login. Konsultiere die Dokumentation deiner Desktop-Umgebung zur Schlüsselbundverwaltung.
+
+## Verwandte Dokumentation
+
+- [Verbindungen](/connections) - Erfahre mehr über SSH-Verbindungen und Konfiguration
+- [wsh-Befehlsreferenz](/wsh-reference#secret) - Vollständige CLI-Befehlsdokumentation für Secrets
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/tab-backgrounds.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/tab-backgrounds.mdx
new file mode 100644
index 0000000000..4be4f60894
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/tab-backgrounds.mdx
@@ -0,0 +1,120 @@
+---
+sidebar_position: 3.5
+id: "tab-backgrounds"
+title: "Tab-Hintergründe"
+---
+
+# Tab-Hintergründe
+
+Waves Hintergrundsystem nutzt die volle Kraft von CSS-Hintergründen und lässt dich über das Attribut "background" umfangreiche visuelle Effekte erzeugen. Du kannst Vollfarben, Verläufe (linear und radial), Bilder und sogar mehrere Elemente überblendet anwenden.
+
+## Hintergründe verwalten
+
+Benutzerdefinierte Hintergründe werden in `~/.config/waveterm/backgrounds.json` gespeichert.
+
+**Zum Bearbeiten über die Oberfläche:**
+1. Klicke auf das Einstellungssymbol (Zahnrad) in der Widget-Leiste
+2. Wähle "Settings" aus dem Menü
+3. Wähle "Tab Backgrounds" aus der Einstellungs-Seitenleiste
+
+**Oder starte über die Kommandozeile:**
+```bash
+wsh editconfig backgrounds.json
+```
+
+## Dateiformat
+
+Hintergründe folgen diesem Format:
+
+```json
+{
+ "bg@": {
+ "display:name": "",
+ "display:order": ,
+ "bg": "",
+ "bg:opacity":
+ }
+}
+```
+
+Wie Waves integrierte Hintergründe definiert sind, kannst du in der [Standard-backgrounds.json-Datei](https://github.com/wavetermdev/waveterm/blob/main/pkg/wconfig/defaultconfig/backgrounds.json) nachsehen.
+
+## Konfigurationsschlüssel
+
+| Schlüsselname | Typ | Funktion |
+| -------------------- | ------ | ------------------------------------------------------------------------------------------------------- |
+| display:name | string | In der UI angezeigter Name (erforderlich) |
+| display:order | float | Steuert die Reihenfolge im Menü (optional) |
+| bg | string | CSS-Attribut `background` für den Tab (unterstützt Farben, Verläufe, Bilder usw.) |
+| bg:opacity | float | Die Deckkraft des Hintergrunds (Standard: 0.5) |
+| bg:blendmode | string | Der [Blend-Modus](https://developer.mozilla.org/en-US/docs/Web/CSS/blend-mode) des Hintergrunds |
+| bg:bordercolor | string | Die Rahmenfarbe, wenn ein Block nicht aktiv ist (selten verwendet) |
+| bg:activebordercolor | string | Die Rahmenfarbe, wenn ein Block aktiv ist |
+
+## Beispiele
+
+#### Einfache Vollfarbe:
+
+```json
+{
+ "bg@blue": {
+ "display:name": "Blue",
+ "bg": "blue",
+ "bg:opacity": 0.3,
+ "bg:activebordercolor": "rgba(0, 0, 255, 1.0)"
+ }
+}
+```
+
+#### Komplexer Verlauf:
+
+```json
+{
+ "bg@duskhorizon": {
+ "display:name": "Dusk Horizon",
+ "bg": "linear-gradient(0deg, rgba(128,0,0,1) 0%, rgba(204,85,0,0.7) 20%, rgba(255,140,0,0.6) 45%, rgba(160,90,160,0.5) 65%, rgba(60,60,120,1) 100%), radial-gradient(circle at 30% 30%, rgba(255,255,255,0.1), transparent 60%), radial-gradient(circle at 70% 70%, rgba(255,255,255,0.05), transparent 70%)",
+ "bg:opacity": 0.9,
+ "bg:blendmode": "overlay"
+ }
+}
+```
+
+#### Hintergrundbild:
+
+```json
+{
+ "bg@ocean": {
+ "display:name": "Ocean Scene",
+ "bg": "url('/path/to/ocean.jpg') center/cover no-repeat",
+ "bg:opacity": 0.2
+ }
+}
+```
+
+:::info
+Hintergrundbilder unterstützen sowohl URLs als auch lokale Dateipfade. Für bessere Zuverlässigkeit empfehlen wir lokale Dateien. Lokale Pfade müssen absolut sein oder mit `~` beginnen (z. B. `~/Downloads/background.png`). Wir unterstützen gängige Webformate: PNG, JPEG/JPG, WebP, GIF und SVG.
+:::
+
+:::tip
+Der Befehl `setbg` kann dir helfen, das Hintergrund-JSON zu erzeugen:
+
+```bash
+# Vorschau eines Vollfarben-Hintergrunds
+wsh setbg --print "#ff0000"
+{
+ "bg:*": true,
+ "bg": "#ff0000",
+ "bg:opacity": 0.5
+}
+
+# Vorschau eines zentrierten Bildhintergrunds
+wsh setbg --print --center --opacity 0.3 ~/logo.png
+{
+ "bg:*": true,
+ "bg": "url('/absolute/path/to/logo.png') no-repeat center/auto",
+ "bg:opacity": 0.3
+}
+```
+
+Füge einfach das erforderliche Feld `display:name` und eine `bg@`-Umschließung hinzu, um deinen Hintergrundeintrag zu vervollständigen!
+:::
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/tabs.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/tabs.mdx
new file mode 100644
index 0000000000..ad64004303
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/tabs.mdx
@@ -0,0 +1,134 @@
+---
+sidebar_position: 3.25
+id: "tabs"
+title: "Tabs"
+---
+
+import { PlatformProvider, PlatformSelectorButton } from "@site/src/components/platformcontext";
+import { Kbd } from "@site/src/components/kbd";
+
+
+
+Tabs sind Sammlungen von [Widgets](./widgets), die zu gekachelten Dashboards angeordnet werden können. Du kannst innerhalb eines Workspace beliebig viele Tabs erstellen, um deine Workflows zu organisieren.
+
+## Tableiste
+
+Die Tableiste befindet sich oben im Fenster und zeigt alle Tabs innerhalb eines Workspace an. Du kannst auf einen Tab klicken, um zu ihm zu wechseln. Beim Wechseln laufen Befehle im vorherigen Tab weiter, und nicht gespeicherte Arbeit bleibt erhalten, bis du zu ihm zurückkehrst. Wenn du das Fenster schließt oder innerhalb desselben Fensters den Workspace wechselst, geht diese Arbeit verloren.
+
+
+
+### Einen neuen Tab erstellen
+
+Du kannst einen neuen Tab erstellen, indem du auf den -Button rechts neben den Tabs in der Tableiste klickst, oder indem du drückst. Dadurch wird der Fokus auch auf den neuen Tab gesetzt.
+
+### Einen Tab schließen
+
+Du kannst einen Tab schließen, indem du mit der Maus darüber fährst und auf den erscheinenden -Button klickst, oder indem du drückst. Du kannst einen Tab auch schließen, indem du [alle Blöcke darin schließt](#einen-block-löschen).
+
+Das Schließen eines Blocks ist eine destruktive Aktion, die alle laufenden Prozesse stoppt und nicht gespeicherte Arbeit verwirft. Dies kann nicht rückgängig gemacht werden.
+
+### Tabs neu anordnen
+
+Du kannst Tabs neu anordnen, indem du sie innerhalb der Tableiste ziehst.
+
+### Zwischen Tabs wechseln
+
+Du kannst zu einem vorhandenen Tab wechseln, indem du in der Tableiste darauf klickst. Du kannst auch folgende Tastenkombinationen nutzen:
+
+| Taste | Funktion |
+| ------------------ | -------------------- |
+| | Zu Tab-Nummer wechseln |
+| | Zum Tab links wechseln |
+| | Zum Tab rechts wechseln |
+
+### Einen Tab anheften
+
+Das Anheften eines Tabs erschwert das versehentliche Schließen. Du kannst einen Tab anheften, indem du mit der rechten Maustaste darauf klickst und im erscheinenden Kontextmenü "Pin Tab" auswählst. Du kannst einen Tab auch anheften, indem du ihn auf einen niedrigeren Index als einen bereits angehefteten Tab ziehst. Wenn ein Tab angeheftet ist, wird der -Button des Tabs durch einen -Button ersetzt. Ein Klick auf diesen Button löst die Anheftung. Du kannst einen Tab auch lösen, indem du ihn auf einen höheren Index als einen bereits nicht angehefteten Tab ziehst.
+
+## Tab-Layout-System
+
+Die Tabs bestehen aus gekachelten Blöcken. Der Inhalt jedes Blocks ist ein einzelnes Widget. Du kannst Blöcke verschieben und zu Layouts anordnen, die am besten zu deinem Workflow passen. Du kannst Blöcke auch vergrößern, um dich auf ein bestimmtes Widget zu konzentrieren.
+
+
+
+### Das Layout-System unter der Haube
+
+:::info
+
+**Definitionen**
+
+- Layout-Baum: die In-Memory-Darstellung eines Tab-Layouts, bestehend aus Knoten
+- Knoten: ein Eintrag im Layout-Baum, entweder ein einzelner Block (ein Blatt) oder eine geordnete Liste von Knoten. Definiert eine Kachelrichtung (Zeile oder Spalte) und eine einheitenlose Größe
+- Block: der Inhalt eines Blatts im Layout-Baum, definiert, welcher Inhalt an der jeweiligen Layout-Position angezeigt wird
+
+:::
+
+Unser Layout-System ahmt das [CSS-Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox)-System nach und besteht aus einem Baum von Spalten und Zeilen. Intern wird das Layout als N-Baum dargestellt, wobei jeder Knoten im Baum entweder ein einzelner Block oder eine Liste von Knoten ist. Jede Ebene im Baum wechselt die Kachelrichtung (Ebene 1 kachelt als Zeile, Ebene 2 als Spalte, Ebene 3 als Zeile usw.).
+
+### Layout-Aktionen
+
+
+
+#### Einen neuen Block hinzufügen
+
+Du kannst neue Blöcke hinzufügen, indem du ein Widget aus der rechten Seitenleiste auswählst.
+
+Ausgehend von der obersten Ebene des Baums, da die erste Ebene als Zeile kachelt, werden neue Blöcke rechts neben bestehenden Blöcken hinzugefügt. Sobald 5 Blöcke nebeneinander stehen, werden neue Blöcke beginnend von rechts nach links unterhalb bestehender Blöcke hinzugefügt. Wenn ein neuer Block unterhalb eines bestehenden hinzugefügt wird, wird der Knoten, der den bestehenden Block enthält, von einem Einzelblock-Knoten in einen Listen-Knoten umgewandelt, und die bestehende Blockdefinition wird eine Ebene tiefer im Baum als erstes Element der Knotenliste verschoben. Neue Blöcke werden immer dem letzten verfügbaren Knoten auf der tiefsten Ebene hinzugefügt, wobei "verfügbar" bedeutet, dass er weniger als fünf Kinder hat. Wir setzen kein Limit für die Anzahl der Blöcke in einem Tab, aber ab etwa 25 Blöcken kann die Leistung nachlassen.
+
+Auch wenn wir für jeden Knoten im Baum bei der automatischen Platzierung neuer Blöcke ein Limit von 5 Kindern definieren, gibt es kein tatsächliches Limit für die Anzahl der Kinder, die ein Knoten haben kann. Nach der Platzierung kannst du den Block frei im Layout verschieben.
+
+#### Einen Block löschen
+
+Du kannst Blöcke löschen, indem du auf den -Button oben rechts im Block klickst, mit der rechten Maustaste auf die Block-Kopfzeile klickst und im Kontextmenü "Close Block" auswählst, oder indem du den Befehl [`wsh deleteblock`](./wsh-reference#deleteblock) ausführst. Alternativ kann der aktuell fokussierte Block/das aktuell fokussierte Widget durch Drücken von geschlossen werden.
+
+Wenn du einen Block löschst, wird der Layout-Baum automatisch angepasst, um die Baumtiefe zu minimieren.
+
+#### Einen Block verschieben
+
+Du kannst Blöcke verschieben, indem du auf die Block-Kopfzeile klickst und den Block im Tab ziehst. Du siehst Platzhalter, die anzeigen, wo der Block landet, wenn du ihn ablegst.
+
+Es gibt 7 verschiedene Ablagebereiche für jeden Block. Ein Block wird entlang seiner Diagonalen in Quadranten unterteilt. Wenn der Block als Zeile kachelt (von links nach rechts), platziert das Ablegen eines Blocks im linken oder rechten Quadranten den abgelegten Block auf derselben Ebene wie den Zielblock. Dies kann als Inline-Ablage betrachtet werden. Wenn du den Block außerhalb der Reihe ablegst (in Quadranten, die der entgegengesetzten Kachelrichtung entsprechen), wird der Block entweder eine Ebene über oder eine Ebene unter dem Zielblock platziert. Ablegen zur Außenseite platziert ihn auf derselben Ebene wie das übergeordnete Element des Zielblocks, während Ablegen zur Mitte des Blocks eine neue Ebene erzeugt, auf die sowohl der Zielblock als auch der abgelegte Block verschoben werden. Das mittlere Fünftel des Blocks ist für die Tausch-Aktion reserviert. Ablegen eines Blocks hier führt dazu, dass Zielblock und abgelegter Block ihre Position im Layout tauschen.
+
+
+
+##### Mögliche Block-Bewegungen
+
+:::note
+Alle Block-Bewegungen außer dem Tausch führen dazu, dass sich der Rest des Layouts verschiebt, um die neue Position des Blocks aufzunehmen.
+:::
+
+
+
+
+1. Inline davor: Legt den Block unter demselben Knoten wie den Zielblock ab und platziert ihn in derselben Kachelrichtung vor dem Ziel
+2. Inline danach: Legt den Block unter demselben Knoten wie den Zielblock ab und platziert ihn in derselben Kachelrichtung nach dem Ziel
+3. Außerhalb der Reihe, davor außen: Legt den Block vor dem übergeordneten Knoten des Zielblocks in der entgegengesetzten Kachelrichtung ab
+4. Außerhalb der Reihe, davor innen: Segmentiert den Zielblock und erzeugt einen neuen Knoten im Baum. Platziert den abgelegten Block vor dem Zielblock in der entgegengesetzten Kachelrichtung.
+5. Außerhalb der Reihe, danach innen: Segmentiert den Zielblock und erzeugt einen neuen Knoten im Baum. Platziert den abgelegten Block nach dem Zielblock in der entgegengesetzten Kachelrichtung.
+6. Außerhalb der Reihe, danach außen: Legt den Block nach dem übergeordneten Knoten des Zielblocks in der entgegengesetzten Kachelrichtung ab
+7. Tausch: Tauscht die Position des abgelegten Blocks und des Zielblocks im Layout, der Rest des Layouts bleibt erhalten
+
+#### Einen Block in der Größe ändern
+
+
+
+
+
+Du änderst nicht direkt die Größe eines Blocks, sondern die Größe der Knoten, die die Blöcke enthalten. Wenn du mit der Maus über den Rand eines Blocks fährst, ändert sich der Cursor zu oder , um die Richtung anzuzeigen, in der der Knoten in der Größe geändert werden kann. Nach 500ms erscheint außerdem eine Linie, die zeigt, wie viele Blöcke durch das Verschieben dieses Rands in der Größe geändert werden. Klicken und Ziehen auf diesem Rand ändert die Größe der Blöcke.
+
+Knotengrößen sind einheitenlose Werte. Das Verhältnis aller Knotengrößen auf einer bestimmten Baumebene bestimmt die Verschiebung jedes Knotens. Wenn du einen Block verschiebst und sein Knoten gelöscht wird, passen die anderen Knoten auf dieser Baumebene ihre Größen an das neue Größenverhältnis an.
+
+### Einen Block vergrößern
+
+Du kannst einen Block vergrößern, indem du auf den -Button klickst oder drückst. Du kannst einen Block wieder verkleinern, indem du auf den -Button klickst oder erneut drückst.
+
+### Den Abstand zwischen Blöcken ändern
+
+Der Abstand zwischen Blöcken beträgt standardmäßig 3px, dieser Wert kann jedoch durch Ändern des Konfigurationswerts `window:tilegapsize` angepasst werden. Siehe [Konfiguration](./config) für weitere Informationen zum Ändern von Konfigurationswerten.
+
+
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/telemetry-old.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/telemetry-old.mdx
new file mode 100644
index 0000000000..3315315cab
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/telemetry-old.mdx
@@ -0,0 +1,130 @@
+---
+id: "telemetry-old"
+title: "Legacy-Telemetrie"
+sidebar_class_name: hidden
+---
+
+Wave Terminal erfasst Telemetriedaten, um die Nutzung von Funktionen nachzuvollziehen, künftige Produktentscheidungen zu steuern und aggregierte Kennzahlen zur Popularität und Nutzung von Wave zu erstellen. Wir erfassen oder speichern keine personenbezogenen Daten (PII), und alle Kennzahlen werden ausschließlich mit deiner zufällig generierten _ClientId_ verknüpft und aggregiert. Du kannst die Erfassung jederzeit deaktivieren.
+
+Wenn du Telemetrie an- oder ausschalten möchtest, ist die erste Gelegenheit dazu ein Button auf der ersten Willkommensseite. Danach kann sie deaktiviert werden, indem du `"telemetry:enabled": false` zur Datei `config/settings.json` hinzufügst. Alternativ kann sie aktiviert werden, indem du `"telemetry:enabled": true` zur Datei `config/settings.json` hinzufügst.
+
+:::info
+
+Du kannst deine Telemetrie-Einstellung auch durch Ausführen des wsh-Befehls ändern:
+
+```
+wsh setconfig telemetry:enabled=true
+```
+
+:::
+
+---
+
+## Telemetrie senden
+
+Sofern Telemetrie aktiviert ist, wird sie 10 Sekunden nach dem ersten Start von Waveterm gesendet und danach alle 4 Stunden erneut. Sie kann auch in Reaktion auf einige unten aufgeführte Sonderfälle gesendet werden. Beim Senden von Telemetrie wird sie nach einzelnen Tagen gruppiert, bestimmt durch deine Zeitzone. Daten eines vorherigen Tages werden als `Uploaded` markiert, sodass sie nicht erneut gesendet werden müssen.
+
+### Senden nach Aktivierung der Telemetrie
+
+Sobald Telemetrie aktiviert wird, wird ein Telemetrie-Update gesendet, unabhängig davon, wie lange der letzte Sendevorgang zurückliegt. Dies setzt den üblichen Timer für Telemetrie-Sendevorgänge nicht zurück.
+
+### Benachrichtigung über deaktivierte Telemetrie
+
+Sobald Telemetrie deaktiviert wird, sendet Waveterm ein spezielles Update, das uns über diese Änderung informiert. Siehe [Wenn Telemetrie deaktiviert wird](#wenn-telemetrie-deaktiviert-wird) für weitere Infos. Der Timer läuft im Hintergrund weiter, aber es werden keine Daten gesendet.
+
+### Wenn Waveterm geschlossen wird
+
+Sofern Telemetrie aktiviert ist, wird sie gesendet, wenn Waveterm geschlossen wird.
+
+---
+
+## Telemetriedaten
+
+Bei aktiver Telemetrie erfassen wir folgende Daten. Sie werden im Typ `telemetry.TelemetryData` im Quellcode gespeichert.
+
+| Name | Beschreibung |
+| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ActiveMinutes | Die Anzahl der Minuten, in denen der Nutzer Waveterm an einem bestimmten Tag aktiv genutzt hat. Dafür muss das Terminal-Fenster fokussiert sein, während der Nutzer aktiv damit interagiert. |
+| FgMinutes | Die Anzahl der Minuten, in denen Waveterm an einem bestimmten Tag im Vordergrund war. Dafür muss das Terminal-Fenster fokussiert sein, unabhängig von der Nutzerinteraktion. |
+| OpenMinutes | Die Anzahl der Minuten, in denen Waveterm an einem bestimmten Tag geöffnet war. Dafür muss das Terminal nur geöffnet sein, auch wenn das Fenster nicht fokussiert ist. |
+| NumBlocks | Die Anzahl der an einem bestimmten Tag geöffneten Blöcke |
+| NumTabs | Die Anzahl der an einem bestimmten Tag geöffneten Tabs. |
+| NewTab | Die Anzahl der an einem bestimmten Tag neu erstellten Tabs |
+| NumWindows | Die Anzahl der an einem bestimmten Tag geöffneten Fenster. |
+| NumWS | Die Anzahl der an einem bestimmten Tag bestehenden Workspaces. |
+| NumWSNamed | Die Anzahl der an einem bestimmten Tag benannten Workspaces. |
+| NewTab | Die Anzahl der an einem bestimmten Tag geöffneten neuen Tabs. |
+| NumStartup | Die Anzahl der Starts von Waveterm an einem bestimmten Tag. |
+| NumShutdown | Die Anzahl der Beendigungen von Waveterm an einem bestimmten Tag. |
+| SetTabTheme | Die Anzahl, wie oft das Tab-Theme über das Kontextmenü geändert wird |
+| NumMagnify | Die Anzahl, wie oft ein Block vergrößert wird |
+| NumPanics | Die Anzahl der an diesem Tag abgefangenen Backend-(Golang-)Panics |
+| NumAIReqs | Die Anzahl der an diesem Tag gestellten KI-Anfragen |
+| NumSSHConn | Die Anzahl unterschiedlicher SSH-Verbindungen, die zu unterschiedlichen Hosts hergestellt wurden |
+| NumWSLConns | Die Anzahl unterschiedlicher WSL-Verbindungen, die zu unterschiedlichen Distributionen hergestellt wurden |
+| Renderers | Die Anzahl neuer Block-Ansichten jedes Typs, die an einem bestimmten Tag geöffnet sind. |
+| WshCmds | Die Anzahl der an einem bestimmten Tag ausgeführten wsh-Befehle jedes Typs |
+| Blocks | Die Anzahl der Blöcke unterschiedlicher Ansichtstypen, die an einem bestimmten Tag geöffnet sind |
+| Conn | Die Anzahl der erfolgreichen Remote-Verbindungen (und Fehler), die an einem bestimmten Tag hergestellt wurden |
+
+## Zugehörige Daten
+
+Zusätzlich zu den erfassten Telemetriedaten wird auch Folgendes gemeldet. Es wird im Typ `telemetry.ActivityType` im Quellcode gespeichert.
+
+| Name | Beschreibung |
+| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Day | Das Datum, dem die Telemetrie zugeordnet ist. Es enthält keine Uhrzeit. |
+| Uploaded | Ein Boolean, der angibt, ob die Telemetrie für diesen Tag abgeschlossen ist. Er ist während des zugehörigen Tages false, wird aber beim ersten Telemetrie-Upload danach auf true gesetzt. Ist er einmal true, werden die Daten dieses bestimmten Tages nicht mehr mit der Telemetrie mitgesendet. |
+| TzName | Der Code für die vom Betriebssystem des Nutzers gemeldete Zeitzone (z. B. PST, GMT, JST) |
+| TzOffset | Der von Betriebssystem des Nutzers gemeldete Zeitzonen-Versatz (z. B. -08:00, +00:00, +09:00) |
+| ClientVersion | Welche Version von Waveterm installiert ist. |
+| ClientArch | Umfasst das Betriebssystem des Nutzers (z. B. linux oder darwin) und die Architektur (z. B. x86_64 oder arm64). Enthält aktuell keine Daten zu Verbindungen. |
+| BuildTime | Dient als genauere Versionsnummer, die festhält, wann diese Version gebaut wurde. Hat keinen Bezug dazu, wann diese Version von dir installiert wurde. |
+| OSRelease | Listet die Version des vom Nutzer installierten Betriebssystems. |
+| Displays | Bildschirmauflösungen (hinzugefügt in v0.9.3, um zu verstehen, für welche Bildschirmauflösungen optimiert werden soll) |
+
+## Telemetrie-Metadaten
+
+Zuletzt werden mit der Telemetrie einige Daten gesendet, die beschreiben, wie sie einzuordnen ist. Sie werden im Typ `wcloud.TelemetryInputType` im Quellcode gespeichert.
+
+| Name | Beschreibung |
+| ----------------- | --------------------------------------------------------------------------------------------------------------------------- |
+| UserId | Aktuell ungenutzt. Dies ist eine anonyme UUID, die für zukünftige Funktionen vorgesehen ist. |
+| ClientId | Dies ist eine anonyme UUID, die beim ersten Start von Waveterm erstellt wird. Sie wird für Telemetrie und das Senden von Prompts an Open AI genutzt. |
+| AppType | Wird genutzt, um die aktuelle Version von Waveterm von der Legacy-App zu unterscheiden. |
+| AutoUpdateEnabled | Ob automatische Updates aktiviert sind. |
+| AutoUpdateChannel | Die Art des genutzten automatischen Updates. Bezieht sich speziell darauf, ob ein latest- oder beta-Kanal ausgewählt ist. |
+| CurDay | Der aktuelle Tag (in deiner Zeitzone), an dem die Telemetrie gesendet wird. Enthält keine Uhrzeit. |
+
+## Geo-Daten
+
+Wir speichern keine IP-Adressen in unserer Telemetrietabelle. CloudFlare übermittelt uns jedoch Geo-Location-Header. Wir speichern diese zwei Header-Werte:
+
+| Name | Beschreibung |
+| ------------ | ----------------------------------------------------------------- |
+| CFCountry | 2-stelliger Ländercode (z. B. "US", "FR" oder "JP") |
+| CFRegionCode | Regionscode (oft eine Provinz, Region oder ein Bundesstaat innerhalb eines Landes) |
+
+---
+
+## Wenn Telemetrie deaktiviert wird
+
+Wenn ein Nutzer die Telemetrie deaktiviert, sendet Waveterm eine Benachrichtigung, dass die Telemetrie für seine anonyme _ClientId_ deaktiviert wurde. Dies geschieht über den Typ `wcloud.NoTelemetryInputType` im Quellcode. Darüber hinaus werden keine weiteren Informationen gesendet, bis Telemetrie wieder aktiviert wird. Wird sie wieder aktiviert, werden die Telemetriedaten der letzten 30 Tage gesendet.
+
+---
+
+## Ein Hinweis zu IP-Adressen
+
+Telemetrie wird über HTTPS hochgeladen, wodurch deine IP-Adresse dem Telemetrieserver bekannt ist. Wir speichern deine IP-Adresse **nicht** in unserer Telemetrietabelle und verknüpfen sie **nicht** mit deiner _ClientId_.
+
+---
+
+## Zuvor erfasste Telemetriedaten
+
+Wir sind der Meinung, dass die von uns per Telemetrie erfassten Daten recht minimal sind, können diese Entscheidung aber nicht für jeden Nutzer treffen. Solltest du deine Meinung zu den zuvor erfassten Daten ändern, kannst du die Löschung deiner Daten beantragen, indem du uns eine E-Mail an [support@waveterm.dev](mailto:support@waveterm.dev) schreibst. In diesem Fall benötigen wir deine _ClientId_, um sie zu entfernen.
+
+---
+
+## Datenschutzerklärung
+
+Eine Zusammenfassung des Obigen findest du in unserer [Datenschutzerklärung](https://www.waveterm.dev/privacy).
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/telemetry.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/telemetry.mdx
new file mode 100644
index 0000000000..8a1a936433
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/telemetry.mdx
@@ -0,0 +1,71 @@
+---
+sidebar_position: 100
+title: Telemetrie
+id: "telemetry"
+---
+
+## tl;dr
+
+Wave Terminal erfasst Telemetriedaten, um Feature-Nutzung nachzuvollziehen, künftige Produktentscheidungen zu steuern und aggregierte Kennzahlen zur Popularität und Nutzung von Wave zu erstellen. Wir erfassen KEINE personenbezogenen Daten (PII), Tastatureingaben, Dateiinhalte, KI-Prompts, IP-Adressen, Hostnamen oder Befehle. Wir verknüpfen alle Informationen mit einer anonymen, zufällig generierten _ClientId_ (UUID). Du kannst die Erfassung jederzeit deaktivieren.
+
+Hier eine kurze Zusammenfassung dessen, was erfasst wird:
+
+- Grundlegende App-/Systeminformationen - Betriebssystem, Architektur, App-Version, Update-Einstellungen
+- Nutzungskennzahlen - App-Start/-Beendigung, aktive Minuten, Vordergrundzeit, Tab-/Block-Anzahl/-Nutzung
+- Feature-Interaktionen - Wenn du Tabs erstellst, Befehle ausführst, Einstellungen änderst usw.
+- Anzeigeinformationen - Monitorauflösung, Anzahl der Displays
+- Verbindungsereignisse - SSH-/WSL-Verbindungsversuche (aber KEINE Hostnamen/IPs)
+- Wave-AI-Nutzung - Modell-/Anbieterauswahl, Token-Anzahl, Anfragemetriken, Latenz (aber KEINE Prompts oder Antworten)
+- Fehlerberichte - Absturz-/Panic-Ereignisse mit minimalen Debug-Informationen, aber keine Stack-Traces oder detaillierte Fehler
+
+Telemetrie kann jederzeit in den Einstellungen deaktiviert werden. Wenn sie nicht deaktiviert ist, wird sie beim Start, beim Beenden und alle 4 Stunden gesendet.
+
+## Telemetrie deaktivieren
+
+Telemetrie kann auf dem anfänglichen Willkommensbildschirm aktiviert oder deaktiviert werden, wenn Wave zum ersten Mal startet. Nach der Einrichtung kann Telemetrie deaktiviert werden, indem du den Schlüssel `telemetry:enabled` in Waves allgemeiner Konfigurationsdatei auf `false` setzt. Sie kann auch über den CLI-Befehl `wsh setconfig telemetry:enabled=false` deaktiviert werden.
+
+:::info
+
+Dieses Dokument beschreibt das aktuelle Telemetriesystem ab v0.11.1. Ab v0.12.5 sendet Wave Terminal keine Legacy-Telemetrie mehr. Die vorherige Telemetrie-Dokumentation findest du zu historischen Zwecken in unserer [Legacy-Telemetrie-Dokumentation](./telemetry-old.mdx).
+
+:::
+
+## Diagnose-Ping
+
+Wave sendet einen kleinen, anonymen Diagnose-Ping, nachdem die App kurze Zeit gelaufen ist, und danach höchstens einmal pro Tag. Damit schätzen wir aktive Installationen ab und verstehen, welche Versionen noch genutzt werden, um fundierte Entscheidungen über laufenden Support und Abkündigungen zu treffen.
+
+Der Ping enthält nur: deine Wave-Version, Betriebssystem/CPU-Architektur, lokales Datum (JJJJ-MM-TT, ohne Zeitzone oder Uhrzeit), deine zufällig generierte anonyme Client-ID und ob Nutzungstelemetrie aktiviert oder deaktiviert ist.
+
+Er enthält keine Nutzungsdaten, Befehle, Dateien oder sonstige Telemetrieereignisse.
+
+Dieser Ping ist bewusst von der Telemetrie getrennt, damit Wave aktive Installationen zählen kann. Wenn du ihn deaktivieren möchtest, setze die Umgebungsvariable WAVETERM_NOPING.
+
+## Telemetrie senden
+
+Sofern Telemetrie aktiviert ist, wird sie kurz nach dem ersten Start von Wave und danach alle 4 Stunden erneut gesendet. Sie kann auch in Reaktion auf einige unten aufgeführte Sonderfälle gesendet werden. Beim Senden von Telemetrie werden Ereignisse als gesendet markiert, um doppelte Übertragungen zu vermeiden.
+
+### Senden nach Aktivierung der Telemetrie
+
+Sobald Telemetrie aktiviert wird, wird ein Telemetrie-Update gesendet, unabhängig davon, wie lange der letzte Sendevorgang zurückliegt. Dies setzt den üblichen Timer für Telemetrie-Sendevorgänge nicht zurück.
+
+### Wenn Wave geschlossen wird
+
+Sofern Telemetrie aktiviert ist, wird sie gesendet, wenn Waveterm geschlossen wird.
+
+## Ereignistypen und Eigenschaften
+
+Wave erfasst die oben zusammengefassten Ereignistypen und Eigenschaften. Mit neuen Features können neue Ereignisse und Eigenschaften hinzukommen, um deren Nutzung zu verfolgen.
+
+Die vollständige, aktuelle Liste aller Telemetrieereignisse und -eigenschaften findest du im Quellcode: [telemetrydata.go](https://github.com/wavetermdev/waveterm/blob/main/pkg/telemetry/telemetrydata/telemetrydata.go)
+
+## DSGVO-Opt-out-Konformität
+
+Wenn Telemetrie deaktiviert wird, sendet Wave einen einzelnen, minimalen Opt-out-Datensatz, der mit der anonymen Client-ID verknüpft ist und festhält, dass und wann Telemetrie deaktiviert wurde. Dieser Datensatz wird zu Compliance-Zwecken aufbewahrt. Danach werden keine Telemetrie- oder Nutzungsdaten mehr gesendet.
+
+## Deine Daten löschen
+
+Wenn du möchtest, dass deine zuvor erfassten Telemetriedaten gelöscht werden, schreibe uns eine E-Mail an support (at) waveterm.dev mit deiner _ClientId_, und wir entfernen sie.
+
+## Datenschutzerklärung
+
+Eine Zusammenfassung des Obigen findest du in unserer [Datenschutzerklärung](https://www.waveterm.dev/privacy).
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/waveai-modes.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/waveai-modes.mdx
new file mode 100644
index 0000000000..78da5ac17e
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/waveai-modes.mdx
@@ -0,0 +1,565 @@
+---
+sidebar_position: 1.6
+id: "waveai-modes"
+title: "Wave AI (lokale Modelle + BYOK)"
+---
+
+import { VersionBadge } from "@site/src/components/versionbadge";
+
+
+
+Wave AI unterstützt benutzerdefinierte KI-Modi, mit denen du lokale Modelle, benutzerdefinierte API-Endpunkte und alternative KI-Anbieter nutzen kannst. So hast du vollständige Kontrolle darüber, welche Modelle und Anbieter du mit Waves KI-Funktionen nutzt.
+
+## Konfigurationsüberblick
+
+KI-Modi werden in `~/.config/waveterm/waveai.json` konfiguriert.
+
+**Zum Bearbeiten über die Oberfläche:**
+1. Klicke auf das Einstellungssymbol (Zahnrad) in der Widget-Leiste
+2. Wähle "Settings" aus dem Menü
+3. Wähle "Wave AI Modes" aus der Einstellungs-Seitenleiste
+
+**Oder starte über die Kommandozeile:**
+```bash
+wsh editconfig waveai.json
+```
+
+Jeder Modus definiert eine vollständige KI-Konfiguration einschließlich Modell, API-Endpunkt, Authentifizierung und Anzeigeeigenschaften.
+
+## Anbieterbasierte Konfiguration
+
+Wave AI unterstützt jetzt eine anbieterbasierte Konfiguration, die automatisch sinnvolle Standardwerte für gängige Anbieter setzt. Durch Angabe des Feldes `ai:provider` kannst du deine Konfiguration deutlich vereinfachen, da das System automatisch Endpunkte, API-Typen und Secret-Namen einrichtet.
+
+### Unterstützte Anbieter
+
+- **`openai`** - OpenAI-API (konfiguriert automatisch Endpunkt und Secret-Namen) [[Beispiel ansehen](#openai)]
+- **`openrouter`** - OpenRouter-API (konfiguriert automatisch Endpunkt und Secret-Namen) [[Beispiel ansehen](#openrouter)]
+- **`nanogpt`** - NanoGPT-API (konfiguriert automatisch Endpunkt und Secret-Namen) [[Beispiel ansehen](#nanogpt)]
+- **`groq`** - Groq-API (konfiguriert automatisch Endpunkt und Secret-Namen) [[Beispiel ansehen](#groq)]
+- **`google`** - Google AI (Gemini) [[Beispiel ansehen](#google-ai-gemini)]
+- **`azure`** - Azure OpenAI Service (moderne API) [[Beispiel ansehen](#azure-openai-moderne-api)]
+- **`azure-legacy`** - Azure OpenAI Service (Legacy-Deployment-API) [[Beispiel ansehen](#azure-openai-legacy-deployment-api)]
+- **`custom`** - Benutzerdefinierter API-Endpunkt (vollständig manuelle Konfiguration) [[Beispiele ansehen](#beispiele-für-lokale-modelle)]
+
+### Unterstützte API-Typen
+
+Wave AI unterstützt folgende API-Typen:
+
+- **`openai-chat`**: Nutzt den Endpunkt `/v1/chat/completions` (am häufigsten)
+- **`openai-responses`**: Nutzt den Endpunkt `/v1/responses` (moderne API für GPT-5+-Modelle)
+- **`google-gemini`**: Googles Gemini-API-Format (wird automatisch gesetzt, wenn `ai:provider: "google"` genutzt wird, normalerweise nicht direkt verwendet)
+
+## Globale Wave-AI-Einstellungen
+
+Du kannst das globale Verhalten von Wave AI in deinen Wave-Terminal-Einstellungen konfigurieren (getrennt von den Modus-Konfigurationen in `waveai.json`).
+
+### Einen Standard-KI-Modus festlegen
+
+Nachdem du ein lokales Modell oder einen benutzerdefinierten Modus konfiguriert hast, kannst du ihn zum Standard machen, indem du `waveai:defaultmode` in deinen Wave-Terminal-Einstellungen setzt.
+
+:::important
+Nutze den **Modus-Schlüssel** (den Schlüssel in deiner `waveai.json`-Konfiguration), nicht den Anzeigenamen. Nutze zum Beispiel `"ollama-llama"` (den Schlüssel), nicht `"Ollama - Llama 3.3"` (den Anzeigenamen).
+:::
+
+**Mit dem Einstellungsbefehl:**
+```bash
+wsh setconfig waveai:defaultmode="ollama-llama"
+```
+
+**Oder settings.json direkt bearbeiten:**
+1. Klicke auf das Einstellungssymbol (Zahnrad) in der Widget-Leiste
+2. Wähle "Settings" aus dem Menü
+3. Füge den Schlüssel `waveai:defaultmode` zu deiner settings.json hinzu:
+```json
+ "waveai:defaultmode": "ollama-llama"
+```
+
+Dadurch wird der angegebene Modus zur Standardauswahl beim Öffnen der Wave-AI-Funktionen.
+
+:::note
+Wave AI erfordert normalerweise aktivierte Telemetrie. Wenn du jedoch dein eigenes benutzerdefiniertes Modell konfigurierst (lokal oder BYOK) und `waveai:defaultmode` auf den Schlüssel dieses benutzerdefinierten Modus setzt, erhältst du keine Telemetrie-Pflichtmeldungen. So kannst du Wave-AI-Funktionen vollständig privat mit deinen eigenen Modellen nutzen.
+:::
+
+### Wave-Cloud-Modi ausblenden
+
+Wenn du nur deine lokalen oder benutzerdefinierten Modelle nutzen und Waves Cloud-KI-Modi aus dem Modus-Dropdown ausblenden möchtest, setze `waveai:showcloudmodes` auf `false`:
+
+**Mit dem Einstellungsbefehl:**
+```bash
+wsh setconfig waveai:showcloudmodes=false
+```
+
+**Oder settings.json direkt bearbeiten:**
+1. Klicke auf das Einstellungssymbol (Zahnrad) in der Widget-Leiste
+2. Wähle "Settings" aus dem Menü
+3. Füge den Schlüssel `waveai:showcloudmodes` zu deiner settings.json hinzu:
+```json
+ "waveai:showcloudmodes": false
+```
+
+Dadurch werden Waves integrierte Cloud-KI-Modi ausgeblendet und nur deine benutzerdefiniert konfigurierten Modi angezeigt.
+
+## Beispiele für lokale Modelle
+
+### Ollama
+
+[Ollama](https://ollama.ai) bietet eine OpenAI-kompatible API zum lokalen Ausführen von Modellen:
+
+```json
+{
+ "ollama-llama": {
+ "display:name": "Ollama - Llama 3.3",
+ "display:order": 1,
+ "display:icon": "microchip",
+ "display:description": "Local Llama 3.3 70B model via Ollama",
+ "ai:apitype": "openai-chat",
+ "ai:model": "llama3.3:70b",
+ "ai:thinkinglevel": "medium",
+ "ai:endpoint": "http://localhost:11434/v1/chat/completions",
+ "ai:apitoken": "ollama"
+ }
+}
+```
+
+:::tip
+Das Feld `ai:apitoken` ist erforderlich, wird von Ollama aber ignoriert - du kannst es auf einen beliebigen Wert wie `"ollama"` setzen.
+:::
+
+### LM Studio
+
+[LM Studio](https://lmstudio.ai) bietet einen lokalen Server, der verschiedene Modelle ausführen kann:
+
+```json
+{
+ "lmstudio-qwen": {
+ "display:name": "LM Studio - Qwen",
+ "display:order": 2,
+ "display:icon": "server",
+ "display:description": "Local Qwen model via LM Studio",
+ "ai:apitype": "openai-chat",
+ "ai:model": "qwen/qwen-2.5-coder-32b-instruct",
+ "ai:thinkinglevel": "medium",
+ "ai:endpoint": "http://localhost:1234/v1/chat/completions",
+ "ai:apitoken": "not-needed"
+ }
+}
+```
+
+### vLLM
+
+[vLLM](https://docs.vllm.ai) ist ein leistungsstarker Inferenzserver mit OpenAI-API-Kompatibilität:
+
+```json
+{
+ "vllm-local": {
+ "display:name": "vLLM",
+ "display:order": 3,
+ "display:icon": "server",
+ "display:description": "Local model via vLLM",
+ "ai:apitype": "openai-chat",
+ "ai:model": "your-model-name",
+ "ai:thinkinglevel": "medium",
+ "ai:endpoint": "http://localhost:8000/v1/chat/completions",
+ "ai:apitoken": "not-needed"
+ }
+}
+```
+
+## Beispiele für Cloud-Anbieter
+
+### OpenAI
+
+Die Nutzung des `openai`-Anbieters konfiguriert Endpunkt und Secret-Namen automatisch:
+
+```json
+{
+ "openai-gpt4o": {
+ "display:name": "GPT-4o",
+ "ai:provider": "openai",
+ "ai:model": "gpt-4o"
+ }
+}
+```
+
+Der Anbieter setzt automatisch:
+- `ai:endpoint` auf `https://api.openai.com/v1/chat/completions`
+- `ai:apitype` auf `openai-chat` (oder `openai-responses` für GPT-5+-Modelle)
+- `ai:apitokensecretname` auf `OPENAI_KEY` (speichere deinen OpenAI-API-Schlüssel unter diesem Namen)
+- `ai:capabilities` auf `["tools", "images", "pdfs"]` (automatisch basierend auf dem Modell bestimmt)
+
+Für neuere Modelle wie GPT-4.1 oder GPT-5 wird der API-Typ automatisch bestimmt:
+
+```json
+{
+ "openai-gpt41": {
+ "display:name": "GPT-4.1",
+ "ai:provider": "openai",
+ "ai:model": "gpt-4.1"
+ }
+}
+```
+
+### OpenAI-kompatibel
+
+Um einen OpenAI-kompatiblen API-Anbieter zu nutzen, musst du die Parameter ai:endpoint, ai:apitokensecretname, ai:model angeben
+und "openai-chat" als ai:apitype nutzen.
+
+:::note
+Der ai:endpoint ist *NICHT* eine baseurl. Der Endpunkt sollte den vollständigen Endpunkt enthalten, nicht nur die baseurl.
+Zum Beispiel: https://api.x.ai/v1/chat/completions
+
+Wenn du nur die baseurl angibst, erhältst du wahrscheinlich eine 404-Meldung.
+:::
+
+```json
+{
+ "xai-grokfast": {
+ "display:name": "xAI Grok Fast",
+ "display:order": 2,
+ "display:icon": "server",
+ "ai:apitype": "openai-chat",
+ "ai:model": "grok-4-1-fast-reasoning",
+ "ai:endpoint": "https://api.x.ai/v1/chat/completions",
+ "ai:apitokensecretname": "XAI_KEY",
+ "ai:capabilities": ["tools", "images", "pdfs"]
+ }
+}
+```
+
+`ai:apitokensecretname` sollte der Name einer Umgebungsvariable sein, die deinen API-Schlüssel enthält. Setze diese Umgebungsvariable, bevor du Wave Terminal ausführst.
+
+
+### OpenRouter
+
+[OpenRouter](https://openrouter.ai) bietet Zugriff auf mehrere KI-Modelle. Die Nutzung des `openrouter`-Anbieters vereinfacht die Konfiguration:
+
+```json
+{
+ "openrouter-qwen": {
+ "display:name": "OpenRouter - Qwen",
+ "ai:provider": "openrouter",
+ "ai:model": "qwen/qwen-2.5-coder-32b-instruct"
+ }
+}
+```
+
+Der Anbieter setzt automatisch:
+- `ai:endpoint` auf `https://openrouter.ai/api/v1/chat/completions`
+- `ai:apitype` auf `openai-chat`
+- `ai:apitokensecretname` auf `OPENROUTER_KEY` (speichere deinen OpenRouter-API-Schlüssel unter diesem Namen)
+
+:::note
+Für OpenRouter musst du `ai:capabilities` manuell basierend auf den Funktionen deines Modells angeben. Beispiel:
+```json
+{
+ "openrouter-qwen": {
+ "display:name": "OpenRouter - Qwen",
+ "ai:provider": "openrouter",
+ "ai:model": "qwen/qwen-2.5-coder-32b-instruct",
+ "ai:capabilities": ["tools"]
+ }
+}
+```
+:::
+
+### NanoGPT
+
+[NanoGPT](https://nano-gpt.com) bietet Zugriff auf mehrere KI-Modelle zu wettbewerbsfähigen Preisen. Die Nutzung des `nanogpt`-Anbieters vereinfacht die Konfiguration:
+
+```json
+{
+ "nanogpt-glm47": {
+ "display:name": "NanoGPT - GLM 4.7",
+ "ai:provider": "nanogpt",
+ "ai:model": "zai-org/glm-4.7"
+ }
+}
+```
+
+Der Anbieter setzt automatisch:
+- `ai:endpoint` auf `https://nano-gpt.com/api/v1/chat/completions`
+- `ai:apitype` auf `openai-chat`
+- `ai:apitokensecretname` auf `NANOGPT_KEY` (speichere deinen NanoGPT-API-Schlüssel unter diesem Namen)
+
+:::note
+NanoGPT ist ein Proxy-Dienst, der Zugriff auf mehrere KI-Modelle bietet. Du musst `ai:capabilities` manuell basierend auf den Funktionen des Modells angeben. NanoGPT unterstützt OpenAI-kompatiblen Tool-Aufruf für Modelle mit dieser Fähigkeit. Prüfe das Feld `capabilities.vision` des Modells über die [NanoGPT-Modelle-API](https://nano-gpt.com/api/v1/models?detailed=true), um die Bildunterstützung zu bestimmen. Beispiel für ein reines Textmodell mit Tool-Unterstützung:
+```json
+{
+ "nanogpt-glm47": {
+ "display:name": "NanoGPT - GLM 4.7",
+ "ai:provider": "nanogpt",
+ "ai:model": "zai-org/glm-4.7",
+ "ai:capabilities": ["tools"]
+ }
+}
+```
+Für Vision-fähige Modelle wie `openai/gpt-5` füge `"images"` zu den capabilities hinzu.
+:::
+
+### Groq
+
+[Groq](https://groq.com) bietet schnelle Inferenz für offene Modelle über eine OpenAI-kompatible API. Die Nutzung des `groq`-Anbieters vereinfacht die Konfiguration:
+
+```json
+{
+ "groq-kimi-k2": {
+ "display:name": "Groq - Kimi K2",
+ "ai:provider": "groq",
+ "ai:model": "moonshotai/kimi-k2-instruct"
+ }
+}
+```
+
+Der Anbieter setzt automatisch:
+- `ai:endpoint` auf `https://api.groq.com/openai/v1/chat/completions`
+- `ai:apitype` auf `openai-chat`
+- `ai:apitokensecretname` auf `GROQ_KEY` (speichere deinen Groq-API-Schlüssel unter diesem Namen)
+
+:::note
+Für Groq musst du `ai:capabilities` manuell basierend auf den Funktionen deines Modells angeben.
+:::
+
+### Google AI (Gemini)
+
+[Google AI](https://ai.google.dev) bietet die Gemini-Modellfamilie. Die Nutzung des `google`-Anbieters vereinfacht die Konfiguration:
+
+```json
+{
+ "google-gemini": {
+ "display:name": "Gemini 3.5 Flash",
+ "ai:provider": "google",
+ "ai:model": "gemini-3.5-flash"
+ }
+}
+```
+
+Der Anbieter setzt automatisch:
+- `ai:endpoint` auf `https://generativelanguage.googleapis.com/v1beta/models/{model}:streamGenerateContent`
+- `ai:apitype` auf `google-gemini`
+- `ai:apitokensecretname` auf `GOOGLE_AI_KEY` (speichere deinen Google-AI-API-Schlüssel unter diesem Namen)
+- `ai:capabilities` auf `["tools", "images", "pdfs"]` (automatisch konfiguriert)
+
+### Azure OpenAI (moderne API)
+
+Für die moderne Azure-OpenAI-API nutze den `azure`-Anbieter:
+
+```json
+{
+ "azure-gpt4": {
+ "display:name": "Azure GPT-4",
+ "ai:provider": "azure",
+ "ai:model": "gpt-4",
+ "ai:azureresourcename": "your-resource-name"
+ }
+}
+```
+
+Der Anbieter setzt automatisch:
+- `ai:endpoint` auf `https://your-resource-name.openai.azure.com/openai/v1/chat/completions` (oder `/responses` für neuere Modelle)
+- `ai:apitype` basierend auf dem Modell
+- `ai:apitokensecretname` auf `AZURE_OPENAI_KEY` (speichere deinen Azure-OpenAI-Schlüssel unter diesem Namen)
+
+:::note
+Für Azure-Anbieter musst du `ai:capabilities` manuell basierend auf den Funktionen deines Modells angeben. Beispiel:
+```json
+{
+ "azure-gpt4": {
+ "display:name": "Azure GPT-4",
+ "ai:provider": "azure",
+ "ai:model": "gpt-4",
+ "ai:azureresourcename": "your-resource-name",
+ "ai:capabilities": ["tools", "images"]
+ }
+}
+```
+:::
+
+### Azure OpenAI (Legacy-Deployment-API)
+
+Für Legacy-Azure-Deployments nutze den `azure-legacy`-Anbieter:
+
+```json
+{
+ "azure-legacy-gpt4": {
+ "display:name": "Azure GPT-4 (Legacy)",
+ "ai:provider": "azure-legacy",
+ "ai:azureresourcename": "your-resource-name",
+ "ai:azuredeployment": "your-deployment-name"
+ }
+}
+```
+
+Der Anbieter erstellt automatisch die vollständige Endpunkt-URL und setzt die API-Version (Standard ist `2025-04-01-preview`). Du kannst die API-Version bei Bedarf mit `ai:azureapiversion` überschreiben.
+
+:::note
+Für den Azure-Legacy-Anbieter musst du `ai:capabilities` manuell basierend auf den Funktionen deines Modells angeben.
+:::
+
+## Secrets für API-Schlüssel nutzen
+
+Statt API-Schlüssel direkt in der Konfiguration zu speichern, solltest du Waves Secret-Speicher nutzen, um deine Zugangsdaten sicher aufzubewahren. Secrets werden verschlüsselt im nativen Schlüsselbund deines Systems gespeichert.
+
+### Einen API-Schlüssel speichern
+
+**Über die Secrets-Oberfläche (empfohlen):**
+1. Klicke auf das Einstellungssymbol (Zahnrad) in der Widget-Leiste
+2. Wähle "Secrets" aus dem Menü
+3. Klicke auf "Add New Secret"
+4. Gib den Secret-Namen (z. B. `OPENAI_API_KEY`) und deinen API-Schlüssel ein
+5. Klicke auf "Save"
+
+**Oder über die Kommandozeile:**
+```bash
+wsh secret set OPENAI_KEY=sk-xxxxxxxxxxxxxxxx
+wsh secret set OPENROUTER_KEY=sk-xxxxxxxxxxxxxxxx
+```
+
+### Auf das Secret verweisen
+
+Bei Nutzung von Anbietern wie `openai` oder `openrouter` wird der Secret-Name automatisch gesetzt. Stelle nur sicher, dass das Secret mit dem richtigen Namen existiert:
+
+```json
+{
+ "my-openai-mode": {
+ "display:name": "OpenAI GPT-4o",
+ "ai:provider": "openai",
+ "ai:model": "gpt-4o"
+ }
+}
+```
+
+Der `openai`-Anbieter sucht automatisch nach dem Secret `OPENAI_KEY`. Weitere Informationen zur sicheren Verwaltung von Secrets in Wave findest du in der [Secrets-Dokumentation](./secrets.mdx).
+
+## Beispiel mit mehreren Modi
+
+Du kannst mehrere KI-Modi definieren und einfach zwischen ihnen wechseln:
+
+```json
+{
+ "ollama-llama": {
+ "display:name": "Ollama - Llama 3.3",
+ "display:order": 1,
+ "ai:model": "llama3.3:70b",
+ "ai:endpoint": "http://localhost:11434/v1/chat/completions",
+ "ai:apitoken": "ollama"
+ },
+ "ollama-codellama": {
+ "display:name": "Ollama - CodeLlama",
+ "display:order": 2,
+ "ai:model": "codellama:34b",
+ "ai:endpoint": "http://localhost:11434/v1/chat/completions",
+ "ai:apitoken": "ollama"
+ },
+ "openai-gpt4o": {
+ "display:name": "GPT-4o",
+ "display:order": 10,
+ "ai:provider": "openai",
+ "ai:model": "gpt-4o"
+ }
+}
+```
+
+## Fehlerbehebung
+
+### Verbindungsprobleme
+
+Wenn Wave sich nicht mit deinem Modellserver verbinden kann:
+
+1. **Für Cloud-Anbieter mit gesetztem `ai:provider`**: Stelle sicher, dass das korrekte Secret gespeichert ist (z. B. `OPENAI_KEY`, `OPENROUTER_KEY`)
+2. **Für lokale/benutzerdefinierte Endpunkte**: Prüfe, ob der Server läuft (`curl http://localhost:11434/v1/models` für Ollama)
+3. Prüfe, ob `ai:endpoint` die vollständige Endpunkt-URL einschließlich Pfad ist (z. B. `http://localhost:11434/v1/chat/completions`)
+4. Prüfe, ob `ai:apitype` zur API deines Servers passt (die Standardwerte sind bei Nutzung von Anbietern meist korrekt)
+5. Prüfe die Firewall-Einstellungen, wenn du eine Nicht-localhost-Adresse nutzt
+
+### Modell nicht gefunden
+
+Wenn du Fehler wie "model not found" erhältst:
+
+1. Prüfe, ob der Modellname genau dem entspricht, was dein Server erwartet
+2. Nutze bei Ollama `ollama list`, um verfügbare Modelle zu sehen
+3. Manche Server benötigen Präfixe oder bestimmte Namensformate
+
+### Auswahl des API-Typs
+
+- Der API-Typ ist standardmäßig `openai-chat`, wenn nicht angegeben, was für die meisten Anbieter funktioniert
+- Nutze `openai-chat` für Ollama, LM Studio, benutzerdefinierte Endpunkte und die meisten Cloud-Anbieter
+- Nutze `openai-responses` für neuere OpenAI-Modelle (GPT-5+) oder wenn dein Anbieter dies ausdrücklich erfordert
+- Anbieter-Voreinstellungen setzen bei Bedarf automatisch den richtigen API-Typ
+
+## Konfigurationsreferenz
+
+### Minimale Konfiguration (mit Anbieter)
+
+```json
+{
+ "mode-key": {
+ "display:name": "Qwen (OpenRouter)",
+ "ai:provider": "openrouter",
+ "ai:model": "qwen/qwen-2.5-coder-32b-instruct"
+ }
+}
+```
+
+### Vollständige Konfiguration (alle Felder)
+
+```json
+{
+ "mode-key": {
+ "display:name": "Display Name",
+ "display:order": 1,
+ "display:icon": "icon-name",
+ "display:description": "Full description",
+ "ai:provider": "custom",
+ "ai:apitype": "openai-chat",
+ "ai:model": "model-name",
+ "ai:thinkinglevel": "medium",
+ "ai:endpoint": "http://localhost:11434/v1/chat/completions",
+ "ai:azureapiversion": "v1",
+ "ai:apitoken": "your-token",
+ "ai:apitokensecretname": "PROVIDER_KEY",
+ "ai:azureresourcename": "your-resource",
+ "ai:azuredeployment": "your-deployment",
+ "ai:capabilities": ["tools", "images", "pdfs"]
+ }
+}
+```
+
+### Feldreferenz
+
+| Feld | Erforderlich | Beschreibung |
+|-------|----------|-------------|
+| `display:name` | Ja | Im KI-Modus-Auswahlmenü angezeigter Name |
+| `display:order` | Nein | Sortierreihenfolge in der Auswahl (niedrigere Zahlen zuerst) |
+| `display:icon` | Nein | Icon-Bezeichner für den Modus (kann jedes [FontAwesome-Icon](https://fontawesome.com/search) nutzen, ohne das Präfix "fa-"). Standard ist "sparkles" |
+| `display:description` | Nein | Vollständige Beschreibung des Modus |
+| `ai:provider` | Nein | Anbieter-Voreinstellung: `openai`, `openrouter`, `nanogpt`, `groq`, `google`, `azure`, `azure-legacy`, `custom` |
+| `ai:apitype` | Nein | API-Typ: `openai-chat`, `openai-responses` oder `google-gemini` (Standard `openai-chat`, wenn nicht angegeben) |
+| `ai:model` | Nein | Modellbezeichner (für die meisten Anbieter erforderlich) |
+| `ai:thinkinglevel` | Nein | Denk-Level: `low`, `medium` oder `high` |
+| `ai:endpoint` | Nein | *Vollständige* API-Endpunkt-URL (automatisch vom Anbieter gesetzt, falls verfügbar) |
+| `ai:azureapiversion` | Nein | Azure-API-Version (für den `azure-legacy`-Anbieter, Standard `2025-04-01-preview`) |
+| `ai:apitoken` | Nein | API-Schlüssel/-Token (nicht empfohlen - nutze stattdessen Secrets) |
+| `ai:apitokensecretname` | Nein | Name des Secrets, das das API-Token enthält (automatisch vom Anbieter gesetzt) |
+| `ai:azureresourcename` | Nein | Azure-Ressourcenname (für Azure-Anbieter) |
+| `ai:azuredeployment` | Nein | Azure-Deployment-Name (für den `azure-legacy`-Anbieter) |
+| `ai:capabilities` | Nein | Array unterstützter Fähigkeiten: `"tools"`, `"images"`, `"pdfs"` |
+| `waveai:cloud` | Nein | Intern - nur für die Konfiguration von Wave Cloud AI |
+| `waveai:premium` | Nein | Intern - nur für die Konfiguration von Wave Cloud AI |
+
+### KI-Fähigkeiten
+
+Das Feld `ai:capabilities` gibt an, welche Funktionen der KI-Modus unterstützt:
+
+- **`tools`** - Aktiviert KI-Tool-Nutzung zum Lesen/Schreiben von Dateien, Shell-Integration und Widget-Interaktion
+- **`images`** - Erlaubt Bildanhänge im Chat (das Modell kann hochgeladene Bilder ansehen)
+- **`pdfs`** - Erlaubt PDF-Dateianhänge im Chat (das Modell kann PDF-Inhalte lesen)
+
+**Anbieterspezifisches Verhalten:**
+- **OpenAI- und Google-Anbieter**: Fähigkeiten werden automatisch basierend auf dem Modell konfiguriert. Du musst sie nicht angeben.
+- **OpenRouter-, NanoGPT-, Groq-, Azure-, Azure-Legacy- und Custom-Anbieter**: Du musst die Fähigkeiten manuell basierend auf den Funktionen deines Modells angeben.
+
+:::warning
+Wenn du `"tools"` nicht in das Array `ai:capabilities` aufnimmst, kann das KI-Modell nicht mit deinen Wave-Terminal-Widgets interagieren, Dateien lesen/schreiben oder Befehle ausführen. Die meisten KI-Modi sollten `"tools"` enthalten, um die beste Wave-Erfahrung zu bieten.
+:::
+
+Die meisten Modelle unterstützen `tools` und profitieren davon. Vision-fähige Modelle sollten `images` enthalten. Nicht alle Modelle unterstützen PDFs, füge `pdfs` daher nur hinzu, wenn dein Modell sie verarbeiten kann.
diff --git a/docs/i18n/de/docusaurus-plugin-content-docs/current/waveai.mdx b/docs/i18n/de/docusaurus-plugin-content-docs/current/waveai.mdx
new file mode 100644
index 0000000000..e925a385f6
--- /dev/null
+++ b/docs/i18n/de/docusaurus-plugin-content-docs/current/waveai.mdx
@@ -0,0 +1,110 @@
+---
+sidebar_position: 1.5
+id: "waveai"
+title: "Wave AI"
+---
+
+import { Kbd } from "@site/src/components/kbd";
+import { PlatformProvider, PlatformSelectorButton } from "@site/src/components/platformcontext";
+
+
+
+
+
+
- Wave AI is your terminal assistant with context. I can read your terminal output, analyze widgets,
- access files, and help you solve problems faster.
-
+
{t("aiPanel.welcomeIntro")}
-
Getting Started:
+
{t("aiPanel.gettingStarted")}
- Widget Context
-
When ON, I can read your terminal and analyze widgets.
- Wave AI now supports bring-your-own-key (BYOK) with OpenAI, Google Gemini, Azure, and
- OpenRouter, plus local models via Ollama, LM Studio, and other OpenAI-compatible providers.
-
diff --git a/frontend/app/aipanel/restorebackupmodal.tsx b/frontend/app/aipanel/restorebackupmodal.tsx
index 36b4be5b5d..ade5f1e18d 100644
--- a/frontend/app/aipanel/restorebackupmodal.tsx
+++ b/frontend/app/aipanel/restorebackupmodal.tsx
@@ -5,6 +5,7 @@ import { Modal } from "@/app/modals/modal";
import { recordTEvent } from "@/app/store/global";
import { useAtomValue } from "jotai";
import { memo } from "react";
+import { useTranslation } from "react-i18next";
import { WaveUIMessagePart } from "./aitypes";
import { WaveAIModel } from "./waveai-model";
@@ -13,6 +14,7 @@ interface RestoreBackupModalProps {
}
export const RestoreBackupModal = memo(({ part }: RestoreBackupModalProps) => {
+ const { t } = useTranslation();
const model = WaveAIModel.getInstance();
const toolData = part.data;
const status = useAtomValue(model.restoreBackupStatus);
@@ -40,12 +42,18 @@ export const RestoreBackupModal = memo(({ part }: RestoreBackupModalProps) => {
if (status === "success") {
return (
-
+
-
Backup Successfully Restored
+
{t("restoreBackup.restoredTitle")}
- The file {toolData.inputfilename} has
- been restored to its previous state.
+ {t("restoreBackup.restoredBodyPrefix")}{" "}
+ {toolData.inputfilename}{" "}
+ {t("restoreBackup.restoredBodySuffix")}
- This will restore {toolData.inputfilename}{" "}
- to its state before this edit was made
+ {t("restoreBackup.confirmBodyPrefix")}{" "}
+ {toolData.inputfilename}{" "}
+ {t("restoreBackup.confirmBodySuffix")}
{toolData.runts && ({formatTimestamp(toolData.runts)})}.
-
- Any changes made by this edit and subsequent edits will be lost.
-
- Wave AI is free to use and provides integrated AI chat that can interact with your widgets,
- help you with code, analyze files, and assist with your terminal workflows.
-
+
{t("aiPanel.telemetryIntro")}
-
Telemetry keeps Wave AI free
+
{t("aiPanel.telemetryKeepsFree")}
-
- To keep Wave AI free for everyone, we require a small amount of anonymous{" "}
- usage data (app version, feature usage, system info).
-
-
- This helps us block abuse by automated systems and ensure it's used by real
- people like you.
-
-
- We never collect your files, prompts, keystrokes, hostnames, or personally
- identifying information. Wave AI is powered by OpenAI's APIs, please refer to
- OpenAI's privacy policy for details on how they handle your data.
-
diff --git a/frontend/app/block/durable-session-flyover.tsx b/frontend/app/block/durable-session-flyover.tsx
index 7ab7fa0b10..da3f322899 100644
--- a/frontend/app/block/durable-session-flyover.tsx
+++ b/frontend/app/block/durable-session-flyover.tsx
@@ -19,6 +19,7 @@ import {
} from "@floating-ui/react";
import * as jotai from "jotai";
import { useEffect, useRef, useState } from "react";
+import { useTranslation } from "react-i18next";
import { BlockEnv } from "./blockenv";
function isTermViewModel(viewModel: ViewModel): viewModel is TermViewModel {
@@ -26,13 +27,14 @@ function isTermViewModel(viewModel: ViewModel): viewModel is TermViewModel {
}
function LearnMoreButton() {
+ const { t } = useTranslation();
const waveEnv = useWaveEnv();
return (
);
}
@@ -43,6 +45,7 @@ interface StandardSessionContentProps {
}
function StandardSessionContent({ viewModel, onClose }: StandardSessionContentProps) {
+ const { t } = useTranslation();
const handleRestartAsDurable = () => {
recordTEvent("action:termdurable", { "action:type": "restartdurable" });
onClose();
@@ -53,18 +56,15 @@ function StandardSessionContent({ viewModel, onClose }: StandardSessionContentPr
- Standard SSH Session
-
-
- Standard SSH sessions end when the connection drops. Durable sessions keep your shell state, running
- programs, and history alive through network changes, computer sleep, and Wave restarts.
+ {t("durableSession.standardSshSession")}
- Your shell state, running programs, and history are protected. This session will survive network
- disconnects.
+ {t("durableSession.attachedTitle")}
- Connection lost, but your session is still running on the remote server. Wave will automatically
- reconnect when the connection is restored.
+ {t("durableSession.detachedTitle")}
);
@@ -184,6 +180,7 @@ interface DurableEndedContentProps {
}
function DurableEndedContent({ doneReason, startupError, viewModel, onClose }: DurableEndedContentProps) {
+ const { t } = useTranslation();
const handleRestartSession = () => {
onClose();
util.fireAndForget(() => viewModel.forceRestartController());
@@ -194,21 +191,19 @@ function DurableEndedContent({ doneReason, startupError, viewModel, onClose }: D
util.fireAndForget(() => viewModel.restartSessionWithDurability(false));
};
- let titleText = "Durable Session (Ended)";
- let descriptionText = "The durable session has ended. This block is still configured for durable sessions.";
+ let titleText = t("durableSession.endedTitle");
+ let descriptionText = t("durableSession.endedBody");
const showRestartButton = true;
if (doneReason === "terminated") {
- titleText = "Durable Session (Ended, Exited)";
- descriptionText =
- "The shell was terminated and is no longer running. This block is still configured for durable sessions.";
+ titleText = t("durableSession.endedExitedTitle");
+ descriptionText = t("durableSession.endedExitedBody");
} else if (doneReason === "gone") {
- titleText = "Durable Session (Ended, Lost)";
- descriptionText =
- "The session was lost or not found on the remote server. This may have occurred due to a system reboot or the session being manually terminated.";
+ titleText = t("durableSession.endedLostTitle");
+ descriptionText = t("durableSession.endedLostBody");
} else if (doneReason === "startuperror") {
- titleText = "Durable Session (Failed to Start)";
- descriptionText = "The durable session failed to start.";
+ titleText = t("durableSession.failedToStartTitle");
+ descriptionText = t("durableSession.failedToStartBody");
return (
@@ -226,14 +221,14 @@ function DurableEndedContent({ doneReason, startupError, viewModel, onClose }: D
onClick={handleRestartSession}
>
- Restart Session
+ {t("durableSession.restartSession")}
@@ -254,7 +259,7 @@ const QuickTips = () => {
- Tabs - Right click any tab to change backgrounds or rename.
+ {t("quickTips.tabsLabel")} - {t("quickTips.tabsBody")}
@@ -262,7 +267,7 @@ const QuickTips = () => {
- Web View - Click the gear in the web view to set your homepage
+ {t("quickTips.webViewLabel")} - {t("quickTips.webViewBody")}
@@ -270,7 +275,7 @@ const QuickTips = () => {
- Terminal - Click the gear in the terminal to set your terminal theme and font size
+ {t("quickTips.terminalLabel")} - {t("quickTips.terminalBody")}