Back to Provenance

3455

.changelog/3455.md

3.3.11.6 KB
Original Source

Added

  • ROM Library in Files.app — Provenance now appears as a location in Files.app on iOS, macOS, and visionOS via NSFileProviderReplicatedExtension; browse your library by system folder and access individual ROM files
  • File Provider write support — Dragging ROM files into a system folder in Files.app imports them into the Provenance library; deletion and rename of ROM files from Files.app are also supported

Fixed

  • ROM File Provider quality fixes — Cascade-deletes save states, cheats, recent plays, and screenshots when a ROM is deleted via Files.app; guards against filename collisions on import by generating a unique destination name; correctly updates placeholder/missing records on duplicate import; normalizes MD5 hashes to uppercase to match codebase convention; rejects .contents writes (content replacement is unsafe while the item identifier is MD5-based); removed .allowsWriting capability accordingly; fixed createItem to use strong self capture so the completion handler is always invoked; wires progress cancellation handler to cancel the underlying import task; full filename sanitization (path-traversal stripping, colon/slash replacement, control-char removal, whitespace normalisation) applied consistently to both import and rename paths so on-disk names match display names; returns .filenameCollision error when a rename conflicts with an existing file; hashes source ROM before copying to avoid unnecessary IO for duplicates; adds explicit Task.checkCancellation() checks so cancellations terminate promptly; uses no-copy buffer for streaming MD5 to avoid per-chunk allocations