Releases: nikolasgioannou/moth
Releases · nikolasgioannou/moth
Release list
v0.5.0
Added
moth upgradeupdates moth to the latest release, and--checkreports without installing. An install owned by Homebrew or npm is never overwritten — moth prints that installer's command instead, because replacing the binary underneath a package manager leaves it convinced it still has the old version. moth contacts the network only when this command is run, and never in the background.moth checkreports a parent that does not exist. Dangling blockers were already reported; a broken parent link read as a healthy store.
Fixed
- Parent and blocker ids were written unquoted and read back as numbers.
parent: 66428eparsed as66428, silently detaching a sub-ticket from its parent and letting the one-level nesting rule be bypassed. Ids in theidfield were already quoted against this; the fields holding references to ids were not. Roughly 0.6% of random ids take the affected shape — digits with a trailinge— which is why it surfaced as an intermittent test failure rather than an obvious bug. Runmoth checkto find any store already affected. - An ambiguous reference now lists the candidates everywhere, including
moth deleteand the--parentand--blocked-byflags. Previously only the primary argument did, so the one destructive command gave the least helpful message. moth --helpdescribed ticket ids as numbers that could be padded, which they have not been since 0.2.0.
Changed
- Exit codes follow the spec's boundary consistently. A value that could never be legal — a priority outside the fixed set, or
--set body=— now exits2rather than1, matching the documented meaning of a usage error. A value illegal only in this repository, such as an undefined status or an undeclared field, still exits1.
v0.4.0
Added
- musl builds for Linux, published as release assets and as the npm packages
moth-cli-linux-x64-muslandmoth-cli-linux-arm64-musl. moth could not run on Alpine at all before this: a glibc binary names an ELF interpreter that does not exist there, and the loader's error names a missing file rather than the cause.
Fixed
- npm no longer installs a glibc build on a musl system. The platform packages declare
libc, and because that field is only honoured by npm 10.2+, pnpm and Yarn 4, the launcher also resolves the package by libc at runtime rather than trusting the install. install.shdetects musl and downloads the matching binary, and says what to install if the binary cannot start.
v0.3.1
Added
moth new --priority <p>andmoth new --label <l>, so filing a prioritised or labelled ticket is one command rather than anewfollowed by anedit.--labelis repeatable, and an illegal priority is refused before anything is written.
Fixed
- The worked examples in
--helpused sequential ticket ids (20,001), which have not been moth's shape since 0.2.0.
v0.3.0
Existing tickets are read correctly by this version with no migration. What changes is the command surface and the naming convention on disk.
Removed
moth append. The body is now replaced throughmoth edit --body <text>or--body-file <path | ->, mirroringmoth new.appendadded text under a## Notesheading it invented, which was moth imposing structure on the one field it enforces no schema over. Adding to a body now means reading it first, whichmoth show --jsonreturns.moth doctor. Usemoth check, unchanged,--fixincluded.doctorconventionally means "diagnose the installation", and this command validates ticket data.
Changed
- Ticket files are named
slug-id.md—fix-the-login-redirect-a3f8c1.mdrather thana3f8c1-fix-the-login-redirect.md. A leading identifier earns its position by sorting meaningfully; a random id sorts arbitrarily, so leading with one bought nothing and pushed the title rightward. Runmoth check --fixto migrate. Ids live in frontmatter and are never parsed from filenames, so nothing that references a ticket breaks, and tickets still named the old way are read, listed and resolved normally until renamed. moth checkno longer claims a filename mismatch means the title changed; it reports the mismatch and leaves the cause open.
Added
moth edit --body <text>andmoth edit --body-file <path | ->.--body-file -reads stdin, so markdown pipes in without shell quoting mangling it.
Fixed
- A ticket missing
created_at— one written or edited by hand — crashed every command that lists tickets, with aTypeErrorfrom the sort. Ordering now falls back to the id. The crash surfaced only when the malformed ticket was read first, so it depended on the filesystem and went unseen on macOS. moth checknow reports a ticket missing a required field. Previously it validated undeclared fields and unknown statuses but not missing ones, so such a ticket was neither survivable nor reported.--body-filewith an absolute path read the wrong location: the path was joined onto the working directory, so/tmp/body.mdresolved to<repo>/tmp/body.md. Present inmoth newsince 0.1.0.--body-filewith a missing path printed a stack trace; it now reportsmoth: cannot read '<path>'and exits 1.--set body=was accepted when a repository declaredbodyas a custom field, writing a frontmatter key that collided with the document body. It is now refused, pointing at--body.
v0.2.0
v0.1.0
Full Changelog: https://github.com/nikolasgioannou/moth/commits/v0.1.0