446caa37d4420c8518055cedbf8a3e0735ee53df
23
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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 | ||
|
|
149dab30b1 | docs: NAT and custom panel port guide | ||
|
|
1e2ab3488f | docs: NAT and custom panel port guide | ||
|
|
f60c3b218f | docs: NAT and custom panel port guide | ||
|
|
5b3836f9ae | docs: NAT and custom panel port guide | ||
|
|
7dae775208 | docs: add complete user guide under docs/wiki |