Commit Graph

1061 Commits

Author SHA1 Message Date
3f6beb149b chore(appimage): rebuild AppImage develop — commit dédié v0.70.0 #360 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 121043448 octets, mode 755, sha256 53cc8403281bcacd290785af1554c7dc93d5eaaa3b50fea4282dc3a8a5467db5, produit depuis develop @ 65284c21 incluant le merge du fix #360 — TUI native noire: route PTY explicite + replay du scrollback pré-attach (65284c21, QA verte)) ; 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 ; build OK, warning Vite chunk > 500k habituel ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.69.0 -> v0.70.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée — premier draw TUI native visible au lancement, plus d'écran noir sur les sessions TUI natives, absence de régression CLI custom et attach/reveal ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-16 19:13:35 +02:00
65284c21b8 merge(domain,infrastructure,web-server,app-tauri,frontend): fix #360 — TUI native noire (QA verte) 2026-09-16 19:08:11 +02:00
355a482fee fix(domain,infrastructure,web-server,app-tauri,frontend): TUI native noire — route PTY explicite et replay du scrollback pré-attach sans perte — #360 (QA verte) 2026-09-16 19:08:01 +02:00
a833af0fb5 chore(appimage): rebuild AppImage develop — commit dédié v0.69.0 #359 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 121047544 octets, mode 755, sha256 81b0c8b15ce579ce8a5b0c6b376656acc511ae0c91c18c58f5ff4c423bf9d292, produit depuis develop @ dff12a39 incluant le fix #359 — la fenêtre Tâches planifiées s'affiche en mode détaché (31ca03c2, merge dff12a39, 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 par Main avec le skill build-appimage, warning Vite chunk > 500k habituel) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.68.0 -> v0.69.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 — ce message est la trace durable in-repo du rebuild ; restant: validation live depuis l'app installée v0.69.0 — détachement de la fenêtre Tâches planifiées, absence de régression sur la fenêtre intégrée et sur les autres panneaux détachables ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-15 09:24:55 +02:00
dff12a395b merge(app-tauri,frontend): fix #359 — la fenêtre Tâches planifiées s'affiche en mode détaché (QA verte) 2026-09-15 09:20:34 +02:00
31ca03c29b fix(app-tauri,frontend): la fenêtre Tâches planifiées s'affiche en mode détaché — #359 (QA verte)
cause: le panneau Tâches planifiées n'avait aucune variante dans l'enum ViewPanel, open_view_window("scheduledTasks") rejetait INVALID et detachPanel ne touchait le placement qu'en cas de succès — même famille que #299, aucun effet visible ni message.
fix: variante ViewPanel::ScheduledTasks avec contrat stable label view-scheduledTasks / url index.html?panel=scheduledTasks / titre « Scheduled tasks », identité persistée des fenêtres view-scheduledTasks acceptée à la restauration #50; frontend ViewWindow rend le ScheduledTasksPanel du projet focalisé et ProjectsView expose le placement Fenêtre détachée via WindowGateway; retrait de la variante Projects devenue morte après #315 — le panneau Projects (coquille de la fenêtre principale) n'est plus détachable, refus INVALID gardé par tests.
QA verte: view_window_tests dont scheduled_tasks_view_window_contract_is_stable et projects_panel_is_not_detachable, persisted_identity_accepts_scheduled_tasks_view_labels, frontend ViewWindow/window gateway/ProjectsView.detach verts.
2026-09-15 09:20:28 +02:00
7de1d0afbe merge(domain,application,infrastructure,backend,web-server,app-tauri,frontend): feature #358 — bibliothèque d'icônes projet personnalisées importées par l'utilisateur (QA verte) 2026-09-15 07:58:01 +02:00
0f01d1f9b1 feat(domain,application,infrastructure,backend,web-server,app-tauri,frontend): bibliothèque d'icônes projet personnalisées importées par l'utilisateur — #358 (QA verte)
domain: variante ProjectIconSet::Custom, métadonnées CustomProjectIconAsset (id opaque, media type png/jpeg/webp, byte_size, dimensions décodées, sha256, nom de fichier original sans chemin, created_at), CustomProjectIconContent et port CustomProjectIconAssetStore (list/read/exists/create/delete) avec CustomProjectIconStoreError dédiée.
application: use case project_icon_assets — import validé png/jpeg/webp avec rejet du contenu SVG, dimensionnement et digest sha256, bibliothèque partagée à l'instance indépendante de tout projet, suppression refusée tant que l'asset est référencé par un projet.
infrastructure: store fichier store/project_icon_asset.rs — index canonique + octets, création atomique sous extension validée.
backend/web-server: contrat HTTP /api/project-icon-assets (GET liste, POST import, GET lecture, GET /usage, DELETE) avec prévol OPTIONS et tests contrat incluant le rejet SVG.
app-tauri: commandes import/list/read/get_usage/delete_custom_project_icon_asset exposées au frontend.
frontend: port ProjectIconAssetGateway (list/import/delete/getUrl sans exposer de chemin filesystem), gateways http+mock avec tests, DI, section Icônes personnalisées du ProjectIconPicker (import fichier accept png/jpeg/webp, sélection role=option, suppression avec retrait de sélection, erreurs lisibles i18n FR/EN), tests projectIcons étendus.

