Beta checkpoint: стабилизация vault, UX и backlog - #1
Merged
Merged
Conversation
Плоский список топ-5+кандидаты подталкивал держать в плане задачи, которые не хочется делать сегодня, и не давал способа их убрать без архивации. Теперь три колонки: - Кандидаты — пул по алгоритму §7.4 фиксируется на день (system/day_plan.yaml), видно 5 из N; «→ пропустить» тут же подставляет следующего из пула, skip_count задачи копится на всю жизнь задачи - Колода на сегодня — осознанный выбор, жёсткий лимит 5 (WIP) + мягкое предупреждение при превышении дневной квоты часов - Сделано сегодня — как было, источник истины остаётся day_log Кнопки ✓/🗄 убраны из строк колонок — только в боковой панели задачи, чтобы список кандидатов не подталкивал закрывать задачу раньше времени. Рефлексия: system/plan_history.yaml — идемпотентный дневной снимок пула/колоды/пропусков (тот же паттерн, что wheel_history). Банер раз в ~7 дней, /api/plan/reflection считает pick-rate, completion-rate, кто систематически откладывается (skip_count), что идёт «как по маслу». Карточки задач получили счётчики артефактов (блоки заметок) и сессий — не только время, как и просили. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Реальный причина: у #panel z-index:60, у #cmdBar — 70, а у .modal было 50 — боковая панель и командная строка визуально и по hit-testing перекрывали модалку. Крестик/кнопка «выглядели» кликабельными (модалка рисовалась поверх по DOM-порядку в некоторых раскладках), но реальный клик мыши попадал в элемент под ней (.pmeta панели) — подтверждено через elementFromPoint в точке кнопки. JS .click() в моих собственных тестах эту проблему маскировал: синтетический клик не проходит через hit-testing и всегда «работает», в отличие от настоящего клика мышью. Поднял .modal до z-index:200 (выше всех слоёв интерфейса) + добавил запасные пути закрытия: клик по тёмному фону, Esc, и reflAck закрывает модалку в finally даже при сетевой ошибке — чтобы не залипала молча. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ctrl+F5 не помогало пользователю увидеть свежую вёрстку — десктоп- приложение живёт в одной вкладке браузера неделями, диск-кэш ОС не всегда честно ревалидирует статику даже при жёстком обновлении. / теперь отдаётся не через StaticFiles напрямую, а маленьким роутом, который подставляет ?v=<mtime style.css/app.js> в href/src — версия меняется сама с каждой правкой файла, руками ничего обновлять не надо. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Раньше ярлык всегда пытался забиндить 8765 и блокировал консоль на foreground-процессе — повторный клик при уже запущенном сервере падал с «порт занят», а закрытие окна лаунчера убивало сервер. Теперь три ветки: - сервер уже поднят и отвечает на /api/state -> просто открыть браузер - порт занят, но не отвечает (завис/чужой процесс) -> освободить и поднять заново - порт свободен -> обычный холодный старт (venv/зависимости при первом разе) Сервер стартует отдельным (свёрнутым) процессом через Start-Process, не в этом же окне — лаунчер дожидается готовности (опрос /api/state до 20 секунд) и завершается, сервер живёт своей жизнью независимо от окна лаунчера. Проверено вручную: холодный старт, тёплый повторный клик (без дублей процесса), восстановление после зависшего процесса на порту. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…стные формулировки
Корневая причина (глубже прошлого z-index фикса): .modal{display:flex}
в обычном (не !important) правиле побеждает браузерный UA-стиль
[hidden]{display:none} той же специфичности — авторские правила всегда
берут верх над UA-стилями независимо от специфичности. Значит .hidden
в JS честно становился true, а элемент фактически НИКОГДА не скрывался
(display оставался flex) — крестик и зелёная кнопка были не «мёртвыми»,
модалка просто не могла закрыться в принципе, что бы ни нажималось.
Исправлено: display:none по умолчанию, flex — только через
.modal:not([hidden]), без завязки на выигрыш в каскаде.
Заодно устранена путаница из вопроса пользователя «что вообще делать
с этим окном»: раньше «не сейчас» и крестик ничего не запоминали —
баннер вылезал заново при каждом действии, а единственный работающий
выход (зелёная кнопка) назывался «Разобрал(-a)», намекая на обязательную
работу. Теперь любой способ уйти (крестик/фон/Esc/«не сейчас»/кнопка)
равнозначен и тихо откладывает на неделю; текст explicitly говорит:
это необязательная витрина цифр, а не форма для заполнения.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Освобождать WIP после done, дедлайн ≤3д, hard absence, sanitize id, path-safe restore и регрессионные тесты. Co-authored-by: Cursor <cursoragent@cursor.com>
Убрать запуск бота из main, вынести python-telegram-bot в optional, пометить канал в roadmap. Лаунчер предпочитает pwsh. Co-authored-by: Cursor <cursoragent@cursor.com>
Подхватывать правки params.yaml без рестарта, писать файлы через temp+replace, резать k_history, ловить циклы depends_on и 3-й возврат в inbox. Co-authored-by: Cursor <cursoragent@cursor.com>
Редактируемый заголовок, строка ввода, Inbox/сфера, счётчик «в уме» в state, подсказки похожих живых задач. Co-authored-by: Cursor <cursoragent@cursor.com>
chudodey
marked this pull request as ready for review
August 1, 2026 10:39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что изменилось
lifeбезопасно заменена аналитическими/служебными сферами;0.1.0b1.Зачем
Реальный месячный UX-аудит показал, что продукт уже перерос исходный MVP. Эта ветка сохраняет текущий рабочий результат перед следующей фазой: локальная Ollama, классификация свободного дампа и очистка Плана.
Влияние
data/не входит в Git;Проверки
ruff check src tests main.py scriptspytest -q— 95 passed, 1 skippedpython scripts/backlog.py --checknode --check web/static/app.js0.1.0b1Beta-тег
v0.1.0-beta.1следует поставить после слияния PR.