Files
zeroq-qol-modules/.agent/task-manifest.md
T
2026-07-22 01:38:31 +03:00

6.0 KiB
Raw Blame History

Task Manifest

Session: a1b2c3d4-e5f6-7890-abcd-ef1234567890 Goal: Проанализировать существующий Obsidian-плагин zeroq-qol-modules (v1.1.4) и подготовить манифест задач для исполнительного агента. Date: 2026-07-22T00:00:00.000Z


Task Overview

ID Title Type Depends On Status
T1 Настроить ESLint и Prettier config pending
T2 Написать тесты для BaseModule test pending
T3 Написать тесты для Attachment Clean Paste модуля test T2 pending
T4 Написать тесты для Preserve Link Aliases модуля test T2 pending
T5 Добавить CI workflow для тестов и линтинга config T1, T3, T4 pending

Total tasks: 5


Task Details

T1: Настроить ESLint и Prettier

Type: config Description: Добавить конфигурацию ESLint (typescript-eslint) и Prettier для единого стиля кода. Настроить скрипты lint/format в package.json.

Files:

  • package.json
  • .eslintrc.json
  • .prettierrc.json

Depends on:

Acceptance Criteria:

  • ESLint настроен с typescript-eslint, проходит без ошибок на src/
  • Prettier настроен с tabs, проходит без ошибок на src/
  • Скрипты lint и format добавлены в package.json

Context: В проекте используются tabs для отступов (см. review.md). Линтер/форматтер отсутствует.


T2: Написать тесты для BaseModule

Type: test Description: Добавить unit-тесты для BaseModule: проверка registerCleanup, onunload (очистка всех функций), defaultSettings.

Files:

  • src/modules/base-module.ts
  • tests/modules/base-module.test.ts
  • package.json
  • tsconfig.json

Depends on:

Acceptance Criteria:

  • Тест проверяет, что registerCleanup добавляет функцию в очередь
  • Тест проверяет, что onunload вызывает все зарегистрированные cleanup-функции
  • Тест проверяет, что onunload очищает очередь после выполнения
  • Тест проверяет, что defaultSettings возвращает пустой объект
  • Все тесты проходят (npm test)

Context: BaseModule — абстрактный класс-основа для всех модулей. Находится в src/modules/base-module.ts. Для тестов нужно настроить тестовый раннер (jest или vitest) и mock-объект Plugin из obsidian.


T3: Написать тесты для Attachment Clean Paste модуля

Type: test Description: Добавить unit-тесты для AttachmentCleanPasteModule: проверка shouldProcess (фильтрация расширений), обработка paste/drop событий.

Files:

  • src/modules/attachment-clean-paste/index.ts
  • tests/modules/attachment-clean-paste.test.ts

Depends on: T2

Acceptance Criteria:

  • Тест проверяет shouldProcess с разными расширениями и настройками
  • Тест проверяет, что обработчик paste вызывает preventDefault для файлов с подходящими расширениями
  • Тест проверяет, что модуль корректно создаёт ссылку path
  • Все тесты проходят (npm test)

Context: Attachment Clean Paste обрабатывает editor-paste и editor-drop события. Основная логика: shouldProcess (фильтрация по extensions) и processFile (копирование + создание ссылки).


Type: test Description: Добавить unit-тесты для PreserveLinkAliasesModule: проверка processContent (замена алиасов), getFilesToProcess (фильтрация файлов), обработка rename.

Files:

  • src/modules/preserve-link-aliases/index.ts
  • tests/modules/preserve-link-aliases.test.ts

Depends on: T2

Acceptance Criteria:

  • Тест проверяет processContent: замена алиаса при переименовании
  • Тест проверяет processContent: игнорирование ссылок без алиаса
  • Тест проверяет processContent: учёт флага processEmbeds
  • Тест проверяет getFilesToProcess: включение canvas-файлов при processCanvas=true
  • Все тесты проходят (npm test)

Context: Preserve Link Aliases обрабатывает vault rename. Основная логика: processContent (регулярное выражение для вики-ссылок) и getFilesToProcess (сбор markdown + опционально canvas).


T5: Добавить CI workflow для тестов и линтинга

Type: config Description: Добавить GitHub Actions workflow для автоматического запуска тестов и ESLint на push/PR в main/dev.

Files:

  • .github/workflows/ci.yml

Depends on: T1, T3, T4

Acceptance Criteria:

  • Workflow запускается на push и pull_request в main и dev
  • Workflow выполняет npm ci, npm run lint, npm test
  • Workflow завершается с ошибкой при падении тестов или линтера

Context: Существующий release.yml в .github/workflows/ — можно использовать как шаблон. Node 20, ubuntu-latest.