Commit Graph

410 Commits

Author SHA1 Message Date
4861c0d07a feat(mac-crafter): Significantly accelerated signing with mac-crafter by signing whole bundles at once and concurrently.
- Signing individual frameworks, libraries and bundles as a whole is much faster than signing every contained file individually.
- Updated minimum macOS deployment target of mac-crafter to macOS 12. Because we are using Qt 6.9, we already have that as a requirement for our client anyway. So the raise is safe.
- The Sparkle framework is now downloaded directly with first-party network API instead of shelling out to wget which is unnecessary.
- Concurrent signing: This parallelizes the signing of dynamic libraries and frameworks on the same file system level to leverage available resources and reduce the signing time.
- Rebased branch onto i2h3/proper-macos-sandboxing
- Removed extension entitlement source files and related build settings from the Xcode project to be build with CMake instead.
- Set up CMake to generate the required entitlement manifests by itself to be used later on by Mac Crafter in the code signing.
- Updated the mac-crafter build subcommand to rely on URLs instead of path strings.
- Updated the mac-crafter build subcommand to reference the entitlement manifests generated by CMake.
- Updated the mac-crafter codesign subcommand to require arguments for specifying the entitlement manifests to sign the app extensions.
- Updated README of mac-crafter and removed a lot of outdated and redundant information.

Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-19 09:04:18 +01:00
28421ec96a fix: Fixed too long socket paths (max 104 characters).
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-18 10:29:40 +01:00
291156dd48 fix(macOS): Development team group identifier prefix.
- Replaced "group." with DEVELOPMENT_TEAM.
- Removed every occurrence of SOCKETAPI_TEAM_IDENTIFIER_PREFIX.
- Removed NCFPKAppGroupIdentifier from MacOSXBundleInfo.plist.in.

Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-18 10:29:40 +01:00
09005a0e94 fix(file-provider): App group container lookup API change in NextcloudFileProviderKit.
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-18 10:29:40 +01:00
d7a6d7c881 chore(macOS): Removed obsolete values from Info.plist
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-18 10:29:40 +01:00
1de9cef1e6 fix(macOS): Enforce valid app group identifier.
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-18 10:29:40 +01:00
e8bd02e5b5 fix(file-provider): Sync state for excluded lock files.
- Added debug logging to file provider extension about its sync actions.
- Added debug logging to file provider extension about its sync state reported to the main app through the socket.
- Added debug logging to the main app about the sync state received from a file provider extension through the socket.
- Updated sync action management to not consider the exclusion of a lock file as an error.

Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-12-03 17:40:53 +01:00
d3c2cb6086 fix(file-provider): Root container enumeration to process remote updates correctly.
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-11-21 16:40:47 +01:00
3220e9ec88 fix(file-provider): Fix #8914 by omitting the faulty NSFileProviderRequest argument on enumerator request.
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-10-23 16:51:53 +02:00
2b0ee2e292 fix(file-provider): Adjusted log level of a less important message to debug.
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-10-20 10:59:00 +02:00
2186edeeb7 feat: Logging NSFileProviderRequest.
Signed-off-by: Iva Horn <iva.horn@nextcloud.com>
2025-10-20 10:59:00 +02:00
ff43776cb7 fix(file-provider): report a different error if database is not ready
As per [the docs for `NSFileProviderReplicatedExtension
item(for:request:completionHandler:)`][1], the system will automatically
retry calling the method if the error is not one of `.notAuthenticated`,
`.serverUnreachable`, or `.noSuchItem`.

From my observations it seems that if the error `.cannotSynchronize` is
returned for the root container (i.e.
`NSFileProviderRootContainerItemIdentifier`), the system/file provider
framework just ends up deleting the newly created sync directory inside
`~/Library/CloudStorage`.  This broke the entry in the Finder sidebar.

After changing the error to `.notAuthenticated` (which is semantically
wrong, but alas), I now could disable/enable the File Provider as often
as I wanted without the Finder sidebar entry to ever break due to the
directory having been removed previously ...  Strange, this.

