| 2026-09-20 |
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
16 hours ago
|
feat(frontend): главная страница на / вместо /stack
...
StackView теперь на path '/', пункт навигации ведёт на /;
/stack оставлен как redirect на / для старых ссылок и PWA-кэша.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 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
16 hours ago
|
| 2026-09-19 |
Убираем дерево задач; иконки заголовков — тёмные
...
- Удалены TreeView (роут /tree и пункт навигации) и TaskTree;
переключатель «Список | Дерево» на странице проекта убран —
остаётся список карточек
- В локалях почищены мёртвые ключи дерева (nav.tree, viewList/
viewTree, tree.* кроме addSubtask/promptSubtask)
- Иконки в заголовках карточек — тёмный #565f89 вместо фиолетового
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
16 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
18 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
21 hours ago
|
Правки по обратной связи: прогноз = LLM, валюта в настройках, «3 варианта» +50%
...
- прогноз длительности: убрана медиана истории и эндпоинт /predict —
оценка приходит только из LLM-детализации (или вручную)
- валюта бюджетов — глобальная настройка (app_settings): UAH/USD/EUR/GBP/PLN,
выбирается один раз и применяется всюду; UI — страница «Настройки»,
суммы через formatMoney (символ по настройке)
- «3 варианта»: допуск нестрогий — оценка может превышать доступное время
до +50%, короткие задачи подходят всегда; задачи без оценки — фолбэк
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
M4: прогноз времени, бюджет, режим «3 варианта»
...
- Прогноз: LLM оценивает длительность в предложении детализации
(estimated_minutes в prompt/propose/apply); пересчёт по истории
похожих завершённых задач (медиана по проекту/тегам) — эндпоинт
POST /api/tasks/{id}/predict
- Бюджет: budget_money и cost_estimate_money (целые рубли) на задаче;
в дереве/списке — чип «бюджет / оценка» рядом
- «3 варианта»: POST /api/tasks/suggest — до трёх задач под доступное
время (активные проекты, не более одной на проект, сначала строго
укладывающиеся); вью OptionsView — выбор и переход к выполнению
- Миграция 09f0fefd5d6a (4 колонки tasks), 36 тестов зелёные
- Фронт: чипы оценок ≈ в дереве/списке, кнопка пересчёта прогноза,
поля бюджета и оценки в редакторе стека
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
M3: дерево подзадач, список с фильтрами, проекты с заметками
...
- Подзадачи: parent_task_id в create/patch, защита от циклов и
самородительства; relationships parent/children; фильтры списка
parent_id и tag_id
- Проекты: GET /api/projects/{id}, PATCH заметки и актуальности
- Фронт: TreeView — настоящее дерево с раскрытием ветвей и сменой
статуса; ListView — фильтры (статус/проект/тег); ProjectsView —
актуальность, приоритет, Markdown-заметка с предпросмотром
- Общие помощники статусов и Markdown в src/taskui.ts; GnPageHeader
переведён на слоты #meta/#actions (пропсы meta у кита нет)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
Интеграция gnexus-ui-kit в SPA
...
- kit.css + phosphor icons в main.ts, глобальная регистрация через GnexusUiVue
- vite-плагин: /assets кита (шрифты/иконки) — middleware в dev, копирование в build
- App.vue: GnNavigationShell + GnToastProvider, nav через items с router-ссылками
- StackView: GnPageHeader/GnInput/GnButton/GnCard/GnBadge/GnTextarea/GnSelect/
GnCheckbox/GnEmptyState/GnAlert/GnIconButton — ноль сырых кнопок и полей
- TreeView: заготовка на GnEmptyState
- d.ts-декларации для JS-пакета кита
- правило в CLAUDE.md: максимум готовых Gn*-компонентов
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
M0: каркас проекта
...
- ТЗ v0.3 (docs/TZ.md): требования, модель данных, архитектура, вехи
- backend: FastAPI-скелет (health), конфиг из окружения, интеграция gnexus-gauth
- frontend: Vue 3 + Vite + TypeScript, каркас SPA (стек/дерево), gnexus-ui-kit
- Docker: Dockerfile'ы, docker-compose (postgres/api/web), nginx с /api-прокси
- Гейты: ruff + mypy strict (pass), vue-tsc + vite build (pass)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
23 hours ago
|