From 6a74e8e739c3d2db2db737b1ecb0117eb88a4129 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 18 May 2026 16:07:07 +0800
Subject: [PATCH] feat: show background activity status

---
 VoiceSnapGo/internal/permissions/permissions_darwin.go |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/VoiceSnapGo/internal/permissions/permissions_darwin.go b/VoiceSnapGo/internal/permissions/permissions_darwin.go
index 6879a75..8a66fc2 100644
--- a/VoiceSnapGo/internal/permissions/permissions_darwin.go
+++ b/VoiceSnapGo/internal/permissions/permissions_darwin.go
@@ -42,7 +42,10 @@
 */
 import "C"
 
-import "os/exec"
+import (
+	"os/exec"
+	"voicesnap/internal/startup"
+)
 
 // Statuses returns the current macOS privacy permission state.
 func Statuses() []Status {
@@ -65,6 +68,12 @@
 			State:    grantedState(C.inputMonitoringGranted() != 0),
 			Required: true,
 		},
+		{
+			ID:       IDBackground,
+			Granted:  startup.IsEnabled(),
+			State:    enabledState(startup.IsEnabled()),
+			Required: false,
+		},
 	}
 }
 
@@ -80,6 +89,9 @@
 		openSettings(id)
 	case IDInputMonitoring:
 		C.requestInputMonitoring()
+		openSettings(id)
+	case IDBackground:
+		_ = startup.SetEnabled(true)
 		openSettings(id)
 	}
 }
@@ -110,6 +122,13 @@
 	return "denied"
 }
 
+func enabledState(enabled bool) string {
+	if enabled {
+		return "enabled"
+	}
+	return "disabled"
+}
+
 func openSettings(id string) {
 	url := "x-apple.systempreferences:com.apple.preference.security"
 	switch id {
@@ -119,6 +138,8 @@
 		url = "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"
 	case IDInputMonitoring:
 		url = "x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent"
+	case IDBackground:
+		url = "x-apple.systempreferences:com.apple.LoginItems-Settings.extension"
 	}
 	_ = exec.Command("open", url).Start()
 }

--
Gitblit v1.9.3