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>
3.0 KiB
3.0 KiB
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-127—renderCard()(server-side первая рендер-проходка)static/board.js:76-89—renderCard()(client-side rerender при toggle-grouping)tests/render.test.ts— добавить assertions для двух новых полейstatic/board.css— стиль для.badge.ownerесли нужно отличать визуально
Acceptance criteria
- Card showing
project_owneras 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_ownershows owner pill containing the value - card with
last_commit_isoshows date (e.g.2026-05-22) — separate from relative age
- card with
- Обе ветки (server-side
src/render.ts+ client-sidestatic/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.tsrenderCard: owner pill + date span (short YYYY-MM-DD + tooltip с full ISO)static/board.jsrenderCard синхронно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).