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
This commit is contained in:
claudi 2026-01-28 13:14:41 +01:00
parent db0cef4797
commit 00b4c55612
4 changed files with 622 additions and 0 deletions

112
CHANGELOG.md Normal file
View file

@ -0,0 +1,112 @@
# Changelog
All notable changes to WebDrop Bridge will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.0] - 2026-01-28
### Added
- **Core Features**
- Qt6-based desktop application for web-to-file drag-and-drop
- PySide6 integration with WebEngine for embedded browser
- Path validation and security with whitelist-based access control
- Drag-and-drop event interception and handling
- Real-time drag state monitoring
- **UI/UX**
- Professional main window with toolbar navigation
- Restricted web view with URL whitelist enforcement
- Kiosk-mode support (restricted browsing)
- Beautiful default welcome page for unconfigured instances
- Responsive layout with proper window management
- **Configuration**
- Environment-based configuration system (.env file support)
- Configurable allowed root directories for file access
- URL whitelist with wildcard support (*.example.com)
- Window size and appearance settings
- Logging level and output control
- **Logging & Monitoring**
- Structured logging with INFO, DEBUG, ERROR levels
- Optional file-based logging
- Comprehensive error messages and diagnostics
- Application startup and shutdown logging
- **Build & Distribution**
- PyInstaller configuration for Windows and macOS
- Standalone executable generation (195.7 MB for Windows)
- Dependency bundling (PySide6, Qt6, Chromium)
- Resource embedding (webapp, icons, stylesheets)
- Cross-platform support (Windows .exe, macOS .dmg)
- **Testing & Quality**
- 99 unit and integration tests
- 84% code coverage
- Ruff linting and Black code formatting
- mypy type checking
- Comprehensive test fixtures and mocking
- **CI/CD**
- Forgejo Actions workflow for automated builds
- Windows executable build on tag push
- macOS DMG build on tag push
- SHA256 checksum generation
- Automatic release creation on Forgejo
- **Documentation**
- Comprehensive API documentation with docstrings
- Architecture documentation (ARCHITECTURE.md)
- Development plan (DEVELOPMENT_PLAN.md)
- Setup and quickstart guides
- Contributing guidelines
### Technical Details
- **Language**: Python 3.13
- **Framework**: PySide6 6.10.1 (Qt6)
- **Web Engine**: Qt6 WebEngine with Chromium
- **Build Tool**: PyInstaller 6.18.0
- **Testing**: pytest with coverage
- **Linting**: Ruff + Black
### Known Limitations
- Requires .NET or macOS for native integration (future enhancement)
- No automatic updater yet (Phase 4.1)
- No multi-window support (Phase 4.2)
- Requires configuration for custom web applications
## [Unreleased]
### Planned for Phase 4
- **Auto-Update System** with Forgejo integration
- **Enhanced Logging** with monitoring dashboard
- **Advanced Configuration** UI
- **User Documentation** and tutorials
- **Code Signing** for Windows MSI
- **Apple Notarization** for macOS DMG
---
## Version Numbering
- **MAJOR**: Significant feature additions or breaking changes
- **MINOR**: New features, backward compatible
- **PATCH**: Bug fixes, improvements
Example: `1.0.0` = Version 1, Release 0, Patch 0
## Release Process
1. Update version in `src/webdrop_bridge/config.py` (APP_VERSION)
2. Update CHANGELOG.md with new features/fixes
3. Commit: `git commit -m "chore: Bump version to X.Y.Z"`
4. Tag: `git tag -a vX.Y.Z -m "Release version X.Y.Z"`
5. Push: `git push upstream vX.Y.Z`
6. Forgejo Actions automatically builds and creates release
---
**Current Version**: 1.0.0 (Released 2026-01-28)
**Next Version**: 1.1.0 (Planned with auto-update system)