ai-generated
Created or edited by an AI agent. Added for you.
Docs
Beyond its title, type, and column, a Story can carry a due date, tags, and a description. Each one works the same whether you set it on the board or your agent sets it through MCP.
A Story can have a due date, and so can each of its Tasks. A due date is a calendar day, not a moment in time: a Story due on the 28th reads as the 28th for everyone, wherever they open the board.
A dated Story shows a chip on its card and in the Story Detail View. The chip has three states, judged against your calendar day:
Close to today the chip counts down (“Due in 3d”). More than a week out it shows the date instead, which is more useful at that distance. Hover a chip to see the exact day.
A Done Story is never overdue. Finishing late is history, not a warning. If every Story that shipped late kept a red chip, the Done lane would fill with them and red would stop meaning anything.
A deadline that belongs to one piece of work can go on that Task instead of the whole Story. A Story card still shows one chip at most:
“Most urgent” goes by state first, then date. An overdue Task beats one due tomorrow, because it is the one that has already slipped. Done Tasks are skipped. A Task due after its Story is allowed on purpose: that is exactly what the board should point out.
On the board: open a Story and choose Set due date… in the header of the Story Detail View. With a mouse you get a calendar; on a touch screen, your device's own date picker. The ✕ beside a date removes it. Task dates are set through MCP for now.
Through MCP: add_story and update_story take a
due_date as YYYY-MM-DD, and so do add_subtask and
edit_subtask for a Task. An empty string removes the date. Relative dates like
“next Friday” are refused, because what they mean depends on where the server runs.
view_board prints each Story's date and marks the overdue ones.
The Board View's Filters menu has a Due slider anchored at today. Overdue sits to the left. Today, Week, Month, and Any sit to the right and mean “due by then”, so they include work that has already slipped. A planning view that hid slipped work would defeat its purpose. No date is a separate choice beside the slider.
The filter matches what the cards show: a Story dated only through a Task appears under that Task's date, and a Done Story counts as undated. The number on each notch counts the whole board, not just what your other filters leave, so you can see whether a view is worth opening.
A tag is a label on a Story, shown as an emoji. A Story can carry any number of them, drawn from one fixed set:
Created or edited by an AI agent. Added for you.
Touches the user interface.
About tests.
Touches the API or the MCP tools.
On a card, a Story's tags sit under its id and cycle one at a time when there are several. Hover them, or tap on a phone, to see them all with their names. The Story Detail View shows them in its header.
On the board: open a card's ⋯ menu, or the ⋮ menu in the Story Detail View, and choose Tags. Each applied tag has a ✓. Click a tag to add or remove it. The menu stays open, so you can change several at once.
Through MCP: add_story and update_story take a
tags list. On update_story the list replaces the Story's tags, and
an empty list clears them. A tag outside the set above is refused.
ai-generated is automatic. Any agent write that creates, edits,
or merges a Story adds it, so it records that an agent touched the Story. Moving a Story or
Task between columns doesn't count as an edit and adds nothing. Your own edits on the board
neither add nor remove it.
The Filters menu has a Tags section with an Any / All switch. Any, the default, shows Stories with at least one of the checked tags; All shows only Stories that have every one. Tags, Type, and Due filters combine, and the ✕ that appears beside Filters clears them.
A Story's description is written in a small, deliberate subset of Markdown. Click the description in the Story Detail View to edit it; click away to save. Here is the same text as typed and as the board shows it:
**Expected:** the tag filter survives a reload.
**Observed:** it resets to *Any*. To reproduce:
- pick a tag under `Filters`
- reload the board
Same on the [live board](https://app.tada-ai.app/).
```ts
new URLSearchParams(location.search)
```Expected: the tag filter survives a reload.
Observed: it resets to Any. To reproduce:
FiltersSame on the live board.
new URLSearchParams(location.search)| Write | To get | Works in |
|---|---|---|
**bold** | Bold | Descriptions and Task titles |
*italic* | Italic | Descriptions and Task titles |
`code` | Inline code | Descriptions and Task titles |
[text](https://…) | A link, opening in a new tab | Descriptions and Task titles |
- item or * item | A bulleted list | Descriptions |
Lines between ``` fences | A code block | Descriptions |
| A blank line | A new paragraph | Descriptions |
Everything else shows as the literal characters you typed: headings, numbered lists, quotes,
tables, images, and HTML. Links must start with https://,
http://, or mailto:; anything else is disabled.
Bug templates. A new Bug starts with Expected: and Observed: headings in its description, on the board and when an agent creates one without a description. The template only fills an empty description; it never replaces text you've written.