feat: #61 Plugin system — backend API, sandboxed Web Worker, hooks wired to real app flow, user guide, 47+21 tests
CI / lint (push) Failing after 30s
CI / test (push) Skipped
CI / build (push) Skipped
CI / e2e (push) Skipped
CI / security (push) Successful in 35s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s

This commit is contained in:
2026-09-10 09:01:38 -04:00
parent ac16fc1f0e
commit 30f2df3004
19 changed files with 2436 additions and 41 deletions
+32 -2
View File
@@ -460,6 +460,7 @@
"config.section_watcher": "Synchronisation automatique",
"config.section_webhooks": "🪝 Webhooks",
"config.section_push": "🔔 Notifications push",
"config.section_plugins": "🧩 Plugins",
"config.section_workflow-recommande": "Workflow recommandé",
"config.section_zone-de-contenu": "Zone de contenu",
"config.server_config": "Configuration serveur",
@@ -486,6 +487,8 @@
"config.webhook_url_placeholder": "URL",
"config.webhooks": "Webhooks",
"config.webhooks_desc": "Notifications HTTP vers des services externes lors des changements de fichiers.",
"config.plugins": "Plugins",
"config.plugins_desc": "Gérer les plugins installés pour ce vault.",
"config.workers_label": "Workers de recherche",
"confirm.delete_dir": "Supprimer ce dossier et tout son contenu ?",
"confirm.delete_dir_named": "Supprimer \"{path}\" et TOUT son contenu ?",
@@ -1072,6 +1075,7 @@
"help.nav_tags": "🏷️ Tags",
"help.nav_tips": "💡 Astuces",
"help.nav_webhooks": "🪝 Webhooks",
"help.nav_plugins": "🧩 Plugins",
"help.new_file": "Nouveau fichier",
"help.new_folder": "Nouveau dossier",
"help.nights": "nuits blanches 😅",
@@ -1338,6 +1342,7 @@
"settings.search_placeholder": "Rechercher...",
"settings.sync": "🔄 Synchronisation",
"settings.themes": "🎨 Thèmes",
"settings.plugins": "🧩 Plugins",
"share.copied": "Lien copié !",
"share.copy_link": "Copier le lien",
"share.create": "Créer un lien de partage",
@@ -1614,5 +1619,30 @@
"mfa.webauthn_prompt": "Présentez votre clé de sécurité ou confirmez avec Windows Hello.",
"mfa.webauthn_btn": "Valider avec ma clé",
"mfa.webauthn_cancelled": "Cérémonie WebAuthn annulée.",
"mfa.webauthn_no_key": "Aucune clé de sécurité enregistrée pour ce compte."
}
"mfa.webauthn_no_key": "Aucune clé de sécurité enregistrée pour ce compte.",
"plugins.title": "🧩 Plugins",
"plugins.description": "Étendez ObsiGate avec des renderers personnalisés, filtres de recherche et actions d'éditeur.",
"plugins.install": "Installer le plugin",
"plugins.template": "Voir le modèle",
"plugins.none": "Aucun plugin installé.",
"plugins.manifest_json": "Manifeste (plugin.json)",
"plugins.code": "Code du plugin (fichier principal)",
"plugins.view_code": "Voir le code",
"plugins.uninstall": "Désinstaller",
"plugins.enable": "Activer",
"plugins.disable": "Désactiver",
"plugins.enabled": "Plugin '{name}' activé.",
"plugins.disabled": "Plugin '{name}' désactivé.",
"plugins.installed": "Plugin '{name}' installé avec succès.",
"plugins.uninstalled": "Plugin '{name}' désinstallé.",
"plugins.confirm_uninstall": "Désinstaller le plugin '{name}' ? Cette action est irréversible.",
"help.plugins_title": "🧩 Plugins",
"help.plugins_intro": "ObsiGate supporte un système de plugins pour étendre ses fonctionnalités. Les plugins peuvent ajouter des renderers personnalisés, des filtres de recherche, des actions d'éditeur, et des éléments d'interface.",
"help.plugins_install": "Installation",
"help.plugins_manage": "Gestion",
"help.plugins_develop": "Développement",
"help.plugins_dev_intro": "Un plugin est un dossier ou ZIP contenant :",
"help.plugins_hooks_desc": "Hooks disponibles : <code>onFileRender</code>, <code>onSearchFilter</code>, <code>onEditorAction</code>, <code>onSidebarItem</code>, <code>onFileCreate</code>, <code>onFileDelete</code>, <code>onVaultMount</code>.",
"help.plugins_security": "<strong>Sécurité :</strong> chaque plugin s'exécute dans un Web Worker isolé (sandbox), sans accès au DOM, localStorage, ni réseau sauf permissions explicites.",
"help.plugins_template": "Utilisez le bouton <strong>Template</strong> dans Paramètres > Plugins pour générer un plugin starter valide."
}