Skip to content

feat(SaveSystem): Third-party emulator detection & migration guide (Delta, RetroArch, Manic) #3556

@github-actions

Description

@github-actions

Third-Party Emulator Detection & Migration Guide

Users with saves in Delta, RetroArch, Manic Emu, or other emulators should see a friendly migration guide that walks them through bringing their save data over to Provenance.

How Detection Works on iOS

iOS sandboxing prevents Provenance from directly reading other apps' file containers. However, we can:

  1. URL scheme probingUIApplication.canOpenURL("delta://") detects Delta
  2. LSApplicationQueriesSchemes — must be declared in Info.plist
  3. Guidance flow — direct users to export from the other app via its share sheet, then import into Provenance

Deliverables

KnownEmulator enum (in Protocols sub-task #PROTO)

Detectable emulators:

  • Delta (com.rileytestut.Delta, scheme delta://) — Nintendo systems
  • Manic Emu (com.manticstudios.ManticEmu) — GBA/NES/SNES/Genesis
  • RetroArch (com.libretro.RetroArch, scheme retroarch://) — everything
  • PPSSPP (org.ppsspp.ppsspp, scheme ppsspp://) — PSP
  • Gamma (com.littleredgames.GambatteGB) — GB/GBC

ExternalEmulatorMigrationView (SwiftUI)

  • "Import from Another Emulator" section in Settings → Library
  • If detected emulators exist: show a list with app icon, name, "How to Export" button
  • Each entry links to a step-by-step guide (in-app, not web) for exporting from that app
  • "No emulators detected" empty state with manual import option

LSApplicationQueriesSchemes additions (Info.plist)

delta, retroarch, ppsspp

Per-Emulator Migration Guides (in-app)

Step-by-step instructions (text + SF Symbol illustrations) for:

  • Delta → Provenance
  • RetroArch → Provenance
  • Manual .sav/.srm file import via Files.app

Notes

  • This is a guidance feature — we cannot automate direct file access
  • Future: if any of these apps add app-group or document sharing, this can be upgraded to semi-automatic
  • Potential future: QR code / local network transfer from companion app

Part of #3551

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-workPR or issue being worked on by the AI agentenhancementimprovements, enhancements, new features, additions

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions