Веб под модули: состояние модулей, «Обзор», адреса модулей (#98) #100

Merged
aep merged 19 commits from feat/98-web-modules into main 2026-10-24 14:57:21 +03:00
Owner

Closes #98. #99 (переименование) слит, живой хаб переключён; ветка перебазирована на main (33abf9c), проверки перегнаны: pytest 1002, vitest 572, lint, openspec — зелёные.

Веб под модули: change openspec/changes/web-modules/, план docs/superpowers/plans/2026-10-24-web-modules.md, аудит — design.md.

Что сделано

  • Состояние модуля — данные в контракте HubModule (status, title, Summary); блок рисует ядро: строка на модуль (агент, «данные на … · все проекты / проект», ошибка, значок обновления, событие пакета), значки в свёрнутой панели, сводная точка на узком экране.
  • Ядро отслеживает агентов и пакеты: один опрос GET /agents, один трекер пакетов (web/src/shell/activity/) вместо RefreshProvider модуля jira; подхват пакетов модуля любого автора (автообновления и MCP видны); блокирует кнопку только пакет своего обновления.
  • Навигация группами по модулям + страница «Обзор» (главная /app/): карточки модулей и последние пакеты проекта.
  • Адреса модулей /app/jira/board|issues|feed, /app/jira/issues/{key}, /app/wiki; прежние перенаправляют; / и /links хаба → /app/.
  • API: jira_synced_at в проекте, module и ?module= у пакетов, batches по модулям в POST/PATCH /projects.
  • Граница ядра и модулей в вебе проверяется тестами (импорты, пересечение классов CSS, уникальность адресов); типы jira и closed.ts — в модуле; форматтеры дат в ядре; fact_status из веба удалён; div.wiki разметки Jira → .jira-markup (чинит заголовки «Вики»).
  • Страницы: «Вики» открывает корень, понятная шапка, дерево сохраняет раскрытие; «Задачи» без горизонтальной прокрутки страницы, просрочка текстом; «Новый проект» с группами полей по модулям; вторичные кнопки обновления в шапках; «Команды хаба»; модальная выезжающая панель.

Проверки

uv run pytest -q — 1002 passed; npm run lint && npm test — 572 passed; npm run e2e — 45 passed (screens под SCREENS=1 — 93 passed); openspec validate web-modules --strict — valid.

Rulings I made

Решения агента без обсуждения — design.md, раздел «Decisions made without discussion»: 1–14 — спека (сессия), 15–65 — контроллер и исполнители (R-1…R-48). Главные: R-2 (#19) база — feat/97-sdlc-rename; R-10…R-16 (#24–#30) устройство трекера; R-17 (#31) 409 при чужом пакете; R-18…R-24 (#32–#38) панель и адреса (список под окном карточки — проект из адреса карточки); R-25…R-28 (#39–#42) «Обзор» (опрос пакетов 15 с); R-29, R-30 (#43, #44) проверка номера доски окном; R-31…R-35 (#45–#52) страницы (вики по ширине контейнера, overflow-x у таблицы, scrollbar-gutter на html); R-39…R-48 (#56–#65) финальная волна (порядок сводной точки error > busy > offline > online, warning ��ажнее offline, M-9 — известное ограничение).

Находки

Исправлено в ветке: T2.3, T3.I1, T3.1, T3.3, T3.4, T4.2, T5.1, T5.2, T5.4, T6.1, T6.2, T7.I1, T7.I2, T7.1, T7.2, T8.3, I-1…I-4, M-1…M-8, M-10, M-11.
Deferred (уйдут в follow-up при закрытии): T1.1, T2.1, T4.1, T5.3, T7.3, T7.5, T7.7, T7.8, T8.1, T8.2, M-9 (jira_synced_at сбрасывается после создания проекта, пока не пройдёт полное обновление), M-12 (опрос /batches раз в 15 с на «Обзоре»), O-3 (редкий флейк теста смены проекта), O-4 (сверить закрываемые маркеры follow-ups с текстами issues), заголовок «Обзор» без верхнего отступа (замечено на скриншоте).

Закрываемые follow-ups (сверить при закрытии)

Подтверждены кодом: #90 T7.5/T7.6; #73 M-1, M-2, M-4…M-7; #94 T4.1, T4.2, T4.4, T4.5, T10.1–T10.3, T10.6, T10.7; #68 N-1, N-2, M-2, M-14, T5.3; #35 T3.1/M-10 (уже было). Не сверены с текстами issues: #35 M-9, O-16; #68 M-12, M-17; #73 M-3; #94 T10.4, T10.5. Остаются открытыми: #68 M-18, #94 T9.1.

После слияния (владелец)

make web и перезапуск хаба (launchctl kickstart -k gui/$(id -u)/ru.aepif.sdlc-hub). MCP не менялся.

🤖 Generated with Claude Code

Closes #98. #99 (переименование) слит, живой хаб переключён; ветка перебазирована на `main` (33abf9c), проверки перегнаны: pytest 1002, vitest 572, lint, openspec — зелёные. Веб под модули: change `openspec/changes/web-modules/`, план `docs/superpowers/plans/2026-10-24-web-modules.md`, аудит — design.md. ## Что сделано - **Состояние модуля — данные в контракте `HubModule`** (`status`, `title`, `Summary`); блок рисует ядро: строка на модуль (агент, «данные на … · все проекты / проект», ошибка, значок обновления, событие пакета), значки в свёрнутой панели, сводная точка на узком экране. - **Ядро отслеживает агентов и пакеты**: один опрос `GET /agents`, один трекер пакетов (`web/src/shell/activity/`) вместо `RefreshProvider` модуля jira; подхват пакетов модуля любого автора (автообновления и MCP видны); блокирует кнопку только пакет своего обновления. - **Навигация группами по модулям + страница «Обзор»** (главная `/app/`): карточки модулей и последние пакеты проекта. - **Адреса модулей** `/app/jira/board|issues|feed`, `/app/jira/issues/{key}`, `/app/wiki`; прежние перенаправляют; `/` и `/links` хаба → `/app/`. - **API**: `jira_synced_at` в проекте, `module` и `?module=` у пакетов, `batches` по модулям в `POST/PATCH /projects`. - **Граница ядра и модулей в вебе** проверяется тестами (импорты, пересечение классов CSS, уникальность адресов); типы jira и `closed.ts` — в модуле; форматтеры дат в ядре; `fact_status` из веба удалён; `div.wiki` разметки Jira → `.jira-markup` (чинит заголовки «Вики»). - **Страницы**: «Вики» открывает корень, понятная шапка, дерево сохраняет раскрытие; «Задачи» без горизонтальной прокрутки страницы, просрочка текстом; «Новый проект» с группами полей по модулям; вторичные кнопки обновления в шапках; «Команды хаба»; модальная выезжающая панель. ## Проверки `uv run pytest -q` — 1002 passed; `npm run lint && npm test` — 572 passed; `npm run e2e` — 45 passed (screens под `SCREENS=1` — 93 passed); `openspec validate web-modules --strict` — valid. ## Rulings I made Решения агента без обсуждения — `design.md`, раздел «Decisions made without discussion»: 1–14 — спека (сессия), 15–65 — контроллер и исполнители (R-1…R-48). Главные: R-2 (#19) база — `feat/97-sdlc-rename`; R-10…R-16 (#24–#30) устройство трекера; R-17 (#31) 409 при чужом пакете; R-18…R-24 (#32–#38) панель и адреса (список под окном карточки — проект из адреса карточки); R-25…R-28 (#39–#42) «Обзор» (опрос пакетов 15 с); R-29, R-30 (#43, #44) проверка номера доски окном; R-31…R-35 (#45–#52) страницы (вики по ширине контейнера, `overflow-x` у таблицы, `scrollbar-gutter` на `html`); R-39…R-48 (#56–#65) финальная волна (порядок сводной точки error > busy > offline > online, `warning` ��ажнее offline, M-9 — известное ограничение). ## Находки Исправлено в ветке: T2.3, T3.I1, T3.1, T3.3, T3.4, T4.2, T5.1, T5.2, T5.4, T6.1, T6.2, T7.I1, T7.I2, T7.1, T7.2, T8.3, I-1…I-4, M-1…M-8, M-10, M-11. Deferred (уйдут в follow-up при закрытии): T1.1, T2.1, T4.1, T5.3, T7.3, T7.5, T7.7, T7.8, T8.1, T8.2, M-9 (`jira_synced_at` сбрасывается после создания проекта, пока не пройдёт полное обновление), M-12 (опрос `/batches` раз в 15 с на «Обзоре»), O-3 (редкий флейк теста смены проекта), O-4 (сверить закрываемые маркеры follow-ups с текстами issues), заголовок «Обзор» без верхнего отступа (замечено на скриншоте). ## Закрываемые follow-ups (сверить при закрытии) Подтверждены кодом: #90 T7.5/T7.6; #73 M-1, M-2, M-4…M-7; #94 T4.1, T4.2, T4.4, T4.5, T10.1–T10.3, T10.6, T10.7; #68 N-1, N-2, M-2, M-14, T5.3; #35 T3.1/M-10 (уже было). Не сверены с текстами issues: #35 M-9, O-16; #68 M-12, M-17; #73 M-3; #94 T10.4, T10.5. Остаются открытыми: #68 M-18, #94 T9.1. ## После слияния (владелец) `make web` и перезапуск хаба (`launchctl kickstart -k gui/$(id -u)/ru.aepif.sdlc-hub`). MCP не менялся. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 19 commits 2026-10-24 14:33:57 +03:00
Change web-modules по аудиту веба 24.10.2026 (#98).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
aep force-pushed feat/98-web-modules from 3cb2b0f6db to 76b60e5397 2026-10-24 14:42:16 +03:00 Compare
aep changed target branch from feat/97-sdlc-rename to main 2026-10-24 14:42:20 +03:00
aep merged commit 93bb968235 into main 2026-10-24 14:57:21 +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#100
No description provided.