4.1 KiB
4.1 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| plugin-soft-refresh-and-agent-install-tools-delivered | memory note plugin-soft-refresh-and-agent-install-tools-delivered |
|
Plugin soft refresh et tools agent-facing livrés
Le ticket #279 a livré sur develop le flux plugins sans redémarrage applicatif quand un soft refresh UI suffit.
Contrat livré
- Nouveau tool MCP agent-facing
idea_plugin_install_from_directory({ path, expectedPluginId? }). - Le tool réutilise l’installation depuis dossier existante côté application.
- Le chemin fourni par l’agent est résolu relativement au project root du requester, ou accepté en absolu seulement s’il reste sous ce project root après canonicalization.
- Rejets couverts : chemin hors project root, fichier au lieu de dossier, symlink sortant, manifest absent/id invalide, mismatch
expectedPluginId. - Tool classé
WriteAction, masqué/refusé sans permission explicite. - Installation depuis dossier renvoie
restartRequired: falsequand le soft refresh suffit et publiePluginInstalled. idea_plugin_reload({ pluginId, expectedContentHash? })reste le tool canonique pour hot reload d’un plugin déjà installé depuis sa source enregistrée ; il resteWriteActionet publiePluginReloaded.
Contrat frontend
PluginRuntimeProvidern’est plus un bootstrap one-shot : il écoutepluginInstalledetpluginReloaded.- Sur événement, il relit
plugin.listRuntimeContributions()et reconstruit unPluginRuntimeRegistryvialoadPlugins. - Le refresh remplace uniquement le contexte plugin ; il ne fait pas
window.location.reload(), ne remonte pasApp/ProjectsView, ne ferme pas les fenêtres, ne coupe pas les agents, terminaux, PTY, conversations ou background tasks. - Les layouts
customPluginLayoutrestent en place et retrouvent leur contribution parproviderPluginId/layoutId. - Si une contribution disparaît ou échoue, le fallback existant est conservé sans supprimer la cellule.
- Les fenêtres secondaires qui montent leur propre
PluginRuntimeProviderbénéficient du même mécanisme.
Commits
979965a—feat(plugins): idea_plugin_install_from_directory + reload couvrant le refresh UI — backend #27944dc677—feat(plugins): soft refresh UI des contributions après install/reload — frontend #2790b709b9— merge local versdevelop3ff6208— sync tickets #278/#279
QA
QA verte :
cargo fmt --all --checkgit diff --checkcargo test -p infrastructure --test mcp_server -- --nocapture— 39 OKcargo test -p infrastructure --test plugin_install_load -- --nocapture— 5 OKcargo test -p backend plugin_directory_resolution -- --nocapture— 4 OKcargo test -p application plugin -- --nocapture— vert, incluant install soft-refresh, mismatch id, reload/hash/reconcilecargo test -p application open_plugin_layout_window -- --nocapture— 2 OKcargo test -p application restore_open_windows -- --nocapture— 2 OKcd frontend && npm run typecheckcd frontend && npm test -- --run src/features/plugins/PluginRuntimeProvider.test.tsx src/features/plugins/plugins.test.tsx— 13 OKcd frontend && npm test -- --run src/features/plugins/PluginLayoutCellView.test.tsx src/features/projects/pluginGitRepository.test.tsx src/features/layout/layoutTabsGitGraph.test.tsx src/features/agents/CustomAgentChatView.test.tsx— 78 OK
AppImage
Rebuild AppImage effectué après merge avec le skill build-appimage :
npm --prefix frontend run build— OK- 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— OK
Artefact produit : /home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 114M, généré le 2026-09-08 à 13:11.
Limite live
L’AppImage installée n’a pas été remplacée et IdeA n’a pas été relancé pendant le cycle, afin de ne pas tuer l’orchestrateur actif. Pour rendre le correctif actif dans l’application courante, remplacer l’AppImage installée puis relancer IdeA quand l’utilisateur est prêt.