dorfteich/packages/shared/i18n/en/plugins.json
Claude Fable 5 46292c7447
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
Add plugin administration UI: instance modes and pond activation (#72)
- 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
2026-07-11 09:32:16 +02:00

44 lines
1.3 KiB
JSON

{
"frame": {
"loading": "Loading plugin …",
"failed": "The plugin “{{name}}” could not be loaded."
},
"preview": {
"loading": "Loading plugins …",
"loadFailed": "The plugin list could not be loaded.",
"notFound": "This plugin is not installed.",
"title": "Preview: {{name}}",
"permissions": "Requested permissions",
"noPermissions": "This plugin requests no permissions.",
"surface": "Surface",
"noSurfaces": "This plugin provides no surfaces."
},
"admin": {
"title": "Plugins",
"intro": "Installed plugins run sandboxed. Review the permissions a plugin requests before enabling it.",
"upload": "Upload plugin (.zip)",
"empty": "No plugins installed yet.",
"permissions": "Permissions",
"noPermissions": "none",
"mode": "Mode",
"preview": "Preview",
"uninstall": "Uninstall",
"requiredLocked": "A required plugin cannot be uninstalled."
},
"mode": {
"disabled": "Disabled",
"optional": "Optional",
"required": "Required",
"hint": {
"disabled": "Installed but inactive everywhere.",
"optional": "Pond Admins can enable it per pond.",
"required": "Always active in every pond."
}
},
"pond": {
"title": "Plugins",
"hint": "Enable optional plugins for this pond.",
"empty": "No optional plugins are available."
}
}