diff --git a/.ideai/tickets/120/carnet.md b/.ideai/tickets/120/carnet.md index 97d0a74..588f887 100644 --- a/.ideai/tickets/120/carnet.md +++ b/.ideai/tickets/120/carnet.md @@ -1,14 +1,21 @@ --- issueRef: "#120" -version: 5 +version: 8 +updatedBy: {"kind":"agent","agent_id":"dce19c75-9669-4e45-b8de-9950025157da"} +updatedAt: 1785596006134 +--- +--- +issueRef: "#120" +version: 7 updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedAt: 1785592705452 +updatedAt: 1785595113109 --- # Carnet de suivi — hello-plugin ## Etat courant - Ticket canonique: `#120` +- Ticket parent historique: `#43` - 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`) @@ -26,37 +33,37 @@ 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: +Stack affichee (trace la plus recente): ```text -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-DxqF_K_z.js:88:33125 +wT@tauri://localhost/assets/index-DxqF_K_z.js:88:32065 +om@tauri://localhost/assets/index-DxqF_K_z.js:38:17019 +oh@tauri://localhost/assets/index-DxqF_K_z.js:40:3141 +Fb@tauri://localhost/assets/index-DxqF_K_z.js:40:39779 +SC@tauri://localhost/assets/index-DxqF_K_z.js:40:39707 +ic@tauri://localhost/assets/index-DxqF_K_z.js:40:39559 +yh@tauri://localhost/assets/index-DxqF_K_z.js:40:35923 +Bb@tauri://localhost/assets/index-DxqF_K_z.js:40:34872 +E@tauri://localhost/assets/index-DxqF_K_z.js:25:1541 +L@tauri://localhost/assets/index-DxqF_K_z.js:25:1903 -ST@tauri://localhost/assets/index-CXNCu-GC.js:88:28096 +wT@tauri://localhost/assets/index-DxqF_K_z.js:88:28284 div div div -ID@tauri://localhost/assets/index-CXNCu-GC.js:94:63541 +MD@tauri://localhost/assets/index-DxqF_K_z.js:94:63541 main div div -G4@tauri://localhost/assets/index-CXNCu-GC.js:129:18236 +G4@tauri://localhost/assets/index-DxqF_K_z.js:129:18726 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 +yT@tauri://localhost/assets/index-DxqF_K_z.js:88:24863 +BP@tauri://localhost/assets/index-DxqF_K_z.js:88:1862 +ez@tauri://localhost/assets/index-DxqF_K_z.js:129:31967 +mP@tauri://localhost/assets/index-DxqF_K_z.js:82:27658 +Iz@tauri://localhost/assets/index-DxqF_K_z.js:129:83720 ``` ## Faits etablis avant cette rechute @@ -74,6 +81,15 @@ Iz@tauri://localhost/assets/index-CXNCu-GC.js:129:83025 - 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. +## Cadrage UX du 2026-08-01 + +- Une contribution plugin invalide ou qui plante ne doit jamais faire tomber l'app entiere. +- Le fallback attendu est local a la surface plugin en faute: + - menu plugin en erreur -> menus natifs seuls + - layout plugin en erreur -> fallback local de layout indisponible +- `INTERFACE INTERROMPUE` doit rester reserve aux crashs shell irrecoverables. +- A terme, l'etat d'erreur plugin devrait rester visible dans la gestion des plugins plutot qu'etre seulement silencieux. + ## Requalification Architect du 2026-08-01 - Fait cle: le meme hash de crash apparait avec deux plugins differents: @@ -83,8 +99,19 @@ Iz@tauri://localhost/assets/index-CXNCu-GC.js:129:83025 - Zone la plus suspecte identifiee: `ProjectsView.tsx` sur l'injection de `pluginMenus` dans ``. - 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 `MenuBar` leve une erreur qui remonte jusqu'a `RootErrorBoundary`, produisant `INTERFACE INTERROMPUE`. +- Strate touchee: frontend prioritaire, pas de nouveau chantier backend requis pour cette cause racine. -## Correctif systeme plugin/UI par DevFrontend +## Verification DevFrontend du 2026-08-01 + +- Branche verifiee: `feature/ticket120-plugin-menu-crash-isolation` +- HEAD verifie: `5a30ec8` +- Verdict DevFrontend: le correctif existant couvre deja la rechute prioritaire sur le chemin `ProjectsView -> usePluginMenus -> MenuBar`. +- Aucun complement de code ajoute a ce stade. +- Verifications executees: + - `cd frontend && npx vitest run src/features/plugins/usePluginMenus.test.tsx src/plugins/runtime/loader.test.ts src/features/plugins/menus.test.ts` : OK (22 tests) + - `cd frontend && npx vitest run` : OK (114 fichiers, 1046 tests) + +## Correctif systeme plugin/UI deja porte par la branche ### 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`. @@ -103,11 +130,61 @@ Deux plugins differents declenchent le meme crash minifie apres installation. Le - `frontend/src/features/plugins/usePluginMenus.test.tsx` - `frontend/src/features/projects/ProjectsView.tsx` -### Verifications annoncees par DevFrontend -- `cd frontend && npm run typecheck` : OK -- `cd 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 tests -- `cd frontend && npm test` : OK, 114 fichiers, 1046 tests +## Validation QA du 2026-08-01 -## Prochaine etape +- Branche validee: `feature/ticket120-plugin-menu-crash-isolation` +- HEAD valide: `5a30ec8b9c4758602cc96e72ffd69e415422cd85` +- Verdict QA courant: bug `INTERFACE INTERROMPUE` non reproduit par les validations reelles executees ici. -- 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`. +### Commandes executees +- `git -C /home/anthony/Documents/Projects/IdeA rev-parse HEAD` +- `npm --prefix /home/anthony/Documents/Projects/IdeA/sdk/IdeaSDK run package:hello-plugin` +- `cd /home/anthony/Documents/Projects/IdeA/frontend && npx vitest run src/features/plugins/menus.test.ts src/features/plugins/usePluginMenus.test.tsx src/features/plugins/plugins.test.tsx src/plugins/runtime/loader.test.ts` +- `cargo test -p infrastructure --test plugin_install_load -- --nocapture` +- `cargo test -p infrastructure extracts_archive_without_path_escape -- --nocapture` +- `cd /home/anthony/Documents/Projects/IdeA/frontend && npm run test:bundle-transport` +- `cd /home/anthony/Documents/Projects/IdeA/crates/app-tauri && NO_STRIP=true ../../frontend/node_modules/.bin/tauri build --bundles appimage` + +### Resultats utiles +- archive SDK regeneree: `sdk/IdeaSDK/examples/hello-plugin/build/hello-plugin-0.1.0.zip` +- tests frontend cibles: OK (4 fichiers, 29 tests) +- tests backend d'installation/chargement plugin: OK (3 tests) +- AppImage rebuild: `target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` + +### Limite de preuve restante +- Pas de harness e2e UI automatise ici pour cliquer le parcours Tauri/AppImage "Installer depuis une archive..." de bout en bout. +- La validation est donc reelle sur archive SDK, backend d'installation, non-regression frontend, et artefact packagé reconstruit, mais pas sur un clic UI automatise observable. + +## Requalification Architect du 2026-08-01 (rechute post-rebuild) + +### Fait determinant trouve par inspection directe des artefacts + +Deux binaires AppImage distincts coexistent sur la machine, avec un ecart temporel et de contenu net: + +| Fichier | mtime | sha256 (8 premiers car.) | +|---|---|---| +| `/home/anthony/Documents/IdeA_0.3.0_amd64.AppImage` (celui qu'IdeA fait tourner — cf. memoire `mcp-bridge-and-delegation-runtime-notes`) | 2026-07-24 15:09 | `61d499f2` | +| `target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (rebuild QA du jour) | 2026-08-01 16:37 | `9ad50c21` | + +Le commit du correctif (`5a30ec8`, isolation `usePluginMenus`/`ProjectsView`) date du **2026-08-01 16:23:56**, soit **apres** le mtime du binaire `~/Documents`. Le binaire que l'utilisateur execute au quotidien (`~/Documents/IdeA_0.3.0_amd64.AppImage`) est donc anterieur de plusieurs jours au correctif et ne peut structurellement pas le contenir. + +### Requalification de cause racine + +- La rechute rapportee le 2026-08-01 par l'utilisateur est tres vraisemblablement un **artefact de deploiement**, pas une regression de code: le rebuild QA a produit un binaire correct dans `target/release/bundle/appimage/`, mais ce binaire n'a jamais remplace celui reellement lance par l'utilisateur (`~/Documents/IdeA_0.3.0_amd64.AppImage`). +- C'est exactement le piege deja documente en memoire projet (`mcp-bridge-and-delegation-runtime-notes`, section « Le binaire qui tourne = AppImage installee, pas les sources ») applique cette fois au correctif plugin plutot qu'au pont MCP. +- Le carnet QA ci-dessus ne mentionne a aucun moment le remplacement du binaire `~/Documents` ni le redemarrage d'IdeA sur ce binaire remplace — seule la production de l'artefact dans `target/release/bundle/` est tracee. + +### Borne de correction attendue + +- **Aucun nouveau code frontend ou backend n'est requis a ce stade.** Le correctif `5a30ec8` (isolation menus plugin) est deja en place et deja valide par tests reels (114 fichiers / 1046 tests vitest, tests backend d'installation/chargement). +- Action requise: deploiement, pas developpement — remplacer `~/Documents/IdeA_0.3.0_amd64.AppImage` par `target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (backup de l'ancien conseille, cf. convention memoire `*.old-fix`), relancer IdeA depuis ce binaire, puis reproduire exactement le parcours Parametres > Plugins > Installer depuis une archive > hello-plugin. +- Si la rechute persiste APRES ce remplacement effectif et un redemarrage complet d'IdeA, alors l'hypothese frontend doit etre rouverte avec un perimetre elargi au-dela de `ProjectsView -> usePluginMenus -> MenuBar`, en verifiant en priorite (deja inspectes le 2026-08-01, RAS a la lecture statique mais non exerces en e2e reel): + - `frontend/src/features/plugins/PluginsPanel.tsx` (flux `startInstallFromArchive` / `reviewArchive` / dialog de confirmation) — surface active au moment precis du clic « Installer » + - `frontend/src/features/plugins/PluginConfirmDialog.tsx` + - `frontend/src/features/plugins/PluginLayoutCellView.tsx` (isolation deja posee en amont de ce ticket, a re-verifier qu'elle couvre bien le layout du hello-plugin reconstruit) + - la place de `RootErrorBoundary` par rapport a ces surfaces, pour confirmer qu'aucun chemin ne la contourne + +### Prochaine etape (remplace la precedente) + +- Ne pas rouvrir de chantier de code avant d'avoir confirme que l'utilisateur reproduit sur le binaire effectivement a jour. +- Remplacement de binaire + retest = action Git/deploiement, a executer avant toute nouvelle investigation frontend. diff --git a/.ideai/tickets/120/issue.md b/.ideai/tickets/120/issue.md index da7d496..08b7818 100644 --- a/.ideai/tickets/120/issue.md +++ b/.ideai/tickets/120/issue.md @@ -5,14 +5,14 @@ title: "Réinvestiguer l’installation de hello-plugin: écran noir / perte d status: "inProgress" priority: "critical" sprint: null -links: [{"target":"#116","kind":"relatesTo"}] +links: [{"target":"#116","kind":"relatesTo"},{"target":"#43","kind":"relatesTo"}] agentRefs: [] attachments: [] createdBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} -updatedBy: {"kind":"agent","agent_id":"a6ced819-b893-4213-b003-9e9dc79b9641"} +updatedBy: {"kind":"agent","agent_id":"dce19c75-9669-4e45-b8de-9950025157da"} createdAt: 1785534496259 -updatedAt: 1785592705452 -version: 5 +updatedAt: 1785596006134 +version: 8 --- ## Constat utilisateur diff --git a/.ideai/tickets/122/carnet.md b/.ideai/tickets/122/carnet.md new file mode 100644 index 0000000..1254a05 --- /dev/null +++ b/.ideai/tickets/122/carnet.md @@ -0,0 +1,6 @@ +--- +issueRef: "#122" +version: 3 +updatedBy: {"kind":"user"} +updatedAt: 1785592528432 +--- diff --git a/.ideai/tickets/122/issue.md b/.ideai/tickets/122/issue.md new file mode 100644 index 0000000..8538665 --- /dev/null +++ b/.ideai/tickets/122/issue.md @@ -0,0 +1,17 @@ +--- +id: "fa083793-48ae-417a-ab16-3813e22df2e3" +number: 122 +title: "[Bug] Override des permissions defaut qui ne marche pas" +status: "open" +priority: "medium" +sprint: null +links: [] +agentRefs: [{"agentId":"a6ced819-b893-4213-b003-9e9dc79b9641","role":"assigned"}] +attachments: [] +createdBy: {"kind":"user"} +updatedBy: {"kind":"user"} +createdAt: 1785592422173 +updatedAt: 1785592528432 +version: 3 +--- +J'ai l'impression que l'override des permissions systeme ne fonctionne pas. J'avais les permissions par defaut qui ne donnait pas les droits bash, et meme après avoir override ce parametre sur un de mes agents, il n'avait aps acces aux tools bash. Il y a eu acces une fois qu'avais mis le droit dans la config defaut \ No newline at end of file diff --git a/.ideai/tickets/counter.json b/.ideai/tickets/counter.json index 878fe4e..c248bef 100644 --- a/.ideai/tickets/counter.json +++ b/.ideai/tickets/counter.json @@ -1,3 +1,3 @@ { - "nextNumber": 122 + "nextNumber": 123 } \ No newline at end of file diff --git a/.ideai/tickets/index.json b/.ideai/tickets/index.json index c9bc00b..edba004 100644 --- a/.ideai/tickets/index.json +++ b/.ideai/tickets/index.json @@ -1556,7 +1556,7 @@ "issueRef": "#120", "path": "120", "title": "Réinvestiguer l’installation de hello-plugin: écran noir / perte d’affichage IdeA", - "status": "open", + "status": "inProgress", "priority": "critical", "sprint": null, "assignedAgentIds": [], @@ -1564,7 +1564,7 @@ "kind": "agent", "agent_id": "a6ced819-b893-4213-b003-9e9dc79b9641" }, - "updatedAt": 1785534496259 + "updatedAt": 1785596006134 }, { "issueRef": "#121", @@ -1579,6 +1579,21 @@ "agent_id": "dce19c75-9669-4e45-b8de-9950025157da" }, "updatedAt": 1785534534027 + }, + { + "issueRef": "#122", + "path": "122", + "title": "[Bug] Override des permissions defaut qui ne marche pas", + "status": "open", + "priority": "medium", + "sprint": null, + "assignedAgentIds": [ + "a6ced819-b893-4213-b003-9e9dc79b9641" + ], + "createdBy": { + "kind": "user" + }, + "updatedAt": 1785592528432 } ] } \ No newline at end of file