Files
board-viewer/.tasks/STATUS.md

169 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Task Board
_Updated: 2026-05-22_
## 🟢 [#203 board-viewer-pointers] — pre-impl: fill Domain conventions with design-context pointers
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** pointer-блок вставлен в `.wiki/CLAUDE.md` Domain conventions; коммит готов, ждёт push.
**Next action:** push после approval; затем разблокировать `board-viewer-gitea-reader`.
**Branch:** master
---
## 🟢 [#201 board-viewer-gitea-reader] — Gitea API reader → normalized task structure
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** TaskRecord контракт реализован (parser+gitea+reader+config); 25 тестов; typecheck clean. Тесты используют 3 реальных STATUS.md fixture'а.
**Next action:** разблокировать html-render — потребляет `readBoard(client, repos) → TaskRecord[]`.
**Branch:** master
---
## 🟢 [#202 board-viewer-html-render] — render 5-col kanban from normalized structure
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** render+cli+static готовы; 17 render тестов; smoke-verified против real Gitea (78 records, 4 repos), both toggle modes работают, drawer lazy-fetch'ит markdown.
**Next action:** разблокировать cron-deploy — артефакт `dist/index.html + dist/static/` готов для systemd+traefik.
**Branch:** master
---
## 🟢 [#199 board-viewer-cron-deploy] — docker-compose stack on VDS (board.kzntsv.site)
**Status:** done (code-complete; ops-ownership transferred)
**Created:** 2026-05-22
**Where I stopped:** deploy/ полностью написан (compose + Dockerfile.build + nginx.conf + auth.toml.example + .env.example + README). Compose syntax валидируется. Изменён mechanism: docker stack вместо systemd timer (user choice).
**Next action:**
**Branch:** master
<!-- closed-by: OpeItcLoc03@DESKTOP-NSEF0UK / 2026-05-22 / note: code-complete по acceptance dev-задачи (артефакты deploy/ написаны, compose валидирован, smoke-rendered против real Gitea). Ops-handoff (DNS / build+push / VDS bootstrap / smoke на board.kzntsv.site) перенесён в .admin/.tasks/[board-viewer-vds-deploy] per workshop CLAUDE.md §5. Per-task file оставлен — decisions log сохраняется в источнике. -->
---
## 🟢 [#206 board-viewer-review] — review checkpoint (umbrella)
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** independent review выполнен subagent'ом (clean context, не имплементер). 43/43 тестов pass, secret hygiene clean, TDD-immutability чисто. 2 Major + 6 minor/nitpick findings зафайлены как follow-up таски ниже.
**Next action:** взять одну из ⚪ fix-тасок (readme-emoji или card-meta).
**Branch:** master
---
## 🟢 [#205 board-viewer-readme-emoji-fix] — fix stale emoji legend in README.md
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** README обновлён: правильный emoji-словарь + Quick start заполнен + добавлены Deploy/Architecture секции.
**Next action:**
**Branch:** master
---
## 🟢 [#198 board-viewer-card-meta-fix] — add owner pill + last-commit-marker to cards
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** owner pill + short ISO date (`YYYY-MM-DD` + tooltip с full ISO) рендерятся в обеих ветках (`render.ts` + `board.js`). 4 новых TDD-теста; smoke-verified.
**Next action:**
**Branch:** master
---
## 🟢 [#204 board-viewer-polish] — bundle of 6 minor/nitpick findings from review
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** все 6 items закрыты в одной сессии. 49 тестов pass (+2 от polish: M2 future-ts, M4 status-filter markup). Smoke-verified: status pill click фильтрует cards.
**Next action:**
**Branch:** master
---
## 🟢 [#200 board-viewer-drawer-bundle-md] — fix `Failed to fetch` в drawer: bundle md-content в build-time
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** TaskRecord.md_content bundled в build-time через `client.getFile(.tasks/<slug>.md)`. Drawer читает `recordsBySlug.get(slug).md_content` вместо fetch — 0 runtime запросов к git.kzntsv.site/raw. Fallback на status-block dl когда md=null. 3 новых reader-теста + 1 render-тест.
**Next action:** ops redeploy на VDS (см. .admin/[board-viewer-redeploy-ux-round1]).
**Branch:** master
<!-- closed-by: OpeItcLoc03 / 2026-05-22 / note: code-complete (52→56 tests pass, typecheck clean). Live smoke (board.kzntsv.site после redeploy + DevTools network 0 git.kzntsv.site/raw hits) — ops-side. -->
---
## 🟢 [#211 board-viewer-ux-show-slug] — показать slug на карточке (сейчас только в data-attr)
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** `<code class="card-slug">{slug}</code>` рендерится в обеих ветках (`render.ts` + `static/board.js`). CSS — monospace, dim, под `card-title`. 1 новый render-тест.
**Next action:** ops redeploy.
**Branch:** master
<!-- closed-by: OpeItcLoc03 / 2026-05-22 / note: 56 tests pass, typecheck clean. Visual smoke — после redeploy. -->
---
## 🟢 [#208 board-viewer-ux-full-datetime] — дата + время в явном формате (не только дата)
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** `formatMskDateTime` (UTC+3, no-DST) в `render.ts` + `static/board.js`. Карточка показывает `YYYY-MM-DD HH:MM МСК`. Tooltip с full ISO. Relative age оставлен в card-meta (тоненькая строка). 2 новых теста (basic + midnight rollover).
**Next action:** ops redeploy.
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .workshop / 2026-05-22 / trigger: user-ux-feedback-round1 -->
---
## 🟢 [#209 board-viewer-ux-owner-conditional] — скрывать owner-pill когда все таски одного owner'а
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** `distinctOwner(records)` pre-scan: единственный owner → pill убирается со всех карточек, в header добавляется `<span class="owner-summary">Owner: X</span>`; 2+ owners → pill возвращается на карточки. Поведение симметрично в `render.ts` и `static/board.js` (через `SOLO_OWNER` constant). 4 новых render-теста (mono / multi / mono-summary / multi-omits-summary).
**Next action:** ops redeploy + verify auth.toml whitelist на VDS.
**Branch:** master
<!-- closed-by: OpeItcLoc03 / 2026-05-22 / note: 56 tests pass, typecheck clean. -->
---
## 🟡 [#212 board-viewer-ux-task-numbers] — shorthand numbering (BV-12) на карточке
**Status:** paused (cross-repo migration outside autonomous scope)
**Created:** 2026-05-22
**Where I stopped:** (paused 2026-05-22 — user choice: defer до отдельной сессии. 4 design-вопроса остаются: scope per-repo/global, source-of-truth `<!-- num: ... -->` vs auto-derive, format BV-12 vs T-001, ретроактивно или нет. Recommendations в `board-viewer-ux-task-numbers.md` — все 4 имеют preferred answer.)
**Next action:** Возобновить в отдельной user-session. Decision-tree: либо «board-viewer-impl-only» (TDD parser+render+badge, ретроактивная нумерация — отдельная chore-таска), либо «full cross-repo» (impl + 5 whitelisted repos retro-numbering, отдельные commit'ы per-repo).
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .workshop / 2026-05-22 / trigger: user-ux-feedback-round1 -->
---
## 🟢 [#207 board-viewer-ux-done-cutoff] — фильтр / cutoff длинного done-tail
**Status:** done
**Created:** 2026-05-22
**Where I stopped:** source неизменен (✓). Render-side cutoff: done column sort'ится by `last_commit_iso desc`, первые 10 видимы, rest `data-overflow="true"` (CSS hides), внизу column'а button `<button class="done-expander">show N more</button>`. Click → toggle `col.show-overflow` + button text `collapse`. Non-done колонки не trozhуются. 4 новых render-теста (overflow attr / expander / no-expander / non-done).
**Next action:** ops redeploy.
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .workshop / 2026-05-22 / trigger: user-ux-feedback-round1 -->
---
## ⚪ [#213 board-viewer-whitelist-auto-discovery] — auto-discover репо из namespace-list (zero-maintenance whitelist)
**Status:** ready (design-first, round2 candidate — не блокер round1 review)
**Created:** 2026-05-22
**Where I stopped:** (not started — 6 design-вопроса: schema mergeable namespaces+repos, filter `.tasks/STATUS.md` HEAD-probe, API endpoint org-vs-user fallback, pagination, error handling, exclusions defer'нуть. Recommendations внутри `board-viewer-whitelist-auto-discovery.md`.)
**Next action:** Quick-win параллельно — `~/projects/.admin/.tasks/board-viewer-expand-whitelist.md` (ручное расширение auth.toml на VDS, no code-change). Эта код-таска — long-term для zero-maintenance. Resolve 6 design-вопросов (single user-session) → TDD impl `gitea.ts listOrgRepos/hasStatusMd` + `config.ts namespaces+repos merge` + `reader.ts pre-resolve repo-list`. Если дилемма — `.workshop/.brainstorm/board-viewer-whitelist-auto-discovery.md`.
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .workshop / 2026-05-22 / trigger: user-ux-feedback-round1-followup -->
---
## 🔵 [#210 board-viewer-ux-round1-review] — review umbrella для 6 UX-fixes round1
**Status:** blocked
**Created:** 2026-05-22
**Blocker:** board-viewer-ux-task-numbers (1/6 round1-fixes paused — cross-repo migration требует user-decision)
**Where I stopped:** (not started — открывать когда все 6 импл-таск 🟢)
**Next action:** Independent review subagent'ом (clean context, не имплементер) — TDD-immutability (тесты не переписаны под impl), output-correctness (smoke на live board.kzntsv.site после redeploy), regression check (49 существующих тестов остаются pass).
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .workshop / 2026-05-22 / trigger: workshop-CLAUDE.md §4 mandatory review umbrella -->
---
<!--
Status legend:
🔴 Active — only one at a time
🟡 Paused — in progress, resumable
⚪ Ready — defined, not started
🟢 Done — kept until merged
🔵 Blocked — waiting on external input
-->