From 8dbd4a7323a7ba8c0d9de56d5b81ba267b0bf086 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 06:54:01 +0900 Subject: [PATCH 01/11] feat: manage Apple Photos duplicates through PhotoKit --- CHANGELOG.md | 3 + .../0023-apple-photos-photokit-boundary.md | 59 ++ docs/architecture/adr/README.md | 1 + docs/doctoring/perceptual-photo-evidence.md | 4 + docs/product-technical-gap-baseline.md | 8 + src-tauri/Cargo.lock | 1 + src-tauri/Cargo.toml | 1 + src-tauri/Info.plist | 2 + src-tauri/build.rs | 10 + src-tauri/native/photos_bridge.m | 189 +++++++ src-tauri/src/lib.rs | 7 + src-tauri/src/photos_library.rs | 528 ++++++++++++++++++ src/lib/Duplicates.svelte | 2 + src/lib/PhotosLibraryReview.svelte | 126 +++++ src/lib/api.ts | 37 ++ src/lib/photosLibraryState.test.ts | 19 + src/lib/photosLibraryState.ts | 15 + 17 files changed, 1012 insertions(+) create mode 100644 docs/architecture/adr/0023-apple-photos-photokit-boundary.md create mode 100644 src-tauri/native/photos_bridge.m create mode 100644 src-tauri/src/photos_library.rs create mode 100644 src/lib/PhotosLibraryReview.svelte create mode 100644 src/lib/photosLibraryState.test.ts create mode 100644 src/lib/photosLibraryState.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 4653fe287..26130bb39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -315,6 +315,9 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and - Restored the cloud-copy public documentation regression contract after a temporary repair path removed it, so CI continues to fail when the new Rust or TypeScript approval surfaces lose beginner-readable documentation. - Align release artifact verification with the pinned `windows-2022` build matrix name, and make the container-capacity regression fixture satisfy the same runtime-health probe required in production. - Require standalone-clone cleanup to bind a real in-root Git directory, complete audit evidence, and an external safe journal before an approved Trash move. +- Add a native Apple Photos duplicate workflow that preserves iCloud-only originals, groups exact + local content, requires an explicit keeper and fresh approval, revalidates PhotoKit identifiers, + and delegates deletion confirmation and Recently Deleted behavior to Photos. ### Security diff --git a/docs/architecture/adr/0023-apple-photos-photokit-boundary.md b/docs/architecture/adr/0023-apple-photos-photokit-boundary.md new file mode 100644 index 000000000..e813d05f8 --- /dev/null +++ b/docs/architecture/adr/0023-apple-photos-photokit-boundary.md @@ -0,0 +1,59 @@ +# ADR 0023: Use PhotoKit rather than Photos library package traversal + +Status: Accepted + +## Context + +Apple Photos libraries can include locally materialized originals and iCloud-only assets. Treating +the `.photoslibrary` package as an ordinary directory bypasses Photos authorization, relationship, +change-notification, and system deletion semantics. A file path is therefore not deletion authority. + +## Decision + +DiskSage uses a macOS-native PhotoKit boundary and never descends into or mutates a managed Photos +library package. Read/write authorization is requested only after the customer selects **Connect +Photos**. Inventory is bounded to 10,000 image assets and 512 MiB per locally available original; +resource requests disable network access, so iCloud-only originals remain unmaterialized and block +all destructive planning. + +Exact groups require SHA-256 content identity. Width, height, pixel count, encoded bytes, resource +type, and UTI remain separate measured evidence; no composite score or arbitrary weight chooses a +keeper. Near-duplicate deletion remains unavailable until measured equivalence evidence exists. +The customer must select one keeper per exact group, enter the fresh exact approval phrase and a +rationale, and then accept Photos' own deletion confirmation. Immediately before the change, +DiskSage re-fetches local identifiers and re-reads local content without network access. The change +uses `PHPhotoLibrary.performChanges`/`PHAssetChangeRequest.deleteAssets`; an immutable, create-new +receipt records only successful completion. Non-macOS builds fail closed. + +## Consequences + +- iCloud-only assets are preserved without implicit download. +- Changes made by Photos, another device, or another app invalidate the reviewed evidence at the + identifier, metadata, or content recheck. +- Deleted assets follow Photos' Recently Deleted and system-confirmation behavior; DiskSage never + directly unlinks a managed original. +- Limited Photos access inventories only the assets Apple exposes, and the UI states the next action. + +## Rejected alternatives + +- Direct `.photoslibrary` traversal or deletion: bypasses PhotoKit authority and can corrupt the library. +- Filesystem Trash for managed originals: bypasses Photos' change transaction and confirmation. +- Automatically downloading iCloud originals: creates disk pressure and expands mutation scope. +- Weighted “best photo” scoring: no calibrated model supports an arbitrary cross-metric weight. + +## References + +Apple. (n.d.). *Delivering an enhanced privacy experience in your Photos app*. Apple Developer. +https://developer.apple.com/documentation/photokit/delivering-an-enhanced-privacy-experience-in-your-photos-app + +Apple. (n.d.). *Observing changes in the photo library*. Apple Developer. +https://developer.apple.com/documentation/photokit/observing-changes-in-the-photo-library + +Apple. (n.d.). *PHAssetChangeRequest*. Apple Developer. +https://developer.apple.com/documentation/photos/phassetchangerequest + +Apple. (n.d.). *PHPhotoLibrary*. Apple Developer. +https://developer.apple.com/documentation/photos/phphotolibrary + +Apple. (n.d.). *Requesting changes to the photo library*. Apple Developer. +https://developer.apple.com/documentation/photokit/requesting-changes-to-the-photo-library diff --git a/docs/architecture/adr/README.md b/docs/architecture/adr/README.md index 16006a1c6..72fa8c017 100644 --- a/docs/architecture/adr/README.md +++ b/docs/architecture/adr/README.md @@ -28,6 +28,7 @@ new numbered record rather than rewriting history. | [0020](0020-podman-native-storage-repair.md) | Use machine-scoped native Podman storage repair without force | Accepted | | [0021](0021-perceptual-photo-candidates.md) | Require measured evidence and a selected survivor for perceptual photo candidates | Accepted | | [0022](0022-photo-duplicate-evidence-without-composite-scoring.md) | Separate photo-duplicate and keeper evidence without composite scoring | Accepted | +| [0023](0023-apple-photos-photokit-boundary.md) | Use PhotoKit rather than Photos library package traversal | Accepted | New records must state context, decision, consequences, rejected alternatives, and the evidence or standard that led to the decision. A record never grants cloud-write or source-eviction authority; diff --git a/docs/doctoring/perceptual-photo-evidence.md b/docs/doctoring/perceptual-photo-evidence.md index 02006fff2..cd0a7aa3a 100644 --- a/docs/doctoring/perceptual-photo-evidence.md +++ b/docs/doctoring/perceptual-photo-evidence.md @@ -17,6 +17,10 @@ placeholders are rejected before decoding so an audit cannot hydrate them. Execu the same report, checks active use and exact filesystem identity, then uses DiskSage's existing atomic OS-Trash boundary and append-only journal. There is no permanent-delete mode. +Apple Photos libraries use the separate PhotoKit boundary documented in ADR 0023. PhotoKit asset +identifiers and resource reads replace package paths; network access is disabled during evidence +collection, so an iCloud-only original is neither downloaded nor admitted to a deletion plan. + ## References pHash. (2010). *pHash design*. https://www.phash.org/docs/design.html diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index b40987bb6..827d8fb1d 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -1228,6 +1228,14 @@ runner's private workspace temp root instead of weakening the shared production cannot form a deletion cluster with an external file. The 44 external Pictures images currently have unique exact-content digests; perceptual comparison and measured quality-survivor selection remain an open product Gap and no non-identical photo was deleted. +- The managed Apple Photos gap now has a separate macOS-native PhotoKit path. It requests read/write + access only from the customer's connect action, inventories local identifiers and measured + resource evidence without allowing network download, groups only exact SHA-256 content matches, + and requires one explicit keeper per group. iCloud-only originals block deletion planning and + remain unmaterialized. Execution re-fetches every identifier, metadata fingerprint, and local + content digest before invoking Photos' own deletion transaction and confirmation; a create-new + receipt follows success. Near-duplicate managed assets remain unavailable rather than receiving + an uncalibrated score, so that Gap is explicit and non-destructive. - A fresh Naruon audit proved exactly one removable worktree: PR #1429 was merged, its detached head was retained by current `origin/develop`, the checkout was clean and inactive, and no open diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 71f635f33..2586bdf32 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -992,6 +992,7 @@ dependencies = [ "base64 0.23.1", "blake3", "calamine", + "cc", "csv", "embed_plist", "fs4", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 8a426e1bb..25dea51ba 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -170,6 +170,7 @@ required-features = ["archive-cli"] [build-dependencies] tauri-build = { version = "2", features = [] } +cc = "1" [dependencies] tauri = { version = "2", features = [] } diff --git a/src-tauri/Info.plist b/src-tauri/Info.plist index c186c9548..9540a89a2 100644 --- a/src-tauri/Info.plist +++ b/src-tauri/Info.plist @@ -6,5 +6,7 @@ DiskSage는 클라우드 보관 계획을 만들기 전에 Downloads 파일의 메타데이터와 크기를 읽습니다. NSFileProviderDomainUsageDescription DiskSage는 선택한 iCloud, OneDrive, Google Drive 대상의 접근 및 동기화 상태를 검증합니다. + NSPhotoLibraryUsageDescription + DiskSage는 사진 앱에서 정확히 같은 사본을 찾고, 사용자가 선택한 사본만 사진 앱의 확인을 거쳐 삭제합니다. diff --git a/src-tauri/build.rs b/src-tauri/build.rs index 9bf51da16..25db48012 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -38,5 +38,15 @@ fn generate_cloud_plan_implementation() { fn main() { generate_cloud_plan_implementation(); + #[cfg(target_os = "macos")] + { + println!("cargo:rerun-if-changed=native/photos_bridge.m"); + cc::Build::new() + .file("native/photos_bridge.m") + .flag("-fobjc-arc") + .compile("disksage_photos_bridge"); + println!("cargo:rustc-link-lib=framework=Photos"); + println!("cargo:rustc-link-lib=framework=Foundation"); + } tauri_build::build() } diff --git a/src-tauri/native/photos_bridge.m b/src-tauri/native/photos_bridge.m new file mode 100644 index 000000000..6d5ac4244 --- /dev/null +++ b/src-tauri/native/photos_bridge.m @@ -0,0 +1,189 @@ +#import +#import +#import + +static const NSUInteger DSMaxChunkBytes = 8 * 1024 * 1024; +static const int64_t DSResourceTimeoutNanos = 30LL * NSEC_PER_SEC; + +static char *DSJSON(id value) { + NSData *data = [NSJSONSerialization dataWithJSONObject:value options:0 error:nil]; + NSString *text = data ? [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] : @"{\"error\":\"photos-json-failed\"}"; + return strdup(text.UTF8String); +} + +static NSString *DSStatus(PHAuthorizationStatus status) { + switch (status) { + case PHAuthorizationStatusAuthorized: return @"authorized"; + case PHAuthorizationStatusLimited: return @"limited"; + case PHAuthorizationStatusDenied: return @"denied"; + case PHAuthorizationStatusRestricted: return @"restricted"; + case PHAuthorizationStatusNotDetermined: return @"not-determined"; + } + return @"unknown"; +} + +static NSString *DSHex(const unsigned char *bytes, NSUInteger length) { + NSMutableString *hex = [NSMutableString stringWithCapacity:length * 2]; + for (NSUInteger index = 0; index < length; index++) [hex appendFormat:@"%02x", bytes[index]]; + return hex; +} + +static NSString *DSMetadataFingerprint(PHAsset *asset, PHAssetResource *resource) { + NSString *text = [NSString stringWithFormat:@"%@\n%ld\n%ld\n%.0f\n%.0f\n%@\n%@\n%ld", + asset.localIdentifier, (long)asset.pixelWidth, (long)asset.pixelHeight, + asset.creationDate.timeIntervalSince1970 * 1000, + asset.modificationDate.timeIntervalSince1970 * 1000, + resource.originalFilename ?: @"", resource.uniformTypeIdentifier ?: @"", (long)resource.type]; + NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding]; + unsigned char digest[CC_SHA256_DIGEST_LENGTH]; + CC_SHA256(data.bytes, (CC_LONG)data.length, digest); + return DSHex(digest, sizeof(digest)); +} + +static NSDictionary *DSReadResource(PHAsset *asset, uint64_t maxBytes) { + NSArray *resources = [PHAssetResource assetResourcesForAsset:asset]; + PHAssetResource *resource = resources.firstObject; + if (!resource) return @{ @"state": @"unavailable", @"blocker": @"no-original-resource" }; + PHAssetResourceRequestOptions *options = [PHAssetResourceRequestOptions new]; + options.networkAccessAllowed = NO; + dispatch_semaphore_t done = dispatch_semaphore_create(0); + __block CC_SHA256_CTX context; + CC_SHA256_Init(&context); + __block uint64_t byteCount = 0; + __block BOOL exceeded = NO; + __block NSError *completionError = nil; + PHAssetResourceDataRequestID requestID = [[PHAssetResourceManager defaultManager] + requestDataForAssetResource:resource + options:options + dataReceivedHandler:^(NSData *data) { + if (data.length > DSMaxChunkBytes || byteCount > maxBytes || data.length > maxBytes - MIN(byteCount, maxBytes)) { + exceeded = YES; + return; + } + byteCount += data.length; + CC_SHA256_Update(&context, data.bytes, (CC_LONG)data.length); + } + completionHandler:^(NSError *error) { + completionError = error; + dispatch_semaphore_signal(done); + }]; + if (dispatch_semaphore_wait(done, dispatch_time(DISPATCH_TIME_NOW, DSResourceTimeoutNanos)) != 0) { + [[PHAssetResourceManager defaultManager] cancelDataRequest:requestID]; + return @{ @"state": @"unavailable", @"blocker": @"local-content-read-timed-out" }; + } + if (completionError) { + return @{ @"state": @"icloud-only-or-unavailable", @"blocker": @"download-original-in-photos" }; + } + if (exceeded) return @{ @"state": @"unavailable", @"blocker": @"local-content-exceeds-review-limit" }; + unsigned char digest[CC_SHA256_DIGEST_LENGTH]; + CC_SHA256_Final(digest, &context); + return @{ @"state": @"local-current", @"content_sha256": DSHex(digest, sizeof(digest)), + @"encoded_bytes": @(byteCount), @"original_filename": resource.originalFilename ?: @"", + @"uniform_type_identifier": resource.uniformTypeIdentifier ?: @"", + @"resource_type": @((NSInteger)resource.type), + @"metadata_fingerprint": DSMetadataFingerprint(asset, resource) }; +} + +static NSDictionary *DSAssetEvidence(PHAsset *asset, uint64_t maxBytes) { + NSMutableDictionary *result = [@{ + @"local_identifier": asset.localIdentifier, + @"width_pixels": @(asset.pixelWidth), @"height_pixels": @(asset.pixelHeight), + @"pixel_count": @((uint64_t)asset.pixelWidth * (uint64_t)asset.pixelHeight), + @"creation_ms": asset.creationDate ? @(llround(asset.creationDate.timeIntervalSince1970 * 1000)) : [NSNull null], + @"modification_ms": asset.modificationDate ? @(llround(asset.modificationDate.timeIntervalSince1970 * 1000)) : [NSNull null] + } mutableCopy]; + [result addEntriesFromDictionary:DSReadResource(asset, maxBytes)]; + return result; +} + +static NSDictionary *DSInventory(NSUInteger maxAssets, uint64_t maxBytes, NSArray *identifiers) { + PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatusForAccessLevel:PHAccessLevelReadWrite]; + if (status != PHAuthorizationStatusAuthorized && status != PHAuthorizationStatusLimited) { + return @{ @"authorization": DSStatus(status), @"evidence_complete": @NO, @"inventory_truncated": @NO, + @"next_action": status == PHAuthorizationStatusNotDetermined ? @"connect-photos" : @"allow-photos-in-system-settings", + @"assets": @[], @"exact_groups": @[], @"unavailable_count": @0 }; + } + PHFetchResult *fetch; + if (identifiers) { + fetch = [PHAsset fetchAssetsWithLocalIdentifiers:identifiers options:nil]; + } else { + PHFetchOptions *options = [PHFetchOptions new]; + options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d", PHAssetMediaTypeImage]; + fetch = [PHAsset fetchAssetsWithOptions:options]; + } + NSMutableArray *assets = [NSMutableArray arrayWithCapacity:fetch.count]; + NSMutableDictionary *byDigest = [NSMutableDictionary dictionary]; + __block NSUInteger unavailable = 0; + NSUInteger reviewCount = MIN(fetch.count, maxAssets); + for (NSUInteger index = 0; index < reviewCount; index++) { + PHAsset *asset = [fetch objectAtIndex:index]; + (void)index; + NSDictionary *evidence = DSAssetEvidence(asset, maxBytes); + [assets addObject:evidence]; + NSString *digest = evidence[@"content_sha256"]; + if (digest) { + if (!byDigest[digest]) byDigest[digest] = [NSMutableArray array]; + [byDigest[digest] addObject:evidence]; + } else unavailable++; + } + NSMutableArray *groups = [NSMutableArray array]; + for (NSString *digest in [[byDigest allKeys] sortedArrayUsingSelector:@selector(compare:)]) { + NSArray *members = byDigest[digest]; + if (members.count > 1) [groups addObject:@{ @"content_sha256": digest, @"members": members, + @"keeper_required": @YES, @"automatic_delete_allowed": @NO }]; + } + NSDictionary *fingerprintSource = @{ @"assets": assets, @"unavailable_count": @(unavailable) }; + NSData *canonical = [NSJSONSerialization dataWithJSONObject:fingerprintSource options:NSJSONWritingSortedKeys error:nil]; + unsigned char digest[CC_SHA256_DIGEST_LENGTH]; CC_SHA256(canonical.bytes, (CC_LONG)canonical.length, digest); + BOOL truncated = fetch.count > reviewCount; + return @{ @"authorization": DSStatus(status), @"observed_at_ms": @((uint64_t)(NSDate.date.timeIntervalSince1970 * 1000)), + @"inventory_fingerprint": DSHex(digest, sizeof(digest)), @"evidence_complete": @(!truncated), + @"inventory_truncated": @(truncated), + @"next_action": truncated ? @"reduce-photos-library-review-scope" : (groups.count ? @"choose-one-photo-to-keep-per-group" : (unavailable ? @"download-originals-in-photos" : @"no-exact-duplicates-found")), + @"assets": assets, @"exact_groups": groups, @"unavailable_count": @(unavailable), + @"near_duplicate_evidence": @"unavailable-without-measured-content-equivalence" }; +} + +char *ds_photos_authorization_status(void) { + return DSJSON(@{ @"authorization": DSStatus([PHPhotoLibrary authorizationStatusForAccessLevel:PHAccessLevelReadWrite]) }); +} + +char *ds_photos_request_authorization(void) { + dispatch_semaphore_t done = dispatch_semaphore_create(0); + __block PHAuthorizationStatus result = PHAuthorizationStatusNotDetermined; + [PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus status) { + result = status; dispatch_semaphore_signal(done); + }]; + dispatch_semaphore_wait(done, DISPATCH_TIME_FOREVER); + return DSJSON(@{ @"authorization": DSStatus(result) }); +} + +char *ds_photos_inventory(uint32_t maxAssets, uint64_t maxBytes) { + return DSJSON(DSInventory(MIN((NSUInteger)maxAssets, 10000), MIN(maxBytes, 536870912ULL), nil)); +} + +char *ds_photos_delete(const char *requestJSON) { + NSData *data = [[NSData alloc] initWithBytes:requestJSON length:strlen(requestJSON)]; + NSDictionary *request = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; + NSArray *identifiers = request[@"delete_identifiers"]; + NSDictionary *expected = request[@"expected_metadata_fingerprints"]; + NSDictionary *expectedContent = request[@"expected_content_sha256"]; + if (![identifiers isKindOfClass:NSArray.class] || !identifiers.count || ![expected isKindOfClass:NSDictionary.class] || + ![expectedContent isKindOfClass:NSDictionary.class] || expected.count != expectedContent.count) + return DSJSON(@{ @"error": @"photos-delete-request-invalid" }); + NSArray *reviewedIdentifiers = expected.allKeys; + NSDictionary *fresh = DSInventory(reviewedIdentifiers.count, [request[@"max_resource_bytes"] unsignedLongLongValue], reviewedIdentifiers); + NSArray *freshAssets = fresh[@"assets"]; + if (freshAssets.count != reviewedIdentifiers.count) return DSJSON(@{ @"error": @"photos-library-changed-review-again" }); + for (NSDictionary *asset in freshAssets) { + NSString *identifier = asset[@"local_identifier"]; + if (![expectedContent[identifier] isEqual:asset[@"content_sha256"]] || + ![expected[identifier] isEqual:asset[@"metadata_fingerprint"]]) + return DSJSON(@{ @"error": @"photos-library-changed-review-again" }); + } + PHFetchResult *fetch = [PHAsset fetchAssetsWithLocalIdentifiers:identifiers options:nil]; + NSError *error = nil; + BOOL success = [[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{ [PHAssetChangeRequest deleteAssets:fetch]; } error:&error]; + if (!success) return DSJSON(@{ @"error": @"photos-system-delete-not-completed", @"system_message": error.localizedDescription ?: @"" }); + return DSJSON(@{ @"deleted_identifiers": identifiers, @"system_confirmation_completed": @YES }); +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 16e2604eb..39a2ed774 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -80,6 +80,8 @@ pub mod orphan; pub mod photo_duplicate; pub mod photo_duplicate_quarantine; pub mod photo_similarity_audit; +/// PhotoKit-only duplicate review and system-confirmed deletion for Apple Photos libraries. +pub mod photos_library; /// Privacy-safe desktop projection of read-only Podman reclaim evidence. pub mod podman_desktop; /// Distinct IPC registration for the privacy-safe Podman evidence contract. @@ -149,6 +151,11 @@ pub fn run() { photo_duplicate_quarantine::audit_exact_photo_duplicates, photo_duplicate_quarantine::plan_exact_photo_duplicate_quarantine, photo_duplicate_quarantine::execute_exact_photo_duplicate_quarantine, + photos_library::photos_authorization_status, + photos_library::request_photos_authorization, + photos_library::inspect_photos_duplicates, + photos_library::plan_photos_duplicate_deletion, + photos_library::execute_photos_duplicate_deletion, commands::get_ontology, commands::disk_inventory, commands::ontology_coherence, diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs new file mode 100644 index 000000000..601a682f0 --- /dev/null +++ b/src-tauri/src/photos_library.rs @@ -0,0 +1,528 @@ +//! Apple Photos duplicate review through PhotoKit; managed library files are never traversed. + +use serde::{Deserialize, Serialize}; +use std::collections::{BTreeMap, BTreeSet}; +use std::fs::OpenOptions; +use std::io::Write; +use tauri::Manager; + +const SCHEMA_VERSION: u32 = 1; +const MAX_INVENTORY_ASSETS: u32 = 10_000; +const MAX_RESOURCE_BYTES: u64 = 512 * 1024 * 1024; +const MAX_PLAN_AGE_MS: u64 = 5 * 60 * 1_000; + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosAuthorization { + pub authorization: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosAssetEvidence { + pub local_identifier: String, + pub width_pixels: u64, + pub height_pixels: u64, + pub pixel_count: u64, + pub creation_ms: Option, + pub modification_ms: Option, + pub state: String, + pub blocker: Option, + pub content_sha256: Option, + pub encoded_bytes: Option, + pub original_filename: Option, + pub uniform_type_identifier: Option, + pub resource_type: Option, + pub metadata_fingerprint: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosExactGroup { + pub content_sha256: String, + pub members: Vec, + pub keeper_required: bool, + pub automatic_delete_allowed: bool, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosDuplicateInventory { + pub authorization: String, + pub observed_at_ms: Option, + pub inventory_fingerprint: Option, + pub evidence_complete: bool, + pub inventory_truncated: bool, + pub next_action: String, + pub assets: Vec, + pub exact_groups: Vec, + pub unavailable_count: u64, + pub near_duplicate_evidence: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosKeeperSelection { + pub content_sha256: String, + pub keeper_local_identifier: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosDeletionPlan { + pub schema_version: u32, + pub inventory_fingerprint: String, + pub observed_at_ms: u64, + pub plan_fingerprint: String, + pub delete_identifiers: Vec, + pub expected_metadata_fingerprints: BTreeMap, + pub expected_content_sha256: BTreeMap, + pub logical_candidate_bytes: u64, + pub exact_approval_phrase: String, + pub max_resource_bytes: u64, + pub permanent_delete_requested: bool, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosDeletionReceipt { + pub schema_version: u32, + pub receipt_id: String, + pub plan_fingerprint: String, + pub executed_at_ms: u64, + pub rationale: String, + pub deleted_count: usize, + pub system_confirmation_completed: bool, + pub permanent_delete_requested: bool, + pub next_action: String, +} + +fn hash_json(value: &T) -> Result { + let bytes = serde_json::to_vec(value).map_err(|_| "photos-evidence-serialization-failed")?; + Ok(blake3::hash(&bytes).to_hex().to_string()) +} + +pub fn plan_deletion( + inventory: &PhotosDuplicateInventory, + selections: &[PhotosKeeperSelection], +) -> Result { + if inventory.authorization != "authorized" && inventory.authorization != "limited" { + return Err("photos-access-not-authorized".into()); + } + if !inventory.evidence_complete || inventory.inventory_truncated { + return Err("photos-inventory-incomplete-review-again".into()); + } + let inventory_fingerprint = inventory + .inventory_fingerprint + .clone() + .ok_or("photos-inventory-fingerprint-missing")?; + let observed_at_ms = inventory + .observed_at_ms + .ok_or("photos-inventory-observation-missing")?; + let selected = selections + .iter() + .map(|item| { + ( + item.content_sha256.as_str(), + item.keeper_local_identifier.as_str(), + ) + }) + .collect::>(); + if selected.len() != selections.len() || selected.len() != inventory.exact_groups.len() { + return Err("photos-one-keeper-required-per-group".into()); + } + let mut delete_identifiers = Vec::new(); + let mut expected_metadata_fingerprints = BTreeMap::new(); + let mut expected_content_sha256 = BTreeMap::new(); + let mut logical_candidate_bytes = 0u64; + for group in &inventory.exact_groups { + if !group.keeper_required || group.automatic_delete_allowed || group.members.len() < 2 { + return Err("photos-duplicate-group-invalid".into()); + } + let keeper = selected + .get(group.content_sha256.as_str()) + .ok_or("photos-one-keeper-required-per-group")?; + if !group + .members + .iter() + .any(|member| member.local_identifier == *keeper) + { + return Err("photos-keeper-not-in-group".into()); + } + for member in &group.members { + let fingerprint = member + .metadata_fingerprint + .clone() + .ok_or("photos-member-evidence-incomplete")?; + let content_sha256 = member + .content_sha256 + .clone() + .ok_or("photos-member-evidence-incomplete")?; + if content_sha256 != group.content_sha256 { + return Err("photos-duplicate-content-evidence-invalid".into()); + } + if expected_metadata_fingerprints + .insert(member.local_identifier.clone(), fingerprint) + .is_some() + || expected_content_sha256 + .insert(member.local_identifier.clone(), content_sha256) + .is_some() + { + return Err("photos-member-repeated-across-groups".into()); + } + if member.local_identifier == *keeper { + continue; + } + logical_candidate_bytes = logical_candidate_bytes + .checked_add( + member + .encoded_bytes + .ok_or("photos-member-evidence-incomplete")?, + ) + .ok_or("photos-logical-bytes-overflow")?; + delete_identifiers.push(member.local_identifier.clone()); + } + } + if delete_identifiers.is_empty() { + return Err("photos-no-duplicate-selected".into()); + } + delete_identifiers.sort(); + let exact_approval_phrase = format!( + "DELETE {} PHOTOS FROM PHOTOS {}", + delete_identifiers.len(), + &inventory_fingerprint[..inventory_fingerprint.len().min(12)] + ); + let mut plan = PhotosDeletionPlan { + schema_version: SCHEMA_VERSION, + inventory_fingerprint, + observed_at_ms, + plan_fingerprint: String::new(), + exact_approval_phrase, + delete_identifiers, + expected_metadata_fingerprints, + expected_content_sha256, + logical_candidate_bytes, + max_resource_bytes: MAX_RESOURCE_BYTES, + permanent_delete_requested: false, + }; + plan.plan_fingerprint = hash_json(&plan)?; + Ok(plan) +} + +fn validate_execution( + inventory: &PhotosDuplicateInventory, + plan: &PhotosDeletionPlan, + approval_phrase: &str, + rationale: &str, + executed_at_ms: u64, +) -> Result<(), String> { + if plan.schema_version != SCHEMA_VERSION + || plan.permanent_delete_requested + || inventory.inventory_fingerprint.as_deref() != Some(&plan.inventory_fingerprint) + || plan.plan_fingerprint.is_empty() + { + return Err("photos-plan-invalid".into()); + } + let mut unsigned = plan.clone(); + unsigned.plan_fingerprint.clear(); + if hash_json(&unsigned)? != plan.plan_fingerprint { + return Err("photos-plan-fingerprint-invalid".into()); + } + if approval_phrase != plan.exact_approval_phrase { + return Err("photos-exact-approval-required".into()); + } + let rationale = rationale.trim(); + if rationale.is_empty() || rationale.chars().count() > 1_000 { + return Err("photos-rationale-required".into()); + } + if executed_at_ms < plan.observed_at_ms + || executed_at_ms - plan.observed_at_ms > MAX_PLAN_AGE_MS + { + return Err("photos-review-expired-review-again".into()); + } + Ok(()) +} + +#[cfg(target_os = "macos")] +mod native { + use super::*; + use std::ffi::{CStr, CString}; + use std::os::raw::c_char; + + extern "C" { + fn ds_photos_authorization_status() -> *mut c_char; + fn ds_photos_request_authorization() -> *mut c_char; + fn ds_photos_inventory(max_assets: u32, max_bytes: u64) -> *mut c_char; + fn ds_photos_delete(request_json: *const c_char) -> *mut c_char; + } + + fn take_json Deserialize<'de>>(pointer: *mut c_char) -> Result { + if pointer.is_null() { + return Err("photos-native-response-missing".into()); + } + let bytes = unsafe { CStr::from_ptr(pointer).to_bytes().to_vec() }; + unsafe { libc::free(pointer.cast()) }; + serde_json::from_slice(&bytes).map_err(|_| "photos-native-response-invalid".into()) + } + + pub fn status() -> Result { + take_json(unsafe { ds_photos_authorization_status() }) + } + + pub fn authorize() -> Result { + take_json(unsafe { ds_photos_request_authorization() }) + } + + pub fn inventory() -> Result { + take_json(unsafe { ds_photos_inventory(MAX_INVENTORY_ASSETS, MAX_RESOURCE_BYTES) }) + } + + #[derive(Deserialize)] + struct NativeDeleteResult { + deleted_identifiers: Option>, + system_confirmation_completed: Option, + error: Option, + } + + pub fn delete(plan: &PhotosDeletionPlan) -> Result<(), String> { + let json = + CString::new(serde_json::to_vec(plan).map_err(|_| "photos-delete-request-invalid")?) + .map_err(|_| "photos-delete-request-invalid")?; + let response: NativeDeleteResult = take_json(unsafe { ds_photos_delete(json.as_ptr()) })?; + if let Some(error) = response.error { + return Err(error); + } + let deleted = response + .deleted_identifiers + .ok_or("photos-delete-result-incomplete")?; + if response.system_confirmation_completed != Some(true) + || deleted.iter().cloned().collect::>() + != plan.delete_identifiers.iter().cloned().collect() + { + return Err("photos-delete-result-incomplete".into()); + } + Ok(()) + } +} + +#[cfg(not(target_os = "macos"))] +mod native { + use super::*; + pub fn status() -> Result { + Err("photos-library-macos-only".into()) + } + pub fn authorize() -> Result { + Err("photos-library-macos-only".into()) + } + pub fn inventory() -> Result { + Err("photos-library-macos-only".into()) + } + pub fn delete(_: &PhotosDeletionPlan) -> Result<(), String> { + Err("photos-library-macos-only".into()) + } +} + +#[tauri::command] +pub async fn photos_authorization_status() -> Result { + tauri::async_runtime::spawn_blocking(native::status) + .await + .map_err(|_| "photos-operation-interrupted".to_string())? +} + +/// Request read/write permission only when invoked by the customer's Photos connection action. +#[tauri::command] +pub async fn request_photos_authorization() -> Result { + tauri::async_runtime::spawn_blocking(native::authorize) + .await + .map_err(|_| "photos-operation-interrupted".to_string())? +} + +#[tauri::command] +pub async fn inspect_photos_duplicates() -> Result { + tauri::async_runtime::spawn_blocking(native::inventory) + .await + .map_err(|_| "photos-operation-interrupted".to_string())? +} + +#[tauri::command] +pub fn plan_photos_duplicate_deletion( + inventory: PhotosDuplicateInventory, + selections: Vec, +) -> Result { + plan_deletion(&inventory, &selections) +} + +#[tauri::command] +pub async fn execute_photos_duplicate_deletion( + app: tauri::AppHandle, + inventory: PhotosDuplicateInventory, + plan: PhotosDeletionPlan, + approval_phrase: String, + rationale: String, + executed_at_ms: u64, +) -> Result { + validate_execution( + &inventory, + &plan, + &approval_phrase, + &rationale, + executed_at_ms, + )?; + let mut receipt = PhotosDeletionReceipt { + schema_version: SCHEMA_VERSION, + receipt_id: String::new(), + plan_fingerprint: plan.plan_fingerprint, + executed_at_ms, + rationale: rationale.trim().to_string(), + deleted_count: plan.delete_identifiers.len(), + system_confirmation_completed: true, + permanent_delete_requested: false, + next_action: "open-recently-deleted-to-restore-or-review-space".into(), + }; + receipt.receipt_id = hash_json(&receipt)?; + let directory = app + .path() + .app_data_dir() + .map_err(|_| "photos-receipt-directory-unavailable")? + .join("photos-receipts"); + std::fs::create_dir_all(&directory).map_err(|_| "photos-receipt-directory-unavailable")?; + let path = directory.join(format!("{}.json", receipt.receipt_id)); + let mut file = OpenOptions::new() + .write(true) + .create_new(true) + .open(&path) + .map_err(|_| "photos-receipt-create-failed")?; + let native_plan = plan.clone(); + let native_result = tauri::async_runtime::spawn_blocking(move || native::delete(&native_plan)) + .await + .map_err(|_| "photos-operation-interrupted".to_string())?; + if let Err(error) = native_result { + drop(file); + let _ = std::fs::remove_file(path); + return Err(error); + } + let bytes = + serde_json::to_vec_pretty(&receipt).map_err(|_| "photos-receipt-serialization-failed")?; + file.write_all(&bytes) + .map_err(|_| "photos-receipt-write-failed")?; + file.sync_all().map_err(|_| "photos-receipt-sync-failed")?; + Ok(receipt) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn member(id: &str, bytes: u64) -> PhotosAssetEvidence { + PhotosAssetEvidence { + local_identifier: id.into(), + width_pixels: 4000, + height_pixels: 3000, + pixel_count: 12_000_000, + creation_ms: Some(1), + modification_ms: Some(2), + state: "local-current".into(), + blocker: None, + content_sha256: Some("a".repeat(64)), + encoded_bytes: Some(bytes), + original_filename: Some(format!("{id}.heic")), + uniform_type_identifier: Some("public.heic".into()), + resource_type: Some(1), + metadata_fingerprint: Some(format!("fingerprint-{id}")), + } + } + + fn inventory() -> PhotosDuplicateInventory { + let members = vec![member("keep", 10), member("remove", 8)]; + PhotosDuplicateInventory { + authorization: "authorized".into(), + observed_at_ms: Some(100), + inventory_fingerprint: Some("inventory".into()), + evidence_complete: true, + inventory_truncated: false, + next_action: "choose-one-photo-to-keep-per-group".into(), + assets: members.clone(), + exact_groups: vec![PhotosExactGroup { + content_sha256: "a".repeat(64), + members, + keeper_required: true, + automatic_delete_allowed: false, + }], + unavailable_count: 0, + near_duplicate_evidence: Some( + "unavailable-without-measured-content-equivalence".into(), + ), + } + } + + #[test] + fn plan_requires_explicit_keeper_and_preserves_it() { + let inventory = inventory(); + assert_eq!( + plan_deletion(&inventory, &[]).unwrap_err(), + "photos-one-keeper-required-per-group" + ); + let plan = plan_deletion( + &inventory, + &[PhotosKeeperSelection { + content_sha256: "a".repeat(64), + keeper_local_identifier: "keep".into(), + }], + ) + .unwrap(); + assert_eq!(plan.delete_identifiers, ["remove"]); + assert_eq!(plan.logical_candidate_bytes, 8); + assert!(!plan.permanent_delete_requested); + } + + #[test] + fn icloud_only_asset_is_never_admitted_to_destructive_plan() { + let mut inventory = inventory(); + inventory.unavailable_count = 1; + let mut cloud = member("cloud", 20); + cloud.state = "icloud-only-or-unavailable".into(); + cloud.blocker = Some("download-original-in-photos".into()); + cloud.content_sha256 = None; + cloud.encoded_bytes = None; + cloud.metadata_fingerprint = None; + inventory.assets.push(cloud); + let plan = plan_deletion( + &inventory, + &[PhotosKeeperSelection { + content_sha256: "a".repeat(64), + keeper_local_identifier: "keep".into(), + }], + ) + .unwrap(); + assert_eq!(plan.delete_identifiers, ["remove"]); + assert!(!plan.delete_identifiers.contains(&"cloud".to_string())); + } + + #[test] + fn execution_rejects_stale_or_inexact_approval() { + let inventory = inventory(); + let plan = plan_deletion( + &inventory, + &[PhotosKeeperSelection { + content_sha256: "a".repeat(64), + keeper_local_identifier: "keep".into(), + }], + ) + .unwrap(); + assert_eq!( + validate_execution(&inventory, &plan, "wrong", "duplicate", 100).unwrap_err(), + "photos-exact-approval-required" + ); + assert_eq!( + validate_execution( + &inventory, + &plan, + &plan.exact_approval_phrase, + "duplicate", + MAX_PLAN_AGE_MS + 101 + ) + .unwrap_err(), + "photos-review-expired-review-again" + ); + } +} diff --git a/src/lib/Duplicates.svelte b/src/lib/Duplicates.svelte index d3b3e6491..b48275526 100644 --- a/src/lib/Duplicates.svelte +++ b/src/lib/Duplicates.svelte @@ -5,6 +5,7 @@ import { verdictBadge } from "./verdictBadge"; import { confirm } from "@tauri-apps/plugin-dialog"; import ExactPhotoReview from "./ExactPhotoReview.svelte"; + import PhotosLibraryReview from "./PhotosLibraryReview.svelte"; let { scannedRoot }: { scannedRoot: string | null } = $props(); @@ -137,6 +138,7 @@ {#if groups.length > 0 && scannedRoot} {/if} + {#if results.length > 0}

