v0.1 — pre-release. APIs, storage format, and UI is still a WIP 💔
Frameless, always-on-top sticky notes for macOS. Each note can carry a deadline that escalates visually (and audibly) as it approaches, so the tasks you're not locked in on get harder to ignore instead of easier.
- Frameless, dark glass windows — no dock icon, no window chrome, live in the menu bar, float above every app and space. (Inspired by MacOS and Zen Browser, hence the name lol)
- Deadlines in plain English — type
1h 30m,90 minutes,2d 4h, or a clock time like5pm/at 17:45, with a live preview as you type. A calendar field is there too if you'd rather pick an exact date and time. - Escalation that actually makes sense — the accent color and pulse speed ramp up as a deadline closes in, blending how much time is left with how much of the window has elapsed so a 15-minute timer and a 3-day deadline both escalate at the right pace.
- Sound alerts — a short sound effect plays each time urgency increases (never on the way down), escalating to a repeating alarm once a note is overdue. Mutable per note.
- Notes persist — text, deadline, position, size, and mute state all (hopefully should) stay after a restart
git clone https://github.com/Whyater/ZenSticky.git
cd ZenSticky
npm install
npm startLook for the 📌 icon in the macOS menu bar — that's ZenSticky. A blank note
opens automatically on first launch. Set a deadline via the quick chips
(15m/30m/1h/3h) or the + button for free-form/calendar input. New notes:
tray menu or ⌘⇧N. Close a note via the red dot at the top-left of its
titlebar (closing a note dismisses it; quitting the app does not).
The time-parsing and escalation logic is unit tested independently of Electron:
npm testFor you nerds lol:
Electron, vanilla JS, no UI framework, no build step. renderer/sticky/timeparse.js
is a small dependency-free module (parsing, formatting, escalation tiers)
shared between the renderer and the test suite.
MIT — see LICENSE.