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

5.9 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#295 4
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
1788972545852

QA - 2026-09-09 - Validation post-restart chat transcript

Branche vérifiée : fix/295-custom-chat-transcript-after-restart.

Diff relu sur les zones déclarées :

  • crates/app-tauri/src/chat.rs, crates/app-tauri/src/commands.rs
  • crates/app-tauri/tests/chat_bridge.rs, crates/app-tauri/tests/dto_chat.rs
  • crates/backend/src/dto.rs, crates/backend/src/stream.rs
  • crates/web-server/src/lib.rs
  • frontend/src/adapters/agent.ts, frontend/src/adapters/http/*, frontend/src/ports/index.ts
  • frontend/src/features/agents/CustomAgentChatView.tsx, CustomAgentChatView.test.tsx

Lecture QA : le fix couvre bien le contrat attendu. Côté Tauri, ChatBridge conserve/rekey scrollback, sink et propriétaire stable, et reattach_agent_chat peut récupérer une session vivante par projectId/agentId en renvoyant sessionId effectif et conversationId. Côté backend partagé, le DTO expose l'id effectif et ReplayOutputBridge::rekey préserve le flux logique. Côté web-server, chat.attach accepte le fallback stable et enregistre le sink sous le nouveau sessionId. Côté frontend, la vue réconcilie agentRestartCompleted, retente un stale NOT_FOUND avec identité stable, applique le scrollback, met à jour les ids effectifs et évite l'écran vide quand une conversation/run/workstate lié existe.

Commandes exécutées :

git status --short --branch

Sortie essentielle :

## fix/295-custom-chat-transcript-after-restart
 M crates/app-tauri/src/chat.rs
 M crates/app-tauri/src/commands.rs
 M crates/app-tauri/tests/chat_bridge.rs
 M crates/app-tauri/tests/dto_chat.rs
 M crates/backend/src/dto.rs
 M crates/backend/src/stream.rs
 M crates/web-server/src/lib.rs
 M frontend/src/adapters/agent.ts
 M frontend/src/adapters/http/agentGateway.test.ts
 M frontend/src/adapters/http/frames.ts
 M frontend/src/adapters/http/streamGateways.ts
 M frontend/src/features/agents/CustomAgentChatView.test.tsx
 M frontend/src/features/agents/CustomAgentChatView.tsx
 M frontend/src/ports/index.ts
git diff --check

Sortie : aucune.

cargo fmt --all --check

Sortie : aucune.

cargo test -p app-tauri --test chat_bridge --test dto_chat

Sortie essentielle :

Running tests/chat_bridge.rs
running 34 tests
...
test result: ok. 34 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Running tests/dto_chat.rs
running 24 tests
...
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
cargo check -p app-tauri

Sortie essentielle :

Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.14s
cargo test -p backend && cargo check -p backend

Sortie essentielle :

Running unittests src/lib.rs
running 98 tests
...
test result: ok. 91 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out

Doc-tests backend
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.13s

Note : les 7 tests backend ignorés sont déclarés ignored car ils requièrent une permission de bind socket local ; ce n'est pas un échec et ce n'est pas bloquant pour #295.

cargo test -p web-server websocket_chat_attach && cargo check -p web-server

Sortie essentielle :

running 3 tests
test tests::websocket_chat_attach_emits_chat_attached_and_registers_sink ... ok
test tests::websocket_chat_attach_recovers_stale_session_from_live_project_agent ... ok
test tests::websocket_chat_attach_stale_session_without_fallback_stays_not_found ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 109 filtered out

Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.13s
npm test -- CustomAgentChatView.test.tsx agentGateway.test.ts

Sortie essentielle :

Test Files  2 passed (2)
Tests  77 passed (77)

Note : Vite a émis deux warnings de dépréciation de configuration esbuild/oxc; non bloquant pour #295.

npm run build

Sortie essentielle :

> idea-frontend@0.3.0 build
> tsc --noEmit && vite build

✓ 515 modules transformed.
✓ built in 2.61s

Note : Vite signale un chunk minifié > 500 kB ; avertissement existant/non bloquant pour #295.

Verdict QA : VERT.

Git - 2026-09-09 - Intégration locale

Cycle Git terminé, sans push.

  • Branche de travail : fix/295-custom-chat-transcript-after-restart.
  • Commit applicatif : 1b1476d (fix(chat)), 14 fichiers applicatifs.
  • Commit ticket : 8482fc5 (chore(tickets)), carnet #295 + capture + rattrapage store #293/#294.
  • Merge local vers develop : 6e4d9eb (merge --no-ff).

QA reconfirmée par Git avant commit : git diff --check, cargo fmt --all --check, app-tauri chat/dto, backend, web-server websocket_chat_attach, frontend tests ciblés, npm run build.

Réserves Git : aucun push; develop local reste en avance sur origin. scripts/ non suivi reste hors périmètre.

AppImage - 2026-09-09 - Build local

Workflow build-appimage exécuté après merge pour produire un artefact installable/testable.

Commandes :

npm --prefix frontend run build
cd 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

Résultat :

Finished 1 bundle at:
/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage

Artefact : target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 114M, sha256 b7c41857977279facef5259c3c3345b8a3430ed007e54d9374f4081e41802137.

Remplacement de l'AppImage installée et relance IdeA non automatisés volontairement: cela tuerait la session d'orchestration active. Validation live du scénario UnitySoundTool à faire après installation manuelle de cet artefact.