docs(04-01): complete notifications et mode focus plan
- SUMMARY.md with execution results - STATE.md updated (position, decisions, metrics) - ROADMAP.md progress updated - Requirements NOTIF-01, NOTIF-02 marked complete
This commit is contained in:
@@ -29,8 +29,8 @@ Requirements for initial release. Each maps to roadmap phases.
|
||||
|
||||
### Notifications
|
||||
|
||||
- [ ] **NOTIF-01**: vmux notifie (dunst) quand une session passe de "travaille" à "attend input"
|
||||
- [ ] **NOTIF-02**: vmux supporte un mode focus qui supprime temporairement les notifications
|
||||
- [x] **NOTIF-01**: vmux notifie (dunst) quand une session passe de "travaille" à "attend input"
|
||||
- [x] **NOTIF-02**: vmux supporte un mode focus qui supprime temporairement les notifications
|
||||
|
||||
## v2 Requirements
|
||||
|
||||
@@ -77,8 +77,8 @@ Which phases cover which requirements. Updated during roadmap creation.
|
||||
| I3-01 | Phase 2 | Complete |
|
||||
| I3-02 | Phase 2 | Complete |
|
||||
| I3-03 | Phase 4 | Pending |
|
||||
| NOTIF-01 | Phase 4 | Pending |
|
||||
| NOTIF-02 | Phase 4 | Pending |
|
||||
| NOTIF-01 | Phase 4 | Complete |
|
||||
| NOTIF-02 | Phase 4 | Complete |
|
||||
|
||||
**Coverage:**
|
||||
- v1 requirements: 13 total
|
||||
|
||||
@@ -75,7 +75,7 @@ Plans:
|
||||
**Plans**: 2 plans
|
||||
|
||||
Plans:
|
||||
- [ ] 04-01-PLAN.md — Notifications dunst (Working->Needs Input), mode focus avec timer, CLI vmux focus
|
||||
- [x] 04-01-PLAN.md — Notifications dunst (Working->Needs Input), mode focus avec timer, CLI vmux focus
|
||||
- [ ] 04-02-PLAN.md — Widget i3bar avec format compact, wrapping i3status, CLI vmux i3bar
|
||||
|
||||
## Progress
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
gsd_state_version: 1.0
|
||||
milestone: v1.0
|
||||
milestone_name: milestone
|
||||
status: Ready to plan
|
||||
stopped_at: Phase 4 context gathered
|
||||
last_updated: "2026-03-23T19:31:54.299Z"
|
||||
status: Ready to execute
|
||||
stopped_at: Completed 04-01-PLAN.md
|
||||
last_updated: "2026-03-23T20:27:01.799Z"
|
||||
progress:
|
||||
total_phases: 4
|
||||
completed_phases: 3
|
||||
total_plans: 7
|
||||
completed_plans: 7
|
||||
total_plans: 9
|
||||
completed_plans: 8
|
||||
---
|
||||
|
||||
# Project State
|
||||
@@ -19,12 +19,12 @@ progress:
|
||||
See: .planning/PROJECT.md (updated 2026-03-23)
|
||||
|
||||
**Core value:** Savoir instantanement quelle session Claude Code a besoin de moi, sans scanner manuellement mes workspaces.
|
||||
**Current focus:** Phase 03 — hook-server
|
||||
**Current focus:** Phase 04 — notifications-et-i3bar
|
||||
|
||||
## Current Position
|
||||
|
||||
Phase: 4
|
||||
Plan: Not started
|
||||
Phase: 04 (notifications-et-i3bar) — EXECUTING
|
||||
Plan: 2 of 2
|
||||
|
||||
## Performance Metrics
|
||||
|
||||
@@ -52,6 +52,7 @@ Plan: Not started
|
||||
| Phase 02 P02 | 4min | 2 tasks | 7 files |
|
||||
| Phase 03 P01 | 3min | 2 tasks | 4 files |
|
||||
| Phase 03 P02 | 3min | 2 tasks | 5 files |
|
||||
| Phase 04 P01 | 3min | 2 tasks | 9 files |
|
||||
|
||||
## Accumulated Context
|
||||
|
||||
@@ -73,6 +74,9 @@ Recent decisions affecting current work:
|
||||
- [Phase 03]: WaitType omitempty pour compatibilite clients existants
|
||||
- [Phase 03]: hookPort=0 dans tests pour eviter bind accidentel
|
||||
- [Phase 03]: time.After dynamique remplace ticker fixe pour poll interval
|
||||
- [Phase 04]: notify-send via os/exec avec timeout 5s (pas de lib D-Bus)
|
||||
- [Phase 04]: Notification uniquement sur Working -> Needs Input (D-01)
|
||||
- [Phase 04]: FocusTimer par timer uniquement, pas de toggle (D-04)
|
||||
|
||||
### Pending Todos
|
||||
|
||||
@@ -84,6 +88,6 @@ None yet.
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-03-23T19:31:54.294Z
|
||||
Stopped at: Phase 4 context gathered
|
||||
Resume file: .planning/phases/04-notifications-et-i3bar/04-CONTEXT.md
|
||||
Last session: 2026-03-23T20:27:01.792Z
|
||||
Stopped at: Completed 04-01-PLAN.md
|
||||
Resume file: None
|
||||
|
||||
98
.planning/phases/04-notifications-et-i3bar/04-01-SUMMARY.md
Normal file
98
.planning/phases/04-notifications-et-i3bar/04-01-SUMMARY.md
Normal file
@@ -0,0 +1,98 @@
|
||||
---
|
||||
phase: 04-notifications-et-i3bar
|
||||
plan: 01
|
||||
subsystem: notifications
|
||||
tags: [notify-send, dunst, focus-mode, desktop-notifications]
|
||||
|
||||
requires:
|
||||
- phase: 03-hooks-claude-code
|
||||
provides: "Hook server, processHookEvent, UpdateFromHook with PrevState tracking"
|
||||
provides:
|
||||
- "Notifier interface (ExecNotifier + NullNotifier)"
|
||||
- "FocusTimer thread-safe (Set/IsActive/Remaining)"
|
||||
- "Notification on Working -> Needs Input transition"
|
||||
- "CLI vmux focus <minutes> command"
|
||||
affects: [04-02-i3bar]
|
||||
|
||||
tech-stack:
|
||||
added: [notify-send via os/exec]
|
||||
patterns: [interface-based notification injection, spy pattern for testing side-effects]
|
||||
|
||||
key-files:
|
||||
created: [notify.go, notify_test.go, focus.go, focus_test.go]
|
||||
modified: [daemon.go, hook.go, protocol.go, main.go, daemon_test.go]
|
||||
|
||||
key-decisions:
|
||||
- "notify-send via os/exec (pas de lib D-Bus) pour simplicite"
|
||||
- "FocusTimer par timer uniquement, pas de toggle on/off"
|
||||
- "Notification uniquement sur Working -> Needs Input (pas Idle -> Needs Input)"
|
||||
|
||||
patterns-established:
|
||||
- "spyNotifier pattern: spy struct pour tester les side-effects de notification"
|
||||
- "Interface injection: Notifier injectable dans Daemon pour testabilite"
|
||||
|
||||
requirements-completed: [NOTIF-01, NOTIF-02]
|
||||
|
||||
duration: 3min
|
||||
completed: 2026-03-23
|
||||
---
|
||||
|
||||
# Phase 04 Plan 01: Notifications Desktop et Mode Focus Summary
|
||||
|
||||
**Notifications dunst via notify-send sur transition Working -> Needs Input, avec mode focus pour supprimer temporairement les alertes**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** 3 min
|
||||
- **Started:** 2026-03-23T20:23:04Z
|
||||
- **Completed:** 2026-03-23T20:26:11Z
|
||||
- **Tasks:** 2
|
||||
- **Files modified:** 9
|
||||
|
||||
## Accomplishments
|
||||
- Notifier interface avec ExecNotifier (notify-send --urgency=critical) et NullNotifier
|
||||
- FocusTimer thread-safe qui supprime les notifications pendant N minutes
|
||||
- Integration dans processHookEvent : notifie uniquement sur Working -> Needs Input
|
||||
- CLI `vmux focus <minutes>` pour activer le mode focus
|
||||
|
||||
## Task Commits
|
||||
|
||||
Each task was committed atomically:
|
||||
|
||||
1. **Task 1: Notifier interface, FocusTimer, et tests** - `b96c6d0` (feat)
|
||||
2. **Task 2: Integration notifications dans daemon + CLI focus** - `efbe319` (feat)
|
||||
|
||||
## Files Created/Modified
|
||||
- `notify.go` - Notifier interface, ExecNotifier (notify-send), NullNotifier, shortName helper
|
||||
- `notify_test.go` - Tests ExecNotifier, NullNotifier, shortName
|
||||
- `focus.go` - FocusTimer struct thread-safe (Set/IsActive/Remaining)
|
||||
- `focus_test.go` - Tests FocusTimer Set/Expired/Remaining/ZeroValue
|
||||
- `daemon.go` - Champs notifier + focus dans Daemon, handler "focus"
|
||||
- `hook.go` - Lecture PrevState avant UpdateFromHook, notification conditionnelle
|
||||
- `protocol.go` - FocusArgs, FocusRemaining dans Response
|
||||
- `main.go` - CLI "focus <minutes>", usage mis a jour
|
||||
- `daemon_test.go` - spyNotifier, tests transitions notification, test focus handler
|
||||
|
||||
## Decisions Made
|
||||
- notify-send via os/exec avec timeout 5s (pas de lib D-Bus, simplicite)
|
||||
- Notification uniquement sur Working -> Needs Input (D-01)
|
||||
- Focus = timer uniquement, pas de toggle (D-04)
|
||||
- Focus bloque les notifications mais pas l'i3bar (D-05)
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None - plan executed exactly as written.
|
||||
|
||||
## Issues Encountered
|
||||
None
|
||||
|
||||
## User Setup Required
|
||||
None - no external service configuration required.
|
||||
|
||||
## Next Phase Readiness
|
||||
- Notification infrastructure en place, prete pour le widget i3bar (plan 04-02)
|
||||
- FocusTimer expose pour usage futur dans l'i3bar
|
||||
|
||||
---
|
||||
*Phase: 04-notifications-et-i3bar*
|
||||
*Completed: 2026-03-23*
|
||||
Reference in New Issue
Block a user