Add first-class area links for Tasks Planner #111

Closed
opened 2026-05-27 09:14:06 +00:00 by steve · 0 comments
Owner

Add area metadata for ongoing responsibilities so the planner can organize active work by area without overloading projects or tags.

Problem

Projects already exist as task-note links, but areas are different: they are ongoing responsibilities and should not be modeled as completable task outcomes. The planner needs area links for sidebar navigation, Inbox triage, and grouping.

Goal

Add browser-safe area links to the task model and planner surfaces while preserving existing project relationship behavior.

Scope

  • Add areaLinks or equivalent to StoredTask.
  • Add mapped field role areas, defaulting to areas.
  • Parse and write area links through frontmatter while preserving unknown fields.
  • Treat areas as ordinary note links, not necessarily task notes.
  • Add planner sidebar area summaries and area detail views.
  • Add assign/unassign area actions from planner rows or Inbox triage.
  • Add tests for parsing, serialization, strict validation, and planner grouping.

Non-goals

  • No automatic migration from tags to areas.
  • No requirement that area notes exist or be tasks.
  • No deep area hierarchy unless future product work requires it.
  • No manual ordering within areas.

Acceptance Criteria

  • Tasks can carry zero or more area links in mapped frontmatter.
  • Area metadata round-trips without breaking projects or blockedBy parsing.
  • Planner Inbox classification treats tasks with areas as organized, not Inbox.
  • Planner sidebar lists active areas with counts.
  • Area view shows active tasks for that area and can open linked area notes when resolvable.
  • Tests cover wiki-link, markdown-link, and plain-path area values.

Implementation Notes

  • Reuse link extraction logic from projects/blockers, but do not require target notes to be indexed as tasks.
  • An area picker likely needs vault-note search rather than the current task-only relation picker.
  • Keep tags as tags; do not use tags as the durable area model.

Suggested Files or Specs To Inspect

  • packages/plugins/plugin-tasks/src/core/model.ts
  • packages/plugins/plugin-tasks/src/core/settings.ts
  • packages/plugins/plugin-tasks/src/core/plugin.ts
  • packages/plugins/plugin-tasks/src/editor/task-relation-picker-dialog.svelte
  • packages/plugins/plugin-tasks/src/planner/
  • packages/workspace/e2e/tasks.spec.ts

Validation Commands

  • pnpm --filter @lapis-notes/tasks test
  • pnpm --filter @lapis-notes/tasks check
  • pnpm --filter @lapis-notes/workspace check
  • make spec-lint
  • pnpm test:smoke

Follow-up Tasks

  • TASK-PLUGIN-059
  • TASK-PLUGIN-060
  • TASK-PLUGIN-063

Implementation Summary

Added first-class planner area links with planner area summaries, area candidate picking, and area-specific planner task views.

Add area metadata for ongoing responsibilities so the planner can organize active work by area without overloading projects or tags. ## Problem Projects already exist as task-note links, but areas are different: they are ongoing responsibilities and should not be modeled as completable task outcomes. The planner needs area links for sidebar navigation, Inbox triage, and grouping. ## Goal Add browser-safe area links to the task model and planner surfaces while preserving existing project relationship behavior. ## Scope - Add `areaLinks` or equivalent to `StoredTask`. - Add mapped field role `areas`, defaulting to `areas`. - Parse and write area links through frontmatter while preserving unknown fields. - Treat areas as ordinary note links, not necessarily task notes. - Add planner sidebar area summaries and area detail views. - Add assign/unassign area actions from planner rows or Inbox triage. - Add tests for parsing, serialization, strict validation, and planner grouping. ## Non-goals - No automatic migration from tags to areas. - No requirement that area notes exist or be tasks. - No deep area hierarchy unless future product work requires it. - No manual ordering within areas. ## Acceptance Criteria - Tasks can carry zero or more area links in mapped frontmatter. - Area metadata round-trips without breaking `projects` or `blockedBy` parsing. - Planner Inbox classification treats tasks with areas as organized, not Inbox. - Planner sidebar lists active areas with counts. - Area view shows active tasks for that area and can open linked area notes when resolvable. - Tests cover wiki-link, markdown-link, and plain-path area values. ## Implementation Notes - Reuse link extraction logic from projects/blockers, but do not require target notes to be indexed as tasks. - An area picker likely needs vault-note search rather than the current task-only relation picker. - Keep tags as tags; do not use tags as the durable area model. ## Suggested Files or Specs To Inspect - `packages/plugins/plugin-tasks/src/core/model.ts` - `packages/plugins/plugin-tasks/src/core/settings.ts` - `packages/plugins/plugin-tasks/src/core/plugin.ts` - `packages/plugins/plugin-tasks/src/editor/task-relation-picker-dialog.svelte` - `packages/plugins/plugin-tasks/src/planner/` - `packages/workspace/e2e/tasks.spec.ts` ## Validation Commands - `pnpm --filter @lapis-notes/tasks test` - `pnpm --filter @lapis-notes/tasks check` - `pnpm --filter @lapis-notes/workspace check` - `make spec-lint` - `pnpm test:smoke` ## Follow-up Tasks - TASK-PLUGIN-059 - TASK-PLUGIN-060 - TASK-PLUGIN-063 ## Implementation Summary Added first-class planner area links with planner area summaries, area candidate picking, and area-specific planner task views. <!-- backlog:task_id=TASK-PLUGIN-058 source_spec=spec/src/20-packages/plugins/tasks/index.md#things-like-planner-workflow -->
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lapis-notes/lapis#111
No description provided.