Skip to content

Releases: layermix-labs/cli

v2.4.0

20 Apr 00:06
5335e93

Choose a tag to compare

Minor Changes

  • 2138910: change(cli): fail loudly on empty or unknown targets in CI/AI mode

    Two user-input failure modes that used to silently exit 0 now exit 1:

    • Unknown task id / tag (in every mode, TUI included). layermix buildd (typo) previously resolved to an empty task set and exited green; now it prints Error: Unknown task: "buildd" to stderr and exits 1. Same for -t <tag> when no task carries the tag. Applies to defaultRun too — a misconfigured "defaultRun": "-t teest" no longer silently no-ops.
    • Empty target in CI/AI mode (--ci, --ai, CLAUDECODE/CURSOR_AGENT/etc., or any is-ci-detected env). Previously printed a yellow hint and exited 0 — the same as a piped non-CI shell. That was too quiet for a scheduled agent or CI job: the run would appear green while nothing had been done. Now it prints an error and exits 1.

    Piped non-CI linear mode (e.g. layermix | less from a dev terminal) is unchanged — it still prints the yellow hint and exits 0, since a human is there to read it. TUI sessions are unchanged: they stay idle on empty target and never fail on construction for a missing id (you navigate and pick).

    Migration: if your CI pipeline relied on layermix --ci being a no-op when nothing was configured, either pass an explicit target (layermix --ci -t test) or set defaultRun in task-runner.json:

    "defaultRun": "-t test"
  • 0c9a78a: change(cli): remove the implicit "run everything" fallback in CI/AI mode

    Bare layermix --ci (or --ai, or any CI-detected invocation) with no explicit target no longer runs every task. It now prints the same No tasks specified… hint the piped non-CI path does and exits 0. layermix --ai in an unfamiliar repo shouldn't silently execute the whole pipeline.

    Migration: set defaultRun in task-runner.json — it kicks in in every linear-mode shape (CI/AI and piped non-CI) and is unchanged:

    "defaultRun": "-t test"   // or a task id, or "id1 id2"

    TUI sessions are unchanged: they still stay idle on an empty target.

Patch Changes

  • addb737: docs: add agent skill template for downstream projects

    New agent-skill.md at the repo root — a copy-paste Claude Code skill (with YAML frontmatter) that teaches coding agents how to use layermix correctly in projects that consume the CLI: which flags are safe, how to read task-runner.json, when to prefer --dry-run-json, how to interpret exit codes. README.md gains an "Agent skill template" subsection under "For CI / AI agents" with a one-liner curl to drop it into .claude/skills/layermix/SKILL.md. Not shipped in the npm tarball — pulled from GitHub directly.

  • fe913e2: fix(cli): read version from package.json so --version and scaffolded $schema stay in sync

    Two spots hardcoded the version string (2.2.0) and drifted from package.json (2.3.0): program.version(...) in Commander, and the $schema URL in the init scaffold. Both now read from package.json at startup, so future pnpm changeset version bumps don't leave stale strings behind.

    No behavioural change for existing configs. Newly scaffolded task-runner.json files will point at the installed CLI's version of the schema on Unpkg.

v2.3.0

17 Apr 22:10
299bb00

Choose a tag to compare

Minor Changes

  • 664a2ed: feat(config): add optional label to tasks for the TUI sidebar display name

    Tasks can now declare label, a UI-only display name that renders in the TUI sidebar, Overview waterfall, task-detail header, list output, and linear-mode log prefixes ([label] Starting...) in place of id. id stays the canonical handle everywhere else — CLI targets, dependsOn, JUnit testcase names, and dry-run JSON keys are unchanged, so labels are safe to add or rename without breaking CI integrations. The sidebar search (/) now matches on id and label.

v2.2.0

17 Apr 21:19
0769126

Choose a tag to compare

