wow-backup/docs/roadmap.md
2026-08-24 15:22:22 +01:00

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:

  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.