Conversation
95d425a to
e0d96a5
Compare
There was a problem hiding this comment.
Pull request overview
This pull request replaces UNIX socket-based IPC with XPC (Apple's Inter-Process Communication) for communication between the Nextcloud desktop client and its macOS FinderSync extension. This modernizes the macOS integration to use Apple's recommended XPC framework instead of file-based sockets.
Changes:
- Introduced XPC-based communication infrastructure (
FinderSyncXPC,FinderSyncService,FinderSyncXPCManager) to replace socket-based communication - Removed legacy socket server components (
FileProviderSocketServer,FileProviderSocketController,FinderSyncSocketLineProcessor) - Added XPC protocol definitions (
FinderSyncProtocol,FinderSyncAppProtocol) for bidirectional communication - Updated FinderSync extension to use XPC client instead of socket client
- Maintained SocketApi as the core business logic layer (reused for XPC transport)
Reviewed changes
Copilot reviewed 34 out of 35 changed files in this pull request and generated 17 comments.
Show a summary per file
| File | Description |
|---|---|
| src/gui/macOS/findersyncxpc_mac.mm | New XPC listener implementation for accepting FinderSync connections |
| src/gui/macOS/findersyncxpc.h | XPC manager interface for broadcasting status updates to extensions |
| src/gui/macOS/findersyncservice.mm | XPC service delegate implementing FinderSyncAppProtocol for extension requests |
| src/gui/macOS/findersyncservice.h | Service interface wrapping SocketApi for XPC transport |
| src/gui/socketapi/socketapi.cpp | Added XPC broadcast support alongside socket broadcasts |
| src/gui/socketapi/socketapi.h | Added friend declaration for FinderSyncService to access FileData |
| src/gui/application.cpp | Initialize XPC infrastructure on macOS |
| shell_integration/.../FinderSyncXPCManager.m | XPC client for FinderSync extension to connect to main app |
| shell_integration/.../FinderSync.m | Migrated from socket client to XPC manager |
| src/gui/macOS/fileprovidersocketserver*.* | Removed legacy socket server (File Provider uses XPC now) |
| src/gui/CMakeLists.txt | Updated build to include new XPC files and remove socket files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncXPCManager.m
Outdated
Show resolved
Hide resolved
...acOSX/NextcloudFileProviderKit/Sources/NextcloudFileProviderKit/Enumeration/Enumerator.swift
Outdated
Show resolved
Hide resolved
shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncXPCManager.m
Outdated
Show resolved
Hide resolved
e0d96a5 to
d9f2bba
Compare
d9f2bba to
f521a65
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 33 out of 33 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...ration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension+CustomActions.swift
Outdated
Show resolved
Hide resolved
nilsding
left a comment
There was a problem hiding this comment.
Some comments for now -- couldn't manage to get the FinderSync XPC connection working in a local dev setup due to sandboxing issues :(
shell_integration/MacOSX/NextcloudIntegration/FinderSyncExt/FinderSyncXPCManager.h
Show resolved
Hide resolved
f521a65 to
e630785
Compare
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
e630785 to
0a25197
Compare
|
Artifact containing the AppImage: nextcloud-appimage-pr-9463.zip Digest: To test this change/fix you can download the above artifact file, unzip it, and run it. Please make sure to quit your existing Nextcloud app and backup your data. |
|




The extensions shipped with our app should use XPC exclusively for interprocess communication and drop UNIX file sockets.
This needs to be integrated early in the development cycle for 34.0.0 and without a backport due to its impact and to maximize the verification time.