-
Balance Server v1.1.0
Stablereleased this
2026-10-31 19:20:34 +00:00 | 0 commits to main since this releaseСервер синхронизации для контракта экосистемы v2: общие бюджеты, вложения и новые типы записей для счетов, валют, регулярных платежей, целей и долгов. Работает с BalanceFlutter 4.3.0 и BalanceWatch 3.2.0; старые клиенты продолжают работать как раньше.
Что нового
- Контракт v2 (
docs/CONTRACT_V2.md) —GET /v1/capabilitiesсообщает клиентам, что умеет сервер./v1/syncпринимает 11 типов записей: к транзакциям, категориям и бюджетам добавились счета, переводы, регулярные платежи, цели, долги, курсы валют, настройки и вложения. - Общие бюджеты — отдельные пространства данных со своим курсором (
/v1/ledgers). Владелец создаёт пространство и приглашает участников одноразовым кодом на 7 дней (на сервере хранится только хеш кода); участники могут выйти, владелец — удалить участника или всё пространство. Пространство выбирается заголовкомX-Balance-Ledger. - Вложения (фото чеков, PDF) —
PUT/GET /v1/attachments/{sha256}: проверка SHA-256, размера (до 10 МиБ) и типа (JPEG, PNG, HEIC, PDF), повторная загрузка идемпотентна. Файлы хранятся на диске и удаляются, когда на них больше не ссылается ни одна запись. - CORS — для новых маршрутов разрешены PUT, PATCH, DELETE и заголовок
X-Balance-Ledger, чтобы Web-клиент работал с вложениями и общими бюджетами.
Совместимость
- API v1 и личное пространство не изменились: ответы по-прежнему совпадают с эталонной Go-реализацией (
tools/compatibility.py). - Миграция базы только добавляет таблицы; база 1.0.0 подключается без ручных шагов.
- Клиенты v1 (нативные iOS/macOS и Android) не видят новых данных, а при правке операции теряют поля счёта, валюты и тегов — обновляйте клиенты вместе с сервером.
Установка
Docker-образ (amd64, arm64, armhf):
docker pull gitea.wthome.ru/balance/balanceserver:1.1.0Обновление с 1.0.0: остановить контейнер, сделать резервную копию тома
/data, запустить новый образ.Без Docker:
cargo build --locked --release(Rust 1.90+), затемtarget/release/balance-serverс переменнойBALANCE_JWT_SECRET.Конфигурация
Новая переменная
BALANCE_ATTACHMENTS_DIR— каталог вложений; по умолчаниюattachmentsрядом с базой (в Docker —/data/attachments, внутри того же тома). Остальные:BALANCE_ADDR,BALANCE_DB_PATH,BALANCE_JWT_SECRET(обязательна, ≥ 32 символов),BALANCE_ALLOW_REGISTRATION,BALANCE_ACCESS_TTL,BALANCE_REFRESH_TTL,BALANCE_CORS_ORIGINS— подробности в README.Важно
- Резервная копия теперь — это SQLite (с файлами
-wal/-shmили при остановленном сервере) и каталог вложений. - Лимит тела запроса 10 МиБ действует только для загрузки вложения; остальные запросы — 2 МиБ, как раньше.
- Для доступа из сети используйте HTTPS (reverse proxy): Apple-приложения разрешают HTTP только для
localhost.
Проверено
57 тестов,
cargo clippy -D warnings, сверка с эталонными ответами Go, интеграционный прогон BalanceFlutter (v1 и v2) против этого сервера, вход и синхронизация BalanceWatch в симуляторе watchOS.Downloads
- Контракт v2 (