fix: harden home clash-mode card against /configs read failures

Recover from controller read/switch failures on the mode card instead of
showing a bare "communication error":

- fall back to the tolerant get_clash_mode command (then runtime config)
  when the live /configs mode is unavailable,
- optimistically reflect the clicked mode and write it through to the
  getClashConfig cache so a failed refetch can't flash back the old value,
- surface patch failures via showNotice on both the home card and the
  proxies page (patchClashMode can now reject), and
- revalidate getClashMode/getRuntimeConfig on refresh-clash-config so a
  once-empty fallback can recover.
This commit is contained in:
wonfen
2026-06-27 15:30:20 +08:00
parent d0d2f4e4f5
commit 5a96fdd9a2
5 changed files with 71 additions and 12 deletions
+6
View File
@@ -85,6 +85,12 @@ export async function getClashInfo() {
return invoke<IClashInfo | null>('get_clash_info')
}
// Fault-tolerant current proxy mode read (does not depend on mihomo /configs
// strict BaseConfig deserialization); used as a fallback for the home mode card.
export async function getClashMode() {
return invoke<string | null>('get_clash_mode')
}
// Get runtime config which controlled by verge
export async function getRuntimeConfig() {
return invoke<IConfigData | null>('get_runtime_config')