Skip to content

Releases: leonkacowicz/trck

v0.31.1

Choose a tag to compare

@github-actions github-actions released this 27 Sep 14:39
22c381f

What's Changed

Full Changelog: v0.30.1...v0.31.1

v0.30.1

Choose a tag to compare

@github-actions github-actions released this 16 Aug 15:03
85d9f92

What's Changed

Full Changelog: v0.30.0...v0.30.1

v0.30.0

Choose a tag to compare

@github-actions github-actions released this 16 Aug 02:36
a0414b5

What's Changed

  • homebrew: pin the v0.29.1 checksums by @leonkacowicz in #29
  • #ahgehpa: read verbs take content from Ctx, not paths by @leonkacowicz in #31
  • #32gyghs: a harness for a ref-backed tracker in a temp git repo by @leonkacowicz in #32
  • #3dv63bn: --ref/$TRCK_REF and the tracker-ref resolution order by @leonkacowicz in #33
  • #yuj6azz: finalize returns a changeset and an Op instead of writing files by @leonkacowicz in #34
  • ci: adopt ratchet 0.2.0, and measure the comparison baseline by @leonkacowicz in #35
  • #2ybw758: read the tracker out of a git ref by @leonkacowicz in #36
  • #p95aabv: new says where its body comes from by @leonkacowicz in #37
  • #nabxbdk: $EDITOR on the template, checked before it is accepted by @leonkacowicz in #38
  • #jgf9ktx: blobs to tree to commit-tree, then CAS the local ref by @leonkacowicz in #39
  • #zxz9vu2: trck edit — rewrite an issue's prose by @leonkacowicz in #40
  • #93zhqbd: structured commit subjects and a replayable Trck-Op trailer by @leonkacowicz in #41
  • #abynj5c: read the local tracker branch, not just origin's by @leonkacowicz in #42
  • #5w9d7sq: push with CAS, and rebuild the operation when someone else lands first by @leonkacowicz in #43
  • #dak2sjq: trck sync, and saying what a write left unshared by @leonkacowicz in #44
  • #yqb2afy: a narrowed fetch refspec hides the tracker, and setup-git widens it by @leonkacowicz in #45
  • #c3uzxka: diff resolves revisions on the tracker branch by @leonkacowicz in #46
  • #jvk5637: no test fixture puts a tracker at the temp directory's top level by @leonkacowicz in #47
  • #9gxktnk: replay the whole pending stack, and refuse an op that no longer applies by @leonkacowicz in #48
  • hooks: the pre-commit guard stops running trck check by @leonkacowicz in #49
  • ref: validate and name a write where it landed, not where it was read by @leonkacowicz in #50
  • #sny6t9q: detach a worktree that has the tracker branch checked out by @leonkacowicz in #51
  • CI: the tracker gets its own workflow, and the classifier forgets it exists by @leonkacowicz in #52
  • CI: the tracker workflow's manual trigger has to name the branch by @leonkacowicz in #53
  • ci: tracker.yml leaves main, because it could never have fired from here by @leonkacowicz in #55
  • release: v0.30.0 by @leonkacowicz in #56
  • main: remove issues/ — the flip by @leonkacowicz in #54

Full Changelog: v0.29.1...v0.30.0

v0.29.1

Choose a tag to compare

@github-actions github-actions released this 13 Aug 20:49
205d277

What's Changed

Full Changelog: v0.29.0...v0.29.1

v0.29.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 14:55
271328d

What's Changed

Full Changelog: v0.28.0...v0.29.0

v0.28.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 18:12

What's Changed

New Contributors

Full Changelog: v0.27.0...v0.28.0

v0.27.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 14:29

Breaking: --depends is now --requires

trck new "Ship it" --requires aaaaaaa,bbbbbbb   # was --depends

deps --requires already meant "what this issue needs". The flag on new described the same
edges under a second name, and now both spell it the same way. The old spelling is not silently
ignored — it is refused with a message naming the replacement:

error: `--depends` is now `--requires` (it reads with `trck deps --requires`, which shows the
same edges). Try: trck new --requires <ids>

Nothing about the data changed: existing trackers, depends_on in index.jsonl, and every
other verb are untouched.

trck <verb> --help explains the verb

It used to print the same summary of the program whatever verb came before it — the least
useful moment to be told what trck is in general. Every verb now has its own usage line,
description, arguments, options, and an example where one is worth showing. trck repo --help
lists the subcommands.

A test ties that help to the parser in both directions: a verb cannot document a flag it would
refuse, nor accept one it leaves unmentioned. Two inaccuracies surfaced the moment it ran and
are fixed here — deps no longer advertises a --graph it does not accept, and diff
documents --from.

