Skip to content

0.3.0 - 2026-08-09

Choose a tag to compare

@github-actions github-actions released this 09 Aug 20:59
43ddacf

Release Notes

A sweep of the Markdown write path. lash add and lash format both
regenerated Markdown from a parsed model that did not carry everything the
source did, and neither noticed when the difference cost content. Several of
these fixes address silent data loss that exited 0.

Added

  • The file watcher's outbound channel is bounded at 256 events. Past that the
    debouncer stops sending and raises an overflow flag, and the TUI answers with
    a single full reload instead of thousands of individual reindexes. A branch
    switch across a large project no longer grows memory and latency with the size
    of the burst.

Changed

  • Synthesized task IDs come from one derivation (synthesize_task_id) shared by
    lash add and the parser, and lash add now reports the ID the index will
    actually store. Task IDs change for titles containing inline labels or
    punctuation inside a word — a task titled Ship v0.7.0 release notes #docs
    was printed as ship-v0-7-0-release-notes and stored as
    ship-v070-release-notes-docs. Tasks with an explicit @id: are unaffected.
    Run lash check-links after upgrading to catch @depends-on references
    written against a previously printed ID.

Fixed

  • lash format no longer deletes sections it does not model. Rebuilding from
    the parsed model dropped every section other than the header, Description and
    Tasks — a file with ## Notes and ## References came back with neither, and
    sections above ## Tasks went too. The formatter now regenerates only the
    spans it owns and copies every other line through unchanged.
  • lash format no longer appends a duplicate copy of every inline label on each
    run, which left format --check reporting a file as dirty forever.
  • lash add no longer splices a new task into the middle of the preceding
    task's annotation block, which silently truncated multi-line @agent-note
    values on the next reindex.
  • lash add no longer inserts past the end of the annotation block, which
    landed new tasks under a following ## Notes section, split from the tasks.
  • lash add into a file with an empty ## Tasks section no longer prepends the
    checkbox above the H1, where the parser never saw it — the task was written to
    disk while lash index reported 0 tasks and lash lint passed.
  • lash add --agent-note with an embedded newline emitted an unindented
    continuation line the parser then dropped. Notes are emitted so they round
    trip, and values that cannot round trip regardless of indentation (a blank
    line, a line starting with @) are rejected up front.
  • UserConfig save/load take an explicit path, so running the test suite no
    longer writes the developer's real ~/.lash/config.toml. An interrupted run
    previously left color_scheme = "Test Theme" behind, which no theme resolves,
    breaking every later lash invocation on that machine.

Install lash 0.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/fixture-dev/lash/releases/download/v0.3.0/lash-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/fixture-dev/lash/releases/download/v0.3.0/lash-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install fixture-dev/tap/lash

Download lash 0.3.0

File Platform Checksum
lash-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
lash-x86_64-apple-darwin.tar.xz Intel macOS checksum
lash-x86_64-pc-windows-msvc.zip x64 Windows checksum
lash-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
lash-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum