diff --git a/DEVELOPMENT_PLAN.md b/DEVELOPMENT_PLAN.md index fdc0144..7acc85c 100644 --- a/DEVELOPMENT_PLAN.md +++ b/DEVELOPMENT_PLAN.md @@ -801,6 +801,95 @@ AUTO_UPDATE_NOTIFY=true --- +#### 4.1.2 Update UI Components (`src/webdrop_bridge/ui/update_manager_ui.py`) + +**Menu Integration:** +``` +Help Menu +├─ Check for Updates... (manual trigger) +├─ ───────────────────── +└─ About WebDrop Bridge (show current version) +``` + +**Dialogs:** + +1. **"Checking for Updates..." Dialog** + - Animated spinner/progress + - "Cancel" button + - Message: "Checking for updates..." + - Timeout: 10 seconds + +2. **"Update Available" Dialog** + - Current version: X.X.X + - New version: Y.Y.Y + - Changelog/release notes (scrollable) + - Buttons: "Update Now", "Later", "Skip This Version" + - Checkbox: "Show next update reminder" + +3. **"Downloading Update..." Dialog** + - Progress bar (download %) + - File size info: "Downloading 195 MB..." + - "Cancel Download" button + - Cancel option reverts to "Later" + +4. **"Install & Restart?" Dialog** + - Message: "Update downloaded and ready to install" + - Buttons: "Install Now", "Install on Next Restart" + - Checkbox: "Save my work before installing" + - Shows warning if unsaved changes exist + +5. **"No Updates Available" Dialog** + - Message: "You're running the latest version (X.X.X)" + - Button: "OK" + - Optional: "Check again" button + +6. **"Update Failed" Dialog** + - Error message with reason + - Buttons: "Retry", "Download Manually", "OK" + - Manual download link to Forgejo releases + +**Status Bar Integration:** +``` +┌─────────────────────────────────────┐ +│ Ready 🔄 Checking for updates... │ (during check) +│ Ready ✅ Update available (v1.1.0) │ (when found) +│ Ready ⬇️ Downloading update (45%) │ (during download) +└─────────────────────────────────────┘ +``` + +**Background Behavior:** +- Startup: Check for updates automatically (no UI blocking) +- If newer version found: Show notification badge on Help menu +- Silent background download when user is idle +- Notification when download complete +- Prompt for restart when convenient + +**Implementation:** +- Signal/slot architecture for async operations +- Non-blocking UI (all operations async) +- Graceful degradation if network unavailable +- Thread pool for download operations +- Cancel-safe download handling + +**Deliverables:** +- [ ] `src/webdrop_bridge/ui/update_manager_ui.py` - UI dialogs +- [ ] Update menu item integration +- [ ] Status bar update indicator +- [ ] All dialogs with error handling +- [ ] Tests for UI interactions + +**Acceptance Criteria:** +- Menu item works and triggers check +- All dialogs display correctly +- Progress shown during download +- Restart options work +- Network errors handled gracefully +- Cancel operations work safely +- Status bar updates in real-time +- No blocking operations on main thread + +--- + ### 4.2 Enhanced Logging & Monitoring **Deliverables:**