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).
30 lines
2.2 KiB
Markdown
30 lines
2.2 KiB
Markdown
# 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 работает как задумано.
|
||
|
||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .workshop / 2026-05-22 / trigger: user-ux-feedback-round1 -->
|