Skip to content

Release testing#870

Closed
Git-HimanshuRathi wants to merge 101 commits intoCircuitVerse:mainfrom
ThatDeparted2061:release-testing
Closed

Release testing#870
Git-HimanshuRathi wants to merge 101 commits intoCircuitVerse:mainfrom
ThatDeparted2061:release-testing

Conversation

@Git-HimanshuRathi
Copy link
Contributor

@Git-HimanshuRathi Git-HimanshuRathi commented Jan 25, 2026

Summary by CodeRabbit

  • New Features

    • Automated desktop release pipeline with version bumping, changelog generation, multi-platform builds and packaged release assets.
    • Added a desktop build orchestration script to support the release flow.
  • Tests

    • Added desktop simulator testing workflow.
    • Added web simulator testing workflow.
  • Chores

    • Enforced Conventional Commits for pull requests.
    • Updated a Tauri plugin dependency.
  • Documentation

    • Added a new changelog entry for v0.0.2.

✏️ Tip: You can customize this high-level summary in your review settings.

@netlify
Copy link

netlify bot commented Jan 25, 2026

Deploy Preview for circuitverse ready!

Name Link
🔨 Latest commit 5a513f8
🔍 Latest deploy log https://app.netlify.com/projects/circuitverse/deploys/6977174d20c442000899c508
😎 Deploy Preview https://deploy-preview-870--circuitverse.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 43 (🔴 down 1 from production)
Accessibility: 73 (no change from production)
Best Practices: 92 (no change from production)
SEO: 82 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 25, 2026

Walkthrough

Adds CI, release, and desktop build automation: four new GitHub Actions workflows (.github/workflows/Conventional-commits.yml, Tauri-Release.yml, Tauri-testing.yml, websimulatortest.yml); minor whitespace edits to existing workflows (codeql.yml, eslint.yml); a new Node build script (build-desktop.js) that prepares desktop assets; changelog entry for v0.0.2; and tauri-related metadata changes (src-tauri/Cargo.toml version and dependency update, src-tauri/tauri.conf.json version change).

Possibly related PRs

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Release testing' is vague and does not clearly convey what specific changes or functionality are being implemented in this pull request. Use a more descriptive title that clearly summarizes the main changes, such as 'Add GitHub Actions workflows for CI/CD and desktop app release pipeline' or 'Set up automated testing and release workflows for Tauri desktop app'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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 and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🤖 Fix all issues with AI agents
In @.github/workflows/Tauri-Release.yml:
- Around line 92-93: The sed pattern `sed -i "s/^version = \".*\"/version =
\"$VERSION_NO_V\"/" src-tauri/Cargo.toml` is too broad and may update the wrong
`version` key; narrow the update to the package section or use a dedicated tool.
Fix by replacing that single-line sed with either a command that targets the
`[package]` section (e.g., restrict the substitution to lines after the
`[package]` header) or invoke a toml-aware tool like `cargo set-version` (from
`cargo-edit`) or `toml-cli` to set the version in src-tauri/Cargo.toml; update
the workflow to run the chosen tool and remove the broad sed invocation.
- Around line 131-134: The checkout step is using ref: ${{ github.ref_name }}
which can miss the version-bump commit pushed as a tag; update the
actions/checkout@v4 invocation so it checks out the exact tag/ref and fetches
tags (e.g., replace ref: ${{ github.ref_name }} with ref: ${{ github.ref }} and
add fetch-depth: 0) to ensure the build job uses the tagged commit containing
the version bump.
- Around line 215-230: The current heredoc injecting ${{
needs.version.outputs.changelog }} into TEMP_CHANGELOG is unsafe for special
characters; replace the heredoc approach and instead write the changelog content
to the temp file using a safe file-write method (avoid unquoted/heredoc
expansion). Concretely, stop using the here-doc around TEMP_CHANGELOG and
instead write the workflow output into TEMP_CHANGELOG with a method that
preserves arbitrary content (e.g., use a single-step file write that safely
redirects the exact value of ${{ needs.version.outputs.changelog }} into
TEMP_CHANGELOG), then append CHANGELOG_FILE as before; ensure you update
references to TEMP_CHANGELOG and CHANGELOG_FILE and remove the heredoc block.

