Creator & Engineer · 2026–present
PandaBreak
A Stream Deck plugin that pays out break time as you work — one minute banked for every five. Four keys, one honest clock, and a pomodoro that runs into overtime instead of cutting you off.
Most pomodoro timers hand you a break because a bell went off. The break has no relationship to the work: stop after four minutes and you still get the full five.
PandaBreak inverts that. Break time accrues continuously while you work, one minute for every five, so the budget is always in proportion to the work actually done. Twelve minutes of work banks 2:24. You then spend it whenever you like.
It runs on a Stream Deck — an eight-key device on the desk — as four keys that share one clock.
Designing for a 72-pixel key
A Stream Deck key is a 72px LCD you read at arm's length while doing something else. That rules out most of what makes a good timer UI: no labels you have to parse, no state hidden behind a press, no ambiguity about what is running.
Each key ended up with three registers — a small heading, one large number, and a quiet sub-line — plus colour carrying meaning rather than decoration. Green is work, blue is break, amber is overtime, red is overdrawn. The mode you are actually in is ringed, so a glance answers "is this thing running?" before you have read a single digit.
The keys are drawn as SVG and pushed as data URIs, which meant no image pipeline, no native dependencies, and artwork that stays crisp on every device in the range.
The design decisions that mattered
A pomodoro is allowed to overrun. When you are in flow, a bell should not stop you. Past zero the countdown turns amber and counts up, and overtime still earns break — because it is still work. The timer reports what happened rather than enforcing a rule.
Lunch sits outside the system. A meeting is not a break you earned, and charging it to your budget would make the number a lie. One key freezes everything and tracks its own time separately.
The budget can go negative. Overspending shows in red rather than being silently clamped. The uncomfortable number is the point.
Engineering notes
Time comes from the clock, not from ticks. Every accumulator is settled from wall-clock timestamps and re-anchored, so a busy event loop, a sleeping laptop or a plugin restart cannot drift a session. A restart under 90 seconds is absorbed; a longer gap pauses rather than billing you for time the plugin was not running.
One definition of everything. The tile renderer is imported directly by the build scripts, so the plugin icons, the store screenshots and the website all draw the product using the same code. The artwork cannot drift from the thing it depicts.
The logo is the rule. The mark is a panda that is also a clock — the eye patches taper to a hub at the centre of the dial, reading as eyes on a face and as hands on a watch. The ring around it is split 5:1, green to blue: the exact rate at which the plugin converts work into break time.
A playable copy on the web. The product page runs the plugin's own clock in the browser at 60× speed, so a whole pomodoro plays out in twenty-five seconds and you can press the keys before buying.
The timer logic is covered by a harness that drives the real session against a synthetic clock across thirteen scenarios — accrual ratio, overtime, freezing, overdraft, rollover, persistence, and the two absence cases.
Outcome
Four actions, ~600 lines of TypeScript, no runtime dependencies beyond the SDK, and no network access at all: no account, no telemetry, no sign-in. The session lives in Stream Deck's own settings on the user's machine.
Published by 7bp Solutions on the Elgato Marketplace at €2.99, with a product page, support flow and listing artwork all generated from the same source.
