Skip to content

Conversation

@evereq
Copy link
Member

@evereq evereq commented Dec 20, 2025

PR

Please note: we will close your PR without comment if you do not check the boxes above and provide ALL requested information.



Summary by cubic

Adds multi-arch builds (x64 and arm64) and arch-specific artifact naming across apps and servers, plus Snapcraft integration for Linux packaging. This broadens platform support and makes prod/stage releases consistent.

  • New Features

    • mac builds now target x64 and arm64 for Agent, Desktop, Desktop Timer, Server, API, and MCP.
    • Artifact names include arch (name-arch-version.ext), including DMG outputs.
    • Linux: added arch-specific release scripts and installed Snapcraft in CI for snap builds.
  • Refactors

    • Standardized GitHub workflows and triggers; consistent quoting and job setup.
    • Pinned Node to 22.21.1 in build jobs and fixed node-gyp/Python setup.
    • Updated cspell dictionary (added required terms, removed unused).

Written for commit 1568c23. Summary will update automatically on new commits.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 20, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

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

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.

@evereq evereq merged commit d043e04 into stage-apps Dec 20, 2025
19 of 24 checks passed
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

8 issues found across 20 files

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name=".github/workflows/server-api-prod.yml">

<violation number="1" location=".github/workflows/server-api-prod.yml:132">
P0: Function name mismatch: The script exports `serverapi` (lowercase) but this line calls `serverApi` (camelCase), which doesn&#39;t exist. This will cause the build to fail with `TypeError: script.serverApi is not a function`. Change to `script.serverapi(true)` to match the other jobs.</violation>
</file>

<file name=".github/workflows/server-mcp-prod.yml">

<violation number="1" location=".github/workflows/server-mcp-prod.yml:132">
P0: Function name mismatch: `serverMcp` should be `servermcp`. The exported function in `.scripts/bump-version-electron.js` is `servermcp` (all lowercase), but this calls `serverMcp` (camelCase), which will be undefined and cause the build to fail.</violation>
</file>

<file name=".github/workflows/server-api-stage.yml">

<violation number="1" location=".github/workflows/server-api-stage.yml:132">
P0: Function name mismatch: `serverApi` is undefined. The script exports `serverapi` (all lowercase), not `serverApi`. This will cause a runtime error when the arm64 jobs execute.</violation>
</file>

<file name=".github/workflows/server-mcp-stage.yml">

<violation number="1" location=".github/workflows/server-mcp-stage.yml:132">
P0: Function name mismatch: the script exports `servermcp` but this calls `serverMcp`. This will cause a runtime error.</violation>
</file>

<file name=".github/workflows/agent-stage.yml">

<violation number="1" location=".github/workflows/agent-stage.yml:135">
P1: Environment variable names are inconsistent with what the `bump-version-electron.js` script expects. The script reads `AGENT_APP_NAME`, `AGENT_APP_DESCRIPTION`, and `AGENT_APP_ID`, but this job defines `DESKTOP_AGENT_APP_NAME`, `DESKTOP_AGENT_APP_DESCRIPTION`, and `DESKTOP_AGENT_APP_ID`. This will cause the bump version step to fail or produce incorrect results.</violation>
</file>

<file name="apps/agent/src/package.json">

<violation number="1" location="apps/agent/src/package.json:92">
P2: The `snap` target is missing explicit architecture specification, unlike all other Linux targets. This inconsistency means snap packages won&#39;t be built for both x64 and arm64 in the same build run. If multi-arch snap builds are intended, add the `arch` array; otherwise, consider adding a comment explaining why snap is single-arch.</violation>
</file>

<file name=".github/workflows/agent-prod.yml">

<violation number="1" location=".github/workflows/agent-prod.yml:135">
P1: The environment variables `DESKTOP_AGENT_APP_NAME`, `DESKTOP_AGENT_APP_DESCRIPTION`, and `DESKTOP_AGENT_APP_ID` don&#39;t match what the bump-version-electron.js script expects. The script reads `AGENT_APP_NAME`, `AGENT_APP_DESCRIPTION`, and `AGENT_APP_ID`. This will cause the version bump to fail or use undefined values.</violation>
</file>

