4.0.0 (2026-08-03)
⚠ BREAKING CHANGES
- config: меняется не только имя переменной, но и формат значений — вместо UUID панельных пользователей нужны числовые id. Автоматически сконвертировать нельзя: uuid из 3.0.0 исчез, и панель их больше не знает.
New Features
- admin: add Bedolaga-first User Detail contracts (57e2794)
- cabinet: панельная идентичность и контракты под 3.0.0 (2b97440)
- config: TRAFFIC_EXCLUDED_USER_UUIDS переименован в _USER_IDS (88a92f7)
- db: числовая панельная идентичность remnawave_id (898bcf4)
- remnawave: бэкфил панельной идентичности (b97e5f6)
- remnawave: клиент API под 3.0.0 (c763514)
- remnawave: сервисный слой на числовую идентичность (6da10bc)
- remnawave: хендлеры, миддлвари и Web API под 3.0.0 (c897d38)
Bug Fixes
- admin: лог при пропуске синка панели у подписки без UUID (3d77bc2)
- admin: отмена рекуррента Lava при сбросе выбранной подписки (2f2006a)
- notifications: MissingGreenlet при уведомлении о регистрации по кампании (0f1beff)
- remnawave: grace-сессия строки-донора не теряет идентичность (dc09e78)
- remnawave: бэкфил не блокируется одной парой и отдаёт id живой строке (5cd3adb)
- remnawave: бэкфил не откатывался целиком на single-tariff (d461784)
- remnawave: бэкфилл падал на старте и брал не тот режим (deeb24f)
- remnawave: бэкфилл привязывал чужой аккаунт, создание падало на индексе (98e63b0)
- remnawave: вебхук не проверял соседей, и подписи тестов врали (70d35c1)
- remnawave: защита от противоречивых uuid не работала на первом прогоне (928ce20)
- remnawave: карта uuid не праймилась, холостой прогон писал в БД (e9445ee)
- remnawave: ложный успех при удалении устройств, окно суток и happ-ссылка (b007de8)
- remnawave: не терять и не подсовывать протухшую идентичность подписки (bef6e6d)
- remnawave: несовпадение владельца снова вело к очистке, а не к перепривязке (ea4db92)
- remnawave: повторный прогон бэкфила и выбор живой подписки (b515c3d)
- remnawave: поля, которых нет в контракте 3.0.0, и след прогона бэкфила (babf846)
- remnawave: порядок UPDATE'ов при переносе панельного id (28b01f1)
- remnawave: протухший id больше не решает за пользователя (83c6415)
- remnawave: след прогона врал, а защита индекса не мешала записи в панель (fe3dc5b)
- remnawave: суточная проверка снова не сработала бы, а граница id ослабла (3c31285)
- remnawave: точный ключ не должен проигрывать догадке и ронять синк (d2fd3d5)
- remnawave: холостой прогон бэкфила называл свой отчёт «conflicts» (6b7204b)
- settings: осмысленные категории для настроек, начинающихся с глагола (e6f1505)
Documentation
- remnawave: точное обоснование раздельных flush при переносе id (6eb80c6)