Skip to content

0.18.0 - 2026-09-04

Choose a tag to compare

@github-actions github-actions released this 05 Sep 03:11

Most people want the app

Validate CHAT files in a normal window, no terminal needed. Download the Chatter desktop app:

Open the downloaded file and follow the prompt (on Mac, drag Chatter to Applications). Full instructions: https://talkbank.github.io/chatter/install/

The command-line tool, the language server, and per-platform downloads are below.


Release Notes

Changed

  • Warm development tests no longer scan unpacked macOS codegen objects.
    The root and specification workspaces embed line-table debug information in
    linked artifacts instead of retaining every .rcgu.o. This bounds the file
    count in both target directories and removes filesystem enumeration from the
    warm-test path while preserving source locations in diagnostics. Nine spec
    generator commands are also excluded as empty libtest harnesses; their
    library and integration tests remain in the suite.

  • Breaking: validation returns owned evidence rather than a mutable phase marker.
    ChatFile is no longer generic. validate_into returns
    Result<ValidChatFile, ValidationFailure>; accepted payloads are read-only,
    errors retain the rejected model, and unknown/recovered tier provenance cannot
    pass. validate_with_policy records rules, alignment coverage and transcript
    name. parse_validated_with_parser additionally requires error-free source
    parsing. Remove the old NotValidated/Validated/ValidationState imports
    and consume into_unchecked() before editing an accepted document. Serialized
    transcript fields remain unchanged.

    Required-validation compatibility APIs now use the same proof-producing
    transition before returning an explicitly editable model. Their streaming
    variants return Err after parse or validation failure even when the caller's
    diagnostic sink discards messages. Merge preflight retains ValidChatFile
    while reading the accepted reference and borrows its document for the merge.

  • Breaking: utterance builders can retain an utterance comment.
    UtteranceDesc adds comment: Option<ComTier>; Rust struct literals must
    supply this field. A supplied comment is emitted as %com. A comment on an
    empty utterance is rejected instead of being silently discarded.

  • %pho, %mod and %sin count mismatches are reported by one
    algorithm.
    The utterance metadata path used its own copy of the
    positional alignment with the diagnostic codes passed in as parameters;
    it now uses the AlignableTier route, which reads the tier's own type
    (%pho or %mod) to choose E714/E715 or E733/E734. The codes are
    unchanged; the messages are the positional form the %sin route already
    used (a per-position table instead of a bare count).

  • A control character is a lexical error anywhere in the file. E315 is
    now decided over the whole input before any parse, so a forbidden control
    character in a word, a %com line or a header value is reported at its own
    offset; previously a word's surfaced as generic E316 and free-text tiers
    accepted it silently. Permitted are TAB, LF, CR, the bullet delimiter
    U+0015 and the CA underline pairs U+0002 U+0001 / U+0002 U+0002; CLAN's
    italics pairs are reported (CHECK 102).

  • E303 covers every header whose colon is not followed by a TAB. It used
    to fire only for @Comment:, every other header fell to E316, and the
    message said "space" whatever followed the colon; it now names what was
    found (a space, nothing, or the character).

  • Word lexical content is read-only outside its owning type. Direct
    access to the former public content field is replaced by content();
    callers that intentionally replace typed content use the named mutation
    APIs, which invalidate derived cleaned_text. This prevents a content edit
    from leaving stale lexical text in JSON. Direct crate-internal access to
    raw_text is closed as well, so recovery spelling changes use the explicit
    setter rather than bypassing the field boundary.

  • Speaker-code structure now has one typed assessment across every model
    surface.
    Direct SpeakerCode::validate previously mislabeled an overlong
    code as undeclared (E308), mislabeled a reserved character as a missing CST
    node (E302), and enforced a different character policy from headers and main
    tiers. All three routes now consume the same producer-issued valid/invalid
    state and report E307. The seven-character limit counts Unicode scalar
    values rather than UTF-8 bytes, and diagnostic context records the offending
    code rather than an internal field label.

  • Malformed regions now distinguish unpaired CHAT quotation delimiters from
    unrelated parser recovery.
    Structurally unpaired “ or ” delimiters
    report E242 even when tree-sitter encloses them in a larger error node.
    Balanced quotation delimiters inside some other malformed region no longer
    produce a false E242, and ASCII straight quotes are not mislabeled as CHAT
    quotation delimiters.

chatter 0.18.0

Install chatter 0.18.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/TalkBank/chatter/releases/download/v0.18.0/chatter-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/TalkBank/chatter/releases/download/v0.18.0/chatter-installer.ps1 | iex"

Download chatter 0.18.0

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

talkbank-lsp 0.18.0

Install talkbank-lsp 0.18.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/TalkBank/chatter/releases/download/v0.18.0/talkbank-lsp-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/TalkBank/chatter/releases/download/v0.18.0/talkbank-lsp-installer.ps1 | iex"

Download talkbank-lsp 0.18.0

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