dependabot[bot]
79048746b7
build(deps): bump the pip-minor-patch group across 1 directory with 7 updates
...
---
updated-dependencies:
- dependency-name: fastapi
dependency-version: 0.162.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: sqlalchemy
dependency-version: 2.1.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: alembic
dependency-version: 1.20.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: pydantic
dependency-version: 2.14.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: pydantic-settings
dependency-version: 2.16.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: pytest
dependency-version: 9.2.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: pytest-asyncio
dependency-version: 1.4.1
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-11-03 13:15:27 +00:00
dependabot[bot]
63eea52888
build(deps): bump the pip-minor-patch group across 1 directory with 7 updates ( #53 )
...
Bumps the pip-minor-patch group with 7 updates in the /backend directory:
| Package | From | To |
| --- | --- | --- |
| [fastapi](https://github.com/fastapi/fastapi ) | `0.141.1` | `0.146.0` |
| [uvicorn](https://github.com/Kludex/uvicorn ) | `0.52.4` | `0.54.0` |
| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy ) | `2.0.52` | `2.1.5` |
| [asyncpg](https://github.com/MagicStack/asyncpg ) | `0.31.0` | `0.32.0` |
| [pydantic](https://github.com/pydantic/pydantic ) | `2.13.5` | `2.14.1` |
| [pydantic-settings](https://github.com/pydantic/pydantic-settings ) | `2.15.0` | `2.16.0` |
| [python-dotenv](https://github.com/theskumar/python-dotenv ) | `1.2.3` | `1.2.4` |
Updates `fastapi` from 0.141.1 to 0.146.0
- [Release notes](https://github.com/fastapi/fastapi/releases )
- [Commits](https://github.com/fastapi/fastapi/compare/0.141.1...0.146.0 )
Updates `uvicorn` from 0.52.4 to 0.54.0
- [Release notes](https://github.com/Kludex/uvicorn/releases )
- [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md )
- [Commits](https://github.com/Kludex/uvicorn/compare/0.52.4...0.54.0 )
Updates `sqlalchemy` from 2.0.52 to 2.1.5
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases )
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst )
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits )
Updates `asyncpg` from 0.31.0 to 0.32.0
- [Release notes](https://github.com/MagicStack/asyncpg/releases )
- [Commits](https://github.com/MagicStack/asyncpg/compare/v0.31.0...v0.32.0 )
Updates `pydantic` from 2.13.5 to 2.14.1
- [Release notes](https://github.com/pydantic/pydantic/releases )
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md )
- [Commits](https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.1 )
Updates `pydantic-settings` from 2.15.0 to 2.16.0
- [Release notes](https://github.com/pydantic/pydantic-settings/releases )
- [Commits](https://github.com/pydantic/pydantic-settings/compare/v2.15.0...v2.16.0 )
Updates `python-dotenv` from 1.2.3 to 1.2.4
- [Release notes](https://github.com/theskumar/python-dotenv/releases )
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md )
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.2.3...v1.2.4 )
---
updated-dependencies:
- dependency-name: asyncpg
dependency-version: 0.32.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: fastapi
dependency-version: 0.143.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: pydantic
dependency-version: 2.14.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: pydantic-settings
dependency-version: 2.16.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: python-dotenv
dependency-version: 1.2.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: sqlalchemy
dependency-version: 2.1.5
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: uvicorn
dependency-version: 0.54.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-21 19:15:44 +03:00
dependabot[bot]
24a13458f2
build(deps): bump the npm-minor-patch group across 1 directory with 11 updates ( #54 )
...
Bumps the npm-minor-patch group with 11 updates in the /frontend directory:
| Package | From | To |
| --- | --- | --- |
| [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query ) | `5.102.8` | `5.104.3` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react ) | `1.45.0` | `1.59.0` |
| [react](https://github.com/react/react/tree/HEAD/packages/react ) | `19.3.0` | `19.3.1` |
| [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom ) | `19.3.0` | `19.3.1` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom ) | `7.18.3` | `7.18.4` |
| [tailwind-merge](https://github.com/dcastil/tailwind-merge/tree/HEAD/packages/tailwind-merge ) | `3.6.0` | `3.7.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) | `26.5.1` | `26.6.5` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react ) | `6.1.1` | `6.1.2` |
| [jsdom](https://github.com/jsdom/jsdom ) | `30.0.1` | `30.1.3` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) | `8.3.0` | `8.3.4` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ) | `5.0.0` | `5.0.5` |
Updates `@tanstack/react-query` from 5.102.8 to 5.104.3
- [Release notes](https://github.com/TanStack/query/releases )
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md )
- [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.104.3/packages/react-query )
Updates `lucide-react` from 1.45.0 to 1.59.0
- [Release notes](https://github.com/lucide-icons/lucide/releases )
- [Commits](https://github.com/lucide-icons/lucide/commits/1.59.0/packages/lucide-react )
Updates `react` from 19.3.0 to 19.3.1
- [Release notes](https://github.com/react/react/releases )
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/react/react/commits/v19.3.1/packages/react )
Updates `react-dom` from 19.3.0 to 19.3.1
- [Release notes](https://github.com/react/react/releases )
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/react/react/commits/v19.3.1/packages/react-dom )
Updates `react-router-dom` from 7.18.3 to 7.18.4
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@7.18.4/packages/react-router-dom/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.18.4/packages/react-router-dom )
Updates `tailwind-merge` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/dcastil/tailwind-merge/releases )
- [Commits](https://github.com/dcastil/tailwind-merge/commits/tailwind-merge@3.7.0/packages/tailwind-merge )
Updates `@types/node` from 26.5.1 to 26.6.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
Updates `@vitejs/plugin-react` from 6.1.1 to 6.1.2
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases )
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.1.2/packages/plugin-react )
Updates `jsdom` from 30.0.1 to 30.1.3
- [Release notes](https://github.com/jsdom/jsdom/releases )
- [Commits](https://github.com/jsdom/jsdom/compare/v30.0.1...v30.1.3 )
Updates `vite` from 8.3.0 to 8.3.4
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.3.4/packages/vite )
Updates `vitest` from 5.0.0 to 5.0.5
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md )
- [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.5/packages/vitest )
---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
dependency-version: 5.104.3
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: lucide-react
dependency-version: 1.59.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: react
dependency-version: 19.3.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: react-dom
dependency-version: 19.3.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: react-router-dom
dependency-version: 7.18.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: tailwind-merge
dependency-version: 3.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@types/node"
dependency-version: 26.6.5
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@vitejs/plugin-react"
dependency-version: 6.1.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: jsdom
dependency-version: 30.1.3
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: vite
dependency-version: 8.3.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
- dependency-name: vitest
dependency-version: 5.0.5
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ZProger <81753080+Zproger@users.noreply.github.com >
2026-10-21 19:11:03 +03:00
ZProger
c77cc5d7f2
fix(deps): явно указать sqlalchemy[asyncio] для greenlet
2026-10-21 19:05:17 +03:00
dependabot[bot]
64a190678e
build(deps): bump the pip-minor-patch group in /backend with 2 updates ( #42 )
...
Bumps the pip-minor-patch group in /backend with 2 updates: [alembic](https://github.com/sqlalchemy/alembic ) and [pytest](https://github.com/pytest-dev/pytest ).
Updates `alembic` from 1.19.2 to 1.20.0
- [Release notes](https://github.com/sqlalchemy/alembic/releases )
- [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES )
- [Commits](https://github.com/sqlalchemy/alembic/commits )
Updates `pytest` from 9.0.3 to 9.1.1
- [Release notes](https://github.com/pytest-dev/pytest/releases )
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst )
- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.1 )
---
updated-dependencies:
- dependency-name: alembic
dependency-version: 1.20.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: pytest
dependency-version: 9.1.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ZProger <81753080+Zproger@users.noreply.github.com >
2026-09-22 13:16:48 +03:00
dependabot[bot]
0cf72831a8
build(deps): bump the npm-minor-patch group in /frontend with 8 updates ( #43 )
...
Bumps the npm-minor-patch group in /frontend with 8 updates:
| Package | From | To |
| --- | --- | --- |
| [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query ) | `5.101.4` | `5.102.8` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react ) | `1.31.0` | `1.45.0` |
| [react](https://github.com/react/react/tree/HEAD/packages/react ) | `19.2.8` | `19.3.0` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react ) | `19.2.18` | `19.3.0` |
| [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom ) | `19.2.8` | `19.3.0` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom ) | `19.2.7` | `19.3.0` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) | `26.4.1` | `26.5.1` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) | `8.2.2` | `8.3.0` |
Updates `@tanstack/react-query` from 5.101.4 to 5.102.8
- [Release notes](https://github.com/TanStack/query/releases )
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md )
- [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.102.8/packages/react-query )
Updates `lucide-react` from 1.31.0 to 1.45.0
- [Release notes](https://github.com/lucide-icons/lucide/releases )
- [Commits](https://github.com/lucide-icons/lucide/commits/1.45.0/packages/lucide-react )
Updates `react` from 19.2.8 to 19.3.0
- [Release notes](https://github.com/react/react/releases )
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/react/react/commits/v19.3.0/packages/react )
Updates `@types/react` from 19.2.18 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react )
Updates `react-dom` from 19.2.8 to 19.3.0
- [Release notes](https://github.com/react/react/releases )
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/react/react/commits/v19.3.0/packages/react-dom )
Updates `@types/react-dom` from 19.2.7 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom )
Updates `@types/node` from 26.4.1 to 26.5.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
Updates `@types/react` from 19.2.18 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react )
Updates `@types/react-dom` from 19.2.7 to 19.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom )
Updates `vite` from 8.2.2 to 8.3.0
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/create-vite@8.3.0/packages/vite )
---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
dependency-version: 5.102.8
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: lucide-react
dependency-version: 1.45.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: react
dependency-version: 19.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@types/react"
dependency-version: 19.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: react-dom
dependency-version: 19.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@types/react-dom"
dependency-version: 19.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@types/node"
dependency-version: 26.5.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@types/react"
dependency-version: 19.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: "@types/react-dom"
dependency-version: 19.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
- dependency-name: vite
dependency-version: 8.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-22 13:12:15 +03:00
ZProger
848ff21665
feat: профили импорта CSV для Т-Банка, monobank и ПриватБанка, версия 1.1.8
2026-09-13 06:32:36 +03:00
ZProger
c867710f38
fix: перевести SEO-теги и document lang на английский
2026-09-13 00:42:51 +03:00
ZProger
3bd484b88e
feat: добавить SEO-теги (description, keywords, Open Graph, Twitter Card)
2026-09-13 00:42:51 +03:00
ZProger
14948aff1d
security: TLS, проверка Host, шифрованное запоминание входа и аудит-лог
...
- TLS через подключаемый overlay docker-compose.tls.yml + Caddyfile:
Caddy сам получает и продлевает сертификат Let's Encrypt, HSTS
добавляется на уровне прокси — намеренно там, а не в nginx.conf,
иначе установки без TLS заперли бы сами себя;
- проверка заголовка Host против DNS rebinding: AURUM_ALLOWED_HOSTS,
по умолчанию localhost и 127.0.0.1, чужой Host получает 421 с
подсказкой, какую переменную поправить;
- «запомнить меня на 7 дней» вернулось в безопасном виде: пароль
шифруется AES-GCM ключом с extractable: false в IndexedDB, вместо
прежнего base64 в localStorage, который разворачивался обратно в
пароль одним atob. Требует secure context, поэтому по обычному HTTP
к LAN-адресу чекбокс не показывается, а не притворяется рабочим;
- аудит-лог необратимых операций (восстановление бэкапа, массовое
создание транзакций, удаление счёта) в лог контейнера. Не в БД
сознательно: таблица аудита исчезла бы ровно в том событии, которое
должна объяснять;
- README: раздел про TLS и таблица двух переменных, решающих, кто
может достучаться до инстанса.
2026-09-10 21:34:40 +03:00
ZProger
f9413aa6e1
security: устранить находки аудита, версия 1.1.7
...
Конфигурация и эксплуатационный слой:
- nginx: client_max_body_size 64m — восстановление из бэкапа не работало
вовсе, дефолтный лимит в 1 МБ резал дампы (реальный экспорт ~3.4 МБ)
с 413 ещё до backend;
- nginx: заголовки безопасности (nosniff, Referrer-Policy,
Permissions-Policy) и полный Content-Security-Policy. Ради него
inline-скрипт темы вынесен в public/theme-init.js;
- nginx: limit_req на /api/ — перебор пароля Basic Auth шёл со
скоростью сети, ни блокировки, ни задержки не было;
- nginx: server_tokens off;
- порт web привязан к 127.0.0.1, адрес настраивается через
AURUM_BIND_ADDRESS (раньше слушался на всех интерфейсах);
- backend работает от непривилегированного пользователя,
no-new-privileges для backend и web;
- дефолты пароля Postgres сведены к одному значению в обоих сервисах,
в .env.example описана ловушка с инициализацией тома.
Приложение:
- версия убрана из неавторизованного /api/health и отдаётся как
app_version в GET /api/settings;
- /api/docs, /api/redoc и /api/openapi.json отключаются через
AURUM_ENABLE_DOCS;
- текст исключения при неудачном восстановлении уходит в лог, а не
клиенту;
- max_length для notes в схемах транзакций, активов и регулярных
платежей (и в соответствующих полях UI);
- срок «запомнить меня» сокращён с 30 дней до 7;
- pytest обновлён до 9.0.3 (PYSEC-2026-1845), pytest-asyncio до 1.4.0;
- CI: permissions contents:read для GITHUB_TOKEN.
2026-09-10 21:12:31 +03:00
ZProger
eba8add92f
fix: устранить баги в проверке дублей и смене кодировки при импорте CSV
...
- Кэш проверки дублей не сбрасывался после импорта: повторный импорт
того же файла в течение 30 секунд (staleTime) сверялся со списком
транзакций, полученным ДО первого импорта, и не находил ни одного
дубля — ровно тот случай, ради которого проверка и делалась.
- Кнопку импорта можно было нажать, пока проверка дублей ещё шла или
шёл фоновый рефетч: дубли проходили мимо фильтра. Теперь кнопка
заблокирована на время запроса, а его ошибка больше не проглатывается
молча, а показывается предупреждением.
- Ручная смена кодировки ломала уже выбранные колонки: заголовки
перечитывались, старый выбор указывал на несуществующее имя,
indexOf давал -1, и все строки молча отбрасывались как «не удалось
распознать дату». Маппинг переугадывается при изменении состава
заголовков.
- Текст «Они не будут импортированы» противоречил включённой галочке
«Всё равно импортировать их».
2026-09-10 20:16:00 +03:00
ZProger
777e3af725
feat: улучшить импорт CSV — дедупликация, кодировка, парсинг сумм
...
Пять доработок импорта транзакций из CSV:
1. Проверка дублей при повторном импорте — сверка с уже существующими
транзакциями на счёте за диапазон дат файла (по дате+типу+сумме+
описанию), похожие исключаются из импорта по умолчанию с опцией
всё равно их добавить.
2. Автоопределение кодировки файла (UTF-8 с откатом на Windows-1251)
вместо жёстко зашитого UTF-8 — раньше кириллица из банковских
выгрузок превращалась в кракозябры. Есть ручной выбор на случай
неверного автоопределения.
3. Исправлен баг в parseAmount: суммы с несколькими разделителями
тысяч и без дробной части (например "1,234,567") теряли цифры и
отбрасывались как нераспознанные — теперь распознаются верно.
4. Добавлен явный выбор разделителя дробной части (точка/запятая) на
случай, когда автоопределение не может разрешить неоднозначность.
5. Пример значения из файла показывается прямо под каждым выбором
колонки при сопоставлении — не нужно доходить до превью, чтобы
понять, что в колонке.
2026-09-10 20:06:41 +03:00
ZProger
78826db33e
Revert "feat: автосоздавать .env из .env.example при первом запуске"
...
This reverts commit 47027c517d .
2026-09-10 19:48:44 +03:00
ZProger
47027c517d
feat: автосоздавать .env из .env.example при первом запуске
...
Раньше при отсутствии .env docker compose тихо стартовал на дефолтах
из docker-compose.yml (без пароля, дефолтные креды Postgres), никак
не сигнализируя об этом. Добавлен start.sh — обёртка над
docker compose up -d --build, которая при отсутствии .env создаёт его
из .env.example и один раз громко предупреждает об используемых
дефолтах перед стартом контейнеров. README обновлён на использование
этого скрипта.
2026-09-10 19:45:16 +03:00
ZProger
6df4e57f08
feat: заменить баннер отсутствия auth на модальное окно с согласием
...
Дизайн-баннер был легко закрываем и появлялся заново каждую сессию.
Теперь показывается блокирующее модальное окно без кнопки закрытия/
Escape/клика по фону — пройти дальше можно только явным подтверждением
'Я понимаю риски'. Согласие сохраняется в localStorage и не запрашивается повторно.
2026-09-10 19:38:07 +03:00
ZProger
292ef1e410
feat: показывать баннер, если инстанс не защищён паролем
...
Раньше предупреждение об отсутствии AURUM_BASIC_AUTH_USER/PASSWORD
было видно только в логах docker-контейнера при старте и терялось,
если пользователь забыл настроить .env. Теперь LoginGate различает
'авторизован' и 'auth вообще не настроен' и во втором случае
показывает заметный баннер прямо в интерфейсе.
2026-09-10 19:34:25 +03:00
ZProger
19ca9c3158
fix: скрывать file input бэкапа без display:none
...
На Firefox (Linux) программный .click() по input[type=file] со стилем
display:none может не открывать нативный диалог выбора файла. Теперь
инпут скрыт визуально (opacity + нулевой размер), но остаётся в layout.
2026-09-10 19:29:39 +03:00
ZProger
cd2e4ae9f9
fix: заменить crypto.randomUUID() на fallback для HTTP без TLS
...
crypto.randomUUID() доступен только в secure context (HTTPS/localhost),
из-за чего при открытии приложения по обычному HTTP падал TypeError
при добавлении сплитов транзакции.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01769tkxLJooEWNjx3xc9aCv
2026-09-10 19:17:20 +03:00
ZProger
aac72f36f2
Merge branch 'db-33'
...
# Conflicts:
# backend/requirements.txt
2026-09-09 01:22:45 +03:00
ZProger
50ccf8578e
Merge branch 'db-27'
2026-09-09 01:22:20 +03:00
ZProger
456016b071
Merge branch 'db-32'
2026-09-09 01:21:56 +03:00
ZProger
225b46dc61
build(deps): обновить vite, @vitejs/plugin-react, react-router-dom, @types/node, @types/react-dom
...
Закрывает Dependabot PR #23 , #26 , #29 , #30 , #31 — все minor/patch,
билд и тесты зелёные.
2026-09-09 01:20:42 +03:00
ZProger
12a3068bee
Merge branch 'db-26'
2026-09-09 01:19:49 +03:00
ZProger
31471a14ec
Merge branch 'db-31'
2026-09-09 01:19:49 +03:00
ZProger
de1f0f3719
Merge branch 'db-30'
2026-09-09 01:19:42 +03:00
dependabot[bot]
671881cacb
build(deps): bump the pip-minor-patch group in /backend with 7 updates
...
Bumps the pip-minor-patch group in /backend with 7 updates:
| Package | From | To |
| --- | --- | --- |
| [uvicorn](https://github.com/Kludex/uvicorn ) | `0.34.0` | `0.52.4` |
| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy ) | `2.0.36` | `2.0.52` |
| [asyncpg](https://github.com/MagicStack/asyncpg ) | `0.30.0` | `0.31.0` |
| [alembic](https://github.com/sqlalchemy/alembic ) | `1.14.0` | `1.19.2` |
| [pydantic](https://github.com/pydantic/pydantic ) | `2.10.4` | `2.13.5` |
| [pydantic-settings](https://github.com/pydantic/pydantic-settings ) | `2.7.0` | `2.15.0` |
| [python-dotenv](https://github.com/theskumar/python-dotenv ) | `1.2.2` | `1.2.3` |
Updates `uvicorn` from 0.34.0 to 0.52.4
- [Release notes](https://github.com/Kludex/uvicorn/releases )
- [Changelog](https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md )
- [Commits](https://github.com/Kludex/uvicorn/compare/0.34.0...0.52.4 )
Updates `sqlalchemy` from 2.0.36 to 2.0.52
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases )
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst )
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits )
Updates `asyncpg` from 0.30.0 to 0.31.0
- [Release notes](https://github.com/MagicStack/asyncpg/releases )
- [Commits](https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0 )
Updates `alembic` from 1.14.0 to 1.19.2
- [Release notes](https://github.com/sqlalchemy/alembic/releases )
- [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES )
- [Commits](https://github.com/sqlalchemy/alembic/commits )
Updates `pydantic` from 2.10.4 to 2.13.5
- [Release notes](https://github.com/pydantic/pydantic/releases )
- [Changelog](https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md )
- [Commits](https://github.com/pydantic/pydantic/compare/v2.10.4...v2.13.5 )
Updates `pydantic-settings` from 2.7.0 to 2.15.0
- [Release notes](https://github.com/pydantic/pydantic-settings/releases )
- [Commits](https://github.com/pydantic/pydantic-settings/compare/v2.7.0...v2.15.0 )
Updates `python-dotenv` from 1.2.2 to 1.2.3
- [Release notes](https://github.com/theskumar/python-dotenv/releases )
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md )
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3 )
---
updated-dependencies:
- dependency-name: uvicorn
dependency-version: 0.52.4
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: sqlalchemy
dependency-version: 2.0.52
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
- dependency-name: asyncpg
dependency-version: 0.31.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: alembic
dependency-version: 1.19.2
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: pydantic
dependency-version: 2.13.5
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: pydantic-settings
dependency-version: 2.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: pip-minor-patch
- dependency-name: python-dotenv
dependency-version: 1.2.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: pip-minor-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-08 22:16:53 +00:00
dependabot[bot]
c8bab36f09
build(deps): bump the actions group with 3 updates
...
Bumps the actions group with 3 updates: [actions/checkout](https://github.com/actions/checkout ), [actions/setup-python](https://github.com/actions/setup-python ) and [actions/setup-node](https://github.com/actions/setup-node ).
Updates `actions/checkout` from 4 to 7
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v4...v7 )
Updates `actions/setup-python` from 5 to 7
- [Release notes](https://github.com/actions/setup-python/releases )
- [Commits](https://github.com/actions/setup-python/compare/v5...v7 )
Updates `actions/setup-node` from 4 to 7
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v4...v7 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
- dependency-name: actions/setup-python
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
- dependency-name: actions/setup-node
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: actions
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-08 22:16:22 +00:00
ZProger
4cb5c4788a
ci: группировать Dependabot-обновления по minor/patch и major
...
Все minor/patch-апдейты одного пакетного менеджера теперь идут одним
PR, а major-обновления — отдельным, чтобы не терялись среди рутинных
и не сыпало десятком PR одновременно.
2026-09-09 01:15:33 +03:00
dependabot[bot]
a27b35febf
build(deps-dev): bump @types/react-dom in /frontend
...
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom ) from 19.2.4 to 19.2.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom )
---
updated-dependencies:
- dependency-name: "@types/react-dom"
dependency-version: 19.2.7
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-08 22:06:48 +00:00
dependabot[bot]
7647eabdfa
build(deps-dev): bump @types/node from 26.2.0 to 26.4.1 in /frontend
...
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) from 26.2.0 to 26.4.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 26.4.1
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-08 22:06:43 +00:00
dependabot[bot]
acf52f9e98
build(deps): bump python-dotenv from 1.2.2 to 1.2.3 in /backend
...
Bumps [python-dotenv](https://github.com/theskumar/python-dotenv ) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/theskumar/python-dotenv/releases )
- [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md )
- [Commits](https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3 )
---
updated-dependencies:
- dependency-name: python-dotenv
dependency-version: 1.2.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-08 22:06:26 +00:00
dependabot[bot]
bc4f861a78
build(deps-dev): bump vite from 8.2.1 to 8.2.2 in /frontend
...
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) from 8.2.1 to 8.2.2.
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.2.2/packages/vite )
---
updated-dependencies:
- dependency-name: vite
dependency-version: 8.2.2
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-09-08 22:06:26 +00:00
ZProger
2d4f405167
ci: включить Dependabot для npm, pip и GitHub Actions
...
Еженедельные PR на уязвимые/устаревшие зависимости во frontend,
backend и в самих CI-экшенах, без ручного отслеживания.
2026-09-09 01:05:26 +03:00
ZProger
e5a474fb38
test: покрыть risk_level и network на крипто-холдингах
...
Создание с дефолтным/кастомным risk_level, правка через PATCH
/assets/{id}, создание/правка/сброс network через PATCH
/crypto/holdings/{id}, partial-update и 404 на неизвестный id.
2026-09-09 01:04:52 +03:00
ZProger
cc4a78dd30
docs: сослаться на PR-шаблон из CONTRIBUTING.md
2026-09-09 01:00:48 +03:00
ZProger
a42a19b9ce
docs: добавить шаблон PR
...
Ссылается на чек-лист из CONTRIBUTING.md вместо дублирования, плюс
пункт про реальную проверку (не просто "тесты прошли" на словах) и
про отсутствие личных данных/ключей в дифе.
2026-09-09 00:59:27 +03:00
ZProger
f5c6591310
test: юнит-тесты на форматирование и разбивки крипто-портфеля + версия 1.1.6
...
Vitest для чистой логики: lib/format.ts (заодно поймал баг в
trimTrailingZeros на "-0.000") и расчёт разбивки по риску/монете/сети
на вкладке Crypto — вынес их из компонентов в отдельные тестируемые
функции. Тесты подключены в CI. Версия приложения обновлена до 1.1.6.
2026-09-09 00:52:27 +03:00
ZProger
c3047c6d6a
feat: сеть (network) для крипто-холдингов
...
Свободное текстовое поле на холдинге — какой сети принадлежит конкретная
монета (Ethereum, Tron и т.д.), с редактированием прямо в таблице и
разбивкой % по сетям на отдельной вкладке. Помогает увидеть, что часть
стейблкоинов лежит на рискованных сетях и стоит перевести на безопасные.
2026-09-09 00:52:11 +03:00
ZProger
526bfe104d
fix: неоднозначные символы валют (CN¥, HK$) без огрубления остальных
...
currencyDisplay: narrowSymbol вместо code — чинит CNY/HKD, но не
превращает $/€/₽ в USD/EUR/RUB для всех остальных валют.
2026-09-09 00:32:22 +03:00
ZProger
8b87619e37
fix: контент растягивается на всю ширину при свёрнутом меню
...
Убрал фиксированный max-w-6xl у основного контейнера — раньше
освободившееся при сворачивании сайдбара место просто пропадало.
2026-09-08 21:46:14 +03:00
ZProger
fcbd217915
feat: добавить уровень риска для крипто-холдингов
...
Риск (низкий/средний/высокий) задаётся при добавлении монеты и
редактируется прямо в таблице холдингов. Добавлена вкладка "Уровни
риска" в карточке портфеля с разбивкой % по риск-тирам, только для
крипты. Заодно поправлено округление процентов в риск-карточках.
2026-09-08 21:46:09 +03:00
ZProger
e4b163df21
docs: упростить требование по коммитам, убрать UPDATES.md
2026-09-08 20:32:14 +03:00
ZProger
2fa61005b5
docs: добавить пример вызова API из чат-бота (Telegram/n8n)
2026-09-08 20:30:11 +03:00
whaley
12c3a7d79c
add "debit_card" as a new AccountType ( #16 )
2026-09-08 20:03:13 +03:00
ZProger
ae89311a8e
fix: чинит тесты 90d-доходности, падавшие в CI без CoinGecko-ключа
2026-09-04 03:06:59 +03:00
ZProger
9c98f5df96
fix: seed app_settings.currency от AURUM_DEFAULT_CURRENCY на чистой установке
2026-09-04 03:03:29 +03:00
ZProger
c0f446b3b3
fix: копеечные цены крипты не округлялись в $0
2026-09-04 02:37:09 +03:00
ZProger
bd97e316cc
fix: сортировать активы в «Криптовалюте» по вложенной сумме
...
Монеты в таблице активов шли в алфавитном порядке (сортировка по
имени в SQL-запросе) — с импортированными портфелями это выглядело
хаотично. Теперь список отсортирован по cost basis (сколько денег
реально вложено в монету) от большего к меньшему; полностью
проданная позиция уходит в конец списка, а не в начало.
2026-09-04 02:26:37 +03:00
ZProger
cd125e9e45
fix: график крипты открывать за всё время, лучший/худший рост — по выбранному периоду
...
График во вкладке «Криптовалюта» теперь по умолчанию показывает всю
историю, а не 30 дней — короткое окно у портфеля, растущего годами,
часто попадало на локальную просадку и выглядело демотивирующе.
Плитки «Лучший рост» и «Худшее падение» раньше всегда считались за
24 часа. Теперь они следуют за диапазоном, выбранным у графика
(7д/30д/90д/всё время): для 7д/30д используются закэшированные данные
CoinGecko, для «всё время» — метрика за 1 год (дальше бесплатный
тариф CoinGecko историю не отдаёт), а для 90д — отдельный запрос по
каждой монете, который выполняется только когда пользователь реально
выбрал этот период.
2026-09-04 02:18:31 +03:00