Changelog

A little better, with each release.

New tools, useful changes, and a record of what ships.

Sort issues, highlight code

You can now sort issues, and code blocks are easier to read.

  • On the issues toolbar, use the Order chip and the direction toggle to sort issues in each state group and board lane. Issues with no priority stay last, and the URL keeps the sort order.
  • Code blocks in issue descriptions and comments now show syntax colors and a copy button.

CLI @ 0.5.0

Find and set sub-issues by issue key from the CLI.

  • --parent now accepts an issue key, such as ENG-1, or an ID.
  • Add --ancestor to todos issue list to show all sub-issues of an issue at any depth.
  • In todos issue list, --parent none, --project none, and --assignee none show only issues with no parent, project, or assignee.
  • todos issue archive and unarchive now name the sub-issues that changed with the issue.

Sub-issues in the web

You can now see, add, and change sub-issues in the web app.

  • Issue pages have a Sub-issues section, a Parent property, and a parent breadcrumb, and lists show sub-issue counts.
  • Archive now also archives all sub-issues of an issue, and unarchive restores only the sub-issues that archive changed.
  • The API refuses a parent that is archived or that makes a loop.
  • Issue routes accept a key or an ID, and the API, CLI, and MCP can filter by ancestor or by no parent.

CLI @ 0.4.0

Archive, unarchive, and delete your work from the CLI.

  • todos issue, todos project, and todos team now have archive, unarchive, and delete commands.
  • delete removes the record permanently and does not run without --yes.
  • Add --archived to todos project list or todos team list to show only archived records.

Archive, unarchive, and delete

Archive and delete are now two separate actions.

  • Delete now removes an issue, project, or team permanently, and its page and API return 404.
  • Archive keeps the record with an Archived banner, and the record is read-only until you unarchive it.
  • To delete an issue, first move or delete its sub-issues. To delete a team, first move or delete all of its issues.
  • Add archived=true to the API team or project list to show only archived records.

Trials, imports, and role locks

Start without an account, and bring your work from Linear or GitHub.

  • An agent can start a trial workspace with no account and give you a link to claim it within seven days.
  • Admins can import issues from Linear or GitHub through the API, with their keys, dates, comments, and state changes.
  • Controls that your role cannot use are now locked with a hint, and guests can open issue, project, and team pages without a 403 error.
  • Work done with a workspace key now shows the key's name, not "Someone".

CLI @ 0.3.0

Bring in your work from Linear or GitHub, or try todos without an account.

  • The new todos import linear and todos import github <owner/repo> commands copy issues, comments, labels, projects, and state changes into your workspace, and --dry-run shows the counts first.
  • The new todos try command starts a trial workspace without an account and saves its key.

CLI @ 0.2.0

Use your inbox from the terminal.

  • The new todos inbox command lists your notifications and marks them read. You can mark all of them, pick them by ID, or pick one issue.

Inbox and mentions

See the work that needs you, without watching every issue.

  • Each workspace has an Inbox for assignments, mentions, new comments, and closed issues. New items arrive live, and opening an issue marks them read.
  • Type @ in an issue or comment to mention a teammate.
  • Follow or unfollow any issue. You follow the issues you create, own, comment on, or are mentioned in.
  • Choose how often notification email arrives, what it covers, and whether agent changes notify you. Every email has a one-click unsubscribe link.
  • Read and manage your inbox from the API and MCP.

CLI @ 0.1.1

Type an issue key in any case.

  • Commands that take an issue key now accept lowercase or mixed case letters.

Edit & Delete API keys

Change a key without making a new one.

  • Edit the name, scopes, and workspaces of a key. The change applies at once.
  • Revoking a key now deletes it. Delete revoked keys from the list.

Rename passkeys

Know which device each passkey is on.

  • Click the name of a passkey in your settings to rename it.

Webhook delivery history

