Skip to content

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Jun 06:02

[v1.1.0] — 2026-06-25

Добавлено

Сброс пароля (через администратора)

  • Страница входа: «Запросить сброс пароля» → POST /api/v1/auth/request-password-reset (при неизвестном логине — тот же успешный ответ, без перечисления учёток)
  • Баннер и список ожидающих запросов у администратора; подтверждение → POST /api/v1/admin/password-reset-requests/{id}/ack
  • Сброс пароля в админке → PUT /api/v1/admin/users/{id}/password с инвалидацией сессий пользователя
  • Таблица password_reset_requests (миграция 023); rate limit 5 запросов/мин с IP на endpoint сброса

Кредиты

  • Редактирование сумм неоплаченных платежей → PATCH /api/v1/credits/{id}/schedule (только kind=scheduled, is_applied=false; обновляются связанные future-операции)
  • При создании кредита задним числом: списание со счёта для хвоста ретро-платежей → поле retroactive_debit_count в POST /api/v1/credits (расход на debit_account_id, учёт в статистике)
  • Автодополнение укороченных графиков активных кредитов при старте (RepairShortSchedules; миграция-маркер 020)

Переводы и категории

  • Поле комиссии при переводе; расход в системной категории «Комиссия» (иконка percent)
  • Системная категория «Комиссия» для новых и существующих пользователей (backfill при старте)
  • При drag-order категорий системные остаются в конце; системную категорию нельзя назначить главной

Интерфейс

  • Мобильная адаптация: touch-targets 44px, карточки графика/операций, bottom sheet модалок, скролл вкладок, меню в шапке с пунктом «Счета»
  • Сброс формы при повторном открытии «Новый кредит»
  • В админке — блок доната и ссылка на репозиторий GitHub
  • Переключатели (ToggleSwitch) вместо чекбоксов: кредиты, долги, уведомления, импорт, фильтры, админка
  • Редактирование перевода из списка операций (страница счёта)
  • Фильтр категорий по типу операции (доход/расход) на /transactions, /stats, странице счёта
  • Суффиксы «(Доход)» / «(Расход)» у категорий с одинаковым именем (например «Долги»)
  • Иконка «Архивировать» на странице счёта (как у остальных действий)
  • Предупреждение при удалении оплаченного платежа по кредиту; подсказка в группе «Оплаченные» графика

Статистика и фильтры

  • Фильтры по дате без времени; границы суток в часовом поясе пользователя (/stats, /transactions, страница счёта)
  • /stats: автоприменение фильтров, поиск по описанию операций в блоке drill-down
  • Сводка на странице счёта: входящие переводы в «Доходе», исходящие в «Расходе» (согласовано с балансом)

Документация и демо

Изменено

  • Генератор графика с процентами: ровно term_months платежей; аннуитет 1…N−1, последний — остаток + проценты за период
  • Сортировка категорий в API: пользовательские, затем системные (sort_order, name)
  • OpenAPI 1.1.0: комиссия переводов, редактирование графика, retroactive_debit_count, password reset
  • Операции с флагом credit_payment_linked нельзя менять через PATCH /transactions/{id} — только на странице кредита
  • Поле суммы (MoneyInput): курсор не прыгает в конец при правке в середине числа

Исправлено

  • Укороченный график кредита (например 22 платежа вместо 36) — расчёт и восстановление при старте
  • Мобильное меню: перекрывалось контентом (z-index); не закрывалось при навигации
  • Форма создания кредита сохраняла данные предыдущего кредита без перезагрузки страницы
  • Статистика и список операций расходились по платежам кредита: прошедшие future-операции активируются при чтении; в SQL учитываются оплаченные платежи с exclude_from_stats=0
  • Сводка на странице счёта не учитывала входящие переводы в блоке «Доход»
  • Первоначальная настройка (POST /setup): повтор после частичного сбоя не давал 500 — восстановление маркера .configured, ответ 409 если БД уже настроена
  • Календарь (DateTimePicker): в конце месяца отображались дни 31–34 вместо дней следующего месяца; дни соседних месяцев в сетке теперь кликабельны
  • Тёмная тема: календарь, выпадающие списки и мобильное меню сливались с фоном (popover-panel)
  • Долги: дата операции и плановый возврат — только дата (без времени в форме и списках)
  • npm run check / vite build не обращались к API за allowedHosts (загрузка только при vite dev)

Техническое

  • Миграции: 020_repair_credit_schedules, 023_password_reset_requests
  • SQL: UpdateScheduledCreditPaymentAmount, UpdateFutureTransactionAmount, UpdateSystemCategoryIcon
  • StatsSummaryAccount — сводка по счёту с учётом переводов; ActivateDueFutureTransactions при списке операций и статистике
  • В ответах Transaction: credit_payment_linked; GuardTransactionUpdate для операций кредита
  • mapMoneyInputCursor — стабильный курсор в полях суммы
  • setup.Handler: syncConfiguredMarker, маркер .configured сразу после commit транзакции
  • DateTimePicker: calendarCells с годом/месяцем для padding-дней; плагин allowedHostsPlugin (configureServer)
  • CSS: --bg-popover, класс .popover-panel для overlay-панелей
  • Версия по умолчанию: 1.1.0 (VERSION, Makefile, Dockerfile, OpenAPI)

Коммиты

Changelog

  • b83c4ce Подготовка релиза
  • cd163d5 Исправлен календарь Мелкие фиксы
  • cf73c60 Исправлены статистика и фильтры Доработаны кредиты Обновлён UI и переводы
  • 5dfa93b v1.1.0 - Сброс и восстановление пароля - Адаптация под мобильные браузеры - Комиссия за переводы и категория «Комиссия» - График кредита: ровно term_months платежей и repair при старте - Редактирование сумм неоплаченных платежей графика - Списание ретро-платежей при создании кредита - Переключатели в форме кредита (ретро-списание) - Сброс формы при повторном «Новый кредит» - Кнопка доната в админке - Демо-стенд и release notes v1.1.0 - OpenAPI 1.1.0

Docker

Вложения docker-compose.yaml и .env — тот же compose из репозитория; .env задаёт BUHGALTER_IMAGE_TAG=1.1.0.

docker pull ghcr.io/kai-zer-ru/buhgalter:1.1.0
docker compose -f docker-compose.yaml up -d

Или без compose:

docker run -d --name buhgalter \
  -p 8765:8765 \
  -v buhgalter-data:/app/data \
  -v buhgalter-backups:/app/backups \
  --restart unless-stopped \
  ghcr.io/kai-zer-ru/buhgalter:1.1.0