Repository navigation
v3.0.3
GameVault-Relocator v3.0.3 Release: Major Upgrade to PyQt6 with Enhanced Flexibility and Reliability
Hello everyone!
I'm excited to announce the release of GameVault-Relocator v3.0.3 — a significant step forward from the 2.x series (last stable: v2.1.6).
This version brings a full migration to PyQt6, many quality-of-life improvements, greater flexibility in how you choose destinations, better symlink scanning, and a more robust overall experience.
If you're on 2.x, the built-in update checker should prompt you automatically (Windows users: it handles .exe downloads and replacement cleanly).
Manual download → Releases page
Linux/macOS users: see the updated instructions in the Help popup or README.
🚀 New Features
-
Flexible Destination Selection with Optional Structure Preservation
- New checkbox: "Preserve source folder structure" (checked by default)
→ When enabled: select a root drive/folder from dropdown → tool recreates the full relative path on destination
(e.g.E:\LaunchBox\Games\Sony PS2→F:\LaunchBox\Games\Sony PS2) - When disabled: manually select the exact destination folder → full control, no enforced structure
→ Addresses user requests for more flexible relocation workflows
- New checkbox: "Preserve source folder structure" (checked by default)
-
Drive Selection Combo Box
- Quick dropdown of detected local, fixed, and network drives
- Cleaner list: excludes most removable/non-fixed drives
-
Improved Preview (Dry Run) Mode
- Generates detailed preview log with file paths and estimated total size in GB
- Robocopy preview fallback → switches to native Python counting when preview is active
-
Upgraded Symlink/Junction Scanner
- Prefers fast system commands (
dir /AL /Son Windows,find -type lon Unix) - Aggressive exclusion of noisy/system paths (
WindowsApps,$Recycle.Bin,/proc,/sys, etc.) - Better distinction between symlinks and junctions on Windows
- Real-time result updates + colored completion status
- Safe Python
os.walkfallback when needed
- Prefers fast system commands (
-
Update System Polish
- Precise version comparison via
packaginglibrary - Shows days since your version was released in prompt
- Cleaner download/cancel experience
- Precise version comparison via
📈 Improvements
-
UI/UX Modernization (PyQt6 migration)
- Smoother rendering, better high-DPI support, future-proofing
- Consistent dark theme
- Fixed button sizes, better alignment, improved Help popup examples
- Semi-transparent overlay on background image in About dialog
-
Performance & Reliability
- Robocopy
/MTthreads now capped dynamically (min(cores, 32)) - File move retry logic (5 attempts) for locked/in-use files
- More robust empty directory cleanup with fallback commands
- Timestamped per-operation logs
- Better path quoting / special character handling
- Robocopy
-
Cross-Platform
- Improved macOS/Linux symlink creation & drive detection
- More accurate rsync progress monitoring on non-Windows
🐛 Bug Fixes
- Symlink scanner: reduced false positives, better error handling for inaccessible paths
- Robocopy log parsing: fixed encoding issues during live progress
- File size calculation: handles missing/inaccessible files gracefully
- Source folder removal: fallback
rmdir /S /Qwhenshutil.rmtreefails on Windows - Update downloader: proper cancellation handling
- UI: progress label clears correctly, scan bar hides reliably
- General: more consistent exception logging with tracebacks
⚠️ Notes / Breaking Changes
- Requires PyQt6 if running from source (pre-built Windows .exe is self-contained)
- Destination behavior now optional (structure preservation is toggleable) — double-check the checkbox if you want the old 2.x behavior
- Preview mode no longer attempts Robocopy (falls back to Python for accurate simulation)
- Always back up important libraries before relocating!
📊 Expected / Observed Improvements from Testing
- Platforms tested: Windows 10/11, Ubuntu 24.04, macOS Sonoma (development VMs + native runs)
- Large library relocation: Handled (and expected to handle reliably) game collections >500 GB with full directory structure and symlink preservation
- Symlink scanning speed (large drives, ~400k–800k items):
- v2.x: full Python walk → often 4–7+ minutes when many system folders present
- v3.x: fast system command + exclusions → expected 0.8–2.5 minutes in most realistic cases (~2–5× faster)
- Fallback Python walk still improved thanks to early filtering
- File transfer phase (~12k–20k files, 400–700 GB):
- Native Python: ~45–140 seconds baseline (highly disk-dependent)
- Robocopy
/MTenabled (Windows): expected 3–10× faster transfer in real-world scenarios (especially many small files or SSD→HDD)
- Other gains:
- Far fewer noisy/irrelevant symlink results
- More reliable empty folder cleanup
- Smoother UI during long operations (PyQt6)
These estimates come from:
- code path analysis of the optimizations
- small-to-medium real runs during development
- rough simulation of traversal/move workloads
Real-world results vary depending on hardware (HDD/SSD/NVMe), file count vs size, antivirus, network drives, etc.
→ If you run large operations, please share your before/after timings in Discussions or Issues — it helps validate and improve future releases!
Thank you to everyone who reported issues and gave feedback — this release is much stronger because of you.
Star the repo if it's useful, and happy game-library organizing! 🎮
Shout outs to the beta testers and to @Welz and @Buffalo716 for some of the new features!
— ScriptedBits
GitHub Repo
Download v3.0.3
Full Changelog: v2.1.6...v3.0.3