Files
board-viewer/.tasks/board-viewer-ux-owner-conditional.md
vitya cfa4572731 tasks: round1 UX feedback — 6 dev-tasks + review umbrella [board-viewer-ux-round1-review]
User первые впечатления после go-live board.kzntsv.site:
- drawer падает TypeError (приватные репо + no browser token; bundle md
  в build-time — единственно верное решение)
- slug не виден на карточке (только в data-attr)
- дата без времени, неясный формат
- owner-pill дублируется (single-owner whitelist → visual noise)
- нет нумерации задач (BV-12 / T-001 shorthand нужен)
- done-tail слишком длинный (нужен render-side cutoff/collapse)

Все 6 — code-impl в board-viewer (не deploy → не в .admin, per workshop §5).
TDD posture везде (project follow tdd-criteria).

Drawer bug = critical (clear-impl: bundle md в build-time, root-cause grounded).
Show-slug + full-datetime = clear-impl, простой TDD-цикл.
Owner-conditional = clear-impl (single vs multi owner branches), 2 fixtures.
Task-numbers + done-cutoff = design-first (4 open questions каждый),
brainstorm если recommendations не пройдут single-session.

+ review umbrella 🔵 blocked-by 6 slug'ами (workshop §4 mandatory).

Ops-handoff (rebuild image + Portainer pull) — отдельная taska в
.admin/[board-viewer-redeploy-ux-round1] (workshop §5).
2026-05-22 18:39:01 +03:00

2.2 KiB
Raw Permalink Blame History

board-viewer-ux-owner-conditional

Goal

User: «OpeItcLoc03 — почему везде один и тот же owner? Зачем он вообще?» Owner-pill добавлен board-viewer-card-meta-fix как differentiator для cross-owner whitelist'а, но в текущем VDS-конфиге все 5 репо в одном namespace (OpeItcLoc03/*) → pill дублируется на каждой карточке, visual noise.

Рендерить owner условно: если на текущем рендере все видимые карточки имеют один и тот же owner — pill скрыть, owner один раз показать в шапке доски (например «Owner: OpeItcLoc03 (5 repos)»). При ≥2 distinct owners — pill вернуть на карточки.

TDD posture

Mode = TDD. Failing test: render с фикстурой single-owner → cards без .owner-pill, шапка содержит owner-summary. Render с фикстурой multi-owner → cards содержат .owner-pill, шапка без owner-summary (или с list). Затем impl.

Key files

  • src/render.ts — pre-render scan distinct owners, conditional output
  • static/board.css — стиль для header owner-summary
  • tests/render.test.ts — два теста (single-owner / multi-owner fixtures)

Acceptance

  • При single-owner whitelist карточки чище (без duplicate pill); owner один раз в шапке
  • При multi-owner — pill возвращается, шапка не дублирует
  • Тесты pass

Notes

  • Связанная ops-проверка (см. .admin/[board-viewer-redeploy-ux-round1]): верифицировать что board_viewer_repos в /opt/stacks/board-viewer/auth.toml корректно — books по memory Gitea owner namespace должен быть victor/books, не OpeItcLoc03/books. Если auth.toml корректен и whitelist single-owner — UI conditional работает как задумано.