Skip to content

chore: Automatize version releasing#44

Merged
enegalan merged 4 commits into
mainfrom
41-automatize-version-releases
Jul 8, 2026
Merged

chore: Automatize version releasing#44
enegalan merged 4 commits into
mainfrom
41-automatize-version-releases

Conversation

@enegalan

@enegalan enegalan commented Jul 8, 2026

Copy link
Copy Markdown
Owner
  • Added official platform installers for macOS, Windows, and Linux, with automated builds included in the release process.
  • Updated CHANGELOG to reflect new features and improvements for version 0.8.0.
  • Enhanced Makefile to include new packaging targets for macOS, Windows, and Linux installers.
  • Introduced packaging scripts for creating native installers across platforms.
  • Bumped version to 0.8.0 in backend and UI configurations.

Summary by CodeRabbit

  • New Features
    • Added official cross-platform installer packaging for macOS, Windows, and Linux.
    • GitHub Releases now auto-build and publish per-platform installers (drafted and tagged with the app version).
    • Updated app version to 0.8.0.
  • Bug Fixes
    • Added stricter pre-packaging validation to ensure backend/UI versions match before building.
  • Documentation
    • Updated release, build, and packaging instructions (including new make package-* targets).
    • Added a 0.8.0 entry to the changelog.

- Added official platform installers for macOS, Windows, and Linux, with automated builds included in the release process.
- Updated CHANGELOG to reflect new features and improvements for version 0.8.0.
- Enhanced Makefile to include new packaging targets for macOS, Windows, and Linux installers.
- Introduced packaging scripts for creating native installers across platforms.
- Bumped version to 0.8.0 in backend and UI configurations.
@enegalan enegalan linked an issue Jul 8, 2026 that may be closed by this pull request
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@enegalan, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 48 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 73b3ceb4-ab04-4225-b160-16353b5f4f45

📥 Commits

Reviewing files that changed from the base of the PR and between c91fa2a and 2ca588c.

📒 Files selected for processing (1)
  • .github/workflows/release.yml
📝 Walkthrough

Walkthrough

Adds cross-platform packaging scripts, Makefile packaging targets, and a release workflow that builds installers, uploads artifacts, and drafts GitHub releases. Also bumps version files and updates changelog and repo documentation.

Changes

Packaging and Release Automation

