Skip to content

Latest commit

 

History

History
91 lines (90 loc) · 28.3 KB

CHANGELOG.md

File metadata and controls

91 lines (90 loc) · 28.3 KB

Changelog

  • Fixed A task specifier like vp run nope#build, where no workspace package is named nope, now fails with Package 'nope' not found in the workspace and exits 1, including from a task's command, instead of running nothing and exiting 0. A short name that auto-completes to several scoped packages, like app for @a/app and @b/app, now fails as ambiguous. --filter nope still only warns and exits 0, unless --fail-if-no-match is set (#984).
  • Added vp run -vv also lists what each cached run depends on, changed or not, and the output files a hit restores: in the detailed summary, under Unchanged: and Outputs:, and with --dry-run --json, as each step's baseline.fingerprint and baseline.outputs. It shows, for an unexpected hit, whether an edited file is an input at all. -v is now a counted flag, so -vv is the same as --verbose --verbose (#969).
  • Added vp run --dry-run --json prints what a run would do as one JSON document for scripts, CI and coding agents: each task the run would run, the tasks it waits for, and each step's program, arguments and directory, with whether it would hit the cache and, if not, every change found. Like vp run --json, it's indented in a terminal and on one line when captured, and its $schema field points to a JSON Schema that describes each field. A task that runs vp run shows that run's own plan as its step. A step that waits on one that would write files first, by running or by restoring outputs, is unknown, since its files may change before it starts. --json with a task requires --dry-run (#966, #967, #968).
  • Changed A cache miss now lists every change to the command, the task's cache settings and the envs it depends on, instead of the first: when a task's input and output settings changed together, or a tracked env var and a file changed together, vp run --verbose and vp run --last-details show each change on its own line. Without -v, files are checked only up to the first changed one; with -v, every input of a miss is checked, and every changed file is listed in path order. When the command, a setting or a cache.env var changed, only those changes are listed, since there's no cached run with the new ones to compare files with. A summary saved by an earlier version can't be shown by vp run --last-details (#961, #963).
  • Added vp run --dry-run shows what a run would do without running anything: each command's line with its cache status, and the summary, as a real run prints them. The cache is checked as in a real run, the remote cache included, and nothing is written: no cache entry, no downloaded or restored outputs, and no change to what vp run --last-details shows. With -v, the detailed summary shows why each command would miss. Like other vp run flags, --dry-run goes before the task name; after it, it's passed to the task (#960).
  • Fixed vp run now exits with code 1 when a task's cache can't be checked, for example because the cache database can't be read. It already stopped there, but exited 0 (#960).
  • Changed The helper files vp run writes to the system temp directory, such as the library that tracks file accesses and the JSON Schema that vp run --json points to, now share one folder that only the current user can write to, like /tmp/vp_run-1000 on Linux, instead of a folder for each kind of file (#974).
  • Perf When several tasks become ready at once, vp run now checks their cache entries at the same time instead of one after another, so cache hits start sooner. Hashing a task's input files for its cache lookup no longer holds up other tasks (#982).
  • Fixed On Windows, the files a task deletes or moves, such as a build cleaning its output folder before writing it again, are no longer among its inputs, as on Linux and macOS. Before, when a later step changed one of those files, for example by stamping a version into the rebuilt output, the next run missed the cache with a reason like 'dist/index.js' modified, though the task never read the file (#980).
  • Changed In @voidzero-dev/vite-task-client, a getEnvs query that matches every env name, { prefix: '' } or *, now returns nothing instead of every environment variable, and no longer adds them to the cache key (#976).
  • Added vp run --json prints every package and task in the workspace, with each task's dependsOn resolved to task IDs, as one JSON document for scripts, editors and coding agents. It runs nothing and, like vp run without a task, loads every package's config. It prints the same document from any directory in the workspace: indented in a terminal, on one line when captured. Its $schema field points to a JSON Schema that describes each field, which vp run writes to the system temp directory (#948).
  • Fixed On Linux, where every user shares the temp folder /tmp, the helper files vp run writes there, such as the library that tracks file accesses, now go in a folder only the current user can write to, like /tmp/fspy-1000. Before, they went in a folder such as /tmp/fspy that belonged to whoever ran vp run first: running a different version as another user failed, and the same version used files that user could replace (#947).
  • Fixed On macOS, task commands that use sh or bash now behave as they do on Linux in four cases. A while read loop with a redirect under set -e no longer exits the script. An EXIT trap now sees the exit status in $?, and a bare exit in the trap keeps that status, so a failed task is no longer reported as successful. $BASH is now set when the command runs as bash. The bundled shell is updated to an Oils build from master that has these fixes (#939).
  • Changed vp run now loads a package's vite.config.* only when the run reaches one of that package's tasks; the workspace root's config still always loads. A run in one package no longer waits for every package's config to load, and a broken config in another package no longer fails it. Runs that reach that package, such as vp run -r build or a task whose dependsOn names one of its tasks, still fail with the config's error, and vp run without a task, which lists every task, still loads every config (#944).
  • Changed Folder listings no longer skip entries named dist: a dist folder appearing in or disappearing from a folder a task lists now makes the next run a cache miss. To keep it out, add "!dist/**" to the task's input (#919).
  • Changed Exclusions in a task's input, like "!dist/**", now also apply to the folders the task lists, so an excluded entry appearing or disappearing there no longer makes the next run a cache miss (#941).
  • Added Rebuildable inputs: tasks that read files they also write are now cached. What a task can rebuild, meaning the files it writes and the folders that hold only those, may be missing on the next run, as on a fresh clone, and a cache hit restores it with the task's outputs (#913, #914, #915, #916, #917, #918).
  • Fixed On Linux and macOS, a task that writes outside the workspace through a relative path with .., like cp -r dist ../site, no longer fails with Cache update failed: paths in archives must not have .., and is now cached. Like any other path outside the workspace, what the task writes there isn't among its outputs, and what it reads there isn't among its inputs (#940).
  • Fixed Tasks that read the task cache folder, node_modules/.vite/task-cache, now hit the cache. vp run changes that folder after every run, and tools such as Parcel and Gatsby read it once they rebuild with their own cache in place, so from then on those tasks missed every time with a reason like 'node_modules/.vite/task-cache/v20/last-summary.json' modified (#937).
  • Fixed A cache hit restores the symbolic links a task's output globs match as links, instead of dropping them, so a replayed output that links a directory, such as a bundler's node_modules/<package> link, is complete (#885).
  • Fixed On Linux and macOS, programs using automatic file-access tracking no longer abort when they call execve, execv, execl, execle, or posix_spawn with an empty path; the call fails with ENOENT, as it does without tracking. On Linux, execveat with an empty path and without AT_EMPTY_PATH now also fails with ENOENT, instead of trying to run what its directory descriptor refers to (#896).
  • Perf vp run starts faster in workspaces whose tasks share cache input and output patterns: each distinct pattern is now parsed once instead of once for every task that uses it. In a 138-package workspace, this saves about 2 seconds of CPU on every run (#887, #890).
  • Perf When tasks miss the cache, vp run no longer waits for the disk after saving each task's result, so the run finishes sooner. If the computer loses power or the operating system crashes during vp run, the cache entries that the run saved can be lost, and those tasks run again next time instead of hitting the cache (#871).
  • Fixed Running vp run in a package that sits inside a workspace folder but isn't listed in its pnpm-workspace.yaml packages or package.json workspaces now runs that package's own tasks, instead of treating the enclosing workspace as its root. When both configurations exist, pnpm-workspace.yaml takes precedence (#859).
  • Fixed On Linux and macOS, programs using automatic file-access tracking no longer abort when they call execl, execlp, or execle with 32 or more arguments (#699, #865).
  • Fixed A mistyped or misplaced setting in a task now gets an error that names it. For example, cache: { outputs: [...] } now fails with an unknown field error that names outputs and lists the accepted settings, instead of data did not match any variant of untagged enum UserTaskDefinition (vite-plus#2635, #815).
  • Fixed In cached tasks on Linux and macOS, programs that pass -1 as a directory descriptor to calls such as openat no longer abort. For example, ps -p <pid> from procps-ng 4.0.6 or later aborted when the process had already exited (#862).
  • Fixed vp run no longer panics before running a script that contains non-ASCII characters, such as echo こんにちは, and no longer cuts off such commands where it displays them (#861).
  • Fixed On Linux, concurrent system calls in tracked programs, such as pnpm dlx, no longer cause a stack overflow (#854).
  • Fixed Cached tasks can now run scripts whose shebang names an interpreter path longer than 126 bytes. Before, the path was cut short and the script failed to start or ran the wrong program. On macOS, text after a # in the shebang line is now ignored, as it is when the script runs on its own (#788).
  • Fixed On macOS, tasks with automatic file-access tracking can now run Node.js single executable applications, such as pnpm 11's standalone pnpm binary, which previously aborted with Assertion failed: (magic) == (kMagic), and deno compile outputs, which previously failed with Did not find magic bytes (#840).
  • Fixed Reinstalling dependencies with pnpm, or installing them at another path or with another pnpm version, no longer causes cache misses, and tasks that run pnpm run or pnpm exec no longer miss the cache after pnpm rechecks dependencies (#823, #824, #825, #850).
  • Added Vite+ now builds and runs on platforms without file-access tracking support, such as FreeBSD. On those platforms, automatic input and output tracking is unavailable, so tasks that rely on it report that tracking is unsupported and must configure their input and output manually to be cached (#829).
  • Changed The vp run summary now reads like 3/4 cache hit (75%), 9/10 successful, 2s saved. The cache hit count leaves out tasks with caching disabled, and the count of successful tasks out of all tasks replaces the count of failed tasks. When no task has caching enabled, the summary shows only the successful count. In vp run --verbose and vp run --last-details, the cache hit rate also leaves out tasks with caching disabled, and says no task has caching enabled when there are none (#821).
  • Perf On Linux, tasks with automatic file-access tracking start faster (#817).
  • Fixed When a cache hit's outputs can't be restored, for example because the cached archive was deleted or is corrupt, vp run now fails with an error suggesting vp cache clean instead of exiting 0 and reporting a cache hit. vp run --last-details shows the task as a cache hit whose outputs couldn't be restored (#770).
  • Changed When a task isn't cached because it wrote a file it also read, vp run --last-details now says the task read and wrote the file, and shows the cache: { input, output } exclusions that let the task be cached (#784).
  • Changed The run summary now says a task that wrote a file it also read was not cached because it modified its inputs, and the statistics in vp run --verbose and vp run --last-details use the singular for a count of one, e.g. 1 task • 1 cache miss (#783).
  • Fixed An invalid glob in --filter no longer shows its error message twice (#763).
  • Changed The detailed summary from vp run --verbose and vp run --last-details now shows each underlying cause of an error on its own line (#761).
  • Fixed On Windows, environment variable names used by vp run now match regardless of ASCII letter case. Assignments in task commands override earlier assignments and inherited variables spelled differently, and FORCE_COLOR, VP_RUN_CONCURRENCY_LIMIT, and variables requested through @voidzero-dev/vite-task-client are found under any spelling (#747).
  • Changed A task's cache settings now go inside cache, e.g. cache: { env: ["NODE_ENV"], input: ["src/**"] }; cache: true is the same as cache: {}. env, untrackedEnv, input, and output are no longer supported at the top level of a task (#749).
  • Fixed Cached tasks on macOS no longer intermittently fail with exit 2 and oils I/O error (main): No such process when a fast command finishes before the shell gets scheduled. The bundled shell that runs task commands is updated to Oils 0.38.0, which fixes this race (#702, #703).
  • Fixed vp run no longer hangs or fails when a task leaves a process running behind it, such as a dev server or a background helper, or when one of a task's processes is killed. The run finishes as soon as the task itself does, and the files the task used are still recorded (#544, #675).
  • Fixed A task that reads or writes an unusually large number of files now runs to the end instead of being killed partway through. Vite+ reports the run as not cached, because it could not record every file the task used (#533, #675).
  • Fixed Vite+ diagnostics now display individual paths and working directories without Rust debug formatting such as quoted paths or escaped Windows backslashes (#534).
  • Fixed Automatic file-access tracking now works inside the default Codex CLI and Claude Code sandboxes (#562, #563, #576, #569).
  • Fixed Broad workspace globs no longer discover and run package scripts inside node_modules (#539).
  • Added Tasks now run with VP_RUN=1 set, so tools can tell they are running under vp run instead of being invoked directly (#570).
  • Fixed The task cache now supports much larger automatically tracked input sets without hitting wincode's default 4 MiB sequence preallocation limit (#554).
  • Fixed npm workspace patterns beginning with ./ now discover matching packages correctly (vite-plus#2201, #547).
  • Fixed Failures while forwarding output from a started task process no longer incorrectly say the process failed to spawn (#506).
  • Fixed An issue where Bun tasks on macOS did not rerun when files they read, wrote, or listed changed (#532, #542).
  • Improved Windows file-access tracking now uses sparse temporary backing files where supported, avoiding upfront allocation of the full backing file on disk (#524).
  • Fixed Automatic file-access tracking on Linux now works in containers and Kubernetes runners with limited /dev/shm space (#353, #523).
  • Fixed Windows automatic input tracking now records executable image reads when process creation performs the lookup inside NtCreateUserProcess (#518).
  • Fixed Failures while waiting for a started task process to exit no longer incorrectly say the process failed to spawn (#515).
  • Fixed Missing env vars requested through @voidzero-dev/vite-task-client now return undefined instead of null, preserving Vite production NODE_ENV semantics when builds run through vp run (#508).
  • Fixed Windows builds no longer hang on CI when a node_modules/.bin .cmd shim is routed through PowerShell: the npm/pnpm/yarn .ps1 wrappers read stdin and block forever on a non-TTY pipe, so the PowerShell rewrite is now skipped when stdin is not an interactive terminal, falling back to the .cmd (which never reads stdin) (#491).
  • Added First-party support for caching vite build with zero cache config, giving Vite projects correct cache hits out of the box (vitejs/vite#22453).
  • Added Support for specifying tasks from dependency packages in dependsOn, such as dependsOn: [{ "task": "build", "from": "dependencies" }] (#479).
  • Added @voidzero-dev/vite-task-client, allowing tools to report cache information to Vite Task at runtime so users do not need to configure it manually (#441, #454, #449, #450, #458, #431, #459, #472).
  • Changed Cached tasks now restore automatically tracked output files by default; use output: [] to disable restoration (#460, #461).
  • Changed Environment values in task cache fingerprints are now stored only as SHA-256 digests, and env-related cache miss details report names without values (#455).
  • Fixed Prefix environment assignments like PATH=... command now affect executable lookup during task planning, so tools provided only by the prefixed PATH can be resolved correctly (#440)
  • Changed Cache misses caused by a tracked env var now name the env var inline, for example cache miss: env 'NODE_ENV' changed, instead of the generic envs changed message (#438)
  • Fixed The task cache is now stored in a per-schema-version subdirectory (e.g. node_modules/.vite/task-cache/v13/), so switching between branches that pin different Vite+ versions no longer fails with Unrecognized database version. Each version keeps its own cache directory; a cache from a different version is ignored rather than aborting the run (#433)
  • Added A task's env and untrackedEnv glob patterns now support ! negation: a !-prefixed pattern excludes matching variables (e.g. ["VITE_*", "!VITE_SECRET"] tracks every VITE_* except VITE_SECRET) (#425)
  • Fixed package.json and pnpm-workspace.yaml files with a UTF-8 BOM no longer fail to parse (#424)
  • Changed vp run --filter <expr> now exits 0 with a warning when the filter matches no packages, matching pnpm. Use --fail-if-no-match to restore the previous strict behavior (#393)
  • Added task command shorthands for defining tasks as command strings or command string arrays (#391)
  • Changed Cached logs are stored with colors intact (FORCE_COLOR=1 is auto-injected into spawned tasks). Colors are then stripped at display time when the terminal does not support them. Other color-related env vars (NO_COLOR, COLORTERM, TERM, TERM_PROGRAM) are no longer passed through by default. Opt in via a task's env/untrackedEnv (#378)
  • Added output field for cached tasks: archives matching files after a successful run and restores them on cache hit (#375)
  • Fixed Windows cached tasks can now run package shims rewritten through PowerShell; default env passthrough now preserves PATHEXT (#366)
  • Added Platform support for targets without input auto-inference (e.g. Android). Tasks still run; those relying on auto-inference run uncached, with the summary noting that input must be configured manually to enable caching (#352)
  • Fixed vp run no longer aborts with failed to prepare the command for injection: Invalid argument when the user environment already has LD_PRELOAD (Linux) or DYLD_INSERT_LIBRARIES (macOS) set. The tracer shim is now appended to any existing value and placed last, so user preloads keep their symbol-interposition precedence (#340)
  • Changed Arguments passed after a task name (e.g. vp run test some-filter) are now forwarded only to that task. Tasks pulled in via dependsOn no longer receive them (#324)
  • Fixed Windows file access tracking no longer panics when a task touches malformed paths that cannot be represented as workspace-relative inputs (#330)
  • Fixed vp run --cache now supports running without a task specifier and opens the interactive task selector, matching bare vp run behavior (#312)
  • Fixed Ctrl-C now prevents future tasks from being scheduled and prevents caching of in-flight task results (#309)
  • Added --concurrency-limit flag to limit the number of tasks running at the same time (defaults to 4) (#288, #309)
  • Added --parallel flag to ignore task dependencies and run all tasks at once with unlimited concurrency (unless --concurrency-limit is also specified) (#309)
  • Added object form for input entries: { "pattern": "...", "base": "workspace" | "package" } to resolve glob patterns relative to the workspace root instead of the package directory (#295)
  • Fixed arguments after the task name being consumed by vp instead of passed through to the task (#286, #290)
  • Changed default untracked env patterns to align with Turborepo, covering more CI and platform-specific variables (#262)
  • Added --log=interleaved|labeled|grouped flag to control task output display: interleaved (default) streams directly, labeled prefixes lines with [pkg#task], grouped buffers output per task (#266)
  • Added musl target support (x86_64-unknown-linux-musl) (#273)
  • Changed cache hit/miss indicators to use neutral symbols (◉/〇) instead of ✓/✗ to avoid confusion with success/error (#268)
  • Added automatic skip of caching for tasks that modify their own inputs (#248)