Commit Graph

994 Commits

Author SHA1 Message Date
b01fa0ce4d merge(application,domain,infrastructure,web-server,app-tauri,frontend): fix #320 — arrêt d'agent fiable avec cascade sur travaux/agents lancés et statut cohérent (QA verte) 2026-09-11 16:42:37 +02:00
a93db1c64f merge(frontend): fix #319 — la couleur projet s'applique et persiste sur tous les projets, id opaque inclus (QA verte) 2026-09-11 16:42:37 +02:00
1316e87010 fix(application,domain,infrastructure,web-server,app-tauri,frontend): arrêt d'agent fiable avec cascade sur l'arbre de propriété et statut cohérent — #320 (QA verte)
Symptôme: stopper un agent (ex Main sur UnityPlugin) laissait des travaux
poursuivre, la cascade n'atteignait pas les agents lancés et la pastille
restait orange pendant que l'agent continuait à en appeler d'autres.

- barrière d'admission par génération d'exécution (ExecutionControl): un stop
  ferme l'admission de tout le sous-arbre propriété/attente AVANT toute
  annulation asynchrone — plus aucune nouvelle action inter-agents après stop
- arbre de propriété durable en-process (launched_by) + dépendances d'attente
  actives: la cascade couvre transitivement agents et travaux lancés
- commandes d'un agent arrêté rejetées (AppError::AgentStopped); stop
  lui-même admis pour rester idempotent; réactivation sur relance humaine
  (génération +1) et enregistrement du propriétaire au spawn
- admission exposée aux adaptateurs hors commandes cœur (tickets, templates,
  plugins) via ensure_agent_execution_active; MCP server/tools, web-server et
  commandes Tauri alignés
- cohérence live-state: statut Idle avec intent « Arrêté » ou
  « Arrêt incomplet — Certains travaux sont encore actifs » selon l'issue de
  la cascade; workstate et surfaces UI (AgentsPanel, LayoutGrid,
  ProjectWorkStatePanel) reflètent l'état réel, plus de pastille orange fantôme
- tests: orchestrator_service (cascade/générations/idempotence),
  workstate_actions, background_task_cancel, error_codes, agents, layout,
  workstate

QA verte sur fix/320-agent-stop-cascade. Aucun push.
2026-09-11 16:42:29 +02:00
0b9e085ec3 fix(frontend): la couleur projet s'applique et persiste sur tous les projets, id opaque inclus — #319 (QA verte)
Reprise après crash du diagnostic (ticket #318, même symptôme) : sur certains
projets, ex PipoufWebSite, la couleur choisie n'était ni appliquée ni reflétée.

- application optimiste: la couleur demandée est publiée immédiatement via
  PROJECT_THEME_CHANGED_EVENT et affichée dans le picker, sans attendre le
  round-trip de persistance
- persistance systématique par identifiant de projet (jamais par nom), couvrant
  les projets à id opaque
- échec de sauvegarde: rollback visuel vers la couleur précédente + reprise
  possible via Réessayer qui rejoue exactement le payload demandé
- réouverture du panneau: la couleur persistée est rechargée et affichée
- tests: application immédiate + persistance id opaque, rechargement après
  réouverture, rollback/réessai sur échec (ProjectSettingsPanel.test.tsx)

QA verte sur fix/319-project-color-application. Aucun push.
2026-09-11 16:42:29 +02:00
1dc892d80b chore(appimage): rebuild AppImage develop — commit dédié v0.51.0 #317 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120584696 octets, sha256 6c3f6a5292d8f8b886702eba8b6367574c952b3b8144f26bbaa506140057e400, produit depuis develop @ 6128be7e incluant le merge de la feature #317 — bouton Redémarrer l'agent dans la barre supérieure des cellules, restart valable pour les trois modes de présentation headless/TUI native/CLI custom via le use case RestartCellAgentRuntime déléguant au scheduler self-restart existant, commande restart_cell_agent contrat identique Tauri/HTTP, stop borné par timeout typé, relance préservant routage TUI natif/géométrie de cellule/conversation, overlay d'état et confirmation frontend, QA verte ; build réussi par Main: npm --prefix frontend run build puis tauri build --bundles appimage depuis crates/app-tauri) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.50.0 -> v0.51.0, tag annoté posé sur ce commit ; commit --allow-empty: l'artefact vit sous target/ gitigné et le bookkeeping carnet/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.51.0 — le bouton Redémarrer l'agent redémarre l'agent attaché à la cellule depuis chaque mode de présentation, avec conservation du layout/cell/node et états d'échec correctement libellés ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-11 15:05:05 +02:00
6128be7e53 merge(backend,application,frontend,domain,web-server,app-tauri): feature #317 — bouton Redémarrer l'agent dans la barre des cellules (QA verte)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 15:00:51 +02:00
7fb9d8bb86 feat(backend,application,frontend,domain,web-server,app-tauri): bouton Redémarrer l'agent dans la barre supérieure des cellules — #317 (QA verte)
La cellule expose un bouton Redémarrer l'agent valable pour les trois
modes de présentation (headless, TUI native, CLI custom), sans jamais
prendre la présentation pour vérité runtime.

- Application: use case RestartCellAgentRuntime validant le binding
  exact cellule/runtime via les snapshots live (RestartRuntimeNotFound,
  ConflictAgentVisibleElsewhere, AgentNotBoundToCell) puis déléguant au
  scheduler self-restart existant (schedule_cell); CellAgentPresentation
  purement informationnelle.
- Backend/app-tauri/web-server: commande restart_cell_agent sur contrat
  DTO identique Tauri/HTTP, stop borné par timeout typé
  (RestartStopTimeout), relance préservant routage TUI natif, géométrie
  de cellule (node/rows/cols) et conversation; évenements domaine
  enrichis.
- Frontend: bouton dans la barre de cellule avec confirmation,
  overlay d'état Redémarrage…/échec (libellés par code d'erreur, Fermer/
  Réessayer), gardes d'identité de cellule et de restarts externes,
  gateway/mock/http adapters et ports alignés.
- Tests: dto_agents, workstate_actions, contrats web-server,
  LayoutGrid.cellControlsLayering, adapters agent/mock/http.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 15:00:43 +02:00