Minor Changes

  • 13eeb63: defaultRun config field. New top-level option that sets a CLI-style fallback target for non-TUI invocations:

    "defaultRun": "-t test"        // tag selector
    "defaultRun": "build"          // single task id
    "defaultRun": "build deploy"   // multiple task ids

    Fires in any non-TUI run (--ci, --ai, auto-detected CI/AI env, or piped non-TTY shells) when no explicit target is supplied. TUI sessions stay idle so the explicit "pick what to run" UX is preserved. Explicit user targets always win over defaultRun.

    In CI/AI mode, this pre-empts the previous "run everything" fallback — invocations like layermix --ci now run only the configured target instead of the full graph. In piped non-CI mode, it pre-empts the "No tasks specified" hint.

  • a70b42f: Task arguments + TUI workflow upgrades:

    • Per-task positional inputs. Tasks can declare args mapping $1, $2, ... in cmd to typed inputs: free text, select (one-of), file (glob-filtered file picker), and folder (glob-filtered directory picker). File/folder support multiple for checklist-style multi-select.
    • TUI args picker. When a task with declared args is launched (Enter on the sidebar, or layermix <task> from the CLI), an overlay walks the user through each input in turn, with shell-quoted substitution into the final command.
    • Rerun + post-failure Run. Success-with-args menus get a "Rerun" option (replays last args, no picker) — placed first so Enter does the expected thing. Failure-with-args menus get a "Run" option that re-opens the picker. "Run With Deps" is now hidden for tasks with no dependsOn.
    • CLI --arg flag. Repeatable -a/--arg <value> for non-interactive runs. Comma-separated values feed multi-select args. Rejected when targeting more than one task (positional ambiguity).
    • Task search. Press / in the TUI to filter the sidebar by task id; auto-expands matching groups/tags.
    • UI-only task groups. Tasks sharing a group field render under a collapsible header in the sidebar, hidden from the flat task list. Pure UI — no CLI behavior.
    • Tag-scoped retry-failed. "Retry Failed" inside a tag detail only resets failed tasks within that tag. New force option on scheduleRun re-runs already-completed tasks (used by tag re-run).
    • Queued state. New taskQueued event flips tasks to a visible QUEUED status the moment they enter the pending set, so users see scheduled-but-not-started work.

v2.1.0

17 Apr 18:26
fd26a11

Choose a tag to compare

Minor Changes

  • 9065b7c: TUI improvements:

    • Keyboard navigation: added single-key shortcuts (r, R, c, K, x) for the TaskDetail action menu, plus arrow/h/l cycling and Enter to activate.
    • UX polish: clearer overview waterfall, refreshed sidebar/tag/task layout, and improved status visibility in the top bar.
    • Performance: drastically reduced TUI flicker for chatty tasks. Stdout chunks are now coalesced into one render per ~16ms frame, the Overview duration ticker only runs while tasks are active, and the log pane reuses rows on scroll/tail instead of remounting them. A 5000-line per-task log buffer keeps memory bounded for long-running tasks.

v2.0.0

17 Apr 10:51

Choose a tag to compare

Major Changes

  • Complete rewrite of @layermix/cli as a DAG-based task runner with an Ink TUI. The previous 0.x line was a framework helper (codegen + AI enhancement); this 2.x line is a generic task orchestrator. Existing users on 0.x will be upgraded — the CLI surface is entirely different.

    • Define tasks + dependencies in task-runner.json (zod-validated, JSON-schema-backed for IDE autocompletion).
    • Parallel execution up to dependency constraints, with cascade-skip on failure and per-task retry from the TUI.
    • TUI with sidebar, live Gantt overview, and per-task streamed output; linear buffered output for CI/AI agents.
    • Subcommands: init, list, validate, run (default).
    • Auto-detects CI (is-ci) and coding-agent envs (Claude Code, Cursor, Aider, Continue) to switch to linear mode.
    • --junit <path> writes a JUnit XML report (works in both modes); --dry-run-json emits a machine-readable execution plan.
    • Monorepo-friendly: configs are discovered via cosmiconfig and merged upward through parent directories.

v0.5.0

20 Aug 16:49
9301e67

Choose a tag to compare

Minor Changes

v0.4.0

13 Jun 19:35
b1eb319

Choose a tag to compare

Minor Changes

  • 26bd471: The last command you will run will be stored.
    The next time you run in interactive mode the new option will appear, allowing you to rerun the command.

    Now the playwright debug option asks you for the file you want to debug.

Patch Changes

v0.3.0

18 May 12:07
5332f1f

Choose a tag to compare

Minor Changes

v0.2.1

12 May 09:42
af6c227

Choose a tag to compare

Patch Changes

  • 4513e41: Better terminal viewing experience when there are a lot of options.

v0.2.0

27 Apr 11:01
bc3b2ab

Choose a tag to compare

Minor Changes

  • b82810f: - Reorganize CLI interactive mode
    • Add new translations command
    • Add new component generator