TaskRatchet should now clear your Beeminder integration settings when you disconnect TaskRatchet from the Beeminder side.
Documented a bunch more API v2 endpoints
Normal web app usage was hitting my cloudflare rate limiting. I’ve tripled the rate limit to 60 requests / 10 seconds.
A few performance fixes today:
- Set local cache stale time to 30s to reduce unnecessary fetches
- Made cache invalidation on auth events less aggressive to avoid unnecessary cache revalidation
- The app should no longer immediately retry queries on 429 rate limiting responses
Catching up on UVIs:
- Marking a past-due task complete now requires confirmation.
- Added monthly stakes limit setting. TaskRatchet will reject new tasks once you’ve hit your limit for the month. Added as a safeguard against, e.g., a buggy user script hitting the API too much.
- The add task dialog now resets any stale errors when reopened.
- Task content input now validated before other fields to surface most relevant error first.
- Multiline task input now trims/skips blank and whitespace-only lines.
- Updating a task via the API without providing any fields to change now returns an error.
- Fixed bug with recurring task creation that caused exponential task creation.

- Big performance improvement by switching from Render.com to Cloudflare for the backend.
And a bunch of other improvements behind the scenes to increase the reliability of the system and set us up for shipping features faster going forward!
1 Like
More UVIs!
(List generated by AI, reviewed by me for accuracy.)
- Fixed a critical issue where charges stopped going through after a backend infrastructure migration — Stripe calls were silently failing, which in some cases produced “Payment Failed” emails without an actual charge. Charges now work correctly again.
- Fixed daily reminder emails being dropped when the morning send burst hit our email provider’s rate limit. Sends are now retried with backoff, so you no longer miss a day’s email.
- Added a Disconnect Beeminder button in Settings, so you can cleanly disconnect after revoking access on Beeminder’s side.
- Fixed Settings showing a stale “connected” Beeminder state after you’d disconnected — it now refreshes on page load and when you return to the tab.
- You can now stop/cancel a recurring task (via support), and the public API has a new endpoint to delete your own recurring tasks.
- Fixed a bug where the recurring-tasks list (and its public API endpoint) could return recurring tasks belonging to other users.
- Inactive accounts are no longer charged.
- Pausing or cancelling a task now also stops its charge emails.
- Fixed checkout errors when a saved card had been replaced — the outdated payment method is now skipped instead of failing.
- Fixed replies to charge emails (used to contest a charge) sometimes being silently dropped during brief backend hiccups. They’re now retried so your contest registers.
- The public API now returns a proper 404 Not Found (instead of a 500 error) when you request a task that doesn’t exist.
1 Like
UVIs shipped since my last update
(List generated by AI, reviewed by me for accuracy.)
- Todoist integration. You can now connect a Todoist account to TaskRatchet, and your Todoist tasks sync in with their deadlines and stakes. Completing a task in either place keeps the two in sync, deadlines that move earlier sync sooner, and you get notices if the connection breaks or your account is blocked, plus an optional daily success digest. New connections seed a default $5 stake. Docs
- Pull-in sidebar. A new sidebar surfaces items worth committing to — Beeminder beemergencies and Todoist candidates — and lets you pull any of them in as a TaskRatchet task. It shows a badge count of waiting items, remembers what you’ve already imported, and has a filter box to narrow the list.
- Calendar feed. You can subscribe to an iCal feed of your task deadlines from any calendar app.
- Guided onboarding. New users get a guided first-task wizard at
/welcomethat walks them through creating their first commitment. - Notification preferences. A new settings section lets you control which emails/notifications you receive.
- Locale-aware due date/time fields. The due date and time input boxes now display in your system’s locale format (12h/24h clock, date order) instead of forcing AM/PM on everyone.
- Token regeneration now asks for confirmation in a dialog instead of leaving a standing warning banner.
- Adding a task no longer hang silently. A slow/stalled API request now times out and reports the failure instead of spinning forever.
- Mobile layout fixes. The load-more button no longer overlaps tasks, and a crowded toolbar no longer causes sideways page scrolling.
- Clearer decline emails. When a card is declined at charge time, the abandonment email now explains the specific decline reason instead of a generic message.
- Default monthly stake limit. Accounts now have a $200/month stake limit by default. Previously most accounts had no limit set (unlimited); new signups now get the $200 cap and existing unlimited accounts were backfilled to it.
- Public API additions. A new standalone interactive API Reference page backed by a published OpenAPI document; new
/api2/me/integrationsendpoints to list, update, and disconnect integrations; a user-authedPOST /api2/me/chargesendpoint to create an arbitrary charge; and deleting a non-existent user now returns a proper 404 instead of a 500. - Integration landing pages. Dedicated marketing pages for specific integrations (e.g. Todoist).
UVIs since last post. The list below was drafted by AI and reviewed by me for accuracy.
- TaskRatchet now runs a remote MCP server at
https://api.taskratchet.com/mcp, so AI assistants like Claude Desktop and ChatGPT can work with your tasks. They can list, view and complete tasks. Anything involving money (creating, editing, giving up on or un-completing a task) needs a preview and then a confirmation, and each confirmation can only be used once. Connections use OAuth: you sign in and approve the app instead of pasting an API key. - A new “Connected apps” page in account settings lists the apps you’ve authorized, and you can revoke any of them.
- CLI: you now log in through your browser instead of typing your password. There are new
logoutandwhoamicommands.listfits your terminal width and accepts short task IDs.addasks for the task, due date and stake if you leave them out. Stakes are rounded to the nearest cent instead of being truncated, and due dates without a time zone use your system time zone. Also fixed a release bug that kept the CLI stuck at version 0.1.0. - API: tasks now include a
createdtimestamp,GET /me/taskscan sort by creation time (sort=created), andPOST /me/tasksreturns the saved task. - Fixed a bug where cents typed into a stake were dropped (e.g. $19.99 was saved as $19.00), in both the task form and the onboarding wizard.
- The $200/month stake limit now also applies when you raise the stake on an existing task, not just when you create one.
- API: a request that stalls during sign-in now gets a retryable 503 response instead of a 403 that looked like a bad token.
- Web app: tasks that are still saving now look dimmed, and you get a warning if a save is taking a long time, so writes no longer appear saved when they aren’t. Requests that time out show a clear “Request timed out” message.
- Web app: if some tasks fail when you add several at once, you now see “N of M added; K failed: ”, and only the failed lines stay in the box so you can retry them.
- Beeminder pull-in: a goal that already has a pending TaskRatchet task is now hidden from the pull-in list, so the same emergency can’t be staked twice when a goal’s deadline moves.
- Beeminder: if Beeminder rejects TaskRatchet’s access while posting a datapoint, TaskRatchet now disconnects the integration and emails you a link to reconnect. A Beeminder 403 response no longer disconnects your integration by mistake.
- Completing a task that was already complete no longer posts a duplicate datapoint to your Beeminder star goals or returns a misleading “past due” error. Two simultaneous “give up” requests no longer send two charge emails.
- Todoist: completing a task in Todoist now posts to your Beeminder star goals, the same as completing it anywhere else.
- Todoist reminders: the daily “reconnect Todoist” reminder now stops after 14 days. Reconnect and account-block reminders (no card, no stake, over the limit) now arrive as Alerts emails, so muting Summaries no longer mutes them. The first reminder now comes about a day after the initial notice.
- Recurring tasks: fixed a bug that could create duplicate occurrences, and an occurrence that fails to create is now retried instead of skipped.
- Charges now always use a card or Link payment method. Before, a customer whose first saved payment method was another type might not have been charged for a missed task.
1 Like