Skip to content

Conversation

@JMBeresford
Copy link
Owner

@JMBeresford JMBeresford commented Dec 25, 2025

Implements save management for standalone emulators, leveraging Ludusavi in the Retrom service.

BREAKING: This is a breaking change for the existing save service API

@JMBeresford JMBeresford changed the title feat: save management for standalone emulators feat!: save management for standalone emulators Dec 25, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 25, 2025

Dependency Review

The following issues were found:

  • ✅ 0 vulnerable package(s)
  • ⚠️ 2 packages with OpenSSF Scorecard issues.

View full job summary

@nx-cloud
Copy link

nx-cloud bot commented Dec 25, 2025

🤖 Nx Cloud AI Fix Eligible

An automatically generated fix could have helped fix failing tasks for this run, but Self-healing CI is disabled for this workspace. Visit workspace settings to enable it and get automatic fixes in future runs.

To disable these notifications, a workspace admin can disable them in workspace settings.


View your CI Pipeline Execution ↗ for commit b3c5beb

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

@JMBeresford JMBeresford force-pushed the feat/ludusavi-integration branch 2 times, most recently from c168133 to 9c6166a Compare January 11, 2026 02:41
Copy link
Contributor

Copilot AI left a 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-client for WebDAV communication and retrom-plugin-save-manager for 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

Comment on lines +95 to +96
console.log(emulator.id, { emulator, config });

Copy link

Copilot AI Jan 19, 2026

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.

Suggested change
console.log(emulator.id, { emulator, config });

Copilot uses AI. Check for mistakes.
Add rustfmt component to the Rust toolchain in the Dockerfile.

Signed-off-by: John Beresford <jberesford@volcaus.com>
@JMBeresford JMBeresford force-pushed the main branch 8 times, most recently from b46014c to ee77021 Compare January 27, 2026 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants