Roadmap update

This commit is contained in:
Rukira 2026-08-25 11:24:05 +01:00
parent 9cb66f888d
commit 6fe133766e

View file

@ -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`. 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 ## Future Enhancements (Post-v1.0)
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)
1. **Multi-Flavour & Account Profile Support** 1. **Multi-Flavour & Account Profile Support**
- Support backing up multiple game versions simultaneously (`_retail_`, `_classic_`, `_classic_era_`, `_ptr_`). - Support backing up multiple game versions simultaneously (`_retail_`, `_classic_`, `_classic_era_`, `_ptr_`).