Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ permissions:
contents: write

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

jobs:
quality-gate:
Expand Down Expand Up @@ -165,10 +165,10 @@ jobs:
cp release-assets/neural-link-backend-windows/gestalt.exe release-assets/gestalt_timeline.exe
cp release-assets/neural-link-app-android/app-release.apk release-assets/app-release.apk
cp release-assets/gestalt-cli-windows/gestalt_cli.exe release-assets/gestalt-cli-windows.exe
mkdir -p release-assets/gestalt-cli-linux
cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/gestalt-cli-linux/gestalt_cli
mkdir -p release-assets/gestalt-cli-macos
cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/gestalt-cli-macos/gestalt_cli
mkdir -p release-assets/linux
cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/linux/gestalt
mkdir -p release-assets/macos
cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/macos/gestalt
Comment on lines +168 to +171
Copy link
Copy Markdown

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

🌐 Web query:

Does softprops/action-gh-releaseuse each file's basename as the uploaded asset name, and how does it handle two files with the same basename whenoverwrite_files is enabled?

💡 Result:

Yes, softprops/action-gh-release uses each file's basename (filename without path) as the uploaded asset name on GitHub Releases. When overwrite_files is enabled (default: true), it overwrites existing assets with the same name; the later file replaces the earlier one if basenames match.

Citations:


Duplicate release asset basenames will cause overwrite during release upload.

The files copied to release-assets/linux/gestalt and release-assets/macos/gestalt have identical basenames. Since softprops/action-gh-release uses each file's basename as the asset name and overwrites existing assets with the same name by default, the second file will overwrite the first during upload, causing loss of one binary.

Rename the files to unique platform-specific names:

Proposed fix
       - name: Prepare CLI Binaries
         run: |
           cp release-assets/neural-link-backend-windows/gestalt.exe release-assets/gestalt_timeline.exe
           cp release-assets/neural-link-app-android/app-release.apk release-assets/app-release.apk
           cp release-assets/gestalt-cli-windows/gestalt_cli.exe release-assets/gestalt-cli-windows.exe
           mkdir -p release-assets/linux
-          cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/linux/gestalt
+          cp release-assets/gestalt-cli-linux/gestalt_cli release-assets/linux/gestalt-linux
           mkdir -p release-assets/macos
-          cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/macos/gestalt
+          cp release-assets/gestalt-cli-macos/gestalt_cli release-assets/macos/gestalt-macos
@@
           files: |
             release-assets/gestalt_timeline.exe
             release-assets/app-release.apk
             release-assets/gestalt-cli-windows.exe
-            release-assets/linux/gestalt
-            release-assets/macos/gestalt
+            release-assets/linux/gestalt-linux
+            release-assets/macos/gestalt-macos
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release.yml around lines 168 - 171, The release asset copy
commands create identical basenames causing overwrite; update the cp targets to
give each platform a unique asset name (e.g., copy
release-assets/gestalt-cli-linux/gestalt_cli ->
release-assets/linux/gestalt-linux or gestalt_linux and
release-assets/gestalt-cli-macos/gestalt_cli ->
release-assets/macos/gestalt-macos or gestalt_macos) so
softprops/action-gh-release will upload distinct asset names; modify the two cp
commands (the ones copying gestalt_cli into release-assets/linux/gestalt and
release-assets/macos/gestalt) to use platform-specific filenames.


- name: Create Release
uses: softprops/action-gh-release@v1
Expand All @@ -181,7 +181,7 @@ jobs:
release-assets/gestalt_timeline.exe
release-assets/app-release.apk
release-assets/gestalt-cli-windows.exe
release-assets/gestalt-cli-linux
release-assets/gestalt-cli-macos
release-assets/linux/gestalt
release-assets/macos/gestalt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading
Loading