main
55
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
8af3d34589 | docs: fix website URLs (/guide not /docs/guide) | ||
|
|
7bdf35ba5b |
docs: point technical guides at 3m-ui.top; keep docs/readme/
Full documentation lives on the VitePress site (zh + en). Repository docs/*.md are short stubs with links. Multilingual README files remain under docs/readme/. Offline AI install prompts (.txt) are retained. |
||
|
|
44ac4c9070 |
ui+docs: float page content on layout gray; document dashboard search
Drop the desktop full-width white content panel so Overview cards sit on the layout background like 3X-UI. Docs: pin bundled Mihomo example to v1.19.32 and note feature search / dashboard behavior. |
||
|
|
2a900f4b85 |
feat(routing): richer WARP domain syntax and optional global WARP egress
Domain lines support domain:/full:/keyword:/geosite: prefixes. Toggle warpGlobal sets MATCH,WARP while keeping Cloudflare control-plane DIRECT. |
||
|
|
5f6ad28148 |
fix(warp): report register save errors; clarify MASQUE vs server WireGuard
WARPRegister no longer swallows SaveWARPAccount failures. UI/docs note that server egress always injects WireGuard WARP; MASQUE is preview-only. |
||
|
|
4e4c657674 |
fix(warp): upsert panel_settings without UNIQUE key conflicts
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. |
||
|
|
96d4a8a432 |
feat(routing): Mihomo rule-providers with hot update
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.
|
||
|
|
95961c6cc2 |
fix(warp): make WARP domains actually work in server Mihomo
- ProxyMap always sets Cloudflare peer public-key, allowed-ips, remote-dns-resolve - Default peer key when registration omits peers - Surface ProxyMap errors at generate; clearer apply prompt for server egress - Domain rule builder hardened; unit test for warp domain injection |
||
|
|
1ddb808270 |
fix(i18n): declare WARP/routing keys; restore 3x-ui in acknowledgments
Unit test required en.ts keys used by Routing/Settings. Credits keep 3x-ui / s-ui as before. |
||
|
|
fec9733baa |
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. 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. |
||
|
|
0beaf396d1 |
docs(api): align OpenAPI with server-routing and WARP account
Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. docs(api): align OpenAPI with server-routing and WARP account Replace obsolete inject-warp; document GET/PUT server-routing, GET/POST/DELETE system/warp, and templates/warp register nosave. |
||
|
|
81df3a9e29 |
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. 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. |
||
|
|
eefc5cc889 | docs: zh-CN routing link for server egress | ||
|
|
ca2d4a3192 |
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). 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). |
||
|
|
addf8aee32 |
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. 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. |
||
|
|
38720e14c1 |
fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages
Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. fix(sub): sing-box DNS + mobile TUN MTU to stop broken web pages Proxy-only TUN without DNS left CSS/JS CDNs failing under SFA. Add dns.servers (UDP 8.8.8.8 via proxy), MTU 1500, mixed stack, strict_route off for Android compatibility. |
||
|
|
5e6cc8b604 |
fix(sub): sing-box 1.11+ route actions instead of inbound sniff
Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. fix(sub): sing-box 1.11+ route actions instead of inbound sniff Remove legacy inbound sniff (removed in 1.13). Use route rule actions sniff + hijack-dns per official migration guide. |
||
|
|
9fef35e238 |
feat(sub): inject default TUN inbound into sing-box JSON (#88)
SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. feat(sub): inject default TUN inbound into sing-box JSON (#88) SFI/SFM need a tun inbound to create the system VPN interface. Subscription docs now include tun-in + route.final=proxy alongside node outbounds. |
||
|
|
bcee7502ff |
docs: align panel SSL with DNS-01 wildcards
Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. docs: align panel SSL with DNS-01 wildcards Add panel-ssl.md; update README, installation, batch-certificate, and OpenAPI /system/ssl for challenge, Cloudflare token, and recovery notes. |
||
|
|
d283f38638 |
chore: move localized READMEs under docs/readme
Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. chore: move localized READMEs under docs/readme Keep root README.md as the canonical entry. Translations live in docs/readme/ with fixed relative links and a language index. |
||
|
|
b9e8d57971 |
fix(ci): repair i18n syntax; document GitHub OAuth
Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. fix(ci): repair i18n syntax; document GitHub OAuth Remove double comma in en/zh-CN locale settings keys that broke oxlint. Add OpenAPI paths, docs/github-oauth.md, and README security note. |
||
|
|
8bfa8b7034 |
feat(ssl): Let's Encrypt IP address certificates (shortlived)
When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. feat(ssl): Let's Encrypt IP address certificates (shortlived) When panel SSL domain is a public IP, obtain LE shortlived (~6 day) certs via ACME profile=shortlived + HTTP-01, with automatic renewal under 48h. Domain hostnames still use autocert as before. |
||
|
|
3bb1abe43a | docs: document POST /users/quick in OpenAPI and user guides | ||
|
|
feb8d6889a |
docs: document Cloudflare WARP (v1.3.6) across READMEs and routing
Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). docs: document Cloudflare WARP (v1.3.6) across READMEs and routing Add docs/warp.md, link from all language READMEs / feature tables, and clarify routing is client-only (WARP is Settings YAML, not server exit). |
||
|
|
52bb97c083 |
chore: remove Cloudflare WARP feature (panel, API, docs)
Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. chore: remove Cloudflare WARP feature (panel, API, docs) Drop register/inject endpoints, Settings/Routing UI, server-exit WARP path, and documentation. Client routing and inbound panel unchanged; server remains MATCH,DIRECT. |
||
|
|
a0ceb3a815 |
feat: server WARP exit for listener traffic (user → node → WARP IP)
When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. feat: server WARP exit for listener traffic (user → node → WARP IP) When visual-config contains wireguard/WARP outbounds, GenerateFinalConfig merges them into the serving Mihomo process and sets MATCH to that exit (optional CN DIRECT). Client community rules remain client-subscription only. |
||
|
|
ad35987e21 |
refactor: drop server-side split; visual routing is client-only
GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. refactor: drop server-side split; visual routing is client-only GenerateFinalConfig strips rules/proxy-groups/proxies from visual-config and forces MATCH,DIRECT on the serving Mihomo process. Panel Routing page remains the editor for client subscription YAML only. |
||
|
|
3b65c03d6c |
feat(sub): export panel routing groups/rules into client Mihomo YAML
Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. feat(sub): export panel routing groups/rules into client Mihomo YAML Client subscriptions now use visual-config proxy-groups and rules. Leaf groups that only listed DIRECT get subscription node names injected. Default remains PROXY+AUTO when routing was never customized. |
||
|
|
f11b686a5e |
fix(routing): community templates restore proxy-groups
YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. fix(routing): community templates restore proxy-groups YiXuan/echs/MyClash presets now write matching select groups (地区/代理/AI/TG 等) plus rules, not rules-only with a single PROXY. |
||
|
|
1a7cff051c |
feat(routing): community rule templates (MyClash, echs-top, YiXuanZX)
- Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes feat(routing): community rule templates (MyClash, echs-top, YiXuanZX) - Templates adapted for GEOSITE/GEOIP + PROXY group (server visual-config) - Auto-create PROXY select group when applying community presets - README acknowledgements; docs/routing.md notes |
||
|
|
c6ac347866 |
docs: align routing (structured rules, WARP inject) and API notes
Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. docs: align routing (structured rules, WARP inject) and API notes Add docs/routing.md; README feature links; OpenAPI paths for rules/groups/inject-warp. |
||
|
|
f2c86450c8 |
fix(ci): sync package-lock for lucide-react; document Lucide + cluster push
- Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note fix(ci): sync package-lock for lucide-react; document Lucide + cluster push - Regenerate frontend/package-lock.json (fixes npm ci Missing lucide-react) - CI: fall back to npm install if lock drifts - README(s): Ant Design + Lucide; cluster push by name - docs/cluster.md: multi-node push UX and API - docs/installation.md: frontend stack note |
||
|
|
79e6c778a1 | chore: remove HWID feature (subscription device binding) | ||
|
|
e89750f9d0 |
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
docs: align README/OpenAPI with per-node traffic, limits, backups
- docs/node-traffic.md; feature tables; installation backup cleanup note
- OpenAPI: traffic_multiplier, GET /users/{id}/node-traffic
|
||
|
|
aab6c17745 |
fix(hwid): more reliable device registration + client header aliases
- Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) fix(hwid): more reliable device registration + client header aliases - Upsert on (proxy_user_id, hwid); log registered/seen for diagnosis - Accept x-device-id / x-hardware-id / ?hwid= aliases - Response x-hwid-limit for v2rayTUN when limit active - Docs: which clients actually send HWID (Clash stock does not) |
||
|
|
fa1744eef7 |
fix(hwid): never 500 subscriptions; fail-open tracking when unlimited
Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors fix(hwid): never 500 subscriptions; fail-open tracking when unlimited Root cause: hwid_limit=0 still tried to INSERT/UPDATE devices; any DB error returned 500 and blocked the whole subscription (Happ always sends x-hwid). - limit<=0: best-effort track only, never deny - limit>0: require x-hwid; deny only when over device cap - Accept broader client HWID strings (4–128, strip controls) - Router: only 403 for MaxDevices/Required; ignore other errors |
||
|
|
b6996ae2fb |
docs: align README, OpenAPI, and docs with current limits/certs/subs
- Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate docs: align README, OpenAPI, and docs with current limits/certs/subs - Feature tables: IP 5s poll, HWID require x-hwid, sub_pull_limit, batch cert - docs/users-limits.md, batch-certificate.md, subscription-formats.md - OpenAPI ProxyUser + POST /nodes/batch/certificate |
||
|
|
05bf9a270e |
chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema
Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 chore: align MetaCubeX audit — mihomo v1.19.31, TUIC modes, VMess schema Per wiki.metacubex.one / KIMI audit: - Bump bundled mihomo to v1.19.31 (amd64-v1 / arm64 digests verified) - TUIC: panel keeps tuic-v4|tuic-v5; legacy "tuic" auto-detects token-only→v4 else v5 (YAML type always "tuic" per official inbound docs) - UI: token field only on tuic-v4; tuic-v5 does not accept token in form - VMess listener schema: drop allow-insecure (not in official VMess listener fields) - Docs: version references → v1.19.31 |
||
|
|
e48fb1008d |
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
docs(ai-prompt): centralize install prompt and add curl-to-clipboard
Move the AI assistant install prompt into a single source of truth
(docs/ai-install-prompt.{md,zh.txt,en.txt}) so it no longer diverges
across README.md, README.en.md, README.zh-CN.md and docs/installation.md.
Add a one-liner that fetches the plain-text prompt straight to the
clipboard (pbcopy / xclip / wl-copy / Set-Clipboard), removing manual
copy-paste of a large block from rendered READMEs. The prompt content
itself is unchanged in spirit and still only runs the official
install.sh, with downloads verifying SHA256SUMS.
Prompt refinements (faithful to official script behavior):
- note CPU arch (amd64/arm64) and init system (systemd/OpenRC) checks
- mention sudo 3m-ui reset-admin for a lost one-time password
- explicitly forbid swapping third-party mirrors
|
||
|
|
715cec2ecd |
docs: add AI assistant install prompt (official script only)
Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. docs: add AI assistant install prompt (official script only) Copy-paste prompts for ChatGPT/Claude/Cursor in README (zh/en), zh-CN README, and installation.md. Instruct assistants to use only the official curl | sudo sh installer and not invent third-party sources. |
||
|
|
9471368afd |
perf: compress and cache embedded frontend assets (#54)
perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) perf: compress and cache embedded frontend assets (#54) |
||
|
|
3ec69d55de | feat(mihomo): persistent core updates with rollback (#53) | ||
|
|
3a5b0d7e66 |
feat: sub path/port, user groups/tags/cycle renew, export links, WARP register
- server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles feat: sub path/port, user groups/tags/cycle renew, export links, WARP register - server.sub_path / sub_port / env overrides; custom /sub/:token + optional second listener - subscription URLs use configured path; legacy API path kept - proxy users: group, tags, traffic_reset_days, expire_renew_days + background cycle job - GET /users/export-links for one-click subscription link export - POST /system/templates/warp/register (Cloudflare WARP one-click) + Settings UI - Share page export-all; Users form fields for group/tags/cycles |
||
|
|
d0b53dcc9e |
feat(listeners): verify client connectivity and expose diagnostics
Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. feat(listeners): verify client connectivity and expose diagnostics Inspect listener readiness and test exported client endpoints with isolated Mihomo clients. Preserve public addresses, ports and protocol settings, report diagnostic stages, and repair generated access SNI fields. |
||
|
|
2e6256fb6a |
feat(distribution): add complete installation and recovery workflows
Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. feat(distribution): add complete installation and recovery workflows Ship stable-only Linux bundles and multiarch Docker images with a pinned Mihomo core. Share secure first-run initialization across native and container installs. Validate downloads before downtime, snapshot persistent state before updates, and restore the previous installation after a failed upgrade. Add backup, restore, healthcheck, and randomized administrator reset commands. Add release verification, lifecycle regression tests, and installation documentation. |
||
|
|
a3c5c3cd0f |
docs: 迁移至 3m-ui-docs 仓库 (Docusaurus)
文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) docs: 迁移至 3m-ui-docs 仓库 (Docusaurus) 文档已从本仓库迁移至独立的 3m-ui-docs 仓库,基于 Docusaurus 3 构建。 变更: - 删除 docs/ 目录(全部 18 篇 wiki 文档已迁移) - README.md 顶部添加迁移指引 新文档仓库: https://github.com/kazeyukiro/3m-ui-docs GitHub Wiki 已同步清空(仅保留迁移指引首页) |
||
|
|
1c24114581 |
docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO)
Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. docs: explain Mihomo verification behavior (THREE_M_UI_VERIFY_MIHOMO) Add section '四、Mihomo 核心的校验(说明)' to 验证Release签名.md: - Mihomo does not publish SHA256SUMS; we use GitHub Release API digest. - Three-tier verification: default (best-effort), VERIFY_MIHOMO=1 (enforce), INSECURE=1 (skip all). - Threat model: our 3m-ui binary is fully verified end-to-end; Mihomo is independent and protected by HTTPS + ELF smoke-test. Add item #11 to 安全建议.md summarizing the Mihomo verification stance. |
||
|
|
b81f91cb58 |
docs: add Release signature verification guide
Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. docs: add Release signature verification guide Add a new wiki page 验证Release签名.md covering: - Asset inventory (binaries, scripts, SHA256SUMS, cosign .pem/.sig) - Layer 1: integrity verification via SHA256SUMS (default, fail-closed) - Layer 2: authenticity verification via cosign keyless OIDC (opt-in) - Three verification modes: installer auto, manual, end-to-end example - v1.0.0 back-fill note (uses refs/heads/main identity) - FAQ (legacy releases, THREE_M_UI_INSECURE, keyless model, cosign trust) Cross-reference from: - 安装与升级.md: new '验证安装包签名(推荐)' section with cosign install + THREE_M_UI_VERIFY_COSIGN=1 usage for both install and update. - 安全建议.md: new item #10 '供应链验证' summarizing the two layers and warning against THREE_M_UI_INSECURE=1. - _Sidebar.md: add 验证Release签名 entry above 安全建议. |
||
|
|
7dca023678 | docs: NAT and custom panel port guide | ||
|
|
e930d6905e | docs: NAT and custom panel port guide |