CodeNomad/docs/help/de/extensions.md
Pascal André c0d53f13d4
docs(help): multilingual help site with in-app Help menu and palette entry (#859)
## Summary

A complete public CodeNomad help site in the app's ten languages,
published on GitHub Pages (https://neuralnomadsai.github.io/CodeNomad/)
and opened from the app.

- **Content:** 25 pages in 8 sections (Start, Workflows, OpenCode setup,
Remote access, Customize, Extensions, Desktop, Help), written for
OpenCode power users and covering the current version only. It includes
everything user-relevant from `README.md`, `packages/server/README.md`
(server, network, auth, TLS, Remote Control) and the user-facing
dev-docs, with flags, defaults, labels and safety boundaries checked
against source.
- **Languages:** en, fr, de, es, he (RTL), ja, ne, ru, tr, zh-Hans.
Interface labels reuse each locale's own app strings; native desktop
menu names, code, commands, flags, paths and anchors stay unchanged.
- **Site:** `scripts/build-help.mjs` renders
`docs/help/<locale>/<slug>.md` with translated chrome
(`docs/help/i18n/`), stable `{#id}` anchors identical across locales,
same-article language links with hreflang, a root language chooser, and
a first-party offline per-locale search (Ctrl/⌘+K, substring matching
for CJK, Devanagari and Hebrew, hidden without JS). No analytics or
remote resources.
- **Validation:** `npm run test:help` fails on any missing page or
string, heading drift, broken link/anchor/asset or invalid search
target. `.github/workflows/help-pages.yml` validates PRs and deploys
only from `dev`.
- **App entry points:** one `open-help` command for the palette and a
new **CodeNomad Help** item at the top of the Electron and Tauri Help
menus. It opens the help in the invoking window's UI language through
the existing external opener, falls back to the root URL for windows
without the handler, and reports failures without replay.
- Documents the strict boolean environment-variable rule from #959 and
the updater entry points from #960.

## Review

Delivered as a CodeNomad mission with independent review loops, each to
zero findings:
- English content audit (5 passes, 14 fixes) and technical gatekeeper (2
passes) before translation.
- After translation: QA, UX review, and a final multilingual gatekeeper
(35 translation/label findings fixed, then verified), plus a visual fix
for the search focus ring and a verified sync with #960.

## Validation

- `npm run test:help`: 9/9 (25 pages × 10 locales, strict, including
negative tests); `npm run build:help`: 250 pages.
- `node scripts/test-help-browser.mjs`: 44/44; Playwright: 500 page
visits at 390 and 1280 px, all locales, no overflow, no external
requests.
- UI help-command and desktop-updates browser tests 19/19; help URL unit
tests; Electron menu tests; UI and Electron typechecks; Tauri `cargo
test` 272/272.
2026-10-14 22:44:56 +02:00

6.2 KiB

Panel-Erweiterungen

Installierte und Online-Erweiterungen durchsuchen

  1. Öffnen Sie Rechtes Panel anpassen in der rechten Panel-Tableiste.
  2. Klappen Sie Erweiterungen unter der Trennlinie auf.
  3. Verwenden Sie Erweiterungen suchen für die gemeinsame Liste installierter Add-ons und des offiziellen Online-Katalogs. Zeigen Sie auf einen Eintrag oder fokussieren Sie ihn für Metadaten.

Der Abschnitt beginnt bei jedem Öffnen des Anpassungs-Popups eingeklappt. Installierte und Online-Einträge werden nach Erweiterungs-ID zusammengeführt; es gibt weder separates Verwaltungsfenster noch Installiert-/Online-Modus. Das Durchsuchen von Katalogmetadaten lädt oder startet keinen Panel-Code des Autors. Der Katalog wird in CodeNomad Extensions gepflegt; Aufnahme und angegebene Autorennamen sind weder Signaturen noch Vertrauensbeweis.

Ist der Katalog nicht verfügbar, bleiben installierte Erweiterungen und Aus ZIP installieren… verfügbar. Aktualisieren Sie zur erneuten Suche. Einklappen/Schließen des Popups verwirft dessen offene Prüf-/Bestätigungsoberfläche; es installiert nichts stillschweigend.

Prüfen und deaktiviert installieren

  1. Wählen Sie Installieren… an einem Katalogeintrag oder Aus ZIP installieren… für ein separat beschafftes Paket.
  2. Prüfen Sie Paket-ID, Autor, Repository, Version, API/Berechtigungen und SHA-256-Digest. Klappen Sie technische Details bei Bedarf auf.
  3. Prüfen Sie den Herausgeber und vergleichen Sie den Digest, soweit verfügbar, über einen vertrauenswürdigen Kanal.
  4. Wählen Sie nur bei Vertrauen in den Code Ich vertraue diesem Paket und seinem Autor, dann Deaktiviert installieren.

Prüfung lädt/validiert das gewählte Paket erneut; dabei wird kein Autorencode ausgeführt. Ein Digest identifiziert exakte Bytes, nicht die Autorenidentität. Katalogpakete stammen aus exakt der erklärten GitHub-Release-Datei, nicht aus beliebiger URL. Manuelle Pakete sind ZIPs mit ausschließlich manifest.json und eigenständigem panel.html; ungültige oder nicht unterstützte Pakete werden abgelehnt.

Installation benötigt keinen OpenCode-Neustart und gewährt niemals automatisch Aktivierung. Fehlgeschlagene Validierung, Konflikt oder Speicheroperation erlaubt keinen Wiederholungsversuch mit anderen Bytes. Prüfen Sie das Paket vor einer neuen Installation erneut.

Aktivieren und Geltungsbereich verstehen

  1. Kehren Sie zur Add-on-Zeile über dem Abschnitt Erweiterungen in Rechtes Panel anpassen zurück. Installierte deaktivierte Add-ons bleiben in dieser Liste.
  2. Aktivieren Sie das Kontrollkästchen zur Aktivierung. Deaktivieren Sie dasselbe Kontrollkästchen zum Abschalten.

Dieses Kontrollkästchen ist die einzige Aktivierungssteuerung: Es gibt keinen zusätzlichen Verwaltungsschalter oder fensterbezogene Sichtbarkeitssperre. Aktivierung gilt konfigurationsweit über Projekte hinweg, nicht pro Ordner. Bei Remote-Verbindung betrifft sie den Erweiterungsspeicher des Servers, nicht nur Ihr Anzeigegerät.

Der Erweiterungsspeicher ist panel-extensions/ neben der ausgewählten CodeNomad-Konfiguration. Separate Desktop-Datenprofile isolieren Erweiterungen nicht, wenn diese Profile dasselbe Konfigurationsverzeichnis verwenden. Umgekehrt erlaubt das Öffnen einer anderen Konfiguration nicht die Ausführung eines anderswo installierten Add-ons. Die Unterscheidung erläutert Desktop-Fenster und Daten.

Ein aktiviertes Panel kann bei Auswahl eingebunden werden; Ausblenden kann dessen vorübergehenden Oberflächenzustand freigeben. Deaktivieren widerruft die Aktivierung. Zurücksetzen in der Anpassung stellt nur integriertes Layout wieder her und aktiviert, deaktiviert oder deinstalliert keine Erweiterungen.

Ersetzen oder entfernen

  1. Verwenden Sie Version ändern… oder prüfen Sie eine andere ZIP mit derselben ID zum Ersetzen eines installierten Pakets.
  2. Prüfen Sie neuen Digest und Berechtigungen, bestätigen Sie Vertrauen und installieren Sie deaktiviert.
  3. Reaktivieren Sie über das normale Kontrollkästchen erst nach Ihrer Entscheidung, dem Ersatz zu vertrauen.
  4. Verwenden Sie zum Deinstallieren Entfernen… und Entfernen bestätigen nach Zielprüfung.

Jeder Ersatz widerruft die Aktivierung in allen Projekten, selbst bei unveränderter Berechtigungsliste. Validierungs-/Konflikt-/Speicherfehler erhalten das installierte Paket. Es gibt keine stillen Erweiterungsupdates. Entfernen löscht Paket und Aktivierungseinstellungen, keine OpenCode-Sitzungen oder Projektdateien. Deaktivieren Sie unerwünschten Code zur Wiederherstellung zuerst; installieren Sie nur ein überprüftes vertrauenswürdiges Paket erneut.

Kontext, Asset-Zustimmung und Sandbox-Grenzen

Vertrag Was Aktivierung erlaubt
API 1 / session.context Aktuelle Sitzungskennung (oder keine), Oberflächensprache und Darstellung. Kein Verlaufstext oder Dateisystemzugriff.
API 2 / session.assets.read plus Kontext Ausdrücklich geprüfte Berechtigung, begrenzte Bild-/Anhangsmetadaten aktueller Sitzungs-Werkzeugergebnisse aufzulisten und unterstützte eingebettete Bytes zu lesen. Kein allgemeiner Verlaufs-, Datei- oder URL-Zugriff.

Asset-Zugriff folgt dem aktuell eingebundenen Host/der Sitzung, nicht einer vom Autor ausgewählten Sitzung. Lokale/entfernte Referenzen können als nicht verfügbar erscheinen; die Asset-API lädt keine beliebigen entfernten URLs und öffnet keine lokalen Dateien. Sitzungswechsel, Trennung oder Zustimmungswiderruf macht alten Zugriff ungültig.

Autorencode läuft in einem eingeschränkten iframe, nicht im vertrauenswürdigen Anwendungsrenderer. Er erhält keine native/OpenCode-Brücke, Zugangsdatenzugriff, allgemeines RPC, Formulare, Popups oder Downloads; Netzwerk-APIs und externe Ressourcen sind beschränkt. Erweiterungen sind UI-Add-ons, keine OpenCode-Plugins.

Die Sandbox ist keine Prozess-/CPU-Isolation und kein Versprechen harmlosen genehmigten Codes. Eine bösartige Erweiterung kann ihren Renderer stören. Installieren Sie nur vertrauenswürdige Autoren, geben Sie keine Geheimnisse an und deaktivieren/entfernen Sie Add-ons bei unerwartetem Verhalten.