Commit Graph

1039 Commits

Author SHA1 Message Date
76d91c3487 feat(frontend): queue custom CLI messages while agent is busy and add Final/latest-message navigation — #352 (QA verte)
Custom CLI composer stays active during busy turns: submitting while the
agent works enqueues the message instead of sending it. Local FIFO queue
scoped per cell (projectId+agentId+layoutId+nodeId), entries carry id,
text, attachments snapshot and createdAtMs; single in-flight
transmission, entry removed at send time, auto-drain only on final
chunk, queue preserved on error/Stop with 'Relancer l'agent' action on
stopped cells. 'En attente · N' panel anchored above the composer:
order, 2-line preview, per-entry edit/delete with transient undo, clear
all with confirmation; main button switches Send / 'Mettre en attente'
with live announcement; layout contract updated (CLI visible while
busy, textarea enabled, Stop available). Chat navigation: round up-arrow
under the agent bar jumps to previous Final, round down-arrow above the
composer appears when not at bottom to jump to latest message,
auto-scroll suspended while reading history, prefers-reduced-motion and
44px a11y targets respected.
Ports unchanged (AgentGateway send/cancel/reattach, restartCellAgentRuntime).
QA verte reconfirmée par Git: targeted suites 115/115
(CustomAgentChatView/LayoutGrid/LayoutGrid.chat), git diff --check;
QA: npm run typecheck OK, npm run build OK.
Réserves documentées: queue renderer-local (non persistée après restart
complet), validation visuelle cellules très étroites restante.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 22:58:27 +02:00
4ec196b988 chore(appimage): rebuild AppImage develop — commit dédié v0.64.0 #351 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120863224 octets, mode 755, sha256 1867428962841b403d7bf8c79cc17fc41b8f9e865f358b9ee18d73df166f56dc, produit depuis develop @ 0d62a654 incluant le fix #351 — fantôme empty-state plein-cellule et icônes projet monochromes teintées par la couleur projet (08c05c18, merge 0d62a654, QA verte) ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.63.0 -> v0.64.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.64.0 — fantôme plein-cellule dans la cellule agent vide, icônes projet monochromes teintées couleur projet, libellé vide masqué en cellule contrainte ; 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-13 19:08:26 +02:00
0d62a6540d merge(frontend): correction #351 — fantôme empty-state plein-cellule et icônes projet monochromes teintées par la couleur projet (QA verte)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 19:04:44 +02:00
08c05c1841 fix(frontend): expand empty-state watermark to full cell and tint monochrome project icons by project color — #351 (QA verte)
Cause: the empty-state watermark filled only 92% of a centered box and
kept residual palette colors from host emoji fonts, non-compliant with
the monochrome-first project icon rule (#351 user capture).
Fix: illustration spans the cell with 6px/4px insets and an unclipped
glyph at min(88cqw, 88cqh); emoji painted as monochrome silhouettes via
transparent fill + zero-offset text-shadow tint
(--project-illustration-tint) derived from accessibleProjectAccent when
a project color exists, neutral muted fallback otherwise; empty label
anchored bottom-center and hidden first on constrained containers
(@container 280px width / 240px height); overlay priorities, composer
and z-layering untouched.
QA verte reconfirmée par Git: npm test -- CustomAgentChatView.test.tsx
80/80, git diff --check; QA: ProjectSettingsPanel 12/12, typecheck,
build OK (warning Vite chunk >500 kB préexistant).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 19:04:32 +02:00
64da043a8e chore(appimage): rebuild AppImage develop — commit dédié v0.63.0 #350 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120863224 octets, mode 755, sha256 a6b57a6f1ef17ec482f0c4e16aed72059b3b19d6c82e4a956cd4fffc21586b5d, produit depuis develop @ b6b79dd9 incluant le lot #350 — animation d'écartement des onglets lors du drag/reorder pour matérialiser l'emplacement de drop, icônes projet noir et blanc colorisées par couleur projet occupant la cellule et visibles derrière les messages avec transparence légère, tools/skills plugin autorisés utilisables par les agents en headless sans seconde approbation sous approval_policy=never via allowlist authorized_tools projetée vers les runtimes, refs stables des skills assignées plugin:<pluginId>:<skillId> avec idea_skill_read(ref=...) canonique et erreur ambiguousSkillName, dédoublonnage du skill plugin android-build-install (92d0dce2, merge b6b79dd9, QA verte) ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.62.0 -> v0.63.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.63.0 — animation de drop des onglets, icônes projet derrière les messages, tools/skills plugin sans approbation additionnelle en headless, skill plugin dédoublonné ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-13 14:16:01 +02:00
b6b79dd9e1 merge(domain,application,infrastructure,backend,app-tauri,frontend): lot utilisateur #350 — animation d'écartement des onglets au drag, icônes projet N&B colorisées derrière les messages, tools/skills plugin autorisés utilisables en headless sans seconde approbation, refs stables des skills assignés et dédoublonnage (QA verte) 2026-09-13 14:11:42 +02:00
92d0dce2b7 feat(domain,application,infrastructure,backend,app-tauri,frontend): lot utilisateur #350 — animation d'écartement des onglets au drag/reorder, icônes projet N&B colorisées derrière les messages, tools/skills plugin utilisables par les agents autorisés en headless, refs stables des skills assignés (QA verte)
- Tabs (shared/ui): cible de drop matérialisée par écartement before/after pendant le drag/reorder, reset via rAF sans reliquat, clavier et annonces préservés.
- projectIcons: icônes projet en noir et blanc par défaut, colorisées avec la couleur du projet, occupant la cellule et visibles derrière les messages rendus légèrement transparents.
- Permissions plugin headless: PluginMcpServerSpec transporte l'allowlist exacte authorized_tools regroupée par (pluginId, serverId) depuis les PluginToolRef; projection Codex enabled_tools + default_tools_approval_mode="approve" — une permission déjà accordée au niveau projet/template ne déclenche pas de seconde approbation, un tool non assigné reste hors surface appelable; réserves orchestrator/mcp server+tools alignées, dto backend + dto_agents app-tauri.
- Skills: ref stable plugin:<pluginId>:<skillId> exposée dans le contexte agent, idea_skill_read(ref=...) canonique via read_assigned_by_ref, erreur structurée ambiguousSkillName avec candidates; SkillsPanel dédoublonné (android-build-install); agents-dev/L12-skills.md à jour.
- Docs: ARCHITECTURE.md section 22.3 (projection des autorisations agent vers les runtimes plugin).
- QA verte #350 reconfirmée avant commit.
2026-09-13 14:11:31 +02:00
1e15bf9f96 chore(appimage): rebuild AppImage develop — commit dédié v0.62.0 #346 #347 #348 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120805880 octets, mode 755, sha256 8433e91c9bdb8560798887bbeb136515052ecbbb89c4bd27153f7f941cc37ecb, produit depuis develop @ a8c626c6 incluant la feature #345 — remplacement du catalogue d'icônes projet par des emojis Unicode système sans assets propriétaires (ff1d9af5, merge 65c86745) et le lot #346 #347 #348 — exécution workspace plugin contrôlée par l'hôte pour capacités SCM (fin des lectures ad hoc du .git par les plugins), onglets projet réordonnables par glisser-déposer, Final restauré après stop d'agent CLI custom (561c50f6, merge a8c626c6) — PREMIÈRE AppImage embarquant le contrat permissions.workspaceExec côté hôte et le gitlink SDK 8ff0f47 (précédent 720cd53) ; delta source propre depuis v0.61.0: uniquement #345 + lot #346 #347 #348, gitlink SDK avancé de 4 commits locaux dont 8ff0f47 ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.61.0 -> v0.62.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.62.0 — picker d'icônes emoji #345, réordonnancement des onglets projet #347, Final visible après stop CLI custom #348, capacités plugin workspaceExec #346 ; note: scripts/ non suivi au repo root, signalé hors périmètre et volontairement non inclus ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-13 12:27:52 +02:00
a8c626c6d7 merge(backend,frontend): lot utilisateur #346 #347 #348 — exécution workspace plugin contrôlée (SCM sans lecture ad hoc du .git), onglets projet réordonnables, Final restauré après stop CLI custom (QA verte) 2026-09-13 12:23:53 +02:00
561c50f6ed feat(backend,frontend): lot utilisateur #346 #347 #348 — exécution workspace plugin contrôlée par l'hôte, réordonnancement des onglets projet par glisser-déposer, Final restauré après stop d'agent CLI custom (QA verte)
#346 — capacités plugin SCM: le manifeste permissions.workspaceExec
(contrat SDK 8ff0f47) est appliqué côté hôte — domain PluginWorkspaceExec
Rule/Effect + audit sink, port WorkspaceToolRunner, adapter
LocalWorkspaceToolRunner sandboxé (concurrence 4, timeout, bornes
stdout/stderr, résolution bare executable sans shell), service
application + DTO backend + commandes app-tauri, gateway frontend
execTool exposée au runtime plugin — fin des lectures ad hoc du store
interne .git par les plugins.
#347 — onglets projet réordonnables par glisser-déposer (Tabs DnD,
onReorder, persistance de l'ordre via useProjects).
#348 — stop d'agent CLI custom: le message Final vert réapparaît au tour
suivant (override terminal stop armé correctement, reset de
l'interaction, refresh de la délégation requester).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 12:23:44 +02:00
2b0d82efa3 chore(sdk): pointe le submodule IdeaSDK sur 8ff0f47 — contrat permissions.workspaceExec (#346)
Consolidation locale: le worktree du lot n'avait pas de submodule initialisé;
clone local du checkout principal et alignement sur le commit SDK #346
(docs+runtime workspaceExec). Aucun push.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 12:08:12 +02:00
65c86745cc merge(domain,frontend): feature #345 — remplace le catalogue d'icônes projet par des emojis Unicode système, sans assets propriétaires (QA verte) 2026-09-13 10:52:39 +02:00
ff1d9af53a feat(domain,frontend): remplace le catalogue d'icônes projet par des emojis Unicode système — #345 (QA verte)
Reprend à zéro la liste des icônes projet: catalogue d'emojis Unicode rendus
par la police système, sans embarquer d'assets graphiques propriétaires.
- domain: variante `emoji` ajoutée à ProjectIconSet (serde kebab-case)
- ports TS: union ProjectIconSet alignée avec "emoji"
- frontend: catalogue réécrit en 7 groupes (smileys, nature, food,
  activities, travel, objects, symbols), registres légaux et métadonnées
  supprimés, assets SVG projet retirés (angular.svg, NOTICE.md)
- watermark CLI custom: rendu emoji direct avec libellé de repli dérivé du
  nom de dossier du cwd
- i18n FR/EN des groupes du picker et tests mis à jour (domain settings,
  adapter projet, picker, panneau settings, chat custom)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 10:52:29 +02:00
1006f62001 chore(appimage): rebuild AppImage develop — commit dédié v0.61.0 #344 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120736248 octets, mode 755, sha256 dd77babcd519712a68344dac3e77d1627e6a59dc2edf56955a527f75f940e5ae, produit depuis develop @ ed626d74 incluant le fix critique #343 — Stop demande agent préserve la conversation ouverte, arrêt sans fermeture du chat, états cohérents après cancel sur les 3 adapters de session (c37638ff, merge ed626d74) — PREMIÈRE AppImage embarquant le fix critique #343 Stop demande préserve la conversation ; delta source propre: uniquement #343 depuis v0.60.0, SDK submodule 720cd53 inchangé ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.60.0 -> v0.61.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.61.0 — Stop d'un agent ne ferme plus sa conversation, cellule et workstate cohérents après cancel, non-régression cascade #320 (#343) ; note: scripts/ non suivi au repo root, signalé hors périmètre et volontairement non inclus ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #344 ; aucun push. 2026-09-13 10:08:47 +02:00
ed626d74cd merge(domain,application,infrastructure,backend,app-tauri,frontend): fix #343 — Stop demande agent préserve la conversation ouverte, états cohérents après cancel (QA verte) 2026-09-13 10:03:42 +02:00
c37638ff24 fix(domain,application,infrastructure,backend,app-tauri,frontend): Stop demande agent préserve la conversation ouverte — arrêt sans fermeture/clôture du chat, états cohérents après cancel sur les 3 adapters de session, cellule et workstate synchronisés — #343 (QA verte) 2026-09-13 10:03:36 +02:00
a1e8a6466f chore(appimage): rebuild AppImage develop — commit dédié v0.60.0 #342 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120703480 octets, mode 755, sha256 230a806b99f6060bcac20f463123b009ed30aca4231351e62db20b55cca50071, produit depuis develop @ 5d0b3254 incluant la feature #341 — tools MCP workspace natifs read-only idea_workspace_map/list/read/search, activés par défaut, configurables dans permissions MCP et templates (7b712f2b, merge 5d0b3254) — PREMIÈRE AppImage exposant les tools workspace #341 aux agents, validation live des tools depuis agents réels (Codex/Claude/OpenCode) désormais possible ; delta source propre: uniquement #341 depuis v0.59.0, SDK submodule 720cd53 inchangé ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.59.0 -> v0.60.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.60.0 — tools idea_workspace_map/list/read/search visibles et opérationnels depuis les agents, désactivation possible dans permissions MCP/templates (#341) ; note: scripts/ non suivi au repo root, signalé hors périmètre et volontairement non inclus ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #342 ; aucun push. 2026-09-12 19:21:32 +02:00
5d0b32542d merge(infrastructure,backend,app-tauri,frontend): feature #341 — tools MCP workspace natifs read-only idea_workspace_map/list/read/search, activés par défaut, configurables surfaces MCP/templates (QA verte) 2026-09-12 19:17:16 +02:00
7b712f2b62 feat(infrastructure,backend,app-tauri,frontend): tools MCP workspace natifs read-only idea_workspace_map/list/read/search, activés par défaut et configurables dans les permissions MCP et les templates — #341 (QA verte) 2026-09-12 19:17:09 +02:00
ea42d95f2e chore(appimage): rebuild AppImage develop — commit dédié v0.59.0 #340 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120699384 octets, mode 755, sha256 8932a0e9c9b39f53a01963d839b6c3bb294cc2dffc0c93d23b67174264daf64a, produit depuis develop @ 4be94a14 incluant le fix #339 — renforce la couleur projet dans les onglets non sélectionnés, teinte inactive 5% + hover thématisé (987b33db, merge 4be94a14) — PREMIÈRE AppImage embarquant #339, couleur projet renforcée visible dans l'app ; delta source propre: uniquement #339 depuis v0.58.0, SDK submodule 720cd53 inchangé ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.58.0 -> v0.59.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.59.0 — couleur projet renforcée dans les onglets non sélectionnés, état sélectionné non régressé (#339) ; note: scripts/ non suivi au repo root, signalé hors périmètre et volontairement non inclus ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #340 ; aucun push. 2026-09-12 16:25:59 +02:00
4be94a149c merge(frontend): fix #339 — renforce la couleur projet dans les onglets non sélectionnés, teinte 5% + hover thématisé (QA verte) 2026-09-12 16:22:19 +02:00
987b33dbb4 fix(frontend): renforce la couleur projet dans les onglets non sélectionnés — teinte inactive 5% (+25% vs 4%), hover thématisé, actif préservé — #339 (QA verte) 2026-09-12 16:22:13 +02:00
d537ae75df chore(appimage): rebuild AppImage develop — commit dédié v0.58.0 #338 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120699384 octets, mode 755, sha256 f14a92decfa1b967eb44d9574c6c5ef88a4b120a828f3ae70c181e71738cea3a, produit depuis develop @ c44c380f — REBUILD SANS DELTA SOURCE vs v0.57.0: aucun commit entre v0.57.0 (c44c380f) et ce build, sources identiques #335 + #336, SDK submodule 720cd53 inchangé, artefact fonctionnellement équivalent au précédent, motif demande utilisateur #338 ; commandes: npm --prefix frontend run build 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 ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.57.0 -> v0.58.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.58.0 (contenu identique à v0.57.0) ; note: scripts/ non suivi au repo root, signalé hors périmètre et volontairement non inclus ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #338 ; aucun push. 2026-09-12 16:12:06 +02:00
c44c380fbe chore(appimage): rebuild AppImage develop — commit dédié v0.57.0 #337 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M, sha256 5a11133f123374e951e840d97dd38b4e60cff5621a86c4180bf257bb8bf3103c, produit depuis develop @ 0b0e58ec incluant le merge du fix #336 — dispatch des commandes de menus plugin fiabilisé après hot reload, garde d'enregistrement côté hôte + feedback structuré i18n (1844c993, merge 8d7ed9c9) ET la feature #335 — registre icônes de marque légales, monogrammes A-Z, filigrane CLI agrandi (52365c24), première AppImage embarquant #335 ; contrat docs SDK #336 embarqué via bump submodule 0b0e58ec, docs only ; commandes: 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, beforeBuildCommand build:bundle relancé par Tauri ; build réussi, réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.56.0 -> v0.57.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.57.0 — menus plugin Git (Ouvrir les dépôts Git / Configurer / Actualiser / Git Graph) fonctionnels sans redémarrage après reload (#336), icônes de marque/monogrammes A-Z/filigrane CLI visibles (#336 #335) ; note: scripts/ non suivi au repo root, signalé hors périmètre et volontairement non inclus ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #337 ; aucun push. 2026-09-12 14:21:13 +02:00
0b0e58eca8 chore(sdk): bump submodule — contrat docs #336 fiabilise apres hot reload (erreur retryable jamais no-op, feedback skipped/failed host-owned, rejet windows.open remonte, commandes stale rejetees, reload sans refresh auto) — merges SDK 9efb781 + 116b75a, docs only, aucun push 2026-09-12 14:06:54 +02:00
8d7ed9c93e merge(frontend): fix #336 — fiabilise le dispatch des commandes de menus plugin après hot reload, garde d'enregistrement + feedback i18n (QA verte) 2026-09-12 14:03:17 +02:00
1844c99312 fix(frontend): fiabilise le dispatch des commandes de menus plugin après hot reload — garde d'enregistrement côté hôte + feedback structuré i18n (failed/skipped) — #336 (QA verte) 2026-09-12 14:03:11 +02:00
52365c24af merge(frontend): feature #335 — registre icônes de marque légales, monogrammes A-Z et filigrane CLI agrandi (QA verte) 2026-09-12 12:29:43 +02:00
4c69914817 feat(frontend): registre icônes de marque légales avec métadonnées et fallback, monogrammes A-Z et filigrane CLI agrandi — #335 (QA verte) 2026-09-12 12:29:35 +02:00
460fad4e60 chore(appimage): rebuild AppImage develop — commit dédié v0.56.0 #334 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120703480 octets, sha256 39518f3cc15919c439f96cb78d105ab0b1b61a2c9ef68433125686fe20d5021b, produit depuis develop @ 26ce3d70 incluant le merge du fix #333 — namespace MCP plugin borné à 64 chars pour Codex/OpenAI (a94167ad) ; commandes: 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 ; QA verte sur le fix ; build réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.55.0 -> v0.56.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.56.0 — sur UnitySoundTool les namespaces MCP plugin tiennent dans la limite 64 d'OpenAI (client_name 59 bytes, stem tronqué + hash SHA-256) et les échecs terminaux Codex remontent avec le code lisible MCP_NAMESPACE_TOO_LONG au lieu du fallback générique ; IMPORTANT: les agents Codex existants doivent redémarrer avec une nouvelle conversation — les historiques antérieurs contiennent le namespace invalide et resteront en échec HTTP 400 ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #334 ; aucun push. 2026-09-12 08:02:01 +02:00
26ce3d70d8 merge(domain,application,infrastructure): fix #333 — namespace MCP plugin borné à 64 chars pour Codex/OpenAI, client_name tronqué + hash déterministe, erreurs terminales Codex remontées (QA verte) 2026-09-12 07:57:03 +02:00
a94167ada0 fix(domain,application,infrastructure): borne le namespace MCP plugin à 64 chars pour Codex/OpenAI — #333 (QA verte)
Cause racine: PluginMcpServerSpec::client_name() encodait chaque octet
non alphanumérique en _XX, produisant pour UnitySoundTool
`idea_plugin__com_2eidea_2eunity_2ddeveloper_2dtools__unity_2ddeveloper_2dtools_2etools`
(86 chars). Codex préfixe `mcp__` => 91 chars, limite API 64 => HTTP 400
`Invalid input.namespace string too long` sur chaque `codex exec resume`
dont l'historique contenait un outil Unity, aucun agent_message, UI en
fallback générique « réponse non finalisée ».

- domain: client_name() borné à 59 bytes ASCII (=> 64 avec mcp__) —
  stem lisible (minuscules, non-alnum => '_', tronqué) + suffixe
  déterministe = 16 premiers hex de SHA-256(plugin_id + NUL + server_id)
  pour conserver la résistance aux collisions après troncature; tests
  Unity (59 exact), stabilité, slug ponctuation, collisions sur stems
  tronqués identiques
- application: tests de projection TOML/JSON Codex et Claude adaptés au
  vrai namespace legacy encodé (86 chars) — vérifie que les tables
  utilisateur (mcp_servers.user_server, user-server) sont préservées
  pendant le retrait des tables managées périmées
- infrastructure: parse_event Codex traite turn.failed/error comme
  ReplyEvent::Error avec le message fournisseur (fini le fallback
  générique muet), classification lisible MCP_NAMESPACE_TOO_LONG: pour
  les erreurs de longueur de namespace; tests

Après déploiement: nouvelle conversation/restart requis pour les agents
Codex existants — les historiques contiennent déjà le namespace
invalide. Aucun push.
2026-09-12 07:57:03 +02:00
25506e160a chore(appimage): rebuild AppImage develop — commit dédié v0.55.0 #328 #329 #330 #331 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120695288 octets, sha256 3a60ba6068f8a093de3707ce551940ad3e21020dd8b616244f2a5999cde459c5, produit depuis develop @ 6af1e6c1 incluant le merge du lot utilisateur #328 #329 #330 #331 — section plugins projet, erreurs menus plugin visibles, refresh auto des pages, droplist agents (db67ecdf) ; commandes: 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 ; QA verte sur le lot ; build réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.54.0 -> v0.55.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.55.0 — section dédiée activation/désactivation des plugins dans Paramètres du projet, échecs des commandes de menus plugin remontés à l'hôte, pages tickets/plugins/agents rafraîchies automatiquement après changements, droplist agents des cellules au thème avec états hover/focus/disabled ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #332 ; aucun push. 2026-09-12 01:20:28 +02:00
6af1e6c16e merge(domain,application,backend,app-tauri,frontend): lot utilisateur #328 #329 #330 #331 — section plugins projet, erreurs menus plugin visibles, refresh auto des pages, droplist agents (QA verte) 2026-09-12 01:15:05 +02:00
db67ecdf8f feat(domain,application,backend,app-tauri,frontend): lot utilisateur #328 #329 #330 #331 — section plugins projet, erreurs menus plugin visibles, refresh auto des pages, droplist agents (QA verte)
Lot en un seul commit: les quatre tickets partagent les mêmes fichiers
(événements domaine/DTO, ProjectPluginsPanel, useProjectPlugins) — une
séparation par hunks aurait risqué des états intermédiaires non
compilables (convention lot des batches #310-#313, #315 et #325-#326).

#328 — section dédiée plugins dans Paramètres du projet:
- frontend: ProjectPluginsPanel intégré à ProjectSettingsPanel
  (Panneaux > Paramètres du projet) — activation/désactivation par
  plugin avec état actif/inactif explicite par projet, distinct de
  l'assignation agents/skills/tools
- domaine: événement ProjectPluginSettingsChanged publié par
  SetProjectPluginEnabled, MutateAgentPluginSkill et
  MutateAgentPluginTool après persistance de .ideai/project-plugins.json
  (application + backend + DTO camelCase, test dto.rs)

#329 — les menus plugin qui échouent ne sont plus muets:
- usePluginMenus: dispatcher strict (runCommandStrict) pour les
  commandes réellement enregistrées au lieu du dispatcher laxiste qui
  journalisait et avalait les rejets — rendait les échecs d'ouverture
  de fenêtres natifs invisibles pour l'hôte de menus
- le no-op SDK historique (commande déclarée sans handler) est préservé
- échec remonté à l'hôte via commandError/clearCommandError (journal
  console + état exposé); test window_usecases adapté à un plugin
  installé
- le correctif côté SDK/GitPlugin vit dans le projet GitPlugin (son
  commit/merge local y est fait, hors périmètre de ce dépôt)

#330 — refresh automatique des pages:
- frontend/domain: typage des événements pluginEnabled,
  pluginDisabled (restartRequired), pluginUninstalled
  (restartRequired), pluginLoadFailed et projectPluginSettingsChanged
- useProjectPlugins et PluginRuntimeProvider: souscription
  onDomainEvent — refresh sur changement catalogue global ou sur
  projectPluginSettingsChanged du projet courant; gardes
  révision/projet contre les réponses obsolètes
- useProjectAgents: refresh auto quand un agent est ajouté au projet;
  ProjectsView et AgentsPanel suivent (erreur de rafraîchissement
  affichée avec bouton Réessayer)

#331 — droplist agents des cellules:
- SmallDropdown: liste bg-overlay + bordure border-strong (plus de
  fond blanc hors thème), hover/focus bg-raised, sélection
  bg-primary/15, disabled text-faint opacity-60, role=combobox
- LayoutGrid: sélecteur d'agent des cellules migré du <select> natif
  vers SmallDropdown (mêmes libellés Terminal/visible
  ailleurs/arrière-plan)

QA verte réelle sur les quatre lots (tests ciblés + exécution).
sdk/IdeaSDK: contenu modifié non committable ici (pointeur inchangé).
Aucun push.
2026-09-12 01:14:45 +02:00
4f0457c08a chore(appimage): rebuild AppImage develop — commit dédié v0.54.0 #325 #326 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120695288 octets, sha256 27fd485dcf1f5c7e30c681f1ea0c48e27a307bb1d2693509458895bdb1efc07e, produit depuis develop @ 69fa9251 incluant le merge du lot utilisateur #325 #326 — icônes projet avec watermark CLI custom et localisation FR/EN (1a1429f1) ; QA verte sur le lot ; build réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.53.0 -> v0.54.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.54.0 — chaque projet peut choisir une icône (recherche EN) affichée en watermark à faible opacité en fond de CLI custom, et l'interface bascule FR/EN depuis les paramètres avec l'ensemble des textes traduits ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #327 ; aucun push. 2026-09-11 21:58:04 +02:00
69fa925140 merge(domain,application,infrastructure,backend,web-server,app-tauri,frontend): lot utilisateur #325 #326 — icônes projet avec watermark CLI custom et localisation FR/EN (QA verte) 2026-09-11 21:54:02 +02:00
1a1429f10e feat(domain,application,infrastructure,backend,web-server,app-tauri,frontend): lot utilisateur #325 #326 — icônes projet avec watermark CLI custom et localisation FR/EN (QA verte)
Lot en un seul commit: les deux features partagent les mêmes contrats
(domain/settings.rs, DTO, commandes Tauri/HTTP, web-server) et les mêmes
surfaces UI — la séparation par fichiers était impossible sans chirurgie
de hunks risquant des états intermédiaires non compilables (convention
lot des batches #310-#313 et #315).

#325 — icône configurable par projet, watermark CLI custom:
- domaine: ProjectIconSet (devicon, simple-icons, lucide, idea),
  ProjectIconRef validé (nom ASCII 1..=64, -_. internes), champ icon
  optionnel sur ProjectSettings; sérialisation camelCase et try_from
  strict
- application: UpdateProjectSettings.execute accepte un patch
  theme_color OU icon (absent = inchangé, null = défaut produit), tests
  in-dependants avec store mémoire
- backend/app-tauri/web-server: ProjectIconRefDto, UpdateProjectSettingsRequestDto
  avec icon optionnel (désérialisation additive), commandes
  update_project_settings alignées Tauri/HTTP, tests DTO et HTTP
  (défaut null, set, clear, nom invalide rejeté)
- frontend: catalogue projectIcons (recherche EN), ProjectIconPicker en
  grille multi-lignes dans Paramètres projet, affichage de l'icône dans
  ProjectTabs et watermark grand format à faible opacité en fond de CLI
  custom; ports ProjectSettings.icon, Partial<ProjectSettings>,
  adapters tauri/mock/http et tests alignés

#326 — localisation FR/EN et traduction des textes IdeA:
- domaine: IdeaLanguage (fr | en), champ language optionnel sur
  IdeaUserSettings (absence = défaut produit, série additive validée)
- backend/web-server: UserSettingsDto.language, update_user_settings
  accepte language, tests HTTP alignés; fixtures structured_launch_d3
  mises à jour
- frontend: i18n/ (catalogue FR/EN, I18nProvider, scan anti-régression
  des sources visibles), GeneralSettings avec sélecteur de langue dans
  les paramètres, setupI18n dans vitest; migration de l'ensemble des
  textes hardcodés vers le catalogue sur toutes les surfaces (agents,
  layout, projets, tickets, sprints, web, plugins, permissions, git,
  templates, skills, mémoire, model servers, embedder, first-run,
  devices, scheduled tasks, workstate, dialogs), FR conservé par défaut;
  recherche d'icônes #325 en anglais conformément au ticket

QA verte sur feature/batch-325-326-project-icons-localisation. Aucun push.
2026-09-11 21:53:56 +02:00
cd744b5f18 chore(appimage): rebuild AppImage develop — commit dédié v0.53.0 #321 #322 #323 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120613368 octets, sha256 d1f8be96cdce603fa7272818cc3a679d0194652329edb264d66cc969fc407a24, produit depuis develop @ 259fc6b6 incluant le merge de la feature #321 — contributions UI/runtime des plugins limitées aux projets liés (bf33e585), et les merges des fixes #322 — restauration d'une cellule agent CLI custom après changement de projet (b0d68c2d) et #323 — persistance immédiate de l'historique des prompts (a3c20059) ; QA verte sur les trois lots ; build réalisé par Main) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.52.0 -> v0.53.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.53.0 — seuls les plugins liés au projet exposent menus/layouts/slash commands, une cellule CLI custom retrouve mode et conversation après changement de projet, chaque prompt envoyé est retrouvé à la flèche haut même après fermeture brutale ; l'AppImage installée n'est pas remplacée par cette opération ; suivi #324 ; aucun push. 2026-09-11 18:46:32 +02:00
259fc6b64b merge(application,frontend): fix #322 #323 — restauration cellule CLI custom après changement de projet et persistance immédiate de l'historique des prompts (QA verte) 2026-09-11 18:23:18 +02:00
a3c2005938 fix(frontend): persistance immédiate de l'historique des prompts à chaque envoi — #323 (QA verte)
Symptôme: l'historique du composer CLI custom (flèche haut) n'était
écrit dans localStorage qu'via un effet sur l'état, sans garantie au
moment de l'envoi — une fermeture brutale/crash perdait la dernière
entrée.

- writeComposerHistory retourne désormais le succès de l'écriture; à
  chaque envoi, l'entrée est ajoutée et écrite AVANT l'invocation de
  l'agent (source de vérité par ref + état, réinit de l'index de
  navigation et du brouillon d'historique)
- l'effet d'écriture global est supprimé: l'historique n'est plus
  réécrit en boucle, seulement aux envois (et lectures au changement de
  scope projet/layout/node)
- si l'écriture échoue, l'envoi part quand même et un avertissement
  discret « Historique des prompts non sauvegardé. » (role=status)
  s'affiche au-dessus du composer
- tests: persistance vérifiée au moment de l'appel sendAgentChat,
  envoi conservé + avertissement affiché quand localStorage échoue

QA verte sur fix/batch-322-323-session-restore-prompt-history. Aucun push.
2026-09-11 18:23:10 +02:00
b0d68c2d14 fix(application,frontend): restauration correcte d'une cellule agent en CLI custom après changement de projet — #322 (QA verte)
Symptôme: après changement de projet puis retour, une cellule en CLI
custom retombait en TUI native et un nouveau switch CLI custom repartait
à neuf (aucune conversation reprenable) car le mode préféré de la
cellule n'était pas persisté dans l'arbre de layout.

- domaine frontend: type PreferredView (tui | chat) et champ
  preferredView optionnel sur LeafCell; opération de layout
  setCellPreferredView persistant la surface préférée (tui = défaut,
  champ omis pour garder les arbres existants compacts)
- LayoutGrid: le mode de présentation d'une cellule agent dérive de
  preferredView persisté; le cache localStorage du mode custom n'est
  plus qu'un cache de migration secondaire; remount par clé
  projectId:layoutId:nodeId à chaque changement de projet pour éviter
  tout état résiduel inter-projets; la conversation/engine session/
  session/agentWasRunning de la cellule sont préservés par les
  bascules chat <-> TUI
- useLayout: setCellPreferredView exposé au view model
- tests: layout_usecases (persistance chat puis retour TUI en
  conservant session/conversation/engine/running), layout.test
  (setCellPreferredView chat persiste, tui omet le champ),
  LayoutGrid.chat et cellControlsLayering alignés

QA verte sur fix/batch-322-323-session-restore-prompt-history. Aucun push.
2026-09-11 18:22:57 +02:00
791e068d2e merge(application,backend,infrastructure,app-tauri,frontend): feature #321 — contributions UI/runtime des plugins limitées aux projets liés (QA verte) 2026-09-11 17:46:17 +02:00
bf33e58508 feat(application,backend,infrastructure,app-tauri,frontend): contributions UI/runtime des plugins limitées aux projets liés — #321 (QA verte)
Les contributions runtime des plugins (menus, slash commands, layouts,
surfaces) ne sont exposées que dans les projets liés au plugin.

- Définition du lien: ProjectPluginSettingsStore par racine projet
  (domaine) — une contribution runtime-active n'entre dans le catalogue
  que si elle est explicitement activée pour le projet courant; hors
  projet focalisé, catalogue vide
- Application: ListPluginRuntimeContributions.execute prend un
  project_id optionnel, charge projet + settings et filtre le registre
  par activation projet; tests fake store/settings (catalogue vide sans
  projet, activation, layout, slash commands)
- Backend/app-tauri: plugin_list_runtime_contributions et slash
  commands list/execute acceptent projectId optionnel (DTO camelCase,
  défaut serde), BackendCore recâblé avec store_port et
  project_plugin_settings_store; test DTO de scope optionnel
- Frontend: PluginGateway.listRuntimeContributions(projectId) (ports,
  tauri, http/unsupported, mock alignés); PluginRuntimeProvider
  re-scope le catalogue au changement de focus projet (vidage du
  registre précédent, disposition des bundles, requêtes obsolètes
  ignorées par projectId/révision); PluginLayoutCellView ignore les
  références de layout devenues hors périmètre via onChooseAnotherLayout
  et ne rend rien pendant le rechargement (aucune fuite inter-projets)
- Tests: plugin_install_load (infrastructure), dto slash commands,
  plugin.test, PluginRuntimeProvider.test, PluginLayoutCellView.test

QA verte sur feature/321-plugin-contributions-linked-projects. Aucun push.
2026-09-11 17:46:03 +02:00
6bdbe755fa chore(appimage): rebuild AppImage develop — commit dédié v0.52.0 #319 #320 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120637944 octets, sha256 53330fc540e42d10adf2db722af8c2f375a9aff61c27b8a629fd2d6eeffbbe84, produit depuis develop @ b01fa0ce incluant les merges du fix #319 — la couleur projet s'applique et persiste sur tous les projets, id opaque inclus, ex PipoufWebSite (a93db1c6), et du fix #320 — arrêt d'agent fiable avec cascade sur l'arbre de propriété/attente des agents et travaux lancés, statut live cohérent, fin de la pastille orange fantôme (b01fa0ce) ; QA verte sur les deux lots ; build réussi par Main: npm --prefix frontend run build puis CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage depuis crates/app-tauri) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.51.0 -> v0.52.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.52.0 — la couleur choisie s'applique et persiste sur l'ensemble des projets y compris PipoufWebSite, et l'arrêt d'un agent stoppe en cascade les agents/travaux lancés avec pastille/statut cohérent et aucune poursuite d'appels inter-agents ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-11 16:47:13 +02:00
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