-
-
Notifications
You must be signed in to change notification settings - Fork 707
[Feature] DiscRipperView + RipperProgressSheet — Disc Ripping UI #3592
Copy link
Copy link
Open
Labels
agent-workPR or issue being worked on by the AI agentPR or issue being worked on by the AI agentenhancementimprovements, enhancements, new features, additionsimprovements, enhancements, new features, additionsui/uxrelated to user interface and experiencerelated to user interface and experience
Description
Overview
Build DiscRipperView and RipperProgressSheet — SwiftUI views that let users rip a physical disc from a connected USB optical drive directly into Provenance's ROM library.
Depends on: IOUSBOpticalDriveDriver sub-issue (optical drive DriverKit driver).
Goals
- Detect inserted disc and display disc metadata (TOC, system type detection)
- One-tap "Rip Disc" action that reads all sectors and writes a disc image to the ROM import folder
RipperProgressSheetshows sector-by-sector progress, ETA, speed (MB/s), current track- On completion: auto-import the ripped image into the game library
- Cancel / retry support with resume from last good sector where possible
Screen Designs
DiscRipperView (main screen)
- Drive status badge (No Drive / No Disc / Disc Ready)
- Disc info card: detected system, track count, total size
- "Rip Disc" primary button → presents
RipperProgressSheet - Recent rips list (last N rips with status)
RipperProgressSheet (modal sheet)
- Progress ring + percentage
- Current track / total tracks
- Sectors read / total sectors
- Estimated time remaining
- Speed (MB/s)
- Cancel button with confirmation
Implementation Notes
DiscRipperViewlives inPVUI/Sources/PVSwiftUI/DiscRipper/- Uses
@Observable(RipperViewModel) on iOS 17+ RipperViewModelcalls throughPVCoreLoader/ companion app IPC to theIOUSBOpticalDriveDriver- Output format:
.bin/.cue(most compatible) or.chdvia chdman if available - Progress updates via
AsyncStream<RipProgress>from the driver - On tvOS: view is hidden (USB optical drives not practically connectable to Apple TV)
Acceptance Criteria
-
DiscRipperViewshows drive/disc status correctly - "Rip Disc" triggers sector reads and progress updates in real time
- Cancel stops the rip and cleans up partial files
- Completed rip auto-appears in Provenance ROM library
- View compiles on iOS; no-op / hidden on tvOS
References
- Part of [Epic] DriverKit & USB/HID Peripheral Integration + Companion App #3201 (Phase 3 / Phase 4 companion app)
- Depends on
IOUSBOpticalDriveDriverissue - Related to USB optical disc reading item in Phase 1 of epic
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
agent-workPR or issue being worked on by the AI agentPR or issue being worked on by the AI agentenhancementimprovements, enhancements, new features, additionsimprovements, enhancements, new features, additionsui/uxrelated to user interface and experiencerelated to user interface and experience
Type
Projects
Status
In Progress