# WoW Backup — Project Roadmap & Next Steps This document outlines the current state of the project, remaining core features from the initial masterplan, and future enhancements. --- ## 1. Immediate Priority: Feature 5 (Restore System) The core backup and scheduling pipeline is complete, but the restoration flow is currently a stub placeholder. Implementing Feature 5 is the final step to complete the original functional scope of `docs/masterplan.md`. ### Tasks: 1. **Restore Engine (`RestoreEngine.kt`)** - Implement `restoreBackup(entry: BackupEntry, targetDir: File): RestoreResult`. - Support restoring from both timestamped directory structures and `.zip` archives (extracting using `ZipInputStream`). - Clean/delete existing target folders (`WTF` and/or `Interface`) safely before copy/extraction. - Implement live progress reporting (`RestoreProgress` with total files, completed count, current file name). - Ensure full cancellation support via Kotlin Coroutines. 2. **Safety & Validation Mechanics** - Warn or guard if World of Warcraft is currently running during restoration. - Verify backup integrity and destination disk space before starting destructive deletion. - Create an automatic temporary safety snapshot of current `WTF`/`Interface` folders prior to overwrite. 3. **Restore ViewModel (`RestoreViewModel.kt`)** - Expose `RestoreUiState` combining available backups list, selected entry, progress, and confirmation states. - Manage restore lifecycle (start, cancel, dismiss, error handling). 4. **Restore Screen UI (`RestoreScreen.kt`)** - Replace placeholder with scrollable list of existing backups displaying date/time, archive size, and format badge. - Material 3 confirmation dialog detailing destructive overwrite. - Progress overlay with `LinearProgressIndicator`, active file, and cancellation button. - Empty state when no backups are present. 5. **App Wiring** - Connect `Screen.RESTORE` in `App.kt` to `RestoreScreen`. - Enable the "Restore" button on `StatusScreen.kt`. --- ## 2. Testing Infrastructure & Automated Test Suite Currently, the project contains no automated test suite (`src/jvmTest` is empty). Adding tests will prevent regressions during future maintenance. ### Test Targets: 1. **`BackupHistoryTest`**: - Timestamp parsing across formats and edge cases. - Backup listing and correct descending sort order. - Retention policy pruning (ensuring only oldest backups exceeding count are deleted). - Metrics computation for directory trees and ZIP files. 2. **`BackupEngineTest` & `RestoreEngineTest`**: - File copy accuracy, recursive folder preservation, and attribute retention. - ZIP compression and decompression fidelity. - Cancellation responsiveness and cleanup of partial writes. 3. **`ConfigManagerTest`**: - JSON serialization / deserialization defaults and edge cases. - Thread-safe updates and reactive `StateFlow` emissions. 4. **`WoWLocationsTest`**: - Install directory heuristics and resolution from root `World of Warcraft` to `_retail_` or `_classic_`. - Missing folder detection and permission warnings. --- ## 3. Build Automation & Release Pipeline The project contains packaging configurations in `composeApp/build.gradle.kts` and a `release.sh` script, but lacks automated CI/CD workflows. ### Tasks: 1. **GitHub Actions CI Workflow** - Automated compile, lint, and test execution on pull requests and pushes to `main`. - Matrix builds testing on macOS (`macos-latest`) and Windows (`windows-latest`). 2. **Automated Distribution Packaging** - Automated artifact generation for `.dmg` (macOS), `.msi` / `.zip` (Windows), and `.deb` (Linux) on GitHub releases. - Code signing and notarization configuration for macOS distributions. --- ## 4. Future Enhancements (Post-v1.0) 1. **Multi-Flavour & Account Profile Support** - Support backing up multiple game versions simultaneously (`_retail_`, `_classic_`, `_classic_era_`, `_ptr_`). - Account-level filtering (allowing selective backup of specific WTF accounts/characters). 2. **Cloud Storage & Offsite Sync** - Optional sync integration to Google Drive, Dropbox, OneDrive, or custom S3-compatible buckets. 3. **Diff & Changelog Inspector** - Inspect changes between backups (e.g., addon list changes, modified WTF saved variables). 4. **Menu Bar Quick Actions** - Add a direct "Backup Now" action item to the system tray context menu.