Skip to content

Releases: HaoZeke/vissue

0.9.3 - 2026-09-10

Choose a tag to compare

@github-actions github-actions released this 10 Sep 09:19
v0.9.3
4483757

Release Notes

Added

  • A satchel carries what the seat learned as well as the work and what the work
    produced. packset export --into <dir>/data/atoms writes the atoms and names
    the accessions they cite; sealing takes them into the manifest, and the check
    reports how many arrived.
  • Every MCP tool now declares whether it reads or writes, whether a write is
    destructive, and whether calling it twice changes anything more than calling it
    once. A client can tell vissue_list from vissue_normalize without calling
    either, which it could not before: forty-six tools carried no hints at all.
  • The HUD command palette (:) lists every catalog action with its chord. Help is generated from that same table, so d (cite a deed) is no longer missing. Enter runs the same handler as the chord; an empty query is recents.
  • The MCP surface completes the id a resource template asks for, matching on id
    prefix then anywhere in the title. A caller working from any tool's answer
    already has ids; the template is the one place they have to produce one from
    nothing.
  • vissue satchel packs a slice of the tracker so somebody else can open it:
    the issues named, everything they stand on, and the deed accessions their work
    produced. The shape is BagIt, so a receiver checks a manifest before reading
    anything, and the manifest has to account for the whole payload rather than
    only for what it lists. --seal re-manifests after the deed store has filled
    in the deeds; --verify is the receiver's check.
  • vissue_list, vissue_ready, vissue_show and vissue_digest return
    structuredContent with an outputSchema, rather than a pretty-printed JSON
    string inside a text block. The schema comes from the types themselves, so it
    cannot drift from what is returned. The serialized text stays beside it, for a
    client that reads only text.
  • z hides the detail preview. J and K scroll it without moving the list cursor.

Changed

  • Agenda is three Org classes: overdue deadlines first, then scheduled, then appointments (a plain active stamp in the title). Scheduled no longer looks like an appointment.

Fixed

  • Checking a satchel says what it established and what it did not. Matching a
    manifest proves the bag arrived as written and nothing about who wrote it, so
    an unsigned satchel says so, and a signed one names the verb that answers the
    other question rather than implying it answered it.
  • Hiding the HUD freezes the row order. Showing it again puts the same ticket in the same place; a poll while hidden does not reflow the board.

Developer

  • vissue-core gains an optional schema feature deriving JSON Schema on the
    view types, and agent gains typed accessors beside the JSON ones so a caller
    that wants the type does not go through a Value to get back to it.

vissue-hud 0.9.3

Install vissue-hud 0.9.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.3/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.3/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.9.3

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.9.3

Install vissue-cli 0.9.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.3/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.3/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.9.3

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.9.3

Install vissue-mcp 0.9.3

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.3/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.3/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.9.3

File Platform Checksum
vissue-mcp-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
vissue-mcp-x86_64-apple-darwin.tar.xz Intel macOS checksum
vissue-mcp-x86_64-pc-windows-msvc.zip x64 Windows checksum
vissue-mcp-aarch64-unknown-linux-gnu.tar.xz ...
Read more

0.9.2 - 2026-09-09

Choose a tag to compare

@github-actions github-actions released this 10 Sep 04:23
v0.9.2
4cef0d0

Release Notes

Added

  • A seat file can name the tracker the bare command should use. root in
    the configuration file is read after the environment and after the
    working directory, so standing in a tracker still means that one.
    A missing, empty, or unreadable seat file is ignored.

Changed

  • The HUD board now builds against icedtea 0.17. Checkboxes use CheckState, labels take a face, help markdown takes outline opts, status pages take A11y, and the old info_bar is a banner. iced stays 0.14; the TUI stays on ratatui 0.30.2.

Fixed

  • root lives on the router's own configuration file. Writing it to
    ~/.config/vissue/config.toml used to make the whole file unreadable,
    because that file denied unknown keys. The router now accepts root,
    and $VISSUE_CONFIG points at the same file.

Developer

  • The version bump rewrites every workspace member in the lockfile,
    including xtask, and refuses to finish if cargo metadata --locked
    disagrees. 0.9.1 left xtask at 0.9.0 and CI failed --locked.

vissue-hud 0.9.2

Install vissue-hud 0.9.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.2/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.2/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.9.2

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.9.2

