Skip to content

fix(deps): update all non-major dependencies (minor) - #1951

Merged
shunkakinoki merged 1 commit into
mainfrom
renovate/all-minor-patch
Jun 26, 2026
Merged

fix(deps): update all non-major dependencies (minor)#1951
shunkakinoki merged 1 commit into
mainfrom
renovate/all-minor-patch

Conversation

@shunkakinoki

@shunkakinoki shunkakinoki commented Jun 25, 2026

Copy link
Copy Markdown
Owner

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update Pending
@augmentcode/auggie ^0.29.0^0.30.0 age confidence dependencies minor 0.31.0
@google/gemini-cli ^0.46.0^0.47.0 age confidence dependencies minor 0.49.0
@openai/codex (source) ^0.140.0^0.141.0 age confidence dependencies minor 0.142.2 (+2)
@openai/codex-darwin-arm64 (source) 0.140.00.141.0 age confidence optionalDependencies minor 0.142.2 (+2)
@openai/codex-darwin-x64 (source) 0.140.00.141.0 age confidence optionalDependencies minor 0.142.2 (+2)
@openai/codex-linux-arm64 (source) 0.140.00.141.0 age confidence optionalDependencies minor 0.142.2 (+2)
@openai/codex-linux-x64 (source) 0.140.00.141.0 age confidence optionalDependencies minor 0.142.2 (+2)
@openai/codex-win32-arm64 (source) 0.140.00.141.0 age confidence optionalDependencies minor 0.142.2 (+2)
@openai/codex-win32-x64 (source) 0.140.00.141.0 age confidence optionalDependencies minor 0.142.2 (+2)
acpx ^0.10.0^0.11.0 age confidence dependencies minor 0.11.2 (+1)
docker/dockerfile 1.241.25 age confidence syntax minor
droid (source) ^0.150.1^0.152.0 age confidence dependencies minor 0.159.0 (+9)
huggingface-hub >=1.19.0>=1.20.1 age confidence dependency-groups minor 1.21.0
takt ^0.46.0^0.47.0 age confidence dependencies minor 0.48.0
vite-plus (source) ^0.1.24^0.2.1 age confidence dependencies minor

Release Notes

google-gemini/gemini-cli (@​google/gemini-cli)

v0.47.0

Compare Source

What's Changed

Full Changelog: google-gemini/gemini-cli@v0.46.0...v0.47.0

openclaw/acpx (acpx)

v0.11.0

Compare Source

Changes
  • Agents/built-ins: bump the default Claude ACP adapter range to @agentclientprotocol/claude-agent-acp@^0.37.0. Thanks @​trumpyla.
  • Runtime/embedding: surface cost, token usage breakdowns, and advertised command metadata on runtime status/events. Thanks @​DaniAkash.
  • Agents/built-ins: add fast-agent as a built-in fast-agent ACP adapter via uvx fast-agent-mcp acp.
  • Agents/built-ins: add mux as a built-in coder/mux ACP adapter via npx -y mux@^0.27.0 acp. Thanks @​ThomasK33.
  • CLI: add acpx compare to run one prompt across multiple agents and summarize timing, token usage, stop reason, permissions, and final output side by side. Thanks @​mvanhorn.
Breaking
Fixes
  • Runtime/embedding: export a stable typed error and predicate for requested model
    selectors that an ACP agent does not support, including whether model
    capability is missing or the requested id is unadvertised, so embedders do not
    need to match error text.
  • CLI/Claude: isolate built-in Claude ACP sessions from user settings by default so globally enabled channel and daemon plugins cannot interfere with a spawned session. Set ACPX_CLAUDE_INCLUDE_USER_SETTINGS=1 to restore user settings deliberately. Fixes #​361.
  • ACP/models: support SDK 0.25 model config options while preserving session/set_model compatibility for adapters that explicitly advertise legacy model metadata.
  • CLI/Claude: let Claude Code adjudicate model selectors missing from a stale advertised model list on later persistent turns, and preserve the adapter-reported current model after model switches. Thanks @​oakif.
  • Client/ACP: advertise scoped Devin/Windsurf-compatible client metadata and handle Devin extension requests/notifications without noisy method-not-found logs. Thanks @​LivioGama.
  • Runtime/sessions: treat corrupt public file-session records as missing while preserving genuine filesystem errors. Thanks @​KrasimirKralev.
Factory-AI/factory (droid)

v0.152.0

Compare Source

v0.151.0

Compare Source

huggingface/huggingface_hub (huggingface-hub)

v1.20.1

Compare Source

Full Changelog: huggingface/huggingface_hub@v1.20.0...v1.20.1

v1.20.0: [v1.20.0] Browser-based OAuth login, multi-commit folder uploads, and more

Compare Source

🔒 Browser-based OAuth login

hf auth login now defaults to a browser-based OAuth Device Code flow instead of asking you to copy-paste a token. The command prints a URL and a short code, you authorize in the browser, and the CLI retrieves and saves the token for you. The same applies to login() in Python. In an interactive terminal you still get a gh-style arrow-key menu to pick between browser login and pasting a token, and --token works exactly as before.

OAuth tokens expire after 30 days, but they come with a refresh token: get_token() transparently refreshes them when less than a day of validity remains, so long-running setups keep working without re-authenticating. hf auth list now shows the expiry date for OAuth tokens.

> hf auth login
? How would you like to log in? Log in with your browser

    Open this URL in your browser:
        https://hf.co/oauth/device

    And enter the code: 52AT-FLYZ

    Waiting for authorization.

When the command is run by an AI agent, it never prompts. Instead it streams structured events so the agent can surface the URL and code to its user, then blocks until a terminal auth_success / auth_error event:

