release: v2.0.0 — cross-platform CI, docs, and CLI enhancements#42
Open
airprofly wants to merge 38 commits into
Open
release: v2.0.0 — cross-platform CI, docs, and CLI enhancements#42airprofly wants to merge 38 commits into
airprofly wants to merge 38 commits into
Conversation
…dle OpenSSL DLLs on Windows - fix docker-bake.hcl: add REGISTRY variable (ghcr.io/airprofly/backer) so HCL generates correct GHCR tags; drop :latest tag per request - fix docker-publish.yml: remove redundant --set override, let HCL resolve REGISTRY from env var directly - fix publish-release.yml: install OpenSSL + Qt6 on macOS (brew) and Windows (choco), enable BUILD_GUI=ON, package backer-gui alongside backer-cli - fix publish-release.yml: bundle libcrypto-3-x64.dll and libssl-3-x64.dll into Windows ZIP to fix "missing DLL" popup - fix FetchQt6.cmake: add macOS/Windows platform detection (aqtinstall), fix Qt6_DIR path to use detected arch instead of hardcoded gcc_64
- add REGISTRY variable in docker-bake.hcl for configurable image tag - remove --set tag override from docker-publish.yml (now handled by HCL)
- Linux: gracefully handle missing backer-gui (Qt6 download failed) - Windows: disable GUI build (Qt6 not installed on runner) - Docker: remove image field from docker-compose.yml to avoid overriding HCL tags
Switch Windows Qt6 installation from aqtinstall to vcpkg to unify dependency management with OpenSSL. Add vcpkg binary cache to speed up subsequent builds.
Qt 6.5.0 provides win64_msvc2019_64, not win64_msvc2022_64. MSVC 2019 binaries are ABI-compatible with MSVC 2022. Also pass -DQt6_DIR explicitly to cmake for reliable discovery.
Cache vcpkg compiled packages at %LOCALAPPDATA%\vcpkg\archives to skip recompilation on subsequent runs.
qtbase is the default package, not a module. The --modules flag causes aqtinstall to fail with 'packages not found' error.
Replace manual aqtinstall with jurplel/install-qt-action@v4 which handles download, path setup, and caching automatically.
- Replace vcpkg static OpenSSL with choco install (faster, simpler) - Use jurplel/install-qt-action for Qt6 - Add windeployqt for automatic DLL packaging - Remove vcpkg toolchain and triplet from cmake
Add cache: 'true' to install-qt-action to skip re-downloading Qt6 on subsequent runs.
install-qt-action adds Qt bin to PATH, no need for manual path construction.
System Qt6 from apt may have different version than FetchQt6.cmake expects, causing path conflicts. Disable auto-download to use the system package directly.
FetchQt6.cmake auto-download conflicts with system-installed Qt6 on Linux (apt), macOS (brew), and Windows (install-qt-action). Set QT6_AUTO_DOWNLOAD=OFF to use the pre-installed Qt6 directly.
CMakeCache.txt contains absolute paths. Without runner.os in the key, macOS could restore Linux cache (different HOME paths), causing 'CMakeCache.txt directory is different' errors.
windeployqt successfully copies all DLLs but returns non-zero on translation file warnings. Use ; if ($LASTEXITCODE) to downgrade to a warning instead of failing the entire package step.
Auto-downloaded Qt6 6.5.0 conflicts with system Qt6 6.2.4 from apt, causing 'Qt6Gui could not be found' errors in FetchQt6.cmake.
Add Qt6 installation and -DBUILD_GUI=ON to macOS and Windows CI jobs to ensure GUI builds are tested across all platforms.
windeployqt returns non-zero on translation file issues but successfully copies all DLLs. Reset LASTEXITCODE to 0 to prevent PowerShell from propagating the error.
windeployqt only bundles Qt dependencies. Manually copy libcrypto-3-x64.dll and libssl-3-x64.dll from choco's OpenSSL installation to ensure the runtime has the correct SSL libraries.
OpenSSL 4.x uses libcrypto-40.dll/libssl-40.dll, not libcrypto-3-x64.dll/libssl-3-x64.dll (3.x naming).
Co-Authored-By: Claude <noreply@anthropic.com>
- add parseTimeOption helper accepting YYYY-MM-DD or YYYY-MM-DD HH:MM:SS - simplify setup-testdata.sh to minimal special-file test data - slim down usage docs to match current feature scope
- append a scoring table covering all basic and extended features (total: 158)
…s-platform strptime is a POSIX function unavailable on MSVC (Windows). Replace with std::get_time (C++11, all platforms) + istringstream for identical parsing behavior of YYYY-MM-DD[ HH:MM:SS] format. Co-Authored-By: Claude <noreply@anthropic.com>
- rewrite README with project structure tree, cleaner build instructions, and feature score summary - add 5 PlantUML diagrams: class, component, layers, sequence, and use-case - update requirements.md with course background and team member info - add presentation outline in docs/ppt.md - update .gitignore to track logs and ignore node_modules/diagram dist
- reflect new files: docker-bake.hcl, cppcheck, usage docs, diagrams/images - update CI/CD description and reorganize entry order for clarity
The Windows CLI binary (backer-cli.exe) dynamically links against the MSVC runtime (/MD), but the release zip only contained OpenSSL DLLs and Qt DLLs — the VC++ runtime DLLs (vcruntime140.dll, msvcp140.dll, concrt140.dll, etc.) were missing. On machines without the Visual C++ Redistributable pre-installed, the executable fails to launch with a "VCRUNTIME140.dll not found" error. Add a packaging step that locates the VC++ CRT DLLs via vswhere from Visual Studio redist directory and copies them into the release zip.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
This release brings v2.0.0 of the backer project, focusing on maturing the cross-platform CI pipeline (especially Windows packaging), overhauling documentation for the course report, and adding minor CLI quality-of-life improvements.
What
CI & Cross-Platform (37 commits)
strptimewith standardstd::get_time, detect OpenSSL DLL versions dynamicallyrunner.osto CI cache keys to prevent cross-platform cache pollutionDocumentation (5 files added, 2 modified)
docs/diagrams/src/)docs/ppt.md), update requirements specification with scoring.gitignore: Tidy up patterns for logs/ and output/ directoriesCLI
--mtime-beforeand--mtime-afterwith formats like2026-07-01and7 days ago(cross-platform viastd::get_time)Testing