| Apptag/ApptagApp.swift | ●●●●● patch | view | raw | blame | history | |
| Apptag/Info.plist | ●●●●● patch | view | raw | blame | history | |
| Apptag/ProcessSingleton.swift | ●●●●● patch | view | raw | blame | history | |
| CHANGELOG.md | ●●●●● patch | view | raw | blame | history | |
| Release/AppStore-7.8.6-20260531.0146/APP_STORE_ASSET_INVENTORY.md | ●●●●● patch | view | raw | blame | history | |
| Release/AppStore-7.8.6-20260531.0146/Archive/TagLauncher-7.8.6-20260531.0146-local-QA.dmg | patch | view | raw | blame | history | |
| Release/AppStore-7.8.6-20260531.0146/QA_RELEASE_EVIDENCE.md | ●●●●● patch | view | raw | blame | history | |
| Release/AppStore-7.8.6-20260531.0146/README.md | ●●●●● patch | view | raw | blame | history | |
| Scripts/window_logic_qa.sh | ●●●●● patch | view | raw | blame | history |
Apptag/ApptagApp.swift
@@ -208,10 +208,10 @@ configureApplicationMenuWhenAvailable(retries: 12) } /// Dock icon click → show overlay (same as menubar "Show TagLauncher") /// Reopening the already-running app must not implicitly show App Grid. /// App Grid is only opened by explicit launcher commands: main hotkey or status item/menu. func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool { guard Date() >= suppressReopenUntil else { return false } showOrFocusOverlay() return false // Suppress default "unhide all windows" behavior } @@ -1477,7 +1477,7 @@ } @objc private func handleExternalActivationRequest(_ notification: Notification) { let shouldShowOverlay = notification.userInfo?["showOverlay"] as? Bool ?? true let shouldShowOverlay = notification.userInfo?["showOverlay"] as? Bool ?? false guard shouldShowOverlay else { return } showOrFocusOverlay() } Apptag/Info.plist
@@ -19,15 +19,17 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>7.8.5</string> <string>7.8.6</string> <key>CFBundleVersion</key> <string>20260530.1744</string> <string>20260531.0146</string> <key>LSApplicationCategoryType</key> <string>public.app-category.utilities</string> <key>LSMinimumSystemVersion</key> <string>15.0</string> <key>LSMultipleInstancesProhibited</key> <true/> <key>LSUIElement</key> <true/> <key>NSHighResolutionCapable</key> <true/> <key>NSPrincipalClass</key> Apptag/ProcessSingleton.swift
@@ -31,7 +31,11 @@ } private static func handOffAndExit() -> Never { let shouldShowOverlay = !CommandLine.arguments.dropFirst().contains("--hide") let arguments = CommandLine.arguments.dropFirst() let shouldShowOverlay = arguments.contains("--show-overlay") if !shouldShowOverlay { NSApplication.shared.setActivationPolicy(.accessory) } let ownerInstance = NSRunningApplication .runningApplications(withBundleIdentifier: AppIdentity.bundleIdentifier) .filter { $0.processIdentifier != getpid() && !$0.isTerminated } CHANGELOG.md
@@ -1,5 +1,12 @@ # TagLauncher Changelog ## [7.8.6] — 2026-05-31 - 修复未按主快捷键时 App Grid 可能被重复启动或外部激活路径误唤出的问题;App Grid 现在只由主快捷键或状态栏显式命令打开 - 加固重复实例移交逻辑:默认不再显示 App Grid,非显示型重复实例先切到 accessory,避免产生多个 Dock 图标 - 窗口 QA 增加“重复启动不显示 App Grid、不增加 Dock 图标”的回归用例 - 版本号更新为 `7.8.6`,Build 更新为 `20260531.0146` ## [7.8.5] — 2026-05-30 - 优化设置页语言列表布局:语言页从两列改为三列,并使用下方空白区域,默认可显示更多语言选项 Release/AppStore-7.8.6-20260531.0146/APP_STORE_ASSET_INVENTORY.md
New file @@ -0,0 +1,17 @@ # App Store Asset Inventory This release pack freezes TagLauncher `7.8.6` build `20260531.0146`. ## Included - `Archive/TagLauncher-7.8.6-20260531.0146-local-QA.dmg` - `README.md` - `QA_RELEASE_EVIDENCE.md` - `APP_STORE_ASSET_INVENTORY.md` ## External Items Still Required For App Store Upload - Apple Developer Bundle ID selection/confirmation in App Store Connect. - Mac App Store signing certificate and provisioning profile. - Final App Store screenshots and metadata review before submission. Release/AppStore-7.8.6-20260531.0146/Archive/TagLauncher-7.8.6-20260531.0146-local-QA.dmgBinary files differ
Release/AppStore-7.8.6-20260531.0146/QA_RELEASE_EVIDENCE.md
New file @@ -0,0 +1,37 @@ # QA Release Evidence ## Build Under Test - Version: `7.8.6` - Build: `20260531.0146` - App: `/Users/ar/Projects/Taglauncher/build/TagLauncher.app` - DMG: `/Users/ar/Projects/Taglauncher/build/TagLauncher.dmg` - Archived DMG: `Archive/TagLauncher-7.8.6-20260531.0146-local-QA.dmg` - DMG SHA-256: `2664a188b3cb601cc86a36d12e4e4b3aae7fb28f7b470caa8cb0f5ff58ca8bef` ## Checks - Version metadata: - `CFBundleShortVersionString = 7.8.6` - `CFBundleVersion = 20260531.0146` - `LSUIElement = true` - Code signing: - `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app` - Result: passed - Disk image: - `hdiutil verify build/TagLauncher.dmg` - Result: passed - Window logic: - `APP_BUILD=20260531.0146 Scripts/window_logic_qa.sh` - Result: `ALL WINDOW LOGIC QA PASSED` - Duplicate launch regression: - Repeated `open -n build/TagLauncher.app` - Expected: one Dock tile, no App Grid - Result: passed ## Targeted Fix Coverage - Reopening an already-running app no longer implicitly shows App Grid. - Duplicate-instance notifications default to no overlay. - Non-show duplicate instances start with accessory activation policy to avoid Dock tile multiplication. Release/AppStore-7.8.6-20260531.0146/README.md
New file @@ -0,0 +1,29 @@ # TagLauncher 7.8.6 Release Pack This folder freezes TagLauncher `7.8.6` build `20260531.0146` for local QA distribution and Mac App Store submission preparation. ## Release Identity - Product: `TagLauncher` - Version: `7.8.6` - Build: `20260531.0146` - Branch: `codex/fix-quick-search-focus-routing` - Local QA DMG: `Archive/TagLauncher-7.8.6-20260531.0146-local-QA.dmg` - DMG SHA-256: `2664a188b3cb601cc86a36d12e4e4b3aae7fb28f7b470caa8cb0f5ff58ca8bef` ## Changes Since 7.8.5 - Removed the implicit App Grid show path from app reopen events. - Hardened duplicate-instance handoff so repeated launches do not show App Grid unless explicitly requested. - Started non-show duplicate instances as accessory processes to prevent duplicate Dock tiles. - Added window QA coverage for repeated duplicate launches: no extra Dock icons and no unexpected overlay. ## Verification - App version metadata verified: `7.8.6 (20260531.0146)` - `LSUIElement = true` - `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app`: passed - `hdiutil verify build/TagLauncher.dmg`: passed - `Scripts/window_logic_qa.sh`: passed - Targeted duplicate-launch check: repeated `open -n` kept one Dock tile and zero TagLauncher overlay windows. Scripts/window_logic_qa.sh
@@ -1054,6 +1054,15 @@ sleep 1.5 assert_single_qa_app_instance assert_single_dock_tile swift_assert no-overlay for _ in {1..3}; do "$APP_BUNDLE/Contents/MacOS/TagLauncher" >/dev/null 2>&1 & sleep 0.25 done sleep 2.0 assert_single_qa_app_instance assert_single_dock_tile swift_assert no-overlay for _ in {1..3}; do "$APP_BUNDLE/Contents/MacOS/TagLauncher" --hide >/dev/null 2>&1 & sleep 0.25 @@ -1061,6 +1070,7 @@ sleep 2.0 assert_single_qa_app_instance assert_single_dock_tile swift_assert no-overlay kill_all_taglauncher_instances sleep 0.4 swift_assert no-overlay