Reverted the previous 'fix' (233d806) that removed the host fallback.
VMess 'host' field IS part of v2rayN's VmessQRCode schema — it
specifies the WebSocket Host header, separate from 'add' (server addr).
The CDN fix (b317042) correctly added the fallback:
1. ws-headers.Host (explicit)
2. SNI / servername (TLS config)
3. server address (for CDN where WS Host = CDN domain)
The test TestVMessURIOmitsWebSocketHostWhenUnset was WRONG — it
asserted host should be absent when no ws-headers.Host is set, but
the fallback to server address is the intended behavior for CDN.
Renamed test to TestVMessURIFillsHostFromServerAddress and inverted
the assertion: host should equal the server address when no explicit
Host header or SNI is configured.
Tests: 24/24 packages PASS.
The CDN access fix (b317042) added a fallback that set the VMess
'host' field from the server address when no ws Host header or SNI
was configured. This broke TestVMessURIOmitsWebSocketHostWhenUnset
which correctly asserts that v2rayN's VmessQRCode schema has no
'host' field — the server address goes in 'add', not 'host'.
Fix: only set obj["host"] from:
1. Explicit ws-headers Host (user configured)
2. SNI/servername (TLS config)
Never from the server address (that's what 'add' is for).
Tests: 24/24 packages PASS (including all 4 VMess URI tests).
Post-process every client proxy (YAML) with access-profile SNI, CDN TLS
for WS/gRPC, and fingerprint. URI path already uses applyURIAccessProfile
globally; VMess Host and AnyTLS fp defaults tightened.
WARP domains now expand into visible DOMAIN-* rules (API + UI) on save.
Apply rebuilds them from the domain list, strengthens sniffer
(parse-pure-ip, force-dns-mapping), and always offers WARP as a rule target.
Soft-deleted panel_settings rows still occupied UNIQUE(key), so
re-registering WARP failed with constraint 2067. Use Unscoped
lookup/save and hard-delete on account removal; same for server-routing.
Store rule-providers on server-routing, emit official rule-providers
block into serving config, and expose PUT hot-update via core
/providers/rules/{name}. Panel UI on Routing → Server egress.
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
docs: remove third-party panel name references from copy
Drop and external m-ui product names from docs, UI strings,
and code comments. Keep functional descriptions of server egress and WARP.
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
feat(warp): persist WARP account, server inject, no server templates
Persist Cloudflare WARP account, inject outbound WARP into serving
Mihomo, route warpDomains on server egress. Remove client community
templates from the server tab; domains editor on Routing → Server egress.
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
fix(ui): server-egress templates separate from client packs
Server tab no longer offers community client rule packs. Presets are
MATCH/DIRECT, private DIRECT, and optional AI→WARP (needs WARP proxy).
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
fix(ui): compact desktop sidebar icons when collapsed
Global menu height:auto + padding-block for long i18n labels was also
applied in collapsed mode, stretching icon-only rows. Override collapsed
items to fixed 40px height and pass inlineCollapsed to Menu.
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
docs: sync routing (server egress) and WARP limits
Document Client vs Server tabs, server-routing API, and that WARP
register is manual (no auto AI/streaming unlock pipeline).
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
feat(routing): server-side Mihomo egress for panel process
Store server-routing (rules/proxies/groups) separately from client
visual-config. Generator applies it to the serving core instead of a
hard-coded MATCH,DIRECT. Routing UI gains Client / Server tabs.
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.
fix(sub): align sing-box export with migration 1.11–1.15
Drop deprecated DNS rule ip_is_private without match_response (1.14/1.16).
Keep typed DNS servers, TUN without stack, route sniff/hijack-dns actions,
and route-level private direct per official migration/deprecated docs.