Add paid pomodoro breaks

Some jobs pay for breaks, so a pomodoro break shouldn't take time off
the workday. By default (new setting `paid_breaks`, in [reminders]), b
on the Tracker, zb anywhere or :break starts a pomodoro break WITHOUT
pausing the shift: the break stays in your worked time and the data
file isn't touched. b (or s) brings you back to focus. With the setting
off, b pauses the shift like p. p and e always stop the clock.

For the rhythm, a paid break still counts as a break: reminders::PaidBreaks
keeps them in memory and pomodoro() cuts them out of the focus stretches,
the same way as a pause. Stopping the shift ends a paid break, and
closing the work day forgets them.

The Tracker shows "on a paid break" and the paid break's progress, and
the nudges name the right key (b or p/s).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
skkeyeandClaude Opus 5.5 committed 2026-09-25 00:06:26 -04:00
1 parent fe5e2d9a7f
commit 49e14b820a
8 files changed
+233 -21

No files matched your search

+5
View File
@@ -41,6 +41,7 @@ in the settings.
| `<Space>c` | copy in another format, with a preview |
| `gh` `gd` `gi` `gs` | Tracker, Days, Insights, Settings (also `gt`, `Tab`) |
| `u` `Ctrl-r` | undo, redo: mistakes cost nothing |
| `b` (`zb`) | take a pomodoro break, and come back from it |
| `zz` | snooze the break suggestion |
| `:` | command line: `:pause 17:30`, `:export csv lastmonth`, `:set time_format=12h` |
| `?` | every key, for the screen you're on |
@@ -60,6 +61,10 @@ settings, or with `<Space>w`.
- Times you type (`22:30`, `2230`, `22h30`, `10:30pm`, `10p`) are read in
both 12h and 24h styles. An end time before the start time means the next
day.
- Pomodoro breaks (`b` on the Tracker, `zb` anywhere) are **paid** by
default: the shift keeps running, so the break stays in your worked
time. Turn off `paid_breaks` in the settings to make `b` pause the shift
instead. `p` and `e` always stop the clock (lunch, end of day).
- To add work to a day you didn't track, press `o` and change the **Work
day** field: `2026-09-14`, `09-14`, `yesterday`, `-3` (3 days ago) or a
weekday like `mon` all work.