NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #5837 most downloaded on pub.dev
Manage mono-repos with `sip`, run scripts and get dependencies concurrently.
Last release 1 months ago
13 Aug 2026
Release timing varies
gaps range from 2 weeks to 5 months
Most releases are documented
notes for 42 of the last 60 stable releases
12 versions withdrawn
withdrawn after publishing
3 years old
113 releases · first in 2024
Add sip validate, which checks scripts.yaml without running anything and reports each problem against the line it was written on. It catches unresolva
sip validate, which checks scripts.yaml without running anything and reports each problem against the line it was written on. It catches unresolvable references, malformed substitutions (${{ a:b }}, which sip passes to the shell verbatim), circular references, invalid script names, aliases claimed twice, keys that look reserved but are not, a valueless (bail) that reads as false, and scripts with nothing to run. Errors exit 78; --fatal-warnings makes warnings do the same. --json gives every diagnostic a stable code and location.--json to sip list, printing every script as a flat list: its dotted key, the path to pass to sip run, aliases, description, private and runnable flags, bail, the raw commands as written, the fully resolved commands with their concurrency, env, and the scripts.yaml line and column it was declared on. --no-resolve skips expansion, and a query still filters the listing.--json to sip run <script> --print, emitting the resolved commands for a single script.--json to sip test, reporting counts and the file, test name and message for each failure. Failures that are not test failures -- a compile error, a crashed runner, output sip could not parse -- are reported separately, so an empty failure list does not read as a passing run.sip mcp, which runs sip as an MCP server over stdio and exposes this project's scripts to an AI coding assistant as tools: list_scripts, dry_run, run_script and validate. run_script takes a script name, never a command, so it cannot run anything not declared in scripts.yaml.sip ai agents, which writes AGENTS.md -- the convention Codex, Cursor, Copilot, Zed and Amp read. sip ai all includes it.sip list no longer hands the reader a tree full of escape codes. --color/--no-color, NO_COLOR, FORCE_COLOR and TERM=dumb override the guess.--no-version-check and SIP_NO_VERSION_CHECK also turn it off.One column per month.
Fix flags that take no value swallowing the argument that follows them. sip test --omit-errors test/a_test.dart test/b_test.dart set --omit-errors to
sip test --omit-errors test/a_test.dart test/b_test.dart set --omit-errors to test/a_test.dart and dropped that file from the run, and when only one path followed the flag, the run fell back to testing the entire package. Every flag sip reads as a boolean is now parsed as such and leaves the following argument alone. Flags sip doesn't know about still take a value, so unknown dart test / flutter test options are forwarded as before. The same fix applies to boolean abbreviations (-b, -d, -l, -r), which also fixes sip pub upgrade --tighten <package> and sip pub constrain -d <package> losing their first package name.Experimental, opt-in: Add --experimental-bucket to sip test for Flutter packages, combining test files into ~CPU-core-count generated bucket files (di
--experimental-bucket to sip test for Flutter packages, combining test files into ~CPU-core-count generated bucket files (dispatched as one flutter test invocation per shard) to cut per-file VM-isolate startup overhead, the same idea as the existing Dart-only test optimizer. Files that can't be safely combined (unsafe TestWidgetsFlutterBinding subtypes, or test-surface mutation without a reset) always run in their own isolated wrapper, never sharing an isolate with anything else. If a bucket's combined run looks untrustworthy (a compile error or a hard binding assertion cuts it short, so one of its files never reports a result), just that bucket's original files are automatically discarded and re-run individually, logged clearly, while every other healthy bucket sharing the same invocation is left untouched. This covers the two known combining hazards, but not arbitrary global test-state leakage (e.g. an unreset image cache) between files sharing an isolate -- that class of bug can't be caught by a static check or the runtime fallback, so treat a bucketed run as a strong signal, not an absolute guarantee of unbucketed-equivalent results. Also adds --bucket-count, --bucket-shard-index, and --bucket-shard-count for splitting buckets across CI matrix jobs. Off by default; Dart packages and existing behavior are completely unaffected.Nothing published for this version
Fix issue where running multiple concurrent commands would hang indefinitely
Nothing published for this version
Fix issue where analytics would hang indefinitely
Nothing published for this version
Improve test output formatting when using --omit-errors flag to show formatted path and test description with colors
--omit-errors flag to show formatted path and test description with colors--omit-errors is not enabled, while still showing error outputNothing published for this version
Fix display path in test output to show the correct path when running sip test instead of always showing ./.
sip test <path> instead of always showing ./.. when running sip test with no arguments or with . argument., test, or no path argument is provided to sip test, run the test command without forwarding all test directories (e.g., flutter test instead of flutter test test/utils test/other)Nothing published for this version
Issue where sip update command was not working
sip update command was not workingNothing published for this version
Issue where exception was thrown when no pubspec.yaml file was found while trying to resolve variables
Nothing published for this version
Issue where exit code was not set when a non-last command failed
Nothing published for this version
Deprecate {$path:...} and {--flag} syntax for referencing scripts
test watch command{$path:...} and {--flag} syntax for referencing scripts
${{ path.script_name }} and ${{ --flag }} syntax instead--loud flag--bail for flutter tests--slice flag for flutter tests
--help flag within sip run <path> to print the usage information for the scriptNothing published for this version
Issue where exception thrown on CI preventing the script from running
Issue where logs were being consumed in CI environments
Nothing published for this version
Nothing published for this version
Issue where test would be blank when tests were skipped
Issue where test output was empty when it shouldn't be
Nothing published for this version
Add env variables to env after sourcing the env file
env after sourcing the env fileNothing published for this version
Issue where env commands were not being resolved correctly
Always show the cursor when the process is interrupted
Issue where a reference command that contains concurrency would loop indefinitely
Crash when a reference does not contain any commands to run
Issue where a command following a non-concurrent command would be skipped
Issue where env would not be resolved completely if there were no env commands
Nothing published for this version
Add support for defining env variables within (env)
(env)Issue where a command that contains variables/flags would be skipped when following a concurrent command
--print flag to sip run command
When running pub commands, ignore pubspecs within directories that start with a dot
Issue where concurrency commands could run sequentially, unintentionally
Scope concurrency to original scripts
Fix issue where test directories were not identified correctly when parent directory starts withtest
testAdd executables to variables to be used in commands
Add executables to variables to be used in commands
(executables):
flutter: fvm flutter
dart: fvm dart
build_runner: "{dart} run build_runner build"
Add support to sip pub constrain command to constrain specific packages to a specific version
sip pub constrain command to constrain specific packages to a specific versionsip pub constrain command to unpin (--no-pin)
provider: 5.0.0 will be unpinned to ^5.0.0Don't exit with non-zero when no test directories are found
Flutter tests respect the --bail flag during sip test command
--bail flag during sip test command
Issue where formatting test output could result in an exception thrown
Nothing published for this version
Improve the output when running flutter tests
Override dart and flutter executable by using (executables) within the `scripts.yaml file
dart and flutter executable by using (executables) within the `scripts.yaml file(executables):
dart: fvm dart
flutter: fvm flutter
Nothing published for this version
Bug where env reference commands may not be resolved
Check for dependencies when running sip pub upgrade
sip pub upgrade <packages>
pubspec.yaml file, that pubspec.yaml file will be skippedPin versions of packages by providing the --pin flag to the constrain command
--pin flag to the constrain command
sip pub constrain --pin will pin all packages to their current versionsNothing published for this version
Constrain certain packages by providing their package names to the constrain command
constrain command
sip pub constrain analyzer test will constrain only the analyzer and test packagesSupport querying scripts from sip list
sip list
sip list [query] [arguments]sip update should now update to the latest version properly
sip update should now update to the latest version properlyPass packages to sip pub upgrade when provided
sip pub upgrade when provided
sip pub upgrade analyzer test will run <dart|flutter> pub upgrade analyzer testsip pub constrain command
pubspec.yaml filesip pub deps command
pubspec.yaml file by running <dart|flutter> pub deps--unlock-transitive flag to sip pub upgrade command
sip pub downgrade command
pubspec.yaml file by running <dart|flutter> pub downgradeNothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →