Skip to content

fix: package file picker privacy manifest - #385

Merged
DonovanMontoya merged 1 commit into
mainfrom
fix/file-picker-privacy-manifest
Oct 29, 2026
Merged

DonovanMontoya merged 1 commit into
mainfrom
fix/file-picker-privacy-manifest

Conversation

@DonovanMontoya

Copy link
Copy Markdown
Owner

What changed

Package a privacy manifest inside @capawesome/capacitor-file-picker 8.1.1's own SDK resource bundle. A root postinstall repair applies it reproducibly after npm ci, adds SPM and CocoaPods resource declarations, and rejects version changes, unexpected packaging, or conflicting manifests. No native implementation or UI changes.

Why

The locked SDK reads FileAttributeKey.modificationDate but ships neither a manifest nor a resource declaration. 8.1.1 is still the latest registry release. Apple's required-reason rules require the SDK to declare its own usage.

All timestamp calls converge on handleDocumentPickerResult after document/photo/video selections are copied into the app cache. FileTimestamp reasons 3B52.1 and C617.1 cover user-granted files and their app-container copies respectively. Directory selection, copy, and image conversion do not read timestamps. OperaLibre uses document selection for local imports and uploads; it does not consume the returned modification timestamp. The SDK does not send data to its vendor.

This is independent of #384, which remains open and covers app-owned APIs. Its changes are not included here. Existing Capacitor/Cordova manifests remain intact.

Testing

  • Clean npm ci reapplied the repair, followed by successful npm run sync:ios (includes production web build).
  • Web lint and all 800 web tests passed; four packaging tests passed, covering idempotence, upgrade rejection, manifest preservation, and packaging drift. Packaging tests now run in CI.
  • node script/version.mjs check and git diff --check passed.
  • Xcode 27.1 Release archive for generic iOS succeeded with the configured Apple Development identity. Inspected the actual archived app: exactly one CapawesomeCapacitorFilePicker_FilePickerPlugin.bundle/PrivacyInfo.xcprivacy, matching the supplied declaration. Existing Capacitor, Cordova, and ZIPFoundation manifests were present.
  • Archive manifest plutil -lint and codesign --verify --deep --strict passed.

No screenshots are needed because there is no visible change. No physical-device interaction, CocoaPods build, Organizer privacy report, distribution export, or upload was performed. This verifies SPM archive inclusion, not whole-app App Store compliance; the archive does not contain #384's separate app-owned manifest. Remote repository gates run on this PR.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T04:01:28.776013Z b9b1ca0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@DonovanMontoya
DonovanMontoya force-pushed the fix/file-picker-privacy-manifest branch from b9b1ca0 to 48a411e Compare October 29, 2026 04:17
@DonovanMontoya
DonovanMontoya merged commit ef62895 into main Oct 29, 2026
16 checks passed
@DonovanMontoya
DonovanMontoya deleted the fix/file-picker-privacy-manifest branch October 29, 2026 04:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant