# project-tasks — VS Code Extension ## Хранение Формат: Markdown + YAML frontmatter (один `.task.md` файл на задачу) ```markdown --- title: "Пофиксить баг логина" status: todo # todo | in-progress | done | cancelled priority: high # low | medium | high | critical tags: [bug, frontend] assignee: "" created: 2026-07-12T10:00:00Z updated: 2026-07-12T10:00:00Z --- Описание задачи в markdown... ``` **Структура папок:** - `.vscode/tasks/` — проектные задачи - `~/project-tasks/` — глобальные задачи (настраивается) Оба пути настраиваются через VS Code settings. ## UI в основном окне (Split-редактор) Через **Custom Editor** + **WebView**: 1. **Activity Bar** — своя вкладка с Task Dashboard 2. **Task Dashboard** — WebView в editor area со split layout: - Левая панель — список задач с фильтрацией/группировкой - Правая панель — содержимое выбранной задачи (редактируемый markdown) 3. **TreeView в Explorer** — быстрый просмотр ## Архитектура кода ```txt src/ ├── extension.ts # Активация, регистрация ├── storage/ │ ├── taskStore.ts # CRUD для .task.md (gray-matter парсинг) │ └── configStore.ts # Настройки ├── model/ │ └── task.ts # Интерфейс Task + типы ├── views/ │ ├── taskTreeProvider.ts # TreeView в sidebar │ ├── taskListProvider.ts # Data provider для WebView │ └── taskDashboardPanel.ts # WebView split layout ├── commands/ │ ├── createTask.ts │ ├── openTask.ts │ ├── deleteTask.ts │ └── changeStatus.ts └── utils/ ├── uuid.ts └── markdown.ts ``` ## План реализации | Фаза | Что делаем | | ------------------------ | -------------------------------------------------------------- | | **1. Scaffold** | `yo code`, TypeScript, настройка package.json | | **2. Storage** | TaskStore — чтение `.task.md`, парсинг через gray-matter, CRUD | | **3. TreeView** | Боковая панель со списком задач по статусу | | **4. Команды** | createTask, deleteTask, changeStatus, openTask | | **5. Task Dashboard** | WebView split layout в editor area | | **6. Глобальные задачи** | Второй storage (глобальная папка) | | **7. Kanban** | Drag-n-drop доска | | **8. Публикация** | vsce publish | ## Зависимости - `gray-matter` — парсинг YAML frontmatter - `uuid` — генерация ID