$ hf auth login --format json
{"event": "device_code", "verification_uri": "https://hf.co/oauth/device", "user_code": "52AT-FLYZ", "verification_uri_complete": "https://hf.co/oauth/device", "expires_in": 300, "interval": 5}
{"event": "auth_success", "user": "celinah", "token_name": "oauth-celinah"}

hf auth list surfaces the new expiry column:

$ hf auth list
  name          token       expires
- ------------- ----------- -------------------
  my-token      hf_****5678
* oauth-user    hf_****1234 2026-07-09
  oauth-old     hf_****9999 2026-06-09 (expired)

Finally, notebook_login() now renders the link and code with plain IPython.display.HTML, dropping the ipywidgets dependency.

⚡ Faster, more reliable hf upload for large folders

hf upload and the underlying upload_folder have been revamped to be faster and far more robust on large folders. When hf_xet is installed (the default), uploads now run through a streamed, multi-commit pipeline built on the XetSession API: the folder is scanned and fed into a background Xet upload while previous batches are committed in parallel, and files are hashed in a single read pass while they are chunked (the old flow read every large file twice). Nothing changes in how you call it:

hf upload <repo-id> <path/to/folder>

This is a drop-in replacement for experimental hf upload-large-folder used until today, which will be deprecated in a future release.

🚨🚨 Breaking change: With the upload_folder and hf upload revamp, uploading a folder might result in multiple commits. It is also not possible to open a PR against a specific revision while using upload_folder. If you pass create_pr=True, it will necessarily create a PR against main. It will open the PR no matter if some changes have been committed (previously an empty commit was resulting in no PR opened at all).

What you get on large folders:

  • More reliable. Uploads are resumable and stateless. If an upload is interrupted, just re-run the same command: already-committed files are detected and skipped, and already-uploaded chunks are deduplicated by the Xet backend (≈0 bytes re-transferred). There are no local state files to go stale, so resume even works from a different machine.
  • Faster. Files are hashed while being chunked (single read pass) and batches commit in the background while the next batch is already uploading, so there is no separate hashing phase blocking the upload.
  • Multi-commit by default. Large folders are automatically split into adaptive commits that scale between 64 and 1024 files based on commit duration. Folders that fit in a single batch still produce exactly one commit, as before; follow-up commits get a (part N) suffix.
  • Live progress bar tracking the preparing, uploading, and committing stages (with a plain-log fallback when output is not a TTY):
Found 301 files to upload
  Preparing   ████████████████████  301 / 301 ✓
  Uploading   █████████████████░░░  255 / 300 files  25.5MB · 1.86MB/s
  Committing  ░░░░░░░░░░░░░░░░░░░░  0 / 301

upload_large_folder / hf upload-large-folder are intentionally left untouched in this release; their deprecation will follow once hf upload has fully absorbed the use case.

💻 Jobs: wait, SSH access, and cleaner error messages

This release adds three major capabilities to Hugging Face Jobs.

Wait for completion. HfApi.wait_for_job() and hf jobs wait block until one or more Jobs reach a terminal stage, which makes it easy to chain commands in CI scripts. wait_for_job accepts a single id or a list, returns the final JobInfo even on failure (check job.status.stage), and only raises TimeoutError on timeout. The CLI exits 0 only if all waited-on Jobs ended COMPLETED.

# Wait on a single job, then run the next step only if it succeeded
hf jobs wait <job_id> && next-step

# Wait on a batch, with a timeout
hf jobs wait <id1> <id2> --timeout 10m

⚠️ Breaking change: non-detached hf jobs run / hf jobs uv run now exit with the Job's outcome (exit code 1 if the Job errored) instead of always exiting 0. We consider this a bugfix — scripts relying on the old behavior were being silently misled — but it is called out here in case you depend on the previous exit code.

SSH access. With --ssh at launch and an SSH key registered on huggingface.co/settings/keys, you can connect straight into a running Job's container with hf jobs ssh <job_id>. Thanks to wait_for_job, hf jobs ssh now waits for the Job to reach RUNNING before connecting (with a status spinner) instead of failing immediately while it is still scheduling.

$ hf jobs run --ssh --detach python:3.12 sleep infinity
✓ Job started
  id: 6a33ba2aef9220ea67d98a03
  url: https://huggingface.co/jobs/Wauplin/6a33ba2aef9220ea67d98a03
Hint: Use `hf jobs ssh Wauplin/6a33ba2aef9220ea67d98a03` to open an SSH session into the job.

$ hf jobs ssh Wauplin/6a33ba2aef9220ea67d98a03
Job is running.
Running `ssh 6a33ba2aef9220ea67d98a03@&#8203;ssh.hf.jobs`
root@j-wauplin-6a33ba2aef9220ea67d98a03-do4bduvn-5f153-458k4:/#

Readable errors. A new JobNotFoundError and the switch from response.raise_for_status to hf_raise_for_status turn raw httpx tracebacks into clean, actionable messages. Per-command try/except blocks were removed in favor of the global CLI error handling.

$ hf jobs inspect 000
Error: 404 Client Error. (Request ID: Root=1-6a316470-...)

Job Not Found for url: https://huggingface.co/api/jobs/Wauplin/000.
Please make sure you specified the correct job ID and namespace.
Set HF_DEBUG=1 as environment variable for full traceback.

🖥️ Custom-container deploy for Inference Endpoints

hf endpoints deploy can now deploy custom Docker containers end-to-end, no more hand-writing JSON and POSTing the raw endpoints API. New flags wire up the image and its runtime: --custom-image, --health-route, --port, --command, and --container-args. Environment variables and secrets can be injected with --env/--env-file and --secrets/--secrets-file. On the SDK side, create_inference_endpoint gains container_command and container_args parameters.

