Skip to content

chore(deps): bun update --latest - #1854

Merged
shunkakinoki merged 5 commits into
mainfrom
chore/bun-update-lock
May 25, 2026
Merged

chore(deps): bun update --latest#1854
shunkakinoki merged 5 commits into
mainfrom
chore/bun-update-lock

Conversation

@shunkakinoki

@shunkakinoki shunkakinoki commented May 25, 2026

Copy link
Copy Markdown
Owner

Summary by cubic

Updates dependencies across JS/Bun, Rust, and Python. Restores caret ranges, regenerates lockfiles, and defaults Bun to caret installs.

  • Dependencies

    • Restored caret prefixes in package.json; exact versions are locked in bun.lock.
    • Bun config now defaults to caret ranges (config/bun/bunfig.toml: exact = false).
    • Major JS bumps: @upstash/context7-mcp@3.0.0, chrome-devtools-mcp@1.0.1, ccusage@20.0.4, @kaitranntt/ccs@8.1.0.
    • Notable JS bumps: vite@8.0.14, @github/copilot@1.0.54, @openai/codex@0.133.0, oxlint@1.66.0, oxfmt@0.51.0.
    • Rust: worktrunk 0.50.0 -> 0.53.0; refreshed Cargo.lock (adds transitive renamore).
    • Python tools: nvitop min version >=1.7.0 in pyproject.toml.
  • Migration

    • Run bun install after pulling.
    • Rust: run cargo build to fetch updated crates.
    • Python tools: uv sync if you manage the toolchain.
    • Review breaking changes for the upgraded majors above.

Written for commit bac8d1b. Summary will update on new commits. Review in cubic

@indent-zero

indent-zero Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor
PR Summary

Refreshes the dotfiles' npm dependency inventory by running bun update --latest, bringing ~50 CLI tools (claude-code, codex, gemini-cli, droid, etc.) to their newest versions. Because --latest resolves and rewrites ranges, the diff also replaces every ^x.y.z range in both package.json and bun.lock with an exact pin, which is a departure from the caret convention used by all prior renovate-driven updates in this repo.

  • Updated ~50 dependencies in package.json to their latest resolved versions (e.g. @anthropic-ai/claude-code 2.1.143 → 2.1.150, droid 0.127.0 → 0.132.1, @openai/codex 0.130.0 → 0.133.0).
  • Removed the ^ semver prefix from every dependency entry in package.json and the top-level dependencies block of bun.lock, pinning each one to an exact version.
  • Includes several cross-major bumps: @kaitranntt/ccs 7→8, @upstash/context7-mcp 2→3, ccusage 19→20, chrome-devtools-mcp 0.26→1.0.
  • Regenerated bun.lock (+743/-497) to match the new resolutions.

Issues

3 potential issues found:

  • This "lockfile-style" PR also crosses several true major-version boundaries (@kaitranntt/ccs 7→8, @upstash/context7-mcp 2→3, ccusage 19→20, chrome-devtools-mcp 0.26→1.0), bypassing the All Major Dependencies group in renovate.json that's set up to gate them. Split the majors out (revert them here, let renovate's major group land them individually with changelogs) so breaking CLI changes don't ship silently to home-manager installs. → Autofix
  • package.json and bun.lock are now out of sync: the manifest restores ^x.y.z ranges, but the workspace dependencies block at the top of bun.lock (lines 7-72) still shows the exact pins from the previous commit. The next bun install will rewrite the lockfile to re-add the carets — run bun install and commit the resulting bun.lock so the two stay aligned and any future --frozen-lockfile consumer doesn't fail. → Autofix
  • Two updates appear to violate the minimum-release-age = 604800 (7 days) floor configured in bunfig.toml / .npmrc: @typescript/native-preview 7.0.0-dev.20260525.1 (published today, 2026-05-25) and openclaw 2026.5.22 (3 days old). Confirm bun update --latest honored the floor (or whether prerelease/calver tags are bypassing it) before merging, since this floor is the repo's main guard against yanked/malicious publishes. → Autofix
1 issue already resolved
  • bun update --latest stripped the ^ prefix from every dependency in package.json and bun.lock, pinning them to exact versions and breaking the project's caret convention; combined with renovate.json's rangeStrategy: "bump", this turns every future patch into a manifest+lockfile diff instead of a lockfile-only one. Re-add the carets (e.g. bun update without --latest, or run a sed pass to restore ^ ranges) before merging. (fixed by commit abae972)

