Skip to content

Releases: variableland/dx

@vlandoss/vland@0.2.0

12 May 22:57
ede3461

Choose a tag to compare

Minor Changes

  • #210 7d7e673 Thanks @rqbazan! - vland init now prompts (default-yes) for installing dependencies and initialising a git repository when those flags aren't passed on the CLI. Use --install / --no-install and --git / --no-git to skip the prompts; in non-interactive contexts both default to true.

    Also fixes the git initialisation step: the commit message was being split on whitespace by the underlying shell layer, producing errors like pathspec 'initial' did not match any file(s) and leaving the repo half-initialised. The migration to tinyexec (via @vlandoss/clibuddy) makes each argv entry survive as a separate token, so the canonical first commit chore: initial commit from vland now lands cleanly.

Patch Changes

  • Updated dependencies [7d7e673]:
    • @vlandoss/clibuddy@0.6.0

@vlandoss/vland@0.1.1

12 May 00:57
5db8cd6

Choose a tag to compare

Patch Changes

@vlandoss/starter@0.4.2

12 May 01:03
113d14a

Choose a tag to compare

Patch Changes

  • #206 6c2ec90 Thanks @rqbazan! - Deprecate package — final published version with notice.

    Each package's homepage is repinned to a tag URL so the deprecation README stays reachable after the source is removed from the monorepo.

@vlandoss/run-run@0.5.3

12 May 22:57
ede3461

Choose a tag to compare

Patch Changes

  • #210 7d7e673 Thanks @rqbazan! - Internal migration to the new tinyexec-backed ShellService (see @vlandoss/clibuddy).

    • ToolService.exec now accepts only string[] (the string overload that silently word-split on spaces is gone). All tool services (biome, oxlint, oxfmt, tsdown, tsc) build their flags as arrays so each flag survives as its own argv entry.
    • Bin resolution moves into the base ToolService: subclasses declare { pkg, bin?, ui } in the constructor and the base resolves the absolute path via resolvePackageBin (memoised). The verbose $ <bin> <args> line is preserved via the display option so users still see $ biome check ... instead of an absolute resolved path. Resolving to the absolute path bypasses the node_modules/.bin/<bin> shims that run-run itself publishes (tools/biome etc.), which would otherwise loop back through rr tools <bin> indefinitely.
    • tscheck runs pretsc / pretypecheck package scripts through shell: true so they can use &&, pipes, and env-var substitution.
    • Bump tsdown from 0.21.10 to 0.22.0. tsdown@0.21.x depends on unrun@^0.2.37, which pnpm resolved to 0.2.38 — whose published tarball is missing dist/, producing WARN Failed to create bin … unrun on every install. tsdown@0.22.0 dropped unrun from dependencies (now an optional peer), erradicating the warning.

    Tests reorganised into one e2e file per command (cli, jsc, lint, format, tsc, build-lib). Each spawns the real rr binary against a temp fixture (makeFixture helper) and asserts on observable output, so we no longer rely on a clibuddy/test-helpers mock.

    End-user CLI behaviour is unchanged.

  • Updated dependencies [7d7e673]:

    • @vlandoss/clibuddy@0.6.0

@vlandoss/localproxy@0.2.3

12 May 01:03
113d14a

Choose a tag to compare

Patch Changes

  • #206 6c2ec90 Thanks @rqbazan! - Deprecate package — final published version with notice.

    Each package's homepage is repinned to a tag URL so the deprecation README stays reachable after the source is removed from the monorepo.

@vlandoss/clibuddy@0.6.0

12 May 22:57
ede3461

Choose a tag to compare

