- Implement tests for ConfigValidator to ensure proper validation of configuration settings, including valid configurations, required fields, type checks, and error handling.
- Create tests for ConfigProfile to verify profile management functionalities such as saving, loading, listing, and deleting profiles.
- Add tests for ConfigExporter to validate JSON export and import processes, including error handling for non-existent files and invalid JSON.
- Introduce tests for SettingsDialog to confirm proper initialization, tab existence, and configuration data retrieval and application.
Status bar implementation:
- Status bar at bottom of main window
- Update status label with emoji support
- set_update_status() method for updates:
- Checking for updates
- Update available
- Downloading update
- Update failed
- Clean status display
Test coverage:
- 8 new tests for status bar
- Test creation and initialization
- Test status updates with/without emoji
- Test all status states (checking, available, downloading, error)
- All 154 tests passing, 86% coverage
Enables visual feedback during update operations
Menu implementation:
- Added menu bar to MainWindow
- Help menu with 'Check for Updates...' action
- Signal-based architecture for async update check
- Action triggers check_for_updates signal
Test coverage:
- 3 new tests for menu bar functionality
- Test menu bar creation
- Test signal exists and is callable
- Test callback method exists
- All 146 tests passing, 86% coverage
Design:
- Decoupled menu from update logic
- Emits signal that main app listens to
- Allows async update check without blocking UI
Dialog implementations:
1. CheckingDialog - Animated progress while checking for updates (10s timeout)
2. UpdateAvailableDialog - Shows version, changelog, action buttons
3. DownloadingDialog - Progress bar with size display and cancel option
4. InstallDialog - Confirmation with unsaved changes warning
5. NoUpdateDialog - Clean confirmation when up-to-date
6. ErrorDialog - Error handling with retry and manual download options
Test coverage:
- 29 unit tests for all 6 dialogs
- 100% coverage of update_manager_ui.py
- Signal emission testing for all interactive elements
- Progress bar and file display functionality
- Dialog state and flags validation
- Version parsing and comparison tests
- Cache management with TTL validation
- API fetching with network error handling
- Check for updates (with caching)
- Download update with checksum file handling
- Checksum verification (match/mismatch/missing)
- Platform-aware installer launching (Windows MSI, macOS DMG)
- All 20 tests passing with proper async/await support
- Installed pytest-asyncio for async test support
- Updated copilot instructions to document .venv environment
- Add 4.1.2 section for update manager UI
- Specify all dialogs (checking, available, downloading, install, failed, no updates)
- Include status bar integration with update indicators
- Define menu structure for Help menu updates
- Add background behavior specifications
- List async/non-blocking implementation requirements
- Include UI testing acceptance criteria
- Replace upload_to_packages scripts with create_release scripts
- Use Forgejo Releases API instead (standard for binaries)
- Windows: create_release.ps1 creates release and uploads exe + checksum
- macOS: create_release.sh creates release and uploads dmg + checksum
- Interactive credential prompts on first run
- UpdateManager queries releases/latest for updates
- Much simpler and matches standard open-source distribution
- Rename FORGEJO_PACKAGES_SETUP.md to reflect Releases approach
- Update documentation with Releases API examples
- Automatically generate checksum file after building exe
- Checksum saved as WebDropBridge.exe.sha256
- Required for package uploads
- Also increase upload timeout to 600s for large files
- Scripts now prompt for username/password on first run if not set
- Credentials are saved to session environment variables
- No need to pre-set env vars before running
- Windows: Add -ClearCredentials flag to clear session credentials
- macOS: Add --clear-credentials flag to clear session credentials
- Credentials persist for duration of PowerShell/shell session
- Much simpler UX: just run script and enter credentials when prompted
- Replace token-based auth with HTTP Basic Auth (username/password)
- Scripts now use FORGEJO_USER and FORGEJO_PASS environment variables
- Same credentials used for git repository access
- No special token creation needed
- Simpler setup: set env vars and run upload script
- Both Windows and macOS scripts updated
- Add FORGEJO_TOKEN environment variable support to both upload scripts
- Windows: Add Credential Manager storage via -SaveToken flag
- macOS: Add config file storage via --save-token flag
- Scripts now check: parameter -> env var -> credential manager/config
- Update FORGEJO_PACKAGES_SETUP.md with all authentication methods
- Token is now optional - scripts find it automatically
- Matches git authentication workflow
- Create .forgejo/workflows/build.yml for automated Windows and macOS builds
- Trigger on version tags (v1.0.0, v1.0.1, etc.) or manual dispatch
- Windows job builds executable with PyInstaller
- macOS job builds DMG package
- Automatically generate SHA256 checksums for verification
- Create release on Forgejo with all artifacts
- Add FORGEJO_CI_CD_SETUP.md with complete setup guide
- Add CHANGELOG.md for version tracking
- Update DEVELOPMENT_PLAN.md with Phase 3.3 details
This enables:
- Centralized release hub on Forgejo
- Automatic distribution of builds
- Foundation for Phase 4.1 auto-update system
- Checksum-based integrity verification