| 2026-09-20 |
Вставка картинок в описание: в позицию курсора + просмотр на весь экран
...
- MdEditor сам обрабатывает Ctrl+V с картинками: файл грузится колбэком
uploadImages, markdown-ссылка вставляется в позицию курсора textarea,
миниатюры вставленного показываются под полем (клик — лайтбокс).
- Новый MdLightbox: полноэкранный просмотр картинки (клик по фону,
крестик или Esc закрывает); подключён к отображению описания задачи
(клик по img в md-view) и заметки проекта, а также к предпросмотру
редактора.
- TaskForm: paste-логика перенесена в MdEditor (колбэк uploadImages).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
20 hours ago
|
Блок подзадач: кнопка справа, список отделён отступом
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|
Карандаш описания: margin-top -23px
...
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|
Правки страницы задачи: карандаш описания и малая кнопка статуса
...
- Карандаш описания: тёмный цвет в тон заголовку карточки, прижат
к правому краю линии «Описание».
- «Изменить статус»: большая кнопка заменена на маленькую иконку
(GnIconButton с карандашом), dropdown-меню прежнее.
- Инлайн-правка заголовка: .inline-field/.inline-editing на всю ширину
шапки, поле растягивается, кнопки ✓/✗ рядом.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|
Фикс стилизации инлайн-редакторов: GnInput вместо bare-инпутов
...
В ките GnInput bare рендерит input вообще без класса (стили кита живут
в селекторе .form-group .label .input), поэтому инлайн-редакторы были
голыми браузерными полями. Теперь инлайн использует GnInput/GnSelect
с полной обёрткой кита; в строках параметров и шапке поле ужато
(:deep-переопределения размеров, отступы формы убраны), классы width
вешаются на сам input, т.к. attrs-класс не попадает на обёртку.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|
Инлайн-редактирование полей на страницах задачи и проекта
...
- Новый компонент InlineField: враппер «показ ↔ редактор» с кнопками ✓/✗,
Esc = отмена, throw из save() оставляет редактор открытым.
- Страница задачи: заголовок правится кликом в шапке, описание — по
карандашу (MdEditor без подписи), в «Параметрах» все 8 строк видны
всегда; приоритет, оценка, фактически, деньги (бюджет+оценка одним
PATCH) и дедлайн (дата+период, взаимоисключающие) правятся инлайн.
- Страница проекта: инлайн для названия, заметки, актуальности, приоритета.
- MdEditor: caption='' скрывает подпись, undefined — стандартная.
- Локали: common.notSet, task.editTitle/editDescription,
task.deadlineConflict, projectPage.editNote.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|
«Я сам» больше не открывает форму правки
...
Кнопка просто отменяет помощь ИИ: утвердить задачу без применения
предложения (apply_proposal=false) — без принудительного перехода
в форму правки.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
21 hours ago
|
Кнопка «Я сам» в карточке предложения ИИ
...
Утверждает задачу без применения предложения (apply_proposal=false)
и сразу открывает форму правки — детали пользователь заполняет сам.
ru/en/uk: task.proposalMyself.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
Баг: переход подзадача → родитель не обновлял данные страницы
...
/vue-router переиспользует инстанс TaskView при переходе между
/tasks/:id — onMounted не срабатывает, экран оставался на старой
задаче. Данные теперь перезагружаются по watch(taskId); заодно
сбрасывается режим правки. Та же защита добавлена в ProjectView.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
Разгрузка формы создания: «Дополнительно» свёрнуто, редирект на задачу
...
- Оценки (время, затраты) и дедлайн в TaskForm свёрнуты в GnAccordion
«Дополнительно»: при создании скрыты (детализация — позже), при правке
раскрыты по умолчанию.
- После создания задачи из стека (StackView) и со страницы проекта
(ProjectView) пользователь направляется на страницу созданной задачи —
там блоки заполняются через «Редактировать».
- Локали: stack.form.extra (ru/en/uk).
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
feat: метка «ментально сложная» — кнопка «Не хочется делать» + геймификация
...
- Task.mentally_hard (миграция c8f7e6d5b4a3) + поле в TaskUpdate/TaskOut
- compute_task_xp: +10 WILLPOWER_BONUS за закрытие «ментально сложной»
- заголовок X-Mentally-Hard при закрытии; +2 теста (66 зелёных)
- TaskView: warning-кнопка-переключатель в карточке статуса (скрыта у done)
- TaskBadges: warning-бейдж «ментально сложная»
- празднование: «+N XP • сила воли», золотое конфетти всегда, фраза в тосте
- сад: ачивка «Преодоление» 5/25/50; справка сада и локали ru/en/uk обновлены
- ТЗ 0.12: пункт про метку в 3.13
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
22 hours ago
|
stats: переключатель диапазона сетки активности — полгода / год
...
- GnTabs «Полгода / Год» в шапке сетки активности: 26 или 52 недели
- Заголовок секции зависит от диапазона (stats.heatmapHalf/heatmapYear)
- GnTabs в ките тянется на width:100% — в шапке посажены в одну строку
- Локали ru/en/uk; ТЗ 0.11: сетка активности «за полгода или год»
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
23 hours ago
|
feat(frontend): сравнительный график и сетка активности на статистике
...
- График периодов стал сравнительным: текущий и предыдущий аналогичный период
— пары столбиков (час↔час, день недели↔день недели, число↔число), легенда
«Сейчас / Предыдущий период»
- Сетка активности «как в гитхабе»: последние 26 недель, заливка 0–4 по
закрытым задачам или XP (переключатель), тултипы с датой, легенда
- Локали ru/en/uk, ТЗ 0.10 дополнен
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
23 hours ago
|
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
1 day 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
1 day 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
1 day 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
1 day ago
|
fix(frontend): убрать дёргание главной при фоновом опросе
...
Тик опроса (5 с) включал loading — при пустом стеке мигал скелетон —
и заменял массивы задач/проектов новыми объектами, вызывая полную
перерисовку дашборда и стека. Теперь фоновый тик тихий: скелетон
только при первой загрузке, массивы не трогаются, если не изменились
(сверка JSON), поэтому между реальными изменениями DOM не мутирует.
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day 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
1 day 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
1 day ago
|
Иконки заголовков карточек — ещё темнее (#3b4261)
...
Заодно убраны scoped-дубли .card-title-icon в TaskView/ProjectView
(var(--accent) перебивал глобальный тёмный цвет)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day ago
|
Страница задачи: чипы-переходы на родителя и проект
...
- Подзадача: чип «↰ родитель» в шапке ведёт на родительскую задачу
- Задача с проектом: чип «📁 проект» ведёт на страницу проекта
(дублирующий некликабельный бейдж проекта из строки бейджей убран)
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day ago
|
Убираем дерево задач; иконки заголовков — тёмные
...
- Удалены TreeView (роут /tree и пункт навигации) и TaskTree;
переключатель «Список | Дерево» на странице проекта убран —
остаётся список карточек
- В локалях почищены мёртвые ключи дерева (nav.tree, viewList/
viewTree, tree.* кроме addSubtask/promptSubtask)
- Иконки в заголовках карточек — тёмный #565f89 вместо фиолетового
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day ago
|
Добавление задач — полная форма; подзадачи карточками
...
- TaskForm умеет создавать: проп task опционален, дефолты из
projectId/parentId (create + PATCH, тост «Создано — попала в стек»)
- Подзадача на странице задачи — полная форма в drawer (было
окно-промпт одной строкой)
- Новая задача из проекта — полная форма в drawer
- В стеке кнопка «Новая задача» (шапка) открывает полную форму;
quick-add одной строкой остаётся как опция
- Подзадачи на странице задачи — классические карточки TaskCard
(заголовок-ссылка, сниппет, бейджи, меню) вместо дерева
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day 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
1 day 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
1 day ago
|
Страница проекта: двухколоночная раскладка, статистика, вход из списка
...
- Список проектов: заголовок карточки — ссылка на /projects/:id
(раньше страница не была достижима), бейдж со счётчиком задач
- Страница проекта: сетка «содержимое + сайдбар» как на странице задачи;
заметка всегда видна (с подсказкой, если пуста), прогресс, фильтры
статус/тег с иконками, карточки задач, дерево проекта
- Сайдбар: статистика (всего/завершено/в работе/к выполнению/просрочено
с подсветкой), параметры, теги проекта с количеством
- Исправлено: GnBadge не имеет пропа icon — иконки везде переложены
в слот (TaskBadges, шапки проектов, теги задачи); несуществующая
иконка ph-list-magnifying-glass заменена на ph-magnifying-glass
- Сниппет карточки задачи больше не показывает сырой markdown
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day ago
|
Страница задачи: двухколоночная раскладка, вся информация открыта
...
- Сетка «содержимое + сайдбар параметров» на широком экране, одна
колонка на мобильном
- Предложение ИИ — построчно с иконками (теги/проект/приоритет/оценка)
вместо сжатых бейджей; «Да, всё верно» — success, добавлен
«Переспросить ИИ» рядом
- Сайдбар: параметры (тип, приоритет, время, факт, деньги, дедлайн
с подсветкой просрочки), теги, даты (создана/утверждена/завершена)
- Вложения — крупные превью сеткой с именами файлов
- Иконки в заголовках карточек и в каждой строке параметров
Co-Authored-By: Claude Code <noreply@anthropic.com>
root
committed
1 day 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
1 day 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
1 day ago
|