`.ideai/tickets/` et `.ideai/sprints/` sont le registre durable du projet (les tickets sont déjà référencés par les messages de commit : #14, #21..#25, #28), au même titre que `.ideai/memory/`. Ils entrent donc dans le dépôt. À l'inverse, `.ideai/background-tasks/` (snapshots de rendez-vous headless) et `.ideai/proposals/` (amendements de contexte en attente d'arbitrage) restent de l'état d'exécution transitoire, de la même classe que `live-state.json` et `.ideai/requests/` : ils doivent être ignorés (patch `.gitignore` à venir). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
id, number, title, status, priority, sprint, links, agentRefs, createdBy, updatedBy, createdAt, updatedAt, version
| id | number | title | status | priority | sprint | links | agentRefs | createdBy | updatedBy | createdAt | updatedAt | version | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 9d8ec8cf-312a-4f90-8199-e37b183ba11e | 28 | First-run wizard : bouton « Save and continue » figé (busy bloqué par l'auto-détection) | closed | high | null |
|
|
1783458330440 | 1783491458775 | 3 |
Symptôme (confirmé live, build 0.3.0 @2026-07-07 22:46, = develop 3c6cd04)
Au premier lancement, le wizard affiche les profils de référence (Claude/Codex/Ollama), l'utilisateur remplit le profil Ollama et coche la case, mais « Save and continue » ET « Detect installed CLIs » restent grisés → impossible de finir le first-run. Confirmé par l'utilisateur : les deux boutons sont grisés.
Diagnostic (source + JS embarqué vérifiés)
- Le JS embarqué contient exactement
disabled: n.busysur le bouton (FirstRunWizard.tsx:103) — aucune condition de validation. Donc bouton grisé ⇔busyrestetrue. useFirstRun.reload():setBusy(true)→ affiche les lignes (d'où formulaire visible/éditable) →await detectProfiles(refs)(auto-détection à l'ouverture) →finally { setBusy(false) }. Lefinallyne s'exécute que si la détection se termine. Si la promessedetectProfilesne se résout jamais,busyreste figé → les deux boutons restent grisés.
Causes racines suspectées (2 défauts #14 qui se combinent)
- Profil Ollama sans commande de détection :
detect: None→detection_specretombe sur"{command} --version"=openai-compatible --version(runtime/mod.rs:64), binaire inexistant → ligne « ✗ not found », et surtout probe inutile. block_onsur runtime tokio imbriqué dans le chemin de détection :DetectProfiles::execute(usecases.rs:79) appelleruntime.detect()synchrone →futures_block_onconstruit un runtime current-thread etblock_on(runtime/mod.rs:231) à l'intérieur de la commande async Tauridetect_profiles(commands.rs:752). Pattern qui peut paniquer (« Cannot start a runtime from within a runtime ») / rester pendu → la promesse ne se résout jamais. Se déclenche probablement sur une machine sans Claude/Codex installés.
Attendu du fix
busydoit toujours revenir àfalsemême si la détection panique/pend (lefinallyne doit pas dépendre du résultat de la détection ; détection best-effort, non bloquante, éventuellement bornée par timeout).- Donner une commande/stratégie de détection correcte au profil OpenAI-compatible (ou ne pas le sonder comme un CLI — c'est un endpoint HTTP, pas un binaire).
- Corriger le
block_onimbriqué dans le runtime de détection (ne pas bloquer dans un contexte async Tauri).
Validation QA
Reproduire sur une machine sans Claude/Codex installés + Ollama lancé ; vérifier que le wizard reste utilisable (boutons cliquables) et que le profil Ollama se persiste et démarre.