S-UI-X-Extended v1.0.1-beta3
This release fixes the sing-box 1.11+ legacy inbound field warning. The database migration runs automatically on startup, import, and migration commands. No manual database edit is required.
sing-box inbound cleanup
-
Removed the inbound advanced UI fields for
sniff,sniff_override_destination, andsniff_timeout. -
Removed the same fields from frontend inbound types and locale text. Route-rule sniff actions remain available in the route rule editor.
-
The Apply inbound recommendations flow no longer writes inbound-level sniff options. If stale form data contains those keys, the recommendation helper deletes them instead of setting defaults.
-
Backend inbound JSON output now drops legacy inbound rule-action fields before sing-box sees the config:
sniff,sniff_override_destination,sniff_timeout,domain_strategy, andudp_disable_domain_unmapping.
Automatic migration
-
Existing inbound
sniff: truesettings are moved to scoped route rules withaction: "sniff". -
Existing inbound
sniff_timeoutvalues are copied to the sniff route action astimeout. -
Existing inbound
domain_strategyvalues are moved to scopedaction: "resolve"rules withstrategy. -
Existing inbound
udp_disable_domain_unmappingvalues are moved to scopedaction: "route-options"rules. -
sniff_override_destinationis removed from inbound options. sing-box does not provide a matching route-action field for it. -
Migrated rules are scoped by inbound tag and inserted before existing routing rules, matching sing-box behavior for deprecated inbound sniff fields. Equivalent existing rules are not duplicated.
-
The old
config.jsonto database migration path now preserves these settings instead of deleting them while importing pre-database installs.
Compatibility notes
-
The migration is idempotent. Running it more than once does not add the same scoped rule again.
-
Current-version databases are also checked, so users already on beta2 get the legacy inbound field migration when beta3 starts.
-
Legacy inbound fields submitted by old or external clients are removed after save. The stored inbound options and generated core config no longer keep those keys.
Verification
go test ./cmd/migration ./database/migrateutil ./database/model ./database ./service -run 'TestTo12MovesLegacy|TestMigrateLegacy|TestInboundJSONDrops|TestAdapt|TestConfigRoundTripVLESSInboundLegacyFieldsMigrateToRouteRules'passed.go test ./core -run TestOptionCoverageNoMissingFieldspassed.cd frontend && npm test -- --runpassed.cd frontend && npm run buildpassed.cd frontend && npm run lintpassed.
S-UI-X-Extended v1.0.1-beta3
Этот релиз исправляет предупреждение sing-box 1.11+ о legacy inbound fields. Миграция базы запускается автоматически при старте, импорте и через migration command. Ручное редактирование базы не требуется.
Очистка inbound для sing-box
-
Из advanced UI для inbound удалены поля
sniff,sniff_override_destinationиsniff_timeout. -
Эти же поля удалены из frontend inbound types и локалей. Route-rule sniff actions остаются доступны в редакторе route rules.
-
Apply inbound recommendations больше не записывает inbound-level sniff options. Если в старых данных формы есть такие ключи, helper удаляет их вместо установки default values.
-
Backend теперь убирает legacy inbound rule-action fields из inbound JSON до передачи конфига в sing-box:
sniff,sniff_override_destination,sniff_timeout,domain_strategyиudp_disable_domain_unmapping.
Автоматическая миграция
-
Существующие inbound
sniff: trueпереносятся в scoped route rules сaction: "sniff". -
Значения inbound
sniff_timeoutкопируются в sniff route action какtimeout. -
Значения inbound
domain_strategyпереносятся в scoped rules сaction: "resolve"иstrategy. -
Значения inbound
udp_disable_domain_unmappingпереносятся в scoped rules сaction: "route-options". -
sniff_override_destinationудаляется из inbound options. У sing-box нет соответствующего route-action поля. -
Мигрированные rules привязаны к inbound tag и вставляются перед существующими routing rules, как это работало для deprecated inbound sniff fields в sing-box. Эквивалентные existing rules не дублируются.
-
Старый путь миграции
config.jsonв базу теперь сохраняет эти настройки, а не удаляет их при импорте установок до перехода на базу данных.
Совместимость
-
Миграция идемпотентна. Повторный запуск не добавляет один и тот же scoped rule снова.
-
Базы с текущей версией тоже проверяются, поэтому пользователи beta2 получают миграцию legacy inbound fields при запуске beta3.
-
Legacy inbound fields, отправленные старыми или внешними клиентами, удаляются после сохранения. Stored inbound options и generated core config больше не держат эти ключи.
Проверка
go test ./cmd/migration ./database/migrateutil ./database/model ./database ./service -run 'TestTo12MovesLegacy|TestMigrateLegacy|TestInboundJSONDrops|TestAdapt|TestConfigRoundTripVLESSInboundLegacyFieldsMigrateToRouteRules'прошел.go test ./core -run TestOptionCoverageNoMissingFieldsпрошел.cd frontend && npm test -- --runпрошел.cd frontend && npm run buildпрошел.cd frontend && npm run lintпрошел.