Requalification Architect du 2026-08-01: le crash INTERFACE INTERROMPUE au chargement d'un plugin (menu + item) remonte via ProjectsView -> usePluginMenus -> MenuBar jusqu'à RootErrorBoundary, quel que soit le plugin (ancien ou reconstruit via SDK). - usePluginMenus isole la résolution/conversion des contributions plugin : toute erreur retombe sur [] au lieu de propager. - ProjectsView sépare les menus natifs des menus enrichis par plugin et rend MenuBar derrière une error boundary locale (fallback menus natifs seuls). - hello-plugin (SDK) et les tests d'installation associés durcis en cohérence. Bookkeeping ticket #120 uniquement (issue.md, carnet.md) ; les fichiers counter.json/index.json et le dossier tickets/122/ restent hors commit car une collision de numérotation #122 existe entre cette base et feature/ticket120-hello-plugin-install-path-audit (deux tickets différents revendiquent #122) — à arbitrer avant de committer le bookkeeping global. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #120 | 5 |
|
1785592705452 |
Carnet de suivi — hello-plugin
Etat courant
- Ticket canonique:
#120 - Date de rechute confirmee: 2026-08-01
- Statut: investigation relancee sur rechute reelle post-rebuild SDK
- Severite: critique (l'UI d'IdeA tombe sur une erreur d'affichage lors de l'installation/chargement de
hello-plugin)
Constat central au 2026-08-01
Le probleme persiste meme apres reconstruction de hello-plugin comme plugin d'exemple 100% SDK.
Implication forte:
- la cause racine est probablement dans le systeme plugin / runtime frontend / chargement UI / integration layout-menu, et non dans l'ancien exemple
hello-pluginuniquement.
Trace utilisateur fournie le 2026-08-01
Message visible:
IdeA a rencontre une erreur d'affichage.L'application reste ouverte. Rechargez la fenetre apres avoir copie le diagnostic si le probleme doit etre investigue.
Stack affichee:
kT@tauri://localhost/assets/index-CXNCu-GC.js:88:32937
ST@tauri://localhost/assets/index-CXNCu-GC.js:88:31877
om@tauri://localhost/assets/index-CXNCu-GC.js:38:17019
oh@tauri://localhost/assets/index-CXNCu-GC.js:40:3141
$b@tauri://localhost/assets/index-CXNCu-GC.js:40:39779
SC@tauri://localhost/assets/index-CXNCu-GC.js:40:39707
sc@tauri://localhost/assets/index-CXNCu-GC.js:40:39559
yh@tauri://localhost/assets/index-CXNCu-GC.js:40:35923
Ob@tauri://localhost/assets/index-CXNCu-GC.js:40:34872
E@tauri://localhost/assets/index-CXNCu-GC.js:25:1541
L@tauri://localhost/assets/index-CXNCu-GC.js:25:1903
ST@tauri://localhost/assets/index-CXNCu-GC.js:88:28096
div
div
div
ID@tauri://localhost/assets/index-CXNCu-GC.js:94:63541
main
div
div
G4@tauri://localhost/assets/index-CXNCu-GC.js:129:18236
div
div
_T@tauri://localhost/assets/index-CXNCu-GC.js:88:24675
BP@tauri://localhost/assets/index-CXNCu-GC.js:88:1862
ez@tauri://localhost/assets/index-CXNCu-GC.js:129:31272
mP@tauri://localhost/assets/index-CXNCu-GC.js:82:27658
Iz@tauri://localhost/assets/index-CXNCu-GC.js:129:83025
Faits etablis avant cette rechute
- Un rebuild SDK de
hello-plugina ete realise pour produire un plugin d'exemple minimal mais fonctionnel. - Des verifications de build, packaging et tests locaux ont ete annoncees vertes par DevFrontend.
- QA avait pu valider partiellement:
- l'artefact SDK se reconstruit
- le plugin s'installe cote runtime/backend
- IdeA charge reellement le bundle plugin via
idea-plugin://.../dist/index.js
- QA n'avait pas pu valider de bout en bout la surface UI visible (menu
Hello Plugin, entreehello-plugin, renduhello-world) faute d'une session UI observable sans ambiguite.
Reinterpretation apres rechute utilisateur
- L'absence de validation UI de bout en bout n'etait pas un detail: la rechute utilisateur montre que le crash survient bien dans le flux reel d'affichage, malgre un plugin reconstruit proprement.
- Le signal pointe desormais plus fortement vers un probleme dans la consommation frontend des contributions plugin que vers le contenu fonctionnel du plugin lui-meme.
Requalification Architect du 2026-08-01
- Fait cle: le meme hash de crash apparait avec deux plugins differents:
- ancien hello-plugin minimal (menu + item, sans layout utile)
- nouveau hello-plugin reconstruit via SDK (menu + item + layout)
- Denominateur commun probable: la contribution de menu, pas le layout.
- Zone la plus suspecte identifiee:
ProjectsView.tsxsur l'injection depluginMenusdans<MenuBar>. - Point precis: le rendu des menus plugin est consomme dans l'app-shell sans isolation locale equivalente a celle deja ajoutee pour
PluginLayoutCellView. - Hypothese prioritaire: une entree de menu plugin ou son rendu dans
MenuBarleve une erreur qui remonte jusqu'aRootErrorBoundary, produisantINTERFACE INTERROMPUE.
Correctif systeme plugin/UI par DevFrontend
Cause probable retenue
Deux plugins differents declenchent le meme crash minifie apres installation. Le denominateur commun le plus probable est le chemin ProjectsView -> usePluginMenus -> MenuBar.
Correctif applique
usePluginMenusisole defensivement la resolution/conversion des contributions plugin.- Si la resolution de menus ou d'items plugin throw, le hook renvoie
[]pour la surface plugin concernee au lieu de propager l'erreur. ProjectsViewsepare les menus natifs des menus enrichis par plugin.ProjectsViewrendMenuBarderriere une error boundary locale: si le rendu enrichi plante, fallback immediat sur les menus natifs seuls.- Logs ajoutes:
[plugins] menu contribution rejectedavec le contexte utile quand disponible[plugins] menu render failed; using native menus only
Fichiers touches
frontend/src/features/plugins/usePluginMenus.tsfrontend/src/features/plugins/usePluginMenus.test.tsxfrontend/src/features/projects/ProjectsView.tsx
Verifications annoncees par DevFrontend
cd frontend && npm run typecheck: OKcd frontend && npx vitest run src/features/plugins/usePluginMenus.test.tsx src/features/plugins/menus.test.ts src/plugins/runtime/loader.test.ts src/features/projects/projects.test.tsx src/features/projects/pluginGitRepository.test.tsx src/shared/ui/FloatingWindow.test.tsx: OK, 48 testscd frontend && npm test: OK, 114 fichiers, 1046 tests
Prochaine etape
- QA doit valider sur le flux reel d'installation du plugin si l'UI reste vivante et si les menus natifs sont conserves en fallback au lieu de tomber sur
INTERFACE INTERROMPUE.