From f7ed0fe62e2792ede1000fd13370f9528bb68a03 Mon Sep 17 00:00:00 2001
From: Ariver <ar@MacBook-Air.local>
Date: Wed, 06 May 2026 18:39:07 +0800
Subject: [PATCH] checkpoint: v3.1.2 — Dock动态生效 + 开机启动默认勾选
---
Apptag/ApptagApp.swift | 38 ++++++++++++++++++++++++++++++++++++++
Apptag/Info.plist | 2 +-
CHANGELOG.md | 4 ++++
3 files changed, 43 insertions(+), 1 deletions(-)
diff --git a/Apptag/ApptagApp.swift b/Apptag/ApptagApp.swift
index adc2a53..a55758d 100644
--- a/Apptag/ApptagApp.swift
+++ b/Apptag/ApptagApp.swift
@@ -1,6 +1,7 @@
import SwiftUI
import AppKit
import Carbon
+import ServiceManagement
// MARK: - Application Entry Point
@@ -31,6 +32,31 @@
registerHotkey()
observeOtherWindows()
observeEditMode()
+ observeDockSetting()
+ setupLaunchAtLogin()
+ }
+
+ /// Observe Show in Dock changes so it takes effect immediately.
+ private func observeDockSetting() {
+ NotificationCenter.default.addObserver(
+ forName: UserDefaults.didChangeNotification,
+ object: nil, queue: .main
+ ) { _ in
+ let show = UserDefaults.standard.bool(forKey: "showDockIcon")
+ NSApp.setActivationPolicy(show ? .regular : .accessory)
+ }
+ }
+
+ /// Enable launch at login by default; prompt user if disabled.
+ private func setupLaunchAtLogin() {
+ let key = "launchAtLogin"
+ if UserDefaults.standard.object(forKey: key) == nil {
+ // First launch: enable by default
+ UserDefaults.standard.set(true, forKey: key)
+ try? SMAppService.mainApp.register()
+ } else if UserDefaults.standard.bool(forKey: key) {
+ try? SMAppService.mainApp.register()
+ }
}
// MARK: - Menu Bar
@@ -349,6 +375,7 @@
@AppStorage("displayMode") private var displayMode = "flat"
@AppStorage("hideAppNames") private var hideAppNames = false
@AppStorage("showDockIcon") private var showDockIcon = false
+ @AppStorage("launchAtLogin") private var launchAtLogin = true
@State private var allApps: [AppInfo] = []
@State private var tagColors: [String: Int] = [:]
@@ -415,6 +442,17 @@
// Tab 1: General
Form {
Section {
+ Toggle("Launch at login", isOn: $launchAtLogin)
+ .onChange(of: launchAtLogin) { _, enabled in
+ if enabled {
+ try? SMAppService.mainApp.register()
+ } else {
+ try? SMAppService.mainApp.unregister()
+ }
+ }
+ }
+
+ Section {
LabeledContent("App list style:") {
Picker("", selection: $displayMode) {
Text("Flat").tag("flat")
diff --git a/Apptag/Info.plist b/Apptag/Info.plist
index af5bbd5..e54d0ae 100644
--- a/Apptag/Info.plist
+++ b/Apptag/Info.plist
@@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>3.1.1</string>
+ <string>3.1.2</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e33c7a6..679971c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Apptag Changelog
+## [3.1.2] — 2026-05-06
+- 修复 Show in Dock 不生效:监听 UserDefaults 变化动态切换 activationPolicy
+- 新增 Launch at login(开机启动)开关,默认勾选,首次安装自动启用
+
## [3.1.1] — 2026-05-06
- 修复语言菜单勾选与实际语言不一致(`L10n.currentCode` 替代 UserDefaults)
--
Gitblit v1.9.3