9.1 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #285 | 8 |
|
1788885132878 |
2026-09-08 - Clarification SDK pluginRoot
Demande issue de Main UnityPlugin ticket #8 : verifier si un plugin runtime peut resoudre son package/plugin root depuis activate(ctx) pour lancer un script packagé via ctx.services.tasks.runCommand().
Constat Architect : non, aucune API publique runtime n'expose aujourd'hui pluginRoot/package root/archive root/file URL exploitable. workspace.getProjectRoot() et tasks.runCommand().cwd sont bornes au project root. ${pluginRoot} / ${appDataDir} existent cote host uniquement pour les contributes.mcpServers declares dans le manifest.
Docs modifiees dans le submodule sdk/IdeaSDK sur branche feature/285-plugin-root-scope-docs :
docs/activation-context.md: absence explicite de plugin install dir/package root et correction de la liste des champs publics.docs/services.md:runCommand()project/workspace scoped, pas de resolution package-relative.docs/commands-and-feedback.md: precondition + contre-exemple pour scripts packagés.docs/manifest.md: sectionMCP Server Paths, substitution limitee aux serveurs MCP declares.
QA : VERT. Commandes reelles executees dans sdk/IdeaSDK : git status --short --branch, git diff -- ..., rg -n ..., npm run, npm run check. npm run check a execute build, typecheck:examples, package:hello-plugin et a cree l'archive hello-plugin attendue sans fichier modifie hors docs.
Git : commits locaux dans le submodule sdk/IdeaSDK : 5f9c2f9 (docs(sdk): clarify pluginRoot scope for runtime plugins — #285) puis merge local 68019de sur develop. Pas de push. Le pointeur du depot parent est volontairement laisse sur 7db819c et le submodule reparké dessus pour eviter de melanger avec le travail #284 en cours ; le bump sera fait plus tard par Git avec le sync local approprie. L'utilisateur UnityPlugin peut reprendre/mettre a jour le sous-module vers 68019de.
Risque residuel : validation documentaire uniquement, pas de test runtime host sur la substitution ${pluginRoot} des MCP servers. Docs-only, pas de rebuild AppImage requis.
2026-09-08 - API runtime officielle ctx.pluginRoot
Le constat documentaire precedent est remplace par une implementation runtime : le catalogue host projette la racine canonique du package installe actif, le DTO la transporte sous pluginRoot, et le loader l'injecte dans activate(ctx). Le SDK expose ce champ obligatoire dans ActivateContext. L'exemple hello-plugin execute un script inclus dans son archive en construisant son chemin depuis ctx.pluginRoot.
Fichiers modifies dans le depot parent :
crates/domain/src/ports.rscrates/infrastructure/src/plugin/mod.rscrates/infrastructure/tests/plugin_install_load.rscrates/application/src/plugin/mod.rscrates/application/src/slash_command.rscrates/backend/src/dto.rscrates/app-tauri/tests/dto_plugins.rsfrontend/src/domain/index.tsfrontend/src/plugins/runtime/loader.tsfrontend/src/plugins/runtime/loader.test.tsfrontend/src/features/plugins/PluginRuntimeProvider.test.tsxfrontend/src/features/plugins/plugins.test.tsx
Fichiers modifies dans le submodule sdk/IdeaSDK :
src/runtime.tsdocs/activation-context.mddocs/commands-and-feedback.mddocs/manifest.mddocs/services.mdexamples/hello-plugin/README.mdexamples/hello-plugin/src/core/workspace.tsexamples/hello-plugin/scripts/hello-task.mjs(nouveau)scripts/package-hello-plugin.mjs
Commandes reelles et resultats :
cargo fmt --all: succes.cargo check -p domain -p application -p infrastructure -p backend -p app-tauri --lib: succes.cargo test -p application runtime_catalog_ --lib: 5 passes, 0 echec.cargo test -p infrastructure --test plugin_install_load: 5 passes, 0 echec.cargo test -p app-tauri --test dto_plugins: 2 passes, 0 echec.npm run checkdanssdk/IdeaSDK: succes (build,typecheck:examples,package:hello-plugin) ; archive hello-plugin creee.npm run typecheckdansfrontend: succes.npm test -- --run src/plugins/runtime/loader.test.ts src/features/plugins/PluginRuntimeProvider.test.tsx src/features/plugins/plugins.test.tsxdansfrontend: 3 fichiers, 33 tests passes, 0 echec.
Reserves :
- Aucun test end-to-end avec chargement dans l'AppImage en cours d'execution ; les validations couvrent les frontieres store/catalogue/DTO/loader et le packaging SDK.
- Les avertissements Vite sur les options
esbuilddepreciees sont preexistants et non bloquants. - Aucun commit, push, bump ou merge du submodule effectue dans ce lot.
2026-09-08 - QA indépendante API ctx.pluginRoot
Validation QA indépendante effectuée sur la branche parent feature/285-plugin-root-runtime-api et le submodule sdk/IdeaSDK également sur feature/285-plugin-root-runtime-api, sans commit ni action distante.
Diffs relus/identifiés :
- Parent :
PluginPackageStore::installed_plugin_root, implémentation FS canonique, propagationPluginRuntimePlugin.plugin_root, DTO backendpluginRoot, loader frontendIdeaPluginContext.pluginRoot, tests catalogue/DTO/loader. - SDK :
ActivateContext.pluginRoot, docsactivation-context,services,commands-and-feedback,manifest, exemple hello-plugin et packaging du scriptscripts/hello-task.mjs.
Commandes réelles QA :
- Parent :
git status --short --branch;git diff --name-status;git diff --stat;git diff -- crates/domain/src/ports.rs crates/infrastructure/src/plugin/mod.rs crates/application/src/plugin/mod.rs crates/backend/src/dto.rs frontend/src/domain/index.ts frontend/src/plugins/runtime/loader.ts. - SDK :
git status --short --branch;git diff --name-status;git diff --stat;git diff -- src/runtime.ts docs/activation-context.md docs/services.md docs/commands-and-feedback.md docs/manifest.md examples/hello-plugin/README.md examples/hello-plugin/src/core/workspace.ts scripts/package-hello-plugin.mjs. - Docs :
rg -n "does not expose|does not currently provide|no public runtime|there is no public runtime|Packaged scripts cannot be launched|unavailable to|package-path resolver" docs src examples scriptsdans le SDK. Aucun ancien énoncé contradictoire sur l'absence depluginRootruntime ; seul match restant : commentaire SDK générique indiquant queservicesn'expose pas les gateways internes IdeA. - SDK occurrences :
rg -n "pluginRoot|installed plugin root|installed package|hello-task|package-relative|contributes\\.mcpServers" src docs examples scripts. - Parent occurrences :
rg -n "pluginRoot|plugin_root|installed_plugin_root|runtime_catalog|missing installed plugin root" crates frontend/src. - Script packagé :
sed -n '1,160p' examples/hello-plugin/scripts/hello-task.mjs. - Rust :
cargo check -p domain -p application -p infrastructure -p backend -p app-tauri --libvert ;cargo test -p application runtime_catalog_ --lib5/5 vert ;cargo test -p infrastructure --test plugin_install_load5/5 vert ;cargo test -p app-tauri --test dto_plugins2/2 vert. - Frontend :
npm run typecheckdansfrontendvert ;npm test -- --run src/plugins/runtime/loader.test.ts src/features/plugins/PluginRuntimeProvider.test.tsx src/features/plugins/plugins.test.tsxdansfrontend3 fichiers / 33 tests verts. - SDK :
npm run checkdanssdk/IdeaSDKvert (build,typecheck:examples,package:hello-plugin) ;unzip -l examples/hello-plugin/build/hello-plugin-0.1.0.zip | rg "idea-plugin.json|dist/index.js|scripts/hello-task.mjs|README.md"confirme l'inclusion du script packagé. - Hygiène :
cargo fmt --all -- --checkvert ;git diff --checkparent vert ;git diff --checkSDK vert.
Verdict QA : VERT pour le périmètre source/test. Réserves : un rebuild AppImage puis une validation live sont nécessaires pour prouver l'usage réel de ctx.pluginRoot dans le binaire actuellement utilisé par l'application, car les tests exécutés valident les frontières source/store/catalogue/DTO/loader/SDK mais ne remplacent pas le binaire AppImage lancé. Le submodule reste dirty par ses modifications locales et le parent pointe vers ce submodule dirty ; aucun commit/bump/push/merge n'a été fait par QA.
2026-09-08 - Rebuild AppImage post-merge
Git : commits et merges locaux effectués depuis les branches feature/285-plugin-root-runtime-api — submodule 9ce3a55 + merge e3a0f46 vers develop SDK ; parent e499a0f (bump pointeur e3a0f46) + merge b681433 vers develop + sync store 270c740. Aucun push.
Main : rebuild AppImage finale exécuté depuis develop après les merges. Commandes : npm --prefix frontend run build vert ; puis depuis crates/app-tauri, CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage vert. Artefact : target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage.
Restant manuel : remplacement de l'AppImage installée + relance, puis validation live de ctx.pluginRoot (et du contact cross-project #284) dans le binaire actif — condition de clôture des tickets #284 et #285.