diff --git a/DOCS/RUNNING.md b/DOCS/RUNNING.md index f42c8f4..c36a1ca 100644 --- a/DOCS/RUNNING.md +++ b/DOCS/RUNNING.md @@ -150,6 +150,16 @@ S shutdown 4. **Нативные уведомления:** сверни/расфокусь окно GUI, доведи панель до `done/wait/error` → придёт macOS-уведомление (первый раз спросит разрешение). Клик по записи в **Event Center** фокусит панель. 5. **Авто-unread:** событие статуса в **неактивном** воркспейсе ставит ему синюю точку «не забыть»; выбор воркспейса снимает. +### SP2 — персистентный журнал событий / read-model +1. Доведи панель до `done`/`error` (или `spacesh notify --surface --state error`). В Event Center появляется запись; бейдж на `bell` (в топ-баре) растёт. +2. **Перезапусти GUI** (демон жив): лента на месте — она берётся из демона, не из памяти GUI. +3. **Холодный рестарт демона** (`spacesh shutdown`, затем снова открой GUI): лента всё ещё на месте — восстановлена из `~/.spacesh/events.json`. +4. Клик по записи (или фокус её панели) помечает её прочитанной — запись тускнеет, бейдж уменьшается. `Mark all read` гасит бейдж полностью. +5. Табы фильтруют по реальным данным: `Unread` — только непрочитанные, `Errors` — только события `error`. +6. **Явное закрытие панели не логируется** (это намеренно — пользователь сам её закрыл); в журнал попадают только сами-завершившиеся/упавшие процессы и переходы статуса `done/wait/error`. + +Файл журнала: `~/.spacesh/events.json` (кольцо на 1000 записей, атомарная запись + corrupt-backup, как у `state.json`). + ### M4 — CLI - `spacesh status --json` против живого демона; `spacesh notify` без демона → молча `exit 0`; `spacesh completions zsh` печатает скрипт. @@ -191,7 +201,7 @@ rm -rf ~/.spacesh # сбрасывает сокет, лок, state.json, - **Playwright/headless-браузер** видит только Vite-фронт (`npm run dev`, :1420) — Tauri-IPC там недоступен, живой daemon-флоу не тестируется. Полный e2e — только `npm run tauri dev` на дисплее. - **OSC 133 — только zsh** (через `ZDOTDIR`); bash/fish работают на fallback-эвристике. - **Клик по нативному уведомлению** не фокусит конкретную панель (клик по записи в Event Center — фокусит). -- **Event Center** — плоская лента (вкладки All/Unread/Errors пока без фильтра); живёт в памяти GUI, очищается при перезапуске GUI. +- **Event Center** — лента хранится в демоне и персистируется в `~/.spacesh/events.json` (переживает перезапуск GUI и холодный рестарт демона). Вкладки `Unread`/`Errors` и бейдж `bell` работают по реальным данным (флаги прочтения на уровне события). По-прежнему не реализованы: каналы Telegram/MAX в футере Event Center (SP5), а также `search`/`settings` и меню аккаунта в топ-баре. - **Статус эфемерен** (work/wait/done/error/idle) — не персистится; после холодного рестарта демона панель `stopped`, статус `idle`. - Авторизация / личный кабинет / внешние нотификации (Telegram/MAX) / зум / поиск по скроллбэку / diff-вьюер / remote — **не реализованы** (M5/M6/auth, см. `DOCS/MAIN.md`).