Agent! 1.1.41.241-pre
Pre-release
Pre-release
⚠️ Pre-release — 1.1.41 (build 241) Golden Gate Update
This is a pre-release from main at d48c2355, tagged v1.1.41.241. It includes the changes since v1.1.40.240: Stop now really stops — every shell, daemon, agent-script and AppleScript execution path is wired to Swift Task cancellation and kills the whole process tree, and the daemons clean up after a crashed or quit app. Also: Project.xcconfig becomes the single place to set your bundle ID and Development Team. The .zip / .dmg attachments are built, notarized, and stapled by the Release workflow. Please report regressions against the v1.1.33.233 stable release.
🛑 Stop / Cancellation — process-tree kill everywhere
- New shared
Shared/ProcessTree.swift: walkssysctl KERN_PROC_ALLto find every descendant of a spawned shell, SIGTERMs the tree (leaves first), then SIGKILLs any survivor after a 2s grace period.Process.terminate()alone only signalled the direct child — its children reparented to launchd and kept running (as root, in the helper's case) (1b1c21c7). DaemonCore.cancel/ duplicate-instance replacement now usekillTreeinstead ofterminate(); newDaemonCore.cancelAll(instanceIDs:)(1b1c21c7,aa27348e).- Launch Daemon + Launch Agent (
AgentHelper/main.swift,AgentUser/main.swift): each XPC connection tracks its in-flight instance IDs;invalidationHandler/interruptionHandlercancel all of them, so an app crash, quit, or client-side timeout never leaves a shell running detached (aa27348e). HelperService/UserService: one instance ID per call (was per service) so concurrent tabs can no longer clobber each other's commands;executeViaXPCis wrapped inwithTaskCancellationHandlersostop()/stopTabTask()sends an explicit XPC cancel; start/finish timeouts now cancel the remote process too;cancel()becomescancelAllInFlight()(aa27348e,e524a4e9).- In-process TCC shells (
ShellTools.swift): newProcessBox+runCancellablebridge Task cancellation to a process-tree kill, including the race where cancel arrives beforerun()registers the process (ff058d6e). - Agent-script runner (
ScriptService+Execution.swift): both the tab's cancel flag and Task cancellation now kill the runner and everything it spawned (07d0bcae). run_applescript(main task + tab handler) is routed throughosascriptas a child of Agent.app instead of in-processNSAppleScript— TCC is inherited via responsible-process attribution and Stop can kill it via the tree kill. List results are now returned as text instead of "(no output)" (7505b757).RunStop.stop()comment clarified:userServiceis not cancelled wholesale; the main task's own commands are cancelled viarunningTask?.cancel()(e524a4e9).
🧩 Project identity — Project.xcconfig
BundleID.xcconfigrenamed toProject.xcconfig; it now carriesDEVELOPMENT_TEAMas well asAPP_BUNDLE_ID. The project file no longer setsDEVELOPMENT_TEAManywhere, so switching to your own Team ID is a one-line edit (83b6c3ef,d084277c,9635c31e).Agent.help/Contents/Info.plistbundle ID is now$(APP_BUNDLE_ID).helpinstead of a hardcoded string (f038bbff).- Display name corrected to Agent! (was "Agent Ada") (
19f4b596).
🖥️ UI & Attachments
- App-menu items use
.labelStyle(.titleAndIcon)so their icons show again (db4a7a3f). - Screenshot / paste attachments taken while a tab is selected now log "📎 Attached…" into that tab instead of the main log (
fa81cea9). [weak self]captures in speech-recognition and activity-log render callbacks;ThinkingIndicatorViewimports Combine (94102ed7).
🏗️ Build & CI
AppleIntelligenceMediator:GenerationOptions(sampling:)vssamplingMode:selected via#if compiler(>=6.4)so the Xcode 27 SDK and the CI's Xcode 26 both compile (707bf116).- Fixed an Xcode 26.6 "failed to produce diagnostic" compiler crash in
Logging.swift(tablocal shadowingtab(for:)) that broke CI (0e4f7e68). - SwiftPM minimum versions raised to the resolved package versions (
1f82207f).
🔢 Version
- Version/build updated to 1.1.41 (build 241) (
d48c2355).
Full Changelog: v1.1.40.240...v1.1.41.241