Commit graph

51 commits

Author SHA1 Message Date
0d9464854d feat: Implement centralized version management and sync process 2026-01-30 09:16:12 +01:00
c1133ae8e9 docs: Update documentation for auto-update system and integration tests 2026-01-30 08:43:52 +01:00
f701247fab fix: Implement drag-and-drop functionality with QWebChannel integration 2026-01-30 08:17:01 +01:00
b2681a9cbd fix: Remove type ignore comments for web view page actions 2026-01-30 07:10:42 +01:00
64378f753b feat: Add user feedback dialog for manual update checks and handle dialog closure 2026-01-29 15:52:59 +01:00
e57e822bed fix: Improve background thread management and error handling in update check 2026-01-29 15:27:00 +01:00
a8eaa84310 fix: Specify type for log level combo box and adjust method signature 2026-01-29 12:53:54 +01:00
8b0df0e04f Add unit tests for configuration management and settings dialog
- 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.
2026-01-29 12:52:53 +01:00
5dc988005c feat: Implement structured JSON logging and performance tracking features 2026-01-29 10:25:54 +01:00
db3799a643 Refactor code structure for improved readability and maintainability 2026-01-29 10:19:52 +01:00
4581fd393c fix: Correct method call for retrieving URL in navigation request handler 2026-01-29 10:04:21 +01:00
ca9526c1c1 fix: Ensure release objects are not None in update flow integration tests 2026-01-29 10:02:44 +01:00
e1bf5a57c2 feat: Update DEVELOPMENT_PLAN with completion status and test coverage details for auto-update features 2026-01-29 09:10:44 +01:00
6ffea4d575 fix: Refactor import statements in test_main_window to improve clarity 2026-01-29 09:09:31 +01:00
6278ef8eed feat: Enhance Help menu with About dialog and update check functionality 2026-01-29 09:09:04 +01:00
eb7ffe9969 feat: Update DEVELOPMENT_PLAN with deliverables and acceptance criteria; add integration tests for update flow 2026-01-29 09:01:58 +01:00
50311139bf fix: Correct window flag type for close button hint in update dialogs 2026-01-29 08:48:29 +01:00
41549848ed feat: Implement asynchronous update check on startup with UI integration 2026-01-29 08:44:03 +01:00
5b28c931d8 feat: Add status bar with update status indicator
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
2026-01-29 08:37:53 +01:00
2896f6ba5c feat: Add Help menu with Check for Updates action
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
2026-01-29 08:35:21 +01:00
af8e417197 feat: Implement auto-update system with Forgejo releases management 2026-01-29 08:19:42 +01:00
b221ba8436 feat: Add 6 update manager UI dialogs (100% coverage)
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
2026-01-29 08:18:39 +01:00
342044ec3f deps: Add pytest-asyncio to dev requirements
- Required for async test support (UpdateManager tests)
- Version 0.21.0+
2026-01-29 08:16:36 +01:00
d408c3a2de test: Add comprehensive unit tests for UpdateManager (20 tests, 77% coverage)
- 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
2026-01-29 08:15:35 +01:00
79afa91490 docs: Update copilot instructions to include development environment setup and quality checks 2026-01-29 08:13:54 +01:00
50ce5abb6f docs: Add detailed UI components for Phase 4.1 auto-update system
- 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
2026-01-29 08:04:01 +01:00
3d2f09636d feat: Add WiX installer configuration for WebDrop Bridge 2026-01-28 15:54:39 +01:00
15d68a9ba9 feat: Add MSI installer upload to Forgejo releases 2026-01-28 15:53:39 +01:00
0f9fd4c730 feat: Add WiX MSI installer creation with fallback to default installation path 2026-01-28 15:48:46 +01:00
634eed8996 docs: Update Phase 3 status to reflect distribution completion
Some checks failed
Tests & Quality Checks / Test on Python 3.11 (push) Has been cancelled
Tests & Quality Checks / Test on Python 3.12 (push) Has been cancelled
Tests & Quality Checks / Test on Python 3.11-1 (push) Has been cancelled
Tests & Quality Checks / Test on Python 3.12-1 (push) Has been cancelled
Tests & Quality Checks / Test on Python 3.10 (push) Has been cancelled
Tests & Quality Checks / Test on Python 3.11-2 (push) Has been cancelled
Tests & Quality Checks / Test on Python 3.12-2 (push) Has been cancelled
Tests & Quality Checks / Build Artifacts (push) Has been cancelled
Tests & Quality Checks / Build Artifacts-1 (push) Has been cancelled
2026-01-28 15:19:50 +01:00
1d26d785a3 fix: Use curl for file uploads and add UseBasicParsing flag for PowerShell 5.1 compatibility
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
2026-01-28 15:14:42 +01:00
72b0cfb496 refactor: Switch from Packages API to Releases API for distribution
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
- 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
2026-01-28 15:11:46 +01:00
9c8a8d269c feat: Add SHA256 checksum generation to Windows build script
- 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
2026-01-28 15:05:37 +01:00
847692eef6 feat: Add interactive credential prompts to upload scripts
- 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
2026-01-28 14:49:02 +01:00
a4659d0a92 fix: Fix PowerShell syntax error in upload script
- Remove problematic Unicode characters (checkmark symbols)
- Replace with ASCII [OK] labels
- Script now parses correctly without encoding issues
2026-01-28 14:43:19 +01:00
e4a3a9a2cc refactor: Use HTTP Basic Auth instead of tokens for package uploads
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
- 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
2026-01-28 14:35:56 +01:00
1b37335f8a refactor: Use environment variables for upload script authentication
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
- 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
2026-01-28 14:29:35 +01:00
7bf3a86f5c refactor: Switch from CI/CD runners to Forgejo Packages distribution
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
- Remove .forgejo/workflows/build.yml (not needed)
- Remove FORGEJO_CI_CD_SETUP.md (runner approach obsolete)
- Remove PHASE_3_3_CI_CD_SUMMARY.md (CI/CD approach replaced)
- Add upload_to_packages.ps1 (Windows upload script)
- Add upload_to_packages.sh (macOS upload script)
- Add FORGEJO_PACKAGES_SETUP.md (comprehensive guide)
- Update DEVELOPMENT_PLAN.md Phase 3.3