See what your endpoint got, and when.

  • Open a delivery to see each send attempt: the status or error, the duration, and the signed request.
  • Attempts are kept for 30 days and are also available through the API.

Team descriptions

Say what each team does.

  • Add a description to a team.
  • The team list shows how many members each team has.

Plans per workspace

Pay for the workspaces that need more room, and keep the rest free.

  • Choose Starter or Pro for one workspace at a time. Each workspace has one flat price, no matter how many people join.
  • Pay monthly, or pay yearly and get two months free.
  • Switch plans, update payment details, and get invoices in the billing portal.
  • The billing page marks your current plan and shows the storage and API limits of each plan.
  • Move to a smaller plan without data loss. New uploads pause until you are below the limit.

Clear API limits

Know your limits before a script finds them for you.

  • Every response includes RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset.
  • Each workspace has a monthly allowance, reported by the Todos-Quota-* headers.
  • 429 and 402 responses include Retry-After, so clients know when to try again.
  • Error messages now say which limit you hit and when it resets.
  • Per-minute limits are higher on every plan, and limit checks are faster.

Scoped keys

Give each tool only the access it needs.

  • Personal keys and workspace keys are now separate.
  • Choose scopes for each key when you create it.
  • Revoke any key at once from your settings.

Pinned projects

Keep your active projects close.

  • Pin a project to keep it at the top of your sidebar. Pins are personal.
  • A small progress chart shows how much of each pinned project is done.
  • Filter issues by project from the issue list.

Faster issue editing

Change an issue without leaving the list.

  • Open an issue in place, edit it, and close it to continue where you were.
  • Change the state of an issue directly in its row.
  • Edit label names and colors directly in the list.
  • Labels show on issues in every state.

Workspace settings

More control over your workspaces and your account.

  • Rename or delete a workspace from its settings.
  • A new account menu gives quick access to your profile, keys, and workspaces.
  • Profile pictures show in issue activity and in member lists.
  • Update your profile through the API.
  • Every workspace starts with a default team, so you can add issues immediately.

Sign in your way

Fewer steps between you and your work.

  • Sign in with an email link. Email is now the first option.
  • Add a passkey to sign in with Touch ID, Face ID, or a security key.
  • Pages you cannot access now show a clear message and a way back.

Interface sounds

Small sounds that confirm what you did.

  • Buttons, fields, and menus play short, quiet sounds.
  • Turn sounds on or off at any time. The choice stays in place on each visit.

Issue states everywhere

The same workflow in every tool.

  • The CLI and MCP now support every state your team uses, not only open and closed.
  • Every CLI command supports --json output for scripts.
  • Duplicate requests from the web app are removed, so pages load faster.

Realtime board

See changes as they occur.

  • The issue board updates immediately when someone changes an issue, in the web app, the API, the CLI, or MCP.
  • Realtime updates connect through the web app's own address.

Signed webhooks

Keep your tools in sync.

  • Receive a signed HTTPS request when issues, comments, projects, labels, teams, or members change.
  • Signatures use HMAC-SHA256 with a timestamp. Examples are available for TypeScript and Python.
  • Failed deliveries retry for up to 12 hours. Inspect and redeliver each delivery through the API or CLI.

MCP and OAuth

Give your agent the same context you have.

  • Connect Claude, Cursor, or ChatGPT to your workspace at https://mcp.todos.sh.
  • Sign in with OAuth, choose workspaces and scopes, and review the consent screen before you approve.
  • Your workspace role and team access still apply to each agent.

CLI and SDK

Work with your issues from the terminal and from code.

  • Install a single binary for macOS and Linux with one command. The installer checks each download.
  • Use the TypeScript SDK to call every API endpoint with full types.

Foundations

A shared home for projects, teams, and issues, built for people and agents.

  • Plan work with workspaces, teams, projects, issues, and labels.
  • Build on a REST API with cursor pagination and Idempotency-Key support.
  • Start with a free workspace and 500 MB of file storage.