8.3 KiB
8.3 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #299 | 5 |
|
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
Detacherdoit ouvrir immediatement une fenetre flottante/systeme titreeMCP, avec le meme contenu/etat.- Une seule fenetre MCP: clics repetes => focus de la fenetre existante.
- Fermer ou
Rattacherremet 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
mcpdetachable dansfrontend/src/features/projects/viewPlacement.tset le rend viaViewPanelBody. - Backend Tauri
ViewPaneldanscrates/app-tauri/src/commands.rsne connait probablement pasMcp. open_view_window("mcp")echoue enINVALID, etdetachPaneldansProjectsView.tsxavale l'echec, donc effet utilisateur: rien.
Correctif attendu:
- Ajouter
Mcpa l'enum/backendViewPanelet aux branchesparse,as_str,title. - Garantir label
view-mcp, URLindex.html?panel=mcp, reconnaissance deview-mcp. - Ne pas refondre docking/FloatingWindow/LeafView; ne pas toucher
McpPanelsans preuve. - Preserver: pas de ghost detached slot si erreur backend,
projectsreste 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::Mcpdanscrates/app-tauri/src/commands.rsavec les contrats:- parse
mcp; - identifiant
mcp; - titre
MCP; - label stable
view-mcp; - URL
index.html?panel=mcp.
- parse
- 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:
mcpest deja unPanelId, titreMCP, rendu parViewPanelBodyet accepte parisDetachablePanel; aucune refonte de docking/FloatingWindow/LeafView necessaire. ProjectsView.detachPanelcontinue de n'appliquer le placementdetachedqu'apres succes deopenViewWindow("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 actionReessayer, tandis que le placement courant reste visible. - Tests frontend ajoutes/ajustes:
ViewWindowaccepte explicitement?panel=mcp;ProjectsViewouvre bien la fenetre OS avec l'identifiantmcp;- un echec conserve le panneau flottant, affiche l'alerte et permet un retry concluant;
viewPlacementconfirme explicitement quemcpest 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::Mcpajoute avec parse/as_str/title, labelview-mcp, URLindex.html?panel=mcp, et restauration des labels persistants. - Frontend:
?panel=mcpaccepte parViewWindow, MCP explicitement detachable,ProjectsViewouvre la fenetre OS pourmcp, conserve le panneau siopenViewWindowechoue, et affiche une alerte avec retry.
Commandes executees:
git status --short --branch: branchefix/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.tsdepuis la racine: rouge attendu de commande (ENOENT, pas depackage.jsona la racine). Relance corrigee depuisfrontend/.- 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 etHTMLCanvasElement.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 depuisdevelop@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 dontmcp_view_window_contract_is_stable;cargo test -p app-tauri persisted_identity_accepts_mcp_view_label: 1/1;npm testfrontend: 3 fichiers / 22 tests verts;npm run build(tsc --noEmit && vite build): vert.
- Commit du correctif:
e4622cdsur la branche fix — uniquement les 6 fichiers applicatifs. - Merge local:
c47bc8dmerge(views)--no-ff versdevelop; 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
developapres le mergec47bc8d:npm --prefix frontend run buildvert, puis depuiscrates/app-tauri:CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimagevert. - Artefact:
target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119523832 octets, sha25631e400c6ef6caefef658fe11b51b371c8571ea8011555aa20e4d272a3eb2742b(verifie par Git: presence, taille, horodatage 21:45 posterieur au merge). - Commit dedie
941db62chore(appimage)--allow-empty surdevelop(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.0pose sur941db62(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.