Ariver
2026-05-06 f7ed0fe62e2792ede1000fd13370f9528bb68a03
checkpoint: v3.1.2 — Dock动态生效 + 开机启动默认勾选
3 files modified
44 ■■■■■ changed files
Apptag/ApptagApp.swift 38 ●●●●● patch | view | raw | blame | history
Apptag/Info.plist 2 ●●● patch | view | raw | blame | history
CHANGELOG.md 4 ●●●● patch | view | raw | blame | history
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")
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>
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)