Install vissue-cli 0.9.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.2/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.2/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.9.2

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.9.2

Install vissue-mcp 0.9.2

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.2/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.2/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.9.2

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.9.1 - 2026-09-09

Choose a tag to compare

@github-actions github-actions released this 09 Sep 16:17
v0.9.1
235d0c5

Release Notes

Fixed

  • A directory that is not a tracker says so instead of answering "none". The root
    falls back to the working directory, and a reading verb run from somewhere else
    found no projects and printed 0 with a zero exit. A caller cannot tell that
    from a tracker with nothing in it, and the two mean opposite things. A guessed
    root now has to hold vissue.toml or the prefix directory. A root named with
    --root or VISSUE_ROOT is trusted whether or not it holds anything, and man
    and completions still work from anywhere because they describe the program
    rather than a corpus.
  • backlinks reports a duplicated id instead of scanning it as a deed. The
    accession walk exists because an accession has no heading of its own. An id
    with a heading in two routed trackers is a corpus fault. Answering it with an
    empty citation list reported that fault as "nothing cites this". Only "no such
    heading" falls through to the walk now, and an unreadable file stays an error.

Developer

  • The schema comparison covers notes, and the committed constant was
    regenerated. It compared surface names and a field count. A note-only edit to
    vissue.capnp therefore left the constant carrying the previous prose, and
    every check still passed. The reader now takes each operation's note and its
    fields' notes. That is what makes the schema authoritative in fact rather than
    in the documentation alone.

vissue-hud 0.9.1

Install vissue-hud 0.9.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.1/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.1/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.9.1

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.9.1

Install vissue-cli 0.9.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.1/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.1/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.9.1

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.9.1

