---
audience: power_user
summary: Any checkbox line in any note is a real todo with due dates, assignees, tags,
  and a cross-workspace view.
title: Todos from notes
path: tutorials/power-user/todos-from-notes
status: published
---

# Todos from notes

A todo in ScaiWave is just a `- [ ]` line in any note's body. No
separate "tasks app", no syncing across two systems. Add a checkbox,
get all the affordances.

## The simple version

In any note:

```markdown
- [ ] Email Alice the Q3 numbers
- [x] Done — pushed the deploy
- [ ] Review the planner doc
```

That's three todos: one open, one done, one open. The dashboard
picks them up automatically within a couple of seconds of saving.

## Inline metadata

Annotate the line:

```markdown
- [ ] Email Alice the Q3 numbers !high 📅 2026-05-20 @alice #q3
```

| Annotation | Meaning |
|---|---|
| `!low` / `!medium` / `!high` | Priority. |
| `📅 YYYY-MM-DD` *or* `due: YYYY-MM-DD` | Due date. |
| `@local-id` | Assignee. |
| `#tag` | Tag (multiple OK). |

These can be in any order. The parser extracts them to structured
fields; the line still reads naturally.

## Block IDs

The first time the note saves, the parser appends a stable
`^todo-<5char>` block-id to each checkbox line:

```markdown
- [ ] Email Alice the Q3 numbers !high 📅 2026-05-20 ^todo-r9k4f
```

This is your handle to that specific todo. You can reference it from
elsewhere:

```markdown
[[Project Q3#^todo-r9k4f]]
```

Wiki-link to the line. Useful when you want to point a teammate at
"that one todo I added in the meeting notes".

The block-id is what gives todos stable identity — if you edit the
surrounding text, the todo still resolves to the same row.

## Toggling

- **In the editor**: `Cmd/Ctrl+Enter` on the line toggles `[ ]` ↔
  `[x]`. The reconciler picks it up.
- **In rendered view (preview)**: click the checkbox itself.
- **From AI**: *"Mark the Alice email as done."* The AI calls
  `todo_check` with the block-id.
- **API**: `PUT /v1/notes/{note_id}/todos/{block_id}/status`.

## Cross-workspace views

Sidebar → **Today** (the icon next to your workspace name). Shows:

- **Pinned today note** for the active workspace.
- **Due today** todos across all your workspaces.
- **Overdue** todos.
- **Without due date** (optional toggle).

Filter by workspace, priority, tag, or assignee.

## Embedded query blocks

In any note body, a fenced ```todos``` block becomes a live filter:

````
```todos
status: open
priority: high
due: this_week
sort: due
```
````

Renders as a live table that updates as the underlying todos
change. The query language is small: `status`, `priority`,
`due` (e.g. `today`, `this_week`, `overdue`), `assignee`,
`tag`, `workspace`, `sort`, `limit`.

## Voice dictation

In the notes panel, the audio button records voice → transcribes →
shows a confirm modal where you review the parsed todos before
bulk-adding. See [Voice-dictate into notes](/docs/scaiwave/tutorials/power-user/voice-dictate-into-notes).

## AI integration

The AI plugin `scaiwave.todos` exposes six tools:

- `todo_today` — what's due today + overdue.
- `todo_list` — query the cross-workspace index.
- `todo_check` / `todo_uncheck` — flip status.
- `todo_set` — update priority / due / assignee / tags.
- `todo_add` — add a new line to a note.

So you can ask: *"What's due tomorrow?"*, *"Mark all the #q3 todos
as done."*, *"Add a high-priority todo to my today note: ship the
docs."*

## Where to go next

- [Voice-dictate into notes](/docs/scaiwave/tutorials/power-user/voice-dictate-into-notes).
- [Create and organise notes](/docs/scaiwave/tutorials/first-steps/create-and-organize-notes).
