Skip to content

chore: migrate Cap tooling to Bun 1.4 - #2262

Merged
richiemcilroy merged 8 commits into
mainfrom
improve/bun-1-4-migration
Sep 9, 2026
Merged

chore: migrate Cap tooling to Bun 1.4#2262
richiemcilroy merged 8 commits into
mainfrom
improve/bun-1-4-migration

Conversation

@richiemcilroy

@richiemcilroy richiemcilroy commented Sep 9, 2026

Copy link
Copy Markdown
Member

Migrates workspace installs, scripts, CI, mobile EAS profiles, desktop packaging, Docker builds and contributor commands to Bun 1.4.0. Removes unused Storybook and web-cluster workspaces. Uses frozen installs, explicit native install hooks and Bun's hoisted linker while retaining existing dependency versions and Node runtimes.

Removes the old cluster deployment tooling, staging infrastructure definition, internal Loom RPC endpoint and its environment/schema wiring and unused generated resource bindings. Current dashboard, mobile and agent Loom imports continue through Vercel Workflows. Normal Effect RPC, database/storage services, media-server processing and OpenPanel remain intact. No production deployment or provider settings were changed.

Retains root React 19.2.0 anchors for Expo alongside web/extension React 19.2.4, consistent Vitest React resolution, the eight web compatibility suites in CI, FFmpeg tracing, desktop argument forwarding and signing retries.

Validation:

  • Fresh frozen Bun install with lifecycle scripts passes; 492 workspace resolutions plus React Native, FFmpeg and sharp checks pass. All 3,160 remaining external version/integrity pairs are unchanged; 23 unused pairs were removed.
  • Workspace typecheck and explicit backend/domain typechecks pass. Vercel Workflow generation succeeds with 13 workflows.
  • Full web suite passes: 3,028 tests, zero failures, 28 opt-in database/live-provider tests skipped. Workflow fixtures include the required video source and the Slack assertion matches the current manifest colour. All existing behavior assertions remain.
  • Full media-server suite passes 468/468 tests with zero skips, including opt-in long-recording and large-transfer tests. Media-server source and dependencies are unchanged by the final web-test fixture update.
  • 11 workspace tooling tests pass.
  • Scoped Biome and diff checks pass. Actionlint reports only the same two existing deprecated-action findings as the parent commit.
  • Media tests ran from a source path without spaces to avoid an existing test-fixture URL decoding issue; production and test source were unchanged for that run.

Earlier migration validation passed desktop, mobile and extension tests; desktop frontend/extension builds; Expo Doctor (19/19); iOS Metro/Hermes export; Linux arm64 web Docker build and FFmpeg/sharp execution; affected Rust checks; Tauri resolution and FFmpeg route tracing. Current-head CI and Vercel results are tracked on this PR. Signed native releases, EAS cloud builds and installed-app recording/export smoke tests remain unverified.

Greptile Summary

This PR migrates workspace tooling and automation from pnpm to Bun 1.4.0, updates contributor and packaging commands, removes unused Storybook and web-cluster infrastructure, and retains the active Loom import path through Vercel Workflows. Since the previous review, it corrects two web-test fixtures:

  • Adds the production-compatible video source required by media-processing workflow code.
  • Aligns the Slack manifest contract assertion with the current manifest.
  • The previously reported missing compatibility tests are now present, and that thread was manually resolved.

Confidence Score: 5/5

The PR appears safe to merge, with no outstanding correctness or repository-rule violations identified in the changes since the previous review.

The two recent test updates match current production data shapes and configuration, the prior compatibility-test finding is resolved, and no new actionable failures remain.

Important Files Changed

Filename Overview
apps/web/tests/unit/media-processing-workflows.test.ts Adds a valid webMP4 source to the shared video fixture so it matches the current processing workflow contract.
apps/web/tests/unit/slack-app-manifest.test.ts Updates the expected Slack background color to match the existing production manifest.
.github/workflows/ci.yml Migrates CI commands to Bun and now references all eight existing React compatibility suites.
.github/actions/setup-js/action.yml Replaces pnpm setup with pinned Bun 1.4.0 installation, caching, frozen dependency installation, and installation verification.
package.json Migrates root workspace scripts and package-manager metadata to Bun while preserving the workspace’s runtime responsibilities.
bun.lock Provides the Bun lockfile used by frozen local, CI, packaging, and Docker installations.

Reviews (7): Last reviewed commit: "test: refresh video and Slack fixtures" | Re-trigger Greptile

@superagent-security superagent-security Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Superagent found 3 security concern(s).

Comment thread .github/actions/setup-js/action.yml Outdated
Comment thread .github/actions/setup-js/action.yml Outdated
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/bun-cache
key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-${{ hashFiles('bun.lock') }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: Scope the Bun dependency cache to trusted refs

Bun cache keys have no trusted-ref namespace and use a broad cross-ref restore prefix.

Separate PR and trusted-branch cache namespaces, or disable caching for untrusted PR jobs.

AI prompt
Check if this security scanner issue is valid. If so, understand the root cause and fix it. If appropriate, update or add tests. Keep the change focused and preserve intended behavior.

<file name=".github/actions/setup-js/action.yml">
<violation number="1" location=".github/actions/setup-js/action.yml:20">
<priority>P2</priority>
<title>Scope the Bun dependency cache to trusted refs</title>
<evidence>The cache key is `${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-${{ hashFiles('bun.lock') }}` and the restore key is the broad `${{ runner.os }}-${{ runner.arch }}-bun-1.4.0-`. The key contains no branch or event trust boundary, so caches produced from untrusted PR execution can be eligible for reuse by other refs sharing the Bun prefix.</evidence>
<recommendation>Use separate cache namespaces for trusted default-branch/release jobs and untrusted pull-request jobs, or disable the cache for untrusted PRs. Keep restore keys equally scoped and verify that restored package-cache contents cannot override lockfile integrity checks.</recommendation>
</violation>
</file>

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

Comment thread .github/workflows/ci.yml
@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy

Copy link
Copy Markdown
Member Author

hey @greptileai, please re-review the PR

@richiemcilroy
richiemcilroy merged commit cfcad1b into main Sep 9, 2026
33 checks passed
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.

1 participant