hf endpoints deploy nex-n2-pro \
  --repo nex-agi/Nex-N2-Pro \
  --framework custom \
  --accelerator gpu --vendor aws --region us-east-1 \
  --instance-type nvidia-h200 --instance-size x8 \
  --custom-image nexagi/sglang:v0.5.12 \
  --health-route /health --port 30000 \
  --container-args "--reasoning-parser qwen3 --tool-call-parser qwen3_coder --mamba-scheduler-strategy extra_buffer --tp 8" \
  --env MODEL_ID=/repository \
  --type authenticated

The type parameter now defaults to authenticated instead of the deprecated protected (passing protected emits a FutureWarning). The custom-container flags raise a clean error if used without --custom-image.

  • [Inference Endpoints] Custom-container deploy CLI + deprecate protected endpoint type by @​gary149 in #​4329

⏳ Wait for a Space with wait_for_space and hf spaces wait

Mirroring the new wait_for_job primitive, HfApi.wait_for_space() and hf spaces wait block until a Space leaves an intermediate stage (BUILDING, APP_STARTING, …) and settles on a final state. The CLI exits 0 if the Space is RUNNING, non-zero otherwise. hf spaces ssh and hf spaces dev-mode were refactored to use wait_for_space internally instead of the old CLI-only helper.

# Wait after a restart
hf spaces restart username/my-space && hf spaces wait username/my-space

# With a timeout
hf spaces wait username/my-space --timeout 5m
>>> from huggingface_hub import restart_space, wait_for_space
>>> restart_space("username/my-space")
>>> runtime = wait_for_space("username/my-space")
>>> runtime.stage
'RUNNING'

📚 Documentation: CLI guide — wait for a Space · Space runtime reference

💔 Breaking Changes

🚨🚨 With the upload_folder and hf upload revamp, uploading a folder might result in multiple commits.
It is also not possible to open a PR against a specific revision while using upload_folder. If you pass create_pr=True, it will necessarily create a PR against main. It will open the PR no matter if some changes have been committed (previously an empty commit was resulting in no PR opened at all).

RepoUrl now rejects canonical single-segment repo IDs like "gpt2" or "datasets/squad" (use "user/gpt2" or "datasets/user/squad" instead). repo_type_and_id_from_hf_id is softly deprecated. parse_hf_uri gains an endpoint argument to parse URLs from self-hosted Hub instances.

  • [URIs] Use parse_hf_uri in RepoUrl + soft-deprecate repo_type_and_id_from_hf_id by @​Wauplin in #​4324

Non-detached hf jobs run / hf jobs uv run now exit with the Job's outcome (exit 1 on Job error) instead of always exiting 0

  • [Jobs] Add hf jobs wait and HfApi.wait_for_job by @​Wauplin in #​4345 — see the Jobs highlight above.

🖥️ CLI

  • [CLI] Suggest creating repo/bucket on NotFound errors by @​Wauplin in #​4372 — when a repo or bucket can't be found, the CLI now hints at the matching create command instead of just reporting the 404.

🔧 Other QoL Improvements

  • [HTTP] Retry on HTTP 408 Request Timeout by default by @​Wauplin in #​4360408 Request Timeout is now part of the default retry status set, alongside the existing 5xx codes.

📖 Documentation

🐛 Bug and typo fixes

  • OIDC: Include error_description in HTTP error messages by @​coyotte508 in #​4341 — failed OIDC exchanges now surface the server's error_description, making misconfigured Trusted Publishers far easier to debug.
  • [Download] Retry on RemoteProtocolError in http_get by @​Wauplin in #​4351 — transient connection drops mid-download are now retried instead of failing the download.
  • Ignore Windows metadata files in cache scan by @​Chinmay1220 in #​4357desktop.ini and similar Windows metadata files no longer trip up scan-cache.

🏗️ Internal

nrslib/takt (takt)

v0.47.0

Compare Source

