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
fda1b2dcbc
chore(sdk): pointe le submodule sur develop (post-merge feature/296-unified-agent-capabilities) — metadata statiques mcpServers[].tools #296 (QA verte: npm run check; aucun push)
2026-09-09 19:52:45 +02:00
e283f4a9e4
feat(agents,plugins): surface unifiée Capacités de l'agent — skills et tools MCP natifs + plugins #296 (domain: PluginMcpToolMetadata dans PluginMcpServerContribution, validation hôte alignée SDK — name requis non vide, description optionnelle non vide, doublons rejetés; application: McpToolPermissionCatalogue.vue structurée additive tools {name, description, access read|writeAction} enrichie des descriptions canoniques infrastructure orchestrator mcp tools, use case SetAgentMcpToolAllowed — toggle atomique idempotente d'un tool natif dans l'allowlist explicite d'un agent, refus unknown tool sans mutation, overrides vides retirés; backend DTO: catalogue.tools additive + SetAgentMcpToolAllowedRequestDto, wire camelCase; app-tauri + web-server: commande set_agent_mcp_tool_allowed; frontend: AgentPluginCapabilities devient la surface unifiée — skills natifs assign/unassign, tools natifs via setAgentMcpToolAllowed (catalogue structuré avec fallback legacy), skills/tools plugins avec metadata statiques mcpServers[].tools et saisie manuelle fallback pour serveurs sans catalogue, tombstones indisponibles, bannière redémarrage requis si agent actif; AgentsPanel retire l'ancienne section Skills séparée au profit de la surface unifiée; ProjectPluginsPanel recentré enable/disable avec renvoi Capacités des agents; adapters Tauri/HTTP/mock + permission.test.ts; QA verte reconfirmée par Git: application mcp_tool_permissions 5/5 + plugin::tests 37/37, backend ciblés 3/3 + checks domain/application/backend, app-tauri dto 33/33 + dto_agents 30/30 + dto_plugins 2/2, check web-server, npm test 35/35 + 65/65, npm run build; suites complètes rouges classées non bloquantes par QA: web-server parallèle too many open files + 7 PTY série passant individuellement, frontend 32 échecs sur 6 fichiers web non modifiés reproduits isolément)
2026-09-09 19:52:38 +02:00
6e4d9eb47e
merge(chat): le transcript s'affiche à nouveau après redémarrage automatique d'un agent — #295 (QA verte reconfirmée par Git: diff --check, fmt --all --check, app-tauri chat_bridge 34/34 + dto_chat 24/24, backend 91+7 ignored, web-server websocket_chat_attach 3/3, npm test 77/77, npm run build; branche fix/295-custom-chat-transcript-after-restart commits 1b1476d + 8482fc5; restant: rebuild AppImage + validation live post-restart depuis l'app installée; réserves non bloquantes: 7 tests backend ignored permissions socket, warnings Vite connus; scripts/ hors périmètre; aucun push)
2026-09-09 18:44:15 +02:00