In @.github/workflows/Tauri-testing.yml:
- Around line 28-33: The workflow step using the archived action
actions-rs/toolchain@v1 must be replaced with the maintained
actions-rust-lang/setup-rust-toolchain@v1; edit the Install Rust step (the step
that currently uses actions-rs/toolchain@v1) to use
actions-rust-lang/setup-rust-toolchain@v1 and copy over the toolchain input
(e.g., toolchain: stable); remove or adapt any deprecated inputs
(confirm/replace override: true with the new action's equivalent if needed) and
ensure the step name stays descriptive (e.g., "Install Rust") so CI no longer
depends on the archived Node12-based action.

In `@CHANGELOG.md`:
- Line 1: The changelog entry header currently points at the forked repo and has
a misordered version tag; update the repository path in the markdown links from
"ThatDeparted2061/cv-frontend-vue" to "CircuitVerse/cv-frontend-vue" and fix the
version ordering/label so the header "##
[0.0.2](https://github.com/ThatDeparted2061/cv-frontend-vue/compare/v3.4.2...v0.0.2)"
correctly reflects the intended comparison (e.g., replace the repo slug and/or
swap/rename the version tokens so the link reads something like "##
[3.4.2](https://github.com/CircuitVerse/cv-frontend-vue/compare/vX...v3.4.2)" or
otherwise reorder entries to maintain descending semantic version order).

In `@src-tauri/Cargo.toml`:
- Around line 24-27: The tauri-plugin-fs dependency in Cargo.toml is pinned to a
non-existent version "2.3.1"; update the tauri-plugin-fs entry to a valid
published version (e.g., "2.3.0" to match Tauri 2.3.1 compatibility or "2.4.0"
if you intend the newer release) so Cargo can resolve it and the Cargo.lock
matches; modify the tauri-plugin-fs line in Cargo.toml accordingly.
🧹 Nitpick comments (5)
build-desktop.js (3)

2-3: Move fs import to the top with other requires.

The fs module is required on line 33, but it should be grouped with the other require statements at the top of the file for consistency and maintainability.

♻️ Suggested fix
 const os = require('os');
 const { execSync } = require('child_process');
+const fs = require('fs');

Then remove line 33.

Also applies to: 33-33


34-38: Fix inconsistent indentation.

Lines 35-38 use tab indentation while the rest of the file uses different indentation. This inconsistency makes the code harder to read.

♻️ Suggested fix
-	
-	if (!fs.existsSync('dist/index-cv.html')) {
-	  console.error('Error: dist/index-cv.html not found after build');
-	  process.exit(1);
-	}
+if (!fs.existsSync('dist/index-cv.html')) {
+  console.error('Error: dist/index-cv.html not found after build');
+  process.exit(1);
+}

40-44: Consider using fs.copyFileSync instead of platform-specific shell commands.

Since fs is already imported, you can use Node's native file operations which are more reliable and cross-platform without needing conditional logic.

♻️ Suggested fix
-if (platform === 'win32') {
-  runCommand('copy dist\\index-cv.html dist\\index.html');
-} else {
-  runCommand('cp dist/index-cv.html dist/index.html');
-}
+fs.copyFileSync('dist/index-cv.html', 'dist/index.html');
+console.log('Copied dist/index-cv.html to dist/index.html');
.github/workflows/Tauri-Release.yml (2)

255-274: Add validation for empty release assets.

If no artifacts are found matching the patterns, the release-assets directory will be empty, and the gh release create command will fail or create a release without assets. Consider adding a check.

♻️ Suggested fix
                   echo "Prepared release assets:"
                   ls -l release-assets/
+
+                  if [ -z "$(ls -A release-assets/)" ]; then
+                    echo "Error: No release assets found"
+                    exit 1
+                  fi

276-283: Remove unnecessary GitHub CLI installation step—it's pre-installed on ubuntu-latest runners.

The gh CLI is included on all GitHub-hosted Ubuntu runners as of January 2026, making this installation step redundant and adding unnecessary build time.

♻️ Suggested fix - remove the step
-            - name: Install GitHub CLI
-              run: |
-                  type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
-                  curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
-                  && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
-                  && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
-                  && sudo apt update \
-                  && sudo apt install gh -y
-
             - name: Create GitHub Release

Comment on lines +92 to +93
# Update src-tauri/Cargo.toml
sed -i "s/^version = \".*\"/version = \"$VERSION_NO_V\"/" src-tauri/Cargo.toml
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

sed pattern may update the wrong version field in Cargo.toml.

The pattern ^version = ".*" will match the first version line in Cargo.toml, which should be the package version. However, if the file structure changes or there are commented version lines, this could update the wrong field. Consider making the pattern more specific or using a dedicated tool like cargo set-version from cargo-edit.

♻️ Alternative using toml-cli or more specific sed
-                  sed -i "s/^version = \".*\"/version = \"$VERSION_NO_V\"/" src-tauri/Cargo.toml
+                  # Update only the package version (first occurrence in [package] section)
+                  sed -i '0,/^version = ".*"/{s/^version = ".*"/version = "'"$VERSION_NO_V"'"/}' src-tauri/Cargo.toml
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Update src-tauri/Cargo.toml
sed -i "s/^version = \".*\"/version = \"$VERSION_NO_V\"/" src-tauri/Cargo.toml
# Update only the package version (first occurrence in [package] section)
sed -i '0,/^version = ".*"/{s/^version = ".*"/version = "'"$VERSION_NO_V"'"/}' src-tauri/Cargo.toml
🤖 Prompt for AI Agents
In @.github/workflows/Tauri-Release.yml around lines 92 - 93, The sed pattern
`sed -i "s/^version = \".*\"/version = \"$VERSION_NO_V\"/" src-tauri/Cargo.toml`
is too broad and may update the wrong `version` key; narrow the update to the
package section or use a dedicated tool. Fix by replacing that single-line sed
with either a command that targets the `[package]` section (e.g., restrict the
substitution to lines after the `[package]` header) or invoke a toml-aware tool
like `cargo set-version` (from `cargo-edit`) or `toml-cli` to set the version in
src-tauri/Cargo.toml; update the workflow to run the chosen tool and remove the
broad sed invocation.

Comment on lines +215 to +230
- name: Update Repository Changelog
run: |
set -euo pipefail
CHANGELOG_FILE="CHANGELOG.md"
TEMP_CHANGELOG="$(mktemp)"

cat <<'EOF' > "$TEMP_CHANGELOG"
${{ needs.version.outputs.changelog }}
EOF

if [ -f "$CHANGELOG_FILE" ]; then
printf "\n" >> "$TEMP_CHANGELOG"
cat "$CHANGELOG_FILE" >> "$TEMP_CHANGELOG"
fi

mv "$TEMP_CHANGELOG" "$CHANGELOG_FILE"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Heredoc with workflow output may have issues with special characters.

The changelog output is inserted directly into a heredoc. If the changelog contains characters like EOF, backticks, or other shell special characters, this could cause parsing issues. Consider using a file-based approach or proper escaping.

♻️ Alternative using printf with proper escaping
             - name: Update Repository Changelog
               run: |
                   set -euo pipefail
                   CHANGELOG_FILE="CHANGELOG.md"
                   TEMP_CHANGELOG="$(mktemp)"
 
-                  cat <<'EOF' > "$TEMP_CHANGELOG"
-                  ${{ needs.version.outputs.changelog }}
-                  EOF
+                  # Write changelog content safely
+                  printf '%s\n' '${{ needs.version.outputs.changelog }}' > "$TEMP_CHANGELOG"
 
                   if [ -f "$CHANGELOG_FILE" ]; then
                     printf "\n" >> "$TEMP_CHANGELOG"
                     cat "$CHANGELOG_FILE" >> "$TEMP_CHANGELOG"
                   fi
 
                   mv "$TEMP_CHANGELOG" "$CHANGELOG_FILE"

Note: Even this approach may have issues. Consider writing the changelog to a file in a previous step using GitHub Actions' built-in file writing capabilities.

🤖 Prompt for AI Agents
In @.github/workflows/Tauri-Release.yml around lines 215 - 230, The current
heredoc injecting ${{ needs.version.outputs.changelog }} into TEMP_CHANGELOG is
unsafe for special characters; replace the heredoc approach and instead write
the changelog content to the temp file using a safe file-write method (avoid
unquoted/heredoc expansion). Concretely, stop using the here-doc around
TEMP_CHANGELOG and instead write the workflow output into TEMP_CHANGELOG with a
method that preserves arbitrary content (e.g., use a single-step file write that
safely redirects the exact value of ${{ needs.version.outputs.changelog }} into
TEMP_CHANGELOG), then append CHANGELOG_FILE as before; ensure you update
references to TEMP_CHANGELOG and CHANGELOG_FILE and remove the heredoc block.

Comment on lines +28 to +33
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

cat .github/workflows/Tauri-testing.yml | head -50

Repository: CircuitVerse/cv-frontend-vue

Length of output: 1227


🌐 Web query:

actions-rs/toolchain deprecated 2025 GitHub Actions Rust

💡 Result:

  • actions-rs/toolchain is effectively deprecated because the repo was archived (read-only) on Oct 13, 2023. (github.com)
  • It is a JavaScript action that declares runs: using: 'node12'. (raw.githubusercontent.com)
  • GitHub Actions has been retiring old Node runtimes: Node12 → Node16 enforcement (June 14, 2023), then Node16 end-of-life in the Actions runner (Nov 12, 2024), and moving actions to Node20 by default (June 3, 2024 enforcement). This is why people started calling actions-rs/toolchain “deprecated” and seeing runtime/deprecation issues by 2025. (github.blog)

Recommended replacements (maintained):

Citations:


🌐 Web query:

dtolnay/rust-toolchain GitHub Actions recommended replacement

💡 Result:

A commonly recommended drop-in replacement is:

  • actions-rust-lang/setup-rust-toolchain@v1 — it installs Rust via rustup, supports rust-toolchain(.toml) auto-detection, and is explicitly “heavily inspired by” dtolnay/rust-toolchain. [1]

Example:

- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
  with:
    toolchain: stable        # or omit if you have rust-toolchain(.toml)
    components: clippy,rustfmt
    target: wasm32-unknown-unknown

Sources: [1] (github.com)

Citations:


Update deprecated Rust toolchain action (archived repository with unsupported Node12 runtime).

actions-rs/toolchain@v1 is archived as of October 2023 and uses node12, which GitHub Actions retired in June 2023 and removed entirely in November 2024. Workflows using this action will fail or show deprecation warnings on current runners. Replace with actions-rust-lang/setup-rust-toolchain@v1 (maintained and recommended).

🛠️ Suggested replacement
      - name: Install Rust
-       uses: actions-rs/toolchain@v1
+       uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          override: true
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: stable
override: true
🧰 Tools
🪛 actionlint (1.7.10)

29-29: the runner of "actions-rs/toolchain@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In @.github/workflows/Tauri-testing.yml around lines 28 - 33, The workflow step
using the archived action actions-rs/toolchain@v1 must be replaced with the
maintained actions-rust-lang/setup-rust-toolchain@v1; edit the Install Rust step
(the step that currently uses actions-rs/toolchain@v1) to use
actions-rust-lang/setup-rust-toolchain@v1 and copy over the toolchain input
(e.g., toolchain: stable); remove or adapt any deprecated inputs
(confirm/replace override: true with the new action's equivalent if needed) and
ensure the step name stays descriptive (e.g., "Install Rust") so CI no longer
depends on the archived Node12-based action.

@@ -0,0 +1,369 @@
## [0.0.2](https://github.com/ThatDeparted2061/cv-frontend-vue/compare/v3.4.2...v0.0.2) (2026-01-11)
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, let's check if CHANGELOG.md exists and read its contents
if [ -f "CHANGELOG.md" ]; then
  wc -l CHANGELOG.md
  echo "---"
  head -50 CHANGELOG.md
fi

Repository: CircuitVerse/cv-frontend-vue

Length of output: 2644


🏁 Script executed:

#!/bin/bash
# Check git log to understand the PR context and previous versions
git log --oneline -10 2>/dev/null || echo "Git history not available"
echo "---"
# Check if there's a package.json with version info
if [ -f "package.json" ]; then
  cat package.json | head -20
fi

Repository: CircuitVerse/cv-frontend-vue

Length of output: 772


🏁 Script executed:

#!/bin/bash
# Look for PR description or any context about release testing
git log --all --oneline | head -20
# Check branch info
git branch -a 2>/dev/null | head -10

Repository: CircuitVerse/cv-frontend-vue

Length of output: 1509


🏁 Script executed:

#!/bin/bash
# Check more of the CHANGELOG to confirm pattern throughout file
grep -c "ThatDeparted2061/cv-frontend-vue" CHANGELOG.md
echo "---"
# Verify this PR is targeting CircuitVerse repo
git remote -v 2>/dev/null | head -5

Repository: CircuitVerse/cv-frontend-vue

Length of output: 224


Update changelog repository URLs and fix version ordering.

All 201 changelog entries link to ThatDeparted2061/cv-frontend-vue, but this PR targets CircuitVerse/cv-frontend-vue. Replace fork URLs with the correct CircuitVerse repository URLs.

Additionally, version 0.0.2 appears as the latest entry but precedes 3.4.2 in version numbering, creating a confusing version history. Reorder entries or correct the version if this is unintended.

🤖 Prompt for AI Agents
In `@CHANGELOG.md` at line 1, The changelog entry header currently points at the
forked repo and has a misordered version tag; update the repository path in the
markdown links from "ThatDeparted2061/cv-frontend-vue" to
"CircuitVerse/cv-frontend-vue" and fix the version ordering/label so the header
"##
[0.0.2](https://github.com/ThatDeparted2061/cv-frontend-vue/compare/v3.4.2...v0.0.2)"
correctly reflects the intended comparison (e.g., replace the repo slug and/or
swap/rename the version tokens so the link reads something like "##
[3.4.2](https://github.com/CircuitVerse/cv-frontend-vue/compare/vX...v3.4.2)" or
otherwise reorder entries to maintain descending semantic version order).

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src-tauri/Cargo.toml`:
- Line 27: Cargo.toml lists tauri-plugin-fs = "2.3.0" but the lockfile is pinned
to 2.2.0; update the lockfile by running cargo update -p tauri-plugin-fs in the
src-tauri directory to sync Cargo.lock with the declared dependency version
(ensure tauri-plugin-fs ends up at 2.3.0), then commit the updated Cargo.lock so
CI uses the correct pinned version.

tauri-plugin-http = "2"
tauri-plugin-log = "2.0.0-rc"
tauri-plugin-fs = "2"
tauri-plugin-fs = "2.3.0"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check tauri-plugin-fs version in lockfiles (if present)
if [ -f "Cargo.lock" ]; then
  echo "=== Cargo.lock ==="
  rg -n -A3 'name = "tauri-plugin-fs"' Cargo.lock | head -20
fi

if [ -f "src-tauri/Cargo.lock" ]; then
  echo "=== src-tauri/Cargo.lock ==="
  rg -n -A3 'name = "tauri-plugin-fs"' src-tauri/Cargo.lock | head -20
fi

Repository: CircuitVerse/cv-frontend-vue

Length of output: 306


Update src-tauri/Cargo.lock to pin tauri-plugin-fs version 2.3.0.

The lockfile currently pins tauri-plugin-fs to 2.2.0, but Cargo.toml specifies 2.3.0. This mismatch will cause CI/release builds to use the older version, breaking build determinism. Run cargo update -p tauri-plugin-fs in the src-tauri directory to sync the lockfile.

🤖 Prompt for AI Agents
In `@src-tauri/Cargo.toml` at line 27, Cargo.toml lists tauri-plugin-fs = "2.3.0"
but the lockfile is pinned to 2.2.0; update the lockfile by running cargo update
-p tauri-plugin-fs in the src-tauri directory to sync Cargo.lock with the
declared dependency version (ensure tauri-plugin-fs ends up at 2.3.0), then
commit the updated Cargo.lock so CI uses the correct pinned version.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In @.github/workflows/Tauri-Release.yml:
- Around line 265-268: The step named "Prepare Release Assets" currently
swallows errors with the trailing "|| true" on the find/cp command and can
produce an empty release silently; remove the silent suppression and add
validation after the find/cp (reference the "find artifacts -type f ... -exec cp
{} release-assets/ \;" invocation) to check that release-assets contains at
least one artifact and fail the job with a clear message if none were copied so
the workflow surfaces missing build artifacts.
- Around line 248-249: The git pull uses --rebase which can fail on conflicting
commits from the version job; update the step that runs "git pull origin ${{
github.ref_name }} --rebase" to use a non-rebase merge strategy (remove --rebase
/ add --no-rebase) or alternatively enforce exclusive workflow execution by
adding a concurrency group to the workflow; modify the command referenced ("git
pull origin ${{ github.ref_name }} --rebase") or add a workflow-level
concurrency key to prevent concurrent pushes so rebases won't conflict.
- Around line 97-110: The workflow step "Generate Changelog" (id: changelog)
currently sets release-count: 0 which regenerates the changelog for all
releases; change the release-count value to 1 (or another desired number) to
only include changes since the last release, updating the release-count field in
that action's with: block accordingly.
- Around line 140-143: Add an inline comment above the "Setup Node.js" step that
uses actions/setup-node@v4 and node-version: 22 (the step named "Setup Node.js")
explaining why Node.js 22 is required for the Tauri release build (e.g.,
compatibility with Tauri bundling/packaging tools or native modules) and
reference that development targets Node.js 18 elsewhere; mirror the style/level
of detail used in Tauri-testing.yml's "Use Node.js 22" comment so readers
understand the intentional version divergence.
♻️ Duplicate comments (6)
src-tauri/Cargo.toml (1)

27-27: Pinning tauri-plugin-fs to 2.3.0 improves reproducibility.

Specifying an exact version instead of "2" provides better build determinism. The Cargo.lock mismatch has already been flagged in a previous review.

CHANGELOG.md (1)

1-3: Repository URLs and version ordering issues already flagged.

The concerns about ThatDeparted2061/cv-frontend-vue URLs (should be CircuitVerse/cv-frontend-vue) and the confusing version ordering (0.0.2 before 3.4.2) have been raised in a previous review. These should be addressed before merging.

.github/workflows/Tauri-Release.yml (4)

92-93: sed pattern fragility already flagged.

The concern about the broad sed pattern potentially matching wrong version fields has been raised in a previous review.


131-138: Git pull workaround for stale checkout, but checkout ref issue remains.

The git pull on line 138 attempts to fetch the version bump commit, but this is fragile. The previous review flagged that checkout should use the tag directly. The pull could fail if there are merge conflicts or if the ref has diverged.


231-233: Heredoc special character handling already flagged.

The concern about the changelog content potentially containing special characters that break the heredoc has been raised in a previous review.


304-307: Same heredoc issue for release notes.

This heredoc for RELEASE_NOTES.md has the same vulnerability to special characters as the changelog heredoc flagged earlier. The changelog content could contain EOF or shell metacharacters.

♻️ Use environment file approach
                   CHANGELOG_NOTES_FILE="RELEASE_NOTES.md"
-                  cat <<'EOF' > "$CHANGELOG_NOTES_FILE"
-                  ${{ needs.version.outputs.changelog }}
-                  EOF
+                  # Use GitHub Actions environment file for safe content handling
+                  echo '${{ needs.version.outputs.changelog }}' > "$CHANGELOG_NOTES_FILE"

Note: For truly safe handling of arbitrary content, consider writing the changelog to a file in the version job and passing it as an artifact.

🧹 Nitpick comments (3)
CHANGELOG.md (1)

7-7: Minor: Static analysis flagged style nits in changelog entries.

The auto-generated changelog has minor style issues (e.g., "macos" should be "macOS", "github" should be "GitHub"). These are low priority given the content is auto-generated from commit messages.

.github/workflows/Tauri-Release.yml (2)

181-185: Consider pinning Chocolatey package versions for reproducibility.

The Windows dependency installation uses choco install -y without version pinning. For consistent CI builds, consider specifying versions (e.g., wixtoolset --version=X.Y.Z).


286-293: Remove unnecessary GitHub CLI installation step.

The gh CLI is pre-installed on GitHub-hosted ubuntu-latest runners. This installation step is redundant and adds build time.

♻️ Remove this step
-            - name: Install GitHub CLI
-              run: |
-                  type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
-                  curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
-                  && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
-                  && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
-                  && sudo apt update \
-                  && sudo apt install gh -y
-
             - name: Create GitHub Release

Comment on lines +97 to +110
- name: Generate Changelog
id: changelog
uses: TriPSs/conventional-changelog-action@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
skip-on-empty: 'false'
skip-commit: 'true'
skip-version-file: 'true'
skip-git-pull: 'true'
skip-tag: 'true'
git-push: 'false'
output-file: 'false'
release-count: 0
tag-prefix: 'v'
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

TriPSs conventional-changelog-action release-count option documentation

💡 Result:

release-count is an input to TriPSs/conventional-changelog-action that controls how many past releases are kept in the generated CHANGELOG.md.

  • Meaning: “Number of releases to preserve in changelog”
  • Default: 5
  • Special value: 0 = regenerate the changelog for all releases
  • Note: It has no effect if input-file is used (because the action prepends to the existing file content instead). [1]

Example

- uses: TriPSs/conventional-changelog-action@v6
  with:
    release-count: 0

Source: TriPSs/conventional-changelog-action README (Inputs section). [1]


release-count: 0 regenerates the changelog for all releases.

Setting release-count: 0 includes changelog entries for all releases in the repository. If you want changes only since the last release, set this to 1 instead. The default value is 5, which preserves the last 5 releases.

🤖 Prompt for AI Agents
In @.github/workflows/Tauri-Release.yml around lines 97 - 110, The workflow step
"Generate Changelog" (id: changelog) currently sets release-count: 0 which
regenerates the changelog for all releases; change the release-count value to 1
(or another desired number) to only include changes since the last release,
updating the release-count field in that action's with: block accordingly.

Comment on lines +140 to +143
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check package.json for Node.js version requirements
if [ -f "package.json" ]; then
  echo "=== package.json engines field ==="
  jq '.engines' package.json 2>/dev/null || echo "No engines field found"
  
  echo ""
  echo "=== .nvmrc or .node-version ==="
  cat .nvmrc 2>/dev/null || cat .node-version 2>/dev/null || echo "No version file found"
fi

Repository: CircuitVerse/cv-frontend-vue

Length of output: 166


🏁 Script executed:

# Check other workflows and their Node.js versions
echo "=== All workflow files ==="
find .github/workflows -name "*.yml" -o -name "*.yaml" | head -20

echo ""
echo "=== Node versions in all workflows ==="
rg "node-version:" .github/workflows/ -A 1 -B 1

Repository: CircuitVerse/cv-frontend-vue

Length of output: 1070


Add explanatory comment for Node.js 22 usage in Tauri-Release workflow.

Node.js 22 is used intentionally in multiple CI workflows (Tauri-testing.yml has an explicit comment "Use Node.js 22"), but Tauri-Release.yml lacks this explanation. Add a similar comment to clarify why Node.js 22 is required for the release build, especially since the project targets Node.js 18 for development (as confirmed by cross-env version constraints).

🤖 Prompt for AI Agents
In @.github/workflows/Tauri-Release.yml around lines 140 - 143, Add an inline
comment above the "Setup Node.js" step that uses actions/setup-node@v4 and
node-version: 22 (the step named "Setup Node.js") explaining why Node.js 22 is
required for the Tauri release build (e.g., compatibility with Tauri
bundling/packaging tools or native modules) and reference that development
targets Node.js 18 elsewhere; mirror the style/level of detail used in
Tauri-testing.yml's "Use Node.js 22" comment so readers understand the
intentional version divergence.

Comment on lines +248 to +249
# Pull latest changes (version job pushed new commits)
git pull origin ${{ github.ref_name }} --rebase
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

git pull --rebase could fail if version job pushed conflicting changes.

If the version job's commit conflicts with any concurrent changes to the branch, the rebase will fail. Consider using --no-rebase with a merge strategy, or ensure the workflow has exclusive access via the concurrency group.

♻️ Alternative: use merge instead of rebase
                   # Pull latest changes (version job pushed new commits)
-                  git pull origin ${{ github.ref_name }} --rebase
+                  git pull origin ${{ github.ref_name }} --no-rebase
🤖 Prompt for AI Agents
In @.github/workflows/Tauri-Release.yml around lines 248 - 249, The git pull
uses --rebase which can fail on conflicting commits from the version job; update
the step that runs "git pull origin ${{ github.ref_name }} --rebase" to use a
non-rebase merge strategy (remove --rebase / add --no-rebase) or alternatively
enforce exclusive workflow execution by adding a concurrency group to the
workflow; modify the command referenced ("git pull origin ${{ github.ref_name }}
--rebase") or add a workflow-level concurrency key to prevent concurrent pushes
so rebases won't conflict.

Comment on lines +265 to +268
- name: Prepare Release Assets
run: |
mkdir -p release-assets
find artifacts -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" -o -name "*.dmg" \) -exec cp {} release-assets/ \; || true
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Silent failure on missing release assets.

The || true on line 268 silently ignores errors when no matching files are found. If builds fail to produce expected artifacts, this could result in an empty release without clear indication.

♻️ Add validation after find command
             - name: Prepare Release Assets
               run: |
                   mkdir -p release-assets
-                  find artifacts -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" -o -name "*.dmg" \) -exec cp {} release-assets/ \; || true
+                  find artifacts -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" -o -name "*.dmg" \) -exec cp {} release-assets/ \;
+
+                  # Validate that we have at least some release assets
+                  if [ -z "$(ls -A release-assets 2>/dev/null)" ]; then
+                    echo "::warning::No release assets found. Check build artifacts."
+                  fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Prepare Release Assets
run: |
mkdir -p release-assets
find artifacts -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" -o -name "*.dmg" \) -exec cp {} release-assets/ \; || true
- name: Prepare Release Assets
run: |
mkdir -p release-assets
find artifacts -type f \( -name "*.deb" -o -name "*.AppImage" -o -name "*.msi" -o -name "*.dmg" \) -exec cp {} release-assets/ \;
# Validate that we have at least some release assets
if [ -z "$(ls -A release-assets 2>/dev/null)" ]; then
echo "::warning::No release assets found. Check build artifacts."
fi
🤖 Prompt for AI Agents
In @.github/workflows/Tauri-Release.yml around lines 265 - 268, The step named
"Prepare Release Assets" currently swallows errors with the trailing "|| true"
on the find/cp command and can produce an empty release silently; remove the
silent suppression and add validation after the find/cp (reference the "find
artifacts -type f ... -exec cp {} release-assets/ \;" invocation) to check that
release-assets contains at least one artifact and fail the job with a clear
message if none were copied so the workflow surfaces missing build artifacts.

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.

3 participants