diff --git a/Changelog.md b/Changelog.md
index ddedcb2f4..3187e4fa9 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -24,14 +24,18 @@
🐞 修复问题
+- 修复全局模式缺少 `GLOBAL` 策略组,无法单独选择全局出口
+
✨ 新增功能
+
🚀 优化改进
+
diff --git a/src/components/proxy/use-render-list.ts b/src/components/proxy/use-render-list.ts
index b819b8ac5..d62ffdab6 100644
--- a/src/components/proxy/use-render-list.ts
+++ b/src/components/proxy/use-render-list.ts
@@ -206,17 +206,20 @@ export const useRenderList = (
verge?.default_latency_timeout,
])
+ const renderGroups = useMemo(() => {
+ if (!proxyView) return []
+ if (mode === 'rule') return proxyView.groups
+ const global = proxyView.global ? [proxyView.global] : []
+ return mode === 'global' ? [...global, ...proxyView.groups] : global
+ }, [mode, proxyView])
+
// Every group this list draws, so a test settling in any of them re-sorts that group.
const renderedGroupNames = useMemo(() => {
if (!proxyView) return []
if (isChainMode)
return selectedGroup ? [selectedGroup] : [CHAIN_DELAY_GROUP]
- return mode === 'rule' || mode === 'global'
- ? proxyView.groups.map(({ name }) => name)
- : proxyView.global
- ? [proxyView.global.name]
- : []
- }, [isChainMode, mode, proxyView, selectedGroup])
+ return renderGroups.map(({ name }) => name)
+ }, [isChainMode, proxyView, renderGroups, selectedGroup])
const groupDelays = useGroupsDelays(renderedGroupNames)
const groupCacheRef = useRef