Files
board-viewer/.tasks/board-viewer-card-meta-fix.md
vitya 930e404545 feat(render): card owner pill + short ISO date span
closes board-viewer-card-meta-fix

Review found two acceptance fields missing from cards:
- project_owner was in JSON but never displayed
- last_commit_iso was only consumed for relative age; no absolute date

Now both rendered (server-side src/render.ts + client-side static/board.js
in sync), with 4 new TDD tests:
- renders owner pill when project_owner is set
- omits owner pill when empty
- renders short YYYY-MM-DD date when last_commit_iso is set
- omits date span when null

CSS: .badge.owner = transparent + border (visually distinct from solid
.badge.project), .date = small muted tabular-nums. Smoke-verified in browser.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:42:59 +03:00

3.0 KiB
Raw Permalink Blame History

board-viewer-card-meta-fix

Goal

Card meta сейчас содержит title + project + age. Acceptance criteria board-viewer-html-render.md строка 19-24 явно перечисляет 5 полей:

  • title (труб 80 chars)
  • project badge
  • owner (если есть) — pill (поле project_owner есть в TaskRecord и JSON, но не выводится)
  • age (relative)
  • last-commit-marker — короткий hash или дата (есть только relative age от last_commit_iso, абсолютной даты/хэша нет)

html-render таска закрылась без этих полей — gap. Не было замечено при self-review (потому и нужен independent reviewer).

Key files

  • src/render.ts:111-127renderCard() (server-side первая рендер-проходка)
  • static/board.js:76-89renderCard() (client-side rerender при toggle-grouping)
  • tests/render.test.ts — добавить assertions для двух новых полей
  • static/board.css — стиль для .badge.owner если нужно отличать визуально

Acceptance criteria

  • Card showing project_owner as a pill (CSS class .badge.owner), скрыт если поле пустое.
  • Card showing last-commit-marker: minimum — ISO date YYYY-MM-DD (короткая дата, NOT relative). Hash недоступен из API без extra call → opt for date.
  • Возможность размещения: либо как третий meta-span после age, либо как tooltip на age (title="<iso>"); решение имплементера.
  • 2+ TDD tests:
    • card with project_owner shows owner pill containing the value
    • card with last_commit_iso shows date (e.g. 2026-05-22) — separate from relative age
  • Обе ветки (server-side src/render.ts + client-side static/board.js) синхронны.

Decisions log

  • 2026-05-22: задача из review-чекпойнта; severity=major (acceptance gap, не self-replied).
  • Open: owner pill всегда показывать или только при variability (когда есть >1 owner в выборке)? — рекомендация: всегда показывать когда поле не null (нет смысла фильтровать на rendering этапе).

Completed steps

  • RED+GREEN: 4 теста для owner pill + date span (renders/omits)
  • src/render.ts renderCard: owner pill + date span (short YYYY-MM-DD + tooltip с full ISO)
  • static/board.js renderCard синхронно
  • static/board.css: .badge.owner (transparent + border) + .date (small muted tabular-nums)
  • smoke-verified в браузере: top cards показывают board-viewer + OpeItcLoc03 + 2026-05-22 + 25m

Notes

TDD obligatory — render логика, не visual. Тестируется через DOM-property assertions (как в render.test.ts).