3.0 KiB
3.0 KiB
Proposal: core-recording-lifecycle
Issue: #1 — Core: жизненный цикл голосовой записи и очередь отправки.
Why
Плагин должен превращать голосовую диктовку (в первую очередь с iPhone) в текстовую заметку через внешний сервис распознавания. Главный риск мобильного сценария — потеря надиктованного: нет сети, Obsidian выгружен из памяти, запись оборвалась. Нужна независимая от Obsidian и покрытая тестами основа, которая сохраняет запись сразу, доводит её до текста через повторы и никогда не портит заметку.
What Changes
- Новая чистая подсистема
src/core/(без импортовobsidianи Node API): жизненный цикл записи, планировщик повторов, формат заметки, очередь отправки поверх портов. - Тестовая инфраструктура проекта: сборка по шаблону obsidian-sample-plugin, vitest, фейки портов, golden-тест
test-01, тест-страж границыsrc/core. - Контракт провайдера распознавания (интерфейс), который реализует следующая подсистема.
- Без реального провайдера, UI, команд и
MediaRecorder— это отдельные issue.
Capabilities
New Capabilities
recording-lifecycle: состояния записи, сохранение захваченного аудио, отправка, классификация ошибок, повторы с нарастающей паузой, принадлежность записи устройству, ручные команды «повторить» и «забрать все ожидающие».voice-note-format: размещение и имена файлов аудио и заметок, ключи frontmatter, управляемая плагином область тела заметки, правила вставки транскрипта без порчи пользовательского текста.
Modified Capabilities
Нет.
Impact
- Новые файлы:
package.json,tsconfig.json,esbuild.config.mjs,manifest.json,vitest.config.ts,src/core/*,tests/*. - Зависимости (dev):
typescript,esbuild,vitest,obsidian(типы),@types/nodeтолько для тестов. .gitignore: добавляется.claude/worktrees/.- Следующие подсистемы (провайдер, обёртка Obsidian) зависят от портов и контракта
Transcriber, описанных в design.md.