Releases: 20000419/fauxnix
Release list
v0.13.0 — bash_batch: preplanned multi-step workflows in one MCP round trip
Post-rc.1 batch (#215-#219, by vulragrag-star):
bash_batchMCP tool (#215, RFC #214): preplanned multi-step workflows execute in one MCP round trip — every step compiles before anything runs, the plan executes atomically in the resident session, each step returns a structured result, and the default stops on the first nonzero exit. Use it when the command sequence is already known; keep separatebashcalls when the model must inspect one result before deciding the next command.- awk literal field assignment (#217):
$1=$1-style assignments rebuild the record (the classic whitespace-normalize idiom now works). - Resident session checkpoints (#218): compiled session state is checkpointed and reused instead of re-derived, cutting warm-call latency further; mixed-case Windows MCP launch environments are preserved.
lsmulti-operand directory context (#216): listings across several directories keep per-operand directory context instead of collapsing to the last one.- README v2 (#219): zero-install
npxquickstart above the fold, agent-connect-first install section, comparison table.
445 tests (+1 environment-skipped). 253-case Git Bash differential corpus. npm: npm i -g fauxnix-cli
v1.0.0-rc.1 — Release Candidate
First release candidate. All 19 roadmap items complete, 428 tests, 253-case differential corpus. This tag starts the 14-day soak period — 1.0.0 ships if no P1/P2 issues are opened against it.
Changes since v0.12.0: bilibili promotion docs, developer program brief (docs only).
v0.12.0 — roadmap v2 complete
All 19 roadmap items shipped (#172-#192, by r3wretrhy and vulragrag-star):
- C-1..C-7: language completeness (while/until/case, arrays, positional params, multi-segment substitution, daily-60 spec, per-stage fds, 253-case differential corpus)
- U-1..U-8: usability (install, doctor, error alternatives, quickstarts, PS7 tier, ARM64 CI, locale matrix, perf guard)
- T-1..T-3: trust & process (SECURITY.md, RFC rule, release checklist gate)
389+ tests. npm: npm i -g fauxnix-cli
v0.11.0 — C-1 complete, C-2/C-3, U-1/U-3/U-4/U-8
Roadmap waves 2+3 in one night (#181-#191, by r3wretrhy):
- C-1 complete:
while/untilloops;case x in a|b) ... ;; *) ...;; esacwith loud fallthrough rejection - C-2: array assignment
A=(x y z)(FAUXNIX_ARRS sidecar);${name//pat/str}replace;${name:off:len}slices - C-3: positional parameters —
set -- a b,$1 $# "$@" shift $0, session-scoped per the accepted mini-RFC - U-1
fauxnix install: one command per harness (claude/codex/opencode/kimi/qwen), idempotent, preserves unrelated config, refuses invalid JSON - U-3: every loud-reject carries a one-line alternative (CI-enforced)
- U-4: harness quickstarts x5; U-8: perf guard in CI (warm p50 <50ms)
- C-5: archive family spec; C-7: corpus at 126 cases + weekly oracle workflow
Maintainer integration fixes: isAmpWord OP-token bug (fallthrough detection never fired), specs doc byte-exact regen.
319/319 tests. npm: npm i -g fauxnix-cli (0.11.0)
v0.10.0 — roadmap v2 wave 1
First wave claimed against the 1.0 roadmap v2 — all by r3wretrhy, within hours of the RFC landing:
- C-4: multi-segment
$(cmd1; cmd2) - C-5 (partial): text-filters CommandSpec (sort/uniq/cut/tr... fail loud on unknown options)
- C-6 (interim): non-last-stage stdout redirects reject with the #157 workaround in the message
- C-7 scaffold:
test/differential/corpus + oracle-gated runner (FAUXNIX_DIFF_ORACLE=1) — the correctness institution begins - T-1 SECURITY.md / T-2 CONTRIBUTING RFC rule
- U-2
fauxnix doctor: PowerShell + encoding checks, harness config detection with fix hints - C-3 positional-params mini-RFC proposed (implementation pending #118)
271 tests green incl. the differential corpus. npm: npm i -g fauxnix-cli (0.10.0)
v0.9.3 — computer-use parity wave 1
First wave from the strategic RFC #156 ("computer-use agents are trained on Mac fleets; Windows deserves translate-don't-emulate"):
- fx-native everywhere: curl/wget/tar/ping and xargs launch through the argv-faithful path (#159/#160)
2>&1 >/dev/nullkeeps the already-dup'd stderr — per-fd last-wins, bash dup semantics (#164).cmd/.batargv quotes cmd.exe metacharacters (#163)grep -F -omulti-pattern matches in input order (#162)- CommandSpec: text-io family fails loud on unknown flags (#161);
ls --colorno-op (#166) python3/.shcommand-not-found carries Windows hints (#167)- RFC doc: docs/rfc-windows-computer-use-parity.md (#158); blog drafts finalized in-tree
251/251 tests green. npm: npm i -g fauxnix-cli (0.9.3)
v0.9.2 — audit backlog cleared
Every finding from the post-v0.7 audit (#131) is now resolved (#147-#154, all credit to r3wretrhy):
- Per-stage redirect ownership (#147):
>/dev/nulldiscards, middle-stage<replaces the pipe, last-win for successive redirects (RFC: docs/rfc-redirect-fd-ownership.md) - Native argv fidelity (#148): fx-native builds the Win32 command line directly (CRT quoting; async pipe reads before stdin; .cmd/.bat via cmd.exe) — empty args, spaces, and embedded quotes survive byte-exact
fauxnix checkFAILED on spawn errors (#150); docs/command-specs.md in lockstep (#149)head -n -Nall-but-last semantics (#151);grep -eOR-accumulation (#152); printf exact-writer lines re-split for pipeline consumers (#153); hard links are regular files (#154)
223/223 tests green. npm: npm i -g fauxnix-cli (0.9.2)
v0.9.1 — P1 hotfix
Fixes both P1 findings from the Codex review of #145 (verified on published 0.9.0 first):
- Redirected files are never truncated by response budgets —
printf AAAAAAAAAA > funderstdoutLimit: 4was writing a 4-byte file; defaults (8 MiB) silently clipped larger redirects. Limits now apply only to data returned to the caller. - Truncation cuts at valid UTF-8 boundaries — a mid-codepoint cut made the whole buffer decode as GBK mojibake (
你好世界→浣犲); the cut now backs off to a sequence boundary.
Both carry regression tests. The three P2s (head negative counts, grep -e accumulation, stale spec docs) are routed to follow-up.
npm: npm i -g fauxnix-cli (0.9.1)
v0.9.0 — protocol v2 + bounded outputs
Protocol v2 lands (#129 PR-B, closes #140):
- Versioned handshake (v1 still accepted) + chunked stdout/stderr frames with per-stream seq
- Native stderr returns exactly once via the FAUXNIX_ERR_END marker — git/npm/node diagnostics no longer dropped or retained (#131 audit gap closed)
- Per-run stdout/stderr limits with explicit truncated markers
- Bootstrap slimmed: first frame after prewarm 0.7s -> 0.27s, prewarm 2s -> 0.6s (#140 closed); warm frames ~40ms
- Bounded-output family matches GNU (differential 5/5): grep -m, head --lines, du --max-depth (#141)
- CommandSpec expanded across the file family — ls -Z and friends are usage errors now (#144); docs/command-specs.md generated
197/197 tests green. npm: npm i -g fauxnix-cli (0.9.0)
v0.8.0 — execution contract
The execution-contract wave: r3wretrhy implementing the vulragrag-star RFCs.
#129 PR-A — bounded, cancellable, structured results
- bash tool returns versioned structured content alongside text (stdout/stderr/exitCode/timedOut/cancelled)
- whitespace-only stdout preserved; native stderr drained per request
- per-request cancellation: AbortSignal kills the host with timeout-grade recovery — measured sleep 8 cancelled at 0.4s, session cold-restarts and survives
- one lock for run/reset/dispose (no more leaked hosts on concurrent reset); dispose on stdin EOF/SIGINT/SIGTERM; JSON overflow is a loud frame error
- v2 chunked frames remain a follow-up (PR-B)
#130 — CommandSpec fail-loud (destructive five)
- cp/mv/rm/touch/tee carry typed option specs; unknown options are GNU usage errors
- cp -n / mv -n / touch -c / tee --append now match GNU — the audit's dangerous five are closed
- fauxnix list --json exposes capability metadata (108 commands)
#137 — find predicates compiled
! / -o / -a / grouping / -delete precedence follow GNU; unknown predicates fail loud with GNU wording.
#135 — syntax fail-loud
Trailing &&, ;;, and env -i reject with actionable errors.
Known trade-off: the richer host bootstrap raises the first post-prewarm frame to ~0.7s (warm frames unchanged ~50ms) — bootstrap slimming tracked next.
186 tests green. npm: npm i -g fauxnix-cli (0.8.0)