4.4 KiB
4.4 KiB
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:
- Restore Engine (
RestoreEngine.kt)- Implement
restoreBackup(entry: BackupEntry, targetDir: File): RestoreResult. - Support restoring from both timestamped directory structures and
.ziparchives (extracting usingZipInputStream). - Clean/delete existing target folders (
WTFand/orInterface) safely before copy/extraction. - Implement live progress reporting (
RestoreProgresswith total files, completed count, current file name). - Ensure full cancellation support via Kotlin Coroutines.
- Implement
- 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/Interfacefolders prior to overwrite.
- Restore ViewModel (
RestoreViewModel.kt)- Expose
RestoreUiStatecombining available backups list, selected entry, progress, and confirmation states. - Manage restore lifecycle (start, cancel, dismiss, error handling).
- Expose
- 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.
- App Wiring
- Connect
Screen.RESTOREinApp.kttoRestoreScreen. - Enable the "Restore" button on
StatusScreen.kt.
- Connect
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:
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.
BackupEngineTest&RestoreEngineTest:- File copy accuracy, recursive folder preservation, and attribute retention.
- ZIP compression and decompression fidelity.
- Cancellation responsiveness and cleanup of partial writes.
ConfigManagerTest:- JSON serialization / deserialization defaults and edge cases.
- Thread-safe updates and reactive
StateFlowemissions.
WoWLocationsTest:- Install directory heuristics and resolution from root
World of Warcraftto_retail_or_classic_. - Missing folder detection and permission warnings.
- Install directory heuristics and resolution from root
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:
- 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).
- Automated compile, lint, and test execution on pull requests and pushes to
- 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.
- Automated artifact generation for
4. Future Enhancements (Post-v1.0)
- 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).
- Support backing up multiple game versions simultaneously (
- Cloud Storage & Offsite Sync
- Optional sync integration to Google Drive, Dropbox, OneDrive, or custom S3-compatible buckets.
- Diff & Changelog Inspector
- Inspect changes between backups (e.g., addon list changes, modified WTF saved variables).
- Menu Bar Quick Actions
- Add a direct "Backup Now" action item to the system tray context menu.