P4-3: macOS provider — File Provider extension #46
Labels
No labels
data-integrity
engine
platform
procurement
remote
scaffold
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Cordy/cairn-desktop#46
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Depends on P4-2. Requires the Mac runner (#19) and Apple Developer membership (#17).
Goal
Implement
vfs.PlaceholderFSon macOS using a File Provider extension — the same mechanismiCloud Drive and OneDrive use on the Mac.
The structural problem, and it is a big one
A File Provider extension is a separate process, written in Swift or Objective-C, that
macOS launches on demand — not a library you link into the Go application.
That means this task is not "call some APIs from Go". It is:
.app.the extension must ask the daemon to fetch content and the daemon must tell the extension
what exists.
This is the largest single task in the whole programme. Budget accordingly, and do not
discover it halfway through P4-2. If any part of phase 4 slips, expect it to be this one.
Constraints
file. A 4 GB file must hydrate without the extension being killed.
app and extension. These must be present on the provisioning profile from the Apple Developer
account — check this early, because provisioning problems surface late and confusingly.
NSFileProviderReplicatedExtension(macOS 11+) is the currentmodel and differs substantially from the older one. Target the replicated extension; expect
further change and budget a compatibility pass per macOS release.
NSFileProviderManager, and cleanly removed onuninstall or sign-out. An orphaned domain leaves a folder in Finder that does nothing.
Where the files live
A File Provider domain does not live at an arbitrary path the user picks. macOS places it
under the provider's own container. This differs from the Windows model, where the sync root is
a normal folder.
This affects the setup wizard (P3-4) — on macOS the "choose a folder" step becomes "your
Cairn appears in Finder's sidebar" when files-on-demand is enabled. Update the wizard copy and
flow rather than pretending the platforms behave alike.
Steps
NSFileProviderManagermaterialisation APIs.git commit -s -m "feat(vfs): macOS File Provider placeholder provider"Acceptance criteria
internal/syncis unchanged.