docs(02-03): complete CLI + wiring plan
This commit is contained in:
91
.planning/phases/02-daemon-et-i3-bridge/02-03-SUMMARY.md
Normal file
91
.planning/phases/02-daemon-et-i3-bridge/02-03-SUMMARY.md
Normal file
@@ -0,0 +1,91 @@
|
||||
---
|
||||
phase: 02-daemon-et-i3-bridge
|
||||
plan: 03
|
||||
subsystem: cli
|
||||
tags: [unix-socket, i3, fuzzy-match]
|
||||
|
||||
requires:
|
||||
- phase: 02-01
|
||||
provides: Daemon server, registry, protocol types
|
||||
- phase: 02-02
|
||||
provides: Workspace resolution, fuzzy match, i3 commander
|
||||
provides:
|
||||
- CLI client with list/switch/label/stop subcommands
|
||||
- Autostart daemon on first CLI use
|
||||
- Enriched display with workspace, label, waiting duration
|
||||
affects: [phase-3-hook-server, phase-4-notifications]
|
||||
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [client-server unix socket, autostart daemon, fuzzy match CLI]
|
||||
|
||||
key-files:
|
||||
created: [client.go, client_test.go, sysattr_linux.go]
|
||||
modified: [main.go, display.go, display_test.go, daemon.go]
|
||||
|
||||
key-decisions:
|
||||
- "vmux label accepts fuzzy match queries (not just session UUIDs)"
|
||||
- "Permission prompt stale detection (>10s tool_use = NeedsInput)"
|
||||
|
||||
patterns-established:
|
||||
- "CLI dispatch via os.Args switch (no framework)"
|
||||
- "Autostart: EnsureDaemon() checks socket, spawns vmux daemon if missing"
|
||||
|
||||
requirements-completed: [DISC-04, I3-01, I3-02, STATE-04]
|
||||
|
||||
duration: 8min
|
||||
completed: 2026-03-23
|
||||
---
|
||||
|
||||
# Plan 02-03 Summary
|
||||
|
||||
**CLI complet avec list/switch/label/stop, autostart daemon, affichage enrichi (workspace, label, temps d'attente)**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** 8 min
|
||||
- **Tasks:** 3 (2 code + 1 human-verify)
|
||||
- **Files modified:** 7
|
||||
|
||||
## Accomplishments
|
||||
- Client Unix socket avec autostart daemon transparent
|
||||
- Sous-commandes list, switch, label, stop
|
||||
- Affichage enrichi : workspace `[ws:N]`, label entre guillemets, "depuis X min"
|
||||
- Fix : vmux label accepte fuzzy match (pas besoin de connaître le UUID)
|
||||
- Fix : détection permission prompts comme NeedsInput quand tool_use > 10s
|
||||
|
||||
## Task Commits
|
||||
|
||||
1. **Task 1: Client socket + wiring** - `a79a0e1`
|
||||
2. **Task 2: main.go sous-commandes + display** - `170790f`
|
||||
3. **Task 3: Human verification** - approved
|
||||
4. **Fixes post-checkpoint** - `8594c48`
|
||||
|
||||
## Files Created/Modified
|
||||
- `client.go` — Client Unix socket, EnsureDaemon(), autostart
|
||||
- `client_test.go` — Tests client + autostart
|
||||
- `sysattr_linux.go` — SysProcAttr pour le daemon fork
|
||||
- `main.go` — Dispatch sous-commandes (list/switch/label/stop/daemon)
|
||||
- `display.go` — DisplaySessionInfos avec workspace, label, temps d'attente
|
||||
- `daemon.go` — Label handler avec fuzzy match, switch handler
|
||||
- `state.go` — PermissionStallThreshold pour tool_use stale
|
||||
|
||||
## Decisions Made
|
||||
- vmux label résout via fuzzy match au lieu d'exiger le session UUID
|
||||
- Permission prompts détectés via heuristique temporelle (tool_use > 10s = NeedsInput)
|
||||
|
||||
## Deviations from Plan
|
||||
- Ajout de PermissionStallThreshold dans state.go (découvert pendant la vérification humaine)
|
||||
- Fuzzy match pour labels (découvert pendant la vérification humaine)
|
||||
|
||||
## Issues Encountered
|
||||
- Label indexé par UUID non-affichable → corrigé par fuzzy match
|
||||
- Sessions en attente de permission affichées comme Idle → corrigé par stale detection
|
||||
|
||||
## Next Phase Readiness
|
||||
- Daemon fonctionnel avec i3 bridge
|
||||
- Phase 3 (Hook Server) peut ajouter le endpoint HTTP dans le daemon existant
|
||||
|
||||
---
|
||||
*Phase: 02-daemon-et-i3-bridge*
|
||||
*Completed: 2026-03-23*
|
||||
Reference in New Issue
Block a user