Files
jellybit/docs/backlog/unifikaciya-knopok-btn-ghost.md
T
avandClaude Opus 4.8 3e470e3ae6 Беклог: перенос четырёх задач из инбокса Tududi
Инбокс Tududi разгружен: четыре открытые задачи проекта оформлены файлами
в docs/backlog и помечены выполненными в Tududi.

- режиссёр в блоке «Распознано как» на странице загрузки (средний);
- карточка информации о торренте вылезает за экран на мобильном (средний);
- сигнал Jellyfin после отката и удаления файлов (средний);
- кнопки выглядят как кнопки: btn-ghost и рассогласование весов (низкий).

Каждая задача проверена по коду: все четыре актуальны, ни одну не закрыли
прошлые коммиты. В телах — точки правки, развилки и нужные дельты спек.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 21:02:22 +03:00

4.5 KiB
Raw Blame History

Кнопки выглядят как кнопки: 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

Расхождения:

  1. btn-ghost — корень проблемы, 3 места: card.html:29, download_main.html:22, download_main.html:26.
  2. «Откатить» несогласован сам с собой: невидимая btn-ghost в списке против красной btn-danger на странице.
  3. «Отменить» инвертирован ровно наоборот: btn-danger в списке против btn-ghost на странице. В списке Откатить тише Отменить, на странице — наоборот.
  4. Эмодзи-префиксы несогласованы: ↩ Откатить (страница) vs Откатить (список); review_main.html:76-78 — эмодзи на всех (🕗/❌/✅), card.html — ни одного.
  5. Вероятно ок: review_main.html:54,58, review_source_block.html:49, index.html:32,65-67 (пагинация — ссылка-как-кнопка законно), download_main.html:112,124 (danger-zone).
  6. .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:43btn btn-danger). Макет сам непоследователен → либо чинить и tmp/design/*, либо явно зафиксировать, что макет больше не источник истины (см. tmp/design/handoff.md:96-97).

Спеки

openspec/specs/web-ui/spec.md:249-264 («Действия соответствуют состоянию») описывает, какие действия показывать и имена полей форм; требований к визуальной стилизации нет. «Откатить» упоминается только в htmx-сценариях (:435, :444). → чистый nit-фикс либо новая дельта, если хотим зафиксировать семантику весов.