Minor Changes

  • #210 7d7e673 Thanks @rqbazan! - Breaking: Replace zx with tinyexec and redesign ShellService around array-based exec.

    The previous tagged-template API (shell.$\...`) and its surrounding helpers (quote, isRaw, defaultQuote, getPreferLocal, localBaseBinPath, mute(), quiet(), isProcessOutput, ./test-helpersexport) are gone. They duplicated zx internals, introduced a quoting bug for whitespace strings, and surfaced inconsistentnode_modules/.bin` resolution.

    New surface:

    • shell.run(cmd, args, opts?) — streams stdio to the terminal and prints $ <cmd> <args> in verbose mode. Throws NonZeroExitError on non-zero exit by default.
    • shell.runCaptured(cmd, args, opts?) — silent, returns the captured Output { stdout, stderr, exitCode }. Same throw-by-default semantics.
    • shell.at(cwd) / shell.child(opts) — child shells with merged options.
    • RunOptions: cwd, env, verbose, throwOnError, shell (pass-through shell: true for &&/pipes), stdin, display (override the verbose-printed name without affecting what's spawned).
    • resolvePackageBin(pkg, { from, binName? }) — async resolver that returns the absolute path to an installed package's binary, tolerating restrictive exports maps (oxlint) and packages without main/exports at all (@biomejs/biome). Memoised per (pkg, from, binName).
    • isNonZeroExitError(value) — replaces isProcessOutput.

    tinyexec automatically prepends every parent node_modules/.bin to PATH, so localBaseBinPath / getPreferLocal are no longer needed.

    New dependencies: tinyexec (replaces zx), memoize (for resolvePackageBin).

    Migration

    • await shell.$\git init`await shell.run("git", ["init"])`
    • await shell.$\git config`.nothrow()await shell.runCaptured("git", ["config", ...], { throwOnError: false })`
    • shell.mute() → call runCaptured instead (silent by default).
    • createShellService({ localBaseBinPath: [dir] }) → drop the option; tinyexec walks up automatically.
    • isProcessOutput(err)isNonZeroExitError(err).
    • Tools wrapping a npm package (e.g. biome, tsdown) should resolve the bin path via resolvePackageBin and pass it as the cmd with display: "<friendly-name>" to avoid node_modules/.bin/<name> shim loops.

@vlandoss/biome-config@0.0.9

12 May 01:03
113d14a

Choose a tag to compare

Patch Changes

  • #206 6c2ec90 Thanks @rqbazan! - Deprecate package — final published version with notice.

    Each package's homepage is repinned to a tag URL so the deprecation README stays reachable after the source is removed from the monorepo.

@vlandoss/vland@0.1.0

11 May 02:37
34f6314

Choose a tag to compare

Minor Changes

  • #198 d467f7f Thanks @rqbazan! - Initial release of @vlandoss/vland — the modern project bootstrapper that replaces @vlandoss/starter.

    • Same vland binary and UX (ASCII banner, --usage → KDL, ghost completion command via the bash bin dispatcher).
    • New vland init [name] [-t <template>] flow built on giget + @clack/prompts + commander, with placeholder replacement ({{projectName}} / {{author}} / {{year}}), automatic dependency install via nypm, and git init through clibuddy's ShellService.
    • Three official templates fetched from github:variableland/dx/templates/<name> (with a VLAND_TEMPLATES_DIR escape hatch for E2E):
      • library — standalone publishable TypeScript library with Changesets release workflow.
      • backend — Elysia (@elysiajs/node) service with evlog, zod, Dockerfile, vitest integration test.
      • monorepo — pnpm + Turbo workspace with apps/api (Elysia + evlog), apps/web (Vite + React), packages/types (shared zod schemas).
    • All templates target Node.js 20+ (24 recommended), use pnpm 10.6.4, extend @vlandoss/config for biome and tsconfig, and include @total-typescript/tsconfig as a direct devDep so rolldown/vite can resolve the shared tsconfig under pnpm strict isolation.

Patch Changes

  • Updated dependencies [d467f7f]:
    • @vlandoss/clibuddy@0.5.0

@vlandoss/run-run@0.5.2

11 May 02:49
6b65cf5

Choose a tag to compare

Patch Changes

  • #201 c46f6e8 Thanks @rqbazan! - Document shell completion setup for project-local installs (mise/direnv guard + cached-script fallback)

@vlandoss/starter@0.4.0

10 May 22:36
f113276

Choose a tag to compare

Minor Changes

  • #195 ebcc490 Thanks @rqbazan! - Add shell completion support to the vland CLI via a new completion <shell> subcommand (bash/zsh/fish), powered by usage.