feat: add dashboard and commands

This commit is contained in:
2026-07-14 10:00:15 +05:00
parent 2f09b3754e
commit 3490781ad5
13 changed files with 835 additions and 1 deletions
+23 -1
View File
@@ -55,8 +55,9 @@ src/
│ ├── openTask.ts
│ ├── deleteTask.ts
│ └── changeStatus.ts
├── dashboard/ # filter/group/view + inbound message parse
├── views/
│ └── taskTreeProvider.ts # (+ dashboard later)
│ └── taskTreeProvider.ts # TreeView; WebView host — отдельно
└── utils/
├── uuid.ts
└── markdown.ts # parse/serialize frontmatter
@@ -89,6 +90,27 @@ use-cases + `ITaskRepository`. Ошибки — `AppError` из `error.ts`.
| `changeStatus` | folder + id + status → update; not found |
| `openTask` | folder + id → path + task для editor; not found |
### Фаза 5 — Task Dashboard
Split layout: список (filter/group) + detail (editable markdown body).
| Модуль | Поведение |
| ------------------------------ | -------------------------------------------------------------------------------- |
| `filterTasks` | statuses / priorities / query (title+body) / tags (AND); пустой = all |
| `groupTasks` | `none` \| `status` \| `priority`; пустые группы не отдаём; фиксированный порядок |
| `buildDashboardView` | filter → group; `selected` по id из полного списка (даже если отфильтрован) |
| `parseDashboardInboundMessage` | ready / selectTask / setFilter / setGroupBy / saveDescription / refresh |
| `loadDashboard` | folder → `{ tasks }`; `AppError.NO_FOLDER` |
| `saveTaskDescription` | folder + id + description → update body; `NOT_FOUND` / validation |
**Unit-тестами не покрываем** (нужен Extension Host / DOM WebView):
- `WebviewPanel` create/dispose, HTML/CSS split layout, CSP / local resources
- `postMessage` wiring host ↔ webview (кроме parse inbound payload)
- регистрация `projectTasks.openDashboard`, status bar → open panel
- live refresh watcher → push в webview
- визуальный рендер списка/редактора в editor area
## Зависимости
- `front-matter` — разбор YAML frontmatter (body + attributes)