vibe-pomo 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  <!-- README-I18N:START -->
11
11
 
12
- **English** | [汉语](./README.zh.md)
12
+ **English** | [中文](./README.zh.md)
13
13
 
14
14
  <!-- README-I18N:END -->
15
15
 
@@ -17,69 +17,9 @@
17
17
 
18
18
  ## Why vibe-pomo
19
19
 
20
- Most AI coding tools are built around one assumption: you're always watching. Every tool call, every decision, every completion — the agent pings you, waits for you, interrupts you. Each exchange is small, but the cumulative cost is enormous: you never get more than a few minutes of unbroken attention.
20
+ Most AI coding tools assume you're always watching — the agent pings you, waits for you, interrupts you. **vibe-pomo flips this.** Start a Pomodoro, hand the agent a task, and step away. Tool calls auto-approved, notifications silenced, decisions queued. When the timer ends, *you* decide when to come back.
21
21
 
22
- **vibe-pomo flips this.** Start a Pomodoro, hand the agent a task, and step away. The agent works autonomously notifications silenced, decisions queued, no interruptions. When the timer ends, *you* decide when to come back. Not the agent.
23
-
24
- **Deep focus, on both sides.**
25
- Block out distraction-free time for yourself while the agent runs its own uninterrupted work session. No context switches. No reactive loops. Just two parallel flows converging when you're ready.
26
-
27
- **Know where your time goes.**
28
- Every session is logged with what the agent accomplished and what you worked on. Review per-project focus time, browse session history, and see exactly how your hours were spent — a clear record for personal retrospectives and project planning.
29
-
30
- ---
31
-
32
- ## How It Works
33
-
34
- Two terminals, two roles:
35
-
36
- ```
37
- Terminal A — daemon (always open) Terminal B — Claude Code conversation
38
- ───────────────────────────────── ───────────────────────────────────────
39
- $ pomodoro daemon /pomodoro 25m Fix auth bug
40
- |
41
- 🍅 Pomodoro daemon running +---> Timer window opens
42
- Agent starts working
43
- Active Sessions Notifications silenced
44
- 23:41 my-project Fix auth bug Tool calls auto-approved
45
-
46
- Project Focus Time
47
- my-project ████████████░░ 3h 45m
48
-
49
- Recent Sessions
50
- my-project Fix auth bug
51
- 🤖 Rewrote JWT middleware
52
- 👤 Had a planning call
53
- ```
54
-
55
- ```
56
- Timer window (per session)
57
- ──────────────────────────────────
58
- 🍅 Pomodoro
59
-
60
- +02:13 OVERTIME
61
-
62
- Task: Fix auth bug
63
-
64
- Notifications
65
- ┌──────────────────────────────┐
66
- │ Build passed │
67
- │ Tests: 42 passed │
68
- └──────────────────────────────┘
69
-
70
- [E] End Session [B] Break [Q] Quit
71
- ```
72
-
73
- When the timer ends, queued notifications are released and you're prompted to log what *you* did during that time:
74
-
75
- ```
76
- What did you do during this session?
77
- (optional — press Enter to skip)
78
-
79
- > Reviewed the RFC, had a planning call with the team
80
- ```
81
-
82
- This gets saved alongside the agent's summary, giving you a dual-perspective record of every session.
22
+ Every session is logged what the agent did, what you didgiving you a clear record across projects.
83
23
 
84
24
  ---
85
25
 
@@ -110,7 +50,24 @@ pomodoro install
110
50
  pomodoro daemon
111
51
  ```
112
52
 
113
- Shows a live dashboard: active sessions with countdowns, per-project focus time, and recent session history.
53
+ ```
54
+ 🍅 Pomodoro daemon running · 1 active session [Q] Quit daemon
55
+
56
+ Active Sessions
57
+ 23:41 my-project Fix auth bug [3 queued]
58
+
59
+ Project Focus Time
60
+ my-project ████████████████████████████ 4h 25m
61
+ side-project ███████████░░░░░░░░░░░░░░░░░ 1h 45m
62
+
63
+ Recent Sessions
64
+ 4/13 my-project Refactor auth module 28m completed
65
+ 🤖 Rewrote JWT middleware, pending: refresh token expiry strategy
66
+ 👤 Read RFC, had planning call with team
67
+ 4/13 my-project Fix payment webhook 18m completed
68
+ 🤖 Found and fixed Stripe signature validation bug
69
+ 👤 Coffee, cleared inbox
70
+ ```
114
71
 
115
72
  ### 2. Start a session
116
73
 
@@ -123,22 +80,48 @@ pomodoro start 25m Refactor the auth module
123
80
  pomodoro start Refactor the auth module # uses default duration
124
81
  ```
125
82
 
126
- A timer window opens. The agent starts working. You're free.
83
+ A timer window opens in a new terminal. The agent starts working. You're free.
84
+
85
+ ```
86
+ 🍅 Pomodoro
87
+
88
+ 23:45
89
+ RUNNING
127
90
 
128
- ### 3. During the session
91
+ Task Refactor the auth module
129
92
 
130
- The agent works autonomously — tool calls approved, notifications queued, decisions logged. You can check in from Claude Code without exiting:
93
+ Notifications (3 queued, releasing at overtime…)
94
+ ┌────────────────────────────────────────────────────────────┐
95
+ │ — │
96
+ └────────────────────────────────────────────────────────────┘
131
97
 
98
+ [B] Break [Q] Quit
132
99
  ```