Layer / File(s) Summary
Shared packaging helper script
scripts/_common.sh
Defines shared constants, validation helpers, and version extraction that compares backend and UI versions.
macOS packaging
scripts/package-macos.sh
Validates the macOS app bundle and builds DMG and PKG installers.
Linux packaging
scripts/package-linux.sh
Stages bundle assets and builds DEB, RPM, and AppImage artifacts.
Windows packaging
scripts/package-windows.ps1
Extracts and matches versions, generates an Inno Setup script, and compiles a Windows installer.
Makefile packaging targets
Makefile
Adds package and platform-specific package-* targets, plus .PHONY and help updates.
Release workflow, version bumps, and docs
.github/workflows/release.yml, backend/version/version.go, ui/pubspec.yaml, CHANGELOG.md, .cursor/rules/calf.mdc, CLAUDE.md
Adds the release workflow, bumps both version files to 0.8.0, and updates changelog and documentation for the packaging and release flow.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHub as GitHub Actions
  participant Build as build job
  participant Makefile as Makefile targets
  participant Scripts as packaging scripts
  participant Release as release job
  participant GH as GitHub Releases

  GitHub->>Build: push to main with version files changed
  Build->>Makefile: run package-macos/package-linux/package-windows
  Makefile->>Scripts: execute platform packaging scripts
  Scripts-->>Build: installer artifacts in dist/
  Build->>GitHub: upload artifacts per OS
  GitHub->>Release: start release job
  Release->>Release: parse Version from backend/version/version.go
  Release->>GitHub: download artifacts into dist/
  Release->>GH: create draft v<version> release with dist/* attached
Loading

Possibly related PRs

  • enegalan/calf#43: Updates the platform release/packaging pipeline and Makefile/docs around release targets that feed the installer bundles.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the main change: automating the release/versioning workflow and packaging installers.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 41-automatize-version-releases

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
.github/workflows/release.yml (1)

95-102: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Replace the third-party release action with gh release.

The runner already provides the GitHub CLI, so this adds another release dependency for the same job.

♻️ Proposed refactor
-      - name: Create GitHub release
-        uses: softprops/action-gh-release@v2
-        with:
-          tag_name: v${{ steps.version.outputs.version }}
-          name: Calf ${{ steps.version.outputs.version }}
-          draft: true
-          generate_release_notes: true
-          files: dist/*
+      - name: Create GitHub release
+        env:
+          GH_TOKEN: ${{ github.token }}
+        run: |
+          gh release create "v${{ steps.version.outputs.version }}" dist/* \
+            --draft \
+            --generate-notes \
+            --title "Calf ${{ steps.version.outputs.version }}"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 95 - 102, Replace the
`softprops/action-gh-release@v2` step in the release workflow with a GitHub
CLI-based release command using `gh release` in the same job. Keep the existing
release inputs from the `Create GitHub release` step in
`.github/workflows/release.yml` by mapping the version output from
`steps.version.outputs.version`, preserving the release name, draft status,
notes generation, and attaching `dist/*` artifacts through the CLI flow.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CHANGELOG.md`:
- Around line 8-12: The CHANGELOG entry is too focused on release mechanics;
rewrite the bullet under the 0.8.0 entry to describe the user-visible outcome
instead. Update the wording in CHANGELOG.md so it emphasizes that users can now
download official macOS, Windows, and Linux installers from releases, and avoid
mentioning how they are built or when they are published.

In `@scripts/package-linux.sh`:
- Around line 136-143: The appimagetool fetch in the package-linux.sh script is
using a moving “continuous” URL and can leave a corrupted partial download
behind, so update the download logic around the appimagetool variable to use a
pinned AppImageKit release URL and download into a temporary file before moving
it into place. After the download, verify the file is complete (ideally with a
checksum) before chmod and reuse, so subsequent runs do not execute a truncated
binary.
- Around line 75-118: The build_rpm() helper is deleting the user’s default RPM
workspace by removing the hardcoded rpmbuild directory under HOME. Update the
RPM build flow to use a project-local top directory instead, and pass it to
rpmbuild via a custom _topdir definition so the spec, SOURCES, BUILD, RPMS, and
SRPMS paths stay isolated. Keep the existing build_rpm() structure, but replace
the HOME-based directory handling with a local temp/project directory and make
the copy step read from that location.

In `@scripts/package-windows.ps1`:
- Around line 6-22: The version helpers Get-ProjectVersion and
Get-FlutterVersion currently dereference $match.Matches before checking whether
Select-String returned a match, which can trigger a null-valued expression error
instead of the intended custom message. Update both functions to first verify
the Select-String result is not $null before accessing Matches.Groups[1].Value,
and keep the existing throw message path in the no-match case.

---

Nitpick comments:
In @.github/workflows/release.yml:
- Around line 95-102: Replace the `softprops/action-gh-release@v2` step in the
release workflow with a GitHub CLI-based release command using `gh release` in
the same job. Keep the existing release inputs from the `Create GitHub release`
step in `.github/workflows/release.yml` by mapping the version output from
`steps.version.outputs.version`, preserving the release name, draft status,
notes generation, and attaching `dist/*` artifacts through the CLI flow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: cba7221d-6933-4626-bb0c-78bf1af8c65a

📥 Commits

Reviewing files that changed from the base of the PR and between 2b62780 and 7a549fe.

📒 Files selected for processing (11)
  • .cursor/rules/calf.mdc
  • .github/workflows/release.yml
  • CHANGELOG.md
  • CLAUDE.md
  • Makefile
  • backend/version/version.go
  • scripts/_common.sh
  • scripts/package-linux.sh
  • scripts/package-macos.sh
  • scripts/package-windows.ps1
  • ui/pubspec.yaml

Comment thread CHANGELOG.md Outdated
Comment thread scripts/package-linux.sh
Comment thread scripts/package-linux.sh Outdated
Comment thread scripts/package-windows.ps1
enegalan added 2 commits July 8, 2026 15:07
- Revised CHANGELOG to clarify the availability of official platform installers for macOS, Windows, and Linux.
- Modified release workflow to utilize the GitHub CLI for creating releases, enhancing automation.
- Improved Linux packaging script to ensure proper checksum verification for appimagetool.
- Added error handling in Windows packaging script for version extraction from configuration files.
- Added context support for graceful shutdown of the API server in the test setup.
- Improved test server initialization by encapsulating the server creation and shutdown logic.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Around line 95-103: The Create GitHub release step in the release workflow
uses steps.version.outputs.version directly in a shell command, so add a
version-format validation in the Extract version/related version-handling logic
before gh release create is invoked. Ensure the value produced by the version
extraction step is constrained to the expected semantic version pattern in
backend/version/version.go or the version output plumbing, and fail early if it
contains anything unexpected; then keep the Create GitHub release step consuming
only the validated version output.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 44c2e876-de39-4a03-95fa-4dac33947dd1

📥 Commits

Reviewing files that changed from the base of the PR and between 7a549fe and c91fa2a.

📒 Files selected for processing (5)
  • .github/workflows/release.yml
  • CHANGELOG.md
  • backend/test/api/api_test.go
  • scripts/package-linux.sh
  • scripts/package-windows.ps1
✅ Files skipped from review due to trivial changes (1)
  • CHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • scripts/package-linux.sh
  • scripts/package-windows.ps1

Comment thread .github/workflows/release.yml
- Implemented a check to ensure the version format follows semantic versioning (X.Y.Z) in the release workflow.
- Added error handling to exit the process with an error message if the version format is invalid.
@enegalan enegalan merged commit 01c54d7 into main Jul 8, 2026
3 checks passed
@enegalan enegalan deleted the 41-automatize-version-releases branch July 8, 2026 15:11
@enegalan enegalan restored the 41-automatize-version-releases branch July 8, 2026 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Automatize version releases

1 participant