Инбокс Tududi разгружен: четыре открытые задачи проекта оформлены файлами в docs/backlog и помечены выполненными в Tududi. - режиссёр в блоке «Распознано как» на странице загрузки (средний); - карточка информации о торренте вылезает за экран на мобильном (средний); - сигнал Jellyfin после отката и удаления файлов (средний); - кнопки выглядят как кнопки: btn-ghost и рассогласование весов (низкий). Каждая задача проверена по коду: все четыре актуальны, ни одну не закрыли прошлые коммиты. В телах — точки правки, развилки и нужные дельты спек. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.5 KiB
Кнопки выглядят как кнопки: btn-ghost и рассогласование весов
Приоритет: низкий
Кнопка «Откатить» в списке загрузок неотличима от текста/ссылки. Это не
разметка — там уже <button type="submit"> внутри <form>; проблема чисто
визуальная, в классе btn-ghost:
web/static/css/jellybit.css:165-166—.btn-ghost{background:transparent; border-color:transparent;color:var(--text-dim)}. Прозрачный фон + прозрачный бордер + приглушённый текст = в покое нет аффорданса. Он появляется только на:hover, а на тач-устройствах hover'а нет вообще.
Инвентаризация
| Действие | Список (card.html) |
Страница (download_main.html) |
|---|---|---|
| Ревью | :28 btn btn-primary btn-sm |
:21 btn btn-primary |
| Откатить | :29 btn btn-sm btn-ghost |
:23 btn btn-danger «↩ Откатить» |
| Привязать заново | :30 btn btn-sm |
:24 btn |
| Повторить | :31 btn btn-sm |
:25 btn |
| Отменить/Отклонить | :32 btn btn-sm btn-danger |
:26 btn btn-ghost |
| Обновить имя | — | :22 btn btn-ghost |
Расхождения:
btn-ghost— корень проблемы, 3 места:card.html:29,download_main.html:22,download_main.html:26.- «Откатить» несогласован сам с собой: невидимая
btn-ghostв списке против краснойbtn-dangerна странице. - «Отменить» инвертирован ровно наоборот:
btn-dangerв списке противbtn-ghostна странице. В списке Откатить тише Отменить, на странице — наоборот. - Эмодзи-префиксы несогласованы:
↩ Откатить(страница) vsОткатить(список);review_main.html:76-78— эмодзи на всех (🕗/❌/✅),card.html— ни одного. - Вероятно ок:
review_main.html:54,58,review_source_block.html:49,index.html:32,65-67(пагинация — ссылка-как-кнопка законно),download_main.html:112,124(danger-zone). .copy-btn(card.html:9,download_main.html:15,90) — отдельная система классов (jellybit.css:210-214), не.btn. Формально вне скоупа, но при унификации всплывёт.
База CSS — jellybit.css:153-171.
Развилки
- (а) дать
.btn-ghostвидимый бордер/фон — одна строка, чинит все 3 места. - (б) выкинуть
.btn-ghostи назначить семантику явно: Откатить =btn-dangerвезде, Отменить =btn-dangerвезде, Обновить имя = нейтральный.btn. - (в) решить судьбу
↩— оставляем или убираем.
Рекомендация — б+в: (а) чинит видимость, но оставляет пункты 2-4 (одно действие имеет два разных визуальных веса на разных экранах).
Подводный камень: .btn-ghost портирован из макета (tmp/design/index.html:109
— тоже btn btn-sm btn-ghost для «Откатить», а tmp/design/download.html:43 —
btn btn-danger). Макет сам непоследователен → либо чинить и tmp/design/*, либо
явно зафиксировать, что макет больше не источник истины (см. tmp/design/handoff.md:96-97).
Спеки
openspec/specs/web-ui/spec.md:249-264 («Действия соответствуют состоянию»)
описывает, какие действия показывать и имена полей форм; требований к визуальной
стилизации нет. «Откатить» упоминается только в htmx-сценариях (:435, :444).
→ чистый nit-фикс либо новая дельта, если хотим зафиксировать семантику весов.