# 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).

## [0.1.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**
  - Build automation scripts for Windows and macOS
  - Forgejo Packages support for distribution
  - SHA256 checksum generation for release files
  - Release documentation 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 configuration for custom web applications
- Manual release builds needed (no CI/CD runners in Forgejo at this time)

## [0.5.0] - 2026-02-18

### Added - Phase 4 Professional Features

#### Phase 4.1: Auto-Update System
- **Auto-update Manager** (`core/updater.py`)
  - Check for new releases via Forgejo API
  - Automatic background update checking (configurable interval)
  - Manual "Check for Updates" menu option
  - SHA256 checksum verification for downloaded files
  - Version comparison using semantic versioning
  - 27 tests passing, 79% coverage

- **Update UI Components** (`ui/update_manager_ui.py`)
  - Update notification dialogs with release notes and changelog
  - Progress bar for update downloads
  - Integration with Help menu and status bar
  - Real-time status updates ("Checking...", "Downloading...", "Complete")
  - Graceful error handling with user feedback
  - 49 tests passing, 95% coverage

- **Forgejo Integration**
  - Queries Forgejo API for latest releases
  - Supports tag-based versioning (vX.Y.Z)
  - Release notes parsing and display
  - Asset/checksum management

#### Phase 4.2: Enhanced Logging & Monitoring
- **Structured JSON Logging**
  - `JSONFormatter` class for JSON-formatted log output
  - Timestamp, level, module, function, and line number tracking
  - Optional JSON format alongside traditional text logging

- **Log Rotation & Archival**
  - Automatic log file rotation (daily)
  - Old log archival with configurable retention (default: 30 days)
  - `_archive_old_logs()` function for log cleanup
  - Logs directory management

- **Performance Metrics**
  - `PerformanceTracker` context manager for operation timing
  - Automatic performance logging
  - Useful for debugging and optimization monitoring
  - 20 tests passing, 91% coverage

#### Phase 4.3: Advanced Configuration
- **Configuration Validation System**
  - `ConfigValidator` class with comprehensive schema validation
  - Validates all config fields with detailed error messages
  - Type constraints, ranges, and allowed value enforcement
  - 8 tests passing

- **Configuration Profiles**
  - `ConfigProfile` class for named profile management (work, personal, etc.)
  - Profile storage in `~/.webdrop-bridge/profiles/` as JSON
  - Profile save/load/delete functionality
  - 7 tests passing

- **Settings Dialog UI** (`ui/settings_dialog.py`)
  - Professional Qt dialog with 5 organized tabs
  - **Paths Tab**: Manage allowed root directories with add/remove buttons
  - **URLs Tab**: Manage allowed web URLs with wildcard support
  - **Logging Tab**: Configure log level and file output
  - **Window Tab**: Configure window size, title, and appearance
  - **Profiles Tab**: Save/load/delete named profiles, export/import configs
  - 23 tests passing, 75% coverage

- **Configuration Import/Export**
  - `ConfigExporter` class for JSON serialization
  - `export_to_json()` - Save configuration to JSON file
  - `import_from_json()` - Load configuration from JSON
  - File I/O error handling
  - 5 tests passing

- **Overall Phase 4.3 Stats**
  - 43 tests passing total
  - 87% coverage on `config_manager.py`
  - 75% coverage on `settings_dialog.py`

### Technical Improvements
- **Test Coverage**: Increased from 84% (v1.0.0) to 90%+ with Phase 4 additions
- **Total Test Suite**: 139 tests passing across all phases
- **Code Quality**: Maintained 100% Black formatting and Ruff compliance
- **Type Safety**: Full mypy compliance across new modules

### Documentation Updates
- Updated DEVELOPMENT_PLAN.md with Phase 4 completion status
- Added comprehensive docstrings to all Phase 4 modules
- Configuration validation examples in docs
- Update workflow documentation

### Known Changes from v1.0.0
- Forgejo API integration approach (vs CI/CD automation)
- Manual release builds using Forgejo Packages (vs Actions)
- Optional JSON logging format (traditional text still default)
- Profile-based configuration management

## [Unreleased] - Phase 5 Planned

### Planned Features
- **Performance Optimization** - Drag event latency < 50ms
- **Security Hardening** - Comprehensive security audit and fixes
- **Release Candidates** - v1.0.1-rc1, rc2, rc3 testing
- **Final Releases** - Stable Windows & macOS builds
- **Analytics** (Optional post-release)
- **Community Support** - GitHub/Forgejo discussion forums

---

## 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/__init__.py` (__version__)
2. Update CHANGELOG.md with new features/fixes
3. Commit: `git commit -m "chore: Bump version to X.Y.Z"`
4. Build on Windows: `python build/scripts/build_windows.py`
5. Build on macOS: `bash build/scripts/build_macos.sh`
6. Tag: `git tag -a vX.Y.Z -m "Release version X.Y.Z"`
7. Push: `git push upstream vX.Y.Z`
8. (Optional) Upload to Forgejo Packages using provided upload scripts

---

**Current Version**: 1.0.0 (Released 2026-01-28)  
**Last Updated**: 2026-02-18 with v1.0.1 Phase 4 features  
**Next Version**: 1.1.0 (Planned for Phase 5 release candidates)
