Skip to content

Releases: 20000419/fauxnix

v0.13.0 — bash_batch: preplanned multi-step workflows in one MCP round trip

Choose a tag to compare

@20000419 20000419 released this 10 Sep 02:58

Post-rc.1 batch (#215-#219, by vulragrag-star):

  • bash_batch MCP 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 separate bash calls 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.
  • ls multi-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 npx quickstart 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

Pre-release

Choose a tag to compare

@20000419 20000419 released this 07 Sep 02:59

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

Choose a tag to compare

@20000419 20000419 released this 03 Sep 09:49

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

Choose a tag to compare

@20000419 20000419 released this 02 Sep 07:39
4ed3b59

Roadmap waves 2+3 in one night (#181-#191, by r3wretrhy):

  • C-1 complete: while/until loops; case x in a|b) ... ;; *) ...;; esac with 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

Choose a tag to compare

@20000419 20000419 released this 02 Sep 02:23
5218e8f

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

Choose a tag to compare

@20000419 20000419 released this 31 Aug 08:48
2efdb6f

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/null keeps the already-dup'd stderr — per-fd last-wins, bash dup semantics (#164)
  • .cmd/.bat argv quotes cmd.exe metacharacters (#163)
  • grep -F -o multi-pattern matches in input order (#162)
  • CommandSpec: text-io family fails loud on unknown flags (#161); ls --color no-op (#166)
  • python3 / .sh command-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

Choose a tag to compare

@20000419 20000419 released this 31 Aug 04:10
2efdb6f

Every finding from the post-v0.7 audit (#131) is now resolved (#147-#154, all credit to r3wretrhy):

  • Per-stage redirect ownership (#147): >/dev/null discards, 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 check FAILED on spawn errors (#150); docs/command-specs.md in lockstep (#149)
  • head -n -N all-but-last semantics (#151); grep -e OR-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

Choose a tag to compare

@20000419 20000419 released this 23 Aug 15:27
ac81bc4

Fixes both P1 findings from the Codex review of #145 (verified on published 0.9.0 first):

  • Redirected files are never truncated by response budgetsprintf AAAAAAAAAA > f under stdoutLimit: 4 was 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

Choose a tag to compare

@20000419 20000419 released this 23 Aug 14:56
72b7f5c

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

Choose a tag to compare

@20000419 20000419 released this 23 Aug 13:20
2a95db1

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)