QA verte: contrats HTTP et Tauri identiques, suites cargo et npm ciblées vertes.
2026-09-15 07:57:51 +02:00
a082b55c75 chore(appimage): rebuild AppImage develop — commit dédié v0.68.0 #357 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 120871416 octets, mode 755, sha256 028286e2d9be65e145db6e17071f1b579c30ee5b580c77699e7a2ecdae9667ae, produit depuis develop @ 959f635a incluant le fix #357 — réconcilie l'état idle et les Finals après Stop (50e395b6, merge 959f635a, 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 avec le skill validé) ; convention de tag respectée: y incrémenté pour un rebuild committé sur develop, v0.67.0 -> v0.68.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.68.0 — après Stop d'un tour, bouton Stop disparu et Finals des tours suivants affichés ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-14 15:17:53 +02:00
959f635abc merge(application,backend,app-tauri,frontend): fix #357 — réconcilie l'état idle et les Finals après Stop (QA verte) 2026-09-14 15:13:12 +02:00
50e395b602 fix(application,backend,app-tauri,frontend): réconcilie l'état idle et les Finals après Stop — #357 (QA verte)
Cause: après un cancel manuel de tour, le ticket médié busy/FIFO n'était pas
retiré (l'agent restait Busy, bouton Stop persistant) et un terminal tardif du
tour annulé pouvait bloquer le tour suivant (Final non affiché).

Backend: StructuredSessions lie chaque génération de tour à son ticket médié
(bind_turn_accounting) et request_turn_cancel restitue l'identité (agent,
ticket) exacte observée avant annulation; CancelAgentChat.with_turn_accounting
retire le ticket exact (cancel_head + mark_idle) seulement s'il est toujours
le ticket courant — jamais un successeur déjà remplacé;
StructuredHumanTurnGuard expose accounting_identity et agent_send (app-tauri)
lie la comptabilité au démarrage du tour humain.

Frontend: CustomAgentChatView réconcilie l'interaction active depuis le
work-state (agent idle sans délégation -> interaction terminée, fallback
« Tour terminé sans réponse finale. ») au lieu de laisser un agentBusyChanged
sans tour-id clore un tour plus récent; les terminaux tardifs (final/error) du
tour read-model-settled remplacent le fallback; tour suivant isolé des
callbacks tardifs de la génération précédente.

Tests: cancel_agent_chat (retrait du ticket exact avant le prompt suivant,
nettoyage tardif sans idle sur ticket successeur), CustomAgentChatView
(isolation tour suivant, réconciliation work-state + remplacement fallback par
Final tardif).

