-
Notifications
You must be signed in to change notification settings - Fork 33
feat!: save management for standalone emulators #458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Dependency ReviewThe following issues were found:
|
|
| Command | Status | Duration | Result |
|---|---|---|---|
nx run-many -t cargo:format prettier:format buf... |
❌ Failed | 8s | View ↗ |
nx noop |
✅ Succeeded | <1s | View ↗ |
☁️ Nx Cloud last updated this comment at 2026-01-20 01:21:33 UTC
c168133 to
9c6166a
Compare
6f85d08 to
b3c5beb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This pull request implements comprehensive save management for standalone emulators, leveraging Ludusavi for backup/restore functionality and introducing a WebDAV service for cloud save synchronization. The changes introduce a v2 saves service API while deprecating the v1 API, making this a breaking change.
Changes:
- Adds two new Tauri plugins:
retrom-plugin-webdav-clientfor WebDAV communication andretrom-plugin-save-managerfor save file orchestration - Introduces a new WebDAV service package for serving save files via WebDAV protocol
- Implements v2 emulator saves service using Ludusavi for backup/restore operations
- Adds database migration for tracking local emulator save data paths
- Integrates save syncing into the game launch flow with conflict resolution UI
- Refactors existing saves service into v1 namespace (breaking change)
Reviewed changes
Copilot reviewed 112 out of 118 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| plugins/retrom-plugin-webdav-client/* | New Tauri plugin providing WebDAV client functionality with full CRUD operations |
| plugins/retrom-plugin-save-manager/* | New Tauri plugin managing save sync status, upload/download, and conflict resolution |
| packages/webdav-service/* | New service package exposing save files via WebDAV protocol |
| packages/grpc-service/src/saves/v2/* | New v2 saves service implementation using Ludusavi |
| packages/codegen/protos/retrom/services/saves/v2/* | New protobuf definitions for v2 saves service |
| packages/codegen/protos/retrom/client/saves.proto | Client-side save sync status and behavior definitions |
| packages/db/migrations/add-local-emulator-save-path/ | Database migration adding save_data_path column |
| packages/client-web/src/components/modals/resolve-cloud-save-conflict/* | New UI for resolving save conflicts |
| packages/client-web/src/components/action-button/play-game-button.tsx | Integration of save sync into game launch flow |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
| console.log(emulator.id, { emulator, config }); | ||
|
|
Copilot
AI
Jan 19, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This console.log statement should be removed before merging to production. Debug logs should not be committed to the codebase.
| console.log(emulator.id, { emulator, config }); |
Add rustfmt component to the Rust toolchain in the Dockerfile. Signed-off-by: John Beresford <jberesford@volcaus.com>
b46014c to
ee77021
Compare

Implements save management for standalone emulators, leveraging Ludusavi in the Retrom service.
BREAKING: This is a breaking change for the existing save service API