Tasks are created via the task form dialog (+ button in any column) or through the Brainstorm feature.
Fields:
| Field | Required | Type | Default | Notes |
|---|---|---|---|---|
| title | yes | string (min 1 char) | -- | |
| description | no | string | null | Sent to the AI agent as part of the prompt |
| priority | no | enum: low, medium, high | medium | |
| dueDate | no | ISO 8601 datetime | null | Optional deadline for the task |
| labels | no | array of label IDs | [] | |
| teamId | no | UUID | null | Enables team-scoped numbering |
| projectId | no | UUID | null | Associates task with a project |
When a task is created with a teamId, the system auto-assigns the next issue number for that team and generates an identifier (e.g. ENG-1, DSN-5).
API: POST /api/tasks
All fields are editable after creation, including status. Updating labels replaces the full set (delete all existing, create new associations).
API: PATCH /api/tasks/:id
Deleting a task soft-deletes it by setting archived: true. The task disappears from the board but remains in the database. Archived tasks can be viewed, permanently deleted individually, or bulk-deleted.
API:
DELETE /api/tasks/:id-- archives the taskGET /api/tasks/archived-- list archived tasksDELETE /api/tasks/archived/:id-- permanently delete oneDELETE /api/tasks/archived-- permanently delete all archived
Clicking a task card opens a side panel with:
- Full title and description
- Priority, labels, team, project
- Execution status and progress
- Live execution logs (when running)
- PR link (when done)
- Execution outcome summary
Labels are colored tags attached to tasks for categorization.
Fields:
name-- unique string (1-50 chars)color-- hex color (e.g.#ff5733)priority-- integer for ordering (higher = shown first)
API:
GET /api/labels-- list all labels (ordered by priority desc)POST /api/labels-- create labelPATCH /api/labels/:id-- update labelDELETE /api/labels/:id-- delete labelPOST /api/labels/tasks/:id/labels-- assign label to taskDELETE /api/labels/tasks/:id/labels/:labelId-- unassign label from task
When a task belongs to a team, it receives an auto-incrementing number scoped to that team. The team's nextIssueNumber is atomically incremented in a transaction.
Example: Team with key ENG creates its third task. The task gets number: 3 and identifier: ENG-3.