Rationale:
- Simpler: No runner installation needed
- More practical: Manual builds on local machines
- More flexible: Build when you want
- Same distribution hub: Forgejo Packages
- Same auto-update integration: UpdateManager queries API

Release workflow:
1. Build locally on Windows and macOS
2. Upload both to Forgejo Packages
3. Tag release: git tag v1.0.0
4. Users download from Packages page
2026-01-28 14:23:35 +01:00
39c6211edd docs: Add Phase 3.3 CI/CD implementation summary 2026-01-28 13:15:50 +01:00
00b4c55612 feat: Add Forgejo CI/CD pipeline for automated builds and releases
- 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
2026-01-28 13:14:41 +01:00
db0cef4797 fix: Correct PowerShell syntax in sync_remotes.ps1 and add graceful error handling
Some checks are pending
Tests & Quality Checks / Test on Python 3.11 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-1 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.10 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.11-2 (push) Waiting to run
Tests & Quality Checks / Test on Python 3.12-2 (push) Waiting to run
Tests & Quality Checks / Build Artifacts (push) Blocked by required conditions
Tests & Quality Checks / Build Artifacts-1 (push) Blocked by required conditions
2026-01-28 13:07:45 +01:00
f0c96f15b8 feat: Implement default welcome page for missing web application
- Added a professional HTML welcome page displayed when no web application is configured.
- Enhanced `_load_webapp()` method to support improved path resolution for both development and bundled modes.
- Updated error handling to show the welcome page instead of a bare error message when the webapp file is not found.
- Modified unit tests to verify the welcome page is displayed in error scenarios.

build: Complete Windows and macOS build scripts

- Created `build_windows.py` for building Windows executable and optional MSI installer using PyInstaller.
- Developed `build_macos.sh` for creating macOS application bundle and DMG image.
- Added logging and error handling to build scripts for better user feedback.

docs: Add build and icon requirements documentation

- Created `PHASE_3_BUILD_SUMMARY.md` detailing the build process, results, and next steps.
- Added `resources/icons/README.md` outlining icon requirements and creation guidelines.

chore: Sync remotes script for repository maintenance

- Introduced `sync_remotes.ps1` PowerShell script to fetch updates from origin and upstream remotes.
2026-01-28 12:59:33 +01:00
90dc09eb4d Add auto-update system with Forgejo integration and enhance configuration management 2026-01-28 12:05:07 +01:00
1c1ec95139 Fix formatting issue in test_drag_interceptor.py and ensure signal connection for drag_started 2026-01-28 11:52:19 +01:00
dbf8f2b92f Enhance test coverage and refactor code in various modules
- Achieved 85% overall test coverage with detailed results for individual components.
- Added unit tests for DragInterceptor and MainWindow components.
- Refactored imports and removed unused code in multiple files.
- Updated test configurations and ensured compliance with coverage standards.
2026-01-28 11:51:59 +01:00
736b80b8f1 Fix URL retrieval in navigation request handler for restricted web view 2026-01-28 11:47:15 +01:00
6db67ee445 bugfixes 2026-01-28 11:43:31 +01:00
86034358b7 Add URL whitelist enforcement for Kiosk-mode and enhance configuration management
- Introduced `allowed_urls` in configuration to specify whitelisted domains/patterns.
- Implemented `RestrictedWebEngineView` to enforce URL restrictions in the web view.
- Updated `MainWindow` to utilize the new restricted web view and added navigation toolbar.
- Enhanced unit tests for configuration and restricted web view to cover new functionality.
2026-01-28 11:33:37 +01:00
6bef2f6119 Implement configuration management, drag-and-drop functionality, and logging utilities for WebDrop Bridge 2026-01-28 11:21:11 +01:00
04ef84cf9a Update pytest configuration to ensure coverage fails under specified threshold 2026-01-28 11:04:06 +01:00