github ljtn/epiq v1.9.0

7 hours ago

v1.9.0
Contributor identity

  • Git addresses bind to board contributors as events — anyone may link, only the link's author or its target may retract.
  • Commit authors resolve to the contributor who owns the address, so a person's commits group under one name instead of a second lane. Unclaimed or contested addresses fall back to the raw git name.
  • New identity panel behind the header avatar: who you are, which addresses are yours, and which are claimed by two people and resolve to neither.
  • Claim addresses at setup, from the panel, or with :emails in the TUI (:emails-unclaim releases one). Over MCP: epiq_contributor_email_link, _unlink, _suggest, _list.
  • Nothing links itself — no board write claims an address you didn't pick.

Setup

  • Answered step by step rather than retyped: each step opens the next, tab-completes, and arrives seeded with git's name and address.
  • Declining works with no board present, and is remembered per board rather than once per machine.
  • npm run start:scratch-board walks setup against a throwaway repo on an unconfigured machine.

Code tab

  • A ticket's commits as one compacted diff: the oldest's parent against the newest, narrowed to the ticket's own files, naming the files where another ticket's commit landed in the range.
  • Comments, filed tickets and review ticks work in that view. Only what can be anchored truthfully is offered.
  • The chosen view rides in the URL as ?diff=compacted|commits, so a link names the view it was written about.
  • Cards carry their commits' diff stat beside the ref; clicking it opens the ticket on its Code tab.
  • Ref matching is pinned to one line of history — a rebase copy on a stale branch was making ranges straddle a divergence (51 files for a ticket that touched three).

TUI

  • Enter on a commit reads its patch in the terminal, coloured by what changed rather than by language; o still hands it to the editor.
  • Enter on a diff line starts a comment — the same comment the GUI writes. A line that already has one carries a rule in the margin.
  • Command-line history outlives the app, kept per project.
  • Shift moves the cursor five rows at a time and stops at the ends.

Event log and timeline

  • The log covers the whole window, and lists only what the board on screen can act on.
  • Ticket refs preview on hover: title, lane, and the opening of the description.
  • The bar, timeline and log take a ground of their own below the board.

Internals

  • lib/event is now generic over its event map; lib/board is the board as one product on it.
  • An event says who by id and the display name comes from the contributor registry, so a rename travels as an event.

Upgrading

  • Log files are now named .jsonl. 1.9.0 reads the old ..jsonl form unchanged, but a 1.8.x client reading logs written by 1.9.0 attributes those lines to unknown. On a shared board, upgrade together.

Don't miss a new epiq release

NewReleases is sending notifications on new releases.