Home - XaviFortes/DeckSaves GitHub Wiki
๐ฎ DeckSaves - Advanced Multi-Platform Game Save Synchronization
DeckSaves is a powerful, cross-platform application built with Rust and Tauri that provides intelligent game save file synchronization with advanced versioning capabilities. Perfect for Steam Deck users, PC gamers, and anyone who wants to keep their game saves safe and synchronized across multiple devices.
๐ Key Features
๐ Intelligent Save Synchronization
- Multi-Platform Support: Works on Windows, macOS, and Linux
- Bidirectional Sync: Automatically chooses the newest save files
- Conflict Resolution: Smart timestamp-based conflict resolution
- Real-time Monitoring: Watch folders for automatic sync on file changes
- Batch Processing: Efficient handling of multiple save files
๐ Advanced Versioning System
- Complete Version History: Never lose a save file again - every sync creates a recoverable version
- Directory Snapshots: Unified versioning treats entire save directories as single units
- Pin Important Versions: Mark critical saves (before boss fights, achievements, etc.) to prevent cleanup
- One-Click Restore: Easily restore any previous save state with full directory restoration
- Smart Cleanup: Automatic removal of old versions while preserving pinned saves
- Timestamp Tracking: Detailed version history with creation times and metadata
โ๏ธ Flexible Storage Options
- Local Storage: Secure local file storage with no internet dependency
- AWS S3 Integration: Cloud backup and sync across multiple devices
- Encrypted Credentials: Secure storage of AWS credentials with encryption
- Storage Testing: Built-in connection testing before saving configurations
- Smart Sync: Intelligent merging of local and cloud data without data loss
๐ฏ Game Detection & Management
- Steam Integration: Automatic discovery of Steam games and save locations
- Manual Game Addition: Add any game with custom save paths
- Multiple Save Paths: Support for games with multiple save locations
- Game-Specific Settings: Individual sync settings per game
- Save Path Validation: Verify save paths before adding games
๐ก๏ธ Safety & Security Features
- No Data Loss: Versioning ensures you can always recover previous saves
- Conflict Prevention: Smart sync logic prevents accidental overwrites
- Encrypted Storage: AWS credentials stored with AES encryption
- File Integrity: SHA256 hashing for version verification
- Backup Validation: Verify backup integrity before sync operations
๐ Quick Start
Installation
Option 1: Download Pre-built Binary
- Download the latest release from GitHub Releases
- Extract and run the executable
- Follow the setup wizard
Option 2: Build from Source
# Clone the repository
git clone https://github.com/yourusername/DeckSaves.git
cd DeckSaves
# Install dependencies
npm install
# Build and run
npm run tauri dev
Initial Setup
- Launch DeckSaves and navigate to the Storage tab
- Choose Storage Type:
- Local Storage (Recommended): Stores saves on your local machine
- AWS S3: Cloud storage for multi-device synchronization
- Configure Storage Settings:
- Local: Set your preferred storage directory (default:
~/.decksaves
) - S3: Enter bucket name, region, and AWS credentials
- Local: Set your preferred storage directory (default:
- Test Connection (S3 only) and Save Configuration
๐ Detailed Feature Guide
๐ฎ Game Management
Adding Games Manually
- Click "Add Game Manually" in the Games tab
- Fill in the game details:
- Game Name: Identifier for your game
- Save Paths: Directories containing save files (can add multiple)
- Sync Enabled: Toggle automatic synchronization
- Click Save to add the game
Steam Game Discovery
- Click "Discover Steam Games"
- DeckSaves automatically scans your Steam installation
- Review detected games and save paths
- Click "Add Selected Games" to import them
Game Settings
- Enable/Disable Sync: Toggle synchronization per game
- Auto-Watch: Monitor save directories for real-time sync
- Multiple Save Paths: Add multiple directories for games with complex save structures
๐ Synchronization Types
Standard Sync
- Purpose: Basic file synchronization without versioning
- Best For: Simple backup needs
- How to Use: Click the sync button (๐) next to any game
Versioned Sync
- Purpose: Advanced sync with complete version history
- Best For: Critical saves, experimental gameplay, speedrunning
- How to Use: Click the "๐ Versioned Sync" button
- Benefits:
- Every sync creates a recoverable checkpoint
- Directory-level snapshots preserve complete game state
- Automatic pinning of important versions
Smart Sync
- Purpose: Intelligent merging of local and cloud data
- Best For: Setting up on new devices, switching storage types
- How to Use: Click the "๐ Smart Sync" button
- Features:
- Safely merges conflicting data
- Never loses existing saves
- Resolves conflicts using timestamps
๐ Version Management
Viewing Version History
- Click the "๐ History" button next to any game
- Browse all available versions with timestamps
- See file details, sizes, and version metadata
- Identify pinned versions (marked with ๐)
Restoring Previous Versions
- Open version history for the desired game
- Find the version you want to restore
- Click "โฉ๏ธ Restore" next to the version
- Confirm the restoration
- Result: Complete directory state restored to that point in time
Pinning Important Versions
- Open version history
- Click the "๐ Pin" button next to important versions
- Use Cases:
- Before attempting difficult boss fights
- After achieving major milestones
- Before trying experimental strategies
- After completing achievements
- Benefit: Pinned versions are protected from automatic cleanup
Managing Storage Space
- Automatic Cleanup: Old versions are automatically removed based on:
- Age (default: 30 days)
- Count (default: 10 versions per game)
- Pinned status (pinned versions are never auto-deleted)
- Manual Cleanup:
- Click "๐งน Cleanup Old Versions" to remove old versions
- Click "๐๏ธ Delete" next to specific versions
- Note: Pinned versions must be unpinned before deletion
โ๏ธ Storage Configuration
Local Storage
- Path:
~/.decksaves
(customizable) - Structure:
~/.decksaves/ โโโ local_storage/ โ โโโ versions/ โ โ โโโ GameName/ โ โ โ โโโ 20250725_120000_hash123.tar.gz โ โ โ โโโ 20250725_130000_hash456.tar.gz โ โ โโโ manifests/ โ โโโ config/
- Benefits: No internet required, full privacy, unlimited storage (As long as you have space)
- Limitations: Single device only (unless using shared network storage)
AWS S3 Storage
- Requirements: AWS account, S3 bucket, IAM credentials
- Configuration:
- Bucket Name: Your S3 bucket name
- Region: Choose closest AWS region for best performance
- Access Key ID: IAM user access key
- Secret Access Key: IAM user secret key
- Benefits: Multi-device sync, automatic backups, virtually unlimited storage
- Costs: AWS S3 pricing applies (typically very low for save files)
Storage Security
- Local: Files stored with standard filesystem permissions
- S3:
- Credentials encrypted with AES-256 before local storage
- Data transmitted over HTTPS
- Server-side encryption available (configure in S3 bucket settings)
๐ง Advanced Features
Real-time File Watching
- Enable Auto-Watch for a game
- DeckSaves monitors save directories for changes
- Automatic sync triggered when saves are modified
- Use Case: Seamless backup during gameplay
Batch Operations
- Sync All: Sync all enabled games with one click
- Bulk Enable/Disable: Manage multiple games simultaneously
- Status Monitoring: Real-time sync status for all operations
Import/Export Configuration
- Export: Backup your game configuration and settings
- Import: Restore configuration on new devices
- Format: JSON format for easy editing and sharing
๐ ๏ธ Technical Details
System Requirements
- Operating System: Windows 10+, macOS 10.15+, Linux (modern distributions)
- Memory: 100MB RAM minimum
- Storage: 50MB for application, additional space for save backups
- Network: Internet connection required for S3 sync only
Architecture
- Frontend: Vue.js 3 with TypeScript
- Backend: Rust with Tauri framework
- Storage: Local filesystem or AWS S3
- Encryption: AES-256 for credential storage
- Compression: gzip compression for version archives
File Formats
- Configuration: JSON format in
~/.decksaves/config.json
- Version Archives: tar.gz format for directory snapshots
- Manifests: JSON format tracking version metadata
Performance
- Sync Speed: Optimized for small save files (typical: <1MB/sec)
- Memory Usage: Low memory footprint (~50MB typical)
- CPU Usage: Minimal impact during sync operations
- Startup Time: Fast startup (<2 seconds typical)
๐ Troubleshooting
Common Issues
"Failed to sync: dispatch failure"
Cause: AWS S3 connection issue Solutions:
- Verify AWS credentials in Storage settings
- Check internet connection
- Test S3 connection using the built-in test feature
- Switch to Local Storage temporarily
"Version not found in manifest"
Cause: Version data corruption or missing files Solutions:
- Check storage location for corrupted files
- Run "Smart Sync" to rebuild version manifests
- Verify storage permissions
"Game not found in configuration"
Cause: Game configuration issue Solutions:
- Re-add the game manually
- Check game name spelling
- Verify save paths exist
Steam Games Not Detected
Solutions:
- Ensure Steam is installed in default location
- Run DeckSaves as administrator/sudo if needed
- Manually add games if auto-detection fails
Debug Information
- Log Location: Application logs available in the UI Sync Status tab
- Verbose Logging: Set
RUST_LOG=debug
environment variable - Configuration: Located at
~/.decksaves/config.json
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
# Clone and install dependencies
git clone https://github.com/yourusername/DeckSaves.git
cd DeckSaves
npm install
# Install Rust dependencies
cargo build
# Run in development mode
npm run tauri dev
Code Structure
DeckSaves/
โโโ src/ # Vue.js frontend
โโโ tauri-ui/src/ # Tauri Rust backend
โโโ core/src/ # Core sync logic
โโโ cli/src/ # Command-line interface
โโโ docs/ # Documentation
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Built with Tauri for the application framework
- Uses AWS SDK for Rust for S3 integration
- Inspired by the Steam Deck community's need for better save management
๐ Support
- GitHub Issues: Report bugs or request features
- Documentation: Wiki
- Community: Discord Server
DeckSaves - Because your save files are irreplaceable! ๐ฎโจ