Skip to content

chore: speed up CI installs and desktop packaging#590

Merged
lefarcen merged 18 commits intomainfrom
chore/ci-optimization-plan
Mar 27, 2026
Merged

chore: speed up CI installs and desktop packaging#590
lefarcen merged 18 commits intomainfrom
chore/ci-optimization-plan

Conversation

@mrcfps
Copy link
Copy Markdown
Contributor

@mrcfps mrcfps commented Mar 26, 2026

What

Optimize CI by splitting desktop packaging into fast PR vs heavy main flows, trimming duplicate checks, caching runtime npm installs, and removing an unused Feishu project notifier.

Why

Desktop packaging CI was dominated by heavyweight macOS/x64 and DMG work on every PR, while root install also paid repeated runtime postinstall costs that pnpm cache did not cover.

How

  • split desktop dist into a PR-only arm64 zip workflow and a heavy dual-arch main/manual workflow
  • let dist-mac.mjs override mac targets so PRs can build zip only
  • remove duplicate typecheck work from pnpm lint
  • replace root postinstall with a script that can skip runtime installs in non-desktop CI and reuse openclaw-runtime's cached install path
  • add ~/.npm caching for desktop/runtime npm installs
  • delete the unused Feishu project item notification workflow and script

Affected areas

  • Desktop app (Electron shell)
  • Controller (backend / API)
  • Web dashboard (React UI)
  • OpenClaw runtime
  • Skills
  • Shared schemas / packages
  • Build / CI / Tooling

Checklist

  • pnpm typecheck passes
  • pnpm lint passes
  • pnpm test passes
  • pnpm generate-types run (if API routes/schemas changed)
  • No credentials or tokens in code or logs
  • No any types introduced (use unknown with narrowing)

Notes for reviewers

  • PRs now validate packaged desktop output on macOS arm64 with zip only.
  • Full dual-arch dmg+zip validation moved to Desktop CI Dist Heavy on main and manual dispatch.
  • The CI optimization plan is included at specs/exec-plans/2026-03-26-ci-optimization-plan.md.

Summary by CodeRabbit

  • Chores

    • Improved CI caching and dependency-install behavior across workflows, adding dependency-aware cache keys and additional cache restore steps for macOS desktop builds.
    • Added a dedicated "heavy" macOS desktop CI and streamlined PR desktop builds to faster arm64 ZIP-focused runs with simplified artifact validation.
    • Centralized runtime postinstall into a new script with an opt-out flag; CI installs honor the skip flag.
    • Added build timing instrumentation that emits a per-step timing summary in CI.
    • Removed an unused project-notification workflow and its notifier script.
  • Documentation

    • Added a CI optimization plan with prioritized recommendations for macOS packaging and CI efficiency.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 26, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Reorganizes CI into fast PR validation and a heavy macOS packaging workflow; adds/adjusts pnpm/npm cache restores keyed to lockfiles; introduces .github/workflows/desktop-ci-dist-heavy.yml; removes Feishu project-item notify workflow and its script; extracts runtime postinstall into scripts/postinstall.mjs (skippable via env); updates lint and packaging scripts.

Changes

Cohort / File(s) Summary
Core CI workflows
\.github/workflows/ci.yml, \.github/workflows/desktop-release.yml, \.github/workflows/desktop-build.yml, \.github/workflows/desktop-ci-dev.yml
Add cache-dependency-path: pnpm-lock.yaml to setup-node pnpm cache entries; add NEXU_SKIP_RUNTIME_POSTINSTALL env in CI install steps; add/adjust ~/.npm and Electron-related cache restore steps keyed by lockfile hashes.
Desktop distribution workflows
\.github/workflows/desktop-ci-dist.yml, \.github/workflows/desktop-ci-dist-heavy.yml
Introduce desktop-ci-dist-heavy (main-only heavy packaging matrix, artifact validation, logs upload); change PR workflow to PR-only arm64/zip, remove DMG/matrix outputs; standardize artifact names; add runtime/npm and Electron cache restores.
Postinstall & package scripts
package.json, scripts/postinstall.mjs
Replace inline postinstall with node scripts/postinstall.mjs to perform runtime/npm installs (skippable via NEXU_SKIP_RUNTIME_POSTINSTALL); change lint scripts to Biome-only.
Desktop build script
apps/desktop/scripts/dist-mac.mjs
Add resolveMacTargets() and timing instrumentation; forward resolved macTargets into electron-builder invocation; collect and append GitHub Actions step summary timings.
Removed notification workflow & script
\.github/workflows/feishu-project-item-notify.yml, scripts/notify/feishu-project-notify.mjs
Remove Feishu project-item notification workflow and its Node notify script.
Docs / Plan & contributor guidance
specs/exec-plans/2026-03-26-ci-optimization-plan.md, CONTRIBUTING.md
Add CI optimization plan MD and update CONTRIBUTING to reflect Biome-only linting and separate typecheck guidance.

