Skip to content

Commit 3eeedbd

Browse files
authored
chore(release): prepare v0.1.11 (#776)
## Summary - Bump version to 0.1.11 - Update CHANGELOG with all 50 changes since v0.1.10 ### Release Highlights - **Second external contribution** by @shubham-lohiya — `Bash` class with Monty Python execution and external function handler (#760) - **Browser terminal example** — bashkit running in the browser via WebAssembly (wasm32-wasip1-threads) - **New features**: structured execution traces, per-instance memory budgets, static AST budget validation, `head -c` byte mode, IFS separator + `$_` tracking - **Security hardening**: 15 blackbox findings fixed, readonly bypass blocked, stack overflow/memory exhaustion/source recursion limits enforced - **Major refactoring**: FileSystem core/ext split, shared ArgParser, register_builtins! macro, ShellRef Context API ## Test plan - [x] `cargo fmt --check` passes - [x] `cargo clippy --all-targets --all-features -- -D warnings` passes - [x] `cargo test --all-features` passes - [ ] CI green - [ ] After merge, CI creates GitHub Release and publishes to crates.io/PyPI/npm
1 parent 0595322 commit 3eeedbd

File tree

4 files changed

+69
-4
lines changed

4 files changed

+69
-4
lines changed

CHANGELOG.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,71 @@
22

33
## [Unreleased]
44

5+
## [0.1.11] - 2026-03-20
6+
7+
### Highlights
8+
9+
- **Second external contribution!** Welcome @shubham-lohiya, who exposed the `Bash` class with Monty Python execution and external function handler in the Python bindings ([#760](https://github.com/everruns/bashkit/pull/760)) — making it easy to extend bashkit with custom Python functions
10+
- **Browser terminal example**: Bashkit now runs entirely in the browser via WebAssembly (`wasm32-wasip1-threads`), with a single-file terminal UI — no framework required
11+
- **New features**: structured execution trace events, per-instance memory budgets, static AST budget validation, `head -c` byte mode, IFS separator + `$_` tracking, final environment state in `ExecResult`
12+
- **Security hardening**: blackbox security audit surfaced 15 vulnerabilities — all fixed; readonly variable bypass blocked; stack overflow, memory exhaustion, and source recursion depth limits enforced; shell injection prevented in JS VFS helpers
13+
- **Major refactoring**: FileSystem split into core + FileSystemExt, shared ArgParser extracted, register_builtins! macro replacing 120+ insert calls, ShellRef Context API, shell options split-brain fix
14+
15+
### What's Changed
16+
17+
* chore: pre-release maintenance — docs, fuzz, threat model, cargo-vet ([#774](https://github.com/everruns/bashkit/pull/774))
18+
* fix(interpreter): stabilize command-not-found suggestions ([#773](https://github.com/everruns/bashkit/pull/773))
19+
* refactor: remove blanket clippy::unwrap_used allows ([#772](https://github.com/everruns/bashkit/pull/772))
20+
* chore: move /ship from command to skill format ([#771](https://github.com/everruns/bashkit/pull/771))
21+
* refactor(fs): split FileSystem into core + FileSystemExt ([#770](https://github.com/everruns/bashkit/pull/770))
22+
* refactor(builtins): extract shared ArgParser (#744) ([#769](https://github.com/everruns/bashkit/pull/769))
23+
* refactor: replace hardcoded if-name dispatch with ShellRef Context API ([#767](https://github.com/everruns/bashkit/pull/767))
24+
* refactor: break up 6 monster functions into smaller helpers ([#766](https://github.com/everruns/bashkit/pull/766))
25+
* refactor(interpreter): fix shell options split brain (#736) ([#764](https://github.com/everruns/bashkit/pull/764))
26+
* refactor(builtins): replace 120+ insert calls with register_builtins! macro ([#762](https://github.com/everruns/bashkit/pull/762))
27+
* refactor(builtins): move find/xargs/timeout execution plans from interpreter to builtins ([#761](https://github.com/everruns/bashkit/pull/761))
28+
* feat(python): expose `Bash` class with Monty Python execution and external function handler ([#760](https://github.com/everruns/bashkit/pull/760)) by @shubham-lohiya
29+
* fix(git): error on non-HEAD revision in git show rev:path ([#758](https://github.com/everruns/bashkit/pull/758))
30+
* refactor(builtins): extract git_err helper to eliminate 24 identical error wrapping lines ([#757](https://github.com/everruns/bashkit/pull/757))
31+
* refactor(error): simplify Error enum by merging Parse/ParseAt and removing dead CommandNotFound ([#756](https://github.com/everruns/bashkit/pull/756))
32+
* refactor(fs): remove dead SearchCapable/SearchProvider traits ([#755](https://github.com/everruns/bashkit/pull/755))
33+
* fix(vfs): use fs.remove() for patch file deletion instead of empty write ([#754](https://github.com/everruns/bashkit/pull/754))
34+
* refactor(interpreter): deduplicate declare/local compound assignment and flag parsing ([#753](https://github.com/everruns/bashkit/pull/753))
35+
* refactor(builtins): extract shared search utilities from grep and rg ([#752](https://github.com/everruns/bashkit/pull/752))
36+
* refactor: deduplicate is_valid_var_name into single pub(crate) function ([#751](https://github.com/everruns/bashkit/pull/751))
37+
* refactor(builtins): replace magic variable hack with BuiltinSideEffect enum ([#750](https://github.com/everruns/bashkit/pull/750))
38+
* chore(skills): add design quality review phase to ship command ([#749](https://github.com/everruns/bashkit/pull/749))
39+
* refactor(interpreter): extract glob/pattern matching to glob.rs ([#748](https://github.com/everruns/bashkit/pull/748))
40+
* fix(skills): delegate process-issues shipping to /ship skill ([#747](https://github.com/everruns/bashkit/pull/747))
41+
* chore: convert process-issues command to .claude/skills/ format ([#746](https://github.com/everruns/bashkit/pull/746))
42+
* feat: IFS separator, $_ tracking, and prefix assignment order ([#724](https://github.com/everruns/bashkit/pull/724))
43+
* fix(deps): bump ai SDK to ^5.0.52 and override jsondiffpatch >=0.7.2 ([#723](https://github.com/everruns/bashkit/pull/723))
44+
* fix(deps): override langsmith >=0.4.6 to fix SSRF vulnerability ([#722](https://github.com/everruns/bashkit/pull/722))
45+
* fix(js): wrap napi structs in Arc<SharedState> to prevent invalid pointer access ([#721](https://github.com/everruns/bashkit/pull/721))
46+
* fix: hex escapes, POSIX classes, DEBUG trap, noclobber, indirect arrays ([#719](https://github.com/everruns/bashkit/pull/719))
47+
* fix(js): prevent shell injection in Bash/BashTool VFS helpers ([#718](https://github.com/everruns/bashkit/pull/718))
48+
* fix(interpreter): prevent stack overflow in nested command substitution ([#717](https://github.com/everruns/bashkit/pull/717))
49+
* fix(builtins): bound seq output to prevent memory exhaustion ([#716](https://github.com/everruns/bashkit/pull/716))
50+
* feat(builtins): add head -c byte count mode ([#715](https://github.com/everruns/bashkit/pull/715))
51+
* fix(interpreter): reset transient state between exec() calls (TM-ISO-005/006/007) ([#714](https://github.com/everruns/bashkit/pull/714))
52+
* fix(interpreter): block readonly variable bypass via unset/declare/export (TM-INJ-019/020/021) ([#713](https://github.com/everruns/bashkit/pull/713))
53+
* fix(interpreter): enforce execution timeout via tokio::time::timeout (TM-DOS-057) ([#712](https://github.com/everruns/bashkit/pull/712))
54+
* fix(interpreter): source recursion depth limit (TM-DOS-056) ([#711](https://github.com/everruns/bashkit/pull/711))
55+
* fix(interpreter): declare -a/-i and local -a with inline init ([#710](https://github.com/everruns/bashkit/pull/710))
56+
* feat(fs): optional SearchCapable trait for indexed search ([#709](https://github.com/everruns/bashkit/pull/709))
57+
* feat(trace): structured execution trace events ([#708](https://github.com/everruns/bashkit/pull/708))
58+
* feat(limits): per-instance memory budget for variables/arrays/functions ([#707](https://github.com/everruns/bashkit/pull/707))
59+
* feat(limits): YAML/template depth limits + session-level cumulative counters ([#706](https://github.com/everruns/bashkit/pull/706))
60+
* fix(fs): OverlayFs validate_path + directory count limits + accounting gaps ([#701](https://github.com/everruns/bashkit/pull/701))
61+
* test(python): add advanced security tests for Python integration ([#705](https://github.com/everruns/bashkit/pull/705))
62+
* test(security): add JavaScript integration security tests ([#700](https://github.com/everruns/bashkit/pull/700))
63+
* test(security): blackbox security testing — 15 vulnerability findings ([#688](https://github.com/everruns/bashkit/pull/688))
64+
* fix(security): guard all builtins against internal variable namespace injection ([#696](https://github.com/everruns/bashkit/pull/696))
65+
* feat(interpreter): return final environment state in ExecResult ([#695](https://github.com/everruns/bashkit/pull/695))
66+
* feat(parser): static budget validation on parsed AST before execution ([#694](https://github.com/everruns/bashkit/pull/694))
67+
68+
**Full Changelog**: https://github.com/everruns/bashkit/compare/v0.1.10...v0.1.11
69+
570
## [0.1.10] - 2026-03-15
671

772
### Highlights

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ resolver = "2"
77
members = ["crates/*"]
88

99
[workspace.package]
10-
version = "0.1.10"
10+
version = "0.1.11"
1111
edition = "2024"
1212
license = "MIT"
1313
authors = ["Everruns"]

crates/bashkit-js/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bashkit-js/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@everruns/bashkit",
3-
"version": "0.1.10",
3+
"version": "0.1.11",
44
"description": "Sandboxed bash interpreter for JavaScript/TypeScript",
55
"main": "wrapper.js",
66
"browser": "bashkit.wasi-browser.js",

0 commit comments

Comments
 (0)