Files
vmux/.planning/phases/02-daemon-et-i3-bridge/02-01-SUMMARY.md
Pierre Martin 185119e580 docs(02-01): complete daemon vmuxd plan
- SUMMARY.md with protocol types, registry, labels, socket server
- STATE.md updated: plan 3/3, decisions, metrics
- ROADMAP.md updated: phase 02 progress
- REQUIREMENTS.md: DISC-04, STATE-04 complete
2026-03-23 17:47:14 +01:00

4.0 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, requirements-completed, duration, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established requirements-completed duration completed
02-daemon-et-i3-bridge 01 daemon
go
unix-socket
ipc
json
proc
registry
phase provides
01-session-discovery FindClaudeProcesses, FindSessionForProcess, DetectState, ExtractPreview
SessionRegistry avec tracking WaitingSince
LabelStore persistent dans ~/.vmux/labels.json
Protocol IPC (Request/Response/SessionInfo) sur Unix socket
Daemon avec poll loop 5s et socket server list/label/stop
02-02
02-03
03-notifications
added patterns
net/unix-socket
registry-update-pattern
stale-socket-cleanup
json-ipc
created modified
protocol.go
protocol_test.go
daemon.go
daemon_test.go
types.go
WaitingSince tracked par transition dans le registre (pas par le caller)
LabelStore avec MkdirAll pour creer ~/.vmux/ au premier Set
Scan initial synchrone avant d'accepter les connexions socket
workspaceResolver comme fonction injectable (nil dans ce plan)
Registry Update pattern: caller passe SessionInfo, le registre gere les transitions
Stale socket cleanup: dial avant listen, supprimer si pas de reponse
Test daemon pattern: tmpdir pour socket/proc/claude, populate apres Start
DISC-04
STATE-04
5min 2026-03-23

Phase 02 Plan 01: Daemon vmuxd Summary

Daemon vmuxd avec registre de sessions, Unix socket IPC (list/label/stop), labels persistants et tracking WaitingSince

Performance

  • Duration: 5 min
  • Started: 2026-03-23T16:41:05Z
  • Completed: 2026-03-23T16:46:06Z
  • Tasks: 2
  • Files modified: 5

Accomplishments

  • SessionRegistry avec suivi automatique des transitions WaitingSince
  • LabelStore persistant en JSON avec creation automatique du repertoire
  • Unix socket server gerant list, label et stop
  • Poll loop toutes les 5s avec scan initial synchrone
  • 14 tests dedies (protocol + registry + label + daemon integration), tous passent avec -race

Task Commits

Each task was committed atomically:

  1. Task 1: Protocol types + SessionRegistry + LabelStore - a49f7d1 (test) + 5315e88 (feat)
  2. Task 2: Unix socket server + poll loop + stop handler - 4b142a7 (feat)

Files Created/Modified

  • protocol.go - Types IPC : Request, Response, SessionInfo, SwitchArgs, LabelArgs
  • protocol_test.go - Tests serialisation/deserialisation JSON
  • daemon.go - SessionRegistry, LabelStore, Daemon (socket server + poll loop)
  • daemon_test.go - Tests registre, labels, daemon integration via socket
  • types.go - Session enrichi avec Workspace, Label, WaitingSince

Decisions Made

  • WaitingSince est gere entierement par le registre lors des transitions d'etat, pas par le caller
  • LabelStore cree le repertoire parent au premier Set (MkdirAll)
  • Le daemon fait un scan synchrone avant d'ouvrir le socket (evite les reponses vides au demarrage)
  • workspaceResolver est une fonction injectable, nil par defaut (plan 02-02 fournira l'implementation)

Deviations from Plan

Auto-fixed Issues

1. [Rule 1 - Bug] Test populate apres Start au lieu d'avant

  • Found during: Task 2 (daemon tests)
  • Issue: Le scan initial supprimait les sessions pre-populees via RemoveStale
  • Fix: Populer le registre apres Start() dans les tests
  • Files modified: daemon_test.go
  • Verification: Tests passent avec -race
  • Committed in: 4b142a7

Total deviations: 1 auto-fixed (1 bug) Impact on plan: Fix necessaire pour la coherence du scan initial. Pas de scope creep.

Issues Encountered

None

User Setup Required

None - no external service configuration required.

Known Stubs

None - all code is fully wired.

Next Phase Readiness

  • Protocol types et registry prets pour le plan 02-02 (i3 bridge)
  • workspaceResolver a brancher sur ResolveWorkspace du plan 02-02
  • Handler "switch" a ajouter dans le plan 02-03

Phase: 02-daemon-et-i3-bridge Completed: 2026-03-23