- Updated `brand_config.py` to include `WEBDROP_UPDATE_CHANNEL` in the environment variables.
- Enhanced `build_macos.sh` to create a bundled `.env` file with brand-specific defaults, including the update channel.
- Implemented a method in `build_windows.py` to create a bundled `.env` file for Windows builds, incorporating brand-specific runtime defaults.
- Modified `config.py` to ensure the application can locate the `.env` file in various installation scenarios.
- Added unit tests in `test_config.py` to verify the loading of the bootstrap `.env` from the PyInstaller runtime directory.
- Generated new WiX object and script files for the Windows installer, including application shortcuts and registry entries.
- Updated README.md to include a reference to branding and releases documentation.
- Modified brand_config.py to support multi-brand packaging, including functions for collecting local release data and merging release manifests.
- Adjusted build_macos.sh to set a default brand if none is specified and updated DMG naming conventions.
- Enhanced create_release.ps1 and create_release.sh scripts to support dry-run functionality and improved artifact handling.
- Added a new template for brand configuration in build/brands/template.jsonc.
- Created comprehensive branding and releases documentation in docs/BRANDING_AND_RELEASES.md.
- Added unit tests for new branding functionalities in test_brand_config.py.
- Added support for multiple brands in release scripts, allowing for branded artifacts.
- Introduced brand configuration management with JSON files for each brand.
- Created a new `brand_config.py` script to handle brand-specific logic and asset resolution.
- Updated `create_release.ps1` and `create_release.sh` scripts to utilize brand configurations and generate release manifests.
- Added unit tests for brand configuration loading and release manifest generation.
- Introduced `agravity` brand with its specific configuration in `agravity.json`.
- Updated version number in __init__.py to 0.6.5.
- Modified the download_update method in updater.py to accept a progress_callback for tracking download progress.
- Implemented chunked downloading in _download_file to report progress via the callback.
- Adjusted installer launching logic in updater.py to handle MSI files correctly using msiexec.
- Connected download progress signal in main_window.py to update the downloading dialog.
- Cleaned up whitespace and formatting in build_windows.py for better readability.
- Consolidated environment variable setup for stdout and stderr.
- Streamlined subprocess command calls by removing unnecessary line breaks.
- Enhanced error handling and logging for better debugging.
- Updated comments for clarity and consistency.
Update updater.py to improve checksum verification logic
- Modified checksum verification to prioritize specific .sha256 files matching installer names.
- Added fallback logic to check for any .sha256 file if no specific match is found.
Enhance update manager UI with download progress dialog
- Introduced DownloadingDialog to provide feedback during update downloads.
- Updated MainWindow to manage the new downloading dialog and handle its lifecycle.
- Removed the skip version functionality from the update dialog as per new requirements.
Refactor update manager UI tests for clarity and maintainability
- Removed tests related to the skip version functionality.
- Updated test cases to reflect changes in the update manager UI.
- Ensured all tests are aligned with the new dialog structure and signal emissions.
- Added -SkipExe switch to allow skipping the upload of the executable and its checksum.
- Updated paths for the executable and checksum files to reflect new directory structure.
- Improved file existence checks with warnings instead of errors for optional artifacts.
- Enhanced release body to include checksum information conditionally based on executable upload.
- Refined upload process for MSI and executable, including better error handling and logging.
- Implemented `set_exe_version` method in `WindowsBuilder` to set the version information for the generated executable.
- This ensures proper MSI updates by comparing file versions.
- Added error handling for missing `pefile` dependency and version resource.
- Updated `requirements-dev.txt` to include `pefile` as a dependency for building.
- Updated config.example.json to set default log_file to null.
- Modified config.py to resolve log file paths relative to the AppData directory.
- Added methods to get default log directory and log file path in AppData.
- Ensured logging behavior is consistent whether a log_file is specified or not.
- Changed installation scope from "perMachine" to "perUser" in the Windows installer configuration.
- Updated installation directory from "ProgramFiles64Folder" to "LocalAppDataFolder" for user-specific installations.
- Enhanced the configuration saving method to create parent directories if they don't exist.
- Improved the main window script loading logic to support multiple installation scenarios (development, PyInstaller, MSI).
- Added detailed logging for script loading failures and success messages.
- Implemented a new method to reconfigure logging settings at runtime, allowing dynamic updates from the settings dialog.
- Enhanced the settings dialog to handle configuration saving, including log level changes and error handling.
- Updated icon path handling to support both development mode and PyInstaller bundle.
- Modified script path loading to accommodate PyInstaller bundle structure.
- Adjusted download interceptor path to work with PyInstaller bundle.
- Updated the WiX configuration in build_windows.py to include required properties for the WixUI_InstallDir dialog.
- Changed the UI reference from WixUI_Minimal to WixUI_InstallDir for improved installation experience.
- Added custom branding images for the installer UI using WixVariable for background and banner images.
- Introduced a new license.rtf file containing the MIT License for the WebDrop Bridge project.
- Updated binary resources for background and banner images.
- Included WixUIExtension in candle and light commands to enable UI features.
- Added references for minimal and error progress UI dialogs in the WiX XML configuration.
- Mark components as 64-bit by adding Win64="yes" attribute in harvested files.
- Update WiX configuration to use ProgramFiles64Folder for installation.
- Add a new component for creating a desktop shortcut for the WebDrop Bridge application.
- Updated the path to the built executable to reflect changes in the output structure.
- Added calculation and display of total distribution size after build.
- Enhanced error reporting for the MSI linking process by capturing and printing stdout and stderr output.
- Updated WiX source file to include UI namespace for better compatibility.
- Removed unnecessary blank line in test_msi.py for cleaner code.
This commit introduces a new test script, `test_msi.py`, which automates the process of creating an MSI installer. The script utilizes the `WindowsBuilder` class to generate the installer and checks for its successful creation, providing feedback on the result and the file size.
- 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