Skip to content

chore: release#255

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

chore: release#255
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 24, 2026

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

just-bash@3.0.2

Patch Changes

  • #256 75d8dfd Thanks @Hazzng! - js-exec: fix Buffer shim correctness — ascii encode now uses & 0xff (not & 0x7f), consolidate latin1/ascii into shared _rawEncode, fix Buffer.from(ArrayBuffer, offset, length), throw on invalid byteLength input, clamp negative toString start, throw RangeError for out-of-range write offset

  • #239 1369b77 Thanks @trieloff! - curl: interpret @file for -d/--data, --data-binary, and --data-urlencode

    Real curl reads file contents when these flags are passed @filename:

    • -d @file / --data @file — read file contents, strip CR/LF.
    • --data-binary @file — read file contents verbatim (newlines preserved).
    • --data-urlencode @file — read file, URL-encode the contents.
    • --data-urlencode name@file — prefix the URL-encoded contents with name=.

    just-bash's curl previously passed @filename through verbatim as the HTTP body. Posting JSON or any non-trivial payload via curl --data-binary @payload.json https://… sent the literal string @payload.json instead of the file. The new behavior matches upstream curl; --data-raw keeps the documented "no @ interpretation" semantics.

  • #262 4ece258 Thanks @chernetsov! - parser: don't treat quotes inside a heredoc body as shell quotes when finding the end of a command substitution

    A command substitution whose body contained a heredoc with an unbalanced quote in its body — most commonly an apostrophe in literal prose, e.g. June's — failed to parse with bash: syntax error: ... unexpected EOF while looking for matching ')':

    OUT=$(cat <<'SCRIPT'
    June's moon
    SCRIPT
    )

    Both the lexer's $(...) word scanner and the substitution boundary scanner walked into the heredoc body and applied shell quote tracking to it. The ' in June's opened a single-quoted string that never closed, so the closing ) was swallowed and the scan ran to EOF. In bash a heredoc body is literal text and must be skipped wholesale when locating the substitution boundary.

    Both scanners are now heredoc-aware: when scanning a $(...) they recognize << / <<- operators (but not the <<< here-string), capture the possibly-quoted delimiter, and skip the heredoc body lines literally — without quote or paren tracking — up to the terminator. Multiple heredocs on one line and tab-stripping (<<-) are handled. This fixes the common pattern of capturing the output of a connector/CLI invocation that is fed a heredoc script containing apostrophes, backticks, or parentheses.

    The heredoc scan also tracks arithmetic ((...)) nesting so a << left-shift inside $((...)) (or a nested arithmetic expansion) is not mistaken for a heredoc opener — previously a multi-line arithmetic expansion containing a shift, e.g. $((\n1 << 2\n)), had its closing )) swallowed by spurious body-skipping.

  • #248 d64009a Thanks @Hazzng! - perf(grep): up to 14.5× speedup via preFilter extensions and matcher reuse.

    Anchored alternation patterns like ^def \|^async def now extract literal needles (stripping outer ^/$), enabling the String.indexOf fast-path. Files with no matching needle are rejected before split("\n"), skipping RE2 entirely. acquireMatcher() extended to match(), replace(), search(), and matchAll() to reduce GC pressure across awk/sed hot-paths.

  • #261 c9904de Thanks @chernetsov! - set: support a bundled -o/+o long option inside a short-flag cluster (e.g. set -euo pipefail)

    The set builtin previously rejected set -euo pipefail with bash: set: -o: invalid option, because it parsed each character after the - as an independent short flag and has no o short flag. -o was only honored as its own token (set -eu -o pipefail).

    This is the canonical "bash strict mode" idiom and is extremely common in generated scripts, so the whole script would abort on its first line.

    set now matches bash: an o inside a cluster consumes the next word as its long-option name, and the remaining characters keep being parsed as short flags. So set -euo pipefail is equivalent to set -e -u -o pipefail, set -oe pipefail enables both pipefail and errexit, trailing words become positional parameters, and +-clusters (set +euo pipefail) disable the options. An invalid bundled name (set -euo bogus) still reports invalid option name, and an o with no following argument falls back to the standalone -o/+o listing.

@just-bash/executor@1.0.3

Patch Changes

executor-tools-example@1.0.4

Patch Changes

@github-actions github-actions Bot requested a review from cramforce as a code owner May 24, 2026 20:35
@vercel
Copy link
Copy Markdown

vercel Bot commented May 24, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
just-bash-website Ready Ready Preview, Comment Jun 4, 2026 5:39pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
just-bash Ignored Ignored Jun 4, 2026 5:39pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants