Files
board-viewer/.tasks/board-viewer-card-meta-fix.md
vitya 9dda6298f0 task(review): independent review done, findings filed
closes board-viewer-review

Subagent code-review against design spec + acceptance criteria found:
- 2 Major: README emoji legend stale (board-viewer-readme-emoji-fix),
  card meta missing owner pill + last-commit-marker (board-viewer-card-meta-fix)
- 6 minor/nitpick bundled as board-viewer-polish

All shipped code: 43/43 tests pass, TDD-immutability clean, secret hygiene OK.

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

2.6 KiB
Raw 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

  • (фиксируется при выполнении)

Notes

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