Conversation
|
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughRepository tooling migrated from npm/Node.js to Bun across CI/workflows, scripts, manifests, and build tooling; Jest config/resolver removed in favor of Vitest/Bun; added Bun build script and test setup; release/tag scripts now return tag creation status and may trigger an extension-release workflow. Changes
Sequence Diagram(s)sequenceDiagram
participant Script as tag-extension.mjs
participant Git as git
participant GitHubCLI as gh
participant Workflow as GitHub Actions
Script->>Git: create and push tag
Note right of Script: createAndPushTag returns boolean (tagCreated)
alt tagCreated == true
Script->>GitHubCLI: spawnSync gh workflow run extension-release.yml --ref <tag>
GitHubCLI-->>Script: exit code
alt exit code 0
Script->>Workflow: workflow queued (extension-release.yml)
else
Script-->>Script: log non-fatal warning
end
else tagCreated == false
Script-->>Script: log "tag already exists" / no-op
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In `@bunfig.toml`:
- Around line 11-12: Update the coverageThreshold entry so it meets the coding
guidelines: change the coverageThreshold object's line and function values from
70 to 80 (e.g., coverageThreshold = { line = 80, function = 80, statement = 70
}); if your config uses a separate branches/branch key instead of statement,
ensure branches/branch is set to 70. Modify the coverageThreshold symbol in
bunfig.toml accordingly.
In `@scripts/build.ts`:
- Around line 149-156: In ensureShebang, the regex /^(#!.*\n)+/gm overmatches
because the m flag makes ^ match every line; change it to anchor only at the
file start (e.g., use /^#!.*\n+/ without the m flag) so only leading shebang
lines are removed, and remove the subsequent
cleaned.replace(/\n#!\/usr\/bin\/env node\n/g, '\n') because it can strip valid
occurrences elsewhere — update references in ensureShebang accordingly.
🧹 Nitpick comments (3)
packages/ai-sdk-provider-grok-cli/src/json-extractor.test.ts (1)
45-50: Consider tracking this TODO with an issue.The skipped test documents a missing feature (converting JavaScript object literals to JSON). While the TODO comment is helpful, consider creating a tracking issue to ensure this functionality gets implemented.
Would you like me to open an issue to track the implementation of JS object literal to JSON conversion in
extractJson?bunfig.toml (1)
20-22: Consider enabling frozen lockfile for CI.The
frozen = trueoption is commented out. For CI environments, a frozen lockfile ensures reproducible builds.[install] # Use frozen lockfile in CI -# frozen = true +# Uncomment in CI or use BUN_FROZEN_LOCKFILE=1 environment variable +# frozen = trueAlternatively, set
BUN_FROZEN_LOCKFILE=1in CI workflow environment variables.scripts/build.ts (1)
24-25: Prefer static import forfs/promises.The dynamic
await import('node:fs/promises')is unnecessary since this is a top-level module. Using a static import improves clarity and avoids the extra promise.♻️ Proposed refactor
-// Import fs/promises once for use throughout -const fsPromises = await import('node:fs/promises'); +import { rm, unlink, writeFile, chmod } from 'node:fs/promises';Then replace usages like
fsPromises.rm(...)withrm(...), etc.
| console.warn( | ||
| `⚠️ Failed to trigger extension release workflow (non-critical)` | ||
| ); | ||
| } |
There was a problem hiding this comment.
Workflow dispatch lacks required actions: write permission
Medium Severity
The newly added gh workflow run call in tag-extension.mjs requires the GITHUB_TOKEN to have actions: write permission to invoke the workflow dispatch API. However, the release.yml workflow only declares contents: write, pull-requests: write, and id-token: write — the actions permission is absent. This means the gh workflow run call will always fail silently, and since tag pushes from GITHUB_TOKEN also don't trigger workflows, the extension release will never be auto-triggered.
Additional Locations (1)
- Replace tsdown with Bun.build() for bundling - Add bunfig.toml and tests/setup.ts for Bun test config - Update CI to use Bun for install and build - Update all package test scripts to use vitest (Node runtime) - Remove deprecated deps: jest, ts-jest, tsdown, tsx, cross-env - Delete jest.config.js, jest.resolver.cjs, tsdown.config.ts Build: Bun bundler (faster than tsdown/esbuild) Install: Bun package manager (bun.lock) Tests: Vitest on Node (Bun runtime has Zod SSR issues) Distribution: Node-compatible output unchanged Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…t packages - Skip 2 unimplemented json-extractor tests in grok-cli (pre-existing failures) - Add --coverage=false to test scripts that don't need coverage checks - Fix tm-bridge to pass with no tests using --passWithNoTests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace `npx` with `bunx` for running scripts in various workflows. - Update CI configurations to utilize Bun for dependency installation and script execution. - Modify release and extension workflows to trigger builds and packaging using Bun. - Ensure consistent environment variable usage for Bun and Node versions across workflows. This change enhances the build process and aligns with the migration to Bun for development.
0d3c129 to
1a85b98
Compare
There was a problem hiding this comment.
Actionable comments posted: 5
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
apps/mcp/package.json (1)
13-22:⚠️ Potential issue | 🟠 MajorAdd the required
test:e2escript.This package.json still lacks a
test:e2escript, which the repo’s test workflow expects for every package. Add an e2e entry aligned with your existing test naming conventions.➕ Suggested addition
"test:unit": "vitest run --coverage=false '**/*.spec.ts'", "test:integration": "vitest run --coverage=false '**/*.test.ts'", + "test:e2e": "vitest run --coverage=false '**/*.e2e.ts'", "test:ci": "vitest run --coverage --reporter=dot"As per coding guidelines, package.json scripts must include: 'test', 'test:watch', 'test:coverage', 'test:unit', 'test:integration', 'test:e2e', and 'test:ci' commands for testing framework integration.
.github/workflows/release.yml (1)
11-16:⚠️ Potential issue | 🟠 MajorConfirm the new
actions: writepermission is required.This broadens the GITHUB_TOKEN scope; if only specific steps need it, scope it at the job level or remove it to keep least-privilege.
🤖 Fix all issues with AI agents
In `@packages/ai-sdk-provider-grok-cli/package.json`:
- Around line 11-16: The package.json is missing required test scripts; add
"test:unit", "test:integration", "test:e2e", and "test:ci" entries under the
"scripts" section and alias them to the existing "test" command (which is
currently defined as "vitest run --coverage=false") so the package exposes all
required test tiers for CI and tooling consistency; update the scripts object
alongside existing keys ("test", "test:watch", "test:coverage", "test:ui",
"typecheck") to include these new aliases.
In `@packages/tm-bridge/package.json`:
- Around line 12-13: The package.json currently only defines "test" and
"test:watch" and therefore lacks the required test script variants; add the
missing scripts "test:coverage", "test:unit", "test:integration", "test:e2e",
and "test:ci" alongside the existing "test" and "test:watch" entries so coverage
enforcement and CI runs are possible. Implement "test:coverage" to run the test
runner with coverage enabled and thresholds enforced, "test:unit" to run unit
tests, "test:integration" and "test:e2e" to target their respective test suites
(using the same test runner with appropriate patterns), and "test:ci" to run the
full CI pipeline (coverage + fail-on-threshold + no watch). Ensure script names
exactly match "test", "test:watch", "test:coverage", "test:unit",
"test:integration", "test:e2e", and "test:ci" so tooling and guidelines can
detect them.
In `@scripts/build.ts`:
- Around line 20-22: Replace the direct console calls in this script (e.g., the
console.log that prints `Building Task Master (${isProduction ? 'production' :
'development'})...`) with the repo's central logging utility: import the shared
logger (e.g., logger) at the top of the file and call logger.info for
console.log messages, logger.warn for console.warn, and logger.error for
console.error; ensure you keep the same message and the isProduction expression
but route it through logger.info instead of console.log and update any other
direct console usages similarly.
- Around line 47-59: Replace the raw readFileSync+JSON.parse in getBuildTimeEnvs
with the project's readJSON utility and apply the same change to the
package.json read in getExternalDependencies; call readJSON(projectRoot,
'package.json') (or the utility's correct signature) to load packageJson,
validate that packageJson.version is a string before assigning
envs['TM_PUBLIC_VERSION'] (fallback to 'unknown' on missing/invalid), and
preserve the existing warning/error handling behavior when readJSON throws or
returns unexpected structure; ensure you import/read the readJSON utility and
update both getBuildTimeEnvs and getExternalDependencies to use it.
- Around line 103-106: The catch block that logs "Could not read package.json
for external dependencies:" around the external-deps filtering (the code using
allDeps.filter and the catch(error) that calls console.warn) is not formatted to
project style; run the project's formatter (e.g., npm run format or prettier
--write scripts/build.ts) to reformat this region so the warning line and
surrounding braces match the repo's formatting rules and CI will pass.
| "scripts": { | ||
| "test": "vitest run", | ||
| "test:watch": "vitest", | ||
| "test": "vitest run --coverage=false", | ||
| "test:watch": "vitest --coverage=false", | ||
| "test:coverage": "vitest run --coverage", | ||
| "test:ui": "vitest --ui", | ||
| "typecheck": "tsc --noEmit" |
There was a problem hiding this comment.
Add required test scripts to satisfy repo test workflow.
This package.json is missing the required test:unit, test:integration, test:e2e, and test:ci scripts. If this package doesn’t have separate test tiers, alias them to the existing test command so CI and tooling stay consistent.
🧩 Suggested script additions (aliasing to existing test)
"scripts": {
"test": "vitest run --coverage=false",
"test:watch": "vitest --coverage=false",
"test:coverage": "vitest run --coverage",
+ "test:unit": "vitest run --coverage=false",
+ "test:integration": "vitest run --coverage=false",
+ "test:e2e": "vitest run --coverage=false",
+ "test:ci": "vitest run --coverage",
"test:ui": "vitest --ui",
"typecheck": "tsc --noEmit"
},As per coding guidelines: "package.json scripts must include: 'test', 'test:watch', 'test:coverage', 'test:unit', 'test:integration', 'test:e2e', and 'test:ci' commands for testing framework integration".
🤖 Prompt for AI Agents
In `@packages/ai-sdk-provider-grok-cli/package.json` around lines 11 - 16, The
package.json is missing required test scripts; add "test:unit",
"test:integration", "test:e2e", and "test:ci" entries under the "scripts"
section and alias them to the existing "test" command (which is currently
defined as "vitest run --coverage=false") so the package exposes all required
test tiers for CI and tooling consistency; update the scripts object alongside
existing keys ("test", "test:watch", "test:coverage", "test:ui", "typecheck") to
include these new aliases.
| "test": "vitest run --coverage=false --passWithNoTests", | ||
| "test:watch": "vitest --coverage=false", |
There was a problem hiding this comment.
Add the required test: scripts and keep coverage enforcement available.*
The scripts block now disables coverage and allows passWithNoTests, but this package.json still lacks the required test:* entries. Without test:coverage/test:ci, coverage thresholds can’t be enforced for this package.
✅ Suggested script additions (adjust targets as needed)
"scripts": {
"test": "vitest run --coverage=false --passWithNoTests",
"test:watch": "vitest --coverage=false",
+ "test:coverage": "vitest run --coverage",
+ "test:unit": "vitest run --coverage=false",
+ "test:integration": "vitest run --coverage=false",
+ "test:e2e": "vitest run --coverage=false",
+ "test:ci": "vitest run --coverage"
"lint": "biome check --write",
"lint:check": "biome check",
"typecheck": "tsc --noEmit"
},As per coding guidelines: package.json scripts must include: 'test', 'test:watch', 'test:coverage', 'test:unit', 'test:integration', 'test:e2e', and 'test:ci' commands for testing framework integration.
📝 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.
| "test": "vitest run --coverage=false --passWithNoTests", | |
| "test:watch": "vitest --coverage=false", | |
| "test": "vitest run --coverage=false --passWithNoTests", | |
| "test:watch": "vitest --coverage=false", | |
| "test:coverage": "vitest run --coverage", | |
| "test:unit": "vitest run --coverage=false", | |
| "test:integration": "vitest run --coverage=false", | |
| "test:e2e": "vitest run --coverage=false", | |
| "test:ci": "vitest run --coverage" |
🤖 Prompt for AI Agents
In `@packages/tm-bridge/package.json` around lines 12 - 13, The package.json
currently only defines "test" and "test:watch" and therefore lacks the required
test script variants; add the missing scripts "test:coverage", "test:unit",
"test:integration", "test:e2e", and "test:ci" alongside the existing "test" and
"test:watch" entries so coverage enforcement and CI runs are possible. Implement
"test:coverage" to run the test runner with coverage enabled and thresholds
enforced, "test:unit" to run unit tests, "test:integration" and "test:e2e" to
target their respective test suites (using the same test runner with appropriate
patterns), and "test:ci" to run the full CI pipeline (coverage +
fail-on-threshold + no watch). Ensure script names exactly match "test",
"test:watch", "test:coverage", "test:unit", "test:integration", "test:e2e", and
"test:ci" so tooling and guidelines can detect them.
| console.log( | ||
| `Building Task Master (${isProduction ? 'production' : 'development'})...` | ||
| ); |
There was a problem hiding this comment.
Route build output through the central logger.
This script introduces multiple direct console.log/console.warn/console.error calls; please use the repo’s logging utility instead.
As per coding guidelines: Do not add direct console.log calls outside the logging utility - use the central log function instead.
🤖 Prompt for AI Agents
In `@scripts/build.ts` around lines 20 - 22, Replace the direct console calls in
this script (e.g., the console.log that prints `Building Task Master
(${isProduction ? 'production' : 'development'})...`) with the repo's central
logging utility: import the shared logger (e.g., logger) at the top of the file
and call logger.info for console.log messages, logger.warn for console.warn, and
logger.error for console.error; ensure you keep the same message and the
isProduction expression but route it through logger.info instead of console.log
and update any other direct console usages similarly.
| function getBuildTimeEnvs(): Record<string, string> { | ||
| const envs: Record<string, string> = {}; | ||
|
|
||
| // Inject package.json version at build time | ||
| try { | ||
| const packageJson = JSON.parse( | ||
| readFileSync(join(projectRoot, 'package.json'), 'utf8') | ||
| ); | ||
| envs['TM_PUBLIC_VERSION'] = packageJson.version || 'unknown'; | ||
| } catch (error) { | ||
| console.warn('Could not read package.json version during build:', error); | ||
| envs['TM_PUBLIC_VERSION'] = 'unknown'; | ||
| } |
There was a problem hiding this comment.
Use readJSON for package.json access in getBuildTimeEnvs.
Avoid raw readFileSync + JSON.parse, and apply the same utility to the package.json read in getExternalDependencies.
As per coding guidelines: Use readJSON and writeJSON utilities for all JSON file operations instead of raw fs.readFileSync or fs.writeFileSync, and validate JSON structure after reading.
🤖 Prompt for AI Agents
In `@scripts/build.ts` around lines 47 - 59, Replace the raw
readFileSync+JSON.parse in getBuildTimeEnvs with the project's readJSON utility
and apply the same change to the package.json read in getExternalDependencies;
call readJSON(projectRoot, 'package.json') (or the utility's correct signature)
to load packageJson, validate that packageJson.version is a string before
assigning envs['TM_PUBLIC_VERSION'] (fallback to 'unknown' on missing/invalid),
and preserve the existing warning/error handling behavior when readJSON throws
or returns unexpected structure; ensure you import/read the readJSON utility and
update both getBuildTimeEnvs and getExternalDependencies to use it.
- Bump coverage thresholds from 70% to 80% in bunfig.toml - Fix shebang regex over-matching by removing multiline flag in build.ts - Add console.warn for silent catch in getExternalDependencies - Make second shebang regex more conservative for bundled modules - Use turbo:build in CI workflow to build all workspace packages - Add actions:write permission to release workflow for workflow dispatch - Use targeted signal listener cleanup in test setup
1a85b98 to
eb7df1f
Compare
| } else { | ||
| console.warn( | ||
| `⚠️ Failed to trigger extension release workflow (non-critical)` | ||
| ); |
There was a problem hiding this comment.
Extension release failures are silently ignored
Medium Severity
When gh workflow run fails, tag-extension.mjs only logs a warning and continues. Since tag pushes created by GITHUB_TOKEN do not trigger workflows, this can complete release.mjs successfully while skipping extension-release.yml, leaving the extension unpublished with no failing CI signal.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@tsconfig.json`:
- Around line 23-25: The path alias entry "@tm/ai-sdk-provider-grok-cli" in
tsconfig.json is mis-indented and causes Biome format to fail; fix it by
aligning the alias key and its array value with the other entries under
"compilerOptions.paths" so the key starts in the same column as the other
aliases and the array items are indented consistently, then run the project
formatter (Biome) to verify no further changes are needed.
🧹 Nitpick comments (1)
package.json (1)
42-42: Consider migratingnpxtobunxfor consistency.This appears to be the only remaining
npxusage in the scripts section. For consistency with the Bun migration, consider updating tobunx.♻️ Proposed change
- "inspector": "npx `@modelcontextprotocol/inspector` node dist/mcp-server.js", + "inspector": "bunx `@modelcontextprotocol/inspector` node dist/mcp-server.js",
tsconfig.json
Outdated
| "@tm/ai-sdk-provider-grok-cli": [ | ||
| "./packages/ai-sdk-provider-grok-cli/src/index.ts" | ||
| ], |
There was a problem hiding this comment.
Fix indentation to pass Biome format check.
The pipeline failure indicates that Biome's formatter would modify this file. The @tm/ai-sdk-provider-grok-cli path alias appears to have incorrect indentation (starts at column 0 instead of being aligned with other path entries).
🔧 Proposed fix
-"@tm/ai-sdk-provider-grok-cli": [
+ "@tm/ai-sdk-provider-grok-cli": [
"./packages/ai-sdk-provider-grok-cli/src/index.ts"
],🧰 Tools
🪛 GitHub Actions: CI
[error] 23-23: Biome format check failed. Formatter would modify tsconfig.json. Run 'bun run format-check' or 'biome format' to fix code style issues.
🤖 Prompt for AI Agents
In `@tsconfig.json` around lines 23 - 25, The path alias entry
"@tm/ai-sdk-provider-grok-cli" in tsconfig.json is mis-indented and causes Biome
format to fail; fix it by aligning the alias key and its array value with the
other entries under "compilerOptions.paths" so the key starts in the same column
as the other aliases and the array items are indented consistently, then run the
project formatter (Biome) to verify no further changes are needed.
b1923f3 to
4836df7
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| } else { | ||
| console.warn( | ||
| `⚠️ Failed to trigger extension release workflow (non-critical)` | ||
| ); |
There was a problem hiding this comment.
Extension publish failure is silently ignored
Medium Severity
tag-extension.mjs treats gh workflow run extension-release.yml failures as non-critical, so bun run release can succeed even when the extension release never starts. Because dispatch only runs when createAndPushTag returns true, a later rerun skips dispatch once the tag already exists, leaving that version unpublished.
Additional Locations (1)
| - name: Install dependencies | ||
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | ||
| run: npm ci | ||
| run: bun install |
There was a problem hiding this comment.
CI no longer enforces lockfile consistency
Medium Severity
Replacing npm ci with plain bun install removes strict lockfile validation in CI. bun install can regenerate bun.lock instead of failing when manifests and lockfile diverge, so workflows may pass with dependency states that are not actually committed.
Additional Locations (2)
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@package.json`:
- Line 39: The "version" npm script currently appends "|| true" which masks
failures from the bun install step; edit the "version" script string (the
"version" field in package.json that runs `changeset version && node
./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile ||
true`) to remove the trailing `|| true` so that `bun install --frozen-lockfile`
fails the release on lockfile mismatches or install errors; ensure CI provides
bun so the command can run and fail fast when appropriate.
| "changeset": "changeset", | ||
| "changeset:validate": "node .github/scripts/validate-changesets.mjs", | ||
| "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && npm i --package-lock-only", | ||
| "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile || true", |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# Search for changesets and version script invocations in workflows
find .github/workflows -type f -name "*.yml" -o -name "*.yaml" | head -20Repository: eyaltoledano/claude-task-master
Length of output: 690
🏁 Script executed:
# Look for changeset version, version script, and bun setup references
rg -A5 -B5 "changeset version|npm run version|version:" .github/workflows --type yamlRepository: eyaltoledano/claude-task-master
Length of output: 14578
🏁 Script executed:
# Search for bun setup in workflows
rg -A3 -B3 "setup-bun|actions/setup-bun|bun install" .github/workflows --type yamlRepository: eyaltoledano/claude-task-master
Length of output: 9311
🏁 Script executed:
# Check the actual package.json to see the full context of version script and related scripts
cat package.json | head -60Repository: eyaltoledano/claude-task-master
Length of output: 2254
🏁 Script executed:
cat -n ./.github/scripts/sync-manifest-version.mjs | head -50Repository: eyaltoledano/claude-task-master
Length of output: 1640
🏁 Script executed:
# Search for any comments or history about || true in the version script
rg "|| true" package.json -B2 -A2Repository: eyaltoledano/claude-task-master
Length of output: 5310
🏁 Script executed:
# Look for any git history or comments about version script issues
git log --oneline --all -S "|| true" package.json 2>/dev/null | head -5Repository: eyaltoledano/claude-task-master
Length of output: 161
🏁 Script executed:
# Check if there are any existing issues or PRs discussing this
rg -i "bun install.*frozen" --type-listRepository: eyaltoledano/claude-task-master
Length of output: 464
Remove || true to fail fast on lockfile mismatches during releases.
Using || true masks real errors from bun install --frozen-lockfile after version updates. If this command fails—due to lockfile inconsistencies, dependency resolution issues, or toolchain problems—the release should stop, not silently proceed. Bun is properly available in CI, so any failure here is a legitimate problem to fix before publishing.
Recommended change
- "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile || true",
+ "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile",📝 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.
| "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile || true", | |
| "version": "changeset version && node ./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile", |
🤖 Prompt for AI Agents
In `@package.json` at line 39, The "version" npm script currently appends "||
true" which masks failures from the bun install step; edit the "version" script
string (the "version" field in package.json that runs `changeset version && node
./.github/scripts/sync-manifest-version.mjs && bun install --frozen-lockfile ||
true`) to remove the trailing `|| true` so that `bun install --frozen-lockfile`
fails the release on lockfile mismatches or install errors; ensure CI provides
bun so the command can run and fail fast when appropriate.
The tsdown-based build config is no longer needed since the build now uses Bun's native bundler via scripts/build.ts. Moved fix-null-versions utility script to scripts/ and cleaned up references.
4836df7 to
dcf675b
Compare


What type of PR is this?
Description
Related Issues
How to Test This
# Example commands or stepsExpected result:
Contributor Checklist
npm run changesetnpm testnpm run format-check(ornpm run formatto fix)Changelog Entry
For Maintainers
Note
Medium Risk
Touches multiple GitHub Actions workflows and the release/extension publishing trigger path, so misconfiguration could break CI or automated releases. No runtime product logic changes, but tooling/permissions changes (e.g.,
actions: write,gh workflow run) increase operational risk.Overview
Migrates CI/CD and release tooling from
npm/npxtobun/bunxacross core CI, extension CI/release, main release, and docs automation, including Bun setup, a Bun-basednode_modulescache key, and standardizedNODE_VERSION/BUN_VERSIONenvs.Release flow is adjusted so extension tagging can explicitly trigger
extension-release.ymlviagh workflow runafter creating a new tag (workaround forGITHUB_TOKENpush tags not firing workflows), and the main release workflow gainsactions: writeto allow dispatching.Separately, package scripts are updated to reduce default Vitest coverage overhead (coverage kept in dedicated scripts), extension build/package commands use Bun, and
.manypkg.jsonno longer ignores@tm/build-config.Written by Cursor Bugbot for commit dcf675b. This will update automatically on new commits. Configure here.
Summary by CodeRabbit
Build System
Testing
CI/CD