From 59b296d04d3197a4e3f220745a728388df4ccce4 Mon Sep 17 00:00:00 2001 From: Rukira Date: Tue, 25 Aug 2026 11:24:05 +0100 Subject: [PATCH] Roadmap update --- docs/roadmap.md | 66 ++----------------------------------------------- 1 file changed, 2 insertions(+), 64 deletions(-) diff --git a/docs/roadmap.md b/docs/roadmap.md index bcbbaec..5afa40c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -4,75 +4,13 @@ This document outlines the current state of the project, remaining core features --- -## 1. Immediate Priority: Feature 5 (Restore System) +## 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 (Completed) - -Automated multi-platform packaging and release pipeline implemented via GitHub Actions (`.github/workflows/release.yml`) and documented in `INSTALL.md` and `docs/plans/feature-6-release-pipeline.md`. - -### Implemented: -1. **GitHub Actions Release Pipeline** - - Automated semantic patch version computation and git tagging on push to `main` and `workflow_dispatch`. - - Matrix builds on macOS (`macos-latest`), Windows (`windows-latest`), and Linux (`ubuntu-latest`). -2. **Automated Distribution Packaging & GitHub Releases** - - Automated artifact generation and release publishing for `.dmg` (macOS), `.msi` (Windows), and `.deb` (Linux). - - Dynamic version injection via `-PappVersion` in `composeApp/build.gradle.kts`. -3. **Installation Documentation** - - Detailed `INSTALL.md` guide covering installation and security prompts (Gatekeeper / SmartScreen) across all platforms. - ---- - -## 4. Future Enhancements (Post-v1.0) +## Future Enhancements (Post-v1.0) 1. **Multi-Flavour & Account Profile Support** - Support backing up multiple game versions simultaneously (`_retail_`, `_classic_`, `_classic_era_`, `_ptr_`).