Files
board-viewer/.tasks/STATUS.md
vitya 4e3f964a25 chore: pause task-numbers [board-viewer-ux-task-numbers]
User defers cross-repo migration to a separate session per Rule 1+2
(touching 5 whitelisted repos' STATUS.md sits outside the autonomous
scope of this branch).

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

153 lines
10 KiB
Markdown
Raw Permalink 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_
## 🟢 [board-viewer-pointers] — pre-impl: fill Domain conventions with design-context pointers
**Status:** done
**Where I stopped:** pointer-блок вставлен в `.wiki/CLAUDE.md` Domain conventions; коммит готов, ждёт push.
**Next action:** push после approval; затем разблокировать `board-viewer-gitea-reader`.
**Branch:** master
---
## 🟢 [board-viewer-gitea-reader] — Gitea API reader → normalized task structure
**Status:** done
**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
---
## 🟢 [board-viewer-html-render] — render 5-col kanban from normalized structure
**Status:** done
**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
---
## 🟢 [board-viewer-cron-deploy] — docker-compose stack on VDS (board.kzntsv.site)
**Status:** done (code-complete; ops-ownership transferred)
**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 сохраняется в источнике. -->
---
## 🟢 [board-viewer-review] — review checkpoint (umbrella)
**Status:** done
**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
---
## 🟢 [board-viewer-readme-emoji-fix] — fix stale emoji legend in README.md
**Status:** done
**Where I stopped:** README обновлён: правильный emoji-словарь + Quick start заполнен + добавлены Deploy/Architecture секции.
**Next action:**
**Branch:** master
---
## 🟢 [board-viewer-card-meta-fix] — add owner pill + last-commit-marker to cards
**Status:** done
**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
---
## 🟢 [board-viewer-polish] — bundle of 6 minor/nitpick findings from review
**Status:** done
**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
---
## 🟢 [board-viewer-drawer-bundle-md] — fix `Failed to fetch` в drawer: bundle md-content в build-time
**Status:** done
**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. -->
---
## 🟢 [board-viewer-ux-show-slug] — показать slug на карточке (сейчас только в data-attr)
**Status:** done
**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. -->
---
## 🟢 [board-viewer-ux-full-datetime] — дата + время в явном формате (не только дата)
**Status:** done
**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 -->
---
## 🟢 [board-viewer-ux-owner-conditional] — скрывать owner-pill когда все таски одного owner'а
**Status:** done
**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. -->
---
## 🟡 [board-viewer-ux-task-numbers] — shorthand numbering (BV-12) на карточке
**Status:** paused (cross-repo migration outside autonomous scope)
**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 -->
---
## 🟢 [board-viewer-ux-done-cutoff] — фильтр / cutoff длинного done-tail
**Status:** done
**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 -->
---
## ⚪ [board-viewer-whitelist-auto-discovery] — auto-discover репо из namespace-list (zero-maintenance whitelist)
**Status:** ready (design-first, round2 candidate — не блокер round1 review)
**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 -->
---
## 🔵 [board-viewer-ux-round1-review] — review umbrella для 6 UX-fixes round1
**Status:** blocked
**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
-->