Add security hardening, Ghidra, recreate skill, checkpoints, shells, web search and themes

- Sandbox (bubblewrap) for non-admin shell/git, MCP per-user rights, hard budgets and quotas,
  login rate limiting, audit log and backups
- Ghidra headless decompilation (ARM64 natives built from source), binary_info tool,
  clean room / deep workflow per session
- Recreate skill and commands for analysing and re-building old software
- File checkpoints with rewind/restore, background shells (bash_output, kill_shell)
- web_search tool (DuckDuckGo, SearXNG, Brave, Tavily)
- In-app dialogs and toasts instead of browser dialogs
- 15 base themes (trilium-themes palettes plus Nord, VS Code, GitHub, Catppuccin, One,
  Dracula, Rose Pine, Everforest, Kanagawa) with light/dark/auto switcher and license notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-08 19:12:30 +01:00
1 parent fab9add5d5
commit 5b569b6835
108 files changed
+6785 -279

No files matched your search

+75 -2
View File
@@ -125,6 +125,74 @@ export const de: Messages = {
"git.noDiff": "Keine Unterschiede.",
"composer.attachedFiles": "Angehängte Dateien (im Projekt, mit deinen Tools lesen):",
"composer.uploading": "Lade {n} hoch…",
"usage.title": "Modelle und Verbrauch dieser Session",
"usage.period": "Zeitraum",
"usage.current": "aktuell",
"usage.model": "Modell",
"usage.prices": "Preise pro 1 Mio. Tokens",
"usage.usage": "Nutzung",
"usage.speed": "Geschwindigkeit",
"usage.cacheWrite": "Cache geschrieben",
"usage.contextNow": "Kontext jetzt",
"usage.totalTime": "Gesamtzeit",
"usage.inSession": "In dieser Session",
"usage.providerMonth": "Provider diesen Monat",
"usage.byAgent": "Nach Agent und Modell",
"preview.page": "Seite {n} / {total}",
"preview.openBrowser": "Im Browser öffnen",
"preview.moreRows": "{n} weitere Zeilen nicht angezeigt",
"preview.moduleHint": "Tracker-Modul – wird auf dem Server zu Audio gerendert (der erste Start kann kurz dauern).",
"activity.phrases": "Grübelt|Tüftelt|Werkelt|Brütet|Sinniert|Knobelt|Schmiedet|Rätselt|Zaubert|Bastelt|Puzzelt|Feilt|Köchelt|Hirnt|Fummelt|Sortiert Gedanken|Dreht Schrauben|Entwirrt|Klamüsert|Ausbaldowert|Fuchst sich rein|Wuselt|Tüftelt weiter|Kalibriert",
"activity.prefill": "Prefill",
"activity.generated": "generiert",
"activity.prefilling": "liest Prompt…",
"mcp.users": "Erlaubte Benutzer",
"mcp.usersPlaceholder": "nur Admins",
"mcp.usersHint": "Benutzernamen mit Komma getrennt oder * für alle. Admins haben immer Zugriff.",
"settings.budgetAction": "Wenn ein Budget aufgebraucht ist",
"settings.budgetWarn": "Nur warnen",
"settings.budgetBlock": "Neue Anfragen blockieren",
"settings.sandbox": "Shell-Sandbox",
"settings.sandboxAuto": "Benutzer (nicht Admins)",
"settings.sandboxAlways": "Alle",
"settings.sandboxOff": "Aus",
"settings.sandboxHint": "Shell-Befehle und Git laufen in einer bubblewrap-Sandbox, in der nur die Ordner des Benutzers beschreibbar sind.",
"users.quota": "Monatskontingent",
"users.quotaHint": "Monatliches Kostenlimit (leer = unbegrenzt)",
"users.quotaPrompt": "Monatliches Kostenlimit für {name} (leer = unbegrenzt):",
"settings.tab.audit": "Audit",
"audit.title": "Audit-Log",
"audit.all": "Alle Aktionen",
"audit.time": "Zeit",
"audit.action": "Aktion",
"audit.detail": "Details",
"audit.backup": "Sicherung",
"audit.backupHint": "ZIP mit der Konfiguration und einer konsistenten Kopie der Datenbank (Sessions, Benutzer, Statistik). Als ${VAR} referenzierte Secrets sind nicht enthalten.",
"audit.download": "Sicherung herunterladen",
"craft.mode": "Craft-Modus",
"craft.modeHint": "Clean Room: nur, was ein Benutzer sieht. Deep: auch Seitenquelltext und Programme (Ghidra) – zum Nachbilden, nicht zum Kopieren.",
"craft.cleanRoom": "Clean Room",
"craft.deep": "Deep",
"settings.tab.tools": "Werkzeuge",
"tools.installed": "installiert",
"tools.install": "Ghidra installieren",
"tools.reinstall": "Installation prüfen / reparieren",
"tools.installing": "Installiere (Download ca. 800 MB, auf ARM wird der Dekompiler kompiliert – das dauert einige Minuten)…",
"tools.ghidraHint": "Mit Ghidra können Agenten im Craft-Deep-Modus Programme dekompilieren (Windows .exe/.dll, Linux, DOS …), um zu verstehen, wie sie funktionieren. Wird samt eigenem JDK ins Daten-Volume installiert.",
"rewind.intro": "Die Unterhaltung wird auf den Stand vor dieser Nachricht zurückgesetzt; du kannst sie bearbeiten und neu senden.",
"rewind.noFiles": "Der Agent hat seitdem keine Dateien geändert.",
"rewind.restore": "Auch die {n} vom Agenten geänderte(n) Datei(en) zurücksetzen",
"rewind.willDelete": "wird gelöscht (neu)",
"rewind.bashNote": "Änderungen durch Shell-Befehle (z. B. installierte Pakete) werden nicht zurückgesetzt.",
"rewind.confirm": "Zurückspulen",
"files.discard": "Verwerfen",
"files.overwrite": "Überschreiben",
"shells.title": "Hintergrund-Shells",
"shells.chip": "{n}/{total} Shells",
"shells.running": "läuft",
"shells.exited": "beendet ({code})",
"shells.stop": "Stoppen",
"shells.noOutput": "(noch keine Ausgabe)",
"login.prompt": "Melde dich an, um fortzufahren.",
"login.invalid": "Ungültiges Token.",
"login.submit": "Anmelden",
@@ -173,7 +241,6 @@ export const de: Messages = {
"chat.statsHint": "Tokens und Kosten dieser Session (Klick für Details)",
"chat.renameHint": "Doppelklick zum Umbenennen",
"chat.rewind": "Ab hier bearbeiten und neu senden",
"chat.rewindConfirm": "Diese Nachricht und alles danach entfernen? Dateiänderungen werden nicht rückgängig gemacht.",
"chat.delete": "Session löschen",
"chat.deleteConfirm": "Diese Session inklusive Subagenten löschen? Die Statistik bleibt erhalten.",
@@ -231,7 +298,12 @@ export const de: Messages = {
"settings.interface": "Oberfläche (dieses Gerät)",
"settings.language": "Sprache",
"settings.theme": "Design",
"settings.themeSystem": "System",
"settings.themeMode": "Modus",
"settings.themeAuto": "Auto",
"settings.themeLight": "Hell",
"settings.themeDark": "Dunkel",
"settings.themeSource": "Farben: {source} ({license})",
"settings.themeToggle": "Hell/Dunkel/Auto umschalten",
"settings.notifications": "Benachrichtigungen",
"settings.notificationsEnable": "Aktivieren",
"settings.notificationsOn": "Aktiv",
@@ -353,6 +425,7 @@ export const de: Messages = {
"stats.other": "Sonstige",
"stats.noData": "Keine Anfragen in diesem Zeitraum.",
"common.ok": "OK",
"common.cancel": "Abbrechen",
"nav.logout": "Abmelden",
"login.username": "Benutzername",