Commit Graph
434 Commits
Author SHA1 Message Date
風雪 dc62de00a3 feat(share): node share (uri/qr/client_yaml) + Access Profile in URIs 2026-08-29 00:10:35 +08:00
風雪 bb875405b3 fix(scripts): update.sh match SHA256SUMS with or without ./ prefix 2026-08-28 23:46:47 +08:00
風雪 e816931b1b fix: hard-delete failed create rollbacks; update.sh SHA256SUMS basename match 2026-08-28 23:45:28 +08:00
風雪 2c8b7fc887 fix(listener): reclaim soft-deleted names so UNIQUE(name) can be reused 2026-08-28 23:32:28 +08:00
風雪 69df7e5165 fix(db): Unscoped dedupe so unique indexes cannot block panel boot 2026-08-28 22:48:56 +08:00
風雪 5ed9577e1b fix(db): unique sub_token; InitDB dedupe before unique indexes 2026-08-28 22:35:48 +08:00
風雪 87adcdfcb7 fix(security): cluster SSRF helpers + private URL rejection 2026-08-28 22:35:04 +08:00
風雪 9d95c97e7e fix(security): InitDB dedupe + cluster private URL hardening 2026-08-28 22:33:19 +08:00
風雪 e0e301cfc4 fix(security): unique listener/sub_token indexes; harden cluster SSRF 2026-08-28 22:32:29 +08:00
風雪 5ea9b4ea28 fix: unique listener names; ignore listeners in custom config fragments 2026-08-28 00:26:00 +08:00
風雪 af05ca48bc fix: reject duplicate listener names; strip listeners from config fragments 2026-08-28 00:24:30 +08:00
風雪 80986710f5 fix(release): bare SHA256SUMS names; attach management scripts 2026-08-28 00:10:29 +08:00
風雪 5cdbedaabf fix: restore install.sh + SHA256SUMS basename matching 2026-08-28 00:09:09 +08:00
風雪 52a66c88cc fix: SHA256SUMS basename match; attach scripts to release assets 2026-08-28 00:04:57 +08:00
風雪 571d379338 revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
revert: remove root install.sh thin entry (s-ui style)
2026-08-27 23:54:53 +08:00
風雪 1a79102cac revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
2026-08-27 23:54:52 +08:00
風雪 5b63f3e8d7 revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
2026-08-27 23:54:51 +08:00
風雪 8e4dc22e15 revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
2026-08-27 23:54:50 +08:00
風雪 819f77c3be revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
2026-08-27 23:54:49 +08:00
風雪 29ccad2597 revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
revert(scripts): restore pre-s-ui menu/banner versions
2026-08-27 23:54:48 +08:00
風雪 6a859d2e60 feat(install): s-ui style finish banner with panel URLs 2026-08-27 23:18:22 +08:00
風雪 392649c005 feat(scripts): s-ui style installer UX — colors, menu, panel URL, one-liner 2026-08-27 23:15:09 +08:00
風雪 4455f1546b fix: Hy2 quick-setup self-signed TLS; CI workflow_dispatch; release-ready 2026-08-27 22:57:24 +08:00
風雪 4585f304a6 fix(scripts): checksum verify, versioned update, backup retention, safer traps 2026-08-25 00:02:36 +08:00
風雪 6cc1c500ba fix: URI export short-id array, Reality sni/fp, VLESS encryption=none 2026-08-24 23:36:16 +08:00
風雪 0dc22055d4 fix: align Reality short-id, SS2022 password, and client URI mapping with MetaCubeX wiki 2026-08-24 23:34:25 +08:00
風雪 8df83b9c8d fix: close unclosed JSX div in Listeners.tsx 2026-08-23 14:40:39 +00:00
風雪 3c1abe0345 fix(ui): quick setup shows only fields for selected preset; revert create-form scope 2026-08-22 16:10:39 +00:00
風雪 17f1ab4311 fix(ui): protocol-scoped listener form fields 2026-08-22 16:01:39 +00:00
風雪 95c79ffe51 fix(i18n): add listeners.bind and publicHost 2026-08-22 15:48:36 +00:00
風雪 ea82571621 fix: move Quick Setup modal inside Listeners component (TS2304) 2026-08-22 15:41:34 +00:00
風雪 18b94bb092 feat: one-click inbound quick setup (VLESS Reality, SS, Hy2, Trojan Reality) 2026-08-22 15:31:44 +00:00
風雪 79484eef50 fix: clipboard copy works on HTTP 2026-08-22 15:07:54 +00:00
風雪 7dae775208 docs: add complete user guide under docs/wiki 2026-08-22 14:54:22 +00:00
風雪 4f92ba68fd fix(i18n): add missing cluster and users.subSingbox keys 2026-08-22 14:40:58 +00:00
風雪 a96bf30564 fix: CI — add notify_on_cpu to TelegramSettings type 2026-08-21 16:46:35 +00:00
風雪 475c1fc172 style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
style: gofmt for CI
2026-08-21 16:40:11 +00:00
風雪 eedde08e2d chore: remove remaining wording from AGENTS.md 2026-08-21 16:11:18 +00:00
風雪 8d116f9c61 feat: multi-node remote panel registry, health-all, restricted remote control 2026-08-21 15:56:21 +00:00
風雪 2ec1f0d897 fix: audit — CPU warn DB write; sub Profile-Web-Page-Url token fallback 2026-08-21 15:41:44 +00:00
風雪 7d9515309d feat: subscription path formats headers encrypt TG CPU warn 2026-08-21 15:27:58 +00:00
風雪 885a68e57f chore: remove internal parity wording from comments and UI 2026-08-20 15:40:26 +00:00
風雪 b36df8f029 fix: audit — access-token export uses PublicHost; robust IPv6 URI host 2026-08-20 15:05:21 +00:00
風雪 857f8e7ec5 feat: full IPv6 support for panel, listeners, and share links 2026-08-20 14:44:10 +00:00
風雪 31e12d56db fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
fix: dashboard CPU/memory/disk metrics units and sampling
- Memory and disk used/total now returned as bytes (frontend formatBytes)
- Clamp percents to 0–100; improve CPU sampling (200ms + fallback)
- Disk usage probes /, HOME, panel data dirs
- Dashboard: safer formatBytes and Progress clamping
2026-08-20 05:34:07 +00:00
風雪 8f7a1e654b fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
fix: audit — persist login TG notify; repair share modal; sing-box guard
- Settings save now includes notify_on_login (was toggled but never sent)
- TelegramSettings TS type includes notify_on_login
- Users share modal: fix broken JSX, proper Sing-box link with ?/&
- Sing-box generator guards empty tag list before selector default
2026-08-20 04:36:57 +00:00
風雪 479ef4e0fa feat: more parity — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more 3x-ui parity — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more 3x-ui parity — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more 3x-ui parity — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more 3x-ui parity — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
feat: more panel features — sing-box sub, login TG notify, WARP, search
- Native sing-box JSON subscription (?target=singbox) + UA auto-detect
- Enhanced ?format=info with multi-format links and blocked flag
- Telegram notify on panel login (settings toggle)
- Telegram /backup command; listener list ?q= / enabled filters
- System WARP WireGuard YAML template endpoint
- Frontend: Sing-box share link, login notify switch, listener search
2026-08-20 03:38:36 +00:00
風雪 6f5e13d50c fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete (3x-ui recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
fix: audit — do not undo ApplyConfig rollback; hard-delete proxy users
- Startup soft-fail no longer re-writes a failed Mihomo candidate after
ApplyConfig already restored/removed the previous file
- SaveConfig treats missing config as first-boot (errors.Is NotExist)
- Proxy user / binding deletes are Unscoped so username+UUID unique
indexes can be reused after delete ( recreate parity)
- Subscription Content-Disposition no longer overwrites Profile-Title name
2026-08-20 02:11:24 +00:00
風雪 af555c9dcc feat: parity — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: 3x-ui parity — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: 3x-ui parity — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: 3x-ui parity — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: 3x-ui parity — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition (3x-ui style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
feat: panel features — batch users, sub headers, telegram cmds, geofiles
- User list filters (?q/enabled/online/blocked) and POST /users/batch
- Subscription Profile-Title / Content-Disposition ( style)
- Telegram: /restart /deldepleted /search
- System: POST /system/geofiles/update (MetaCubeX geoip/geosite)
- Frontend: batch toolbar + geo update button + i18n
2026-08-20 01:24:43 +00:00
風雪 6ffd8e41c8 fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
fix(i18n): add missing Settings/Users keys and wire Ant Design locale
- Translate panel SSL, subscription page, traffic/expiry alerts, depleted cleanup, share formats
- t() accepts optional fallback when a key is missing
- ConfigProvider uses zh_CN / en_US based on active locale
2026-08-20 01:08:31 +00:00