Installing on Windows actually works

The installer required unzip to open the Windows archive. A stock Windows does not have it,
and Git for Windows does not add one, so curl … | sh downloaded the artifact, verified its
checksum, and then failed on the last step. It now unpacks with tar, which Windows has
shipped since Windows 10 1803, falling back to unzip where that is what exists. CI runs the
installer under Git Bash on a real Windows machine so this cannot quietly break again.

Also

  • trck list | head no longer panics. A closed pipe is the shell working as designed, and it
    now ends the process quietly instead of printing a backtrace.
  • trck repo setup-git pins the tracker's formats to LF. These files are compared byte for
    byte, so a CRLF checkout meant the first verb to run rewrote them whole. Existing
    .gitattributes are upgraded in place rather than gaining a second, stale rule.
  • trck init no longer writes an engine into your repository.

Install or upgrade:

curl -fsSL https://raw.githubusercontent.com/leonkacowicz/trck/main/scripts/install.sh | sh

v0.26.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 11:06

Full Changelog: v0.25.0...v0.26.0

v0.25.1 — the final Python engine

Pre-release

Choose a tag to compare

@leonkacowicz leonkacowicz released this 06 Aug 11:08

This is the final release of the Python engine. trck is a single binary from
v0.26.0 onward.

Nothing about your tracker changes. The on-disk format is identical, and the binary reads an
existing issues/ directory exactly as it stands — there is no migration to run.

Getting the binary

curl -fsSL https://raw.githubusercontent.com/leonkacowicz/trck/main/scripts/install.sh | sh

It picks the right target from uname, verifies the published checksum, and installs to the
first writable directory on a short list. Binaries for Linux (glibc and musl, x86_64 and
aarch64), macOS (Intel and Apple Silicon) and Windows are attached to the v0.26.0 release, and
there is a Homebrew formula in packaging/homebrew/.

What changed in 0.25.1

trck update no longer tries to update. It fetched ./trck from the repository tree at the
newest release tag, and that file is going away — an engine that kept fetching would report
HTTP Error 404 and blame the network for a decision this project made, forever, because no
later Python release will exist to correct it. It now says where to go instead.

trck update --ref <tag> still fetches a specific Python version if you need to pin one.

Why

The engine was one standard-library-only Python file, which bought a great deal: no install, no
dependencies, and a copy you could commit next to your data. What it could not buy was speed at
the size trackers actually reach, or a single artifact that runs where Python isn't. The Rust
engine is measured against the same executable specification this one was — conformance/, 227
fixtures, run against the binary on every commit and against the published artifact before any
release is allowed to exist.

Marked as a pre-release so that curl | sh and /releases/latest continue to resolve to the
binary. It is not a preview — it is the last one.

v0.25.0

Choose a tag to compare

@leonkacowicz leonkacowicz released this 02 Aug 15:34

No breaking changes. Update with trck update (or drop in the new ./trck) and carry on —
nothing to migrate, no flags removed.

This is a layout release: trck deps and the HTML graph both got a lot better at drawing a
dependency DAG you can actually follow.

trck deps — shorter gutter lanes

The gutter graph now shortens a lane by sliding nodes along the order, so a dependency line
spans fewer rows and crosses less of the graph on its way. The result is stable: the same
tracker renders the same graph regardless of the order ids happen to arrive in.

tools/trck-html — a readable dependency graph

  • Rows ordered by barycentre. Nodes are placed on the average position of their
    neighbours, then rows are reordered when it cuts crossings, with a final pass that relocates
    single nodes that are still badly placed.
  • Layer-skipping edges routed through placeholders. An edge that jumps several layers no
    longer cuts straight across unrelated nodes — it is routed through invisible placeholder
    nodes, one per layer it crosses, so it follows the same lanes as everything else.
  • Edge geometry. Edges land on the arrowhead's base rather than its tip, and the vertical
    gap between layers is twice a node's height, which leaves room for the arrows to breathe.
  • Hover accenting. Putting the pointer on a node accents its edges, so you can trace what
    one issue depends on and what depends on it without leaving the graph.

tools/trck-html — view defaults

  • Facet checkboxes start checked, so a fresh view shows everything rather than nothing.
  • Tree parents start collapsed, and toggling a facet no longer forces them open.
  • Font stacks hoisted to one place and led with better families.

Tests

test_an_id_prefix_resolves pins its ids instead of generating random ones, which removes a
flake when two generated ids happened to share a 2-character prefix.