Sequence Diagram(s)

sequenceDiagram
  participant GH as "GitHub Actions"
  participant Runner as "Runner (macOS)"
  participant Checkout as "actions/checkout"
  participant Cache as "actions/cache"
  participant Node as "actions/setup-node + pnpm"
  participant Installer as "pnpm / scripts/postinstall.mjs"
  participant Builder as "pnpm build / electron-builder"
  participant Test as "pnpm test / e2e"
  participant Artifacts as "actions/upload-artifact"

  GH->>Runner: trigger desktop-ci-dist-heavy / PR workflows
  Runner->>Checkout: checkout repo
  Runner->>Cache: restore ~/.npm & electron caches (lockfile-based keys)
  Runner->>Node: setup Node & pnpm (cache-dependency-path: pnpm-lock.yaml)
  Runner->>Installer: run pnpm install --frozen-lockfile (may skip runtime postinstall)
  Runner->>Builder: run pnpm build / electron-builder (mac targets)
  Runner->>Test: run tests and lifecycle e2e
  Runner->>Artifacts: validate outputs, upload distributions and logs
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~40 minutes

Possibly related PRs

Suggested reviewers

  • lefarcen
  • PerishCode

Poem

🐰
I hopped through workflows and cached each trail,
Split light PR hops from heavy macOS sail,
Postinstall tucked neat, targets set to race,
ARM zips sprint out while x64 finds its place,
CI hums, logs bundled — a joyful release-tale.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

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.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: speed up CI installs and desktop packaging' directly reflects the main objective of optimizing CI by improving caching, splitting workflows, and removing duplicate work.
Description check ✅ Passed The PR description covers all major sections of the template: What (optimization goals), Why (performance issues), How (specific implementation approach), Affected areas (checked: Desktop, Runtime, CI/Tooling), Checklist (all relevant items marked complete), and Notes for reviewers. The description is complete and well-structured.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/ci-optimization-plan

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
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 37b15d81b8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/desktop-ci-dist.yml
Copy link
Copy Markdown

@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.

🧹 Nitpick comments (3)
.github/workflows/desktop-build.yml (1)

89-94: Optional: centralize repeated runtime-cache workflow snippet.

This cache block is now duplicated across desktop workflows; extracting it into a reusable workflow/composite action would reduce future drift.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/desktop-build.yml around lines 89 - 94, The cache step
"Restore npm cache for runtime installs" is duplicated; extract that snippet
into a reusable workflow or composite action (e.g., create a new
workflow/composite named "runtime-npm-cache" that contains the actions/cache@v4
step with the same path and key expression), then replace each duplicated block
with a call to that reusable workflow or composite action from the desktop
workflows; ensure the cache key remains identical (desktop-npm-cache-${{
runner.os }}-${{ matrix.arch }}-${{
hashFiles('openclaw-runtime/package-lock.json',
'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }})
so existing cache hits are preserved.
.github/workflows/desktop-ci-dist.yml (1)

50-55: Consider adding restore-keys for better cache hit rate.

When the lock files change, the exact key won't match and no cache will be restored. Adding a fallback restore-keys pattern allows partial cache hits from previous runs, improving CI performance during dependency updates.

💡 Suggested improvement
       - name: Restore npm cache for runtime installs
         uses: actions/cache@v4
         with:
           path: ~/.npm
           key: desktop-npm-cache-${{ runner.os }}-arm64-${{ hashFiles('openclaw-runtime/package-lock.json', 'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }}
+          restore-keys: |
+            desktop-npm-cache-${{ runner.os }}-arm64-
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/desktop-ci-dist.yml around lines 50 - 55, The cache step
"Restore npm cache for runtime installs" using actions/cache@v4 only supplies a
full key and will miss when lockfiles change; add a restore-keys entry (e.g. a
prefix like desktop-npm-cache-${{ runner.os }}-arm64-) under the same step so
GitHub Actions can fall back to partial matches and increase cache hit rate when
the exact key doesn't exist, keeping the existing key as the primary exact
match.
.github/workflows/desktop-ci-dist-heavy.yml (1)

61-66: Consider adding restore-keys for better cache hit rate.

Same recommendation as the PR workflow—adding a fallback pattern improves cache utilization when lock files change.

💡 Suggested improvement
       - name: Restore npm cache for runtime installs
         uses: actions/cache@v4
         with:
           path: ~/.npm
           key: desktop-npm-cache-${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('openclaw-runtime/package-lock.json', 'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }}
+          restore-keys: |
+            desktop-npm-cache-${{ runner.os }}-${{ matrix.arch }}-
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/desktop-ci-dist-heavy.yml around lines 61 - 66, The cache
step named "Restore npm cache for runtime installs" uses a fully specific key
(desktop-npm-cache-${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles(...) }})
which causes misses when lockfiles change; add a restore-keys array to the same
actions/cache@v4 step that provides progressively looser fallback patterns (for
example: desktop-npm-cache-${{ runner.os }}-${{ matrix.arch }}-,
desktop-npm-cache-${{ runner.os }}-) so the runner can match older caches when
the exact hashFiles key isn’t present.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/workflows/desktop-build.yml:
- Around line 89-94: The cache step "Restore npm cache for runtime installs" is
duplicated; extract that snippet into a reusable workflow or composite action
(e.g., create a new workflow/composite named "runtime-npm-cache" that contains
the actions/cache@v4 step with the same path and key expression), then replace
each duplicated block with a call to that reusable workflow or composite action
from the desktop workflows; ensure the cache key remains identical
(desktop-npm-cache-${{ runner.os }}-${{ matrix.arch }}-${{
hashFiles('openclaw-runtime/package-lock.json',
'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }})
so existing cache hits are preserved.

In @.github/workflows/desktop-ci-dist-heavy.yml:
- Around line 61-66: The cache step named "Restore npm cache for runtime
installs" uses a fully specific key (desktop-npm-cache-${{ runner.os }}-${{
matrix.arch }}-${{ hashFiles(...) }}) which causes misses when lockfiles change;
add a restore-keys array to the same actions/cache@v4 step that provides
progressively looser fallback patterns (for example: desktop-npm-cache-${{
runner.os }}-${{ matrix.arch }}-, desktop-npm-cache-${{ runner.os }}-) so the
runner can match older caches when the exact hashFiles key isn’t present.

In @.github/workflows/desktop-ci-dist.yml:
- Around line 50-55: The cache step "Restore npm cache for runtime installs"
using actions/cache@v4 only supplies a full key and will miss when lockfiles
change; add a restore-keys entry (e.g. a prefix like desktop-npm-cache-${{
runner.os }}-arm64-) under the same step so GitHub Actions can fall back to
partial matches and increase cache hit rate when the exact key doesn't exist,
keeping the existing key as the primary exact match.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fd4733e9-b7c5-4ffe-9ae3-6752ad77f828

📥 Commits

Reviewing files that changed from the base of the PR and between d67c73a and 37b15d8.

📒 Files selected for processing (12)
  • .github/workflows/ci.yml
  • .github/workflows/desktop-build.yml
  • .github/workflows/desktop-ci-dev.yml
  • .github/workflows/desktop-ci-dist-heavy.yml
  • .github/workflows/desktop-ci-dist.yml
  • .github/workflows/desktop-release.yml
  • .github/workflows/feishu-project-item-notify.yml
  • apps/desktop/scripts/dist-mac.mjs
  • package.json
  • scripts/notify/feishu-project-notify.mjs
  • scripts/postinstall.mjs
  • specs/exec-plans/2026-03-26-ci-optimization-plan.md
💤 Files with no reviewable changes (2)
  • .github/workflows/feishu-project-item-notify.yml
  • scripts/notify/feishu-project-notify.mjs

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5383ce7ae7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/desktop-ci-dist-full.yml
Copy link
Copy Markdown

@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

🧹 Nitpick comments (2)
.github/workflows/desktop-ci-dist.yml (1)

58-63: Consider adding restore-keys for better cache hit rates.

When package-lock.json files change, the exact key won't match and no cache will be restored. Adding restore-keys allows falling back to a previous cache, which can still speed up installs.

♻️ Suggested improvement
       - name: Restore npm cache for runtime installs
         uses: actions/cache@v4
         with:
           path: ~/.npm
           key: desktop-npm-cache-${{ runner.os }}-arm64-${{ hashFiles('openclaw-runtime/package-lock.json', 'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }}
+          restore-keys: |
+            desktop-npm-cache-${{ runner.os }}-arm64-
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/desktop-ci-dist.yml around lines 58 - 63, The cache step
"Restore npm cache for runtime installs" currently uses a single exact key
(desktop-npm-cache-${{ runner.os }}-arm64-${{
hashFiles('openclaw-runtime/package-lock.json',
'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }})
which will miss when lockfiles change; update the actions/cache@v4 step to
include a restore-keys fallback (e.g., prefix-based patterns like
desktop-npm-cache-${{ runner.os }}-arm64- and/or desktop-npm-cache-${{ runner.os
}}-) so the step can fall back to previous caches when the exact key is not
found, keeping the step name and key logic but adding restore-keys entries to
improve cache hit rates.
.github/workflows/ci.yml (1)

47-49: Apply the same runtime-postinstall skip to the test job for full CI speedup.

You set NEXU_SKIP_RUNTIME_POSTINSTALL for typecheck/lint/build, but the test install step (Line 101-103) still runs full postinstall. If tests don’t require runtime plugin installs, this leaves avoidable install time and network risk.

Suggested patch
   test:
     runs-on: ubuntu-latest
@@
       - name: Install dependencies
+        env:
+          NEXU_SKIP_RUNTIME_POSTINSTALL: "1"
         run: pnpm install --frozen-lockfile

Also applies to: 75-77, 128-130

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ci.yml around lines 47 - 49, Add the
NEXU_SKIP_RUNTIME_POSTINSTALL: "1" environment variable to the pnpm install
steps used by the test job (the step that runs pnpm install --frozen-lockfile)
so it matches the typecheck/lint/build jobs; update the test job's env block to
include NEXU_SKIP_RUNTIME_POSTINSTALL and mirror the same change for the other
pnpm install occurrences referenced (the other pnpm install steps around the
other jobs) to avoid runtime postinstall during CI installs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@package.json`:
- Around line 12-13: Update CONTRIBUTING.md to reflect that the npm scripts
"lint" and "lint:fix" run biome only (no typecheck); change any text that says
`pnpm lint`/`pnpm lint:fix` include type checking to instead state they run only
biome checks and how to run typechecks separately (for example `pnpm typecheck`
or the actual typecheck command used in the project). Search for references to
"lint" and "lint:fix" in CONTRIBUTING.md (around the current lines describing
linting) and replace the instructions and examples so they accurately describe
the new semantics and the separate command for type checking.

---

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 47-49: Add the NEXU_SKIP_RUNTIME_POSTINSTALL: "1" environment
variable to the pnpm install steps used by the test job (the step that runs pnpm
install --frozen-lockfile) so it matches the typecheck/lint/build jobs; update
the test job's env block to include NEXU_SKIP_RUNTIME_POSTINSTALL and mirror the
same change for the other pnpm install occurrences referenced (the other pnpm
install steps around the other jobs) to avoid runtime postinstall during CI
installs.

In @.github/workflows/desktop-ci-dist.yml:
- Around line 58-63: The cache step "Restore npm cache for runtime installs"
currently uses a single exact key (desktop-npm-cache-${{ runner.os }}-arm64-${{
hashFiles('openclaw-runtime/package-lock.json',
'apps/controller/static/runtime-plugins/openclaw-weixin/package-lock.json') }})
which will miss when lockfiles change; update the actions/cache@v4 step to
include a restore-keys fallback (e.g., prefix-based patterns like
desktop-npm-cache-${{ runner.os }}-arm64- and/or desktop-npm-cache-${{ runner.os
}}-) so the step can fall back to previous caches when the exact key is not
found, keeping the step name and key logic but adding restore-keys entries to
improve cache hit rates.
🪄 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

Run ID: 8c1859e9-a6c0-4ed6-b77c-33b3c96f62c4

📥 Commits

Reviewing files that changed from the base of the PR and between 37b15d8 and 5383ce7.

📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • .github/workflows/desktop-ci-dev.yml
  • .github/workflows/desktop-ci-dist-heavy.yml
  • .github/workflows/desktop-ci-dist.yml
  • package.json
✅ Files skipped from review due to trivial changes (2)
  • .github/workflows/desktop-ci-dev.yml
  • .github/workflows/desktop-ci-dist-heavy.yml

Comment thread package.json
@mrcfps
Copy link
Copy Markdown
Contributor Author

mrcfps commented Mar 26, 2026

/cr 1. CI 提速

  • 把原来的 Desktop CI Dist 拆成两层:
    • PR 快速门禁:只跑 macOS arm64,只打 zip
    • Heavy packaging:只在 main / 手动触发时跑,保留 arm64 + x64、dmg + zip
  • 避免每个 PR 都被 Intel/x64 和 DMG 打包拖慢
  1. 减少重复校验
  • 根 lint 脚本不再重复跑 typecheck
  • 主 CI 的 typecheck / lint / build 各自职责更清晰,减少重复开销
  1. 优化安装缓存与 postinstall
  • 新增 scripts/postinstall.mjs
  • 把 root postinstall 改成可控逻辑:
    • 非 desktop CI 可通过环境变量跳过重型 runtime 安装
    • openclaw-runtime 改走已有的 cached install 路径
  • 给 desktop 相关 workflow 增加 ~/.npm 缓存
  • 解决了“pnpm cache 命中了但 install 还是很慢”的问题,因为慢点其实在额外的 npm 子安装
  1. 清理无用代码
  • 删除了不再使用的 Feishu Projects 通知脚本和对应 workflow:
    • scripts/notify/feishu-project-notify.mjs
    • .github/workflows/feishu-project-item-notify.yml

@slack-code-review-channel
Copy link
Copy Markdown

✅ CR topic created in Feishu topic group Refly CR.

Copy link
Copy Markdown

@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.

🧹 Nitpick comments (2)
.github/workflows/desktop-ci-dist-heavy.yml (1)

1-30: New heavy workflow correctly separates main-branch validation.

The workflow appropriately:

  • Triggers only on main push and workflow_dispatch
  • Uses path filters to avoid unnecessary runs
  • Sets proper concurrency to cancel in-progress runs

However, the path filters are missing some entries present in desktop-ci-dist.yml:

  • scripts/desktop-stop-smoke.sh (present in PR workflow line 15)
  • scripts/kill-all.sh (present in PR workflow line 18)

This could cause the heavy workflow to not trigger when changes to these scripts are merged.

Proposed fix to align path filters
       - "scripts/desktop-ci-check.mjs"
       - "scripts/launchd-lifecycle-e2e.sh"
+      - "scripts/desktop-stop-smoke.sh"
       - "scripts/kill-all.sh"
       - "vitest.config.ts"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/desktop-ci-dist-heavy.yml around lines 1 - 30, The Desktop
CI Dist Heavy workflow is missing two path entries that exist in the other dist
workflow; update the paths list in the "Desktop CI Dist Heavy" workflow to
include "scripts/desktop-stop-smoke.sh" and "scripts/kill-all.sh" so changes to
those scripts will trigger this workflow (aligning it with the paths used by the
desktop-ci-dist workflow).
.github/workflows/desktop-ci-dist.yml (1)

165-167: Verify artifact name collision with heavy workflow.

The artifact name desktop-ci-dist-arm64 matches the pattern desktop-ci-dist-${{ matrix.arch }} used in desktop-ci-dist-heavy.yml (line 182). While these workflows target different triggers (PR vs main), if both were to run on the same commit (e.g., during a merge), artifacts with identical names but different contents (zip-only vs dmg+zip) could cause confusion.

Consider differentiating the names, for example:

  • PR workflow: desktop-ci-dist-pr-arm64
  • Heavy workflow: desktop-ci-dist-heavy-arm64
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/desktop-ci-dist.yml around lines 165 - 167, The artifact
name desktop-ci-dist-arm64 currently collides with the desktop-ci-dist-${{
matrix.arch }} pattern used in the heavy workflow; update the artifact name in
this workflow to a distinct identifier (e.g., desktop-ci-dist-pr-arm64 or
desktop-ci-dist-pr-${{ matrix.arch }}) so PR-run artifacts cannot be confused
with heavy-run artifacts (which can keep desktop-ci-dist-heavy-${{ matrix.arch
}}), ensuring the artifact name string(s) in the workflow YAML are changed
accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/workflows/desktop-ci-dist-heavy.yml:
- Around line 1-30: The Desktop CI Dist Heavy workflow is missing two path
entries that exist in the other dist workflow; update the paths list in the
"Desktop CI Dist Heavy" workflow to include "scripts/desktop-stop-smoke.sh" and
"scripts/kill-all.sh" so changes to those scripts will trigger this workflow
(aligning it with the paths used by the desktop-ci-dist workflow).

In @.github/workflows/desktop-ci-dist.yml:
- Around line 165-167: The artifact name desktop-ci-dist-arm64 currently
collides with the desktop-ci-dist-${{ matrix.arch }} pattern used in the heavy
workflow; update the artifact name in this workflow to a distinct identifier
(e.g., desktop-ci-dist-pr-arm64 or desktop-ci-dist-pr-${{ matrix.arch }}) so
PR-run artifacts cannot be confused with heavy-run artifacts (which can keep
desktop-ci-dist-heavy-${{ matrix.arch }}), ensuring the artifact name string(s)
in the workflow YAML are changed accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 325743d8-bd25-4346-ac1f-5d70ea0cb188

📥 Commits

Reviewing files that changed from the base of the PR and between 1e35a74 and 2094d34.

📒 Files selected for processing (5)
  • .github/workflows/desktop-build.yml
  • .github/workflows/desktop-ci-dev.yml
  • .github/workflows/desktop-ci-dist-heavy.yml
  • .github/workflows/desktop-ci-dist.yml
  • .github/workflows/desktop-release.yml
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/desktop-ci-dev.yml
  • .github/workflows/desktop-release.yml

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2094d34c20

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/postinstall.mjs
Comment thread apps/desktop/scripts/dist-mac.mjs Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0577906cc5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/desktop-ci-dist-lite.yml
Comment thread .github/workflows/desktop-ci-dist-full.yml
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Mar 27, 2026

Deploying nexu-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: b03d38f
Status: ✅  Deploy successful!
Preview URL: https://ca074bb5.nexu-docs.pages.dev
Branch Preview URL: https://chore-ci-optimization-plan.nexu-docs.pages.dev

View logs

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3737a2848c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/desktop-ci-dist-full.yml
@lefarcen lefarcen merged commit 3981f31 into main Mar 27, 2026
9 checks passed
@mrcfps mrcfps deleted the chore/ci-optimization-plan branch March 27, 2026 03:13
@lefarcen lefarcen mentioned this pull request Mar 30, 2026
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