S-UI v1.5.5-beta1
Prerelease addressing two upstream subscription bugs reported on
alireza0/s-ui against the same code paths in s-ui-x.
Fixed
- VLESS
xtls-rprx-visionflow no longer leaks onto non-TCP transports
when a single client UUID is reused across multiple inbounds. The flow
is now stripped ongrpc,ws,http,httpupgrade, ... transports
in three places that build per-user payloads:fetchUsersByCondition
(panel-served sing-box config), JSON subscription rendering, and
shareablevless://link generation. This matches Xray-core's TCP-only
contract for vision and lets the same UUID serve a TCP+REALITY inbound
and a gRPC+TLS inbound side by side
(alireza0#1127). - Clash subscription
ws-opts.headersnow carriesHostagain. The
previous[]interface{}cast against the map-shaped header silently
dropped the header, which broke Mihomo's WebSocket handshake through
strict CDN / Nginx upstreams. When no explicit Host header is set,
the exporter now falls back to the TLSserver_nameso the upstream
always sees a Host that matches the SNI
(alireza0#1126).
Added
- Regression tests:
service/inbounds_vless_flow_test.go— vless+TCP keeps flow,
vless+grpc/ws/no-tls strips, vmess unaffected.util/genLink_vless_flow_test.go—vless://links emitflow
only when transport is TCP.sub/clashService_ws_host_test.go— explicit Host header survives
YAML round-trip; SNI fallback populatesws-opts.headers.Host.
Validation
go test ./...— all 26 packages PASS.cd frontend && npm run build— PASS.git diff --check— PASS.
Install
bash <(curl -Ls https://raw.githubusercontent.com/deposist/s-ui-x/main/install.sh) v1.5.5-beta1Русский
Prerelease с двумя точечными исправлениями subscription, поднятыми в
upstream alireza0/s-ui и затрагивающими ту же логику в s-ui-x.
- VLESS-флаг
xtls-rprx-visionбольше не утекает на не-TCP транспорты
при использовании одного UUID на нескольких inbound. Флаг снимается
дляgrpc,ws,http,httpupgradeи т.п. в трёх местах, где
собирается per-user payload:fetchUsersByCondition(panel-served
sing-box config), JSON-подписка, генерацияvless://ссылки. Один
UUID теперь корректно работает одновременно на TCP+REALITY и
gRPC+TLS inbound (alireza0#1127). - В Clash-подписке
ws-opts.headersснова содержитHost. Предыдущий
cast в[]interface{}молча отбрасывал map-структуру header, из-за
чего Mihomo получал 400 Bad Request за строгими CDN / Nginx. Если
явный Host не задан, экспортёр теперь берёт его из TLSserver_name,
чтобы upstream всегда видел Host, совпадающий с SNI
(alireza0#1126).