[1]: https://developer.apple.com/documentation/fileprovider/nsfileproviderreplicatedextension/item(for:request:completionhandler:)#Discussion

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-10-15 16:41:10 +02:00
92f13d4be8 fix(file-provider): Updated logging calls in extension implementation.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-10-13 10:17:09 +02:00
6ba027c906 feat(file-provider): Integrated localizations from Transifex.
- Introduced TransifexStringCatalogSanitizer command-line utility.
- Introduced dedicated Transifex CLI configuration file for NextcloudIntegration project.

Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-10-07 14:28:44 +02:00
bb6157e329 feat: Branded file provider extension SF Symbol.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-10-07 12:53:30 +02:00
f6e69b6be8 fix: Improved one logging call.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-10-06 18:31:50 +02:00
57fbc2a271 feat: Improved logging of file provider extension implementation.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-10-01 11:56:54 +02:00
6c5ee7c14a feat: Replaced Unified Logging System with Custom Solution.
- Removed explicit reference to NextcloudKit dependency which implicitly is pulled in already by NextcloudFileProviderKit.
- Consolidated some source code files into their respective view controllers in the file provider UI extension.

Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-24 13:23:28 +02:00
d55a311ac7 fix: Added clearance of NextcloudKit account error state on injection of credentials.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-17 08:15:44 +02:00
6e2db6f08b feat: Configured NextcloudKit based on file provider domain identifier.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-17 08:15:44 +02:00
3510d685f3 feat: NextcloudKit update and UUID db names.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-17 08:15:44 +02:00
a553dd4d46 fix: Disabled interceptor for authentication attempt.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-17 08:15:44 +02:00
0b2ead8243 feat: Implemented reauthentication in file provider UI extension (#8617).
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-17 08:15:44 +02:00
853d1ab78b feat: implement UUID-based file provider domain identifiers with backward compatibility.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-09-17 08:15:44 +02:00
9711bbfdee fix(FileProviderExt): do not report syncing state when trying to delete trash items
Trying to delete items from the trash with the "Allow deletion of items
in Trash" setting unticked would previously result in the sync state
being stuck in the "Syncing" state.

Signed-off-by: Jyrki Gadinger <nilsding@nilsding.org>
2025-08-21 17:37:49 +02:00
a4821ffdc7 fix(l10n): Deleted all AI translations for file provider for one time upload to Transifex to prepare proper community translations.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-08-08 16:00:30 +02:00
426ba67ba7 fix(l10): Add proper translations for macOS File Provider extensions
Co-authored-by: i2h3 <142165879+i2h3@users.noreply.github.com>
2025-08-04 16:25:34 +02:00
02f13b851c fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-08-01 09:03:03 +00:00
c78bd2f2e6 feat(l10n): Set up string catalogs for file provider and file provider UI extensions.
Signed-off-by: Iva Horn <iva.horn@icloud.com>
2025-08-01 09:02:56 +02:00
9fb9dac362 fix(shell_integration/macOS/FileProviderExt): Invalidate change observer when creating a new one
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-07-09 16:07:15 +02:00
1b54177d29 fix(shell_integration/macOS/FileProviderExt): Fix RCO instantiation following NCFPK changes
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-07-09 16:07:15 +02:00
666a089d29 fix(shell_integration/macOS/FileProviderExt): Conform to changes in MaterialisedEnumerationObserver
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-06-17 09:11:59 +02:00
f458de6106 feat(shell_integration/macOS/FileProviderExt): Be more informative when rejecting provided credentials
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-06-02 15:15:32 +02:00
9ff78ac969 feat(shell_integration/macOS/FileProviderExt): Remove fast enumeration settings
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-06-02 15:15:32 +02:00
866cbe3af9 fix(shell_integration/macOS/FileProviderExt): Remove fast enumeration use in enumerator
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-06-02 15:15:32 +02:00
549aaca3e3 feat(shell_integration/macOS/FileProviderExt): Adapt to async stored item fetching from NCFPK 2.1 when handling keep downloaded
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-28 08:52:47 +02:00
51df83bcdb feat(shell_integration/macOS/FileProviderExt): Adapt to async stored item fetching from NCFPK 2.1
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-28 08:52:47 +02:00
87acefedd7 feat(gui/macOS): Use separator that does not break the socket API
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
e2a6ea518b feat(gui/macOS): Rather than perform back-and-forth for ignore list, just send on setup
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
b9576bf9c1 feat(shell_integration/macOS/FileProviderExt): Add XPC interface method to set ignore list
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
82fa85c0c9 feat(shell_integration/macOS/FileProviderExt): Add some debug logging for ignore list receipt
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
ef180f88ee feat(shell_integration/macOS/FileProviderExt): Await ignored files before proceeding with create/modify/delete
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
cc4bc8fa98 feat(shell_integration/macOS/FileProviderExt): Pass ignored files matcher when creating/modifying/deleting items
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
f94ee2142f feat(shell_integration/macOS/FileProviderExt): Parse received ignored files to set up IgnoredFilesMatcher
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
69ff59d42c feat(shell_integration/macOS/FileProviderExt): Request ignored files list on account setup
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 12:10:44 +02:00
ab416896ac feat(shell_integration/macOS/FileProviderExt): Fix REUSE compliance
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 15:04:56 +08:00
867b0fe1f3 feat(shell_integration/macOS/FileProviderExt): Implement handling of keep downloaded action
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 15:04:02 +08:00
92b0eb3bb8 feat(shell_integration/macOS/FileProviderExt): Add "Keep Downloaded" related menu actions
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 15:04:02 +08:00
008ee941c1 feat(shell_integration/macOS/FileProviderExt): Add basic CustomActions FileProviderExtension extension
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-15 15:04:01 +08:00
c6254b57fb fix(shell_integration/macOS/FileProviderExt): Use NSError-based deletion rejected builder method
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2025-05-14 16:51:49 +02:00