diff --git a/ShadowsocksX-NG2/App/Composition/MainApp.swift b/ShadowsocksX-NG2/App/Composition/MainApp.swift index 1f50b785..d86d4741 100644 --- a/ShadowsocksX-NG2/App/Composition/MainApp.swift +++ b/ShadowsocksX-NG2/App/Composition/MainApp.swift @@ -74,6 +74,9 @@ struct ShadowsocksXNG2App: App { workspaceContent .modifier(WindowActivationPolicy(coordinator: windowActivation)) } + .commands { + DiagnosticsCommands() + } .defaultLaunchBehavior(launchPresentation) .defaultSize(width: 960, height: 640) .windowToolbarLabelStyle($toolbarLabelStyle) @@ -112,6 +115,19 @@ struct ShadowsocksXNG2App: App { } } +/// 应用名称菜单中的诊断窗口入口。 +private struct DiagnosticsCommands: Commands { + @Environment(\.openWindow) private var openWindow + + var body: some Commands { + CommandGroup(after: .appInfo) { + Button("诊断…") { + openWindow(id: DiagnosticsWindowState.sceneID) + } + } + } +} + /// 随窗激活策略与激活重试的真实 NSApp 落点。 @MainActor private final class NSAppWindowActivationApplier: WindowActivationPolicyApplying {