Added
  • Finding Contract — structured finding lifecycle for review workflows (#​816, #​826, #​839, #​840, #​842, #​845). Review findings are now tracked in a formal ledger (findings-ledger.json) with lifecycle states (new, persists, resolved, reopened), severity levels, and deduplication. A dedicated findings-manager persona reconciles raw findings from multiple reviewers, allocating stable IDs (F-0001, F-0002, …) and detecting conflicts. New implementation under src/core/workflow/findings/ (reconciler, store, manager-runner, validation), with finding-contract output contracts for all review types (coding, architecture, security, QA, frontend, testing, terraform, CQRS/ES, pure, AI antipattern). Two new workflows ship with finding contract support: takt-default-with-fc and peer-review-with-fc. Enable by adding a finding_contract section to a workflow YAML.
  • provider_routing config for persona, tag, and step-based provider selection (#​844, #​846). A new provider_routing config section routes provider/model/provider_options by three dimensions: personas (by raw persona key), tags (by step tag), and steps (by step name). Resolution priority is step direct > provider_routing.steps > provider_routing.tags > provider_routing.personas > legacy persona_providers > workflow > CLI. Configurable in project (.takt/config.yaml) or global (~/.takt/config.yaml).
  • Step tags on all builtin workflows (#​851). Every builtin workflow step now carries a tags array (e.g. plan, coding, review, implementation, edit). Tags are the primary key for provider_routing.tags, letting you apply provider/model overrides by category rather than individual step name. Tags are also supported on parallel sub-steps.
  • Trace discovery for OTel spans (#​843, #​847). New traceDiscovery module builds a structured WorkflowTraceDiscovery object (service name, runId, workflow name, task metadata, git branch/base info) and searchable query strings, enabling correlation of workflow runs with external observability tools like Grafana Tempo.
  • Trace task metadata enrichment (#​827, #​829). Task metadata (source, issue/PR numbers, branch, slug, summary) is now extracted into structured WorkflowTraceTaskMetadata and propagated into OTel spans and trace discovery output.
  • Named resource resolver for provider options and facets (#​820, #​824). A secure 3-layer resolver (namedResourceResolver.ts) searches .takt/provider-options/~/.takt/provider-options/ → builtin provider-options/ directories by bare name with extension fallback (.yaml/.yml), validating against path traversal and verifying symlinks stay inside allowed directories. Used by the new extends keyword.
Changed
  • BREAKING: provider_options.$ref renamed to provider_options.extends (#​820, #​824). The $ref key in step/workflow provider_options that referenced shared YAML files has been renamed to extends. The value is now a bare name (e.g. extends: edit) resolved through the 3-layer named resource resolver, instead of a relative file path (e.g. $ref: provider-options/edit.yaml). Custom workflows using $ref must be updated. Builtin provider options files moved from builtins/{lang}/workflows/provider-options/ to builtins/{lang}/provider-options/. User overrides go in .takt/provider-options/ or ~/.takt/provider-options/.
  • BREAKING: persona_providers deprecated in favor of provider_routing (#​844, #​846). The persona_providers config key still works but is now deprecated. It matches on display name which is fragile; provider_routing.personas matches on the raw persona key instead. Migration: move entries from persona_providers to provider_routing.personas.
  • Report phase tool call detection hardened. The report phase now actively detects and rejects provider tool calls (which are forbidden in this phase), returning a retryable error instead of silently producing broken output. Report file writing logic extracted to a shared report-writer.ts module.
  • Review and coding policies strengthened. Review policy expanded with new REJECT conditions for contract coverage, contract consistency, specification completeness, requirement anchoring, and resolution judgment. Coding policy wired into review workflows that were previously missing it (#​848).
  • Supervisor instructions overhauled for both regular and maintenance modes, with clearer scoping and validation criteria.
  • Knowledge facets expanded: architecture patterns, backend exception translation scope, CQRS/ES domain patterns.
Fixed
  • Cursor CLI config rename ENOENT on parallel execution (#​802, #​819). The Cursor CLI intermittently fails with ENOENT when its internal cli-config.json.tmpcli-config.json rename races across parallel reviewer steps. TAKT now retries with exponential backoff (up to 8 attempts, 1–30 s delay) instead of treating it as a fatal provider error.
  • OpenCode unavailable-tool loops (#​822). The OpenCode provider could loop indefinitely when the agent repeatedly called unavailable tools. A new UnavailableToolLoopDetector breaks the session after 2 consecutive unavailable-tool errors, surfacing a clear failure message.
  • Review findings anchored to original requirements (#​830). Reviewers could drift from the original task requirements when evaluating findings. Instructions and output contracts now enforce anchoring review judgments against the plan and original task description.
Internal
  • AI antipattern review policy restructured as a standalone facet with finding-contract output contracts.
  • Testing policy facet added with guidance against absence-only tests.
  • README status badges added (#​835).
  • 20+ new test files covering finding contract, provider routing, trace discovery, trace task metadata, report phase retry, named resource resolver, workflow spans, and more.
  • Configuration and workflow documentation updated for provider_routing and extends.
  • WorkflowEngineSetup extracted for cleaner engine initialization.
  • WorkflowRunLoop enhanced with failure metadata and command gate improvements.
  • Repertoire pack-summary rewritten to support named resource resolution and extends references.
voidzero-dev/vite-plus (vite-plus)

v0.2.1: vite-plus v0.2.1

Compare Source

Restores support for older Node.js (back to 20.19.0) and makes vp exec --fail-if-no-match fail correctly on unmatched filters.

Fixes & Enhancements
  • Stop blocking older Node.js versions: v0.2.0 blocked commands when the resolved Node.js version fell outside the declared range. This reverts that enforcement and widens engines.node to ^20.19.0 || ^22.18.0 || >=24.11.0, matching Vite's own ^20.19.0 floor, so older Node that works in practice (e.g. Node 20 in rolldown CI) is no longer rejected (#​1865), by @​fengmk2
  • vp exec --fail-if-no-match: exit non-zero when one or more --filter expressions match no workspace packages. Strict mode previously only warned and returned success, so typoed filters looked successful in CI even though no package command ran (#​1859), by @​jong-kyung
Bundled Versions
Tool Version Source
vite 8.0.16 f94df87
rolldown 1.1.1 d7f919c
tsdown 0.22.3 npm
vitest 4.1.9 npm
oxlint 1.70.0 npm
oxlint-tsgolint 0.23.0 npm
oxfmt 0.55.0 npm
Upgrade
vp upgrade
Upgrading from 0.1.x to 0.2.1 Prompt
You are upgrading a project that uses Vite+ (the `vp` CLI) from v0.1.x to v0.2.1.

v0.2.1 has one breaking change vs v0.1.x: it consumes upstream Vitest directly. The `@voidzero-dev/vite-plus-test` wrapper package is removed. `vitest` and the base browser runtime (`@vitest/browser`, `@vitest/browser-preview`) now come in transitively through `vite-plus`. The opt-in browser providers (`@vitest/browser-playwright`, `@vitest/browser-webdriverio`) are NOT shipped by `vite-plus`: any project that runs browser-mode tests must install the provider it uses itself.

Do not run `vp migrate` for this upgrade; it is not reliable enough yet. Make the changes yourself by editing the project's files, then verify by running the tools.

How to run vp: if a global `vp` is available, use it. Otherwise this project only ships the local CLI from the `vite-plus` package, so run vp as the project-local binary (for example via the package manager's exec: pnpm exec, npx, yarn, or bunx). After any install, re-resolve vp so you always run the version currently in the project.

Do the following:

1. Set the `vite-plus` dependency to the exact version `0.2.1` and reinstall, so the new toolchain is installed and the lockfile moves off 0.1.x. In a monorepo, do this for every workspace package that depends on `vite-plus` (a shared `catalog:` entry covers them all at once). Changing the spec to `0.2.1` is what moves the lockfile off the old resolution; a reinstall that leaves the spec unchanged would keep the old version.

2. Remove the `@voidzero-dev/vite-plus-test` wrapper from the project. Search everywhere it could appear: package.json, the lockfile, any workspace or catalog config (such as pnpm-workspace.yaml or .yarnrc.yml), and the source files. Then classify the project and apply the matching case. Note these are not exclusive: a browser-mode project is also handled by case C in addition to removing the wrapper config.

   First, determine the project's Vitest usage:
   - BROWSER MODE: the project runs Vitest in the browser. It does if a config or test file imports a real browser provider (`vite-plus/test/browser-playwright` or `vite-plus/test/browser-webdriverio`, or the pre-upgrade raw forms `@vitest/browser-playwright` / `@vitest/browser-webdriverio`), or sets `test.browser.enabled`. This needs extra deps regardless of anything below; see case C.
   - DIRECT vitest usage: a source or test file imports directly from `vitest` or `@vitest/...`, or a `@vitest/*` package is listed in its dependencies (for example a coverage provider). Plain imports from `vite-plus/test` and `vite-plus/test/*` do NOT count as direct usage; a `vite-plus/test/browser-*` provider import is a browser-mode signal (case C), not direct usage.

   Case A - node-mode only (no direct vitest usage, no browser mode; the common case): remove the vitest configuration entirely. In package.json, delete the `vitest` entry from `dependencies` / `devDependencies` in whatever form it takes (a `@voidzero-dev/vite-plus-test` alias, a `catalog:` reference, or a plain version). Also remove the `vitest` entry from every dependency-resolution mechanism in the project: both `overrides` and `resolutions`, pnpm `overrides`/`catalog` (in package.json or pnpm-workspace.yaml), and any catalog entry. If `vitest` appears in more than one of these, remove all of them. Do not add a pinned `vitest`; it arrives transitively through `vite-plus` and the node-mode test command works without it.

   Case B - direct vitest usage: pin upstream vitest to the version bundled with vite-plus (4.1.9 for v0.2.1), and upgrade every vitest ecosystem package the project depends on so the whole tree resolves to a single vitest. Set each `@vitest/*` package the project lists (for example `@vitest/coverage-v8`, `@vitest/ui`, `@vitest/browser`) to that same version (4.1.9), since those are pinned to an exact vitest version. Also update any other vitest integration package (such as `vitest-browser-*`) to a release compatible with that vitest version. Leaving an ecosystem package on an older version pulls in a second copy of vitest, which Vitest rejects at runtime.

   Case C - browser mode (in addition to removing the wrapper config): you MUST add two deps to the workspace package that runs the browser tests (not the repo root, unless that is where the tests live), both pinned to the bundled vitest version so the tree still resolves to a single vitest:
     - The browser provider the project actually uses: `@vitest/browser-playwright@4.1.9` and/or `@vitest/browser-webdriverio@4.1.9`. Without it, config load fails with `Cannot find package '@&#8203;vitest/browser-playwright'` from `vite-plus/test/browser-playwright`. Make sure its framework peer is present too (`playwright` for Playwright, `webdriverio` for WebdriverIO); the project usually already has it.
     - A direct `vitest@4.1.9`. This is the one case where you DO add a pinned vitest, and it contradicts the "never add vitest" rule that holds for node mode. Reason: under pnpm's isolated node_modules, `vitest` is only a transitive dep of `vite-plus`, so the browser-tester Vite server (rooted at the consumer project) cannot resolve `vitest/internal/browser` or the `vitest > ...` optimizeDeps entries. The symptom is `Failed to resolve import "vitest/internal/browser"` followed by `Failed to connect to the browser session ... within the timeout` and a `no tests` run. vite-plus 0.2.1 ships a `vite-plus:vitest-resolver` plugin meant to rescue this, but it does not reach the separate `@vitest/browser` orchestrator server, so a direct `vitest@4.1.9` (matching the bundled version, single copy preserved) is required. (If a future vite-plus fixes the resolver to cover the browser-tester server, this direct `vitest` may become unnecessary; re-check.)

   In all cases, also delete any dependency-resolution config that existed only to accommodate the wrapper or the old vitest, for example pnpm `peerDependencyRules` entries (`allowedVersions` / `ignoreMissing`) referencing `vitest`, `@vitest/*`, or `@voidzero-dev/vite-plus-test`, and the equivalent peer-tweak config in other package managers (such as yarn `packageExtensions`). Leave rules that are unrelated to vitest or the wrapper untouched.

3. Keep the `vite` -> Vite+ core override (it is still required) and set it to the matching exact version: map `vite` to `npm:@&#8203;voidzero-dev/vite-plus-core@0.2.1` in whatever override, resolution, or catalog form the project already uses. `@voidzero-dev/vite-plus-core` is released in lockstep with `vite-plus`.

4. Leave imports from `vite-plus/test` (and `vite-plus/test/*`, including `vite-plus/test/browser-playwright`) unchanged; that is the stable public API. Only if a file imports directly from `@voidzero-dev/vite-plus-test`, repoint it to `vite-plus/test`. Leave `declare module 'vitest'` / `declare module '@&#8203;vitest/browser*'` type augmentations pointing at the upstream module (they must target the upstream identity to merge).

5. Reinstall so the lockfile reflects your edits, then verify:
   - No reference to `@voidzero-dev/vite-plus-test` remains anywhere outside node_modules (source, configs, lockfile).
   - The dependency tree resolves to a single `vitest` version (4.1.9) with no duplicate copies. Note that one `vitest@4.1.9:` entry in the lockfile `packages:` section plus one `vitest@4.1.9(...)` key in `snapshots:` is still a single version, not a duplicate.
   - The project's tests pass with Vitest's native banner; for browser mode, confirm the suite actually runs in the browser (you get passing test files, not `no tests` or a session timeout). Browser tests also need the browser binary installed (e.g. `npx playwright install chromium`).
   - The Vite+ check workflow passes (exit 0). A pre-existing lint/format warning in a file you did not touch is not a failure; report it but do not fix it.

   Troubleshooting: if you hit `vitest/internal/browser` resolution errors, or see duplicate `@vitest/browser` / `vite-plus` peer-variant directories under `node_modules/.pnpm` after several sequential installs across this dependency-graph change, do a clean reinstall (remove `node_modules` in the root and all workspaces, remove the Vite optimize caches `node_modules/.vite`, then reinstall) to collapse the stale variants before concluding it is a code problem.

Constraints:
- Do not run `vp migrate`.
- Do not bypass git hooks. If a pre-existing failure blocks you, report it rather than forcing through.
- Make the smallest set of edits that reaches the end state above; do not reformat unrelated files. (For browser mode, the added `vitest` + provider pins ARE part of that minimal end state.)
- When done, give me a short summary: old vs new `vite-plus` version, the files you changed, the test/check results, and call out explicitly any dependency you added beyond the wrapper removal (especially a direct `vitest`) with the reason.

Full Changelog: voidzero-dev/vite-plus@v0.2.0...v0.2.1

Published Packages
  • @voidzero-dev/vite-plus-core@0.2.1
  • vite-plus@0.2.1
Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or download and run vp-setup.exe from the assets below.

v0.2.0: vite-plus v0.2.0

Compare Source

Vite+ now consumes upstream Vitest directly (no wrapper), raises the minimum supported Node.js version to 22.18.0, and ships corepack and devEngines support.

Highlights
  • vp test now runs upstream Vitest directly (breaking): Vite+ used to ship @voidzero-dev/vite-plus-test, a rebundled copy of Vitest that lagged upstream releases. That package is removed; vp test now runs the real upstream vitest, which is installed automatically as a dependency of vite-plus (you no longer add vitest or @vitest/* yourself, and vite still resolves to @voidzero-dev/vite-plus-core via package-manager overrides). Your import ... from 'vite-plus/test' code keeps working unchanged and vp migrate updates existing projects (#​1588), by @​Brooooooklyn
  • Minimum supported Node.js version raised to ^22.18.0 || >=24.11.0 (breaking): Node 20 reached end-of-life and the bundled tsdown already required ^22.18.0, so the published engines range now matches what vp pack can actually deliver; vp exec / vp run / vp dlx reject projects resolving an older Node with the existing incompatibility error (#​1813), by @​fengmk2
  • Corepack now works under Vite+: corepack now set up by default, so corepack enable and the pnpm/yarn launchers just work, even on Node 25+ which no longer ships it. (#​1808), by @​fengmk2
  • devEngines support for runtime and package-manager selection: Vite+ reads devEngines.runtime (ranked above engines.node) and devEngines.packageManager; auto-pin and vp migrate write devEngines.packageManager, vp env pin / unpin target devEngines.runtime, and vp env doctor reports conflicts instead of silently resolving them (#​1760), by @​fengmk2
Features
  • vp pm approve-builds: forward to npm's new approve-scripts / deny-scripts (npm >= 11.16.0) instead of the previous no-op, matching pnpm approve-builds / bun pm trust; mixed approve+deny is rejected with actionable guidance and npm's advisory-only caveat is surfaced (#​1733), by @​fengmk2
  • vp create: support local monorepo templates declared in create.templates in vite.config.ts; vp create vite:generator scaffolds a Bingo generator and auto-registers it in the picker, replacing the old package.json-keyword inference (#​1777), by @​fengmk2
  • vp create: detect direct dependencies whose build scripts the package manager gated (e.g. native builds like better-sqlite3) and act on them; prompt to approve each (default off) interactively, point at vp pm approve-builds non-interactively, or build them with --approve-builds (#​1828), by @​fengmk2
  • vp config: add --no-hooks and --no-agent opt-outs to skip git-hook installation and coding-agent instruction updates (#​1842), by @​leno23
  • vp list -g: sort the global package list output so entries appear in a stable order (#​1748), by @​liangmiQwQ
  • Upgrade upstream dependencies: rolldown 1.0.3 -> 1.1.1, tsdown 0.22.1 -> 0.22.3, oxlint 1.67.0 -> 1.70.0, oxfmt 0.52.0 -> 0.55.0, vitest 4.1.8 -> 4.1.9, and the oxc toolchain 0.133.0 -> 0.136.0 (#​1749, #​1767, #​1812, #​1834, #​1855), by @​voidzero-guard[bot]
Fixes & Enhancements
  • Security: resolve open Rust Dependabot advisories by bumping transitive openssl 0.10.76 -> 0.10.80 (openssl-sys 0.9.112 -> 0.9.116), fixing five high-severity rust-openssl issues (buffer overflows in key derivation, AES key wrap, and digest finalization; an unchecked PSK/cookie trampoline length leaking adjacent memory; and OCSP-responder undefined behavior: GHSA-pqf5-4pqq-29f5, GHSA-8c75-8mhr-p7r9, GHSA-ghm9-cr32-g9qj, GHSA-hppc-g8h3-xhp3, GHSA-xp3w-r5p5-63rr), and drop the unmaintained, unsound libyml (GHSA-gfxp-f68g-8x78, high) by removing dead serde_yml code (#​1742), by @​fengmk2
  • Security (docs site): update mermaid 11.13.0 -> 11.15.0 to fix improper classDef sanitization in state diagrams that allowed HTML injection (CVE-2026-41149 / GHSA-ghcm-xqfw-q4vr, medium severity; <script> tags are stripped so it does not reach XSS) (#​1745), by @​renovate[bot]
  • vp check --fix / vp staged: create/migrate now wrap inline Vite plugins: [...] arrays with lazyPlugins(...) so plugin factories aren't eagerly executed (and don't hang on open handles) during lint/format/check config loading (#​1752), by @​jong-kyung
  • vp migrate: complete pending migration work for projects that already have vite-plus installed (scripts, imports, tsconfig types, ESLint/Prettier, legacy hooks, package-manager settings) instead of treating vite-plus as migration-complete; fully migrated projects stay idempotent (#​1821), by @​jong-kyung
  • vp create / vp migrate: detect shorthand fmt, / lint, config keys so a duplicate inline block is no longer injected (#​1843), by @​fengmk2
  • IDE oxlint/oxfmt wrappers: set `

Note

PR body was truncated to here.


Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

@shunkakinoki
shunkakinoki enabled auto-merge (squash) June 25, 2026 04:25
@indent-zero

indent-zero Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor
PR Summary

Force-push rebased the Renovate PR onto current main and expanded the bump set; still a pure dependency update with bun.lock regenerated. All direct ranges are satisfied by bun.lock, the @openai/codex + 6 platform aliases all move together to 0.141.0, and huggingface-hub 1.20.1 is published on PyPI.

  • @augmentcode/auggie: ^0.29.0^0.30.0
  • @google/gemini-cli: ^0.46.0^0.47.0
  • @openai/codex + all 6 @openai/codex-<platform> optionalDependencies aliases: ^0.140.0^0.141.0
  • acpx: ^0.10.0^0.11.0 (resolves 0.11.2)
  • droid: ^0.150.1^0.152.0
  • takt: ^0.46.0^0.47.0
  • vite-plus: ^0.1.24^0.2.1 (was ^0.2.0 pre-rebase; the floor was bumped to match what bun.lock resolves)
  • pyproject.toml: huggingface-hub[mcp] >=1.19.0>=1.20.1
  • Dockerfile syntax: docker/dockerfile:1.24docker/dockerfile:1.25

Issues

No issues found.

CI Checks

Both failing checks are unrelated to this PR's dependency bumps and not introduced by these changes.

  • upgrade / upgrade-check — fails on make upgrade-devdotagents-syncruler-apply-global with [ruler] Invalid configuration file format (Context: File: /home/runner/.ruler/ruler.toml, Errors: global). The same failure reproduces on the latest main run (28150423329), confirming it's a pre-existing issue with the dotagents submodule's ruler config — not anything in package.json / bun.lock / Dockerfile.
  • docker-check / docker-build-push (linux/arm64) — the amd64 leg passed; arm64 was cancelled mid-build while downloading from cache.nixos.org (HTTP 416 "Requested range not satisfiable" and substituter 'https://cache.nixos.org' is disabled). This is a transient Nix binary-cache infrastructure flake, not a code issue. A re-run should clear it.
Failing upgrade-check
  • Pre-existing failure also present on main (run 28150423329). The upgrade job runs make upgrade-dev which invokes ruler-apply-global against ~/.ruler/ruler.toml (sourced from the dotagents submodule). Ruler rejects the file with Invalid configuration file format (Errors: global). This is unrelated to the npm/Dockerfile bumps in this PR and needs to be fixed in the dotagents submodule's ruler.toml [global] section.
Failing upgrade
  • Root cause of the upgrade-check failure. make upgrade-devdotagents-syncruler-apply-global exits 1 because ruler can't parse the [global] section of ~/.ruler/ruler.toml (provided by the dotagents submodule). Reproduces on main, so it's not caused by this PR.
Failing docker-check
  • Rolled-up status of docker-build-push. The amd64 leg passed; arm64 was cancelled while Nix was downloading from cache.nixos.org (HTTP 416 + substituter 'https://cache.nixos.org' is disabled). Transient binary-cache infrastructure issue, not related to the Dockerfile syntax bump or the npm changes. Re-running the workflow should resolve it.
Failing docker-build-push (linux/arm64, arm64, ubuntu-24.04-arm)
  • Cancelled mid-build due to upstream Nix binary cache failures: cache.nixos.org returned HTTP 416 on multiple NAR fetches and then reported substituter 'https://cache.nixos.org' is disabled, leaving required store paths (e.g. grpc-1.80.0, tinysparql-3.11.1) unbuildable. Transient infra flake unrelated to this PR; a workflow re-run is the right fix.

@mesa-dot-dev

mesa-dot-dev Bot commented Jun 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 Jun 25, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Updated several project dependencies to newer versions.
    • Upgraded the container build syntax version.
    • Bumped a Python tool dependency requirement for the development environment.

Walkthrough

Updated the Dockerfile frontend syntax directive, bumped several Node package versions and @openai/codex platform aliases in package.json, and raised the huggingface-hub[mcp] tools dependency constraint in pyproject.toml.

Changes

Dependency and tooling updates

Layer / File(s) Summary
Dockerfile frontend syntax bump
Dockerfile
The Dockerfile frontend directive now targets docker/dockerfile:1.25.
Node dependency version bumps
package.json
package.json updates versions for @augmentcode/auggie, @google/gemini-cli, @openai/codex, acpx, droid, takt, vite-plus, and the @openai/codex optional aliases.
Python tools dependency bump
pyproject.toml
pyproject.toml raises the tools-group constraint for huggingface-hub[mcp].

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐰 I hopped through manifests with a curious grin,
Bumped versions around and tucked new syntax in.
Docker, Node, and Python now twinkle just so,
A tidy little update in the garden I know.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the dependency update focus and matches the main change.
Description check ✅ Passed The description lists the same dependency bumps and release notes, so it matches the changeset.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch renovate/all-minor-patch

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.

@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 the Dockerfile syntax version to 1.25 and bumps several package dependencies in package.json and bun.lock, including @google/gemini-cli, acpx, and vite-plus. Additionally, the lockfile reflects the removal of jsdom and its related sub-dependencies, replacing them with vitest and its associated packages. I have no feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@mesa-dot-dev

mesa-dot-dev Bot commented Jun 25, 2026

Copy link
Copy Markdown

Mesa Description

TL;DR

Upgrades non-major project dependencies and Dockerfile syntax version to pull in the latest minor updates, bug fixes, and performance improvements.

What changed?

  • package.json: Upgraded development and runtime dependencies:
    • @google/gemini-cli (^0.46.0^0.47.0)
    • acpx (^0.10.0^0.11.0)
    • vite-plus (^0.1.24^0.2.0)
  • Dockerfile: Bumped Dockerfile syntax directive version from 1.24 to 1.25.
  • bun.lock: Regenerated lockfile to align with the new dependency versions.

Description generated by Mesa. Update settings

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

1 issue found across 3 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="package.json">

<violation number="1" location="package.json:78">
P1: vite-plus 0.2.0 requires Node.js >=22.18.0 but package.json has no engines.node declaration. Without engine constraints, npm/yarn/bun won't warn users on older Node versions, causing silent failures at runtime.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread package.json Outdated
"typescript": "^6.0.3",
"vite": "^8.0.16",
"vite-plus": "^0.1.24",
"vite-plus": "^0.2.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.

P1: vite-plus 0.2.0 requires Node.js >=22.18.0 but package.json has no engines.node declaration. Without engine constraints, npm/yarn/bun won't warn users on older Node versions, causing silent failures at runtime.

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

<comment>vite-plus 0.2.0 requires Node.js >=22.18.0 but package.json has no engines.node declaration. Without engine constraints, npm/yarn/bun won't warn users on older Node versions, causing silent failures at runtime.</comment>

<file context>
@@ -75,7 +75,7 @@
     "typescript": "^6.0.3",
     "vite": "^8.0.16",
-    "vite-plus": "^0.1.24",
+    "vite-plus": "^0.2.0",
     "xcodebuildmcp": "^2.6.2"
   },
</file context>

@shunkakinoki
shunkakinoki force-pushed the renovate/all-minor-patch branch from 2fb89c6 to ec4dd4f Compare June 26, 2026 04:28

@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 73-78: Add an engines constraint to package.json before or
alongside the vite-plus dependency update so the required Node baseline is
documented and enforced. Update the package manifest near the top-level metadata
to include a node version requirement that matches vite-plus 0.2.x, and make
sure any existing install/build workflows in the repo are aligned with that
baseline. Use the package.json manifest and the vite-plus dependency entry as
the main touchpoints.
🪄 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: 3be97f99-02a4-46ad-9d7e-1b7f55c6027b

📥 Commits

Reviewing files that changed from the base of the PR and between 89eef89 and ec4dd4f.

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

Comment thread package.json
Comment on lines +73 to +78
"takt": "^0.47.0",
"tokscale": "^3.1.3",
"turbo": "^2.9.18",
"typescript": "^6.0.3",
"vite": "^8.0.16",
"vite-plus": "^0.1.24",
"vite-plus": "^0.2.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Node version declarations =="
for f in $(fd -HI '^(package\.json|\.nvmrc|\.node-version|\.tool-versions)$' . -E .git -E node_modules); do
  echo "--- $f ---"
  rg -n -C2 '"engines"|node-version|nodejs|^([0-9]+\.[0-9]+(\.[0-9]+)?)$' "$f" || true
done

echo
echo "== CI workflow Node setup =="
for f in $(fd -HI '.*\.ya?ml$' .github/workflows -E .git); do
  if rg -n 'setup-node|node-version|node-version-file' "$f" >/dev/null; then
    echo "--- $f ---"
    rg -n -C2 'setup-node|node-version|node-version-file' "$f"
  fi
done

echo
echo "== Dockerfile Node/runtime hints =="
rg -n -C2 'FROM .*node:|ARG .*NODE|nodejs|npm|pnpm|corepack' Dockerfile || true

echo
echo "== package.json scripts using vite/vitest/vite-plus =="
rg -n -C2 'vite-plus|vitest|"\w+":\s*".*\bvite\b' package.json || true

echo
echo "Expected result: every declared/runtime Node version satisfies >=22.18.0 (or >=24.11.0) anywhere vite-plus can run."

Repository: shunkakinoki/dotfiles

Length of output: 676


🏁 Script executed:

cat -n package.json | grep -A 50 "engines" || echo "No engines field found in package.json"

Repository: shunkakinoki/dotfiles

Length of output: 198


Add engines constraint to package.json before adopting vite-plus ^0.2.1.

The repository lacks an engines field, CI workflows, or Docker configuration that would enforce the required Node version (^22.18.0 || >=24.11.0) for vite-plus 0.2.x.
Without these safeguards, the update risks breaking local builds or workflows for developers on older Node versions.

Recommendation:

  • Add the following to package.json to document and enforce the baseline:
    "engines": {
      "node": ">=22.18.0"
    }
  • If this is a local dotfiles-only usage, ensure your development environment explicitly meets the requirement.
Original diff snippet
    "takt": "^0.47.0",
    "tokscale": "^3.1.3",
    "turbo": "^2.9.18",
    "typescript": "^6.0.3",
    "vite": "^8.0.16",
    "vite-plus": "^0.2.1",
🤖 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 73 - 78, Add an engines constraint to package.json
before or alongside the vite-plus dependency update so the required Node
baseline is documented and enforced. Update the package manifest near the
top-level metadata to include a node version requirement that matches vite-plus
0.2.x, and make sure any existing install/build workflows in the repo are
aligned with that baseline. Use the package.json manifest and the vite-plus
dependency entry as the main touchpoints.

@shunkakinoki
shunkakinoki merged commit e8ba75c into main Jun 26, 2026
37 of 39 checks passed
@shunkakinoki
shunkakinoki deleted the renovate/all-minor-patch branch June 26, 2026 06:02
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