You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,17 @@
2
2
3
3
---
4
4
5
+
## v2.10.4 - Bulk task operations
6
+
*May 2026*
7
+
8
+
### Added
9
+
10
+
-`POST /api/tasks/bulk` - apply one operation to many tasks in a single transaction: `complete` (complete/reopen), `assignProject` (move to a project or Inbox), or `setDeadline` (set or clear). Returns the affected tasks; unknown ids are skipped. There is intentionally no bulk delete (#63)
11
+
- Three MCP tools - `bulk_set_completion`, `bulk_assign_to_project`, `bulk_set_deadline` - so Claude can reorganize many tasks in one call (e.g. "move these 5 to Work", "push all of these to Friday") instead of one call per task. MCP tool count: 16 → 19
12
+
- Web UI multi-select: a "Select" toggle on the task list reveals selection checkboxes (desktop column with select-all, mobile card checkboxes) and a sticky bulk-actions bar with Complete, Reopen, Move to project, and Set deadline
Copy file name to clipboardExpand all lines: README.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,6 +49,7 @@ I wanted a task system I understood completely - one where the data, the workflo
49
49
**Track and complete**
50
50
- Deadline color coding - red when overdue, yellow when due within 3 days
51
51
- Edit a task's title, deadline, project, and labels from the list; quick-set deadlines (Today, Tomorrow, This weekend, Next week) or clear them with one tap
52
+
- Multi-select to act on many tasks at once - complete, move to a project, or set a deadline in one step
52
53
- Checkbox completion with a clean animation - done tasks step aside, not deleted
53
54
- Show/hide completed tasks and undo completion at any time
54
55
- Task detail page with full status and completion history
@@ -121,7 +122,7 @@ That's it. The app opens in your browser.
121
122
122
123
- Dark mode and custom themes
123
124
- Dedicated device setup guide (Raspberry Pi, Term home server)
| DELETE |`/api/tasks/{id}`| Delete task. 204 on success, 404 if not found |
185
187
| PATCH |`/api/tasks/{id}/complete`| Mark task complete or incomplete. Body: `{ isCompleted: bool }`. Returns updated task |
186
188
| PATCH |`/api/tasks/{id}/project`| Reassign task to a project or Inbox. Body: `{ projectId: int? }`|
189
+
| POST |`/api/tasks/bulk`| Apply one operation to many tasks in one transaction. Body: `{ operation: "complete" \| "assignProject" \| "setDeadline", taskIds: int[], data?: { isCompleted?, projectId?, deadline? } }`. No bulk delete. Unknown ids skipped; returns the affected tasks. 400 on empty ids / unknown op / invalid data (incl. assignProject to a missing project) |
187
190
| GET |`/api/projects`| All projects, ordered by name |
188
191
| POST |`/api/projects`| Create project. Body: `{ name: string }`. Returns created project |
@@ -372,7 +375,7 @@ POST /token auth_code and refresh_token gran
372
375
373
376
### Tool layer
374
377
375
-
16 MCP tools across three families (tasks: 8, projects: 4, labels: 4). Each tool is a thin wrapper around the corresponding Tasklog `/api` endpoint via `api-client.ts`. Input schemas use Zod and are inlined per tool. The `runTool()` helper in `result.ts` converts thrown `ApiError`s into MCP `isError: true` tool results (not JSON-RPC protocol errors), so the LLM can see and react to failures.
378
+
19 MCP tools across three families (tasks: 11, projects: 4, labels: 4). The task family includes three bulk tools (`bulk_set_completion`, `bulk_assign_to_project`, `bulk_set_deadline`) backed by the single `POST /api/tasks/bulk` endpoint. Each tool is a thin wrapper around the corresponding Tasklog `/api` endpoint via `api-client.ts`. Input schemas use Zod and are inlined per tool. The `runTool()` helper in `result.ts` converts thrown `ApiError`s into MCP `isError: true` tool results (not JSON-RPC protocol errors), so the LLM can see and react to failures.
376
379
377
380
The `list_tasks` tool accepts an optional filter object (project, inbox, labels, deadline range, completion, title substring) that `api-client.ts` serializes into a query string on `GET /api/tasks`. Completion is a single `set_task_completion(id, isCompleted)` tool - the earlier `complete_task` / `uncomplete_task` split was consolidated in v2.10.1.
0 commit comments