Install vissue-mcp 0.9.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.9.1/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.9.1/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.9.1

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from [GitHub](...

Read more

0.8.0 - 2026-08-23

Choose a tag to compare

@github-actions github-actions released this 23 Aug 18:40
976cec6

Release Notes

Added

  • Eighteen tests for findings check could emit and nothing exercised: every preamble
    keyword Org needs, the noexport warning that is about disclosure rather than
    convenience, each way a blocker is spelled wrong, a type that is not on its heading,
    two tags from one exclusive group, a priority outside the declared range, work started
    out of order under an ORDERED parent, a DONE parent with an open child, a missing
    creation date, a DONE body that reads as a reject, a sibling that already settled, a
    discovery claim with no edge behind it, and a blocker ring every edge check passes.

  • Every flag a verb takes has to appear in the schema, which closes the last
    one-directional check.

    The flag checks ran schema to surface only: a flag the schema names must exist, and a
    flag that exists and the schema omits went unseen. That is the same asymmetry as at the
    verb level, one level down, and it stayed open after the verb level was closed.

    Global flags are declared once as globalFlags and subtracted, so a per-verb row stays
    about what the verb actually takes rather than repeating --root forty times. A
    local-only verb is skipped: the HUD's nine flags are window management, and enumerating
    them in a schema of operations would bury the flags that describe a surface.

    Forty-one flags had to be recorded, generated from the argument structs rather than
    written out, and two checks had to stop guessing type names while that happened. The
    tool check derived <Verb>Args and the socket check <Verb>Params, which is wrong
    wherever a struct is shared: ancestors and impact both take DepthArgs, list and ready
    both take IssueListParams. Both now read the type from the code that declares it, the
    tool's signature and the handler's own body.

  • Every method has a typed request and response form. Nineteen did not.

    Request::parse and decode_response answered "no typed form; send it untyped" for
    append, vote, fold, check and the rest, so a client wanting typed access to
    them could not have it. The two enums had also drifted from the method list by exactly
    the amount nobody was checking.

    Four result types carry the replies: ReportResult for the reads that produce prose,
    CheckResult where the error and warning counts travel beside the text, DigestResult
    and WaitResult where there is structure worth having. Reports share one type on
    purpose — a type per report would be a contract per report to keep in step with the
    text, and the text is the part anyone reads.

    A test drives the round-trip from the capability list, so a method reaching the wire
    without a typed form fails there rather than being discovered by whoever wanted it.

  • Every mutating socket reply is asserted to have the same shape: a boolean ok, a
    report string, and the affected issue where one is named.

    mut_result produced that shape by convention rather than contract, so a method
    returning a bare field, or omitting ok, would have passed every other check. A
    client switching on ok and printing report is the normal way to use this socket,
    which makes the shape worth asserting once across all of them instead of trusting
    eleven call sites to agree.

  • Nine reads gained a --json mode: search, children, ancestors, impact,
    backlinks, agenda, tree, body-excerpt and projects.

    They answered in prose on the command line and in structure over the socket, so there
    was nothing to compare between the two surfaces and they went unaudited while every
    other read was checked.

    The modes go through the same CatalogService the socket answers from, so the two
    surfaces are one computation rather than two that have to be kept in agreement. A test
    compares all nine, and they matched on the first run, which is what routing them this
    way round was for.

  • Seven relatedness evidence labels had no test: blocked_by, parent, source_of,
    pivoted_to, successor_of, shared_tags and same_project. Nor did the limit or the
    tie-break that makes the ranking total. Two of the new tests assert a weight rather than
    a label, because a scorer that records the reason and scores it zero passes any test that
    only looks for the reason.

  • The control socket now has a method for every verb that changes a file:
    issue/append, issue/reject, issue/resolve, issue/fold and
    issue/normalize join the six that were already there.

    It stays optional. The advisory lock serialises a direct write just as well, so
    this is not a correctness fix and a client mixing the two paths corrupts nothing.
    What it buys is a complete surface: append used to exist only on the command
    line, so a socket client had to shell out for it, those writes went behind the
    server's back, and its change stream had a hole exactly where they were.

  • The operation schema names each verb's command-line flags, and every subcommand's
    help has to offer them.

    Naming a verb on each surface stops the verb going missing. It does nothing about
    the surfaces disagreeing on what to call a field, which is the next way this drifts:
    a socket method taking body where the subcommand takes --text is two spellings of
    one idea and no verb-level check sees it.

    Read out of each subcommand's own help, so the parser answers rather than a scan of
    the source that declares it. Positional arguments are excluded, and the reason is on
    the field: the first version of the list claimed create and reject took --title
    when both take it positionally, and the check caught that plus a --blocked-by that
    is really --block on its first run.

  • The reference states what the change stream promises: unique sequences, and no
    ordering.

    An event is emitted after the file lock is released, so two changes to different
    project files can reach the log in the opposite order to the one they reached disk in.
    A consumer treating a notification as "something moved, go and look" is correct; one
    reconstructing history from the log's order is not, and nothing promised it could.

    Emitting inside the lock would order the log at the cost of holding a file lock across
    another write for every state change. Declined, and the reasoning is written down: the
    log exists to wake a poller, and a poller re-reads state.

    The cross-file cycle window is recorded the same way. Locking every file an acyclicity
    check reads would prevent it and serialise every blocker edit in the corpus against
    every other, because the check reads all of it. For blockers added by hand a few at a
    time, the after-the-fact report is the better side of that trade.

  • The schema covers every subcommand, not only the mutating ones, and a test refuses a
    subcommand it does not mention.

    Until now the schema constrained the verbs it already listed. A brand-new subcommand
    failed nothing, because nothing asked whether the schema knew about it, which is
    exactly how the earlier gaps arrived: vote was added to the command line and no test
    anywhere had an opinion.

    Read verbs are held to the surfaces they claim rather than to all of them, because
    fourteen of them are genuinely absent from the socket today and the schema says so
    instead of pretending otherwise.

    Three things had to be modelled that the mutating-only version never met. Aliases,
    because create answers to q and the new check found it and could not tell it from
    a verb. Local-only verbs, because the terminal UI and shell completions have no
    remote surface and are not gaps. And a socket method answering for two subcommands,
    which identity/get does for identity and whoami, allowed when the rows say so
    and refused in silence.

    The committed generated file is now checked against the schema text as well. Editing
    vissue.capnp and forgetting to regenerate left every check validating the previous
    schema and passing, so the schema was authoritative in the documentation only.

  • The schema names each method's socket parameters, and the param structs are checked
    against it.

    The verb check says issue/append answers. It does not say the method takes text
    rather than body, and the third spelling of a field is where this drifts next. Read
    off the param structs in rpc.rs, where serde decides the wire names, so what is
    checked is what a client has to send.

    Two facts that had never been written down anywhere are now on the fields. The issue
    being acted on is positional on the command line, id on the socket and issue_id as
    a tool argument. And agent exists only on the socket, because only there is there a
    connection whose identity can be overridden; the other surfaces take it from the
    environment.

  • The schema records each field's Rust type per surface, and both checks verify it.

    A name check cannot see a type change: a field going from a number to a string keeps
    its name. update --if-gen is a u64 on both remote surfaces and nothing said the
    two agreed.

    Recorded per surface rather than once, because two of them genuinely differ and
    forcing one type over both would be a lie. priority is Option<String> as a tool
    argument and Option<char> on the socket, force is Option<bool> and bool. What
    this catches is either side changing.

    Generated from the structs rather than written out, after two earlier rounds of
    schema data written from memory turned out wrong.

  • Thirteen read verbs gained control-socket methods: issue/check, issue/count,
    issue/cycles, issue/digest, issue/export, issue/graph, issue/roadmap,
    issue/stale, issue/hygiene, issue/waiting_on, issue/mirror, events/ping
    and events/wait.

    A socket client used to shell out for all of them. That cost a subprocess rather
    than correctness, which is why it outlived the write gap, but events/wait is the
    case that made it worth closing: a verb whose whole job ...

Read more

0.7.0 - 2026-08-18

Choose a tag to compare

@github-actions github-actions released this 19 Aug 02:45
b7e47c1

Release Notes

Changed

  • The HUD board opens on the project list. Inside a project the selected
    issue stays on screen, with properties above a wrapping body and tree,
    related, and notes as tabs. Search is a field. List titles wrap inside
    the pane. The tree tab expands or collapses the outline. Related cards
    and tree double-click open that issue. Escape on the project list
    unmaps the overlay; vissue hud --toggle shows it again. Closing the
    mapped window quits.

Fixed

  • A HUD Tree pick is the issue keys act on. Confirm remembers that
    issue through a reject on Ready. Hide then show remaps the overlay.
    Add from home search writes into the selected hit's project.
  • The HUD list checkbox only flips TODO and DONE and selects that
    issue. Cancelled and blocked stay as they are. The overlay no longer
    stalls after a file write.

vissue-hud 0.7.0

Install vissue-hud 0.7.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.7.0/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.7.0/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.7.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.7.0

Install vissue-cli 0.7.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.7.0/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.7.0/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.7.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.7.0

Install vissue-mcp 0.7.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.7.0/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.7.0/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.7.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.6.0 - 2026-08-18

Choose a tag to compare

@github-actions github-actions released this 19 Aug 02:36
186a6f6

Release Notes

Added

  • Every issues.org carries #+VISSUE: 1, the on-disk protocol
    number. It is independent of the crate version and of the
    control-socket protocolVersion. normalize writes or upgrades it.
    check names a missing stamp and errors on a future number.
    identity prints protocol: 1.
  • The Org ecosystem page lists GNU ELPA, org-contrib, and MELPA
    names a rewrite must own, read, preserve, or ignore. Protocol 1
    is the tracker contract, not parity with org-noter. Collisions
    called out: org-gcal ID, org-journal CREATED, org-gtd
    TRIGGER / CATEGORY.
  • The Org syntax map states protocol 1 is the tracker contract, not
    parity with every ELPA package. org-noter (NOTER_DOCUMENT,
    NOTER_PAGE), Interleave's older names, and org-roam
    (ROAM_REFS, ROAM_ALIASES) are preserved on rewrite.
  • #+SETUPFILE: (local files only) merges TODO keywords, tags, and
    #+PRIORITIES: into the file that names it. A URL is not fetched.
    A missing or cyclic setup file is skipped so the tracker still
    parses.
  • vissue normalize rewrites a tracker onto the Org and ELPA
    property names the other tools already read: #+CATEGORY:, type
    as a heading tag, typos (BLOCKEDBY, drawer TAGS) folded, and
    a bare :BLOCKER: id list moved to :BLOCKED_BY:. --dry-run
    prints the files that would change. An org-edna condition stays.
    vissue does not mint :BLOCKER: ids(...).

Changed

  • A fresh tracker declares Org's tag and publish keywords:
    #+FILETAGS: includes noexport, #+TAGS: has the type group
    plus docs / perf / ignore / ARCHIVE, and
    #+EXCLUDE_TAGS: / #+SELECT_TAGS: are written. A rewrite appends
    noexport to an existing FILETAGS line that lacks it. search
    matches inherited FILETAGS and a group tag. An Org-format mirror
    drops a heading tagged noexport. check names a file that still
    lacks those lines.
  • A parent with :ORDERED: holds later children with the same
    :PARENT: out of ready until every earlier sibling is DONE or
    CANCELLED. :NOBLOCKING: on a child skips that wait. check
    names a heading that started or closed early, and a DONE that
    still has open children.
  • Type is an Org heading tag when the character class allows it
    (:bug:, :feature:, :task:). A write inserts a missing
    #+CATEGORY: and #+FILETAGS: so the agenda does not label every
    row issues. vissue check names a file still in the drawer-only
    shape.
  • #+PRIORITIES: highest lowest default sets the cookie range and the
    value used when a heading has no [#X]. A fresh file writes
    #+PRIORITIES: A C C. create without --priority uses that
    default; when the file has no such line it uses
    issues.default_priority. A cookie outside the range is refused.
  • :BLOCKER: is GNU ELPA org-edna (and org-depend), not a typo
    for :BLOCKED_BY:. A bare id list still feeds ready and is
    rewritten to :BLOCKED_BY:; an edna condition stays. Effort
    is recognised. check names computed specials written in a
    drawer, :BLOCKEDBY:, and an Effort value Org will not parse.

Fixed

  • An org-gcal :ID: of the form <event>/<calendar> is not an issue
    id. The heading stays in the file around the real issues.
    find_org_ids and collect_org_ids skip slash ids. check errors
    if a parsed issue still carries one.
  • Org Babel syntax is recognised without being evaluated. A
    #+RESULTS: payload, a #+CALL: line, affiliated #+NAME: /
    #+HEADER: keywords, inline src_lang{} / call_name(), and
    noweb <<name>> no longer split an issue or define a ghost id.
  • The issues.org parser now follows Org 9.8 on the constructs that
    used to fail a file or split an issue: greater and dynamic blocks are
    literal, a planning line accepts timestamp ranges and repeaters,
    drawers may arrive in any order, COMMENT and notes headings stay
    Org rather than becoming a missing :ID:, and file-local #+TODO:
    keywords are recognised. See docs/orgmode/org-syntax.org.

vissue-hud 0.6.0

Install vissue-hud 0.6.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.6.0/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.6.0/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.6.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.6.0

Install vissue-cli 0.6.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.6.0/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.6.0/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.6.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.6.0

Install vissue-mcp 0.6.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.6.0/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass ...
Read more

0.5.0 - 2026-08-18

Choose a tag to compare

@github-actions github-actions released this 18 Aug 14:40
5499d67

Release Notes

Added

  • A user-level ~/.config/vissue/config.toml can send named projects to
    another checkout. A route wins over --root and VISSUE_ROOT, so a
    process whose default root is one tracker can still create and show
    issues that live on another. --no-route and VISSUE_NO_ROUTE=1 keep
    every verb on the process default. projects and identity list the
    routed names; show and claim find an id on any configured layout.
    vissue.el still parses the original identity and projects lines;
    route lines are appended.

    refile and reject route their destination as well, so a bounce onto a
    routed name lands on that name's tracker. serve, and the TUI and HUD
    that talk to it, stay on the single layout the server was started with.

  • vissue hud is an overlay. On Sway it floats and centers itself over
    the compositor IPC socket. No Sway include or for_window rule.

  • vissue reject closes a heading as CANCELLED and writes a successor
    edge (PIVOTED_TO / DISCOVERED_FROM) in one edit, so a bounce is a
    walkable wire rather than a body mention. vissue wait --id --until-terminal
    blocks until that id is DONE or CANCELLED (exit 2 on timeout). State
    changes emit a state_change event that names the id.

  • vissue update --if-state / --if-gen refuse a write when the heading
    or corpus moved since the caller last read it. Disagreeing terminals
    keep the first close and record :SIBLING_TERMINAL:; vissue resolve
    picks one. vissue check warns on a DONE that reads as a reject and on
    a body [[id:]] with no successor edge.

Fixed

  • A freshly started serve owner is now waited on for 15 seconds rather than
    5, and VISSUE_ACCEPT_TIMEOUT_MS overrides that. A cold start binds its
    socket only after building a runtime and loading the tracker, so a loaded
    machine could reach the old deadline and be reported as a spawn failure.
    The HUD's detach path reads the same deadline.

vissue-hud 0.5.0

Install vissue-hud 0.5.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.5.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.5.0

Install vissue-cli 0.5.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.5.0

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.5.0

Install vissue-mcp 0.5.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.5.0

File Platform Checksum
vissue-mcp-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
vissue-mcp-x86_64-apple-darwin.tar.xz Intel macOS checksum
vissue-mcp-x86_64-pc-windows-msvc.zip x64 Windows checksum
vissue-mcp-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
vissue-mcp-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum
vissue-mcp-aarch64-unknown-linux-musl.tar.xz ARM64 MUSL Linux checksum
[vissue-mcp-x86_64-unknown-linux-musl.tar.xz](https://github.com/HaoZeke/vissue/releases/download/v0.5.0/vissue-mcp-x86_64-unknown-linux-musl.tar.xz...
Read more

0.4.1 - 2026-08-16

Choose a tag to compare

@github-actions github-actions released this 16 Aug 23:16
v0.4.1
13ca4e6

Release Notes

Fixed

  • vissue-serve compiles on Windows again. The notify crate is a
    Unix-only dependency; converting notify::Error is now gated the
    same way.

vissue-hud 0.4.1

Install vissue-hud 0.4.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.4.1/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.4.1/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.4.1

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-cli 0.4.1

Install vissue-cli 0.4.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.4.1/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.4.1/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.4.1

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

vissue-mcp 0.4.1

Install vissue-mcp 0.4.1

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.4.1/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.4.1/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.4.1

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

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo HaoZeke/vissue

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

0.3.0 - 2026-08-15

Choose a tag to compare

@github-actions github-actions released this 15 Aug 15:36
v0.3.0
b56f546

Release Notes

Added

  • vissue append <id> records a dated, attributed report under an issue's
    heading, from --text, a --file, or stdin. A body could previously only be
    set at create, and note folds its text to a single line by design, so
    there was no way to write down the result of work. Markdown is safe. The MCP
    tool is vissue_append.

  • vissue hud is a summonable task board. It opens on the project list;
    entering a project shows that project's ready forest, then List / Claims /
    Agenda / Search within it, with show / excerpt / tree / related / notes on
    the selected row. The window execs a separate vissue-hud binary, so the
    CLI does not carry the GUI dependencies.

    First paint reads the files. Unless --offline, the board attaches to
    vissue serve, starting it when the socket is free, and falls back to the
    files when serve is down or bound to another root. --toggle, --show
    and --hide talk to a summon socket, so a keybinding can raise the board
    that is already running rather than starting a second one.

    --rofi gives the seat dmenu picker instead, over the set named by
    --mode: Return opens the heading in $EDITOR, Alt+c claims, Alt+n
    notes. Keys come from a catalog that ~/.config/vissue/keys.toml or
    VISSUE_KEYS remaps; vissue keys prints it and --check validates an
    overlay.

  • vissue serve now caches the issue catalog and answers the v1 control
    methods (issue/list, issue/ready, issue/claim, and the rest).
    Attached clients receive vault/changed after a rebuild. The files stay
    the store: stopping serve loses nothing.

  • vissue show prints the body, and show --org writes the heading out whole
    (property drawer, logbook, and body) for handing an issue to someone as the
    thing to work from. IssueDetail carries the body, so --json, the MCP
    tools, and the control protocol answer with what the issue asks for rather
    than a file path and a line range. Prefer show --org over body-excerpt
    when the text is the specification: the excerpt is a preview and stops at 40
    lines. The MCP tool is vissue_org.

  • vissue tui is an interactive board over ready, list, claims, agenda,
    and search. First paint reads the files. Unless --offline, the board
    attaches to vissue serve (starting it when the socket is free) and
    falls back to the files when serve is down or bound to another root.

Changed

  • Publication uses crates.io trusted publishing on a v* tag, with no registry secret in the repository.
  • The minimum supported Rust version is 1.89, which is what the iced board's
    dependencies require.
  • check only searches the wider tree for :PARENT: ids that are not
    issues. It validates parents against any Org id, which includes design
    documents and notes, so on a tracker sharing a root with a notes vault it
    read every .org file to answer a question the issues had usually
    already answered. Where every parent is another issue the scan is now
    skipped entirely: 58ms to 23ms on a 35MB corpus. A tracker that does
    point at a design document still pays for the search, which now stops as
    soon as the ids it wants have been found.

Fixed

  • A body containing a line that starts with * , which any markdown bullet
    list does, no longer cuts the issue in two. The parser splits issues on that
    line, so such a body used to leave a heading with no :ID:, stop the file
    parsing, and drop every issue in that project out of list. Those lines are
    now indented by one on the way out; ** Scope and deeper are left alone,
    being children of the issue rather than the end of it.
  • A client of vissue serve sees its own write. The catalog was rebuilt only
    by the file watcher, so for up to about 450ms after a mutation the writer was
    answered from the catalog as it stood before: issue/list came back one
    short, and issue/get on the id issue/create had just returned reported
    the issue as missing. The mutation path refreshes before it answers and
    reports the resulting revision.
  • An idle tracker no longer rebuilds its catalog and broadcasts vault/changed
    several times a second. The generation poll opens the projects directory on
    every tick, inotify reports that open against the watched tree, and a read
    was counted as a change, so the rebuild's own reads raised the next event.
  • check now reads :ID: only from a property drawer under a heading, where
    org defines one. A report appended to an issue body quotes the heading it
    describes, and a quoted id used to count: a :PARENT: pointing at nothing
    resolved against the mention, and the check that exists to catch broken links
    went quiet.
  • digest and mirror --check read the corpus once rather than once per
    project. Each project's digest came from a whole-corpus export filtered
    down to that project, which is quadratic in the project count: on a
    tracker with 115 projects and 4781 issues those commands took 6.2s, and
    now take 0.16s. The digest values are unchanged, so mirrors stamped by an
    earlier version still read as fresh.

Developer

  • The catalog query surface and the typed error enum are covered by tests.

  • The seams between the parts have tests of their own. The client and the
    server now talk to each other over a real socket, which is where
    a mutation the server accepted but did not make visible to the next read
    used to hide; the Model Context Protocol (MCP) server is driven the way
    an agent meets it, a process on the other end of a pipe; serve -d runs
    as a real daemon; and Org decides whether a markdown body stayed body,
    rather than the parser deciding that about itself.

    Concurrent writers are covered: with the advisory lock removed, twelve
    overlapping create calls lose between two and six of themselves while
    every writer reports success, and nothing in the suite noticed before.

    Three drift guards fail rather than rot: every command and MCP tool must
    appear in the reference, every advertised control capability must be
    routed, and the release must cover every publishable crate in an order
    taken from the manifests.

    cargo test runs with --no-fail-fast, so a red run names every broken
    target instead of stopping at the first.

vissue-hud 0.3.0

Install vissue-hud 0.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.3.0/vissue-hud-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.3.0/vissue-hud-installer.ps1 | iex"

Download vissue-hud 0.3.0

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

vissue-cli 0.3.0

Install vissue-cli 0.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.3.0/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.3.0/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.3.0

File Platform Checksum
vissue-cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
vissue-cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
vissue-cli-x86_64-pc-windows-msvc.zip x64 Windows checksum
vissue-cli-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
[vissue-cli-x86_64-unknown-linux-gnu.tar.xz](https://github.com/HaoZeke/vissue/releases/download/v0.3.0/vissue-cli...
Read more

0.2.0 - 2026-08-14

Choose a tag to compare

@github-actions github-actions released this 14 Aug 13:52

Release Notes

Added

  • A documentation site at vissue.rgoswami.me, written as Org under docs/orgmode/ and rendered with Sphinx. The pages keep to one Diataxis quadrant each, and the README is a front door rather than the whole manual. The site is a managed Cloudflare Pages target, deployed with ttech-ops site deploy vissue.
  • Logo mark: a tessellated V of issue nodes with one ready cell, plus a circular crest and wordmark lockup under assets/.
  • MCP tools for ancestors, impact, cycles, refile, wait, and whoami. identity also emits root= / prefix= tokens.
  • vissue completions <shell> and vissue man, generated from the CLI definition so they cannot drift, with copies committed under completions/ and man/.

Changed

  • Compatibility: a tracker written by this version is not readable by 0.1.0, which fails on the planning line with ":ID: property missing". Upgrade every reader of a tracker together. A second tool that writes an issues.org also needs to place a :LOGBOOK: drawer below the planning line, or it breaks the file for every reader including vissue.
  • A new project file carries #+CATEGORY: <project>. Org otherwise takes the agenda category from the file name, and every project's file is issues.org, so a multi-project agenda labelled every row issues.
  • Dates and tags move to where Org keeps them. DEADLINE, SCHEDULED, and CLOSED render on the planning line under a heading, and a tag Org can hold renders in the heading's own tag run, so org-agenda, Org tag search, and org-lint all work against a tracker. Both shapes parse, so existing files read the same and settle on the Org shape when next rewritten.
  • JSONL export and show --json carry org_tags and a tags union.
  • The README is a front door rather than the manual: what vissue is, how to install it, a minute of it working, and links into the documentation site. The tutorial, how-to, reference, and explanation move to their own pages.
  • The tag property is :VISSUE_TAGS:. TAGS is a name Org reserves and org-lint reports; a drawer written under the old name is migrated on parse.
  • tests/org_interop.sh drives Emacs over a tracker in CI: org-lint, org-agenda, tag search, and org-id all have to agree, and Org's own edits have to survive a vissue rewrite.

Fixed

  • A fold that fails partway stamps the issues it did create, so rerunning does not create them twice.
  • A heading whose priority cookie holds a multi-byte character no longer panics the parser.
  • A prefix-scoped issues.config.toml overrides vissue.toml key by key instead of resetting the keys it does not name.
  • A reader that closes the pipe, as vissue export | head does, exits 0 instead of panicking with status 101.
  • An Org planning line no longer hides the property drawer below it. Writing a deadline, a scheduled date, or a CLOSED stamp from Emacs used to make every verb fail with ":ID: property missing" for the whole project file.
  • An issues.org is flushed to the device before the rename publishes it.
  • Auto-unblock to TODO releases the claim.
  • Event generation and log append take a file lock.
  • JSONL export and digest include CLOCK raw logbook lines.
  • Text ready now uses the corpus-wide open-blocker set, matching count --ready and JSON ready.
  • The body-excerpt secret screen reads credential shapes rather than three substrings, and matches vendor token prefixes on a whole word: the old form would have flagged "making" as an AWS key had that prefix been listed.
  • The acyclicity check for --block reads the corpus inside the lock, so a peer write that landed first is part of the answer.
  • --project folds case in list, count, ready, export, graph, roadmap, and the JSON rows, matching claims, agenda, and every verb that writes.
  • check counts a duplicate id as an error, and reports a :PARENT: cycle. Every id in a parent loop resolves, so the edge checks passed it while the hierarchy stayed unwalkable and tree printed "(cycle, stopping)".
  • create reports a full id space instead of panicking inside the write. id_length = 2 is 1296 suffixes, which a project can outgrow.
  • events::tail_report counts log lines rather than sequence numbers, so a debounced burst no longer shortens the tail.
  • graph and tree --format dot escape backslashes and newlines in titles and ids, so issue text cannot become DOT syntax.
  • hygiene matches issues by id rather than by row prefix.
  • mirror --out writes through a flushed temporary and a rename, so a reader mid-pull cannot see a half-written projection.
  • note adds its entry at the top of the logbook, where state transitions and claim releases already go.
  • org-set-tags in Emacs no longer folds the tag run into the issue title.
  • refile writes the target file before removing the heading from the source, so a failed write cannot lose the issue.
  • search and related read tags from the heading as well as the drawer.

Developer

  • The Emacs interop check reports the error when Emacs itself fails, instead of exiting with a bare status and no message.

vissue-mcp 0.2.0

Install vissue-mcp 0.2.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.2.0/vissue-mcp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.2.0/vissue-mcp-installer.ps1 | iex"

Download vissue-mcp 0.2.0

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

vissue-cli 0.2.0

Install vissue-cli 0.2.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/HaoZeke/vissue/releases/download/v0.2.0/vissue-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/HaoZeke/vissue/releases/download/v0.2.0/vissue-cli-installer.ps1 | iex"

Download vissue-cli 0.2.0

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