[{"data":1,"prerenderedAt":49},["ShallowReactive",2],{"doc:fr:plugins\u002Ffaq":3},{"title":4,"lede":5,"html":6,"headings":7},"FAQ des plugins","Les questions qui reviennent sur les plugins, pour ceux qui les installent comme pour ceux qui les écrivent, avec un renvoi vers la page qui détaille chaque réponse.","\u003Ch2 id=\"pour-l-utilisateur\">Pour l’utilisateur\u003C\u002Fh2>\n\u003Ch3 id=\"faut-il-node-pour-faire-tourner-un-plugin\">Faut-il Node pour faire tourner un plugin ?\u003C\u002Fh3>\n\u003Cp>Non : un plugin du store tourne dans l’app, en WASM, qu’il soit écrit en TypeScript (\u003Ccode class=\"key\">run.js\u003C\u002Fcode>) ou en Rust (\u003Ccode class=\"key\">run.wasm\u003C\u002Fcode>). Seul un plugin installé depuis un dossier ou un dépôt git dont la commande nomme \u003Ccode class=\"key\">node\u003C\u002Fcode> en a besoin ; le store refuse cette forme. Slack et Règles de l’équipe, deux des \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Fexamples\u002F\">plugins d’exemple\u003C\u002Fa>, tournent en \u003Ccode class=\"key\">run.js\u003C\u002Fcode> depuis leur 2.0.0.\u003C\u002Fp>\n\u003Ch3 id=\"verifie-par-escouade-non-verifie-quelle-difference\">« Vérifié par Escouade », « Non vérifié » : quelle différence ?\u003C\u002Fh3>\n\u003Cp>Une version vérifiée a été relue par Escouade et signée ; l’app vérifie la signature elle-même, sans faire confiance au store. Une version non vérifiée a passé les contrôles automatiques du store, mais personne n’a lu son code ; un plugin installé depuis un dossier ou un dépôt git l’est toujours. Voir \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Fsecurity\u002F\">la sécurité des plugins\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"un-plugin-peut-il-voir-mes-projets-prives\">Un plugin peut-il voir mes projets privés ?\u003C\u002Fh3>\n\u003Cp>Pas d’office : un plugin que tu installes est coupé dans chaque projet privé, et rien de ce projet ne lui est envoyé tant que tu ne l’y allumes pas. Un programme \u003Ccode class=\"key\">run.command\u003C\u002Fcode> a cependant tes droits sur le disque (voir \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Fpermissions\u002F\">les permissions\u003C\u002Fa>). Les plugins livrés avec Escouade, eux, y sont actifs, comme le reste de l’app.\u003C\u002Fp>\n\u003Ch3 id=\"comment-arreter-un-plugin-qui-fait-quelque-chose-que-je-ne-veux-pas\">Comment arrêter un plugin qui fait quelque chose que je ne veux pas ?\u003C\u002Fh3>\n\u003Cp>Son interrupteur, dans la vue Plugins, l’arrête pour toute l’app ; son onglet Projets, pour un projet ; son onglet Permissions retire une permission seule. Son journal dit ce qu’il a fait. Un plugin livré avec Escouade se coupe de la même façon.\u003C\u002Fp>\n\u003Ch3 id=\"un-projet-peut-il-installer-un-plugin-a-ma-place\">Un projet peut-il installer un plugin à ma place ?\u003C\u002Fh3>\n\u003Cp>Non. Son \u003Ccode class=\"key\">.escouade.yml\u003C\u002Fcode> peut en proposer (\u003Ccode class=\"key\">plugins.recommended\u003C\u002Fcode>) : Réglages › Projets les montre, et l’installation passe toujours par la fenêtre qui dit ses permissions (voir \u003Ca href=\"\u002Fdocs\u002Fescouade-yml\u002F#plugins\">\u003Ccode class=\"key\">.escouade.yml\u003C\u002Fcode>\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch3 id=\"ou-sont-ses-donnees\">Où sont ses données ?\u003C\u002Fh3>\n\u003Cp>Sa copie dans \u003Ccode>~\u002F.escouade\u002Fplugins\u002F&lt;id&gt;\u002F\u003C\u002Fcode>, la liste des plugins dans \u003Ccode>~\u002F.escouade\u002Fplugins.json\u003C\u002Fcode>, son journal dans \u003Ccode>~\u002F.escouade\u002Fplugin-logs\u002F&lt;id&gt;.log\u003C\u002Fcode>, ses secrets dans le trousseau du système (voir \u003Ca href=\"\u002Fdocs\u002Fdata\u002F\">les données locales\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch2 id=\"pour-l-auteur\">Pour l’auteur\u003C\u002Fh2>\n\u003Ch3 id=\"dans-quel-langage-ecrire-un-plugin\">Dans quel langage écrire un plugin ?\u003C\u002Fh3>\n\u003Cp>Sans code, quand le manifeste suffit : un thème, des webhooks, un harness ACP. En JS ou en TypeScript avec \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Fsdk\u002F\">le SDK\u003C\u002Fa>, publié en \u003Ccode class=\"key\">run.js\u003C\u002Fcode>. En Rust avec \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Frust\u002F\">le kit\u003C\u002Fa>, publié en \u003Ccode class=\"key\">run.wasm\u003C\u002Fcode>. Le store n’accepte pas d’autre langage : le protocole reste ouvert à tout programme, mais il ne se publie pas.\u003C\u002Fp>\n\u003Ch3 id=\"comment-le-tester-sans-lancer-escouade\">Comment le tester sans lancer Escouade ?\u003C\u002Fh3>\n\u003Cp>\u003Ccode>escouade-plugin test\u003C\u002Fcode> joue le banc de conformité, \u003Ccode>escouade-plugin dev\u003C\u002Fcode> le faux Escouade, à la main ; le SDK donne un faux en mémoire pour les tests unitaires, et le kit Rust \u003Ccode class=\"key\">serve_on\u003C\u002Fcode> (voir \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Ftesting\u002F\">tester un plugin\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch3 id=\"puis-je-utiliser-dev-escouade-comme-identifiant\">Puis-je utiliser \u003Ccode class=\"key\">dev.escouade.*\u003C\u002Fcode> comme identifiant ?\u003C\u002Fh3>\n\u003Cp>Non : il est réservé aux plugins d’Escouade. Prends un nom de domaine à toi, à l’envers (\u003Ccode>io.github.&lt;ton-login&gt;.mon-plugin\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch3 id=\"peut-il-ajouter-un-panneau-ou-une-page-a-l-interface\">Peut-il ajouter un panneau ou une page à l’interface ?\u003C\u002Fh3>\n\u003Cp>Pas encore : un plugin ajoute ce que son manifeste déclare (thèmes, harness, réglages…), rendu par Escouade.\u003C\u002Fp>\n\u003Ch3 id=\"faut-il-un-compte-pour-publier\">Faut-il un compte pour publier ?\u003C\u002Fh3>\n\u003Cp>Un compte GitHub et un dépôt public : le store lit la version à son étiquette (voir \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Fpublishing\u002F\">publier sur le store\u003C\u002Fa>). Un agent peut aussi le faire pour toi, par \u003Ca href=\"\u002Fdocs\u002Fplugins\u002Fstore-mcp\u002F\">le serveur MCP du store\u003C\u002Fa>.\u003C\u002Fp>\n",[8,12,16,19,22,25,28,31,34,37,40,43,46],{"id":9,"text":10,"depth":11},"pour-l-utilisateur","Pour l’utilisateur",2,{"id":13,"text":14,"depth":15},"faut-il-node-pour-faire-tourner-un-plugin","Faut-il Node pour faire tourner un plugin ?",3,{"id":17,"text":18,"depth":15},"verifie-par-escouade-non-verifie-quelle-difference","« Vérifié par Escouade », « Non vérifié » : quelle différence ?",{"id":20,"text":21,"depth":15},"un-plugin-peut-il-voir-mes-projets-prives","Un plugin peut-il voir mes projets privés ?",{"id":23,"text":24,"depth":15},"comment-arreter-un-plugin-qui-fait-quelque-chose-que-je-ne-veux-pas","Comment arrêter un plugin qui fait quelque chose que je ne veux pas ?",{"id":26,"text":27,"depth":15},"un-projet-peut-il-installer-un-plugin-a-ma-place","Un projet peut-il installer un plugin à ma place ?",{"id":29,"text":30,"depth":15},"ou-sont-ses-donnees","Où sont ses données ?",{"id":32,"text":33,"depth":11},"pour-l-auteur","Pour l’auteur",{"id":35,"text":36,"depth":15},"dans-quel-langage-ecrire-un-plugin","Dans quel langage écrire un plugin ?",{"id":38,"text":39,"depth":15},"comment-le-tester-sans-lancer-escouade","Comment le tester sans lancer Escouade ?",{"id":41,"text":42,"depth":15},"puis-je-utiliser-dev-escouade-comme-identifiant","Puis-je utiliser dev.escouade.* comme identifiant ?",{"id":44,"text":45,"depth":15},"peut-il-ajouter-un-panneau-ou-une-page-a-l-interface","Peut-il ajouter un panneau ou une page à l’interface ?",{"id":47,"text":48,"depth":15},"faut-il-un-compte-pour-publier","Faut-il un compte pour publier ?",1793889380147]