Réserve non bloquante: alignement fixture skills préexistant porté par le
commit test dédié 83659d9a.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 15:13:03 +02:00
83659d9a09 test(application): aligne les assertions d'affordances skills de la fixture convention file
launch_conventionfile_injects_assigned_skills_in_order était rouge en
préexistant (réserves #281/#287): la source projette déjà les refs stables
`skill:global:<id>` et le suffixe (workflow) que les assertions ne suivaient
pas. Alignement pur de fixture, aucun changement de source — cycle #357.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 15:12:51 +02:00
a21d6675bd merge(frontend): fix #356 — restaure le suivi automatique du scroll des fils de messages (QA verte)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 11:15:19 +02:00
ec941d1af6 fix(frontend): restaure le suivi automatique du scroll des fils de messages — hook partagé useThreadScrollController — #356 (QA verte)
Cause: la logique de suivi du bas de fil était dupliquée et ad-hoc dans chaque surface (scrollRef, followsLatestRef, showLatestButton dans CustomAgentChatView), et dérivait dans certains cas — le fil ne suivait plus les nouveaux messages.

Fix: nouveau hook partagé shared/lib/useThreadScrollController (resté collé au bas quand l'utilisateur est déjà en bas, position préservée pendant la consultation de l'historique, notice latest sinon) câblé dans CustomAgentChatView, ConversationViewer et TicketAssistantPanel.

QA verte: npm run typecheck exit 0; tests ciblés useThreadScrollController, CustomAgentChatView, ConversationViewer/useConversationThread et tickets verts; npm test 1400/1400 verts (137 fichiers); git diff --check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 11:15:10 +02:00
7eb501e013 chore(appimage): rebuild AppImage develop — commit dédié v0.67.0 #354 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120855032 octets, mode 755, sha256 2c829c23fcb402f508759dbf8b9c785332878dc85accbbc97ce1da2b02df4ac5, produit depuis develop @ 9eb3926a incluant le fix #354 — grant /dev/null RO|RW dans workspace_exec_sandbox pour les CLI type git via workspace.execTool (28bb706c, merge 9eb3926a, 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.66.0 -> v0.67.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.67.0 — commandes CLI sandboxées via workspace.execTool (git ouvrant /dev/null en O_RDWR) ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-14 09:30:05 +02:00
9eb3926aaa merge(application,infrastructure): fix #354 — /dev/null grant RO|RW dans workspace_exec_sandbox pour les CLI type git via workspace.execTool (QA verte) 2026-09-14 09:25:51 +02:00
28bb706c61 fix(application,infrastructure): grant /dev/null RO|RW in workspace_exec_sandbox so CLIs can open it O_RDWR — #354 (QA verte)
Cause: the workspace.execTool sandbox only granted the project root
plus read-only system roots, so CLI tools like git failed when opening
/dev/null with O_RDWR (redirect/exec 3<>/dev/null) inside sandboxed
runs.
Fix: workspace_exec_sandbox pushes one precise /dev/null PathGrant with
RO|RW access; project read effect stays RO|EXEC and no blanket /dev
grant is added, so the widening is limited to the null device;
GitPlugin untouched. Tests: application asserts the read sandbox keeps
project RO|EXEC while granting /dev/null RO|RW
(workspace_exec_read_sandbox_grants_dev_null_without_widening_project_access);
infrastructure proves the local runner executes exec 3<>/dev/null
(local_runner_allows_cli_to_open_dev_null_for_read_and_write).
QA verte reconfirmée par Git: cargo test -p application workspace_exec
5/5, -p infrastructure local_runner_allows_cli_to_open_dev_null 1/1,
-p infrastructure workspace_tool::tests 5/5, cargo fmt --all --check,
git diff --check.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 09:25:34 +02:00
325e5656fa chore(appimage): rebuild AppImage develop — commit dédié v0.66.0 #353 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120867320 octets, mode 755, sha256 590291a3fdc7568beeb1b4e70592a41e5011501e200b9ab832d5b15d86040979, produit depuis develop @ 30e75a3d incluant le fix #353 — icônes projet watermark plein espace et niveaux de gris détaillés préservant les éléments internes (4581470f, merge 30e75a3d, 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.65.0 -> v0.66.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.66.0 — icônes projet occupant tout l'espace au-dessus du composer, détails internes visibles en niveaux de gris (fantôme avec langue et yeux) ; l'AppImage installée n'est pas remplacée par cette opération ; aucun push. 2026-09-14 07:35:53 +02:00
30e75a3d4f merge(frontend): fix #353 — icônes projet watermark plein espace et niveaux de gris préservant les détails internes (QA verte) 2026-09-14 07:31:56 +02:00
4581470fb3 fix(frontend): render project watermark icons full-size above the composer with detail-preserving grayscale — #353 (QA verte)
Cause: the monochrome-first treatment from #351 flattened the emoji
artwork through an alpha mask (transparent fill + zero-offset
text-shadow), dropping internal details (the ghost lost its tongue and
eyes), and the watermark box did not occupy the full space available
above the chat composer.
Fix: new .project-cell-illustration-area container (container-type:
size) wrapping the scroll zone so the absolute watermark spans the
whole region between the agent toolbar and the composer; glyph keeps
the OS full-colour emoji artwork as source and is neutralised with a
non-destructive CSS filter (grayscale(1) contrast(0.92)) so internal
tones and details stay visible in black and white; glyph sized to
min(100cqw - 8px, 100cqh - 12px); text-variation selector U+FE0E
stripping removed (full emoji preserved) and project-theme tint
plumbing (accessibleProjectAccent/onProjectThemeChanged) dropped as
superseded by grayscale; empty label and overlay z-layering untouched.
QA verte reconfirmée par Git: npm test -- CustomAgentChatView.test.tsx
projectIcons.test.tsx 96/96, npm run typecheck OK, npm run build OK,
npm test 1396/1396, git diff --check OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-14 07:31:44 +02:00
3413664d3d chore(appimage): rebuild AppImage develop — commit dédié v0.65.0 #352 (artefact target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 116M / 120871416 octets, mode 755, sha256 5e32a200e2c44f0bfa77342878710bd450f936fb44cf6a412c5891687392bf3d, produit depuis develop @ 1ba3fc95 incluant la feature #352 — file d'attente des messages CLI custom pendant busy et navigation Final précédent / dernier message (76d91c34, merge 1ba3fc95, 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.64.0 -> v0.65.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.65.0 — composer actif pendant busy avec mise en file, panneau En attente · N (modifier/supprimer/undo/tout supprimer), drain après Final, conservation après Stop/error avec relance, flèches Final précédent / dernier message ; 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 23:01:44 +02:00
1ba3fc9568 merge(frontend): feature #352 — file d'attente des messages CLI custom pendant busy et navigation Final précédent / dernier message (QA verte)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-13 22:58:36 +02:00
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