<file name=".github/workflows/server-stage.yml">

<violation number="1" location=".github/workflows/server-stage.yml:132">
P1: Inconsistent `isProd` parameter: ARM64 builds use `script.server(true)` (production release) while all other builds in this stage workflow use `script.server(false)` (prerelease). This will cause ARM64 artifacts to be published as full releases instead of prereleases.</violation>
</file>

Reply to cubic to teach it or ask questions. Re-run a review with @cubic-dev-ai review this PR

with:
script: |
const script = require('./.scripts/bump-version-electron.js')
console.log(script.serverApi(true))
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P0: Function name mismatch: The script exports serverapi (lowercase) but this line calls serverApi (camelCase), which doesn't exist. This will cause the build to fail with TypeError: script.serverApi is not a function. Change to script.serverapi(true) to match the other jobs.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/server-api-prod.yml, line 132:

<comment>Function name mismatch: The script exports `serverapi` (lowercase) but this line calls `serverApi` (camelCase), which doesn&#39;t exist. This will cause the build to fail with `TypeError: script.serverApi is not a function`. Change to `script.serverapi(true)` to match the other jobs.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+        with:
+          script: |
+            const script = require(&#39;./.scripts/bump-version-electron.js&#39;)
+            console.log(script.serverApi(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
</file context>
Suggested change
console.log(script.serverApi(true))
console.log(script.serverapi(true))
Fix with Cubic

with:
script: |
const script = require('./.scripts/bump-version-electron.js')
console.log(script.serverMcp(true))
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P0: Function name mismatch: serverMcp should be servermcp. The exported function in .scripts/bump-version-electron.js is servermcp (all lowercase), but this calls serverMcp (camelCase), which will be undefined and cause the build to fail.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/server-mcp-prod.yml, line 132:

<comment>Function name mismatch: `serverMcp` should be `servermcp`. The exported function in `.scripts/bump-version-electron.js` is `servermcp` (all lowercase), but this calls `serverMcp` (camelCase), which will be undefined and cause the build to fail.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+        with:
+          script: |
+            const script = require(&#39;./.scripts/bump-version-electron.js&#39;)
+            console.log(script.serverMcp(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
</file context>
Suggested change
console.log(script.serverMcp(true))
console.log(script.servermcp(true))
Fix with Cubic

with:
script: |
const script = require('./.scripts/bump-version-electron.js')
console.log(script.serverApi(true))
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P0: Function name mismatch: serverApi is undefined. The script exports serverapi (all lowercase), not serverApi. This will cause a runtime error when the arm64 jobs execute.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/server-api-stage.yml, line 132:

<comment>Function name mismatch: `serverApi` is undefined. The script exports `serverapi` (all lowercase), not `serverApi`. This will cause a runtime error when the arm64 jobs execute.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+        with:
+          script: |
+            const script = require(&#39;./.scripts/bump-version-electron.js&#39;)
+            console.log(script.serverApi(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
</file context>
Suggested change
console.log(script.serverApi(true))
console.log(script.serverapi(true))
Fix with Cubic

with:
script: |
const script = require('./.scripts/bump-version-electron.js')
console.log(script.serverMcp(true))
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P0: Function name mismatch: the script exports servermcp but this calls serverMcp. This will cause a runtime error.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/server-mcp-stage.yml, line 132:

<comment>Function name mismatch: the script exports `servermcp` but this calls `serverMcp`. This will cause a runtime error.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+        with:
+          script: |
+            const script = require(&#39;./.scripts/bump-version-electron.js&#39;)
+            console.log(script.serverMcp(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
</file context>
Suggested change
console.log(script.serverMcp(true))
console.log(script.servermcp(true))
Fix with Cubic

console.log(script.agent(true))
env:
PROJECT_REPO: 'https://github.com/ever-co/ever-gauzy.git'
DESKTOP_AGENT_APP_NAME: 'ever-gauzy-agent'
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P1: Environment variable names are inconsistent with what the bump-version-electron.js script expects. The script reads AGENT_APP_NAME, AGENT_APP_DESCRIPTION, and AGENT_APP_ID, but this job defines DESKTOP_AGENT_APP_NAME, DESKTOP_AGENT_APP_DESCRIPTION, and DESKTOP_AGENT_APP_ID. This will cause the bump version step to fail or produce incorrect results.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/agent-stage.yml, line 135:

<comment>Environment variable names are inconsistent with what the `bump-version-electron.js` script expects. The script reads `AGENT_APP_NAME`, `AGENT_APP_DESCRIPTION`, and `AGENT_APP_ID`, but this job defines `DESKTOP_AGENT_APP_NAME`, `DESKTOP_AGENT_APP_DESCRIPTION`, and `DESKTOP_AGENT_APP_ID`. This will cause the bump version step to fail or produce incorrect results.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+            console.log(script.agent(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
+          DESKTOP_AGENT_APP_NAME: &#39;ever-gauzy-agent&#39;
+          COMPANY_SITE_LINK: &#39;https://gauzy.co&#39;
+          DESKTOP_AGENT_APP_DESCRIPTION: &#39;Ever Gauzy Agent&#39;
</file context>
Fix with Cubic

"AppImage",
"deb",
"tar.gz"
{
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P2: The snap target is missing explicit architecture specification, unlike all other Linux targets. This inconsistency means snap packages won't be built for both x64 and arm64 in the same build run. If multi-arch snap builds are intended, add the arch array; otherwise, consider adding a comment explaining why snap is single-arch.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At apps/agent/src/package.json, line 92:

<comment>The `snap` target is missing explicit architecture specification, unlike all other Linux targets. This inconsistency means snap packages won&#39;t be built for both x64 and arm64 in the same build run. If multi-arch snap builds are intended, add the `arch` array; otherwise, consider adding a comment explaining why snap is single-arch.</comment>

<file context>
@@ -82,15 +89,49 @@
-				&quot;AppImage&quot;,
-				&quot;deb&quot;,
-				&quot;tar.gz&quot;
+				{
+					&quot;target&quot;: &quot;deb&quot;,
+					&quot;arch&quot;: [
</file context>
Fix with Cubic

console.log(script.agent(true))
env:
PROJECT_REPO: 'https://github.com/ever-co/ever-gauzy.git'
DESKTOP_AGENT_APP_NAME: 'ever-gauzy-agent'
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P1: The environment variables DESKTOP_AGENT_APP_NAME, DESKTOP_AGENT_APP_DESCRIPTION, and DESKTOP_AGENT_APP_ID don't match what the bump-version-electron.js script expects. The script reads AGENT_APP_NAME, AGENT_APP_DESCRIPTION, and AGENT_APP_ID. This will cause the version bump to fail or use undefined values.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/agent-prod.yml, line 135:

<comment>The environment variables `DESKTOP_AGENT_APP_NAME`, `DESKTOP_AGENT_APP_DESCRIPTION`, and `DESKTOP_AGENT_APP_ID` don&#39;t match what the bump-version-electron.js script expects. The script reads `AGENT_APP_NAME`, `AGENT_APP_DESCRIPTION`, and `AGENT_APP_ID`. This will cause the version bump to fail or use undefined values.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+            console.log(script.agent(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
+          DESKTOP_AGENT_APP_NAME: &#39;ever-gauzy-agent&#39;
+          COMPANY_SITE_LINK: &#39;https://gauzy.co&#39;
+          DESKTOP_AGENT_APP_DESCRIPTION: &#39;Ever Gauzy Agent&#39;
</file context>
Fix with Cubic

with:
script: |
const script = require('./.scripts/bump-version-electron.js')
console.log(script.server(true))
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Dec 20, 2025

Choose a reason for hiding this comment

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

P1: Inconsistent isProd parameter: ARM64 builds use script.server(true) (production release) while all other builds in this stage workflow use script.server(false) (prerelease). This will cause ARM64 artifacts to be published as full releases instead of prereleases.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/server-stage.yml, line 132:

<comment>Inconsistent `isProd` parameter: ARM64 builds use `script.server(true)` (production release) while all other builds in this stage workflow use `script.server(false)` (prerelease). This will cause ARM64 artifacts to be published as full releases instead of prereleases.</comment>

<file context>
@@ -57,34 +60,106 @@ jobs:
+        with:
+          script: |
+            const script = require(&#39;./.scripts/bump-version-electron.js&#39;)
+            console.log(script.server(true))
+        env:
+          PROJECT_REPO: &#39;https://github.com/ever-co/ever-gauzy.git&#39;
</file context>
Suggested change
console.log(script.server(true))
console.log(script.server(false))
Fix with Cubic

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Dec 20, 2025

# Multi-Architecture Build Support for Gauzy Applications

Overview

This PR standardizes and expands the build configuration across all Gauzy applications (Agent, Desktop, Desktop Timer, Server API, and MCP) to support multi-architecture deployments. The changes enable native builds for both x64 and arm64 architectures across all major platforms.

Key Changes

Multi-Architecture Support

- **macOS**: Universal binaries supporting both x64 and Apple Silicon (arm64) architectures - **Windows**: Added arm64 support alongside existing x64 builds - **Linux**: Comprehensive architecture support (x64, arm64) across multiple package formats

Artifact Naming Standardization

All applications now use consistent architecture-specific naming: `${name}-${arch}-${version}.${ext}`

This prevents conflicts between different architecture builds and provides clear identification of platform-specific artifacts.

Linux Distribution Enhancement

Expanded Linux packaging to support broader distribution channels: - **deb** packages (Debian/Ubuntu) - **rpm** packages (Red Hat/Fedora) - **snap** packages (Snapcraft Store) - **AppImage** portable applications - **tar.gz** archives

Added RPM-specific configuration to prevent build ID conflicts with --rpm-rpmbuild-define "_build_id_links none".

Platform-Specific Improvements

- **macOS**: Improved permission descriptions (NSUsageDescription) for better user experience - **Linux**: Snapcraft integration for modern package distribution - **All Platforms**: Consistent build artifact organization and naming

Technical Details

The changes maintain backward compatibility while extending platform support. Each application's package.json now includes:

{
  "artifactName": "${name}-${arch}-${version}.${ext}",
  "mac": {
    "target": {
      "target": "default", 
      "arch": ["x64", "arm64"]
    }
  },
  "win": {
    "target": [{
      "target": "nsis",
      "arch": ["x64", "arm64"] 
    }]
  },
  "linux": {
    "target": [
      {"target": "deb", "arch": ["x64", "arm64"]},
      {"target": "snap"},
      {"target": "rpm", "arch": ["x64", "arm64"]},
      {"target": "AppImage", "arch": ["x64", "arm64"]},
      {"target": "tar.gz", "arch": ["x64", "arm64"]}
    ]
  }
}

Impact and Benefits

  • Platform Coverage: Native support for Apple Silicon, ARM64 Windows devices, and comprehensive Linux architecture support
  • Distribution Reach: Multiple Linux package formats enable deployment across diverse environments
  • User Experience: Clear artifact naming and improved permission descriptions
  • Future-Proofing: Prepared for the growing adoption of ARM64 processors across platforms
  • Consistency: Standardized build configuration across all Gauzy applications

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

6 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

]
},
{
"target": "snap"
Copy link
Contributor

Choose a reason for hiding this comment

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

logic: Snap target doesn't specify architecture - this will build for host architecture only

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/server-api/src/package.json
Line: 105:105

Comment:
**logic:** Snap target doesn't specify architecture - this will build for host architecture only

How can I resolve this? If you propose a fix, please make it concise.

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.

2 participants