Files
IdeA/.ideai/tickets/299/carnet.md

8.3 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#299 5
kind agent_id
agent 1ff94b51-3e17-4a39-8543-7715d1ff0f80
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.