{results.filter((r) => r.ok).length}/{results.length}개 휴지통으로 이동 — 복원 가능합니다.

diff --git a/src/lib/PhotosLibraryReview.svelte b/src/lib/PhotosLibraryReview.svelte new file mode 100644 index 000000000..cdf5a386f --- /dev/null +++ b/src/lib/PhotosLibraryReview.svelte @@ -0,0 +1,126 @@ + + +
+
+

Apple Photos

사진 앱의 정확한 사본 정리

+ {#if authorization !== "authorized" && authorization !== "limited"} + + {:else} + + {/if} +
+

사진 앱이 관리하는 원본만 안전하게 확인합니다. 이 Mac에 없는 원본은 다운로드하거나 삭제하지 않습니다.

+
{status}
+ {#if error}{/if} + + {#if inventory?.unavailable_count} +

이 Mac에 없는 원본은 다운로드하거나 삭제하지 않습니다. 해당 사진도 비교하려면 사진 앱에서 원본을 먼저 다운로드하세요.

+ {/if} + {#if inventory?.inventory_truncated} + + {/if} + {#each inventory?.exact_groups ?? [] as group, index (group.content_sha256)} +
+ 사본 그룹 {index + 1} · {group.members.length}개 +

내용 해시가 정확히 같습니다. 해상도·픽셀 수·파일 크기는 각각 표시하며 합산 점수는 사용하지 않습니다.

+ {#each group.members as member (member.local_identifier)} + + {/each} +
+ {/each} + {#if inventory?.exact_groups.length} + + {/if} + {#if plan} +
+

{plan.delete_identifiers.length}개 · 논리 {fmtBytes(plan.logical_candidate_bytes)} · 사진 앱의 확인 전에는 삭제되지 않습니다.

+ {plan.exact_approval_phrase} + + + +
+ {/if} + {#if receipt}

완료 기록 {receipt.receipt_id.slice(0, 12)} · 사진 앱의 최근 삭제된 항목에서 복원할 수 있습니다.

{/if} +
+ + diff --git a/src/lib/api.ts b/src/lib/api.ts index 1d9ed6171..a13676bbf 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -218,6 +218,43 @@ export const executeExactPhotoDuplicateQuarantine = ( ) => invoke("execute_exact_photo_duplicate_quarantine", { audit, plan, approvalPhrase, rationale, executedAtMs, }); + +export interface PhotosAuthorization { authorization: string } +export interface PhotosAssetEvidence { + local_identifier: string; width_pixels: number; height_pixels: number; pixel_count: number; + creation_ms: number | null; modification_ms: number | null; state: string; blocker: string | null; + content_sha256: string | null; encoded_bytes: number | null; original_filename: string | null; + uniform_type_identifier: string | null; resource_type: number | null; metadata_fingerprint: string | null; +} +export interface PhotosExactGroup { + content_sha256: string; members: PhotosAssetEvidence[]; keeper_required: boolean; + automatic_delete_allowed: boolean; +} +export interface PhotosDuplicateInventory { + authorization: string; observed_at_ms: number | null; inventory_fingerprint: string | null; + evidence_complete: boolean; inventory_truncated: boolean; next_action: string; assets: PhotosAssetEvidence[]; + exact_groups: PhotosExactGroup[]; unavailable_count: number; near_duplicate_evidence: string | null; +} +export interface PhotosKeeperSelection { content_sha256: string; keeper_local_identifier: string } +export interface PhotosDeletionPlan { + plan_fingerprint: string; delete_identifiers: string[]; logical_candidate_bytes: number; + exact_approval_phrase: string; permanent_delete_requested: false; +} +export interface PhotosDeletionReceipt { + receipt_id: string; deleted_count: number; system_confirmation_completed: boolean; + permanent_delete_requested: false; next_action: string; +} +export const photosAuthorizationStatus = () => invoke("photos_authorization_status"); +export const requestPhotosAuthorization = () => invoke("request_photos_authorization"); +export const inspectPhotosDuplicates = () => invoke("inspect_photos_duplicates"); +export const planPhotosDuplicateDeletion = (inventory: PhotosDuplicateInventory, selections: PhotosKeeperSelection[]) => + invoke("plan_photos_duplicate_deletion", { inventory, selections }); +export const executePhotosDuplicateDeletion = ( + inventory: PhotosDuplicateInventory, plan: PhotosDeletionPlan, approvalPhrase: string, + rationale: string, executedAtMs: number, +) => invoke("execute_photos_duplicate_deletion", { + inventory, plan, approvalPhrase, rationale, executedAtMs, +}); export const planOrphanCleanup = () => invoke("plan_orphan_cleanup"); export const cleanOrphanCandidates = ( planFingerprint: string, diff --git a/src/lib/photosLibraryState.test.ts b/src/lib/photosLibraryState.test.ts new file mode 100644 index 000000000..e3c3c0a48 --- /dev/null +++ b/src/lib/photosLibraryState.test.ts @@ -0,0 +1,19 @@ +import { describe, expect, it } from "vitest"; +import { photosApprovalReady, photosSelections } from "./photosLibraryState"; +import type { PhotosDuplicateInventory } from "./api"; + +const inventory = { + exact_groups: [{ content_sha256: "digest", members: [], keeper_required: true, automatic_delete_allowed: false }], +} as PhotosDuplicateInventory; + +describe("Apple Photos review state", () => { + it("requires one explicit keeper and exact fresh approval inputs", () => { + expect(photosSelections(inventory, {})).toBeNull(); + expect(photosSelections(inventory, { digest: "asset-1" })).toEqual([ + { content_sha256: "digest", keeper_local_identifier: "asset-1" }, + ]); + const plan = { exact_approval_phrase: "DELETE 1 PHOTOS FROM PHOTOS" } as never; + expect(photosApprovalReady(plan, "DELETE 1 PHOTOS FROM PHOTOS", "same photo")).toBe(true); + expect(photosApprovalReady(plan, "DELETE", "same photo")).toBe(false); + }); +}); diff --git a/src/lib/photosLibraryState.ts b/src/lib/photosLibraryState.ts new file mode 100644 index 000000000..fd852b582 --- /dev/null +++ b/src/lib/photosLibraryState.ts @@ -0,0 +1,15 @@ +import type { PhotosDeletionPlan, PhotosDuplicateInventory, PhotosKeeperSelection } from "./api"; + +export const photosSelections = ( + inventory: PhotosDuplicateInventory, + keepers: Record, +): PhotosKeeperSelection[] | null => { + const selections = inventory.exact_groups.map((group) => ({ + content_sha256: group.content_sha256, + keeper_local_identifier: keepers[group.content_sha256] ?? "", + })); + return selections.every((selection) => selection.keeper_local_identifier) ? selections : null; +}; + +export const photosApprovalReady = (plan: PhotosDeletionPlan, approval: string, rationale: string) => + approval === plan.exact_approval_phrase && rationale.trim().length > 0; From 3907a1504418e7ff65e9039bc566a498977029b5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 06:56:05 +0900 Subject: [PATCH 02/11] fix: reserve Photos receipt before deletion --- src-tauri/src/photos_library.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index 601a682f0..9c24194ca 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -371,7 +371,7 @@ pub async fn execute_photos_duplicate_deletion( let mut receipt = PhotosDeletionReceipt { schema_version: SCHEMA_VERSION, receipt_id: String::new(), - plan_fingerprint: plan.plan_fingerprint, + plan_fingerprint: plan.plan_fingerprint.clone(), executed_at_ms, rationale: rationale.trim().to_string(), deleted_count: plan.delete_identifiers.len(), From 2d9d25fef766965979beadc72a2bf97f4dbaae5c Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 07:01:25 +0900 Subject: [PATCH 03/11] fix: clean interrupted Photos receipt reservations --- src-tauri/src/photos_library.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index 9c24194ca..90ae2fea6 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -392,17 +392,19 @@ pub async fn execute_photos_duplicate_deletion( .create_new(true) .open(&path) .map_err(|_| "photos-receipt-create-failed")?; + let bytes = + serde_json::to_vec_pretty(&receipt).map_err(|_| "photos-receipt-serialization-failed")?; let native_plan = plan.clone(); - let native_result = tauri::async_runtime::spawn_blocking(move || native::delete(&native_plan)) - .await - .map_err(|_| "photos-operation-interrupted".to_string())?; + let native_result = + match tauri::async_runtime::spawn_blocking(move || native::delete(&native_plan)).await { + Ok(result) => result, + Err(_) => Err("photos-operation-interrupted".to_string()), + }; if let Err(error) = native_result { drop(file); let _ = std::fs::remove_file(path); return Err(error); } - let bytes = - serde_json::to_vec_pretty(&receipt).map_err(|_| "photos-receipt-serialization-failed")?; file.write_all(&bytes) .map_err(|_| "photos-receipt-write-failed")?; file.sync_all().map_err(|_| "photos-receipt-sync-failed")?; From e611f9ee6051e5eafde9083f03cda7d27212ba35 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 07:01:44 +0900 Subject: [PATCH 04/11] docs: retain Apple Photos UI audit evidence --- docs/evidence/photos-library-review.png | Bin 0 -> 355122 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/evidence/photos-library-review.png diff --git a/docs/evidence/photos-library-review.png b/docs/evidence/photos-library-review.png new file mode 100644 index 0000000000000000000000000000000000000000..73bdabb2ccc923a30206f7a4d57d2cfa172798ef GIT binary patch literal 355122 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 gPJHvokk-Dr8ER_iw5)TOS{BW9-2QND0hTvD97O zG?P`Osib~z5)&(|sTEO{J#f8E_)1}gP`?WMet6aPr}NG^IU%R&jb64xah2dc7ql=% zAr>iXVPhdJ4yg14x1$}r&QuRwpNcpv3YVM|l%tcn^XxrF4yWBcCkN|tqj!YJ6ds}@ z%-hK^VmH8oDVuO=Y9+gwN}VU7Z>kFT0Jj!Lq%;3)$%dHDQ5j97`~pi2d37phml{9e z&|>306~rg1*uyQ#Zk>9(e8#zds`c#tOn2&eQa;&lSwy@?ik2^&6Z~do=|LvsUL`dO$&>h2pdb# zD4|ZN53-Ev)5=W(j57^5HlHdEm4e#(c3{T%=Ri}TOgIySIX`UrP;gzDX5*4obFX-`~zo?dxAI2ir$o5E8vA}QC;AD>+4rUEgE^$ETHIrH!# zhghfIarmcmmF-qJ5kpvpa+PZcO~(dtgm{UnF;hja$H9ezrA+ zNi@=|pQJ2&2^kw^YN2k&+m26L7`ykp+vYHfwX#J&Pv9{{u$7SYSc%;YMfcf{2?l=B zX0|G+M^FAgD(u?5VC&f!Xqe%gg>_ zn$LH`E^a(CYmKP7dhwp&PKMO4e$&D2h6;D==1``PES%v@oQeHT8-J$#PrKP9qmI8a z3T6KMoC3N?y3~*FYfol}qX-@OM4h;&uI$G_t@$=2PW5=FSP@yd>LMSd3}1#AEWhCExXV~=0&7H?a66Jhaev+%Vc0WJsam~K5+c0=dI;SyU>?%I@7eDkU zeeHV#+xQe?;ERdd$CK0Pcb(o;FlJ9lN3Y&F*_NGnV|lv*)!j4h_I0BJc}Sp`wxWgPj&>WS*YmlO!2bHS5#m@ktFK*- zC2LP6HekS?A{M>2<|M)_UaFF(J@m=VgZMq=7jTUvVBar(k#CJ6R~uqk=PWWB=|XLp z){LbJCfXMr`^GXDk0z!2W|C^wNY%1$tUJ{sZ(>k04`YA`_cY&c7U7>1qCVH}e$rF7 z8?gDj{z$U+#`D277u=uwwzl`CFSXwsU(a-QbF0P5%WLYcbbBfU3uul_z&e?Fhk!`Y zKfy6|QUbXyLqWlAiG9LEU+889oxj}k4d?RK%(aM%8$F#xju@u;<4KEsCy$&r#`Y?`@6n~=avtR8Voh7l~!`>;IYdZL)giWO?aC=5}xOem%oBzwcvi zmMA7I>xIBy!xQ6lUFv1LQ&$QXLavQ}l0TXmSRgX>y}mx{5gRz+j|oDKpY?y%a~La= zU4KvXRI!O&kkzG&F1X>?&cb-4a;sI*g`#=TQ~EZ+vHE~m*W1fAj5F+eh}@&0Px_L0 z53ec^Iv>iGs7r2mkBCPdq4Fes4OdDg#kDV$hcYwdsKgtUwA^{jN%wAEz(7@*w!1L_ z8Oo`8U$vUe+()y}p+l`)SY(rU`gJ?&oG#{?@epbrVY+Pg#VnbTRL1S$yR_Iw*U9$y zi)1V67t~X3F4RWzRp*JMeMfF8c1xsO?q6$?P9?C5Lt+I0(zSA8>&C>J{2A43Q|r%n zi9g+qy?}vyO6G-Kgv#OaCGa3};GQ}RzdGI{l`OKba?jQD@K)1z+Rz-CvKA3PT&FJz zeWRazx6LSe(t2#!yDO0^H{)sf+){s5C#TY0eP;HqO(sX7NViZ(*QRy<8A#z?jgiaX z=_*!VT;$knrCejd;UA0aYYsz|AK4sy>$A+(Zo(f7tp{b@z@>oMw$17I|80hBl8B@BLWVg0S*vhyH|beVX&) z7fsf#F@79MYo@o{9W<3Ut{ZbMuYVfa!qK1)81bP$oy%anir??a>&`P)ji04fdV$Mn zV`VSM8O4#rG*G$ImO6HR(((b37;@u}^el_&cGq--YWd!uhre6nF7vSXQ0v%_J7PH1 zIy(OJ(tXcSU}PO_Q+(=wZ?b;7+jxZ2dtrCR#!c+|{)EDpTTw-ECK6l>CK439-=_CJ zbJ)AIT2Ja?&@go_V6r0?4=1e=36%A zUMT}=TVY1`i2|u?i{97$oT43&+ z`q~|8o03ng0j!SGjdK$>c`mRyAJ^%r?{MpG>T|%(6OdqzRF$8wdC4cf;k_Kk=XAJ% z;WiM%@?mpGeuD90F#Z7V8vQ$g7!`S9gS$$LKTI)hAFUo~Oe&4v_`Sz98*eh|FlP+s z<0b)fKAvLopt@#TW2}o}32B{Un%UHQe0l0=>`q+zGBw)3z3`2o^h(!+nB1jbHyaO) z>+$VVU5kBWk%tpK4Jg;AuVd!0-?OFBOPWbMC06Iv6K82Cw~75^U4hy5U4P*#N93<^ zr3p>LDuvRWl$8E;hs9sajrwx2g)3USMvC+25MdHg@$-`UmZuedYa$KCj~kP<2eucw zcL?bm*ZsJ#n`3G4b_k2gvL9Z1EXBzE@G+CY_r0t3_W9a^LicYRL^Q7Fhgf ze|ykEUXeazHGaFOai!$$TNRVKsOnD?+)+yLM*0qyS};Fp)uv=~GM-=iWr&P_O2RkY z8o*ID$AU2`7{6_55k$i87eCKtQuTfB`wJ5rX5=e7i@8l}r7WfL7(HxCl_#TZrJZ6M z0#Qts?!H7ORPpbt@5Xm@+N}4cZ(X_5^VELiS8|JdH}4nBX%*d07W=85Vh0Uo&&^b? zIn5Yh;%*%t3Qtxa_PeRRD)uU+7iaSqb`p+m^k^)^W@eM|I>+t%=ZeL=@(l6pd2g?^ zF7SgsFMH#b>)Y1?^VxJHrnl-V#kaz&=#1+LZEw_LK37YU=&HH=G>Pc4FDW%Gvn7Q# zl-Vz&>j%efUVJQFzE{8P2FyEha}1+^x0hX|WgIcDTsc(pJ1R5mfVqN}-?#LtQ<%_C zNY9Y4j0-T`;}ab*5yuRW5;RR>eM>4|T84ky({!9)fLi1tZ}K;G_PP%ZwQGY1RYPmr z6%l5u6E06&Pq8RHRhOxWgRxwuTVqx{J=TncooD$1e^A9`? z;iecWLly3&D4M$z2{b#phaa(&m-xhP_%6|oI!^5n`87nk;4_C3FW2M1@l&ry;^S{( z_kq2hnR9>JSFUZtx$RmPg-wOlm69QiXHmr_iA7Zh_4RyD;ymD_G&Dm%)$yIyk-uyv zi_&LOko@{YTGm7ft5t>!r&XGk?|W>Q96*bi6_rur@h~VqdFz1Z%k|mA=Kj zbo=&|%f4{du8tk;?YkrY7kh6RRb}`6{aOfuv`T|C0@6r>(gK1A3P?&Lx#>nyx}`%x z5QC8J?hfhh?#?s$-T&YHjOV;Mc}i^LcJDOFWi_zxr&*a zXn4>%I@q(Y#VU9h#MhY=d4-q3*A2O|9C4AcKoJJ^K~kg*PZ-IlnCLh?fxKN53b6 zN}R49CVb+8Y?MjN^3!CU#f*R~Cb%Zh6e8918iR`fR7=s|enQ?+Bj; zZM+nJWpT-+BZQ-mp3h(@&R`M4Q(!GR^!*LuVD#YFb+JTAC9^e4DStHGh&?wY?*ZcT za%zfLdNi}d;V<&cHqAF47p?{3*pC*3hq|#RA6;c!g@(3&0fH&@px=G$n$~0%2g1A5 z7*u(Rc_u5Tg~r^QCUM1r=fBK4KPrzEw8hLljZ;%C(Ykc?bZba@JZe1j-GfBOOc*!7 zZqMx@C@k#D@rY+N zCbhnrj?XQyH|L*y0iBq=&vOz9CIrqi?=|{A2*k3SwXM~@+D)*>Q`56E=vFT=m=ZjD zqrz_Bub&dD>6$3}Bp)Gr?vzGNC?gT|mOX@&Pn^Rs@ezAxgTXtW`BBHh7Rz8h{L3Z3 zYTljZ@P(f~!T56me-QmqXv#)gZ&+++bLPG1m7=RpeD=okIoF=K{xxTrbp89Yo!mkp zbZV{l44TZblv*#W7QT$2YE4}8H&M}kB-#>pvZaSDi8fw0O`jffshj>nDEL{#3p$m^ zec7Yp;vYM&?F0zhloEWj)Tnx+9mlA|%qGIAU)j3QJ;m9^k3J`8FU!Arq^Y;N09E8@e=F*5S}g)+7!kH+uL#(`K`tZ2{YdEGwJ|FA3h<`JginQ<#; zU7cpVX9ho!OXUw%|DY=&*FA{|zO<(dxR1bMb>E1+lS;O|8hD^6{L zD(>ucvA?e{Z{qw=GGI+p&!$&7&*={jkL>-04;v3xTs=QqUD*~-c|DcD;kXy5mgaQ3 zQTOm%EFk)_6tVY=N{bO)+j4jr!6A}UJ=O20VzgEv9(uOD1TDweLyU*Lv1YHH?$B8D zyjRRo3!Bv9|IS7okTX@FH(A%n{aL9gLv1?p4H{k>+23%n{jLjEbMoJm==bzl--X4l z@SbPx94Ae(8?hT^8gwLm{%d)DeDA$oq`65JQwaaG8ZrNAfO+*1so%JYl#Y>7(4T4V zs#CL&&?TMkX@`8 z%rRvH5RN2vr<)H;+Ev)TNyUcWXE)yTs6)Dnt`aSIIgVn)H5cNbkCme`ne3Xml7DHS zFng#aofq&ofYWDW^=+-B=%w5ETD%3W9L=jlS)9j`1Bf|~%#^ndA)2by&m1gOwJ1mrYP?#jM<&pc8hzx0WeFA4 zI|qdLamylGi|nzgWiBq3d*^5-wWIU|_6%mJ{IcHANi1s?G4>cqnN_e2NJUA8#oaq@@LhGq(zVC_M}2piXQisAka3A3OL~T%o~$t^KTu6@ZZjn>|aWDh9DKUscPy*S$X4Frb$7s{Q`Jd5t~!}c%r_!ZRn-$4la#kV2Pfof#MS*S}#SGgQEaCIDhNa=T z#aG$iDkT(}ckAPt%MAxhTvL5L=X1?j7T-@fi=@&u^~Dz62$FQ)6@U~yL55#W-Pf0_8#wo>?(L?YcAhV`(xjrWx{%j zf3ZZuvsXMN91zg^n#D~c|0B&Hk?fY&lWOu0F}S(oB5tn8Mf;FFk;|H};I-6$(2E?1 zeB2uCvO_^QSV;pZYt>R8f{^Jvoq3XR(~H%i^0p`(*NNsAvOkuCOl3C6w|@Gg0e)Dd z?`HCm(d*2+l~(Kq-OYk&N>fRnl690&%1@fskgtyWlNp8{XZ%twJnWgNNB=nF%dhEI zz~{2)Mnj|B5NAWwF>QO>rz>(wU$;B%Zy+v|4fMs$s>VwtUl+M3ROYI!xHQ%+{+`;H zJgb+h{%CjBiETpoCP>z3Hdiv`9K@RR;bXoOg39y5=5AZp7FCVcrmpckV@^-a9u~35 zW*tqV4{>qyj})0sowVolcYY=hPUL=ZMHSwFyGgi57;;APvCQlBCDck zojJQDTXI4YDWU3gw)hBJn%tlzB5m=hsK9v?ck=>G^1x4(&g}e8H$FB$;rMQa?i#1E z6yjWH(aJ`jYB@9H$U%Ox=E>={)|GDj+NMmh;|E!0otr1W>^H%-!A`_a3HpT8&E|yf zZO2ZFdC2`&)a!A2NWx5gJJS<(!?lzy{KkdQ!t&GX)>FL6$xFyZ88r@Rk?K&1Sx?*R zu%-^4zd~Uud_KfGE9vfBD#B!lq$d^4?L6-r>wz~kUnF|0CdLti`B0TQco@z%VyH7y z5$ptp3BMo6c}wzl424+#K;`TkDKm%n1Mxrm$1fEa600xUR}1&gOui9{PCqvWyV|8) zDLZ3#q)2C|7Y@68lU7YNOlf=AKH_k*{AfMxUNEtxEZw`3Pj(+!;7%lRT!$FnD# zutcsl=McsodygD_wR@4tM8wZUB?I+mN^YONxp-^eTElT?KkM;V1>R5$Y`;nSD_q_J z3P!e%G29Eq4sHvow`8I+VoG=qIyl$5i2UpNUy81NBy@cCx;)uoTt+^&Y&|Dun@Tpa z<%qT1FsgWYfUaiPT#S zP4eZCC{%+jT`puLf}+u3?mjD4_4%d~V+^XEjwa27bM+_J^|Q?ibgua-+v2%5+6J#P z&jyz-ONNFf&B`)0ocqsyPPi=#h<-s44(Mot;Lc1zke-t5g^or+^yI7mYaiAi{iX9#1V@sY7b-RUrfyg^SoI=A++ zpF|6+?3Y$#>~CD=GM<(UT02f#>ey<9Yafjdte1UAa~1TxXUVJo%qfdyEr`5-_;Lf% zo)5g+Rr{yLGo6@iJEQSj9?S9nU2z9D5WjtRzv0<0BFB^} z`iJeku_BmHvngHl)|*DuwnPS%VA^!eN-)ogDdv6{c5W{H`ZlBBOdqQ4>RS6Q)y zH-#gu9JHu(>btyh@nh@j+1M1R8ItI}D8=5XxJ_Q}t4py>hrD)5NPzckZ1lUM8o7?R z=M{C?E3W(#MpoFq83)(wp-@Cf-OgIGZa|{saj4JeoN}#>l@6zQ8ONydhMkvJc|T4= zmHGGrqnSjy@MEVVU*jjqlC7>W`JH8YHVE3o9AuB#zDM;>lcB)uckvI`5kC zyVT9x!I*61DjfUOlrDFbptzdwdYER zONfPo`o(D1H>zEO>V%TW(`8kzAA$qu;fuC*zM6$n3sY-5jULqP8y~~AD$Wbeeo@sj zA3H{CZM&3{TQ%LE2`|^Gs+bh3ZQUM-$oRoA6~ZzlXEUygj!FzBN=EXOUyyBaVfxD; z!P2MPV|hPr1oJ8DH?5x-4|!|&BJ+e?E$5!Q6jt&`IstU@t|v2(!}&oKxfYUqc){Jxjj|%L=gwuzP>czKq zeo^6gy=$d)%a#5^NKJUrMQafwheUwlFxV0M3T-WM6Sm6SmBH9rm)+l&A<&6+?4Q{j z9N(DFia69MhV6^{*LVZ{kU>;`rqJd zxn;bJpjVIM7+)P9xq_}AJ5ufXK?kwQFu7!%QHeiEuiIdl8@XPD&bW1BW(wqbE-nwB zOh@Ec@Gm?0Wt=wli)>_kZdM%RCQ`QN{GrH^PghxB?y@HzQsBI*C{ulh%Nbt^TuKvg*fT5JLVYE z$o}`#1D%7z(~Rn)uSaRdlX>HdD$s3_DO9MbWjpvaOY6{Hz*fc4$Rgn#YZOY09^4|M zy?3+FMD|#24mLpO@XGlk51O#sv%f52WF1?kZ0g?=~(Pj2tbyXA(>;;I*3txr_g^ipvoW7$M~+&29_Z#-*#B|%I;dgPZN(}f7S zR8Bxz|)76is~K+Rcpe%+FHfd-uzC zm1WMqlJD56xqUJza@wk*^243O87^*G_^NoSpMBzc@@#(61)-iwO_<7f&|7Slkva4( zouI$DB17H6-7t_5xxv}uWSl4dCDW(qB-a76>Qgh!RNiB1duGt+Cia&spCdA5!^CIm z2=pvfcNa_l%$y`!pPWQ%BKCTeE0JH08~;$-cs>xa@40!pI~b9F z=#1ycDVwIdg$}1D66C~Kp(xp6U&~otR(bN_S20`i_ht{_=oD>CJHoftC6|FYXXssE z_%xw+MV#PJOI7Gk+$F-aEBJ^wZ@6bk(#DFzqSuq=Or5$?jP!Z`&%+EO=Jl_)ndw>- zb5TSx^4%q&pIqJ$K@$Il-6bAL#quDm%McR zAGwab{m`GKJ8x{C81JVY5OFE!+HOpW(4tN#0wO=3Y=bG3i_3-(yN++S&5MjA>W4p5 z!a&v=CnZg$NFkcBjs$_JK+A8R(tNlAH`atpvwib2s#b&=?u(*(bQp}PX`qhTkNE!u zUphxEMJ5YJ?A|Ikio1(~%nbTnkvo-2$!Vj?rTQd=FLIln->1hh{8SNhQz960nPOi9 z_q6viuZZWQVjD4*=~&1NYl;nq?B{Gl$RF8;P zzBI&hi(?^pSi`r5pOf(}i2h66k<8^Yt4-Ka({VUx%I6&Ci+5U_VFd=sf8C5sD>C!SBe;4aGIxph9@ExA=!i%3@bcQYQILk4ar-WtIHI zsT=wOVcYu-Jk;L7eCA6_=VH<;{kC;Au|-59&Fd!t;=!@Ly82W%%0Aw^9fxsf#{HyC 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� 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 literal 0 HcmV?d00001 From 21fb88c4a077ecfc589ffc30a3f66476ea88c2e5 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 07:04:02 +0900 Subject: [PATCH 05/11] fix: fail closed on incomplete Photos resources --- src-tauri/native/photos_bridge.m | 10 +++++-- src-tauri/src/photos_library.rs | 48 ++++++++++++++++++++---------- src/lib/PhotosLibraryReview.svelte | 4 +-- 3 files changed, 42 insertions(+), 20 deletions(-) diff --git a/src-tauri/native/photos_bridge.m b/src-tauri/native/photos_bridge.m index 6d5ac4244..32e1db610 100644 --- a/src-tauri/native/photos_bridge.m +++ b/src-tauri/native/photos_bridge.m @@ -4,6 +4,7 @@ static const NSUInteger DSMaxChunkBytes = 8 * 1024 * 1024; static const int64_t DSResourceTimeoutNanos = 30LL * NSEC_PER_SEC; +static const int64_t DSAuthorizationTimeoutNanos = 5LL * 60LL * NSEC_PER_SEC; static char *DSJSON(id value) { NSData *data = [NSJSONSerialization dataWithJSONObject:value options:0 error:nil]; @@ -42,6 +43,7 @@ static NSDictionary *DSReadResource(PHAsset *asset, uint64_t maxBytes) { NSArray *resources = [PHAssetResource assetResourcesForAsset:asset]; + if (resources.count != 1) return @{ @"state": @"unavailable", @"blocker": @"compound-photo-review-unavailable" }; PHAssetResource *resource = resources.firstObject; if (!resource) return @{ @"state": @"unavailable", @"blocker": @"no-original-resource" }; PHAssetResourceRequestOptions *options = [PHAssetResourceRequestOptions new]; @@ -69,6 +71,7 @@ }]; if (dispatch_semaphore_wait(done, dispatch_time(DISPATCH_TIME_NOW, DSResourceTimeoutNanos)) != 0) { [[PHAssetResourceManager defaultManager] cancelDataRequest:requestID]; + dispatch_semaphore_wait(done, dispatch_time(DISPATCH_TIME_NOW, 5LL * NSEC_PER_SEC)); return @{ @"state": @"unavailable", @"blocker": @"local-content-read-timed-out" }; } if (completionError) { @@ -137,9 +140,9 @@ unsigned char digest[CC_SHA256_DIGEST_LENGTH]; CC_SHA256(canonical.bytes, (CC_LONG)canonical.length, digest); BOOL truncated = fetch.count > reviewCount; return @{ @"authorization": DSStatus(status), @"observed_at_ms": @((uint64_t)(NSDate.date.timeIntervalSince1970 * 1000)), - @"inventory_fingerprint": DSHex(digest, sizeof(digest)), @"evidence_complete": @(!truncated), + @"inventory_fingerprint": DSHex(digest, sizeof(digest)), @"evidence_complete": @(!truncated && unavailable == 0), @"inventory_truncated": @(truncated), - @"next_action": truncated ? @"reduce-photos-library-review-scope" : (groups.count ? @"choose-one-photo-to-keep-per-group" : (unavailable ? @"download-originals-in-photos" : @"no-exact-duplicates-found")), + @"next_action": truncated ? @"reduce-photos-library-review-scope" : (unavailable ? @"download-originals-in-photos" : (groups.count ? @"choose-one-photo-to-keep-per-group" : @"no-exact-duplicates-found")), @"assets": assets, @"exact_groups": groups, @"unavailable_count": @(unavailable), @"near_duplicate_evidence": @"unavailable-without-measured-content-equivalence" }; } @@ -154,7 +157,8 @@ [PHPhotoLibrary requestAuthorizationForAccessLevel:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus status) { result = status; dispatch_semaphore_signal(done); }]; - dispatch_semaphore_wait(done, DISPATCH_TIME_FOREVER); + if (dispatch_semaphore_wait(done, dispatch_time(DISPATCH_TIME_NOW, DSAuthorizationTimeoutNanos)) != 0) + return DSJSON(@{ @"authorization": @"timed-out" }); return DSJSON(@{ @"authorization": DSStatus(result) }); } diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index 90ae2fea6..a9bd8eef7 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -109,7 +109,10 @@ pub fn plan_deletion( if inventory.authorization != "authorized" && inventory.authorization != "limited" { return Err("photos-access-not-authorized".into()); } - if !inventory.evidence_complete || inventory.inventory_truncated { + if !inventory.evidence_complete + || inventory.inventory_truncated + || inventory.unavailable_count != 0 + { return Err("photos-inventory-incomplete-review-again".into()); } let inventory_fingerprint = inventory @@ -386,10 +389,21 @@ pub async fn execute_photos_duplicate_deletion( .map_err(|_| "photos-receipt-directory-unavailable")? .join("photos-receipts"); std::fs::create_dir_all(&directory).map_err(|_| "photos-receipt-directory-unavailable")?; + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + std::fs::set_permissions(&directory, std::fs::Permissions::from_mode(0o700)) + .map_err(|_| "photos-receipt-directory-unavailable")?; + } let path = directory.join(format!("{}.json", receipt.receipt_id)); - let mut file = OpenOptions::new() - .write(true) - .create_new(true) + let mut options = OpenOptions::new(); + options.write(true).create_new(true); + #[cfg(unix)] + { + use std::os::unix::fs::OpenOptionsExt; + options.mode(0o600); + } + let mut file = options .open(&path) .map_err(|_| "photos-receipt-create-failed")?; let bytes = @@ -478,7 +492,7 @@ mod tests { } #[test] - fn icloud_only_asset_is_never_admitted_to_destructive_plan() { + fn icloud_only_asset_blocks_destructive_planning() { let mut inventory = inventory(); inventory.unavailable_count = 1; let mut cloud = member("cloud", 20); @@ -488,16 +502,11 @@ mod tests { cloud.encoded_bytes = None; cloud.metadata_fingerprint = None; inventory.assets.push(cloud); - let plan = plan_deletion( - &inventory, - &[PhotosKeeperSelection { - content_sha256: "a".repeat(64), - keeper_local_identifier: "keep".into(), - }], - ) - .unwrap(); - assert_eq!(plan.delete_identifiers, ["remove"]); - assert!(!plan.delete_identifiers.contains(&"cloud".to_string())); + inventory.evidence_complete = false; + assert_eq!( + plan_deletion(&inventory, &[]).unwrap_err(), + "photos-inventory-incomplete-review-again" + ); } #[test] @@ -527,4 +536,13 @@ mod tests { "photos-review-expired-review-again" ); } + + #[test] + fn native_boundary_rejects_compound_assets_and_bounds_callbacks() { + let source = include_str!("../native/photos_bridge.m"); + assert!(source.contains("resources.count != 1")); + assert!(source.contains("networkAccessAllowed = NO")); + assert!(source.contains("cancelDataRequest:requestID")); + assert!(source.contains("DSAuthorizationTimeoutNanos")); + } } diff --git a/src/lib/PhotosLibraryReview.svelte b/src/lib/PhotosLibraryReview.svelte index cdf5a386f..4ee651915 100644 --- a/src/lib/PhotosLibraryReview.svelte +++ b/src/lib/PhotosLibraryReview.svelte @@ -37,7 +37,7 @@ inventory = await api.inspectPhotosDuplicates(); keepers = {}; status = inventory.unavailable_count - ? `${inventory.unavailable_count}개 원본은 이 Mac에 없어 제외했습니다. 로컬 사본만 계속 검토할 수 있습니다.` + ? `${inventory.unavailable_count}개 원본을 이 Mac에서 확인할 수 없습니다. 사진 앱에서 원본을 다운로드한 뒤 다시 확인하세요.` : inventory.exact_groups.length ? `${inventory.exact_groups.length}개 정확한 사본 그룹을 찾았습니다. 그룹마다 남길 사진을 고르세요.` : "내용이 정확히 같은 사진을 찾지 못했습니다."; @@ -83,7 +83,7 @@ {#if error}{/if} {#if inventory?.unavailable_count} -

이 Mac에 없는 원본은 다운로드하거나 삭제하지 않습니다. 해당 사진도 비교하려면 사진 앱에서 원본을 먼저 다운로드하세요.

+ {/if} {#if inventory?.inventory_truncated} From fd45a11c71c35f4df8c888e9649745c9f070ced1 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 07:27:08 +0900 Subject: [PATCH 06/11] fix: audit Live Photo still resources safely --- src-tauri/native/photos_bridge.m | 27 +++++++++++++++++++++++---- src-tauri/src/photos_library.rs | 9 +++++++-- src/lib/PhotosLibraryReview.svelte | 6 +++++- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src-tauri/native/photos_bridge.m b/src-tauri/native/photos_bridge.m index 32e1db610..49f3cc340 100644 --- a/src-tauri/native/photos_bridge.m +++ b/src-tauri/native/photos_bridge.m @@ -41,11 +41,26 @@ return DSHex(digest, sizeof(digest)); } +static PHAssetResource *DSStillPhotoResource(NSArray *resources) { + NSPredicate *photoPredicate = [NSPredicate predicateWithBlock:^BOOL(PHAssetResource *resource, NSDictionary *bindings) { + (void)bindings; + return resource.type == PHAssetResourceTypePhoto; + }]; + NSArray *photos = [resources filteredArrayUsingPredicate:photoPredicate]; + if (photos.count == 1) return photos.firstObject; + if (photos.count > 1) return nil; + NSPredicate *fullSizePredicate = [NSPredicate predicateWithBlock:^BOOL(PHAssetResource *resource, NSDictionary *bindings) { + (void)bindings; + return resource.type == PHAssetResourceTypeFullSizePhoto; + }]; + NSArray *fullSizePhotos = [resources filteredArrayUsingPredicate:fullSizePredicate]; + return fullSizePhotos.count == 1 ? fullSizePhotos.firstObject : nil; +} + static NSDictionary *DSReadResource(PHAsset *asset, uint64_t maxBytes) { NSArray *resources = [PHAssetResource assetResourcesForAsset:asset]; - if (resources.count != 1) return @{ @"state": @"unavailable", @"blocker": @"compound-photo-review-unavailable" }; - PHAssetResource *resource = resources.firstObject; - if (!resource) return @{ @"state": @"unavailable", @"blocker": @"no-original-resource" }; + PHAssetResource *resource = DSStillPhotoResource(resources); + if (!resource) return @{ @"state": @"unavailable", @"blocker": @"compound-photo-still-resource-ambiguous" }; PHAssetResourceRequestOptions *options = [PHAssetResourceRequestOptions new]; options.networkAccessAllowed = NO; dispatch_semaphore_t done = dispatch_semaphore_create(0); @@ -139,10 +154,14 @@ NSData *canonical = [NSJSONSerialization dataWithJSONObject:fingerprintSource options:NSJSONWritingSortedKeys error:nil]; unsigned char digest[CC_SHA256_DIGEST_LENGTH]; CC_SHA256(canonical.bytes, (CC_LONG)canonical.length, digest); BOOL truncated = fetch.count > reviewCount; + BOOL unsupportedCompound = [assets indexOfObjectPassingTest:^BOOL(NSDictionary *evidence, NSUInteger index, BOOL *stop) { + (void)index; (void)stop; + return [evidence[@"blocker"] isEqualToString:@"compound-photo-still-resource-ambiguous"]; + }] != NSNotFound; return @{ @"authorization": DSStatus(status), @"observed_at_ms": @((uint64_t)(NSDate.date.timeIntervalSince1970 * 1000)), @"inventory_fingerprint": DSHex(digest, sizeof(digest)), @"evidence_complete": @(!truncated && unavailable == 0), @"inventory_truncated": @(truncated), - @"next_action": truncated ? @"reduce-photos-library-review-scope" : (unavailable ? @"download-originals-in-photos" : (groups.count ? @"choose-one-photo-to-keep-per-group" : @"no-exact-duplicates-found")), + @"next_action": truncated ? @"reduce-photos-library-review-scope" : (unsupportedCompound ? @"exclude-unsupported-compound-assets-and-review-again" : (unavailable ? @"download-originals-in-photos" : (groups.count ? @"choose-one-photo-to-keep-per-group" : @"no-exact-duplicates-found"))), @"assets": assets, @"exact_groups": groups, @"unavailable_count": @(unavailable), @"near_duplicate_evidence": @"unavailable-without-measured-content-equivalence" }; } diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index a9bd8eef7..287e71e7c 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -538,9 +538,14 @@ mod tests { } #[test] - fn native_boundary_rejects_compound_assets_and_bounds_callbacks() { + fn native_boundary_selects_one_still_from_live_photos_and_bounds_callbacks() { let source = include_str!("../native/photos_bridge.m"); - assert!(source.contains("resources.count != 1")); + assert!(source.contains("resource.type == PHAssetResourceTypePhoto")); + assert!(source.contains("resource.type == PHAssetResourceTypeFullSizePhoto")); + assert!(source.contains("photos.count == 1")); + assert!(source.contains("fullSizePhotos.count == 1")); + assert!(source.contains("compound-photo-still-resource-ambiguous")); + assert!(source.contains("exclude-unsupported-compound-assets-and-review-again")); assert!(source.contains("networkAccessAllowed = NO")); assert!(source.contains("cancelDataRequest:requestID")); assert!(source.contains("DSAuthorizationTimeoutNanos")); diff --git a/src/lib/PhotosLibraryReview.svelte b/src/lib/PhotosLibraryReview.svelte index 4ee651915..6ef04be4e 100644 --- a/src/lib/PhotosLibraryReview.svelte +++ b/src/lib/PhotosLibraryReview.svelte @@ -83,7 +83,11 @@ {#if error}{/if} {#if inventory?.unavailable_count} - + {#if inventory.next_action === "exclude-unsupported-compound-assets-and-review-again"} + + {:else} + + {/if} {/if} {#if inventory?.inventory_truncated} From c21adf3313b308102c83266d73a804ad08a79909 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 07:42:30 +0900 Subject: [PATCH 07/11] fix: journal Photos deletion outcomes durably --- src-tauri/native/photos_bridge.m | 38 ++++++++----- src-tauri/src/photos_library.rs | 91 +++++++++++++++++++++++++++----- 2 files changed, 104 insertions(+), 25 deletions(-) diff --git a/src-tauri/native/photos_bridge.m b/src-tauri/native/photos_bridge.m index 49f3cc340..6bef3bf73 100644 --- a/src-tauri/native/photos_bridge.m +++ b/src-tauri/native/photos_bridge.m @@ -41,20 +41,32 @@ return DSHex(digest, sizeof(digest)); } +int64_t ds_photos_select_still_resource_index(const int64_t *types, size_t count) { + int64_t photoIndex = -1; + int64_t fullSizeIndex = -1; + NSUInteger photoCount = 0; + NSUInteger fullSizeCount = 0; + for (size_t index = 0; index < count; index++) { + if (types[index] == PHAssetResourceTypePhoto) { + photoIndex = (int64_t)index; + photoCount++; + } else if (types[index] == PHAssetResourceTypeFullSizePhoto) { + fullSizeIndex = (int64_t)index; + fullSizeCount++; + } + } + if (photoCount == 1) return photoIndex; + if (photoCount > 1) return -1; + return fullSizeCount == 1 ? fullSizeIndex : -1; +} + static PHAssetResource *DSStillPhotoResource(NSArray *resources) { - NSPredicate *photoPredicate = [NSPredicate predicateWithBlock:^BOOL(PHAssetResource *resource, NSDictionary *bindings) { - (void)bindings; - return resource.type == PHAssetResourceTypePhoto; - }]; - NSArray *photos = [resources filteredArrayUsingPredicate:photoPredicate]; - if (photos.count == 1) return photos.firstObject; - if (photos.count > 1) return nil; - NSPredicate *fullSizePredicate = [NSPredicate predicateWithBlock:^BOOL(PHAssetResource *resource, NSDictionary *bindings) { - (void)bindings; - return resource.type == PHAssetResourceTypeFullSizePhoto; - }]; - NSArray *fullSizePhotos = [resources filteredArrayUsingPredicate:fullSizePredicate]; - return fullSizePhotos.count == 1 ? fullSizePhotos.firstObject : nil; + int64_t *types = calloc(resources.count, sizeof(int64_t)); + if (!types && resources.count > 0) return nil; + for (NSUInteger index = 0; index < resources.count; index++) types[index] = resources[index].type; + int64_t selected = ds_photos_select_still_resource_index(types, resources.count); + free(types); + return selected >= 0 ? resources[(NSUInteger)selected] : nil; } static NSDictionary *DSReadResource(PHAsset *asset, uint64_t maxBytes) { diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index 287e71e7c..eaf7cde4c 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -97,6 +97,26 @@ pub struct PhotosDeletionReceipt { pub next_action: String, } +#[derive(Serialize)] +struct PhotosDeletionReceiptRecord<'a> { + phase: &'static str, + receipt: &'a PhotosDeletionReceipt, +} + +fn append_receipt_record( + file: &mut std::fs::File, + phase: &'static str, + receipt: &PhotosDeletionReceipt, +) -> Result<(), String> { + let mut bytes = serde_json::to_vec(&PhotosDeletionReceiptRecord { phase, receipt }) + .map_err(|_| "photos-receipt-serialization-failed".to_string())?; + bytes.push(b'\n'); + file.write_all(&bytes) + .map_err(|_| "photos-receipt-write-failed".to_string())?; + file.sync_all() + .map_err(|_| "photos-receipt-sync-failed".to_string()) +} + fn hash_json(value: &T) -> Result { let bytes = serde_json::to_vec(value).map_err(|_| "photos-evidence-serialization-failed")?; Ok(blake3::hash(&bytes).to_hex().to_string()) @@ -257,6 +277,8 @@ mod native { fn ds_photos_request_authorization() -> *mut c_char; fn ds_photos_inventory(max_assets: u32, max_bytes: u64) -> *mut c_char; fn ds_photos_delete(request_json: *const c_char) -> *mut c_char; + #[cfg(test)] + fn ds_photos_select_still_resource_index(types: *const i64, count: usize) -> i64; } fn take_json Deserialize<'de>>(pointer: *mut c_char) -> Result { @@ -306,6 +328,11 @@ mod native { } Ok(()) } + + #[cfg(test)] + pub fn select_still_resource(types: &[i64]) -> i64 { + unsafe { ds_photos_select_still_resource_index(types.as_ptr(), types.len()) } + } } #[cfg(not(target_os = "macos"))] @@ -406,8 +433,9 @@ pub async fn execute_photos_duplicate_deletion( let mut file = options .open(&path) .map_err(|_| "photos-receipt-create-failed")?; - let bytes = - serde_json::to_vec_pretty(&receipt).map_err(|_| "photos-receipt-serialization-failed")?; + let mut prepared_receipt = receipt.clone(); + prepared_receipt.system_confirmation_completed = false; + append_receipt_record(&mut file, "prepared", &prepared_receipt)?; let native_plan = plan.clone(); let native_result = match tauri::async_runtime::spawn_blocking(move || native::delete(&native_plan)).await { @@ -419,9 +447,7 @@ pub async fn execute_photos_duplicate_deletion( let _ = std::fs::remove_file(path); return Err(error); } - file.write_all(&bytes) - .map_err(|_| "photos-receipt-write-failed")?; - file.sync_all().map_err(|_| "photos-receipt-sync-failed")?; + append_receipt_record(&mut file, "completed", &receipt)?; Ok(receipt) } @@ -538,16 +564,57 @@ mod tests { } #[test] - fn native_boundary_selects_one_still_from_live_photos_and_bounds_callbacks() { + fn durable_receipt_records_prepared_then_completed_outcome() { + let temp = tempfile::tempdir().unwrap(); + let path = temp.path().join("receipt.jsonl"); + let mut file = OpenOptions::new() + .write(true) + .create_new(true) + .open(&path) + .unwrap(); + let mut receipt = PhotosDeletionReceipt { + schema_version: SCHEMA_VERSION, + receipt_id: "receipt".into(), + plan_fingerprint: "plan".into(), + executed_at_ms: 1, + rationale: "reviewed duplicate".into(), + deleted_count: 1, + system_confirmation_completed: false, + permanent_delete_requested: false, + next_action: "open-recently-deleted-to-restore-or-review-space".into(), + }; + append_receipt_record(&mut file, "prepared", &receipt).unwrap(); + receipt.system_confirmation_completed = true; + append_receipt_record(&mut file, "completed", &receipt).unwrap(); + let records = std::fs::read_to_string(path).unwrap(); + let records = records + .lines() + .map(|line| serde_json::from_str::(line).unwrap()) + .collect::>(); + assert_eq!(records.len(), 2); + assert_eq!(records[0]["phase"], "prepared"); + assert_eq!( + records[0]["receipt"]["system_confirmation_completed"], + false + ); + assert_eq!(records[1]["phase"], "completed"); + assert_eq!(records[1]["receipt"]["system_confirmation_completed"], true); + } + + #[test] + fn native_boundary_bounds_callbacks() { let source = include_str!("../native/photos_bridge.m"); - assert!(source.contains("resource.type == PHAssetResourceTypePhoto")); - assert!(source.contains("resource.type == PHAssetResourceTypeFullSizePhoto")); - assert!(source.contains("photos.count == 1")); - assert!(source.contains("fullSizePhotos.count == 1")); - assert!(source.contains("compound-photo-still-resource-ambiguous")); - assert!(source.contains("exclude-unsupported-compound-assets-and-review-again")); assert!(source.contains("networkAccessAllowed = NO")); assert!(source.contains("cancelDataRequest:requestID")); assert!(source.contains("DSAuthorizationTimeoutNanos")); } + + #[cfg(target_os = "macos")] + #[test] + fn native_still_selection_executes_live_photo_and_ambiguous_cases() { + assert_eq!(native::select_still_resource(&[1, 9]), 0); + assert_eq!(native::select_still_resource(&[9, 5]), 1); + assert_eq!(native::select_still_resource(&[1, 1, 9]), -1); + assert_eq!(native::select_still_resource(&[9]), -1); + } } From 9f705af05a753520c2e8badd34eb810c4181fdad Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 07:58:50 +0900 Subject: [PATCH 08/11] fix: preserve Photos deletion retry after journal failure --- src-tauri/src/photos_library.rs | 42 +++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index eaf7cde4c..a97b2cc5f 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -117,6 +117,19 @@ fn append_receipt_record( .map_err(|_| "photos-receipt-sync-failed".to_string()) } +fn prepare_receipt_file_with( + mut file: std::fs::File, + path: &std::path::Path, + append: impl FnOnce(&mut std::fs::File) -> Result<(), String>, +) -> Result { + if let Err(error) = append(&mut file) { + drop(file); + let _ = std::fs::remove_file(path); + return Err(error); + } + Ok(file) +} + fn hash_json(value: &T) -> Result { let bytes = serde_json::to_vec(value).map_err(|_| "photos-evidence-serialization-failed")?; Ok(blake3::hash(&bytes).to_hex().to_string()) @@ -430,12 +443,14 @@ pub async fn execute_photos_duplicate_deletion( use std::os::unix::fs::OpenOptionsExt; options.mode(0o600); } - let mut file = options + let file = options .open(&path) .map_err(|_| "photos-receipt-create-failed")?; let mut prepared_receipt = receipt.clone(); prepared_receipt.system_confirmation_completed = false; - append_receipt_record(&mut file, "prepared", &prepared_receipt)?; + let mut file = prepare_receipt_file_with(file, &path, |file| { + append_receipt_record(file, "prepared", &prepared_receipt) + })?; let native_plan = plan.clone(); let native_result = match tauri::async_runtime::spawn_blocking(move || native::delete(&native_plan)).await { @@ -601,6 +616,29 @@ mod tests { assert_eq!(records[1]["receipt"]["system_confirmation_completed"], true); } + #[test] + fn failed_receipt_preparation_removes_retry_blocking_path() { + let temp = tempfile::tempdir().unwrap(); + let path = temp.path().join("receipt.jsonl"); + let file = OpenOptions::new() + .write(true) + .create_new(true) + .open(&path) + .unwrap(); + let error = prepare_receipt_file_with(file, &path, |file| { + file.write_all(b"partial").unwrap(); + Err("photos-receipt-sync-failed".into()) + }) + .unwrap_err(); + assert_eq!(error, "photos-receipt-sync-failed"); + assert!(!path.exists()); + OpenOptions::new() + .write(true) + .create_new(true) + .open(path) + .unwrap(); + } + #[test] fn native_boundary_bounds_callbacks() { let source = include_str!("../native/photos_bridge.m"); From fe2c9510b54ba62be20c500bd2a92530c8da817b Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 08:07:06 +0900 Subject: [PATCH 09/11] fix: retain receipt ownership through failed preparation cleanup --- src-tauri/src/photos_library.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index a97b2cc5f..6bea1530d 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -123,8 +123,10 @@ fn prepare_receipt_file_with( append: impl FnOnce(&mut std::fs::File) -> Result<(), String>, ) -> Result { if let Err(error) = append(&mut file) { - drop(file); + // Keep the create-new handle alive until its pathname is unlinked. Closing first would + // let a concurrent retry create the deterministic path and have this attempt remove it. let _ = std::fs::remove_file(path); + drop(file); return Err(error); } Ok(file) @@ -627,6 +629,11 @@ mod tests { .unwrap(); let error = prepare_receipt_file_with(file, &path, |file| { file.write_all(b"partial").unwrap(); + assert!(OpenOptions::new() + .write(true) + .create_new(true) + .open(&path) + .is_err()); Err("photos-receipt-sync-failed".into()) }) .unwrap_err(); From 8763463d855e3b557bee28d1115db9437bf41bf7 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 30 Aug 2026 11:29:38 +0900 Subject: [PATCH 10/11] test: follow durable cache trash outcome API --- src/lib/cacheCleanupAtomicTrashContract.test.ts | 2 +- src/lib/cacheCleanupFlowContract.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/cacheCleanupAtomicTrashContract.test.ts b/src/lib/cacheCleanupAtomicTrashContract.test.ts index ba3c69869..fcb5cffe6 100644 --- a/src/lib/cacheCleanupAtomicTrashContract.test.ts +++ b/src/lib/cacheCleanupAtomicTrashContract.test.ts @@ -13,7 +13,7 @@ describe("cache cleanup destructive authority", () => { it("uses the identity-bound recycle primitive", () => { const backend = readSource("src-tauri/src/cache_cleanup.rs"); - expect(backend).toContain("safety::trash_delete_if_identity("); + expect(backend).toContain("safety::trash_delete_if_identity_with_outcome("); expect(backend).toContain("cache-cleanup-targets-stale"); }); }); diff --git a/src/lib/cacheCleanupFlowContract.test.ts b/src/lib/cacheCleanupFlowContract.test.ts index b612eca04..f787e0c5d 100644 --- a/src/lib/cacheCleanupFlowContract.test.ts +++ b/src/lib/cacheCleanupFlowContract.test.ts @@ -22,7 +22,7 @@ describe("cache cleanup execution boundary", () => { expect(cleanup).toContain("npm·pnpm·Adobe·Edge·uv·Trivy 캐시만 대상으로"); expect(backend).toContain("pub fn clean_cache_contents("); expect(backend).toContain("cache-cleanup-targets-stale"); - expect(backend).toContain("trash_delete_if_identity("); + expect(backend).toContain("trash_delete_if_identity_with_outcome("); expect(tauri).toContain("cache_cleanup::clean_cache_contents"); expect(tauri).toContain("cache_cleanup::list_cache_targets"); expect(tauri).toContain("commands::clean_regenerable_caches"); From 8b37e32406d517c10b108fb635c187b969229e23 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Wed, 9 Sep 2026 21:54:54 +0900 Subject: [PATCH 11/11] feat: checkpoint PhotoKit duplicate inventory (#321) * feat: checkpoint PhotoKit duplicate inventory * fix: keep PhotoKit checkpoints bounded and stable * fix: await native PhotoKit resource completion * fix: keep PhotoKit pagination linear and restartable * fix: restore PhotoKit reconnection after revocation * test: preserve offline PhotoKit read contract * fix: report refused container reclaim accurately --- CHANGELOG.md | 2 + .../0024-photokit-checkpointed-inventory.md | 38 +++ docs/architecture/adr/README.md | 1 + docs/product-technical-gap-baseline.md | 6 + src-tauri/native/photos_bridge.m | 71 +++++- src-tauri/src/container_orphan_reclaim.rs | 3 + src-tauri/src/lib.rs | 3 +- src-tauri/src/photos_library.rs | 219 +++++++++++++++++- src/lib/PhotosLibraryReview.svelte | 69 +++++- src/lib/api.ts | 15 +- src/lib/photosLibraryState.test.ts | 16 +- src/lib/photosLibraryState.ts | 3 + 12 files changed, 421 insertions(+), 25 deletions(-) create mode 100644 docs/architecture/adr/0024-photokit-checkpointed-inventory.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 26130bb39..07434f328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ All notable changes to DiskSage are documented in this file. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and released versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Unreleased entries describe integrated source changes only; they are not release evidence until the repository's review, CI, security, packaging, provenance, and release-acceptance gates pass on the exact tagged commit. ## [Unreleased] +- Make Apple Photos duplicate inventory resumable and cancellable between native-completed assets, + with visible progress and no arbitrary whole-library timeout. - Connect exact decoded-pixel duplicate groups to the existing reversible photo quarantine engine; forged or stale audits, ambiguous keepers without an explicit selection, and changed roots fail closed. The review screen shows measured evidence and blockers, requires direct typed approval, and reports diff --git a/docs/architecture/adr/0024-photokit-checkpointed-inventory.md b/docs/architecture/adr/0024-photokit-checkpointed-inventory.md new file mode 100644 index 000000000..58a8897a5 --- /dev/null +++ b/docs/architecture/adr/0024-photokit-checkpointed-inventory.md @@ -0,0 +1,38 @@ +# ADR-0024: Checkpoint PhotoKit inventory at native completion boundaries + +- Status: Accepted +- Date: 2026-08-30 + +## Context + +Reading locally available originals can take materially different time per asset. A single large +PhotoKit request kept the customer waiting without progress or cancellation, while an arbitrary +wall-clock timeout discarded completed evidence. + +## Decision + +DiskSage requests one `PHAsset` per native page. A page is accepted only after PhotoKit's resource +completion handler, and records its measured duration rather than using it as a guessed cutoff. +Rust rejects gaps, repeated offsets, missing completion evidence, and inconsistent totals. The UI +checkpoints after every page, yields for rendering, and stops between pages when requested. A +checkpoint is resumable; it never authorizes deletion. Network access remains disabled and no +PhotoKit change request is made during inventory. + +## Consequences + +Large libraries take as long as their locally available originals require, but the customer sees +progress, may stop safely, and can resume without repeating accepted pages. Destructive planning +still requires a complete inventory and the existing fresh re-fetch and exact approval contract. + +## Rejected alternatives + +An arbitrary whole-library timeout was rejected because elapsed wall time is not evidence that +PhotoKit failed. Large fixed pages were rejected because they cannot yield promptly between assets. + +## References + +Apple. (n.d.). *PHAssetResourceManager*. Apple Developer Documentation. +https://developer.apple.com/documentation/photokit/phassetresourcemanager + +Apple. (n.d.). *Fetching and caching assets and thumbnails*. Apple Developer Documentation. +https://developer.apple.com/documentation/photokit/fetching-and-caching-assets-and-thumbnails diff --git a/docs/architecture/adr/README.md b/docs/architecture/adr/README.md index 72fa8c017..7239f5739 100644 --- a/docs/architecture/adr/README.md +++ b/docs/architecture/adr/README.md @@ -29,6 +29,7 @@ new numbered record rather than rewriting history. | [0021](0021-perceptual-photo-candidates.md) | Require measured evidence and a selected survivor for perceptual photo candidates | Accepted | | [0022](0022-photo-duplicate-evidence-without-composite-scoring.md) | Separate photo-duplicate and keeper evidence without composite scoring | Accepted | | [0023](0023-apple-photos-photokit-boundary.md) | Use PhotoKit rather than Photos library package traversal | Accepted | +| [0024](0024-photokit-checkpointed-inventory.md) | Checkpoint PhotoKit inventory at native completion boundaries | Accepted | New records must state context, decision, consequences, rejected alternatives, and the evidence or standard that led to the decision. A record never grants cloud-write or source-eviction authority; diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 827d8fb1d..a714aa879 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -1236,6 +1236,12 @@ runner's private workspace temp root instead of weakening the shared production content digest before invoking Photos' own deletion transaction and confirmation; a create-new receipt follows success. Near-duplicate managed assets remain unavailable rather than receiving an uncalibrated score, so that Gap is explicit and non-destructive. +- A 5,000-item read-only audit did not return customer-visible progress before an external + 60-second observation was stopped. The native bridge now returns exactly one asset only after + PhotoKit's completion callback; Rust persists gap-free checkpoint evidence, and the UI renders + progress and accepts cancellation between completed assets. Resuming uses the accepted + checkpoint instead of restarting. No elapsed-time threshold is interpreted as failure and no + photo mutation is introduced by this audit path. - A fresh Naruon audit proved exactly one removable worktree: PR #1429 was merged, its detached head was retained by current `origin/develop`, the checkout was clean and inactive, and no open diff --git a/src-tauri/native/photos_bridge.m b/src-tauri/native/photos_bridge.m index 6bef3bf73..68dbbc074 100644 --- a/src-tauri/native/photos_bridge.m +++ b/src-tauri/native/photos_bridge.m @@ -3,8 +3,9 @@ #import static const NSUInteger DSMaxChunkBytes = 8 * 1024 * 1024; -static const int64_t DSResourceTimeoutNanos = 30LL * NSEC_PER_SEC; static const int64_t DSAuthorizationTimeoutNanos = 5LL * 60LL * NSEC_PER_SEC; +static NSArray *DSPageIdentifiers = nil; +static NSString *DSPageInventoryIdentity = nil; static char *DSJSON(id value) { NSData *data = [NSJSONSerialization dataWithJSONObject:value options:0 error:nil]; @@ -29,6 +30,18 @@ return hex; } +static NSString *DSInventoryIdentity(PHFetchResult *fetch) { + CC_SHA256_CTX context; CC_SHA256_Init(&context); + for (PHAsset *asset in fetch) { + NSData *identifier = [asset.localIdentifier dataUsingEncoding:NSUTF8StringEncoding]; + uint64_t length = CFSwapInt64HostToLittle((uint64_t)identifier.length); + CC_SHA256_Update(&context, &length, sizeof(length)); + CC_SHA256_Update(&context, identifier.bytes, (CC_LONG)identifier.length); + } + unsigned char digest[CC_SHA256_DIGEST_LENGTH]; CC_SHA256_Final(digest, &context); + return DSHex(digest, sizeof(digest)); +} + static NSString *DSMetadataFingerprint(PHAsset *asset, PHAssetResource *resource) { NSString *text = [NSString stringWithFormat:@"%@\n%ld\n%ld\n%.0f\n%.0f\n%@\n%@\n%ld", asset.localIdentifier, (long)asset.pixelWidth, (long)asset.pixelHeight, @@ -81,7 +94,7 @@ int64_t ds_photos_select_still_resource_index(const int64_t *types, size_t count __block uint64_t byteCount = 0; __block BOOL exceeded = NO; __block NSError *completionError = nil; - PHAssetResourceDataRequestID requestID = [[PHAssetResourceManager defaultManager] + [[PHAssetResourceManager defaultManager] requestDataForAssetResource:resource options:options dataReceivedHandler:^(NSData *data) { @@ -96,11 +109,7 @@ int64_t ds_photos_select_still_resource_index(const int64_t *types, size_t count completionError = error; dispatch_semaphore_signal(done); }]; - if (dispatch_semaphore_wait(done, dispatch_time(DISPATCH_TIME_NOW, DSResourceTimeoutNanos)) != 0) { - [[PHAssetResourceManager defaultManager] cancelDataRequest:requestID]; - dispatch_semaphore_wait(done, dispatch_time(DISPATCH_TIME_NOW, 5LL * NSEC_PER_SEC)); - return @{ @"state": @"unavailable", @"blocker": @"local-content-read-timed-out" }; - } + dispatch_semaphore_wait(done, DISPATCH_TIME_FOREVER); if (completionError) { return @{ @"state": @"icloud-only-or-unavailable", @"blocker": @"download-original-in-photos" }; } @@ -197,6 +206,54 @@ int64_t ds_photos_select_still_resource_index(const int64_t *types, size_t count return DSJSON(DSInventory(MIN((NSUInteger)maxAssets, 10000), MIN(maxBytes, 536870912ULL), nil)); } +// One PhotoKit asset is the native pagination unit. Each call returns only after PhotoKit's +// resource completion handler (or its explicit unavailable result), allowing the UI to checkpoint, +// repaint, or cancel between assets without guessing a wall-clock page timeout. +char *ds_photos_inventory_page(uint64_t offset, uint64_t maxBytes) { + PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatusForAccessLevel:PHAccessLevelReadWrite]; + if (status != PHAuthorizationStatusAuthorized && status != PHAuthorizationStatusLimited) + return DSJSON(@{ @"authorization": DSStatus(status), @"observed_at_ms": @((uint64_t)(NSDate.date.timeIntervalSince1970 * 1000)), + @"total_count": @0, @"offset": @(offset), @"next_offset": [NSNull null], + @"inventory_identity": @"", + @"native_completion_observed": @YES, @"page_duration_ms": @0, + @"assets": @[], @"unavailable_count": @0 }); + PHFetchOptions *options = [PHFetchOptions new]; + options.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d", PHAssetMediaTypeImage]; + PHFetchResult *fetch = [PHAsset fetchAssetsWithOptions:options]; + if (offset == 0 || !DSPageIdentifiers || !DSPageInventoryIdentity) { + NSMutableArray *identifiers = [NSMutableArray arrayWithCapacity:fetch.count]; + for (PHAsset *asset in fetch) [identifiers addObject:asset.localIdentifier]; + DSPageIdentifiers = [identifiers copy]; + DSPageInventoryIdentity = DSInventoryIdentity(fetch); + } + NSString *inventoryIdentity = DSPageInventoryIdentity; + uint64_t snapshotTotal = DSPageIdentifiers.count; + uint64_t total = fetch.count; + BOOL libraryChanged = total != snapshotTotal; + uint64_t started = (uint64_t)(NSDate.date.timeIntervalSince1970 * 1000); + NSArray *assets = @[]; + uint64_t unavailable = 0; + if (total == snapshotTotal && offset < snapshotTotal) { + NSString *identifier = DSPageIdentifiers[(NSUInteger)offset]; + PHFetchResult *selected = [PHAsset fetchAssetsWithLocalIdentifiers:@[identifier] options:nil]; + if (selected.count == 1) { + NSDictionary *asset = DSAssetEvidence(selected.firstObject, MIN(maxBytes, 536870912ULL)); + assets = @[asset]; + unavailable = asset[@"content_sha256"] ? 0 : 1; + } else libraryChanged = YES; + } + if (libraryChanged || (offset + assets.count >= snapshotTotal && ![DSInventoryIdentity(fetch) isEqualToString:inventoryIdentity])) + inventoryIdentity = @"photos-library-changed"; + uint64_t completed = (uint64_t)(NSDate.date.timeIntervalSince1970 * 1000); + NSNumber *next = offset + assets.count < snapshotTotal ? @(offset + assets.count) : nil; + return DSJSON(@{ @"authorization": DSStatus(status), @"observed_at_ms": @(completed), + @"total_count": @(snapshotTotal), @"offset": @(offset), + @"inventory_identity": inventoryIdentity, + @"next_offset": next ?: [NSNull null], @"native_completion_observed": @YES, + @"page_duration_ms": @(completed - started), @"assets": assets, + @"unavailable_count": @(unavailable) }); +} + char *ds_photos_delete(const char *requestJSON) { NSData *data = [[NSData alloc] initWithBytes:requestJSON length:strlen(requestJSON)]; NSDictionary *request = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; diff --git a/src-tauri/src/container_orphan_reclaim.rs b/src-tauri/src/container_orphan_reclaim.rs index 7debfeb15..c92893da1 100644 --- a/src-tauri/src/container_orphan_reclaim.rs +++ b/src-tauri/src/container_orphan_reclaim.rs @@ -1381,6 +1381,9 @@ pub fn execute_container_orphan_prune( stdout: output.stdout, stderr: output.stderr, output_truncated: false, + // A non-zero exact-delete status means the runtime refused the mutation (for example, + // because a previously stopped container restarted). Keep the attempted command and + // status in the receipt, but never report the reclaim as executed. executed: output.status_code == 0, executed_at_ms, before_available_bytes, diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 39a2ed774..7b974b82c 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -153,7 +153,8 @@ pub fn run() { photo_duplicate_quarantine::execute_exact_photo_duplicate_quarantine, photos_library::photos_authorization_status, photos_library::request_photos_authorization, - photos_library::inspect_photos_duplicates, + photos_library::inspect_photos_duplicates_page, + photos_library::finalize_photos_duplicate_inventory, photos_library::plan_photos_duplicate_deletion, photos_library::execute_photos_duplicate_deletion, commands::get_ontology, diff --git a/src-tauri/src/photos_library.rs b/src-tauri/src/photos_library.rs index 6bea1530d..7dfc3d74a 100644 --- a/src-tauri/src/photos_library.rs +++ b/src-tauri/src/photos_library.rs @@ -58,6 +58,120 @@ pub struct PhotosDuplicateInventory { pub exact_groups: Vec, pub unavailable_count: u64, pub near_duplicate_evidence: Option, + #[serde(default)] + pub inventory_total_count: Option, + #[serde(default)] + pub inventory_page_identity: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosInventoryPage { + pub authorization: String, + pub observed_at_ms: u64, + pub total_count: u64, + pub inventory_identity: String, + pub offset: u64, + pub next_offset: Option, + pub native_completion_observed: bool, + pub page_duration_ms: u64, + pub assets: Vec, + pub unavailable_count: u64, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct PhotosInventoryCheckpoint { + pub next_offset: u64, + pub total_count: u64, + pub inventory_identity: String, +} + +/// Merge one native-completed PhotoKit page into a resumable read-only checkpoint. +pub fn merge_inventory_page( + previous: Option, + page: PhotosInventoryPage, +) -> Result { + if !page.native_completion_observed || page.assets.len() > 1 { + return Err("photos-page-native-completion-required".into()); + } + let mut inventory = previous.unwrap_or(PhotosDuplicateInventory { + authorization: page.authorization.clone(), + observed_at_ms: Some(page.observed_at_ms), + inventory_fingerprint: None, + evidence_complete: false, + inventory_truncated: true, + next_action: "사진 확인을 계속하세요.".into(), + assets: Vec::new(), + exact_groups: Vec::new(), + unavailable_count: 0, + near_duplicate_evidence: Some("unavailable-without-measured-content-equivalence".into()), + inventory_total_count: Some(page.total_count), + inventory_page_identity: Some(page.inventory_identity.clone()), + }); + if inventory.authorization != page.authorization + || inventory.inventory_total_count != Some(page.total_count) + || inventory.inventory_page_identity.as_deref() != Some(&page.inventory_identity) + || inventory.assets.len() as u64 != page.offset + || page + .next_offset + .is_some_and(|next| next != page.offset + page.assets.len() as u64) + || page.total_count < page.offset + page.assets.len() as u64 + { + return Err("photos-page-checkpoint-mismatch".into()); + } + inventory.assets.extend(page.assets); + inventory.unavailable_count = inventory + .unavailable_count + .checked_add(page.unavailable_count) + .ok_or("photos-page-count-overflow")?; + inventory.observed_at_ms = Some(page.observed_at_ms); + let complete = page.next_offset.is_none() && inventory.assets.len() as u64 == page.total_count; + inventory.inventory_truncated = !complete; + inventory.evidence_complete = complete + && inventory.unavailable_count == 0 + && matches!(inventory.authorization.as_str(), "authorized" | "limited"); + inventory.next_action = if complete { + if inventory.unavailable_count > 0 { + "사진 앱에서 이 Mac에 없는 원본을 다운로드한 뒤 다시 확인하세요.".into() + } else { + "검사가 끝났습니다. 정확한 사본 그룹을 검토하세요.".into() + } + } else { + format!( + "{}개 중 {}개를 확인했습니다. 계속하려면 사진 확인을 누르세요.", + page.total_count, + inventory.assets.len() + ) + }; + let mut groups = BTreeMap::>::new(); + for asset in &inventory.assets { + if let Some(digest) = &asset.content_sha256 { + groups + .entry(digest.clone()) + .or_default() + .push(asset.clone()); + } + } + inventory.exact_groups = groups + .into_iter() + .filter(|(_, members)| members.len() > 1) + .map(|(content_sha256, members)| PhotosExactGroup { + content_sha256, + members, + keeper_required: true, + automatic_delete_allowed: false, + }) + .collect(); + inventory.inventory_fingerprint = if complete { + Some(hash_json(&( + inventory.assets.clone(), + inventory.unavailable_count, + ))?) + } else { + None + }; + Ok(inventory) } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] @@ -291,6 +405,7 @@ mod native { fn ds_photos_authorization_status() -> *mut c_char; fn ds_photos_request_authorization() -> *mut c_char; fn ds_photos_inventory(max_assets: u32, max_bytes: u64) -> *mut c_char; + fn ds_photos_inventory_page(offset: u64, max_bytes: u64) -> *mut c_char; fn ds_photos_delete(request_json: *const c_char) -> *mut c_char; #[cfg(test)] fn ds_photos_select_still_resource_index(types: *const i64, count: usize) -> i64; @@ -317,6 +432,10 @@ mod native { take_json(unsafe { ds_photos_inventory(MAX_INVENTORY_ASSETS, MAX_RESOURCE_BYTES) }) } + pub fn inventory_page(offset: u64) -> Result { + take_json(unsafe { ds_photos_inventory_page(offset, MAX_RESOURCE_BYTES) }) + } + #[derive(Deserialize)] struct NativeDeleteResult { deleted_identifiers: Option>, @@ -362,6 +481,9 @@ mod native { pub fn inventory() -> Result { Err("photos-library-macos-only".into()) } + pub fn inventory_page(_: u64) -> Result { + Err("photos-library-macos-only".into()) + } pub fn delete(_: &PhotosDeletionPlan) -> Result<(), String> { Err("photos-library-macos-only".into()) } @@ -389,6 +511,42 @@ pub async fn inspect_photos_duplicates() -> Result, +) -> Result { + let offset = checkpoint.as_ref().map_or(0, |value| value.next_offset); + let page = tauri::async_runtime::spawn_blocking(move || native::inventory_page(offset)) + .await + .map_err(|_| "photos-operation-interrupted".to_string())??; + if !matches!(page.authorization.as_str(), "authorized" | "limited") { + return Err("photos-authorization-required".into()); + } + if checkpoint.as_ref().is_some_and(|value| { + value.total_count != page.total_count + || value.inventory_identity != page.inventory_identity + || value.next_offset != page.offset + }) { + return Err("photos-page-checkpoint-mismatch".into()); + } + Ok(page) +} + +#[tauri::command] +pub fn finalize_photos_duplicate_inventory( + pages: Vec, +) -> Result { + let mut inventory = None; + for page in pages { + inventory = Some(merge_inventory_page(inventory, page)?); + } + let inventory = inventory.ok_or("photos-page-checkpoint-empty")?; + if inventory.inventory_truncated { + return Err("photos-page-checkpoint-incomplete".into()); + } + Ok(inventory) +} + #[tauri::command] pub fn plan_photos_duplicate_deletion( inventory: PhotosDuplicateInventory, @@ -511,9 +669,65 @@ mod tests { near_duplicate_evidence: Some( "unavailable-without-measured-content-equivalence".into(), ), + inventory_total_count: Some(2), + inventory_page_identity: Some("stable-library".into()), } } + fn page(offset: u64, total: u64, asset: PhotosAssetEvidence) -> PhotosInventoryPage { + PhotosInventoryPage { + authorization: "authorized".into(), + observed_at_ms: 100 + offset, + total_count: total, + inventory_identity: "stable-library".into(), + offset, + next_offset: (offset + 1 < total).then_some(offset + 1), + native_completion_observed: true, + page_duration_ms: 7, + assets: vec![asset], + unavailable_count: 0, + } + } + + #[test] + fn native_completed_pages_resume_and_only_finish_at_exact_total() { + let first = merge_inventory_page(None, page(0, 2, member("keep", 10))).unwrap(); + assert!(first.inventory_truncated); + assert!(!first.evidence_complete); + assert!(first.inventory_fingerprint.is_none()); + let complete = merge_inventory_page(Some(first), page(1, 2, member("remove", 8))).unwrap(); + assert!(!complete.inventory_truncated); + assert!(complete.evidence_complete); + assert!(complete.inventory_fingerprint.is_some()); + assert_eq!(complete.exact_groups.len(), 1); + } + + #[test] + fn page_gap_or_missing_native_completion_is_rejected() { + let first = merge_inventory_page(None, page(0, 2, member("keep", 10))).unwrap(); + assert_eq!( + merge_inventory_page(Some(first.clone()), page(0, 2, member("remove", 8))).unwrap_err(), + "photos-page-checkpoint-mismatch" + ); + let mut incomplete = page(1, 2, member("remove", 8)); + incomplete.native_completion_observed = false; + assert_eq!( + merge_inventory_page(Some(first), incomplete).unwrap_err(), + "photos-page-native-completion-required" + ); + } + + #[test] + fn equal_count_library_replacement_invalidates_checkpoint_identity() { + let first = merge_inventory_page(None, page(0, 2, member("keep", 10))).unwrap(); + let mut replaced = page(1, 2, member("replacement", 8)); + replaced.inventory_identity = "changed-library".into(); + assert_eq!( + merge_inventory_page(Some(first), replaced).unwrap_err(), + "photos-page-checkpoint-mismatch" + ); + } + #[test] fn plan_requires_explicit_keeper_and_preserves_it() { let inventory = inventory(); @@ -647,10 +861,11 @@ mod tests { } #[test] - fn native_boundary_bounds_callbacks() { + fn native_boundary_keeps_local_reads_offline_without_an_arbitrary_timeout() { let source = include_str!("../native/photos_bridge.m"); assert!(source.contains("networkAccessAllowed = NO")); - assert!(source.contains("cancelDataRequest:requestID")); + assert!(source.contains("dispatch_semaphore_wait(done, DISPATCH_TIME_FOREVER)")); + assert!(!source.contains("cancelDataRequest:requestID")); assert!(source.contains("DSAuthorizationTimeoutNanos")); } diff --git a/src/lib/PhotosLibraryReview.svelte b/src/lib/PhotosLibraryReview.svelte index 6ef04be4e..0743064e3 100644 --- a/src/lib/PhotosLibraryReview.svelte +++ b/src/lib/PhotosLibraryReview.svelte @@ -1,7 +1,11 @@