46449bdf46 chore(appimage): rebuild AppImage develop — commit dédié v0.50.0 #316 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120543736 octets, sha256 d240c78b705572635d12364d6d26340ad4569a6652f89700acbc13b62f0a0863, produit depuis develop @ aac37d81 incluant le merge du fix #316 — set de couleurs des paramètres projet fiable pour tous les projets: DTO tri-état absent/inchangé vs null/défaut, mise à jour partielle theme_color, garde-fous de course frontend par projet, gardes de focus ViewWindow, QA verte ; build réussi par Main: npm --prefix frontend run build puis tauri build --bundles appimage depuis crates/app-tauri) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.49.0 -> v0.50.0, tag annoté posé sur ce commit ; commit --allow-empty: l'artefact vit sous target/ gitigné et le bookkeeping carnet/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.50.0 — le set de couleurs des paramètres projet s'applique et persiste correctement sur l'ensemble des projets, y compris après changements de projet rapides ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-11 13:04:52 +02:00
aac37d816d merge(frontend,application,backend,web-server,infrastructure): fix #316 — set de couleurs projet fiable pour tous les projets (QA verte)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 13:01:13 +02:00
bbe8c1d04b fix(frontend,application,backend,web-server,infrastructure): le set de couleurs projet s'applique à tous les projets — #316 (QA verte)
Cause: update_project_settings remplaçait tout ProjectSettings avec la
seule couleur fournie — champ absent et null indistinguables — et des
réponses de chargement/sauvegarde obsolètes d'un projet précédent
pouvaient réafficher/écraser la couleur lors d'un changement de projet
rapide, d'où l'impression que la couleur ne prenait pas sur tous les
projets.

- DTO tri-état (absent = inchangé, null = défaut produit) avec
  Deserialize manuel et use case de mise à jour partielle du champ
  theme_color; commandes Tauri et web-server alignées sur le même
  contrat.
- Garde-fous de course frontend: séquences load/save + révision thème
  par projet (pub/sub onProjectThemeChanged) dans ProjectSettingsPanel,
  garde de révision de focus dans ViewWindow.
- Tests: infrastructure settings, contrats web-server (inchangé/reset),
  ProjectSettingsPanel, ViewWindow, projects.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 13:01:05 +02:00
89937c7cd9 chore(appimage): rebuild AppImage develop — commit dédié v0.49.0 #315 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120556024 octets, sha256 7055487cd147279a3d0e227e1676627add1f53c314f74bd62c4a7c54717514a2, produit depuis develop @ 40050170 incluant le merge du lot #315 — détachement Paramètres projet, couleurs projet fiables inter-webviews, restauration conversation/images custom CLI après aller-retour projet, retrait menus Projects/Project Context du menu Panneaux, QA verte ; build réussi par Main après QA verte) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.48.0 -> v0.49.0, tag annoté posé sur ce commit ; commit --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.49.0 — détachement du panneau Paramètres du projet (et Retry), application persistante des couleurs projet y compris dans les fenêtres détachées, conversation CLI custom restaurée après changement de projet puis retour, images conservées après aller-retour projet, menu Panneaux sans entrées Projects/Project Context ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-11 11:31:45 +02:00
40050170dd merge(frontend,application): lot utilisateur #315 — détachement Paramètres projet, couleurs projet, restauration conversation/images custom CLI, menus Panneaux (QA verte) 2026-09-11 11:27:18 +02:00
45f819e1e8 fix(frontend,application): lot utilisateur #315 — détachement Paramètres projet, couleurs projet fiables, restauration conversation custom CLI, images post-aller-retour projet, retrait menus Projects/Project Context (QA verte)
- détachement: le panneau Paramètres du projet devient détachable (mapping historique panel=context → projectSettings dans parseViewWindowParams, DETACHABLE/ViewPanelBody alignés, ProjectsView ne court-circuitant plus le refus); Retry d'échec de détachement préservé
- couleurs projet: projectTheme publie idea:project-theme-changed localement + BroadcastChannel inter-webviews (fenêtres OS détachées), garde de révision par projet dans ProjectsView/ViewWindow contre les lectures settings en course — plus de flash/retour au bleu par défaut
- conversation custom CLI: transcript_restore_expected ne considère plus l'absence de scrollback volatile comme une restauration échouée quand la session rouvre en SessionPlan::None (continuation vide valide); CustomAgentChatView n'affiche plus le faux « conversation liée n'a pas pu être restaurée »
- images: conservation des images de conversation après changement de projet puis retour
- menus Panneaux: retrait des entrées Projects et Project Context (panelOrder WebWorkspace, création/switch via tab-bar +, contexte projet fusionné dans Paramètres du projet)
- QA verte: tests frontend ciblés window/ViewWindow/ProjectSettingsPanel/ProjectsView.detach/projects/CustomAgentChatView/WebDesktopWorkspace + cargo test -p application lifecycle transcript_restore_expected; fichiers .ideai/* (tickets 308-315, index/counter, agents/test, chat-drafts, system-permissions, project-settings.json, attachments/) et scripts/ hors périmètre préservés en worktree; aucun push
2026-09-11 11:27:09 +02:00
352ec2d8b7 chore(tickets): sync store local — clôture #305 (tâches planifiées projet, livrées v0.48.0) et #314 (transcript lié après reboot, corrigé) par Main après rebuild AppImage validé; carnets à jour, index qa->closed; counter inchangé; fichiers non liés (agents/test, chat-drafts, system-permissions, attachments/, tickets 308-313, scripts/) hors périmètre; tag v0.48.0 inchangé sur 1e2cb5e; aucun push 2026-09-11 10:39:28 +02:00
1e2cb5e2af chore(appimage): rebuild AppImage develop — commit dédié v0.48.0 #305 #314 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120560120 octets, sha256 d7de4519736eee6b923ba5b9a6e966cea08760173bd85a66ae6422a60a95e0d1, produit depuis develop @ 600aae17 incluant le merge #305 tâches planifiées projet — tool MCP idea_scheduled_task_* + menu utilisateur — et le fix #314 transcript lié indisponible après reboot, QA verte sans bloquant; commandes carnet: npm --prefix frontend run build OK puis depuis crates/app-tauri: mkdir -p /tmp/idea-cargo-home && CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage OK; commit --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.47.0 -> v0.48.0, tag annoté posé sur ce commit; restant: validation live depuis l'app installée v0.48.0 — menu projet 'Tâches planifiées' (création/édition/approbation tâche agent/exécution maintenant/suppression), tools MCP idea_scheduled_task_* list/create/run_now, transcript lié restauré après reboot; l'AppImage installée n'est pas remplacée par cette opération; aucun push) 2026-09-11 10:36:43 +02:00
600aae175f merge(backend,frontend): tâches planifiées projet #305 + fix transcript lié après reboot #314 (QA verte)
Source: feature/305-scheduled-project-tasks-mcp (7007b2c feat + 686cf31 chore tickets; sous-module sdk/IdeaSDK 047c38b docs services.md). #305: agrégat ScheduledProjectTask persisté <app_data_dir>/scheduled-project-tasks/<projectId>.json, schedules interval/daily/weekly, approbation obligatoire des tâches agent, 7 tools MCP idea_scheduled_task_*, commandes Tauri/HTTP contrats identiques, surface projet 'Tâches planifiées', reconcile boot sans rattrapage rafale, docs dédiée. #314: transcript lié restauré après reboot côté application et frontend avec état/action utile. QA verte sans bloquant rapportée par QA. Restant: rebuild AppImage depuis develop (commit dédié + tag, convention y: v0.47.0 -> v0.48.0) puis validation live; aucun push.
2026-09-11 10:32:21 +02:00
686cf31620 chore(tickets): sync store local — #305 carnet/issue (cadrage UX+Architect, QA verte, livraison) et #314 issue (QA verte); counter/index à jour; tickets 308-313 non liés, agents/test, chat-drafts, system-permissions, attachments/ et scripts/ hors périmètre; aucun push 2026-09-11 10:32:09 +02:00
7007b2cc7e feat(backend,frontend): tâches planifiées projet — tool MCP idea_scheduled_task_* et menu utilisateur #305, fix transcript lié indisponible après reboot #314 (QA verte)
#305: nouvel agrégat durable ScheduledProjectTask dans domain (scheduled_task.rs, ids, ports ScheduledProjectTaskStore), source de vérité <app_data_dir>/scheduled-project-tasks/<projectId>.json, schedules bornés V1 interval/daily/weekly avec fuseau, cycle À approuver/Active/Suspendue avec approbation obligatoire des tâches demandées par agent; use cases application/scheduled_task (list/create/update/delete/run_now/reconcile/fire) réutilisant BackgroundTask pour les runs avec distinction planifié/manuel; store infrastructure dédié + scheduler reconcile au boot sans rattrapage en rafale, cwd confiné au projet; 7 tools MCP idea_scheduled_task_* (list/read lecture seule, create/update/delete/run_now/set_enabled write-actions soumises aux permissions natives); commandes Tauri + routes HTTP aux contrats DTO identiques (camelCase nextRunAtMs/lastRunAtMs/lastTaskId/createdBy/updatedBy); frontend: gateways Tauri/HTTP/mock + types ports/domain, surface projet 'Tâches planifiées' (liste utilisateur+agent unifiée, création/édition avec récapitulatif avant activation, approbation/refus, exécuter maintenant, suspendre/reprendre, suppression), catalogage surface web (webSurfaceCatalog/viewPlacement/ViewPanelBody/WebWorkspace); docs/scheduled-project-tasks.md et sdk docs/services.md (047c38b: pas un service plugin V1, pas d'émulation via cron système).

#314: correction de 'Conversation liée — transcript indisponible' après reboot: restauration du transcript lié côté application (orchestrator service, lifecycle, session_limit, background sink, terminal registry) et côté frontend (adapters agent/http frames/stream/requestResponse, workStateNormalization, CustomAgentChatView avec état et action utile), tests dto_chat/agent_lifecycle/structured_registry_d1/background_completion_sink étendus.

QA verte rapportée par QA sur feature/305-scheduled-project-tasks-mcp, sans bloquant, pour #305 et #314.

Hors périmètre worktree: tickets non liés, attachments/, scripts/; aucun push.
2026-09-11 10:32:01 +02:00
72792bb02b merge(backend,frontend): lot utilisateur #310-#313 — horodatage conversation, stop agent robuste, préférence terminal par défaut, paramètres projet (QA verte) 2026-09-10 21:26:23 +02:00
402a60f213 feat(backend,frontend): lot utilisateur #310 #311 #312 #313 — horodatage conversation, stop agent robuste, préférence terminal par défaut, paramètres projet (QA verte)
- #310: horodatage de tous les messages et événements de conversation visibles — composant partagé EntryTimestamp, timestamps propagés dans le transcript chat, les annonces inter-agent et le viewer de conversation, normalisation côté domain/adapters (conversation_log, paginate).
- #311: stop d'agent robuste pour PTY non monté, sessions headless et CLI custom — lifecycle/orchestrator durcis, ponts chat app-tauri/web-server alignés, arrêt fiable sans session orpheline.
- #312: préférence globale d'interface terminal par défaut — nouveau store settings (domain/application/infrastructure + tests), DTO et commandes backend, adapter frontend userSettings, panneau TerminalSettings dans les paramètres globaux.
- #313: Paramètres du projet — contexte de projet éditable et couleur de thème par projet (ProjectSettingsPanel + projectTheme), teinte des onglets projet, persistance via DTO projet.

QA verte (GO QA sur feature/batch-310-311-312-313-chat-stop-prefs-theme) — vérifications Git: git diff --cached --check OK; staging borné à crates/ et frontend/ (74 fichiers, +2105/-531), commit unique de lot conforme à la convention des lots (précédents batch-151/158/159, batch-210/211/212) car les fichiers partagés (dto.rs, commands.rs, CustomAgentChatView) entrelacent les 4 tickets.

fichiers .ideai/* (agents/test.md, chat-drafts.json, system-permissions.json, tickets/counter.json, tickets/index.json, tickets/308-313/), attachments/ et scripts/ hors périmètre et préservés en worktree ; aucun push.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 21:26:16 +02:00
fc45594d9a chore(appimage): rebuild AppImage develop — commit dédié v0.47.0 #309 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119937528 octets, sha256 ffed1647c876057fdf69940801d53759876d1231552d9407d40e1cfa4b0e8ae2, produit depuis develop @ 3eaa3db incluant le merge du fix #309 — writable roots Codex corrects sur projets non-IdeA quel que soit le mode de lancement ; build réussi par Main après QA verte) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.46.0 -> v0.47.0, tag annoté posé sur ce commit ; commit --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet #309/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild ; restant: validation live des writable roots Codex depuis l'app installée v0.47.0 (first-run TUI native, stop/relaunch, CLI custom, délégation headless sur projet non-IdeA) ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 19:09:12 +02:00
3eaa3db22b merge(application): writable roots Codex corrects sur projets non-IdeA — #309 (QA verte)
intègre fix/309-codex-writable-roots commit 1f38c61 — politique de lancement Codex unifiée: project root par défaut sans permissions explicites, roots extra posés uniquement en workspace-write, réécriture --sandbox/--add-dir du SpawnSpec PTY par apply_codex_pty_launch_policy (composition identique first-run/relaunch/custom CLI/headless) ; QA verte reconfirmée par Git: fmt --check, diff --check, codex_permissions 3/3, lifecycle 48/48 ; fichiers .ideai/*, attachments/ et scripts/ hors périmètre préservés en worktree ; aucun push.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 19:04:11 +02:00
1f38c61c75 fix(application): writable roots Codex corrects sur projets non-IdeA quel que soit le mode de lancement — #309 (QA verte)
cause: la politique de lancement Codex divergeait selon le chemin de composition. compile_codex_launch_policy ajoutait les roots extra (temp géré) AVANT de calculer le mode de sandbox, et le builder PTY (append_codex_pty_managed_temp_roots) n'appliquait QUE ces roots temp, ignorant project root et politique compilée ; sans permissions explicites, codex_permission_writable_roots renvoyait une liste vide, donc le premier lancement TUI partait sans --add-dir project root et rejetait les roots additionnels (« Error adding directories: Ignoring --add-dir … because the effective permissions do not allow additional writable roots ») ; un --add-dir <project root> préexistant dans spec.args n'était pas réconcilié, d'où des comportements différents entre first-run, stop/relaunch, CLI custom et délégation headless — invisible sur le projet IdeA lui-même du fait de ses permissions déjà configurées.

fix: codex_permission_writable_roots retourne par défaut le project root quand aucune permission explicite n'est configurée (jamais vide si root non vide) ; compile_codex_launch_policy n'ajoute les roots extra qu'en mode workspace-write et reste vide en read-only (deny explicite ne gagne jamais project root ni temp géré) ; nouveau apply_codex_pty_launch_policy unique source de vérité PTY Codex — réécrit la valeur --sandbox existante ou l'ajoute, draine le --add-dir <project root> préexistant puis pose les roots compilés dédupliqués, composition identique pour first-run, relaunch, custom CLI et headless ; unconfigured_policy_writes_project_and_deduplicated_managed_temp, explicit_write_deny_never_gains_project_or_managed_temp_root, partial_allow_exposes_only_its_computed_rw_grant + tests lifecycle de réécriture d'args ajoutés.

QA verte: cargo targeted tests OK, npm targeted/typecheck OK — reconfirmée par Git: git diff --check OK, cargo fmt --all -- --check OK, cargo test -p application --lib codex_permissions 3/3, cargo test -p application --lib lifecycle 48/48.

fichiers .ideai/* (agents/test.md, chat-drafts.json, system-permissions.json, tickets/counter.json, tickets/index.json, tickets/308/, tickets/309/), attachments/ et scripts/ hors périmètre et préservés en worktree ; aucun push.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 19:04:01 +02:00
63c7f79576 merge(projects): suppression d'un projet du registre IdeA sans suppression du dossier disque — #308 (QA verte)
intègre feature/308-remove-project-from-registry commit b9f8ed3 — use case RemoveProjectFromRegistry + port ProjectStore::remove_project, adapter partagé Tauri/HTTP remove_project avec déactivation et purge open-projects restore, surface frontend ProjectActionsMenu + RemoveProjectDialog avec confirmation explicite et rechargement de la liste ; QA verte: cargo targeted tests/check OK, npm targeted/typecheck/build OK (suite npm test large rouge non bloquante hors #308, échecs préexistants) ; fichiers .ideai/* et scripts/ hors périmètre préservés en worktree ; aucun push.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 18:27:28 +02:00
b9f8ed303e feat(backend,domain,infrastructure,application,app-tauri,web-server,frontend): suppression d'un projet du registre IdeA sans toucher son dossier disque — #308 (QA verte)
cause: l'utilisateur ne pouvait pas retirer un projet du registre IdeA (projects.json) ; la seule issue laissait l'entrée fantôme dans la liste des projets, sans capacité générique de retrait.

domain: port ProjectStore::remove_project(id) -> Option<Project> avec implémentation par défaut « not supported » pour ne pas casser les stores spécialisés.

infrastructure: FsProjectStore implémente remove_project — retire l'entrée du registre persisté et la renvoie, None si id inconnu, ordre relatif du registre préservé ; test store dédié.

application: use case RemoveProjectFromRegistry (remove.rs) — NotFound explicite si id absent, retourne le projet retiré + registre rafraîchi.

backend/app-tauri/web-server: DTO RemoveProjectRequestDto/RemoveProjectResponseDto (removed, projects, restore_state, was_open), adapter partagé remove_project_for_adapter réutilisé par la commande Tauri remove_project et la route HTTP — même contrat desktop/web ; remove_project_and_deactivate désactive le projet s'il était ouvert, purge l'entrée open-projects restore correspondante et renvoie was_open/restore_state ; test adapter vérifiant le contrat de bout en bout (entrée retirée, restore purgé, root intact).

frontend: DTO + ProjectGateway.removeProject (HTTP + mock), ProjectsView expose un menu d'actions projet (ProjectActionsMenu) avec entrée Retirer, RemoveProjectDialog — confirmation explicite précisant que le dossier disque n'est pas supprimé, invalidation/rechargement de la liste des projets après succès (useProjects), tests ProjectsView/projects/adapters/httpInvoker/services.

QA verte: cargo targeted tests/check OK (domain, application project_usecases, infrastructure project_store, backend, app-tauri, web-server), npm targeted/typecheck/build OK ; suite npm test complète rouge non bloquante hors #308 (échecs préexistants listProjectSettings/web). Vérifications Git: git diff --check OK, cargo fmt --all -- --check OK.

fichiers .ideai/tickets/308/, tickets/counter.json, tickets/index.json, attachments/ et scripts/ hors périmètre et préservés en worktree (sync store traité séparément) ; aucun push.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-10 18:27:15 +02:00
ca1a27a2b9 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 2026-09-10 17:32:14 +02:00
e1dbe56d9c merge(runtime): réconcilie les états et tâches fantômes au démarrage + garde-fou transcript indisponible — #307 (QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p infrastructure --test background_task_store 12/12, -p domain --lib live_state 15/15, -p backend ticket307_activation_reconcile_tests 1/1 + background_tasks_b7 1/1, -p application --test workstate 29/29, cargo check -p backend, frontend npm test CustomAgentChatView 72/72, npm run typecheck; branche fix/307-startup-ghost-states-reconciliation commit 57cf825; correctif borné 6 fichiers: domain live_state correlation_id effacé des orphelins, infrastructure reconcile_project_boot borné par projet + test multi-projets, backend filtrage project_id des complétions + test intégration activate_project + B7 renforcé, frontend CustomAgentChatView état terminal « transcript indisponible » après récupération vide sans spinner infini; artefact: l'AppImage v0.46.0 (99b400a, buildée 14:21 depuis ce worktree incluant le WIP #307 complet) correspond au contenu de develop post-merge — restant validation live fermeture/relance depuis l'app installée; fichiers .ideai/tickets/*, attachments/ et scripts/ hors périmètre et préservés en worktree; aucun push) 2026-09-10 16:33:16 +02:00
57cf825f05 fix(backend,domain,infrastructure,frontend): réconcilie les états et tâches fantômes au démarrage — #307 (cause: l'activation projet balayait tous les documents background-task sous le root sans filtre project_id et LiveState::reconcile_orphans conservait correlation_id des lignes mortes, laissant après reboot des LED working fantômes et des tâches Running orphelines reprojetées par GetProjectWorkState, tandis qu'un conversationId isolé affichait indéfiniment « Conversation liée — récupération du transcript en cours. »; fix backend: FsBackgroundTaskStore::reconcile_project_boot borne la réconciliation boot au document du projet activé (API reconcile_boot historique préservée), AppBackgroundTaskStore filtre list_undelivered_completions sur project_id, et une ligne active orpheline efface désormais aussi correlation_id en plus de ticket/last_delegation; garde-fou frontend: CustomAgentChatView affiche l'état terminal « Conversation liée — transcript indisponible. » quand openOrAttach terminé n'a récupéré aucun tour, spinner borné à opening, conversationId et cellule préservés; QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p infrastructure --test background_task_store 12/12 dont project_reconcile_does_not_repair_or_report_foreign_project_tasks, -p domain --lib live_state 15/15, -p backend ticket307_activation_reconcile_tests 1/1 (activate_project_clears_stale_live_correlation_and_terminalizes_orphan_task) et background_tasks_b7 1/1 renforcé (orphan évicté de list_open_for_agent), -p application --test workstate 29/29, cargo check -p backend, frontend npm test CustomAgentChatView 72/72 dont garde-fou transcript indisponible, npm run typecheck; risque résiduel documenté: le garde-fou suppose que openOrAttach finit par se résoudre, pas de timeout transport ajouté; fichiers .ideai/tickets/296/*, tickets/299-307/*, counter/index, attachments/ et scripts/ hors périmètre et préservés en worktree; aucun push) 2026-09-10 16:33:02 +02:00
99b400a59e chore(appimage): rebuild AppImage develop — commit dédié v0.46.0 #306 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119871992 octets, sha256 e6e22132970357d8a67338edaf4c3b0adbee7a66265e09211e733abfa08825da, produit depuis le worktree develop @ eb86366 incluant le WIP #307 non committé présent au moment du build — correctif #306: recalcule la policy structured Codex sur les reprises custom/headless afin que project root et managed tmp soient transmis en writable_roots, fail-closed sans policy explicite; build exécuté via le skill build-appimage: npm --prefix frontend run build 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; commit dédié --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet #306/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild; correction topologie Git: le tag v0.46.0 avait d'abord été posé lightweight directement sur le commit de correctif eb86366 via runner IdeA, il est repositionné en tag annoté sur ce commit dédié conformément à la convention — aucune réécriture d'historique, aucun push; convention de tag vx.y.z respectée: y incrémenté pour un rebuild committé sur develop, v0.45.0 -> v0.46.0; restant: validation live écriture project root en delegation headless/CLI custom sur IdeaAndroidPlugin depuis l'app installée, remplacement AppImage et relance manuels; fichiers tickets/296/*, tickets/299-307/*, counter/index, attachments/, scripts/ et WIP #307 (crates/backend/src/lib.rs, crates/domain/src/live_state.rs, crates/infrastructure/src/store/background_task.rs, crates/infrastructure/tests/background_task_store.rs, frontend/src/features/agents/CustomAgentChatView.tsx+tests) hors périmètre et préservés en worktree; aucun push) 2026-09-10 15:09:37 +02:00
eb863664fa fix(codex): preserve project root on structured resume
Recalcule la policy structured Codex lors des reprises custom/headless afin que le project root et le managed tmp soient transmis en writable_roots. Fail-closed si une session Codex structured est lancée sans policy explicite.
2026-09-10 10:53:43 +02:00
ee5373e57e merge(agents): ArrowUp rappelle l'historique chat même en multiligne — #304 (QA verte reconfirmée par Git: npm test ciblé CustomAgentChatView 71/71, npm run typecheck OK, git diff --check OK, npm run build OK fourni par QA; branche fix/304-arrowup-chat-multiline-history commit db312bf; correctif borné 2 fichiers frontend: CustomAgentChatView.tsx + tests — ArrowUp rappelle le message précédent quand le curseur est en fin de dernière ligne, navigation caret conservée sinon; fichiers .ideai/* et scripts/ hors périmètre; aucun push) 2026-09-10 09:53:33 +02:00
db312bfde3 fix(frontend): ArrowUp rappelle l'historique chat même en multiligne — #304 (cause: le handler ArrowUp remontait dans le texte dès que le draft faisait plus d'une ligne, au lieu de rappeler le message précédent; fix type terminal: ArrowUp déclenche le rappel historique uniquement quand le curseur est à la fin de la dernière ligne du textarea, sinon navigation caret normale préservée; ArrowDown symétrique en fin de draft pour redescendre dans l'historique; QA verte reconfirmée par Git: npm test -- src/features/agents/CustomAgentChatView.test.tsx 71/71, npm run typecheck OK, git diff --check OK; QA fournie: npm run build OK; fichiers .ideai/* tickets/counter/index/attachments et scripts/ hors périmètre; aucun push) 2026-09-10 09:53:29 +02:00
5b0759630f chore(appimage): rebuild AppImage develop — commit dédié v0.45.0 #303 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119843320 octets, sha256 e57cc136f17d887798d09468f2858b1b025cd2386abdc4d517ccb49f464df5b5, produit depuis develop @ bd1c55d incluant le merge #303 — restauration des projets ouverts au redémarrage dans l'ordre mémorisé via open-projects.json, activation partagée watcher/MCP et notification d'échec avec retry/remove; commandes exécutées par Main: npm --prefix frontend run build OK puis depuis crates/app-tauri: mkdir -p /tmp/idea-cargo-home && CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage OK; commit dédié --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet #303/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild; convention de tag vx.y.z respectée: y incrémenté pour un rebuild committé sur develop, v0.44.0 -> v0.45.0, tag annoté posé sur ce commit; restant: validation live fermeture/relance depuis l'app installée v0.45.0 (ordre des onglets restauré, silence si tout réussit, notification échec avec Réessayer/Retirer de la reprise); fichiers tickets/296/*, tickets/299-303/*, counter/index, attachments/ et scripts/ hors périmètre; aucun push) 2026-09-10 08:18:40 +02:00
bd1c55d44b merge(projects): restaurer les projets ouverts au redémarrage dans l'ordre mémorisé — #303 (QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p backend open_project_restore_tests 1/1, cargo test -p web-server authorized_open_project_restore_commands_share_the_tauri_contract 1/1, cargo test -p domain 311+ suites vertes, cargo check -p application -p infrastructure -p backend -p app-tauri -p web-server OK, npm run typecheck OK, npm test ciblé 37/37, npm run build OK; branche feature/303-restore-open-projects-order commit 8df80ae; correctif borné 28 fichiers: modèle domain project_restore.rs + port OpenProjectRestoreStore, store infrastructure open-projects.json, 7 use cases application/project/restore.rs, activation centralisée BackendCore::activate_project partagée ouverture/création/restore/retry avec watcher+MCP+run dirs, DTO backend, commandes Tauri + routes HTTP aux contrats identiques, frontend gateway/adapters/useProjects/ProjectsView avec notification échec unique et détails/retry/remove; réserves hors périmètre préexistantes: layout_usecases.rs 2 échecs fixtures plugin, 1 timing infrastructure, 32 échecs npm test web shell/LS7/tickets — suivis séparément; restants: rebuild AppImage demandé (commit dédié + tag, incrément y sur develop -> v0.45.0) puis validation live fermeture/relance depuis l'app installée; fichiers tickets/296/*, tickets/299-303/*, counter/index, attachments/ et scripts/ hors périmètre; aucun push) 2026-09-10 08:14:35 +02:00
8df80ae67e feat(domain,application,infrastructure,backend,app-tauri,web-server,frontend): restaurer les projets ouverts au redémarrage dans l'ordre mémorisé — #303 (état versionné OpenProjectRestoreState persisté sous <app_data_dir>/open-projects.json via port dédié OpenProjectRestoreStore, distinct du registre projects.json et sans recycler workspace.json; sept use cases cadrés: read/record opened/record closed/save order/restore/retry/remove, mutations sérialisées par mutex applicatif contre les lost updates, tombstones conservés à leur position avec lastFailure et codes stables notFound/inaccessible/store/invalid; prévalidation root par metadata+listing sans interrompre les autres restaurations; activation centralisée BackendCore::activate_project réutilisée par ouverture Tauri/HTTP, création, restore et retry: reconciliation layouts/live-state/background tasks, watcher orchestrateur + serveur MCP, réparation run dirs Claude; cinq commandes exposées Tauri et HTTP avec contrats DTO identiques: restore_open_projects, retry_open_project_restore, remove_project_from_restore, save_open_project_restore_order, read_open_project_restore_state; frontend: DTO de reprise + ProjectGateway étendu, useProjects initialise par listProjects+restoreOpenProjects et reconstruit openTabs dans l'ordre opened sans notification quand tout réussit, notification unique singulier/pluriel avec Voir les détails/Réessayer, détail par projet avec cause française et Retirer de la reprise, retry réussi réinséré à la position mémorisée, onglet conservé si closeProject échoué; saveOpenProjectRestoreOrder exposé non appelé car l'UI ne permet pas encore de réordonnancer; QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p backend open_project_restore_tests 1/1 couvrant absence initiale/ordre/fermeture/inaccessible/retry/notFound/remove/watcher+MCP, cargo test -p web-server authorized_open_project_restore_commands_share_the_tauri_contract 1/1, cargo test -p domain 311+ suites vertes, cargo check -p application -p infrastructure -p backend -p app-tauri -p web-server OK, npm run typecheck OK, npm test ciblé 3 fichiers/37 tests OK, npm run build OK; réserves hors périmètre documentées au carnet: application tests/layout_usecases.rs 2 échecs fixtures plugin package NotFound, infrastructure 1 timing test cancellation process, npm test large 32 échecs web shell/LS7/tickets web — préexistants sans lien avec #303; restant: rebuild AppImage demandé après validation puis validation live fermeture/relance; fichiers tickets/296/*, tickets/299-303/*, counter/index, attachments/ et scripts/ hors périmètre; aucun push) 2026-09-10 08:14:28 +02:00
3911ce1f4d chore(appimage): rebuild AppImage develop — commit dédié v0.44.0 #302 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119699960 octets, sha256 d016aab3b643bab61a1ab864a4b5f5e5ab57ff1c493f12d1002918efa5c08c33, produit depuis develop @ 9e9498b incluant le merge #302 — propagation des serveurs MCP des plugins assignés dans les configs de session Claude/Codex/OpenCode pour corriger l'invisibilité des tools MCP plugin par l'agent cible; commandes exécutées par Main: npm --prefix frontend run build OK puis depuis crates/app-tauri: mkdir -p /tmp/idea-cargo-home && CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage OK; commit dédié --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet #302/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild; convention de tag vx.y.z respectée: y incrémenté pour un rebuild committé sur develop, v0.43.0 -> v0.44.0, tag annoté posé sur ce commit; restant: validation live UnitySOundTool (unity_detect_project visible et appelable par Main) depuis l'app installée; fichiers tickets/296/*, tickets/299-302/*, counter/index, attachments/ et scripts/ hors périmètre; aucun push) 2026-09-09 23:41:41 +02:00
9e9498b3be merge(plugins): les serveurs MCP des plugins assignés atteignent la session de l'agent — #302 (QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p application --lib 180/180, cargo test -p application --test agent_lifecycle 111/111, cargo test -p domain plugin --lib 7/7, cargo check -p backend OK, cargo check -p app-tauri OK; branche fix/302-plugin-mcp-tools-not-visible commit 78b379a; cause racine: assignments.tools PluginToolRef persistés mais jamais consommés par le launcher, seules les configs de session ne contenaient que le serveur MCP natif idea donc tool_search ne voyait pas les tools plugin; correctif borné 4 fichiers: domain/plugin.rs nom client stable idea_plugin__<enc>__<enc>, application/project_plugin.rs projection assigned_mcp_servers conditionnée actif/installé/autoStart, application/agent/lifecycle.rs matérialisation+réconciliation Claude .mcp.json / Codex config.toml / OpenCode opencode.json + racines Landlock lecture, backend/lib.rs branchement with_plugin_mcp_resolver; restants: gap OpenAI/direct tools_for_context (client JSON-RPC dédié) à traiter séparément, validation live UnitySOundTool après rebuild AppImage; fichiers tickets/296/*, tickets/299-302/*, counter/index, attachments/ et scripts/ hors périmètre; aucun push) 2026-09-09 23:37:41 +02:00
78b379ac51 fix(application,domain,backend): les serveurs MCP des plugins assignés atteignent la session de l'agent — #302 (cause: MutateAgentPluginTool persistait bien PluginToolRef dans ProjectPluginSettings mais le launcher ne consommait jamais assignments.tools, les configs de session ne contenaient que le serveur MCP natif idea, donc tool_search restait aveugle aux tools plugin comme unity_detect_project; fix: ProjectPluginResolver::assigned_mcp_servers projette les affectations de l'agent en specs stdio uniquement si plugin activé pour le projet/runtime-actif/installé et serveur autoStart, avec substitution ${pluginRoot}/${appDataDir}, dédup par (pluginId,serverId), et nom client stable idea_plugin__<enc>__<enc> via PluginMcpServerSpec::client_name qui encode chaque octet non alphanumérique pour éviter collisions TOML/namespace; matérialisation au lancement/restart dans .mcp.json + enabledMcpjsonServers (Claude), mcp_servers de .codex/config.toml (Codex), bloc mcp de opencode.json (OpenCode local/cloud), avec réconciliation préservant le wiring idea réel lors d'un restart interne sans McpRuntime et retirant les entrées plugin obsolètes; racines cwd/commande des serveurs assignés ajoutées en lecture au plan Landlock quand un plan existe; aucun changement de .ideai/mcp-tool-permissions.json ni pollution du catalogue natif idea_*; gap documenté: OpenAiCompatibleSession/tools_for_context ne rend pas les tools plugin appelables en direct (nécessite client JSON-RPC dédié), à traiter séparément; QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p application --lib 180/180 dont assigned_mcp_servers 2/2, cargo test -p application --test agent_lifecycle 111/111, cargo test -p domain plugin --lib 7/7 dont plugin_mcp_client_name_is_stable_and_collision_free_for_punctuation, cargo check -p backend OK, cargo check -p app-tauri OK; fichiers tickets/296/*, tickets/299-302/*, counter/index, attachments/ et scripts/ hors périmètre; aucun push) 2026-09-09 23:37:32 +02:00
0cfbc064b6 chore(appimage): rebuild AppImage develop — commit dédié v0.43.0 #301 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119523832 octets, sha256 9eb417e53395fdd864da413e9e86da5afbb7bc64653561959631964f8bd7cee0, produit depuis develop @ 941db62 — même source que v0.42.0: aucun changement de code depuis, #300 clos sans correctif core IdeA (diagnostic seul, correctif côté UnityPlugin + réinstall), rebuild à la demande utilisateur pour valider le catalogue tools MCP Unity réinstallé; commandes exécutées par Main: npm --prefix frontend run build OK puis depuis crates/app-tauri: mkdir -p /tmp/idea-cargo-home && CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage OK; commit dédié --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet #301/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild; convention de tag vx.y.z respectée: y incrémenté pour un rebuild committé sur develop, v0.42.0 -> v0.43.0, tag annoté posé sur ce commit; fichiers tickets/296/*, tickets/299/*, tickets/300/*, tickets/301/ et scripts/ hors périmètre; aucun push) 2026-09-09 22:31:00 +02:00
941db62856 chore(appimage): rebuild AppImage develop — commit dédié v0.42.0 #299 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119523832 octets, sha256 31e400c6ef6caefef658fe11b51b371c8571ea8011555aa20e4d272a3eb2742b, produit depuis develop @ c47bc8d incluant le merge #299 — détachement du panneau MCP en fenêtre OS; commandes exécutées par Main: npm --prefix frontend run build OK puis depuis crates/app-tauri: mkdir -p /tmp/idea-cargo-home && CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage OK; commit dédié --allow-empty: l'artefact vit sous target/ gitignoré et le bookkeeping carnet #299/index/counter reste hors périmètre en worktree — ce message est la trace durable in-repo du rebuild; convention de tag vx.y.z respectée: y incrémenté pour un rebuild committé sur develop, v0.41.0 -> v0.42.0, tag annoté posé sur ce commit; restant: validation live du détachement MCP depuis l'app installée; fichiers tickets/296/*, tickets/299/ et scripts/ hors périmètre; aucun push) 2026-09-09 21:45:47 +02:00
c47bc8d573 merge(views): le panneau MCP se détache en fenêtre OS — #299 (QA verte reconfirmée par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p app-tauri view_window_tests 9/9 dont mcp_view_window_contract_is_stable, persisted_identity_accepts_mcp_view_label 1/1, npm test 22/22 sur ViewWindow/ProjectsView.detach/viewPlacement, npm run build tsc+vite OK; branche fix/299-mcp-panel-detach-window commit e4622cd; cause racine: enum Rust ViewPanel sans variante Mcp donc open_view_window rejetait INVALID silencieusement; correctif borné 6 fichiers: variante ViewPanel::Mcp + contrats label view-mcp/url/title/identité persistée, alerte explicite avec Réessayer sur échec de détachement dans ProjectsView; restants: rebuild AppImage + validation live du détachement MCP depuis l'app installée; fichiers tickets/296/*, tickets/299/ et scripts/ hors périmètre; aucun push) 2026-09-09 21:41:56 +02:00
e4622cd753 fix(app-tauri,frontend): le panneau MCP se détache en fenêtre OS — #299 (cause: enum Rust ViewPanel sans variante Mcp, open_view_window("mcp") rejetait INVALID et detachPanel ne touchait le placement qu'en cas de succès donc aucun effet visible ni message; fix: variante ViewPanel::Mcp avec parse/as_str/title "MCP" + contrat stable label view-mcp / url index.html?panel=mcp / decodage view_panel_from_window_label, identite persistee des fenetres view-mcp acceptee a la restauration #50, et ProjectsView surface desormais un echec de detachement via alerte role=alert avec bouton Reessayer au lieu de l'echec silencieux — placement conserve tant que la fenetre OS ne s'ouvre pas; QA verte reconfirmee par Git: rustup run stable cargo fmt --all -- --check, git diff --check, cargo test -p app-tauri view_window_tests 9/9 dont mcp_view_window_contract_is_stable, persisted_identity_accepts_mcp_view_label 1/1, npm test 22/22 sur ViewWindow/ProjectsView.detach/viewPlacement, npm run build tsc+vite OK; fichiers tickets/296/*, tickets/299/, scripts/ et sync counter/index hors perimetre; aucun push) 2026-09-09 21:41:41 +02:00
602abfea58 chore(tickets): sync store local — clôture #298 par Main après rebuild AppImage validé (issue/carnet v4 statut closed, index à jour; tag v0.41.0 inchangé sur le commit dedie rebuild b463fef, non deplace); fichiers tickets/296/* et scripts/ toujours hors perimetre; aucun push 2026-09-09 21:07:05 +02:00
b463fef6ef chore(appimage): rebuild AppImage develop — commit dedie v0.41.0 #298 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 119519736 octets, sha256 8897d85bc2f5aacd0694bf4f2df9baeefc944deb9af36612f3945ca84edc18ca, produit depuis develop @ 6c204d1 incluant le merge #297 — menus Skills/MCP unifies; commandes carnet: npm --prefix frontend run build OK + tauri build --bundles appimage CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 OK; porte le bookkeeping #298: carnet avec convention de tag vx.y.z — x sur master, y sur develop, z sur branches issues de develop — index/counter; regle aussi dans .ideai/CONTEXT.md non versionne par design (.gitignore), le carnet #298 en est la trace durable in-repo; tickets/296/* et scripts/ hors perimetre; tag annote v0.41.0 pose sur ce commit; aucun push) 2026-09-09 21:06:30 +02:00
6c204d12f9 merge(skills,mcp): menus Skills et MCP unifies avec selection cochable #297 (QA verte reconfirmée par Git: 52 tests cibles sur 7 fichiers + npm run build tsc/vite OK; branche feature/297-skills-mcp-unified-menus commits e6ce7d6 + 2070de9 + 48420ba; restants: rebuild AppImage + validation live des panneaux Skills/MCP depuis l'app installee; saisie manuelle du nom exact retiree — serveurs plugin sans catalogue en tombstones retirables uniquement; reserves non bloquantes: 32 echecs frontend sur 6 fichiers web hors perimetre classes par QA; bookkeeping tickets/296/* et scripts/ non suivis hors perimetre; aucun push) 2026-09-09 20:40:47 +02:00
48420baf84 chore(tickets): sync store local — clôture #297 par Main après QA verte et commits e6ce7d6 + 2070de9 (issue/carnet v6 statut closed, index à jour); fichiers tickets/296/* et scripts/ toujours hors perimetre; aucun push 2026-09-09 20:39:36 +02:00
2070de9b88 chore(tickets): sync store local — creation #297 (carnet complet cadrage UX/Architect + implementation DevFrontend + validation QA verte, index/counter) et memoire durable ticket297-skills-mcp-unified-surfaces; porte egalement le statut residuel #296 qa->closed dans l'index partage (sync post-fusion f78f009 non committee); fichiers tickets/296/* et scripts/ laisses hors perimetre; aucun push 2026-09-09 20:38:46 +02:00
e6ce7d6e74 feat(skills,mcp): menus Skills et MCP unifies avec selection cochable des tools #297 (SkillsPanel devient la surface unique d'assignation cochable des skills IdeA + plugins — cible agent, recherche, groupes IdeA/Plugins, tombstones retirables, CRUD catalogue natif conserve, stores separes SkillGateway/PluginGateway; nouveau panneau MCP dedie McpPanel desktop+web — tools MCP IdeA via PermissionGateway et tools MCP plugins catalogues via PluginGateway groupes par plugin/serveur, selection cochable, fin de la saisie manuelle du nom exact, serveurs sans catalogue en tombstones retirables uniquement; retrait complet de la surface Capacites de la fiche agent et suppression d'AgentPluginCapabilities.tsx; PermissionsPanel reserve aux permissions systeme/sandbox, onglet MCP retire; raccourci Parametres > Plugins ouvre Skills avec renvois vers Skills/MCP; integration ProjectsView/ViewPanelBody/viewPlacement/WebWorkspace/webSurfaceCatalog; QA verte: tsc+vite build OK, 28+24 tests cibles OK, suite complete 1223 OK / 32 echecs sur 6 fichiers web hors perimetre classes non bloquants; scripts/ et sync tickets #296 hors perimetre; aucun push) 2026-09-09 20:38:39 +02:00
f78f0093e8 merge(agents,plugins): surface unifiée Capacités de l'agent — skills et tools MCP natifs + plugins #296 (QA verte reconfirmée par Git: application mcp_tool_permissions 5/5 + plugin::tests 37/37, backend ciblés + checks, app-tauri dto 33+30+2, npm test 35/35 + 65/65, npm run build, SDK npm run check; branche feature/296-unified-agent-capabilities commits e283f4a + fda1b2d + 2c3234e, SDK d93e302 mergé 436ed59 + bump pointeur; restants: rebuild AppImage + validation live attribution depuis la fiche agent, clôture statique outils dynamiques réservée #282 — saisie manuelle conservée pour serveurs sans metadata; réserves non bloquantes: suites web/frontend complètes rouges classées par QA — 7 PTY web-server série passant individuellement + too many open files parallèle, 32 échecs frontend sur 6 fichiers web non modifiés; scripts/ hors périmètre; aucun push) 2026-09-09 19:52:50 +02:00
2c3234e84f chore(tickets): sync store local — #296 passage qa après QA verte (carnet complet surface unifiée Capacités agent + classification suites rouges non bloquantes; index/counter) + #295 mise à jour carnet/statut par Main; scripts/ hors périmètre; aucun push 2026-09-09 19:52:45 +02:00