Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.

Posts under General subtopic

Post

Replies

Boosts

Views

Created

Code sharing between targets and what’s the best structure for doing so
I guess this is in parts a multiplatform / SwiftData / WidgetKit and SwiftUI question. my usual problem is I start an app and then quickly find myself wanting to add widgets / controls / AppIntents and expand across multiple targets. for example I start with an iOS only target and expand to watchOS, iPadOS and visionOS. But since this targets and the apps I want to build are very distinct, I don’t find myself using the multiplatform target but instead a target per platform. This (at least from my understanding) then also comes with the benefit that I can add a WidgetKit extension and all targets use it. now this is the base idea, but here come the many questions I have had issues finding a clear answer and guidance on over the last years. When sharing SwiftUI views and business logic for DRY, whats the actual best way to do that? A „core“ swift package, or a library? what are the implications of choosing one over the other? I understand that widgets are separately scoped and sandboxed from my main app, but since I use SwiftData in the main app I‘ll have to use app groups so that both can have the same data store. Now; using query in widgets is no problem and is intuitive enough, but the ModelContext has to come from somewhere and be initialized somewhere Where? + additionally, talking about appintents for example when having a control or interactive widget, they also need to share the same context to have an immediate response and update all accordingly (so app, widgets and intents all need to have the same) but how do I actually do that when everything is sandboxed? I recently discovered the @Dependecy macro in I think it was an app intents talk, but it’s usage was skipped over and I couldn’t find documentation explaining what I need to do here to get this actually working. i think the two above are my main questions and I hope I could give enough context to see where I fall short of understanding the architects involved. so for big multiplatform apps where I want to adopt as many system features as possible what’s the best „separation“ or project structure here? see, for example the default Apple Notes app would really interest me how they handle it, or Journal for that matter, since it targets so many platforms and has native features, how is the project structured at the top level? (Obv just an example of what scope I am looking for here) sample code often falls short of what I need, or maybe then again I haven’t found the right one yet. thanks for reading to this point and I am grateful every input, perspective and suggestion I can get here, since it will apply to all my projects
1
0
89
1w
Connection problems between Xcode and Apple Watch
Hello! As I try to use Xcode (has happened in versions 16 and 26) and my Apple Watch (has happened with Series 6 and 10), the Devices and Simulators window reports problems connecting to the Watch. Messages vary from "Connecting to Apple Watch" to "Waiting to reconnect: Previous preparation error: the tunnel connection failed while the system tried to connect to the device; client unable to receive tunnel handshake response", or "Apple Watch may need to be unlocked to recover from previously reported preparation errors. Ensure the device is unlocked and near this Mac for better connection quality." The Watch was operational, and on my wrist, so it was unlocked. Any suggestions on how to move beyond this? Thank you!
5
0
114
1w
Fondation Models + Core AI on watchOS
Hi! I've seen during the Keynote that watchOS will support Siri AI (when your iPhone is nearby), which sounds really exciting. Out of curiousity, I also noticed that both Core AI, and now the Foundation Models framework, are available on watchOS 27. This sounds amazing - bringing intelligence features to the watch could enable some great tailored experiences on the go. Here are some of my questions: Do these require a nearby iPhone? Do they work offline (on-device)? Lastly, are there any device limitations? Also, if there are any additional details or fun facts about using Foundation Models or Core AI on watchOS (or perhaps iOS, if making use of the companion app to run those models on the iPhone), I’d love to hear them!
1
1
99
1w
Are supported Apple Watch models able to access SiriAI when connected to an older iPhone?
Let's take an example where a user is on an iPhone 12 running iOS 27. They have an Apple Watch Series 10 paired running WatchOS 27. Are they able to access SiriAI queries from the Apple Watch? If not is there a technical limitation on why this isn't possible? On Apple Watch models where SiriAI is fully supported, does it still have any on device capability or is it all now requiring Internet access? And can this be Internet over cellular without the paired iPhone nearby?
0
0
58
1w
Are there new updates to Apple Watch widget/complication configurations this year to resolve previous bugs?
This is discussed here: https://developer.apple.com/forums/thread/801455 Essentially my users are finding there can be inconsistencies in the configurations offered for my app complications depending on if they are doing so on their Apple Watch directly or via the Watch Face Gallery in the iPhone Apple Watch app. Are there any new changes here or any best practices to follow when creating WidgetConfigurationIntents?
1
0
84
1w
Swift Packages without explicit watchOS versions target do not compile.
Many Swift Packages, including those from Apple, like swift-collections, don't compile with Xcode 27. It shows these error messages: error: The watchOS deployment target 'WATCHOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 27.0.x. (in target 'DequeModule' from project 'swift-collections') error: The armv7k architecture is deprecated. You should update your ARCHS build setting to remove the armv7k architecture. (in target 'DequeModule' from project 'swift-collections') Is this an expected behavior? If so, how can we fix it? If not, when will this be fixed?
1
0
75
1w
AppIntents-friendly WatchOS Companion App
I have a Siri/widget-oriented app that would benefit from some sort of watchOS presence and I am trying to figure out the best approach. Can you help me understand the current options available? Initially I thought there was a kind of watchOS app that depended on an iPhone for nearly everything, but I am not clear if that approach has been deprecated. My app uses CloudKit for storage and is intended to be friendly to multiple devices, so theoretically the watch could stand on its own but in terms of staying closely in sync with the phone I am not clear that is the best approach. Further, it would seem to me better for Siri requests on the watch to directly update the phone if that were possible. My app heavily uses AppIntents, currently within the iPhone target. I am unclear if using an AppIntent extension would be a good path. I have found limited information about these extensions. I did an experiment with AppIntents in a watchOS app and had a lot of trouble getting the watch to recognize my shortcut phrases (or even to show the shortcuts in the watch Shortcuts app). With all of this in mind, can you offer me some recommendations about architecting a watch-friendly AppIntents approach.
5
1
81
1w
SPM packages fail for watchOS Xcode 27
Xcode 27 refuses to build common Swift Packages for watchOS, such as swift-algorithms or swift-collections. ... 'WATCHOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 27.0.x. The error disappears by explicitly declaring in the SPM manifest "platforms: [.watchOS(.v9)]". (Patching the "SwiftStdlib" availabilities in swift-collections is insufficient.) Is there a better workaround than mirroring our whole SPM graph to declare the platform minimum? Our projects' minimums are correctly set at 11 or 26. (Also happens in the hello world Xcode 27 watchOS only project.) FB23037701 ref: https://developer.apple.com/forums/thread/829540
2
2
168
1w
Architecture for daily content
Our app displays a calendar of the week ahead. On tapping a date, it offers three pieces of text for that date. These pieces of text can be quite long. What is the best overall architecture? Reading the documentation and watching the videos, it seems to be a NavigationSplitView whose items are the dates, and whose detail is a TabView which in turn contains three TextViews. Is this right?
2
0
56
1w
Settings on Watch OS
Moving the minimum OS version from 4 to 9, I see a message "WatchKit Settings Bundles Deprecated". Settings used to be handled by providing a plist which the Watch app on the iPhone would then use to display settings and allow the user to change them. How, nowadays, should we make settings available to the user to be viewed and changed?
5
0
73
1w
Real-time feedback without lag
What is the recommended way to analyze PencilKit strokes in near real time without interfering with Apple Pencil latency? Should analysis occur only after canvasViewDrawingDidChange, after each stroke ends, or through lower-level touch handling?
1
0
79
1w
Can an app detect whether it is set as the default calling app?
Hello! Our app includes a calling feature for some users, and we would like to promote to those users that they can set our app as their default calling app. If there is no way to check this state, then the risk is that we may repeatedly prompt users to enable something they have already enabled. There also doesn't appear to be a way to set the default calling app programmatically, and that the best we can do may be to direct the user to the default app section in Settings. For our app, the calling capability is only applicable to some users. For users who are not eligible to place calls, we would prefer that they not be able to set our app as the default calling app at all. Otherwise, iOS may route calling actions to our app. So my questions are: Is there any supported API or other mechanism to determine whether the user has set our app as their default calling app? Is there any supported way to enable, disable, or hide default calling app eligibility programmatically? My current understanding is that neither of these is possible, but I would appreciate confirmation or any recommended workaround. Thanks.
1
0
94
1w
Determine Starting location for QuickLook Extension
I am writing a QuickLook extension using Swift (specifically QLPreviewingController). Extensions can be opened from both the previewer (pressing Space with a file selected) and Get Info. How do I reliably detect which mode my extension is being started from? The problem is that when it's in the Get Info window, it forces a fixed width (but not height). If I set the size statically based on that width, then when it launches in its own window (via Space), you can't resize the preview window. What am I missing? It seems like I should be getting more context about where I'm being inserted so I can lay out accordingly? Does anyone have any suggestions or have faced this problem before?
0
0
35
1w
macOS 27 Golden Gate: com.apple.spaces plist restructured — 'Monitors' key replaced by 'SpacesDisplayConfiguration', breaking third-party window managers (FB23017010)
I'm building a window layout manager that saves and restores window positions across Spaces when switching between display configurations (laptop / docked 3-monitor / Vision Pro). Spencer 1.4.4 handles this today but broke on Golden Gate beta with "Cannot detect number of Spaces." I built a diagnostic probe to find the root cause. FINDINGS (macOS 27.0 Build 26A5353q): CGSPrivate symbols — all intact and functional: CGSMainConnectionID, CGSCopySpaces, CGSGetWindowWorkspace, CGSMoveWindowsToManagedSpace all resolve via dlsym and work correctly. CGSCopySpaces(mask=7) returns 14 valid space IDs. This is NOT the source of the breakage. com.apple.spaces plist — structure changed in Golden Gate: The top-level 'Monitors' key is gone. It has moved to: SpacesDisplayConfiguration → Management Data → Monitors New top-level keys: [SpacesDisplayConfiguration, app-bindings, spans-displays] This IS the root cause. Spencer's parser looks for 'Monitors', finds nothing, and fails. One-line fix once confirmed stable. CGSGetWindowWorkspace returns Space ID 0 for windows set to 'all desktops'. Valid space IDs in this session are 30, 15, 14, 12, 11, 10 — so 0 appears to be a sentinel value for that condition. Full probe output: `SpacesProbe v1.0 — WWDC 2026 Developer Lab ════════════════════════════════════════════════════════ System: Version 27.0 (Build 26A5353q) Date: 2026-06-09 21:41:33 +0000 ── PUBLIC API (stable, no entitlements needed) ──────────── ✅ CGWindowListCopyWindowInfo: 17 on-screen windows found ✅ CGGetActiveDisplayList: 1 active display(s) ✅ Accessibility (AXIsProcessTrusted): GRANTED ✅ AXUIElement read: 'Cursor Pro' @ 1427,906 438×438 ✅ AXUIElement write: SUCCESS (nudged window +1px and restored — non-destructive) ── com.apple.spaces PLIST (what Spencer reads to understand Space topology) Path: /Users/csj/Library/Preferences/com.apple.spaces.plist ✅ Plist file exists ✅ Plist readable and deserializable ✅ Monitors in plist: 8 ✅ Total spaces found: 14 Top-level keys: [SpacesDisplayConfiguration, app-bindings, spans-displays] ⚡ GOLDEN GATE: 'Monitors' replaced by 'SpacesDisplayConfiguration' SpacesDisplayConfiguration sub-keys: [Management Data, Space Properties] Monitors (under Management Data): 8 Monitor 0: 14 space(s) ⚠️ 'Monitors' key gone in Golden Gate — moved to SpacesDisplayConfiguration. Spencer parser needs update to read new key. → These anomalies cause Spencer 1.4.4 to report → "Cannot detect number of Spaces" on Golden Gate beta. ── CGSPrivate BRIDGE (private API — the only path to Space assignment) Resolution via dlsym — nil = symbol removed from this OS build ✅ CGSMainConnectionID ✅ CGSCopySpaces ✅ CGSGetWindowWorkspace ✅ CGSMoveWindowsToManagedSpace Connection ID: 3175291 ✅ CGSCopySpaces(mask=7): 14 spaces → 30, 15, 14, 12, 11, 10 ✅ CGSGetWindowWorkspace(wid=99): Space ID = 0 ── SUMMARY ───────────────────────────────────────────────── ✅ Window enumeration (CGWindowListCopyWindowInfo): WORKS ✅ Window position read/write (AXUIElement): WORKS ✅ Display topology (CGGetActiveDisplayList): WORKS ❌ com.apple.spaces plist parsing: BROKEN (1 anomalies) ✅ CGSPrivate Space management symbols: ALL PRESENT Feedback: feedbackassistant.apple.com FB23017010QUESTIONS: Is the new SpacesDisplayConfiguration.Management Data.Monitors path stable and intended for use by third-party tools, or still an implementation detail subject to change? Is Space ID 0 from CGSGetWindowWorkspace the stable sentinel for 'window assigned to all desktops', or is there a proper API for detecting that condition? Is there an entitlement (com.apple.private.spaces or equivalent) that can be granted to productivity tools distributed outside the App Store for Space management? What is the intended supported mechanism for a third-party app to save and restore window Space assignments on macOS? Feedback: FB23017010
3
0
100
1w
State restoration with AccessorySetupKit for a poll-based accessory
Hi! I'm using AccessorySetupKit with CoreBluetooth state restoration. My understanding is that using AccessorySetupKit is a now pre-requisite to enabling the state restoration/preservation apis, so I went that route — and pairing, handoff, and restoration on search discovery or connection completion seem to be working Where I'm stuck: my accessory is poll-based. I read it by writing a request and reading the response. Then I send a new request. the BLE accessory never pushes data on its own. Since restoration only seems to wake my app on an inbound BLE event, if the app gets terminated mid-session while the connection's still healthy, nothing wakes the app and polling just quietly stops. Is there a recommended way to handle this for a request/response device? Thanks!
3
0
124
1w
Code sharing between targets and what’s the best structure for doing so
I guess this is in parts a multiplatform / SwiftData / WidgetKit and SwiftUI question. my usual problem is I start an app and then quickly find myself wanting to add widgets / controls / AppIntents and expand across multiple targets. for example I start with an iOS only target and expand to watchOS, iPadOS and visionOS. But since this targets and the apps I want to build are very distinct, I don’t find myself using the multiplatform target but instead a target per platform. This (at least from my understanding) then also comes with the benefit that I can add a WidgetKit extension and all targets use it. now this is the base idea, but here come the many questions I have had issues finding a clear answer and guidance on over the last years. When sharing SwiftUI views and business logic for DRY, whats the actual best way to do that? A „core“ swift package, or a library? what are the implications of choosing one over the other? I understand that widgets are separately scoped and sandboxed from my main app, but since I use SwiftData in the main app I‘ll have to use app groups so that both can have the same data store. Now; using query in widgets is no problem and is intuitive enough, but the ModelContext has to come from somewhere and be initialized somewhere Where? + additionally, talking about appintents for example when having a control or interactive widget, they also need to share the same context to have an immediate response and update all accordingly (so app, widgets and intents all need to have the same) but how do I actually do that when everything is sandboxed? I recently discovered the @Dependecy macro in I think it was an app intents talk, but it’s usage was skipped over and I couldn’t find documentation explaining what I need to do here to get this actually working. i think the two above are my main questions and I hope I could give enough context to see where I fall short of understanding the architects involved. so for big multiplatform apps where I want to adopt as many system features as possible what’s the best „separation“ or project structure here? see, for example the default Apple Notes app would really interest me how they handle it, or Journal for that matter, since it targets so many platforms and has native features, how is the project structured at the top level? (Obv just an example of what scope I am looking for here) sample code often falls short of what I need, or maybe then again I haven’t found the right one yet. thanks for reading to this point and I am grateful every input, perspective and suggestion I can get here, since it will apply to all my projects
Replies
1
Boosts
0
Views
89
Activity
1w
Connection problems between Xcode and Apple Watch
Hello! As I try to use Xcode (has happened in versions 16 and 26) and my Apple Watch (has happened with Series 6 and 10), the Devices and Simulators window reports problems connecting to the Watch. Messages vary from "Connecting to Apple Watch" to "Waiting to reconnect: Previous preparation error: the tunnel connection failed while the system tried to connect to the device; client unable to receive tunnel handshake response", or "Apple Watch may need to be unlocked to recover from previously reported preparation errors. Ensure the device is unlocked and near this Mac for better connection quality." The Watch was operational, and on my wrist, so it was unlocked. Any suggestions on how to move beyond this? Thank you!
Replies
5
Boosts
0
Views
114
Activity
1w
Fondation Models + Core AI on watchOS
Hi! I've seen during the Keynote that watchOS will support Siri AI (when your iPhone is nearby), which sounds really exciting. Out of curiousity, I also noticed that both Core AI, and now the Foundation Models framework, are available on watchOS 27. This sounds amazing - bringing intelligence features to the watch could enable some great tailored experiences on the go. Here are some of my questions: Do these require a nearby iPhone? Do they work offline (on-device)? Lastly, are there any device limitations? Also, if there are any additional details or fun facts about using Foundation Models or Core AI on watchOS (or perhaps iOS, if making use of the companion app to run those models on the iPhone), I’d love to hear them!
Replies
1
Boosts
1
Views
99
Activity
1w
Are supported Apple Watch models able to access SiriAI when connected to an older iPhone?
Let's take an example where a user is on an iPhone 12 running iOS 27. They have an Apple Watch Series 10 paired running WatchOS 27. Are they able to access SiriAI queries from the Apple Watch? If not is there a technical limitation on why this isn't possible? On Apple Watch models where SiriAI is fully supported, does it still have any on device capability or is it all now requiring Internet access? And can this be Internet over cellular without the paired iPhone nearby?
Replies
0
Boosts
0
Views
58
Activity
1w
Are there new updates to Apple Watch widget/complication configurations this year to resolve previous bugs?
This is discussed here: https://developer.apple.com/forums/thread/801455 Essentially my users are finding there can be inconsistencies in the configurations offered for my app complications depending on if they are doing so on their Apple Watch directly or via the Watch Face Gallery in the iPhone Apple Watch app. Are there any new changes here or any best practices to follow when creating WidgetConfigurationIntents?
Replies
1
Boosts
0
Views
84
Activity
1w
Swift Packages without explicit watchOS versions target do not compile.
Many Swift Packages, including those from Apple, like swift-collections, don't compile with Xcode 27. It shows these error messages: error: The watchOS deployment target 'WATCHOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 27.0.x. (in target 'DequeModule' from project 'swift-collections') error: The armv7k architecture is deprecated. You should update your ARCHS build setting to remove the armv7k architecture. (in target 'DequeModule' from project 'swift-collections') Is this an expected behavior? If so, how can we fix it? If not, when will this be fixed?
Replies
1
Boosts
0
Views
75
Activity
1w
AppIntents-friendly WatchOS Companion App
I have a Siri/widget-oriented app that would benefit from some sort of watchOS presence and I am trying to figure out the best approach. Can you help me understand the current options available? Initially I thought there was a kind of watchOS app that depended on an iPhone for nearly everything, but I am not clear if that approach has been deprecated. My app uses CloudKit for storage and is intended to be friendly to multiple devices, so theoretically the watch could stand on its own but in terms of staying closely in sync with the phone I am not clear that is the best approach. Further, it would seem to me better for Siri requests on the watch to directly update the phone if that were possible. My app heavily uses AppIntents, currently within the iPhone target. I am unclear if using an AppIntent extension would be a good path. I have found limited information about these extensions. I did an experiment with AppIntents in a watchOS app and had a lot of trouble getting the watch to recognize my shortcut phrases (or even to show the shortcuts in the watch Shortcuts app). With all of this in mind, can you offer me some recommendations about architecting a watch-friendly AppIntents approach.
Replies
5
Boosts
1
Views
81
Activity
1w
SPM packages fail for watchOS Xcode 27
Xcode 27 refuses to build common Swift Packages for watchOS, such as swift-algorithms or swift-collections. ... 'WATCHOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 27.0.x. The error disappears by explicitly declaring in the SPM manifest "platforms: [.watchOS(.v9)]". (Patching the "SwiftStdlib" availabilities in swift-collections is insufficient.) Is there a better workaround than mirroring our whole SPM graph to declare the platform minimum? Our projects' minimums are correctly set at 11 or 26. (Also happens in the hello world Xcode 27 watchOS only project.) FB23037701 ref: https://developer.apple.com/forums/thread/829540
Replies
2
Boosts
2
Views
168
Activity
1w
Architecture for daily content
Our app displays a calendar of the week ahead. On tapping a date, it offers three pieces of text for that date. These pieces of text can be quite long. What is the best overall architecture? Reading the documentation and watching the videos, it seems to be a NavigationSplitView whose items are the dates, and whose detail is a TabView which in turn contains three TextViews. Is this right?
Replies
2
Boosts
0
Views
56
Activity
1w
Settings on Watch OS
Moving the minimum OS version from 4 to 9, I see a message "WatchKit Settings Bundles Deprecated". Settings used to be handled by providing a plist which the Watch app on the iPhone would then use to display settings and allow the user to change them. How, nowadays, should we make settings available to the user to be viewed and changed?
Replies
5
Boosts
0
Views
73
Activity
1w
Unwrap PaperKit - Sample code
Will the sample code of the "Unwrap PaperKit" session be made available?
Replies
1
Boosts
0
Views
57
Activity
1w
Real-time feedback without lag
What is the recommended way to analyze PencilKit strokes in near real time without interfering with Apple Pencil latency? Should analysis occur only after canvasViewDrawingDidChange, after each stroke ends, or through lower-level touch handling?
Replies
1
Boosts
0
Views
79
Activity
1w
Handwriting App for automaticity
Does PaperKit expose the underlying PKDrawing / PKStroke / PKStrokePath data in a way that preserves stroke order, point sequence, and per-point properties, or is it primarily intended for markup persistence and rendering?
Replies
3
Boosts
0
Views
72
Activity
1w
seeking for good official tools
I'd like to know if there are any official, out-of-the-box tools available for handwriting and PaperKit that can help lower the input barrier for older adults and users with disabilities.
Replies
3
Boosts
1
Views
141
Activity
1w
Can an app detect whether it is set as the default calling app?
Hello! Our app includes a calling feature for some users, and we would like to promote to those users that they can set our app as their default calling app. If there is no way to check this state, then the risk is that we may repeatedly prompt users to enable something they have already enabled. There also doesn't appear to be a way to set the default calling app programmatically, and that the best we can do may be to direct the user to the default app section in Settings. For our app, the calling capability is only applicable to some users. For users who are not eligible to place calls, we would prefer that they not be able to set our app as the default calling app at all. Otherwise, iOS may route calling actions to our app. So my questions are: Is there any supported API or other mechanism to determine whether the user has set our app as their default calling app? Is there any supported way to enable, disable, or hide default calling app eligibility programmatically? My current understanding is that neither of these is possible, but I would appreciate confirmation or any recommended workaround. Thanks.
Replies
1
Boosts
0
Views
94
Activity
1w
iOS 27 - iPhone - Message Filter - Transactions Messages deleted
On the new iOS 27 Beta, after updating- the Transactions messages are moved to trash and cannot be recovered
Replies
0
Boosts
0
Views
80
Activity
1w
Determine Starting location for QuickLook Extension
I am writing a QuickLook extension using Swift (specifically QLPreviewingController). Extensions can be opened from both the previewer (pressing Space with a file selected) and Get Info. How do I reliably detect which mode my extension is being started from? The problem is that when it's in the Get Info window, it forces a fixed width (but not height). If I set the size statically based on that width, then when it launches in its own window (via Space), you can't resize the preview window. What am I missing? It seems like I should be getting more context about where I'm being inserted so I can lay out accordingly? Does anyone have any suggestions or have faced this problem before?
Replies
0
Boosts
0
Views
35
Activity
1w
macOS 27 Golden Gate: com.apple.spaces plist restructured — 'Monitors' key replaced by 'SpacesDisplayConfiguration', breaking third-party window managers (FB23017010)
I'm building a window layout manager that saves and restores window positions across Spaces when switching between display configurations (laptop / docked 3-monitor / Vision Pro). Spencer 1.4.4 handles this today but broke on Golden Gate beta with "Cannot detect number of Spaces." I built a diagnostic probe to find the root cause. FINDINGS (macOS 27.0 Build 26A5353q): CGSPrivate symbols — all intact and functional: CGSMainConnectionID, CGSCopySpaces, CGSGetWindowWorkspace, CGSMoveWindowsToManagedSpace all resolve via dlsym and work correctly. CGSCopySpaces(mask=7) returns 14 valid space IDs. This is NOT the source of the breakage. com.apple.spaces plist — structure changed in Golden Gate: The top-level 'Monitors' key is gone. It has moved to: SpacesDisplayConfiguration → Management Data → Monitors New top-level keys: [SpacesDisplayConfiguration, app-bindings, spans-displays] This IS the root cause. Spencer's parser looks for 'Monitors', finds nothing, and fails. One-line fix once confirmed stable. CGSGetWindowWorkspace returns Space ID 0 for windows set to 'all desktops'. Valid space IDs in this session are 30, 15, 14, 12, 11, 10 — so 0 appears to be a sentinel value for that condition. Full probe output: `SpacesProbe v1.0 — WWDC 2026 Developer Lab ════════════════════════════════════════════════════════ System: Version 27.0 (Build 26A5353q) Date: 2026-06-09 21:41:33 +0000 ── PUBLIC API (stable, no entitlements needed) ──────────── ✅ CGWindowListCopyWindowInfo: 17 on-screen windows found ✅ CGGetActiveDisplayList: 1 active display(s) ✅ Accessibility (AXIsProcessTrusted): GRANTED ✅ AXUIElement read: 'Cursor Pro' @ 1427,906 438×438 ✅ AXUIElement write: SUCCESS (nudged window +1px and restored — non-destructive) ── com.apple.spaces PLIST (what Spencer reads to understand Space topology) Path: /Users/csj/Library/Preferences/com.apple.spaces.plist ✅ Plist file exists ✅ Plist readable and deserializable ✅ Monitors in plist: 8 ✅ Total spaces found: 14 Top-level keys: [SpacesDisplayConfiguration, app-bindings, spans-displays] ⚡ GOLDEN GATE: 'Monitors' replaced by 'SpacesDisplayConfiguration' SpacesDisplayConfiguration sub-keys: [Management Data, Space Properties] Monitors (under Management Data): 8 Monitor 0: 14 space(s) ⚠️ 'Monitors' key gone in Golden Gate — moved to SpacesDisplayConfiguration. Spencer parser needs update to read new key. → These anomalies cause Spencer 1.4.4 to report → "Cannot detect number of Spaces" on Golden Gate beta. ── CGSPrivate BRIDGE (private API — the only path to Space assignment) Resolution via dlsym — nil = symbol removed from this OS build ✅ CGSMainConnectionID ✅ CGSCopySpaces ✅ CGSGetWindowWorkspace ✅ CGSMoveWindowsToManagedSpace Connection ID: 3175291 ✅ CGSCopySpaces(mask=7): 14 spaces → 30, 15, 14, 12, 11, 10 ✅ CGSGetWindowWorkspace(wid=99): Space ID = 0 ── SUMMARY ───────────────────────────────────────────────── ✅ Window enumeration (CGWindowListCopyWindowInfo): WORKS ✅ Window position read/write (AXUIElement): WORKS ✅ Display topology (CGGetActiveDisplayList): WORKS ❌ com.apple.spaces plist parsing: BROKEN (1 anomalies) ✅ CGSPrivate Space management symbols: ALL PRESENT Feedback: feedbackassistant.apple.com FB23017010QUESTIONS: Is the new SpacesDisplayConfiguration.Management Data.Monitors path stable and intended for use by third-party tools, or still an implementation detail subject to change? Is Space ID 0 from CGSGetWindowWorkspace the stable sentinel for 'window assigned to all desktops', or is there a proper API for detecting that condition? Is there an entitlement (com.apple.private.spaces or equivalent) that can be granted to productivity tools distributed outside the App Store for Space management? What is the intended supported mechanism for a third-party app to save and restore window Space assignments on macOS? Feedback: FB23017010
Replies
3
Boosts
0
Views
100
Activity
1w
State restoration with AccessorySetupKit for a poll-based accessory
Hi! I'm using AccessorySetupKit with CoreBluetooth state restoration. My understanding is that using AccessorySetupKit is a now pre-requisite to enabling the state restoration/preservation apis, so I went that route — and pairing, handoff, and restoration on search discovery or connection completion seem to be working Where I'm stuck: my accessory is poll-based. I read it by writing a request and reading the response. Then I send a new request. the BLE accessory never pushes data on its own. Since restoration only seems to wake my app on an inbound BLE event, if the app gets terminated mid-session while the connection's still healthy, nothing wakes the app and polling just quietly stops. Is there a recommended way to handle this for a request/response device? Thanks!
Replies
3
Boosts
0
Views
124
Activity
1w
Pairing with multiple accessories at the same time with AccessorySetupKit
Hi there, we deploy upwards of 12-15 hardware accessories containing BLE at a time, in a single system instal. Can AccessorySetupKit be used to streamline the pairing process for all of these accessories at once, so that the user isn't required to step through the process of pairing with each individual accessory?
Replies
1
Boosts
0
Views
73
Activity
1w