peemodoro 1.0.0 β 1.0.1
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 +73 -334
- package/dist/cli.js +3 -6
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/state-sync.d.ts.map +1 -1
- package/dist/core/state-sync.js +1 -12
- package/dist/core/state-sync.js.map +1 -1
- package/dist/persistence/config.d.ts.map +1 -1
- package/dist/persistence/config.js +1 -4
- package/dist/persistence/config.js.map +1 -1
- package/dist/persistence/database.d.ts.map +1 -1
- package/dist/persistence/database.js +5 -5
- package/dist/persistence/database.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,104 +8,48 @@
|
|
|
8
8
|
<h1 align="center">π½ Peemodoro</h1>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<strong>A
|
|
11
|
+
<strong>A pomodoro timer for Claude coders who forget to use the bathroom</strong>
|
|
12
12
|
<br />
|
|
13
13
|
<em>Your code can wait. Your kidneys cannot.</em>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
-
<a href="
|
|
18
|
-
<a href="
|
|
19
|
-
<a href="
|
|
20
|
-
<a href="
|
|
21
|
-
<a href="#-badges">Badges</a> β’
|
|
22
|
-
<a href="#%EF%B8%8F-configuration">Configuration</a>
|
|
17
|
+
<a href="#overview">Overview</a> β’
|
|
18
|
+
<a href="#installation">Installation</a> β’
|
|
19
|
+
<a href="#commands">Commands</a> β’
|
|
20
|
+
<a href="#configuration">Configuration</a>
|
|
23
21
|
</p>
|
|
24
22
|
|
|
25
23
|
---
|
|
26
24
|
|
|
27
|
-
##
|
|
25
|
+
## Overview
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
Peemodoro is a Claude Code plugin that reminds you to take breaks. It puts a countdown timer in your statusline that gets more urgent as time runs out.
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
The default is 45 minutes, which is roughly how long you can go before needing the bathroom if you're drinking enough water. Most pomodoro timers are about productivity. This one is about remembering to pee.
|
|
32
30
|
|
|
33
31
|
```
|
|
34
|
-
π§
|
|
35
|
-
π¦
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
π§ 32:15 ββββββββ Totally fine
|
|
33
|
+
π¦ 22:00 ββββββββ Hmm, maybe later
|
|
34
|
+
π
10:00 ββββββββ It can wait
|
|
35
|
+
π° 06:00 ββββββββ ...can it though?
|
|
36
|
+
π« 02:30 ββββββββ Oh no
|
|
37
|
+
π 01:00 ββββββββ OH NO
|
|
38
|
+
π½ TIME TO PEE ββββββββ GO. NOW.
|
|
38
39
|
```
|
|
39
40
|
|
|
40
41
|
---
|
|
41
42
|
|
|
42
|
-
##
|
|
43
|
+
## Installation
|
|
43
44
|
|
|
44
|
-
###
|
|
45
|
-
|
|
46
|
-
| Mode | Work | Break | Best For |
|
|
47
|
-
|------|------|-------|----------|
|
|
48
|
-
| **Classic** | 25 min | 5 min | Traditional Pomodoro fans |
|
|
49
|
-
| **Hydration** | 45 min | 10 min | Science-backed bladder timing |
|
|
50
|
-
| **Adaptive** | Learns | Learns | Your natural rhythm |
|
|
51
|
-
|
|
52
|
-
**Hydration Mode** (default) is based on actual bladder biologyβthe average person needs a bathroom break every 45 minutes when properly hydrated. No more arbitrary 25-minute intervals.
|
|
53
|
-
|
|
54
|
-
### π Escalating Reminders
|
|
55
|
-
|
|
56
|
-
Peemodoro uses a 4-level urgency system that intensifies as break time approaches:
|
|
57
|
-
|
|
58
|
-
| Level | Visual | Mood | What Happens |
|
|
59
|
-
|-------|--------|------|--------------|
|
|
60
|
-
| Fresh | π§ Green | π | Gentle ambient awareness |
|
|
61
|
-
| Building | π¦ Yellow | π | "Urine need of a break soon!" |
|
|
62
|
-
| Urgent | π Orange | π¬ | Clear break signals |
|
|
63
|
-
| Critical | π¨ Pulsing Red | π₯΄ | "CODE YELLOW! This is not a drill!" |
|
|
64
|
-
|
|
65
|
-
### π Gamification That Motivates
|
|
66
|
-
|
|
67
|
-
**25+ badges** to unlock, from milestones to hidden achievements:
|
|
68
|
-
|
|
69
|
-
- π½ **First Flush** β Your journey begins
|
|
70
|
-
- π― **Century Club** β 100 breaks logged
|
|
71
|
-
- βοΈ **Week Warrior** β 7-day streak
|
|
72
|
-
- π **Midnight Owl** β Break at exactly midnight
|
|
73
|
-
- π **Lucky Seven** β Break at 7:07:07
|
|
74
|
-
- π‘οΈ **Bladder of Steel** β Snooze 3 times before breaking
|
|
75
|
-
|
|
76
|
-
### π Cross-Terminal Sync
|
|
77
|
-
|
|
78
|
-
Multiple terminals? No problem. Peemodoro maintains shared state across all your sessions with intelligent file lockingβno duplicate reminders, no missed breaks.
|
|
79
|
-
|
|
80
|
-
### π― Focus Mode
|
|
81
|
-
|
|
82
|
-
Need deep work time? Enter focus mode to mute reminders while keeping the timer visible:
|
|
45
|
+
### Claude Code Marketplace (recommended)
|
|
83
46
|
|
|
84
47
|
```bash
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### π‘ Hydration Tips
|
|
89
|
-
|
|
90
|
-
Every break screen includes curated health tips:
|
|
91
|
-
|
|
92
|
-
> "Your brain is 75% water. A 2% drop in hydration can trigger a 10% decrease in cognitive performance."
|
|
93
|
-
|
|
94
|
-
---
|
|
48
|
+
# run inside claude code
|
|
95
49
|
|
|
96
|
-
## π¦ Installation
|
|
97
|
-
|
|
98
|
-
### Claude Code Marketplace (Recommended)
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
# Add the marketplace plugin (if not already installed)
|
|
102
50
|
/plugin marketplace add alecdewitz/peemodoro
|
|
103
|
-
|
|
104
|
-
# Install peemodoro
|
|
105
51
|
/plugin install peemodoro
|
|
106
|
-
|
|
107
|
-
# Configure statusline integration
|
|
108
|
-
/peemodoro-setup
|
|
52
|
+
/peemodoro:setup
|
|
109
53
|
```
|
|
110
54
|
|
|
111
55
|
**Restart Claude Code** to activate the statusline.
|
|
@@ -122,309 +66,104 @@ peemodoro setup
|
|
|
122
66
|
```bash
|
|
123
67
|
git clone https://github.com/alecdewitz/peemodoro.git
|
|
124
68
|
cd peemodoro
|
|
125
|
-
npm install
|
|
126
|
-
npm run build
|
|
127
|
-
npm link
|
|
69
|
+
npm install && npm run build && npm link
|
|
128
70
|
peemodoro setup
|
|
129
71
|
```
|
|
130
72
|
|
|
131
73
|
---
|
|
132
74
|
|
|
133
|
-
##
|
|
75
|
+
## Commands
|
|
134
76
|
|
|
135
|
-
|
|
136
|
-
# Start your first timer
|
|
137
|
-
peemodoro start
|
|
138
|
-
|
|
139
|
-
# When it's break time, log it
|
|
140
|
-
peemodoro pee
|
|
77
|
+
### Core
|
|
141
78
|
|
|
142
|
-
|
|
143
|
-
|
|
79
|
+
| Command | Description |
|
|
80
|
+
| -------- | ----------------------------------- |
|
|
81
|
+
| `/pee` | Log a break and reset the timer |
|
|
82
|
+
| `/start` | Start the timer |
|
|
83
|
+
| `/stats` | View break history and achievements |
|
|
84
|
+
| `/break` | Show the break screen |
|
|
144
85
|
|
|
145
|
-
|
|
146
|
-
peemodoro config
|
|
147
|
-
```
|
|
86
|
+
### Timer Control
|
|
148
87
|
|
|
149
|
-
|
|
88
|
+
| Command | Description |
|
|
89
|
+
| --------------- | --------------------------------------- |
|
|
90
|
+
| `/focus [min]` | Suppress reminders for up to 90 minutes |
|
|
91
|
+
| `/snooze [min]` | Delay reminder by 5-15 minutes |
|
|
92
|
+
| `/config` | View or update settings |
|
|
150
93
|
|
|
151
94
|
---
|
|
152
95
|
|
|
153
|
-
##
|
|
154
|
-
|
|
155
|
-
### Timer Controls
|
|
156
|
-
|
|
157
|
-
| Command | Description |
|
|
158
|
-
|---------|-------------|
|
|
159
|
-
| `peemodoro start` | Start the timer |
|
|
160
|
-
| `peemodoro pause` | Pause the running timer |
|
|
161
|
-
| `peemodoro resume` | Resume a paused timer |
|
|
162
|
-
| `peemodoro reset` | Reset timer to initial state |
|
|
163
|
-
|
|
164
|
-
### Break Actions
|
|
165
|
-
|
|
166
|
-
| Command | Description |
|
|
167
|
-
|---------|-------------|
|
|
168
|
-
| `peemodoro pee` | Log a bathroom break |
|
|
169
|
-
| `peemodoro stretch` | Log a stretch break |
|
|
170
|
-
| `peemodoro skip` | Skip the break (trackedβwe're watching π) |
|
|
171
|
-
| `peemodoro snooze [min]` | Snooze reminder for 5-15 minutes |
|
|
172
|
-
|
|
173
|
-
### Information
|
|
174
|
-
|
|
175
|
-
| Command | Description |
|
|
176
|
-
|---------|-------------|
|
|
177
|
-
| `peemodoro stats` | View break history, streaks, and badges |
|
|
178
|
-
| `peemodoro break` | Display the break screen with tips |
|
|
179
|
-
| `peemodoro help` | Show all commands |
|
|
180
|
-
| `peemodoro version` | Display version number |
|
|
181
|
-
|
|
182
|
-
### Focus & Configuration
|
|
183
|
-
|
|
184
|
-
| Command | Description |
|
|
185
|
-
|---------|-------------|
|
|
186
|
-
| `peemodoro focus [min]` | Enter focus mode (max 90 min) |
|
|
187
|
-
| `peemodoro config` | Show current settings |
|
|
188
|
-
| `peemodoro config set <key> <value>` | Update a setting |
|
|
189
|
-
|
|
190
|
-
### Setup
|
|
191
|
-
|
|
192
|
-
| Command | Description |
|
|
193
|
-
|---------|-------------|
|
|
194
|
-
| `peemodoro setup` | Configure Claude Code integration |
|
|
195
|
-
| `peemodoro uninstall` | Remove Claude Code integration |
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## π
Badges
|
|
200
|
-
|
|
201
|
-
Progress through 25+ achievements across four categories:
|
|
202
|
-
|
|
203
|
-
### Milestone Badges
|
|
204
|
-
| Badge | Name | Requirement |
|
|
205
|
-
|-------|------|-------------|
|
|
206
|
-
| π½ | First Flush | Log your first break |
|
|
207
|
-
| π | Ten Timer | 10 breaks |
|
|
208
|
-
| π― | Century Club | 100 breaks |
|
|
209
|
-
| ποΈ | High Fiver | 500 breaks |
|
|
210
|
-
| π | Grand Master | 1,000 breaks |
|
|
211
|
-
|
|
212
|
-
### Streak Badges
|
|
213
|
-
| Badge | Name | Requirement |
|
|
214
|
-
|-------|------|-------------|
|
|
215
|
-
| βοΈ | Week Warrior | 7-day streak |
|
|
216
|
-
| π
| Month Master | 30-day streak |
|
|
217
|
-
| π | Quarter Champion | 90-day streak |
|
|
218
|
-
|
|
219
|
-
### Behavior Badges
|
|
220
|
-
| Badge | Name | Requirement |
|
|
221
|
-
|-------|------|-------------|
|
|
222
|
-
| π¦ | Early Bird | 10 breaks before 9 AM |
|
|
223
|
-
| π¦ | Night Owl | 10 breaks after 10 PM |
|
|
224
|
-
| β‘ | Speed Pee-er | 10 breaks under 2 minutes |
|
|
225
|
-
| β¨ | Perfect Week | No skipped breaks for 7 days |
|
|
226
|
-
| π¦ | Waterfall | Respond within 30 seconds |
|
|
227
|
-
| π‘οΈ | Bladder of Steel | Snooze 3 times before breaking |
|
|
228
|
-
| πͺ | Camel Mode | Use hydration mode for 30 days |
|
|
229
|
-
| π | Aquaholic | 20+ breaks in one day |
|
|
230
|
-
|
|
231
|
-
### Secret Badges
|
|
232
|
-
*Hidden achievements unlocked by specific patterns...*
|
|
233
|
-
|
|
234
|
-
| Badge | Name | Hint |
|
|
235
|
-
|-------|------|------|
|
|
236
|
-
| π | ??? | The witching hour |
|
|
237
|
-
| π | ??? | Lucky numbers |
|
|
238
|
-
| π | ??? | New beginnings |
|
|
239
|
-
| π | ??? | Same forwards and backwards |
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## βοΈ Configuration
|
|
244
|
-
|
|
245
|
-
### View Current Settings
|
|
96
|
+
## Configuration
|
|
246
97
|
|
|
247
98
|
```bash
|
|
248
|
-
peemodoro config
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
βοΈ Peemodoro Configuration
|
|
253
|
-
|
|
254
|
-
π Mode: Hydration Mode (45/10)
|
|
255
|
-
β±οΈ Work Duration: 45 minutes
|
|
256
|
-
β Break Duration: 10 minutes
|
|
257
|
-
ποΈ Long Break: 20 minutes
|
|
258
|
-
π Cycles before long break: 4
|
|
259
|
-
|
|
260
|
-
Display:
|
|
261
|
-
Progress bar: β
|
|
262
|
-
Mood emoji: β
|
|
263
|
-
Streak counter: β
|
|
264
|
-
|
|
265
|
-
Notifications:
|
|
266
|
-
Desktop: β
|
|
267
|
-
Sound: β
|
|
99
|
+
peemodoro config # View current settings
|
|
100
|
+
peemodoro config set mode classic # Switch timer mode
|
|
101
|
+
peemodoro config set work 30 # Custom work duration
|
|
268
102
|
```
|
|
269
103
|
|
|
270
|
-
###
|
|
104
|
+
### Timer Modes
|
|
271
105
|
|
|
272
|
-
|
|
|
273
|
-
|
|
274
|
-
|
|
|
275
|
-
|
|
|
276
|
-
|
|
|
277
|
-
| `sound` | `on`, `off` | Sound notifications |
|
|
278
|
-
| `notifications` | `on`, `off` | Desktop notifications |
|
|
279
|
-
|
|
280
|
-
### Examples
|
|
281
|
-
|
|
282
|
-
```bash
|
|
283
|
-
# Switch to classic Pomodoro
|
|
284
|
-
peemodoro config set mode classic
|
|
285
|
-
|
|
286
|
-
# Custom 30-minute work sessions
|
|
287
|
-
peemodoro config set work 30
|
|
288
|
-
|
|
289
|
-
# Disable sounds
|
|
290
|
-
peemodoro config set sound off
|
|
291
|
-
```
|
|
292
|
-
|
|
293
|
-
---
|
|
294
|
-
|
|
295
|
-
## π Statusline Display
|
|
296
|
-
|
|
297
|
-
The statusline provides at-a-glance awareness without context switching:
|
|
298
|
-
|
|
299
|
-
```
|
|
300
|
-
π§ 23:45 ββββββββ π # Fresh - all good
|
|
301
|
-
π¦ 12:30 ββββββββ π # Building - halfway there
|
|
302
|
-
π 02:15 ββββββββ π¬ π₯7 # Urgent + 7-day streak
|
|
303
|
-
π¨ OVERDUE ββββββββ π₯΄ # Critical - take a break!
|
|
304
|
-
π― π§ 18:22 ββββββ [muted] # Focus mode active
|
|
305
|
-
π½ BREAK 08:45 ββββββββ # Break time
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### Statusline Elements
|
|
309
|
-
|
|
310
|
-
| Element | Meaning |
|
|
311
|
-
|---------|---------|
|
|
312
|
-
| π§π¦ππ¨ | Urgency level indicator |
|
|
313
|
-
| `MM:SS` | Time remaining |
|
|
314
|
-
| `ββββββββ` | Visual progress bar |
|
|
315
|
-
| πππ¬π₯΄ | Mood emoji |
|
|
316
|
-
| π₯N | Current streak (shown when β₯3 days) |
|
|
317
|
-
| π― | Focus mode active |
|
|
318
|
-
| π½ | Currently on break |
|
|
319
|
-
|
|
320
|
-
---
|
|
321
|
-
|
|
322
|
-
## π― Adaptive Mode
|
|
323
|
-
|
|
324
|
-
When using adaptive mode, Peemodoro learns from your patterns:
|
|
325
|
-
|
|
326
|
-
1. **Analyzes** your break timing history
|
|
327
|
-
2. **Identifies** your natural focus duration
|
|
328
|
-
3. **Adjusts** work intervals (20-90 minute range)
|
|
329
|
-
4. **Adapts** to your time-of-day preferences
|
|
330
|
-
|
|
331
|
-
Enable it with:
|
|
332
|
-
|
|
333
|
-
```bash
|
|
334
|
-
peemodoro config set mode adaptive
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
The more you use it, the smarter it gets.
|
|
106
|
+
| Mode | Work | Break | Description |
|
|
107
|
+
| ------------- | -------- | -------- | ---------------------------------------------------- |
|
|
108
|
+
| **Hydration** | 45 min | 10 min | Default. Based on how long you can actually hold it. |
|
|
109
|
+
| **Classic** | 25 min | 5 min | Traditional Pomodoro intervals. |
|
|
110
|
+
| **Adaptive** | Variable | Variable | Learns from your patterns over time. |
|
|
338
111
|
|
|
339
112
|
---
|
|
340
113
|
|
|
341
|
-
##
|
|
114
|
+
## Badges
|
|
342
115
|
|
|
343
|
-
|
|
116
|
+
You unlock achievements as you keep up with breaks.
|
|
344
117
|
|
|
345
|
-
|
|
346
|
-
|------|---------|
|
|
347
|
-
| `state.json` | Current timer state (synced across terminals) |
|
|
348
|
-
| `history.db` | Break history and statistics (SQLite) |
|
|
349
|
-
| `config.json` | User preferences |
|
|
118
|
+
### Milestones
|
|
350
119
|
|
|
351
|
-
|
|
120
|
+
| Badge | Name | Requirement |
|
|
121
|
+
| ----- | ------------ | -------------------- |
|
|
122
|
+
| π½ | First Flush | Log your first break |
|
|
123
|
+
| π― | Century Club | 100 breaks |
|
|
124
|
+
| π | Grand Master | 1,000 breaks |
|
|
352
125
|
|
|
353
|
-
|
|
126
|
+
### Streaks
|
|
354
127
|
|
|
355
|
-
|
|
128
|
+
| Badge | Name | Requirement |
|
|
129
|
+
| ----- | ------------ | ------------- |
|
|
130
|
+
| βοΈ | Week Warrior | 7-day streak |
|
|
131
|
+
| π
| Month Master | 30-day streak |
|
|
356
132
|
|
|
357
|
-
|
|
133
|
+
### Behavioral
|
|
358
134
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
135
|
+
| Badge | Name | Requirement |
|
|
136
|
+
| ----- | ---------------- | ------------------------------ |
|
|
137
|
+
| π‘οΈ | Bladder of Steel | Snooze 3 times before breaking |
|
|
138
|
+
| π | Aquaholic | 20+ breaks in one day |
|
|
362
139
|
|
|
363
|
-
|
|
140
|
+
There are also some hidden badges that unlock at specific times.
|
|
364
141
|
|
|
365
142
|
---
|
|
366
143
|
|
|
367
|
-
##
|
|
368
|
-
|
|
369
|
-
### Statusline not appearing?
|
|
370
|
-
|
|
371
|
-
1. Ensure you've run `peemodoro setup` or `/peemodoro-setup`
|
|
372
|
-
2. Restart Claude Code completely
|
|
373
|
-
3. Check that the timer is running: `peemodoro start`
|
|
374
|
-
|
|
375
|
-
### Timer not syncing across terminals?
|
|
144
|
+
## Data Storage
|
|
376
145
|
|
|
377
|
-
|
|
146
|
+
Everything stays on your machine in `~/.peemodoro/`:
|
|
378
147
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
### Notifications not working?
|
|
386
|
-
|
|
387
|
-
```bash
|
|
388
|
-
peemodoro config set notifications on
|
|
389
|
-
peemodoro config set sound on
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
Desktop notifications depend on your OS notification system being enabled.
|
|
148
|
+
| File | Purpose |
|
|
149
|
+
| ------------- | --------------------------------------------- |
|
|
150
|
+
| `state.json` | Current timer state (synced across terminals) |
|
|
151
|
+
| `history.db` | Break history and statistics |
|
|
152
|
+
| `config.json` | Your preferences |
|
|
393
153
|
|
|
394
154
|
---
|
|
395
155
|
|
|
396
|
-
##
|
|
397
|
-
|
|
398
|
-
Contributions are welcome! Areas of interest:
|
|
399
|
-
|
|
400
|
-
- Additional timer modes
|
|
401
|
-
- More badges and achievements
|
|
402
|
-
- Sound effect themes
|
|
403
|
-
- Localization support
|
|
404
|
-
- Integration tests
|
|
405
|
-
|
|
406
|
-
### Development
|
|
156
|
+
## Contributing
|
|
407
157
|
|
|
408
158
|
```bash
|
|
409
159
|
git clone https://github.com/alecdewitz/peemodoro.git
|
|
410
160
|
cd peemodoro
|
|
411
161
|
npm install
|
|
412
|
-
npm run dev
|
|
413
|
-
npm run build # Production build
|
|
414
|
-
npm test # Run tests
|
|
162
|
+
npm run dev
|
|
415
163
|
```
|
|
416
164
|
|
|
417
165
|
---
|
|
418
166
|
|
|
419
|
-
## π License
|
|
420
|
-
|
|
421
|
-
MIT License - see [LICENSE](LICENSE) for details.
|
|
422
|
-
|
|
423
|
-
---
|
|
424
|
-
|
|
425
167
|
<p align="center">
|
|
426
|
-
<
|
|
427
|
-
<br />
|
|
428
|
-
<br />
|
|
429
|
-
<em>Built with π§ for developers who forget they have bodies</em>
|
|
168
|
+
<em>Built for developers who forget they have bodies.</em>
|
|
430
169
|
</p>
|
package/dist/cli.js
CHANGED
|
@@ -74,14 +74,11 @@ async function main() {
|
|
|
74
74
|
console.log(commands.reset());
|
|
75
75
|
break;
|
|
76
76
|
case 'pee':
|
|
77
|
-
console.log(await commands.pee('pee'));
|
|
78
|
-
break;
|
|
79
77
|
case 'stretch':
|
|
80
|
-
console.log(await commands.pee('stretch'));
|
|
81
|
-
break;
|
|
82
78
|
case 'skip':
|
|
83
|
-
console.log(await commands.pee(
|
|
84
|
-
|
|
79
|
+
console.log(await commands.pee(command));
|
|
80
|
+
if (command === 'skip')
|
|
81
|
+
console.log(chalk.yellow('(Your bladder will remember this...)'));
|
|
85
82
|
break;
|
|
86
83
|
case 'focus':
|
|
87
84
|
const focusMins = args[1] ? parseInt(args[1], 10) : undefined;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,SAAS,GAAG;EAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;;EAE/B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;;;EAGtB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;IACvB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;IAEpB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;IAClB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;;IAEnB,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;IAC3B,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;;IAE5B,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;IACrB,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;;IAEjC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;IACzB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;IACpB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;;IAExB,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;IAC3B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;;EAErB,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;;;;;;;EAO5B,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;;;;;;;EAOzB,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC;CACnF,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAEvC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,OAAO;gBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9B,MAAM;YAER,KAAK,OAAO;gBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9B,MAAM;YAER,KAAK,QAAQ;gBACX,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/B,MAAM;YAER,KAAK,OAAO;gBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9B,MAAM;YAER,KAAK,KAAK
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const PEEMODORO_DIR: string;
|
|
2
|
+
export declare const STATE_FILE: string;
|
|
3
|
+
export declare const LOCK_FILE: string;
|
|
4
|
+
export declare const CONFIG_FILE: string;
|
|
5
|
+
export declare const DB_PATH: string;
|
|
6
|
+
export declare const LOCK_TIMEOUT = 5000;
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,QAAwC,CAAC;AACnE,eAAO,MAAM,UAAU,QAAyC,CAAC;AACjE,eAAO,MAAM,SAAS,QAAyC,CAAC;AAChE,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,OAAO,QAAyC,CAAC;AAC9D,eAAO,MAAM,YAAY,OAAO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as os from 'os';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
export const PEEMODORO_DIR = path.join(os.homedir(), '.peemodoro');
|
|
4
|
+
export const STATE_FILE = path.join(PEEMODORO_DIR, 'state.json');
|
|
5
|
+
export const LOCK_FILE = path.join(PEEMODORO_DIR, 'state.lock');
|
|
6
|
+
export const CONFIG_FILE = path.join(PEEMODORO_DIR, 'config.json');
|
|
7
|
+
export const DB_PATH = path.join(PEEMODORO_DIR, 'history.db');
|
|
8
|
+
export const LOCK_TIMEOUT = 5000;
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-sync.d.ts","sourceRoot":"","sources":["../../src/core/state-sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state-sync.d.ts","sourceRoot":"","sources":["../../src/core/state-sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAkB,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMlG,qBAAa,SAAS;IACpB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,aAAa,CAAC,CAA4B;;IAOlD,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,WAAW;IAiBnB,QAAQ,IAAI,QAAQ;IA6BpB,OAAO,CAAC,kBAAkB;IA2B1B,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO;IAyB5C,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO;IAOhD,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO;IAOnD,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO;IAO/C,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAW/B,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAkBrD,YAAY,IAAI,IAAI;IAOpB,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,OAAO;IAKnB,eAAe,IAAI,OAAO;IAI1B,OAAO,IAAI,IAAI;CAIhB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
package/dist/core/state-sync.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
|
-
import
|
|
3
|
-
import * as path from 'path';
|
|
2
|
+
import { LOCK_FILE, LOCK_TIMEOUT, PEEMODORO_DIR, STATE_FILE } from '../constants.js';
|
|
4
3
|
import { DEFAULT_CONFIG } from '../types.js';
|
|
5
|
-
const PEEMODORO_DIR = path.join(os.homedir(), '.peemodoro');
|
|
6
|
-
const STATE_FILE = path.join(PEEMODORO_DIR, 'state.json');
|
|
7
|
-
const LOCK_FILE = path.join(PEEMODORO_DIR, 'state.lock');
|
|
8
|
-
const LOCK_TIMEOUT = 5000; // 5 seconds
|
|
9
4
|
function generateInstanceId() {
|
|
10
5
|
return `pee-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
|
|
11
6
|
}
|
|
@@ -150,12 +145,6 @@ export class StateSync {
|
|
|
150
145
|
}
|
|
151
146
|
}
|
|
152
147
|
retries++;
|
|
153
|
-
// Small delay before retry
|
|
154
|
-
const delay = Math.random() * 100;
|
|
155
|
-
const start = Date.now();
|
|
156
|
-
while (Date.now() - start < delay) {
|
|
157
|
-
// Busy wait (sync delay)
|
|
158
|
-
}
|
|
159
148
|
}
|
|
160
149
|
return false;
|
|
161
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-sync.js","sourceRoot":"","sources":["../../src/core/state-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"state-sync.js","sourceRoot":"","sources":["../../src/core/state-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/persistence/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/persistence/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnF,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAElD,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IAGrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IAGpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IAGxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,QAAA,MAAM,mBAAmB,EAAE,eAsB1B,CAAC;AAEF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAkB;;IAOhC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,IAAI;IAcZ,IAAI,IAAI,IAAI;IAIZ,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAIhE,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAK7E,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAK/C,MAAM,IAAI,eAAe;IAIzB,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK9B,KAAK,IAAI,IAAI;IAMb,cAAc,IAAI,WAAW;IAa7B,YAAY,IAAI,IAAI;IAOpB,gBAAgB,IAAI,OAAO;IAI3B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK1C,cAAc,IAAI,MAAM,GAAG,IAAI;CAGhC;AAKD,wBAAgB,SAAS,IAAI,aAAa,CAKzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
|
-
import
|
|
3
|
-
import * as path from 'path';
|
|
2
|
+
import { CONFIG_FILE, PEEMODORO_DIR } from '../constants.js';
|
|
4
3
|
import { DEFAULT_CONFIG, MODE_PRESETS } from '../types.js';
|
|
5
|
-
const PEEMODORO_DIR = path.join(os.homedir(), '.peemodoro');
|
|
6
|
-
const CONFIG_FILE = path.join(PEEMODORO_DIR, 'config.json');
|
|
7
4
|
const DEFAULT_FULL_CONFIG = {
|
|
8
5
|
...DEFAULT_CONFIG,
|
|
9
6
|
// UI preferences
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/persistence/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/persistence/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/persistence/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/persistence/database.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAoB;;IAQ9B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,IAAI;IAsDZ,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW;IAsClG,OAAO,CAAC,YAAY;IA+BpB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUnC,SAAS,CAAC,KAAK,GAAE,MAAY,EAAE,MAAM,GAAE,MAAU,GAAG,WAAW,EAAE;IASjE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAY7C,QAAQ,IAAI,SAAS;IAkCrB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAU7B,SAAS,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE;IAO1E,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAQf,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUnC,oBAAoB,IAAI,MAAM;IAQ9B,oBAAoB,IAAI;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB;IAkCD;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAO5B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAO3B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOnC;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,KAAK,IAAI,IAAI;CAGd;AAKD,wBAAgB,WAAW,IAAI,iBAAiB,CAK/C"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
|
-
import
|
|
4
|
-
import * as path from 'path';
|
|
5
|
-
const PEEMODORO_DIR = path.join(os.homedir(), '.peemodoro');
|
|
6
|
-
const DB_PATH = path.join(PEEMODORO_DIR, 'history.db');
|
|
3
|
+
import { DB_PATH, PEEMODORO_DIR } from '../constants.js';
|
|
7
4
|
export class PeemodoroDatabase {
|
|
8
5
|
db;
|
|
9
6
|
constructor() {
|
|
@@ -77,6 +74,9 @@ export class PeemodoroDatabase {
|
|
|
77
74
|
VALUES (?, ?, ?, ?, ?)
|
|
78
75
|
`).run(timestamp, type, duration, snoozed ? 1 : 0, snoozeCount);
|
|
79
76
|
// Update daily stats
|
|
77
|
+
const isPee = type === 'pee' ? 1 : 0;
|
|
78
|
+
const isStretch = type === 'stretch' ? 1 : 0;
|
|
79
|
+
const isSkip = type === 'skip' ? 1 : 0;
|
|
80
80
|
this.db.prepare(`
|
|
81
81
|
INSERT INTO daily_stats (date, total_breaks, pee_breaks, stretch_breaks, skipped_breaks)
|
|
82
82
|
VALUES (?, 1, ?, ?, ?)
|
|
@@ -85,7 +85,7 @@ export class PeemodoroDatabase {
|
|
|
85
85
|
pee_breaks = pee_breaks + ?,
|
|
86
86
|
stretch_breaks = stretch_breaks + ?,
|
|
87
87
|
skipped_breaks = skipped_breaks + ?
|
|
88
|
-
`).run(today,
|
|
88
|
+
`).run(today, isPee, isStretch, isSkip, isPee, isStretch, isSkip);
|
|
89
89
|
// Update streak
|
|
90
90
|
this.updateStreak(today);
|
|
91
91
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/persistence/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/persistence/database.ts"],"names":[],"mappings":"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"}
|