133
- /pomodoro-stats view time tracking statistics
134
- /pomodoro-stop break the current session
100
+
101
+ ### 3. When the timer ends
102
+
103
+ The display switches to overtime and queued notifications are released. Press **E** to end the session and log what you did.
104
+
135
105
  ```
106
+ 🍅 Pomodoro
136
107
 
137
- ### 4. When the timer ends
108
+ +02:13
109
+ OVERTIME
110
+
111
+ Task Refactor the auth module
112
+
113
+ Notifications
114
+ ┌────────────────────────────────────────────────────────────┐
115
+ │ 09:42:01 Build passed │
116
+ │ 09:42:01 Tests: 42 passed │
117
+ └────────────────────────────────────────────────────────────┘
118
+
119
+ [E] End Session [B] Break [Q] Quit
120
+ ```
138
121
 
139
- Timer switches to overtime. Queued notifications appear. Press **E** to end, log what you did, then review the agent's summary and any pending decisions in `.claude/pomodoro-summary.md` and `.claude/pomodoro-pending.md`.
122
+ The agent's summary and any pending decisions are saved to `.claude/pomodoro-summary.md` and `.claude/pomodoro-pending.md`.
140
123
 
141
- ### 5. Review your stats
124
+ ### 4. Review your stats
142
125
 
143
126
  ```bash
144
127
  pomodoro stats
package/README.zh.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <!-- README-I18N:START -->
8
8
 
9
- [English](./README.md) | **汉语**
9
+ [English](./README.md) | **中文**
10
10
 
11
11
  <!-- README-I18N:END -->
12
12
 
package/install.mjs CHANGED
@@ -15,8 +15,10 @@ const SETTINGS_PATH = join(homedir(), '.claude', 'settings.json')
15
15
 
16
16
  export function runInstall() {
17
17
  const nodeExec = process.execPath
18
- // Quote paths containing spaces (common on Windows)
19
- const q = (p) => p.includes(' ') ? `"${p}"` : p
18
+ // On Windows, backslashes in paths break bash (used by Claude Code hooks).
19
+ // Convert to forward slashes, which work in both cmd/PowerShell and Git Bash.
20
+ const normPath = (p) => p.replace(/\\/g, '/')
21
+ const q = (p) => { const n = normPath(p); return n.includes(' ') ? `"${n}"` : n }
20
22
 
21
23
  const hookDefs = {
22
24
  PreToolUse: [
@@ -109,7 +111,8 @@ function installSlashCommand() {
109
111
  function writePomodoroCommand(dest) {
110
112
  const pomodoroPath = join(__dirname, 'bin', 'pomodoro.mjs')
111
113
  const nodeExec = process.execPath
112
- const q = (p) => p.includes(' ') ? `"${p}"` : p
114
+ const normPath = (p) => p.replace(/\\/g, '/')
115
+ const q = (p) => { const n = normPath(p); return n.includes(' ') ? `"${n}"` : n }
113
116
  writeFileSync(dest, `---
114
117
  description: Start a Pomodoro focus session — agent works autonomously until timer ends
115
118
  argument-hint: "[duration e.g. 25m] [task description]"
@@ -138,7 +141,8 @@ The user has started a Pomodoro focus session and **will not be checking the scr
138
141
  function writeStatsCommand(dest) {
139
142
  const pomodoroPath = join(__dirname, 'bin', 'pomodoro.mjs')
140
143
  const nodeExec = process.execPath
141
- const q = (p) => p.includes(' ') ? `"${p}"` : p
144
+ const normPath = (p) => p.replace(/\\/g, '/')
145
+ const q = (p) => { const n = normPath(p); return n.includes(' ') ? `"${n}"` : n }
142
146
  writeFileSync(dest, `---
143
147
  description: Show Pomodoro time tracking statistics
144
148
  ---
@@ -154,7 +158,8 @@ ${q(nodeExec)} ${q(pomodoroPath)} stats
154
158
  function writeStopCommand(dest) {
155
159
  const pomodoroPath = join(__dirname, 'bin', 'pomodoro.mjs')
156
160
  const nodeExec = process.execPath
157
- const q = (p) => p.includes(' ') ? `"${p}"` : p
161
+ const normPath = (p) => p.replace(/\\/g, '/')
162
+ const q = (p) => { const n = normPath(p); return n.includes(' ') ? `"${n}"` : n }
158
163
  writeFileSync(dest, `---
159
164
  description: Break (stop) the current Pomodoro session
160
165
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibe-pomo",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "You and your agent, both in flow. A Pomodoro timer for Claude Code that keeps agents working autonomously while you stay deep in focus — uninterrupted.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -36,12 +36,12 @@
36
36
  "better-sqlite3": "^9.4.3",
37
37
  "ink": "^5.1.0",
38
38
  "ink-text-input": "^6.0.0",
39
- "react": "^18.3.1"
39
+ "react": "^18.3.1",
40
+ "tsx": "^4.19.2"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@types/better-sqlite3": "^7.6.8",
43
- "@types/react": "^18.3.1",
44
- "tsx": "^4.19.2"
44
+ "@types/react": "^18.3.1"
45
45
  },
46
46
  "engines": {
47
47
  "node": ">=20"