I keep my week in Google Calendar. I block time for each task, and the calendar becomes a to-do list.
When a block was finished, I turned the event gray. That gave me a clear “done” marker, but it erased the colors I used to group my time. My upcoming week kept its categories; looking back, everything was the same gray.
I wanted to mark an event done and keep its color. A checkmark in the title did both.
One gesture
Editing every title by hand would have been its own chore, so I wanted to hold a key and click.
Calendar Checkoff works inside Google Calendar. Hold Option on a Mac, or Alt on Windows and ChromeOS, and click an event you can edit. The extension adds a ✅ to the start of the title, and the same gesture removes it. The event keeps its color, and Calendar saves the change just as if you had edited it yourself.
Small on purpose
I kept the extension narrow. There is no account, no popup, no separate task list, and no analytics. It asks for local storage and permission to run on the Calendar page, and nothing else.
I also chose not to build on the Google Calendar API. The page structure it leans on rarely changes, so for a tool this small the simple approach was the right trade.
Taking it all the way
I built Calendar Checkoff for myself first. I published it because it let me carry one small problem through the whole process: find the job, build the solution, then set up distribution and observability around it.
The Chrome Web Store hosts the extension, Cloudflare serves and measures the website, and the code lives on GitHub.
Releases
A pushed version tag builds a deterministic, audited package in GitHub Actions and uploads that exact ZIP to the Chrome Web Store. The tag is the only thing allowed to upload; submission stays a separate step I approve by hand.
Support and lifecycle
A first-install page, a locally gated review prompt, and an uninstall feedback link cover the lifecycle without changing the gesture. Support runs through a short form on the website.
What runs on the website
The website is a static site on Cloudflare. It uses Cloudflare Web Analytics for aggregate, cookie-free traffic and performance statistics. The extension itself has no analytics and sends nothing.