Skip to release timeline
ttyinv

PUBLIC CHANGELOG

No release yet.So no release claims.

ttyinv has no tagged version. This page records what the unreleased ttyinv/v2 line already does, and it gets a date when there is one to give.

SHIP LOG

What is built, before anything is tagged.

UNRELEASED
  1. UNRELEASED · NOT YET TAGGEDUNRELEASED
    VERSIONUNRELEASED
    ttyinv/v2RUST + WASMONE RENDERERUNRELEASED

    A content-first invoice source with one engine behind every surface.

    Nothing is tagged yet. The ttyinv/v2 line puts a readable Markdown document at the centre and runs one Rust engine behind the CLI, the browser, and the agent transports, so the same source validates identically everywhere.

    • A content-first ttyinv/v2 source: minimal enumerated frontmatter, an H1 title, a metadata list, fixed From and Bill to parties, ordinary H2 sections holding one table or prose body, and a fixed Settlements, Payment, and Signature footer.
    • Directives belong to the block below them. gap-before, page-break-before, and summary-only sit above a heading and travel with that section when it moves.
    • Five format presets replace the locale tag. Each preset prints the ISO 4217 code before the amount and arithmetic runs on minor units, so no display locale can change what an invoice says.
    • A Rust core holds the parser, the canonical serializer, validation, and versioned edit operations. The browser runs that same core as WebAssembly inside a Web Worker.
    • The generated command registry exposes create, validate, inspect, convert, edit, prepare_render, render, resolve_presentation, and registry across the adapters that support each command. There is no Python and no separate renderer to install.
    • In-canvas editing: every scalar the engine can address is edited where it is read, and a value the engine cannot address gains no affordance.
    • Block editing: each ordinary section carries a drag handle and a gap rail in the paper margin, reachable by pointer, touch, and keyboard. One drop is one engine operation and one undo step.
    • Structure controls stay disabled unless the browser parse and the engine structure manifest agree exactly, so a reorder can never act on a stale reading of the document.
    • Ten curated themes and ten monospace faces, with printable and geist-mono as the defaults.
    • Multi-currency display columns preserve alternate amounts while one qualified column carries the payable totals.
    • Authored Subtotal, Total, and Grand Total rows stay visible without double-counting generated section or invoice totals.
    • The exact page-break marker creates deterministic page breaks and section boundaries.
    • The editor produces HTML, PDF, and PNG in the browser itself, with that same core renderer compiled to WebAssembly in a worker; it uploads nothing and it has no file input at all. On the hosted app that export sits behind the one-time unlock.
    • REST and MCP transport share the generated command contract with the CLI, WebMCP, and editor. Create, inspect, convert, validate, edit, prepare, and render are available without a purchase.
    • One renderer serves every surface. The CLI, the browser editor, and the REST and MCP render operations all call the same Rust core renderer for self-contained HTML, PDF, and PNG, the hosted route runs it in a bounded worker instead of on the request thread, and rendering requires no purchase.
    • The committed command-registry JSON and command schema are generated from the Rust Registry command and compared byte for byte, so adapters and published docs cannot drift apart.
    • Scoped agent tokens provide explicit, revocable access for REST and MCP requests.
    • Agent invoice payloads receive transient handling and stay out of logs, tracking, and stored records.
    • GitHub login links an account, and source download plus a lifetime export unlock for the editor ($10) support the hosted workflow.
    • Privacy keeps real invoices and generated customer documents out of the public repository.
    • Accessible sizing, responsive layout, and keyboard-reachable controls keep the editor usable across screen sizes.
    • Privacy, secret-scanning, schema, and release verification gates protect shipped output.

THE PUBLIC RECORD

No imaginary versions. No hidden release claims.

There is no tagged ttyinv release, so this page names none. The commit history is the record until a version ships; a release entry appears here when one does.

Inspect the public history