Tasks v1.24.0: board rules automation engine (Phase 4)
Details
Add rule-based automation that triggers on task mutations.
BoardRule entities define trigger (status_changed, field_changed,
task_created, due_date_approaching), AND/OR condition groups,
and actions (set_status, set_priority, set_field, add_tag,
remove_tag, set_due_date, move_to_project, add_checklist_item).
RuleEngine evaluates matching rules after task state changes with
infinite loop protection (max 3 recursion levels). RuleService
provides CRUD with in-memory cache. Rule evaluation is integrated
at all status movement commands, task creation, and toggle
completion points via fire-and-forget async helper.
Tasks v1.23.0: configurable board columns (Phase 3)
Details
Add per-project board configuration with dynamic column rendering.
BoardConfiguration entities define columns with status key assignments,
WIP limits, colors, and collapse state. BoardConfigService provides
CRUD with a default 3-column board seed and per-project lookup with
global fallback. BoardColumnViewModel exposes dynamic columns to the
UI alongside legacy TodoTasks/InProgressTasks/DoneTasks collections
for backward compatibility. Tasks are distributed to columns based
on status-to-column mapping, with drag-drop support via
MoveTaskToColumnAtIndex.
Add custom field definitions with entity-backed CustomFieldService
Details
Introduce global workspace-scoped custom fields that can be added to any task.
Field values are stored in the existing TaskItem.CustomFields dictionary using
a "cf_" key prefix to avoid collision with internal keys.
Key additions:
- CustomFieldDefinition model with 13 field types (text, number, date,
single_select, multi_select, checkbox, url, email, phone, currency,
rating, person, formula)
- CustomFieldValue record with type-safe accessors (GetString, GetNumber,
GetBool, GetStringList) and formatted display output
- CustomFieldService with CRUD via SDK (entity type: task_custom_field),
in-memory cache, and field value read/write helpers
- Entity schema for task_custom_field in TasksPlugin
- ViewModel exposes CustomFieldDefinitions and SelectedTaskCustomFields
- Version bump to 1.22.0
Add custom status definitions with entity-backed StatusService
Details
Replace hardcoded task status strings with dynamic StatusDefinition entities
managed by a StatusService CRUD layer. Status definitions are stored via SDK
as "task_status" entities with name, key, color, icon, category, and sort order.
Eight default statuses are seeded on first use: todo, in_progress, done, waiting,
blocked, review, deferred, cancelled — each assigned to a semantic category
(not_started, active, done, cancelled).
Key changes:
- StatusDefinition model with 4 category types and 8 built-in defaults
- StatusService with in-memory cache, CRUD, and EnsureDefaultStatusesAsync
- TaskItem.ResolvedStatus transient property drives StatusColor/DisplayStatus
- Board column assignment uses category-based mapping via GetBoardColumnForStatus
- Status filters and smart filters use category-based matching
- Statistics (todo/active/done/cancelled counts) use StatusService lookups
- Command palette and status display use StatusService.GetDisplayName
- Removed CustomStatus property and CustomStatuses collection (superseded)
- Version bump to 1.21.0
Add tasks.update_task and tasks.add_link intents
Details
Adds two new intent descriptors and execution handlers to the Tasks plugin:
- tasks.update_task: Updates any combination of title, description, status,
priority, due_date, start_date, tags (with +prefix add mode), contexts,
project assignment, and checklist items. Resolves tasks by ID (from
wiki-link or conversation context) or by title search fallback. Tracks
changed fields and returns a descriptive summary.
- tasks.add_link: Links a task to any cross-plugin entity (page, contact,
event, etc.) with a configurable relationship type (linked_to, depends_on,
blocked_by, blocks, child_of, parent_of). Resolves target entities via
ILinkableItemProvider search when only a title is provided.
Shared ResolveTaskAsync helper extracts task resolution logic (by ID or
title search) for reuse across both handlers. Bumps Tasks plugin to 1.20.0.
Get notified about new releases