- Веб-UI: под шапкой страницы загрузки — дата добавления и относительная
давность («N дней назад»), как в карточках списка.
- Баг: ссылка-dereferrer TVDB для фильма вела на /series/; теперь строится
по типу запроса (/movie/ либо /series/). Тест + правка спеки metadata-match.
- Telegram: заголовки уведомлений (готово/ошибка/рассинхрон) берутся из
display_name — консистентно с веб-UI; сезон подтягивается автоматически.
- Telegram: в сообщениях об ошибке — и заголовок, и #id загрузки (ULID)
для быстрого поиска по логам.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Три секции экрана ревью (Догадка/Источник/Раскладка) слиты в один блок:
список вариантов (радио) → инфо о выбранном → предпросмотр раскладки. Клик
по варианту сразу выбирает и сохраняет источник и обновляет инфо+раскладку
частичным htmx-свопом блока, без полной перезагрузки и без кнопки «выбрать».
- httpapi: reviewBlockAction (htmx-aware, детект HX-Request) для
candidate/nobase/source; вынос buildReviewView; поля SeasonSummary и
BlockError; сводка сезонов (seasonSummary/seasonRanges)
- тип movie↔series убран из UI (read-only); удалён веб-роут /type и
handleSetType, метод SetType из интерфейса httpapi (worker/Telegram не тронуты)
- шаблон: партиал review_source_block, ссылка «запись ↗» вне кликабельного
label, фокус радио с клавиатуры; чистка мёртвого sourceView.Files/IsSeries
- тесты: htmx-своп выбора, htmx-путь ошибки, юнит-тесты сводки сезонов
- openspec: спеки review/web-ui синхронизированы, change заархивирован
- беклог: сложные сериальные раздачи; oob-обновление панели действий
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
По итогам аудита соответствия спек и кода (11 сабагентов, по одному на capability):
Беклог:
- новый пункт: гейт авто-раскладки по confidence (спека говорит «вспомогательный
сигнал», код делает жёсткий AutoThreshold=0.85) — определиться, что правда
- новый пункт: привязка внешних субтитров к серии (спека требует, для сериала
связь субтитр→эпизод и пары .idx/.sub в коде не выражены)
- новый пункт: раздачи-копии диска DVD/BluRay (VIDEO_TS/BDMV — каталог целиком,
не пофайловый разбор)
- дополнен существующий баг TVDB /series/: спека metadata-match теперь тоже
кодифицирует баг — фикс должен править и требование
Спеки (правка на точность, поведение не меняется):
- download-tracking, review: «per-download блокировка» → «единая блокировка
воркера» (по факту глобальный w.mu, а не per-download)
openspec validate --strict — проходит.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Привёл набор capabilities в OpenSpec к цепочке обработки, чтобы имя capability
отвечало одному поведению. Чисто по спекам, код и поведение системы не меняются.
Change refactor-capability-boundaries (архивирован):
- recognition разделён на recognition (разбор LLM) + metadata-match (сверка с базами)
- review выделен из web-ui + мигрирован из docs/specs/review-ux.md
- новые capability из docs/specs: file-layout, download-tracking, notifications
- identity очищен до инфра-id; приём (инфохэши, дедуп, ядро приёма) — в ingest
- уведомление о рассинхроне перенесено из state-reconciliation в notifications
- дубль владения путём и безопасного undo оставлен в state-reconciliation
Итог: 11 capabilities, openspec validate --strict проходит (+37/−11 требований).
Источник истины по мигрированным темам переехал в openspec/specs (шапки в docs).
Снят пункт беклога «Пересмотр набора capabilities».
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Влил 3 ADDED (единый список источников, ручное добавление по id/URL,
предпросмотр полей до фиксации) и 2 MODIFIED (превью для каждого источника;
матч ссылкой в списке источников) требования в openspec/specs/web-ui.
Change перенесён в changes/archive. Убрал реализованный пункт из беклога,
перецелил ссылки на review-ux.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Переработка экрана ревью: единый список источников (нейронка наравне с
кандидатами баз), выбор/переключение/снятие в пользу нейронки, ручное
добавление по id/URL, предпросмотр полей и целевых путей до применения.
Дизайн отревьюен: единая деривация «источник → overrides» (preview==apply,
чинит залипший override title/year). Ограничились существующими capabilities.
Беклог: добавил две идеи — «Пересмотр набора capabilities и рефакторинг спек»
и «Сила совпадения кандидата / пересмотр распознавания и матчинга».
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Разные провайдеры и мониторинг запросов к LLM закрыты внешним LLM Gateway
(bifrost) на сервере; для наблюдения за состоянием пока достаточно slog.
Заодно поправил висячую ссылку на удалённый раздел в «Истории переходов».
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Раздел «Идентичность загрузки: ULID + множество инфохэшей» закрыт коммитом
37f2f64 и заархивированным change ulid-identity — удаляю из беклога.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Итог explore-сессии: сущность title не вводим — download остаётся мостом
qBittorrent ↔ файлы, «второй сезон» решается правилом сходимости папки,
группировка тайтла вычисляется. Черновик перекроен под это решение
(отвергнутые варианты и триггер пересмотра зафиксированы), задачи беклога
обновлены и приоритезированы по калибровке болей.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Сделаны в change web-ui-list-detail и убраны из беклога:
- «Главная: список загрузок вместо таблицы»
- «Расширенная информация о загрузке в web-UI»
- «Список загрузок: фильтр, поиск, пагинация»
- «Полировка веб-UI: список и карточка загрузки»
«Улучшения UI: показывать матч» сужено до Telegram (web-сторона сделана).
Поправлены перекрёстные ссылки в оставшихся пунктах, чтобы не висли на
удалённые якоря.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Слил docs/todo.md и docs/drafts/ideas.md в docs/backlog.md: единый список
будущих задач по приоритетам (Высокий/Средний/Низкий), спекулятивные пункты
помечены _(идея)_. Реализованное из ideas.md (повторное распознавание,
нотификации) не переносил.
Добавил задачи: переработка ревью (выбор источника совпадения с
предпросмотром), главная как список карточек вместо таблицы, отдельная
страница просмотра загрузки (поднял из «Расширенной информации»), скрытие
deleted-загрузок по умолчанию.
Ссылки на drafts/ideas.md из docs/specs/* перенаправлены на backlog.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>