All checks were successful
CI / Lint, typecheck, test (push) Successful in 2m56s
CD / Build and push images (push) Successful in 3m11s
CD / Deploy to Test (push) Successful in 8s
CI / Auth e2e pack (push) Successful in 4m12s
CD / Smoke tests against Test (push) Successful in 1m6s
CD / Promote to Int (push) Successful in 13s
CI / Import/export fidelity gate (push) Successful in 42s
CI / Build container images (push) Has been skipped
- api: PATCH /admin/plugins/:id/mode (Site Admin) switches disabled/optional/required; new PluginPondController exposes GET /ponds/:id/plugins (effective list: required + optional-enabled, pond read access — the SPA loads it per pond), GET .../plugins/settings and PUT .../plugins/:pluginId (Pond Admin) to toggle optional plugins. Toggling a non-optional plugin is refused (plugin_not_optional). Install/uninstall/mode/toggle are audit-logged. - web: PluginManager in the admin area lists installed plugins with their declared permissions surfaced prominently (security.md), an upload control that shows validation errors, a mode switch with an impact hint, and a link to the sandbox preview. PondPluginSettings adds a per-pond optional-plugin toggle section to pond settings. - shared: PondPluginSetting, mode/toggle input schemas, plugin_not_optional error code + de/en messages, plugins i18n (admin/mode/pond). - tests: api db test covers mode switching, per-pond activation, the required-everywhere and disabled-nowhere propagation, and the not-optional guard; e2e plugin-admin pack drives the admin list, permission display, mode switch, and pond toggle end to end. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
44 lines
1.5 KiB
JSON
44 lines
1.5 KiB
JSON
{
|
|
"frame": {
|
|
"loading": "Plugin wird geladen …",
|
|
"failed": "Das Plugin „{{name}}“ konnte nicht geladen werden."
|
|
},
|
|
"preview": {
|
|
"loading": "Plugins werden geladen …",
|
|
"loadFailed": "Die Plugin-Liste konnte nicht geladen werden.",
|
|
"notFound": "Dieses Plugin ist nicht installiert.",
|
|
"title": "Vorschau: {{name}}",
|
|
"permissions": "Angeforderte Berechtigungen",
|
|
"noPermissions": "Dieses Plugin fordert keine Berechtigungen an.",
|
|
"surface": "Oberfläche",
|
|
"noSurfaces": "Dieses Plugin stellt keine Oberflächen bereit."
|
|
},
|
|
"admin": {
|
|
"title": "Plugins",
|
|
"intro": "Installierte Plugins laufen isoliert (Sandbox). Prüfe die angeforderten Berechtigungen, bevor du ein Plugin aktivierst.",
|
|
"upload": "Plugin hochladen (.zip)",
|
|
"empty": "Noch keine Plugins installiert.",
|
|
"permissions": "Berechtigungen",
|
|
"noPermissions": "keine",
|
|
"mode": "Modus",
|
|
"preview": "Vorschau",
|
|
"uninstall": "Deinstallieren",
|
|
"requiredLocked": "Ein erforderliches Plugin kann nicht deinstalliert werden."
|
|
},
|
|
"mode": {
|
|
"disabled": "Deaktiviert",
|
|
"optional": "Optional",
|
|
"required": "Erforderlich",
|
|
"hint": {
|
|
"disabled": "Installiert, aber überall inaktiv.",
|
|
"optional": "Teich-Admins können es pro Teich aktivieren.",
|
|
"required": "In jedem Teich immer aktiv."
|
|
}
|
|
},
|
|
"pond": {
|
|
"title": "Plugins",
|
|
"hint": "Aktiviere optionale Plugins für diesen Teich.",
|
|
"empty": "Es sind keine optionalen Plugins verfügbar."
|
|
}
|
|
}
|