| 2026-09-20 |
feat: страница «Статистика» с периодами и сравнением + справка «О саде» (ТЗ 0.10)
...
- Страница /stats: день/неделя/месяц с листанием стрелками ‹ ›; метрики
(закрытые задачи, XP, созданные задачи, часы, «дни с результатом») — каждая
GnMetricCard со сравнением с предыдущим аналогичным периодом (дельта + %)
- Анимированный график закрытых задач по бакетам периода (24 часа / 7 дней /
дни месяца), «волна» scaleY при смене периода, подписи через Intl по локали
- Данные — из GET /api/xp/events и списка задач, без новых эндпоинтов
- Сад: кнопка «Как это работает» → GnModal с объяснением механик
- Локали ru/en/uk (stats.*, garden.about*), ТЗ 0.10
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
14 hours ago
|
feat: прокачка геймификации — тиры ачивок, редкие растения, история (ТЗ 0.9)
...
- Редкие растения: редкость решается при закрытии по весу задачи (epic — только
крупные, rare — шанс растёт с XP), хранится в xp_events.rarity; в саду —
золото + бейдж (sparkle/crown), PATCH отдаёт X-Plant-Rarity
- Связка с «3 вариантами» (3.9): PATCH принимает earned_via="options",
xp_events.via_options, заголовок X-Options-Close; тост «выбрал и сделал»
- Празднование: «золотое» конфетти (56 частиц) на редкости/крупные закрытия,
тост с припиской о редком растении
- GET /api/xp/events — события начисления (для сада: редкости, счётчик, история)
- Сад: названия уровней (ботанические звания), «последний росток», история
закрытий по месяцам (12 мес), ачивки с тирами I/II/III + новые исследователи
(Спринтер, Разносторонний, Марафонец, Дедлайн-босс, Выбрал и сделал)
- Локали ru/en/uk, ТЗ 0.9 (п. 3.13 дополнен)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
14 hours ago
|
feat: геймификация — XP, уровни, сад и ачивки (ТЗ 0.8, п. 3.13)
...
Награда за закрытие задачи, принцип «только позитив» (без стриков и сгорания):
- XP = 10 база + бонус за приоритет (0–15) + бонус за оценку времени (0–15),
один раз на задачу (xp_events, UniqueConstraint); удаление задачи не отнимает
- PATCH /api/tasks/{id} при первом закрытии ставит заголовок X-Earned-XP,
фронт ловит его и празднует: конфетти + тост «+N XP» с похвалой
- GET /api/xp — сводка (total_xp, уровень, прогресс)
- Сад (/garden): растение за каждую закрытую задачу + уровень + ачивки-вехи
(1/10/50 задач, уровни 5/10, регулярная, закрытый проект) с прогрессом
- celebrateEarned() в TaskView/ListView/ProjectView/OptionsView; локали ru/en/uk
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
feat(frontend): «Обзор» дашборда — статистика вместо дублей
...
- Убраны строки «Стек входящих» и «В работе» (и так видны в секциях и шапке)
- Добавлены: «Всего задач», «Выполнено за месяц» (done_at за последние
30 дней), «Выполнено всего»; отложено и просрочено остались
- Локали home.totalTasks/doneMonth/doneAll (ru/en/uk)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
feat(frontend): главная страница на / вместо /stack
...
StackView теперь на path '/', пункт навигации ведёт на /;
/stack оставлен как redirect на / для старых ссылок и PWA-кэша.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
feat(frontend): переименование в GNexus Tasks, тайтлы страниц
...
- Сервис «gntodo» → «GNexus Tasks»: brand топбара, kicker шапок видов,
subtitle навигации (ru/en/uk), index.html, PWA-манифест (short_name Tasks)
- taskui: APP_NAME + setPageTitle(); тайтлы через meta.title роутов
(afterEach в main.ts) — «{страница} — GNexus Tasks»
- TaskView/ProjectView уточняют тайтл после загрузки (watchEffect):
заголовок задачи / имя проекта
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
fix(frontend): убрать дёргание главной при фоновом опросе
...
Тик опроса (5 с) включал loading — при пустом стеке мигал скелетон —
и заменял массивы задач/проектов новыми объектами, вызывая полную
перерисовку дашборда и стека. Теперь фоновый тик тихий: скелетон
только при первой загрузке, массивы не трогаются, если не изменились
(сверка JSON), поэтому между реальными изменениями DOM не мутирует.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
feat(frontend): дашборд на главной — совмещён со стеком
...
- Dashboard.vue: «В работе», «Просрочено», дедлайны недели, «Следующие»
(to_do по приоритету, топ-5) + сайдбар (сводка статусов, активные проекты)
- StackView — главная «Главное»: дашборд сверху, стек снизу, один список
задач на оба блока (Promise.all задач и проектов)
- Нав-пункт «Главная» (ph-house) вместо «Стек входящих»
- Локали home.* (ru/en/uk); ТЗ 0.7 — новый п. 3.7, перенумерация 3.8–3.11
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
| 2026-09-19 |
Иконки во всех бейджах; approve — success; quick-add вертикально
...
- TaskBadges: иконки у всех меток — статус (квадрат/полукруг/галка/
крест/пауза), приоритет (флаг), оценка (таймер), бюджет (монеты),
теги (ярлык); предложение ИИ на стеке — бейджи с иконками
(proposalItems возвращает {icon, label})
- «Да, всё верно» на стеке — success вместо accent
- quick-add: вертикальная компоновка, текстовое поле на всю ширину
(снят max-width:600px у .form-group кита)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
15 hours ago
|
Иконки заголовков карточек — ещё темнее (#3b4261)
...
Заодно убраны scoped-дубли .card-title-icon в TaskView/ProjectView
(var(--accent) перебивал глобальный тёмный цвет)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Страница задачи: чипы-переходы на родителя и проект
...
- Подзадача: чип «↰ родитель» в шапке ведёт на родительскую задачу
- Задача с проектом: чип «📁 проект» ведёт на страницу проекта
(дублирующий некликабельный бейдж проекта из строки бейджей убран)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Убираем дерево задач; иконки заголовков — тёмные
...
- Удалены TreeView (роут /tree и пункт навигации) и TaskTree;
переключатель «Список | Дерево» на странице проекта убран —
остаётся список карточек
- В локалях почищены мёртвые ключи дерева (nav.tree, viewList/
viewTree, tree.* кроме addSubtask/promptSubtask)
- Иконки в заголовках карточек — тёмный #565f89 вместо фиолетового
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Добавление задач — полная форма; подзадачи карточками
...
- TaskForm умеет создавать: проп task опционален, дефолты из
projectId/parentId (create + PATCH, тост «Создано — попала в стек»)
- Подзадача на странице задачи — полная форма в drawer (было
окно-промпт одной строкой)
- Новая задача из проекта — полная форма в drawer
- В стеке кнопка «Новая задача» (шапка) открывает полную форму;
quick-add одной строкой остаётся как опция
- Подзадачи на странице задачи — классические карточки TaskCard
(заголовок-ссылка, сниппет, бейджи, меню) вместо дерева
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
UX-пачка: заметка проекта через MdEditor, троеточие, фиксы шапки
...
- Заметка проекта в drawer'е — тот же MdEditor с тулбаром, что у
описания задачи (новый проп caption; предпросмотр-чекбоксы убраны)
- Кнопка «Действия» в шапке задачи — иконка-троеточие (ph-dots-three)
- «Изменить статус» — маленькая кнопка (size sm)
- Дропдаун шапки не обрезается: overflow:visible у .page-header
(+ декоративная скан-полоска ::after скрыта — с visible overflow
вылезает за рамку); меню прижато к правому краю; z-index шапки
поднят — transform из panel_boot кита делал карточки поверх меню
- Иконки в заголовках карточек — фиолетовый #bb9af7 (сливались)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Правый drawer — 640px на десктопе
...
Правило .drawer-panel перебивалось селектором кита .drawer .drawer-panel
(выше специфичность) — потому предыдущие попытки не применялись.
Селектор выровнен с китом: width: min(640px, 100vw - 18px).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Задача и проект: UX-пачка из 7 правок
...
- Действия задачи (статусы/правка/переспрос/подзадача/удаление) —
в дропдаун-меню «Действия» в шапке вместо тулбара
- Карточка «Статус» в сайдбаре: бейдж статуса + явная кнопка
«Изменить статус»
- Понятная шкала приоритета: 5 градаций с цветом (очень низкий/
низкий/средний/высокий/срочно) вместо P0–P10 — в карточках,
на страницах задачи и проекта, в формах
- Быстрое добавление тега прямо в карточке «Теги» (GnTagInput,
новое имя создаёт тег в каталоге)
- «Добавить подзадачу» создаёт полноценную задачу с parent_id
(тост-подтверждение; подзадача сразу видна в дереве)
- Фильтры страницы проекта переоформлены: подписанные селекты
со сбросом
- Список/дерево проекта — переключатель вида (GnTabs) вместо
двух секций подряд
Шкала приоритета: grade в UI, число 0–10 в БД; ProjectsView —
drawer переведён на градации.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Страница проекта: двухколоночная раскладка, статистика, вход из списка
...
- Список проектов: заголовок карточки — ссылка на /projects/:id
(раньше страница не была достижима), бейдж со счётчиком задач
- Страница проекта: сетка «содержимое + сайдбар» как на странице задачи;
заметка всегда видна (с подсказкой, если пуста), прогресс, фильтры
статус/тег с иконками, карточки задач, дерево проекта
- Сайдбар: статистика (всего/завершено/в работе/к выполнению/просрочено
с подсветкой), параметры, теги проекта с количеством
- Исправлено: GnBadge не имеет пропа icon — иконки везде переложены
в слот (TaskBadges, шапки проектов, теги задачи); несуществующая
иконка ph-list-magnifying-glass заменена на ph-magnifying-glass
- Сниппет карточки задачи больше не показывает сырой markdown
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Страница задачи: двухколоночная раскладка, вся информация открыта
...
- Сетка «содержимое + сайдбар параметров» на широком экране, одна
колонка на мобильном
- Предложение ИИ — построчно с иконками (теги/проект/приоритет/оценка)
вместо сжатых бейджей; «Да, всё верно» — success, добавлен
«Переспросить ИИ» рядом
- Сайдбар: параметры (тип, приоритет, время, факт, деньги, дедлайн
с подсветкой просрочки), теги, даты (создана/утверждена/завершена)
- Вложения — крупные превью сеткой с именами файлов
- Иконки в заголовках карточек и в каждой строке параметров
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Форма задачи: теги через GnTagInput, радио типа, md-редактор с тулбаром
...
- Теги — GnTagInput кита (ввод нового имени создаёт тег)
- Бюджет убран, оставлена только оценка затрат
- Тип задачи (разовая/регулярная) — радио-группа сразу после заголовка
- Описание — MdEditor: тулбар (B/I/H2/списки/ссылка/код) на GnTextarea
кита + предпросмотр по переключателю, Ctrl+V картинок сохранён
- Форма ограничена 640px; «Сохранить» — success, «Отмена» — незаметная
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 hours ago
|
Стиль: drawer 640px вместо 760px
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
17 hours ago
|
feat(frontend): страницы задачи и проекта, карточки, наглядное дерево
...
- /tasks/:id — полная страница задачи: просмотр/редактирование (TaskForm),
статусы, предложение ИИ, описание md + вложения, параметры, подзадачи
- /projects/:id — страница проекта: заметка, прогресс, задачи с фильтрами,
дерево проекта, создание задачи в проект (create + PATCH project_id)
- общие компоненты: TaskForm (вынесена из drawer'а стека), TaskCard
(заголовок-ссылка, сниппет, меню), TaskTree (шевроны, линии связей,
прогресс поддерева)
- стек: drawer на TaskForm, quick-add — многострочное поле (Enter — закинуть)
- .app-content 1200px, ключи i18n task.*/projectPage.*, ru/en/uk
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
17 hours ago
|
Мелкие правки: профиль в gnexus auth, кнопка quick-add, ширина drawer'а
...
- /auth/me отдаёт account_url ({gauth_base_url}/account); профильная
ссылка в футере навигации ведёт в систему авторизации (в новой вкладке).
- Кнопка «Закинуть» обычного размера (46px), поле осталось 60px.
- Drawer детализации 760px на десктопе.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
17 hours ago
|
Стек: quick-add — солидное поле (60px) и вертикальные отступы
...
- Форма отделена margin 1.75rem сверху и снизу (от заголовка и списка).
- Поле ввода: height 3.75rem, шрифт 1.1rem; кнопка той же высоты.
- Иконки ph-inbox → ph-tray в empty-состояниях (inbox нет в
phosphor-наборе кита — не рендерилась).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
18 hours ago
|
Навигация: профиль в футер drawer'а (паттерн кита, как в gnexus auth)
...
- Чип топбара (nav-topbar-current) снова показывает текущий раздел —
по семантике кита; юзер-чип с email из него убран.
- Пользователь перенесён в футер навигации: profile-identity
(аватар из SSO / иконка, email, подпись «Аккаунт») + кнопка
выхода ph-sign-out — канонический паттерн демо кита и gnexus auth.
- Иконка стека ph-inbox → ph-tray (inbox нет в phosphor-наборе кита).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
18 hours ago
|
Стили: page-header — отступ снизу 1.5rem (отделение от контента)
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
18 hours ago
|
Шапка: знак логотипа 48x48 (вместо дефолтных 22px кита)
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
18 hours ago
|
Логотип: терминальный промпт + чек в палитре gnexus (tokyo-night)
...
- public/logo.svg — знак для шапки (GnNavigationShell logo-src; раньше
кит тянул дефолтный gnexus-mark.svg с 404 — в шапке была битая иконка).
- public/icons/icon.svg — favicon/панельная версия; PNG 192/512/maskable
перегенерированы из SVG.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
18 hours ago
|

UI: ревью всех страниц (mobile+desktop), полный набор компонентов кита
...
- Root-фикс intrinsic-ограничений кита: .card max-width 340px → 100%,
overflow visible (иначе dropdown-меню обрезается).
- Все виды задач (стек/дерево/список) — двухстрочные карточки:
заголовок + меню «⋯» (GnDropdown c GnIconButton-триггером, статусы
с отметкой текущего, подзадача в дереве, удаление с подтверждением)
и строка бейджей (новый TaskBadges: статус, проект, P{n}, ≈время,
recurring, дедлайн, бюджет, теги).
- Редактирование задач/проектов перенесено в GnDrawer (детализация
в стеке, карточка — только просмотр).
- Удаления — через GnConfirmDialog (confirm-variant danger), промпты
создания проекта/тега/подзадачи — через модалку QuickPrompt вместо
window.prompt.
- Действия — тосты (useToast) вместо inline-алертов; при загрузке —
GnSkeleton; пустые состояния — GnEmptyState с CTA-кнопками.
- Список: фильтры в GnToolbar с авто-применением (компактные,
фиксированная ширина select-wrap).
- Настройки: GnRadioGroup для валюты и языка; «3 варианта» —
компактная форма времени.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
20 hours ago
|
i18n: ru/en/uk, язык из gnexus auth + переопределение в настройках
...
- vue-i18n v11 (legacy:false, fallback ru); локали src/locales/{ru,en,uk}.ts,
en/uk типизированы как typeof ru — полнота проверяется vue-tsc
- резолюция: settings.language (override, ''=auto) → SSO profile.locale → ru
- backend: /auth/callback прокидывает profile.locale в сессию; /api/settings
получил поле language, PUT стал частичным (model_fields_set)
- taskui.ts и все views переведены на t(); дни недели и даты через Intl
- в Настройках — карточка «Язык интерфейса», переключение мгновенное
- тесты: test_settings.py (частичный PUT, 422), AUTH_USER += locale
- ТЗ 0.5: новый пункт 3.11 «Мультиязычность»
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
20 hours ago
|
Дедлайны и регулярные задачи (ТЗ 3.4, 3.5)
...
- дедлайны двух видов: строгий (deadline_date) и нестрогий
(deadline_period: день/неделя/месяц/год); бейджи в дереве и списке,
просроченные — красным
- регулярные задачи: три правила (интервал N дней, дни недели, день месяца),
якорь — фиксированный календарь от даты выполнения; при завершении
автоматически рождается следующий экземпляр (API и MCP)
- «3 варианта»: срочность дедлайнов влияет на отбор (просроченные и близкие
строгие — первыми, затем нестрогие периоды)
- ТЗ 0.4: вопросы 8.1–8.3 помечены решёнными (правила повторения, прогноз,
валюта)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|