Закрытые задачи: скрыть в списке, приглушить на доске; без статуса по факту в приложении (#57) #58

Merged
aep merged 7 commits from feat/57-hide-closed into main 2026-10-17 10:57:45 +03:00
Owner

Closes #57

Что сделано

  • Хаб: настройка closed_statuses (по умолчанию ["Готово", "Снято"], агенту не передаётся; не-список — 422); GET /issues?hide_closed=1 — без задач в закрытых статусах (задача без статуса не закрыта, пустой набор ничего не скрывает).
  • Список «Задачи»: флажок «скрыть закрытые», по умолчанию включён; снятый — closed=1 в адресе; выбранный в «Статус Jira» закрытый статус скрытие отменяет. Колонки и фильтра «Статус по факту» нет.
  • Доска: карточки закрытых задач и стрелки, у которых закрыт хоть один конец, приглушены (opacity .4), под указателем / с фокусом — в полную яркость. Модель, выборка, критический путь, проблемы, golden-эталоны не менялись.
  • Карточка задачи: без статуса по факту в шапке, заметках и форме (сохранение его не трогает); «просрочено» — по статусу Jira.
  • Спека: openspec/changes/hide-closed/; план: docs/superpowers/plans/2026-10-17-hide-closed.md.

Статус по факту остаётся в базе, API, MCP, status_labels, transitions_map — полное удаление отдельной задачей.

Проверки

  • make check: pytest 424 passed, vitest 316 passed, lint чисто
  • cd web && npm run e2e: 24 passed
  • Финальное ревью ветки (opus): Critical 0, Important 0, Minor 6

Rulings I made

  • R-1 (design #8) — e2e-шаг флажка: click() + not.toBeChecked() вместо uncheck() (адрес меняется навигацией асинхронно) — цена ошибки: нет.
  • R-2 (design #9) — «PUT заметки не шлёт fact_status» закрыт существующим тестом сохранения (фикстура с fact_status, тело сравнивается целиком) — цена ошибки: нет.
  • R-3 (design #10) — в пустой заметке 4 прочерка вместо 5 (полей стало четыре) — цена ошибки: нет.
  • R-4 (design #11) — тест приглушения считает закрытые по статусам выборки (в фикстуре есть AURORA-9006 «Готово») — цена ошибки: нет.
  • R-5 (design #12) — M-1 и M-2 исправлены, а не отложены: README и спека противоречили поведению — цена ошибки: нет.
  • Решения спеки без обсуждения — design.md, «Decisions made without discussion» #1–#7.

Находки

Маркер Суть Статус
M-1 README описывал статус по факту в карточке fixed 212aebf
M-2 формат даты в сценарии спеки fixed 212aebf
M-3 лишний запрос с hide_closed=1 до прихода /settings при закрытом статусе в адресе deferred
M-4 после правки closed_statuses открытая вкладка решает по старому набору до перезагрузки deferred
M-5 тест «настройки позже» не проверяет первый вызов с hide_closed=1 deferred
M-6 рулинги исполнения не были в design.md fixed 212aebf

После merge

make web и перезапуск хаба (launchctl kickstart -k gui/$(id -u)/ru.aepif.jira-hub) — владелец; ключ closed_statuses появится сам при открытии базы.

🤖 Generated with Claude Code

Closes #57 ## Что сделано - **Хаб:** настройка `closed_statuses` (по умолчанию `["Готово", "Снято"]`, агенту не передаётся; не-список — 422); `GET /issues?hide_closed=1` — без задач в закрытых статусах (задача без статуса не закрыта, пустой набор ничего не скрывает). - **Список «Задачи»:** флажок «скрыть закрытые», по умолчанию включён; снятый — `closed=1` в адресе; выбранный в «Статус Jira» закрытый статус скрытие отменяет. Колонки и фильтра «Статус по факту» нет. - **Доска:** карточки закрытых задач и стрелки, у которых закрыт хоть один конец, приглушены (`opacity .4`), под указателем / с фокусом — в полную яркость. Модель, выборка, критический путь, проблемы, golden-эталоны не менялись. - **Карточка задачи:** без статуса по факту в шапке, заметках и форме (сохранение его не трогает); «просрочено» — по статусу Jira. - Спека: `openspec/changes/hide-closed/`; план: `docs/superpowers/plans/2026-10-17-hide-closed.md`. Статус по факту остаётся в базе, API, MCP, `status_labels`, `transitions_map` — полное удаление отдельной задачей. ## Проверки - `make check`: pytest 424 passed, vitest 316 passed, lint чисто - `cd web && npm run e2e`: 24 passed - Финальное ревью ветки (opus): Critical 0, Important 0, Minor 6 ## Rulings I made - R-1 (design #8) — e2e-шаг флажка: `click()` + `not.toBeChecked()` вместо `uncheck()` (адрес меняется навигацией асинхронно) — цена ошибки: нет. - R-2 (design #9) — «PUT заметки не шлёт `fact_status`» закрыт существующим тестом сохранения (фикстура с `fact_status`, тело сравнивается целиком) — цена ошибки: нет. - R-3 (design #10) — в пустой заметке 4 прочерка вместо 5 (полей стало четыре) — цена ошибки: нет. - R-4 (design #11) — тест приглушения считает закрытые по статусам выборки (в фикстуре есть AURORA-9006 «Готово») — цена ошибки: нет. - R-5 (design #12) — M-1 и M-2 исправлены, а не отложены: README и спека противоречили поведению — цена ошибки: нет. - Решения спеки без обсуждения — `design.md`, «Decisions made without discussion» #1–#7. ## Находки | Маркер | Суть | Статус | |---|---|---| | M-1 | README описывал статус по факту в карточке | fixed 212aebf | | M-2 | формат даты в сценарии спеки | fixed 212aebf | | M-3 | лишний запрос с `hide_closed=1` до прихода `/settings` при закрытом статусе в адресе | deferred | | M-4 | после правки `closed_statuses` открытая вкладка решает по старому набору до перезагрузки | deferred | | M-5 | тест «настройки позже» не проверяет первый вызов с `hide_closed=1` | deferred | | M-6 | рулинги исполнения не были в design.md | fixed 212aebf | ## После merge `make web` и перезапуск хаба (`launchctl kickstart -k gui/$(id -u)/ru.aepif.jira-hub`) — владелец; ключ `closed_statuses` появится сам при открытии базы. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 7 commits 2026-10-17 10:56:33 +03:00
aep merged commit dde40973bd into main 2026-10-17 10:57:45 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: aep/sdlc-hub#58
No description provided.