chore(tickets): sync store local — #307 QA verte finale backend+frontend, merge develop e1dbe56 (branche fix/307-startup-ghost-states-reconciliation commit 57cf825), carnet v7 section Git; AppImage rebuild 14:21 déjà formalisée v0.46.0 (commit dédié 99b400a + tag annoté, artefact sha256 vérifié identique au contenu develop post-merge — pas de nouveau tag); tickets 299-307 + index/counter + #296 carnet/issue; attachments/ et scripts/ hors périmètre; aucun push
This commit is contained in:
110
.ideai/tickets/299/carnet.md
Normal file
110
.ideai/tickets/299/carnet.md
Normal file
@ -0,0 +1,110 @@
|
||||
---
|
||||
issueRef: "#299"
|
||||
version: 5
|
||||
updatedBy: {"kind":"agent","agent_id":"1ff94b51-3e17-4a39-8543-7715d1ff0f80"}
|
||||
updatedAt: 1788983152377
|
||||
---
|
||||
# Ticket #299 - Panneau MCP: detachement silencieux
|
||||
|
||||
## Signalement
|
||||
Le panneau MCP ne fonctionne pas en fenetre detachee: quand l'utilisateur veut le detacher, rien ne se passe.
|
||||
|
||||
## Cadrage UX
|
||||
- `Detacher` doit ouvrir immediatement une fenetre flottante/systeme titree `MCP`, avec le meme contenu/etat.
|
||||
- Une seule fenetre MCP: clics repetes => focus de la fenetre existante.
|
||||
- Fermer ou `Rattacher` remet MCP dans la cellule d'origine sans perte d'etat.
|
||||
- Si detachement impossible: ne pas rester silencieux; desactiver l'action ou afficher `Le panneau MCP ne peut pas etre detache pour le moment.` / erreur retry visible.
|
||||
|
||||
## Cadrage Architect
|
||||
Hypothese forte: desalignement frontend/backend.
|
||||
- Frontend declare `mcp` detachable dans `frontend/src/features/projects/viewPlacement.ts` et le rend via `ViewPanelBody`.
|
||||
- Backend Tauri `ViewPanel` dans `crates/app-tauri/src/commands.rs` ne connait probablement pas `Mcp`.
|
||||
- `open_view_window("mcp")` echoue en `INVALID`, et `detachPanel` dans `ProjectsView.tsx` avale l'echec, donc effet utilisateur: rien.
|
||||
|
||||
Correctif attendu:
|
||||
- Ajouter `Mcp` a l'enum/backend `ViewPanel` et aux branches `parse`, `as_str`, `title`.
|
||||
- Garantir label `view-mcp`, URL `index.html?panel=mcp`, reconnaissance de `view-mcp`.
|
||||
- Ne pas refondre docking/FloatingWindow/LeafView; ne pas toucher `McpPanel` sans preuve.
|
||||
- Preserver: pas de ghost detached slot si erreur backend, `projects` reste non detachable.
|
||||
|
||||
Tests attendus:
|
||||
- Rust app-tauri pour parse/as_str/title/label/url/reconnaissance label MCP.
|
||||
- Frontend: ViewWindow query `?panel=mcp`, detach MCP, viewPlacement detachable MCP.
|
||||
|
||||
## Etat orchestration
|
||||
Ticket cree par Main le 2026-09-09, statut inProgress. En attente branche Git puis implementation DevBackend/DevFrontend et validation QA.
|
||||
|
||||
## Implementation DevBackend - 2026-09-09
|
||||
- Branche: `fix/299-mcp-panel-detach-window`.
|
||||
- Ajout de `ViewPanel::Mcp` dans `crates/app-tauri/src/commands.rs` avec les contrats:
|
||||
- parse `mcp`;
|
||||
- identifiant `mcp`;
|
||||
- titre `MCP`;
|
||||
- label stable `view-mcp`;
|
||||
- URL `index.html?panel=mcp`.
|
||||
- La reconnaissance des labels courants et la restauration des fenetres persistees acceptent desormais `view-mcp`.
|
||||
- Tests Rust ajoutes pour parse/as_str/title/label/url, reconnaissance du label et identite persistee MCP.
|
||||
- Validation executee:
|
||||
- `cargo fmt --all -- --check`: vert;
|
||||
- `cargo test -p app-tauri view_window_tests`: vert, 9 tests passes;
|
||||
- `cargo test -p app-tauri persisted_identity_accepts_mcp_view_label`: vert, 1 test passe.
|
||||
- Aucun changement frontend, aucun commit. Les modifications hors perimetre deja presentes dans le worktree ont ete laissees intactes.
|
||||
|
||||
## Implementation DevFrontend - 2026-09-09
|
||||
- Verification du chemin existant: `mcp` est deja un `PanelId`, titre `MCP`, rendu par `ViewPanelBody` et accepte par `isDetachablePanel`; aucune refonte de docking/FloatingWindow/LeafView necessaire.
|
||||
- `ProjectsView.detachPanel` continue de n'appliquer le placement `detached` qu'apres succes de `openViewWindow("mcp")`, preservant l'absence de ghost slot en cas d'erreur.
|
||||
- L'echec de detachement n'est plus silencieux: alerte `Le panneau MCP ne peut pas etre detache pour le moment.` avec action `Reessayer`, tandis que le placement courant reste visible.
|
||||
- Tests frontend ajoutes/ajustes:
|
||||
- `ViewWindow` accepte explicitement `?panel=mcp`;
|
||||
- `ProjectsView` ouvre bien la fenetre OS avec l'identifiant `mcp`;
|
||||
- un echec conserve le panneau flottant, affiche l'alerte et permet un retry concluant;
|
||||
- `viewPlacement` confirme explicitement que `mcp` est detachable.
|
||||
- Validation executee:
|
||||
- `npm test -- --run src/app/ViewWindow.test.tsx src/features/projects/ProjectsView.detach.test.tsx src/features/projects/viewPlacement.test.ts`: vert, 3 fichiers / 22 tests;
|
||||
- `npm run build`: vert (`tsc --noEmit` + build Vite), avec uniquement l'avertissement existant de taille de chunk.
|
||||
- Aucun commit. Les changements backend et hors perimetre deja presents ont ete preserves.
|
||||
|
||||
## QA - 2026-09-09
|
||||
Verdict: VERT pour #299 sur `fix/299-mcp-panel-detach-window`.
|
||||
|
||||
Audit du diff:
|
||||
- Backend: `ViewPanel::Mcp` ajoute avec parse/as_str/title, label `view-mcp`, URL `index.html?panel=mcp`, et restauration des labels persistants.
|
||||
- Frontend: `?panel=mcp` accepte par `ViewWindow`, MCP explicitement detachable, `ProjectsView` ouvre la fenetre OS pour `mcp`, conserve le panneau si `openViewWindow` echoue, et affiche une alerte avec retry.
|
||||
|
||||
Commandes executees:
|
||||
- `git status --short --branch`: branche `fix/299-mcp-panel-detach-window`, worktree non commite avec les changements #299 et fichiers tickets.
|
||||
- `git diff --stat` / `git diff -- ...`: diff inspecte, conforme au cadrage du ticket.
|
||||
- `cargo fmt --all -- --check`: vert.
|
||||
- `cargo test -p app-tauri view_window_tests`: vert, 9 tests passes, 0 failed.
|
||||
- `cargo test -p app-tauri persisted_identity_accepts_mcp_view_label`: vert, 1 test passe, 0 failed.
|
||||
- `npm test -- --run src/app/ViewWindow.test.tsx src/features/projects/ProjectsView.detach.test.tsx src/features/projects/viewPlacement.test.ts` depuis la racine: rouge attendu de commande (`ENOENT`, pas de `package.json` a la racine). Relance corrigee depuis `frontend/`.
|
||||
- Depuis `frontend/`, `npm test -- --run src/app/ViewWindow.test.tsx src/features/projects/ProjectsView.detach.test.tsx src/features/projects/viewPlacement.test.ts`: vert, 3 fichiers passes / 22 tests passes. Sortie avec avertissements Vite existants et `HTMLCanvasElement.getContext()` non implemente par jsdom, sans echec.
|
||||
- `git diff --check`: vert.
|
||||
- Depuis `frontend/`, `npm run build`: vert (`tsc --noEmit && vite build`), avec l'avertissement existant de chunk > 500 kB.
|
||||
|
||||
Risques residuels:
|
||||
- Validation limitee aux tests automatises et au build; je n'ai pas ouvert l'AppImage/UI desktop live pour cliquer le detachement MCP dans une fenetre systeme reelle.
|
||||
- Le worktree contient aussi des modifications de metadonnees/tickets hors fichiers applicatifs #299 deja presentes; elles n'ont pas ete modifiees sauf ce carnet.
|
||||
|
||||
## Git - 2026-09-09
|
||||
- Branche de travail: `fix/299-mcp-panel-detach-window`, creee depuis `develop` @ 602abfe.
|
||||
- Inspection du diff: 6 fichiers applicatifs dans le perimetre (commands.rs, lib.rs app-tauri; ViewWindow.test, ProjectsView.tsx, ProjectsView.detach.test, viewPlacement.test frontend), +101/-3.
|
||||
- QA reconfirmee par Git avant commit (note: rustup sans toolchain par defaut, commandes passees via `rustup run stable`):
|
||||
- `rustup run stable cargo fmt --all -- --check`: vert;
|
||||
- `git diff --check`: vert;
|
||||
- `cargo test -p app-tauri view_window_tests`: 9/9 dont `mcp_view_window_contract_is_stable`;
|
||||
- `cargo test -p app-tauri persisted_identity_accepts_mcp_view_label`: 1/1;
|
||||
- `npm test` frontend: 3 fichiers / 22 tests verts;
|
||||
- `npm run build` (`tsc --noEmit && vite build`): vert.
|
||||
- Commit du correctif: `e4622cd` sur la branche fix — uniquement les 6 fichiers applicatifs.
|
||||
- Merge local: `c47bc8d` `merge(views)` --no-ff vers `develop`; develop desormais 306 commits devant origin/develop.
|
||||
- Hors perimetre laisse intact/non commite: `.ideai/tickets/296/*`, `.ideai/tickets/299/` (ce carnet), `.ideai/tickets/counter.json`, `.ideai/tickets/index.json`, `scripts/` — sync store a la charge de Main.
|
||||
- Restants pour cloture: rebuild AppImage + validation live du detachement MCP depuis l'app installee (point deja signale par QA).
|
||||
- Aucun push distant.
|
||||
|
||||
## AppImage - 2026-09-09
|
||||
- Rebuild execute par Main sur `develop` apres le merge `c47bc8d`: `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`, 119523832 octets, sha256 `31e400c6ef6caefef658fe11b51b371c8571ea8011555aa20e4d272a3eb2742b` (verifie par Git: presence, taille, horodatage 21:45 posterieur au merge).
|
||||
- Commit dedie `941db62` `chore(appimage)` --allow-empty sur `develop` (artefact sous target/ gitignore, bookkeeping store hors perimetre: le message de commit est la trace durable in-repo du rebuild, convention #298).
|
||||
- Tag annote `v0.42.0` pose sur `941db62` (convention vx.y.z: y incremente pour un rebuild commite sur develop; precedent v0.41.0).
|
||||
- Restant unique: validation live du detachement MCP depuis l'app installee. Aucun push distant.
|
||||
Reference in New Issue
Block a user