peemodoro 1.0.0
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/LICENSE +21 -0
- package/README.md +430 -0
- package/commands/break.md +14 -0
- package/commands/config.md +26 -0
- package/commands/focus.md +16 -0
- package/commands/pee.md +14 -0
- package/commands/setup.md +19 -0
- package/commands/start.md +14 -0
- package/commands/stats.md +14 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +174 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/index.d.ts +22 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +283 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/core/badges.d.ts +20 -0
- package/dist/core/badges.d.ts.map +1 -0
- package/dist/core/badges.js +452 -0
- package/dist/core/badges.js.map +1 -0
- package/dist/core/easter-eggs.d.ts +48 -0
- package/dist/core/easter-eggs.d.ts.map +1 -0
- package/dist/core/easter-eggs.js +186 -0
- package/dist/core/easter-eggs.js.map +1 -0
- package/dist/core/notifications.d.ts +11 -0
- package/dist/core/notifications.d.ts.map +1 -0
- package/dist/core/notifications.js +65 -0
- package/dist/core/notifications.js.map +1 -0
- package/dist/core/state-sync.d.ts +26 -0
- package/dist/core/state-sync.d.ts.map +1 -0
- package/dist/core/state-sync.js +229 -0
- package/dist/core/state-sync.js.map +1 -0
- package/dist/core/terminal-focus.d.ts +3 -0
- package/dist/core/terminal-focus.d.ts.map +1 -0
- package/dist/core/terminal-focus.js +21 -0
- package/dist/core/terminal-focus.js.map +1 -0
- package/dist/core/timer.d.ts +32 -0
- package/dist/core/timer.d.ts.map +1 -0
- package/dist/core/timer.js +148 -0
- package/dist/core/timer.js.map +1 -0
- package/dist/hooks/claude-code.d.ts +17 -0
- package/dist/hooks/claude-code.d.ts.map +1 -0
- package/dist/hooks/claude-code.js +126 -0
- package/dist/hooks/claude-code.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +3 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +31 -0
- package/dist/install.js.map +1 -0
- package/dist/persistence/config.d.ts +37 -0
- package/dist/persistence/config.d.ts.map +1 -0
- package/dist/persistence/config.js +115 -0
- package/dist/persistence/config.js.map +1 -0
- package/dist/persistence/database.d.ts +52 -0
- package/dist/persistence/database.d.ts.map +1 -0
- package/dist/persistence/database.js +309 -0
- package/dist/persistence/database.js.map +1 -0
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +36 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/ascii-art.d.ts +87 -0
- package/dist/ui/ascii-art.d.ts.map +1 -0
- package/dist/ui/ascii-art.js +135 -0
- package/dist/ui/ascii-art.js.map +1 -0
- package/dist/ui/break-screen.d.ts +12 -0
- package/dist/ui/break-screen.d.ts.map +1 -0
- package/dist/ui/break-screen.js +151 -0
- package/dist/ui/break-screen.js.map +1 -0
- package/dist/ui/colors.d.ts +29 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +90 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/ui/hints.d.ts +53 -0
- package/dist/ui/hints.d.ts.map +1 -0
- package/dist/ui/hints.js +154 -0
- package/dist/ui/hints.js.map +1 -0
- package/dist/ui/messages.d.ts +34 -0
- package/dist/ui/messages.d.ts.map +1 -0
- package/dist/ui/messages.js +128 -0
- package/dist/ui/messages.js.map +1 -0
- package/dist/ui/statusline.d.ts +23 -0
- package/dist/ui/statusline.d.ts.map +1 -0
- package/dist/ui/statusline.js +195 -0
- package/dist/ui/statusline.js.map +1 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alec Dewitz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://img.shields.io/badge/Claude%20Code-Plugin-blueviolet?style=for-the-badge" alt="Claude Code Plugin"/>
|
|
3
|
+
<img src="https://img.shields.io/badge/version-1.0.0-green?style=for-the-badge" alt="Version"/>
|
|
4
|
+
<img src="https://img.shields.io/badge/license-MIT-blue?style=for-the-badge" alt="License"/>
|
|
5
|
+
<img src="https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen?style=for-the-badge&logo=node.js" alt="Node"/>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<h1 align="center">🚽 Peemodoro</h1>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<strong>A hydration-focused productivity timer for Claude Code</strong>
|
|
12
|
+
<br />
|
|
13
|
+
<em>Your code can wait. Your kidneys cannot.</em>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="#-features">Features</a> •
|
|
18
|
+
<a href="#-installation">Installation</a> •
|
|
19
|
+
<a href="#-quick-start">Quick Start</a> •
|
|
20
|
+
<a href="#-commands">Commands</a> •
|
|
21
|
+
<a href="#-badges">Badges</a> •
|
|
22
|
+
<a href="#%EF%B8%8F-configuration">Configuration</a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Why Peemodoro?
|
|
28
|
+
|
|
29
|
+
Most productivity timers optimize for output. **Peemodoro optimizes for you.**
|
|
30
|
+
|
|
31
|
+
Built specifically for developers who lose track of time in deep focus, Peemodoro is a Claude Code plugin that combines the proven Pomodoro technique with science-backed hydration reminders. It integrates directly into your Claude Code statusline, keeping health cues visible without breaking your flow.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
💧 23:45 ░░░░░░░░ 😌 Fresh and focused
|
|
35
|
+
💦 12:30 ███░░░░░ 😐 Building urgency
|
|
36
|
+
🌊 02:15 ██████░░ 😬 Time to wrap up
|
|
37
|
+
🚨 OVERDUE ████████ 🥴 Your bladder is staging a revolt
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ✨ Features
|
|
43
|
+
|
|
44
|
+
### 🎯 Smart Timer Modes
|
|
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:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
peemodoro focus 60 # 60 minutes of uninterrupted flow
|
|
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
|
+
---
|
|
95
|
+
|
|
96
|
+
## 📦 Installation
|
|
97
|
+
|
|
98
|
+
### Claude Code Marketplace (Recommended)
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Add the marketplace plugin (if not already installed)
|
|
102
|
+
/plugin marketplace add alecdewitz/peemodoro
|
|
103
|
+
|
|
104
|
+
# Install peemodoro
|
|
105
|
+
/plugin install peemodoro
|
|
106
|
+
|
|
107
|
+
# Configure statusline integration
|
|
108
|
+
/peemodoro-setup
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Restart Claude Code** to activate the statusline.
|
|
112
|
+
|
|
113
|
+
### From npm
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npm install -g peemodoro
|
|
117
|
+
peemodoro setup
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### From Source
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
git clone https://github.com/alecdewitz/peemodoro.git
|
|
124
|
+
cd peemodoro
|
|
125
|
+
npm install
|
|
126
|
+
npm run build
|
|
127
|
+
npm link
|
|
128
|
+
peemodoro setup
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🚀 Quick Start
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Start your first timer
|
|
137
|
+
peemodoro start
|
|
138
|
+
|
|
139
|
+
# When it's break time, log it
|
|
140
|
+
peemodoro pee
|
|
141
|
+
|
|
142
|
+
# Check your progress
|
|
143
|
+
peemodoro stats
|
|
144
|
+
|
|
145
|
+
# View configuration
|
|
146
|
+
peemodoro config
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
That's it. The timer appears in your Claude Code statusline automatically.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 📋 Commands
|
|
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
|
|
246
|
+
|
|
247
|
+
```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: ✓
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Available Settings
|
|
271
|
+
|
|
272
|
+
| Key | Values | Description |
|
|
273
|
+
|-----|--------|-------------|
|
|
274
|
+
| `mode` | `classic`, `hydration`, `adaptive` | Timer mode |
|
|
275
|
+
| `work` | `1-120` | Work duration in minutes |
|
|
276
|
+
| `break` | `1-30` | Break duration in minutes |
|
|
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.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## 📁 Data Storage
|
|
342
|
+
|
|
343
|
+
All data is stored locally in `~/.peemodoro/`:
|
|
344
|
+
|
|
345
|
+
| File | Purpose |
|
|
346
|
+
|------|---------|
|
|
347
|
+
| `state.json` | Current timer state (synced across terminals) |
|
|
348
|
+
| `history.db` | Break history and statistics (SQLite) |
|
|
349
|
+
| `config.json` | User preferences |
|
|
350
|
+
|
|
351
|
+
Your data never leaves your machine.
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## 🥚 Easter Eggs
|
|
356
|
+
|
|
357
|
+
Peemodoro includes hidden features for the curious:
|
|
358
|
+
|
|
359
|
+
- **Secret themes** unlock with a classic code sequence
|
|
360
|
+
- **Time-based messages** appear at special moments (try 4:20 or 3:14)
|
|
361
|
+
- **Milestone celebrations** with ASCII art at 100, 500, and 1000 breaks
|
|
362
|
+
|
|
363
|
+
Some things are more fun to discover yourself.
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## 🔧 Troubleshooting
|
|
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?
|
|
376
|
+
|
|
377
|
+
Check for stale lock files:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
ls -la ~/.peemodoro/
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Remove any `.lock` files if the timer seems stuck.
|
|
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.
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 🤝 Contributing
|
|
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
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
git clone https://github.com/alecdewitz/peemodoro.git
|
|
410
|
+
cd peemodoro
|
|
411
|
+
npm install
|
|
412
|
+
npm run dev # Watch mode
|
|
413
|
+
npm run build # Production build
|
|
414
|
+
npm test # Run tests
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
## 📄 License
|
|
420
|
+
|
|
421
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
<p align="center">
|
|
426
|
+
<strong>Stay hydrated. Ship code. Take breaks.</strong>
|
|
427
|
+
<br />
|
|
428
|
+
<br />
|
|
429
|
+
<em>Built with 💧 for developers who forget they have bodies</em>
|
|
430
|
+
</p>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Show the peemodoro break screen with hydration tips
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Break Screen
|
|
7
|
+
|
|
8
|
+
Show the break screen with ASCII art, hydration tips, and badge progress:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
peemodoro break
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Display the full break screen output to the user.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Show or update peemodoro configuration
|
|
3
|
+
argument-hint: "[set <key> <value>]"
|
|
4
|
+
allowed-tools: Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Peemodoro Configuration
|
|
8
|
+
|
|
9
|
+
To show current configuration:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
peemodoro config
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
To change a setting:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
peemodoro config set <key> <value>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Available keys:
|
|
22
|
+
- `mode` - Timer mode: classic (25/5), hydration (45/10), adaptive
|
|
23
|
+
- `work` - Work duration in minutes (1-120)
|
|
24
|
+
- `break` - Break duration in minutes (1-30)
|
|
25
|
+
- `sound` - Enable/disable sounds: on/off
|
|
26
|
+
- `notifications` - Enable/disable desktop notifications: on/off
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Enter focus mode (quiet reminders, timer stays visible)
|
|
3
|
+
argument-hint: "[minutes]"
|
|
4
|
+
allowed-tools: Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Focus Mode
|
|
8
|
+
|
|
9
|
+
Enter focus mode to quiet reminders while keeping the timer visible:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
peemodoro focus # Default: 90 minutes max
|
|
13
|
+
peemodoro focus 30 # Focus for 30 minutes
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Focus mode auto-expires after the specified time. Display the output to confirm.
|
package/commands/pee.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Log a pee break and reset the peemodoro timer
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Log Pee Break
|
|
7
|
+
|
|
8
|
+
Run this command to log a bathroom break:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
peemodoro pee
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Display the output to show the user their updated stats and any badges earned.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Configure peemodoro statusline and hooks for Claude Code
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Setup Peemodoro
|
|
7
|
+
|
|
8
|
+
Run this command to configure peemodoro for Claude Code:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
peemodoro setup
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
This will:
|
|
15
|
+
- Install the statusline integration (shows timer in Claude Code)
|
|
16
|
+
- Install session hooks (tracks focus time)
|
|
17
|
+
- Enable auto-update (updates peemodoro on each new Claude Code session)
|
|
18
|
+
|
|
19
|
+
Display the output to confirm setup was successful. Remind the user to restart Claude Code to activate the statusline.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Show peemodoro stats, streaks, and badge progress
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Peemodoro Stats
|
|
7
|
+
|
|
8
|
+
Run this command to show hydration stats:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
peemodoro stats
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Display the full output showing total breaks, current streak, longest streak, focus time, unlocked badges, and progress toward next badges.
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|