CI Checks

Waiting for CI checks...


⚡ Autofix All Issues

@mesa-dot-dev

mesa-dot-dev Bot commented May 25, 2026

Copy link
Copy Markdown

You do not have enough credits to review this pull request. Please purchase more credits to continue.

@coderabbitai

coderabbitai Bot commented May 25, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR pins all package.json dependencies to exact versions by removing caret (^) semver ranges, and bumps numerous packages to their latest releases. The change affects a single cohort of dependency version management spanning approximately 64 lines in package.json.

Changes

Dependency Version Management

Layer / File(s) Summary
Dependency Pinning and Version Bumps
package.json
All dependencies entries transition from caret-range semver (^x.y.z) to pinned exact versions. Multiple packages including @kaitranntt/ccs, @oh-my-pi/*, @openai/codex, @pulumi/pulumi, @sourcegraph/amp, @traces-sh/traces, @typescript/native-preview, @upstash/context7-mcp, acpx, chrome-devtools-axi, chrome-devtools-mcp, droid, gh-axi, mcporter, openclaw, oxfmt, oxlint, paperclipai, takt, and others are bumped to newer releases.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • shunkakinoki/dotfiles#1595: Both PRs only modify package.json dependency versions, pinning/bumping across largely the same packages.
  • shunkakinoki/dotfiles#1627: Both PRs modify package.json dependency versions for many of the same packages with differing caret/pinning semantics.
  • shunkakinoki/dotfiles#1284: Both PRs modify the same package.json dependencies entries by bumping/changing dependency versions.

Suggested labels

dependencies

Poem

🐰 Versions pinned with careful care,
No caret ranges floating there,
Each package locked to its place,
Dependencies in stable grace!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore(deps): bun update --latest' directly describes the main change: updating dependencies to their latest versions via Bun.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The pull request description clearly relates to the changeset, detailing dependency updates across multiple package managers and explaining the rationale for restoring caret ranges.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/bun-update-lock

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.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request updates numerous dependencies in package.json and converts them from caret-based ranges to pinned versions. A critical version mismatch was identified between the ccusage core package and its scoped extensions, which could lead to runtime errors.

Comment thread package.json Outdated
"agent-browser": "0.27.0",
"agentcash": "0.14.4",
"btca": "2.0.5",
"ccusage": "20.0.4",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

The ccusage package has been updated to version 20.0.4, but the related scoped packages in the same suite (@ccusage/amp, @ccusage/codex, @ccusage/opencode, and @ccusage/pi) remain on version 19.0.0 (lines 17-21). This version mismatch between the core package and its plugins/extensions is highly likely to cause compatibility issues or runtime errors. Please ensure the entire ccusage suite is updated to compatible versions.

Comment thread package.json Outdated
Comment thread package.json Outdated
"@fission-ai/openspec": "1.3.1",
"@getgrit/cli": "0.1.0-alpha.1743007075",
"@github/copilot": "1.0.54",
"@google/gemini-cli": "0.43.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Major-version bumps mixed into a lockfile-maintenance PR. bun update --latest doesn't respect the major/non-major split that renovate.json enforces (packageRules at lines 97-108 vs 146-156). Inside this single PR:

  • @kaitranntt/ccs ^7.79.18.1.0
  • @upstash/context7-mcp ^2.2.53.0.0
  • ccusage ^19.0.320.0.4
  • chrome-devtools-mcp ^0.26.01.0.1

These are exactly the cases that should land via the All Major Dependencies group so the release notes get a look. Consider reverting them in this PR and letting renovate raise them separately.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No issues found across 2 files

Re-trigger cubic

Comment thread bun.lock
"vite": "^8.0.13",
"vite-plus": "^0.1.21",
"xcodebuildmcp": "^2.5.2",
"@anthropic-ai/claude-code": "2.1.150",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Lockfile workspace deps drifted from package.json. Commit abae972 re-added the ^ prefix to every entry in package.json but left the workspace dependencies map in bun.lock (lines 7-72) at the exact pins from the prior commit (e.g. "@anthropic-ai/claude-code": "2.1.150" here vs "^2.1.150" in package.json). On main this block mirrored the manifest with carets, and the next bun install will rewrite it to re-add them. Please run bun install and commit the refreshed bun.lock so the two files stay in sync (and any future --frozen-lockfile CI step doesn't fail on a manifest/lockfile mismatch).

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@package.json`:
- Around line 14-77: The installer is not passing the desired version when
installing globals, so Bun can resolve a newer drifted version; update
home-manager/modules/npm-globals/install-npm-globals.sh to use the extracted
version spec when calling bun (use bun add --global "${dep}@${wanted}" or
equivalent) and ensure the script still correctly extracts the wanted variable
from package.json (the dep and wanted variables referenced in the diff);
alternatively, if you prefer strict reproducibility, change package.json entries
to exact versions (remove caret ranges) and keep the installer call as-is.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9371ccd7-ea4c-47ce-9784-9d86989f8789

📥 Commits

Reviewing files that changed from the base of the PR and between dcb7aa5 and 704c872.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (1)
  • package.json

Comment thread package.json Outdated
Comment on lines +14 to +77
"@anthropic-ai/claude-code": "2.1.150",
"@augmentcode/auggie": "0.28.0",
"@biomejs/biome": "2.4.15",
"@ccusage/amp": "19.0.0",
"@ccusage/codex": "19.0.0",
"@ccusage/mcp": "18.0.11",
"@ccusage/opencode": "19.0.0",
"@ccusage/pi": "19.0.0",
"@fission-ai/openspec": "1.3.1",
"@getgrit/cli": "0.1.0-alpha.1743007075",
"@github/copilot": "1.0.54",
"@google/gemini-cli": "0.43.0",
"@google/jules": "0.1.42",
"@googleworkspace/cli": "0.22.5",
"@kaitranntt/ccs": "8.1.0",
"@mariozechner/pi-coding-agent": "0.73.1",
"@nanocollective/nanocoder": "1.26.1",
"@oh-my-pi/pi-coding-agent": "15.2.4",
"@oh-my-pi/pi-natives": "15.2.4",
"@oh-my-pi/swarm-extension": "13.17.0",
"@openai/codex": "0.133.0",
"@pencil.dev/cli": "0.2.6",
"@pkieltyka/gitgenie": "0.1.2",
"@pulumi/pulumi": "3.243.0",
"@redwoodjs/agent-ci": "0.16.2",
"@schpet/linear-cli": "2.0.0",
"@sourcegraph/amp": "0.0.1779686836-g4ef406",
"@steipete/bird": "0.8.0",
"@tobilu/qmd": "2.5.2",
"@traces-sh/traces": "0.5.9",
"@typescript/native-preview": "7.0.0-dev.20260525.1",
"@upstash/context7-mcp": "3.0.0",
"@vibe-kit/grok-cli": "0.0.34",
"acpx": "0.10.0",
"agent-browser": "0.27.0",
"agentcash": "0.14.4",
"btca": "2.0.5",
"ccusage": "20.0.4",
"chrome-devtools-axi": "0.1.23",
"chrome-devtools-mcp": "1.0.1",
"clawdhub": "0.3.0",
"cline": "3.0.13",
"deepsec": "2.0.10",
"droid": "0.132.1",
"get-shit-done-cc": "1.42.3",
"gh-axi": "0.1.19",
"mcp-remote": "0.1.38",
"mcporter": "0.11.3",
"obsidian-headless": "0.0.8",
"open-composer": "0.8.23",
"openclaw": "2026.5.22",
"oxfmt": "0.51.0",
"oxlint": "1.66.0",
"paperclipai": "2026.517.0",
"playwright-chromium": "1.60.0",
"portless": "0.13.0",
"ralph-tui": "0.12.0",
"takt": "0.42.0",
"tokscale": "2.1.3",
"turbo": "2.9.14",
"typescript": "6.0.3",
"vite": "8.0.14",
"vite-plus": "0.1.22",
"xcodebuildmcp": "2.5.2"

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 | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Verify package.json has exact versions in dependencies
echo "== Checking for exact dependency specs in package.json =="
jq -r '.dependencies | to_entries[] | "\(.key)=\(.value)"' package.json \
  | awk -F= '
    $2 !~ /^[0-9A-Za-z.+-]+$/ { print "non-exact or ranged:", $0; bad=1 }
    END { if (!bad) print "all dependency specs appear exact/pinned" }
  '

# Verify installer command does not include @<version>
echo
echo "== Inspecting npm globals installer install command =="
fd -a 'install-npm-globals.sh' \
| while read -r f; do
    echo "-- $f"
    rg -n 'bun add --global' "$f"
    rg -n 'MISSING\+\=' "$f"
  done

echo
echo "Expected confirmation:"
echo "1) package.json dependencies are pinned"
echo "2) installer uses dep name only (no `@version`), so pins are not enforced during global install"

Repository: shunkakinoki/dotfiles

Length of output: 3283


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate the installer script and inspect how it builds `$dep`
f="$(fd -a 'install-npm-globals\.sh$' . | head -n 1 || true)"
if [[ -z "${f}" ]]; then
  echo "install-npm-globals.sh not found"
  exit 1
fi
echo "== Found: $f =="

echo
echo "== Line count =="
wc -l "$f"

echo
echo "== Relevant section (where dep/wanted_ver are built) =="
# Print the whole file if it's small enough; otherwise print a window around the bun add line.
bun_line="$(rg -n 'bun add --global "\$dep"' "$f" | head -n1 | cut -d: -f1 || true)"
if [[ -z "${bun_line}" ]]; then
  echo "Could not find bun add line; dumping first 220 lines:"
  nl -ba "$f" | sed -n '1,220p'
else
  start=$((bun_line-80))
  end=$((bun_line+20))
  nl -ba "$f" | sed -n "${start},${end}p"
fi

echo
echo "== Grep for key variables =="
rg -n 'wanted_ver|dep=' "$f" || true

Repository: shunkakinoki/dotfiles

Length of output: 369


🏁 Script executed:

#!/bin/bash
set -euo pipefail

f="$(fd -a 'install-npm-globals\.sh$' . | head -n 1 || true)"
if [[ -z "${f}" ]]; then
  echo "install-npm-globals.sh not found"
  exit 1
fi
echo "== Found: $f =="

echo
echo "== Line count =="
wc -l "$f"

echo
echo "== Grep for key variables =="
rg -n 'wanted_ver|dep=' "$f" || true

echo
echo "== Grep for bun add line =="
bun_line="$(rg -n 'bun add --global "\$dep"' "$f" | head -n1 || true)"
echo "$bun_line"

line_no="$(echo "$bun_line" | cut -d: -f1)"
if [[ -z "${line_no}" || ! "${line_no}" =~ ^[0-9]+$ ]]; then
  echo "Could not parse bun add line; dumping first 220 lines:"
  cat -n "$f" | sed -n '1,220p'
else
  start=$((line_no-80))
  end=$((line_no+25))
  echo
  echo "== Context around line $line_no (lines $start-$end) =="
  cat -n "$f" | sed -n "${start},${end}p"
fi

echo
echo "== Raw excerpt: any line mentioning wanted_ver or dep in the 120-190 range =="
cat -n "$f" | sed -n '120,199p' | rg -n 'wanted_ver|dep=' || true

Repository: shunkakinoki/dotfiles

Length of output: 5882


Pinned dependency versions aren’t enforced during Bun global install

package.json lines 14-77 use caret/range specs (e.g. ^2.1.150), and the installer logic in home-manager/modules/npm-globals/install-npm-globals.sh extracts dep/wanted for comparison but installs/updates via bun add --global "$dep" (no @${wanted}), so the resolved global version can drift instead of matching the intended pinned/reproducible version(s).

  • Install should include the version spec from package.json (e.g. bun add --global "${dep}@${wanted}") and/or update package.json to exact versions (no ^) to make reproducibility real.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@package.json` around lines 14 - 77, The installer is not passing the desired
version when installing globals, so Bun can resolve a newer drifted version;
update home-manager/modules/npm-globals/install-npm-globals.sh to use the
extracted version spec when calling bun (use bun add --global "${dep}@${wanted}"
or equivalent) and ensure the script still correctly extracts the wanted
variable from package.json (the dep and wanted variables referenced in the
diff); alternatively, if you prefer strict reproducibility, change package.json
entries to exact versions (remove caret ranges) and keep the installer call
as-is.

@shunkakinoki
shunkakinoki merged commit 0ac9cd7 into main May 25, 2026
32 checks passed
@shunkakinoki
shunkakinoki deleted the chore/bun-update-lock branch May 25, 2026 09:31
@coderabbitai coderabbitai Bot mentioned this pull request May 31, 2026
2 tasks
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