Skip to content

Releases

snajpagent 0.99.8c

Choose a tag to compare

@snajpa snajpa released this 02 Oct 18:59

snajpagent 0.99.8c — October 2, 2026

This release combines terminal, session, provider and context-recovery fixes with
voice-continuity changes. Sessions retain JSONL storage.

Changes

  • Session names, resume selection and status listings preserve live ownership and
    saved options. Listings group sessions by status and show ten stored sessions
    by default; -l N selects another count.
  • Command reports use the configured pager. Active-turn verbosity controls remain
    responsive during blocked engine work, with immediate terminal feedback.
    Successful reports remain available to voice observations; /cat contents stay
    operator-only.
  • Native terminal attachment publishes a handover after the destination frontend
    confirms it is bound. Input and audio activation follow that acknowledgement;
    managed work stays with the session owner through detach and attachment changes.
    Buffered composer edits share one repaint, preserving displayed response rows
    when the terminal is resized during typing.
  • Context preparation retains cached request prefixes, retry notices and completed
    tool results across compaction, recovery and model changes. Token preflight keeps
    generation-only controls out of count requests. HTTP response streams use
    HTTP/1.1 and preserve completed work across connection failures.
  • Voice captions accumulate transcript fragments. Voice and working-model guidance
    distinguishes their roles: execution remains with the working model, and original
    ASR text stays separate from derived paraphrases and approval decisions.
    Voice intent remains enabled through work and recoverable failures, with honest
    unavailable states. Conversational guidance supports progress, quiet and resume
    requests while work continues.
  • POSIX command children reset inherited ignored SIGINT so managed interruption
    works when the agent is launched in the background as well as in the foreground.
    Parent signal settings remain unchanged.

The changelog contains the complete change list.

Scope and compatibility

Hermetic provider, CLI, PTY and terminal fixtures exercise these paths. Device and
operating-system runtime observations retain their recorded revisions in
QUALIFICATION.md; compilation does not qualify a newer executable on that device.
Long-session voice continuity and recovery against live providers remain
unqualified by the fixture results.

Native attachment uses a new private protocol. Use a compatible executable to
attach to an older running owner and finish or stop it deliberately. Existing
processes keep their running code until their operators restart them.

Production recipes enable device audio and native voice backends across the
implemented matrix. File decoding, configured provider routes and device access
are separate capabilities. Office rendering uses the separately installed runtime
documented in the manual.

Downloads and updates

The release includes the complete implemented PROD_TARGETS matrix, matching
symbols, manual, application and dependency sources, notices and SHA256SUMS.
Select the exact OS, architecture and ABI, then verify its checksum before
installation. Experimental platforms retain their qualification labels. macOS
builds retain the documented per-file quarantine exception for a verified download.

Official stable builds use latest and default automatic updates to on. Updating
replaces the executable for the next launch; it does not replace running processes.
Git-suffixed development builds use latest-dev and default automatic updates to
off. Older releases and their immutable assets remain available under their
original GitHub tags.

Source tag correction

Before binary publication, the 0.99.8c tag was corrected to commit
6cecbcedeaa80f7b53e52c2ed0d2124ae0dbb24d. It includes the Windows and OpenBSD
SpeexDSP build repairs and the buffered-typing terminal resize repair. All
downloads in this release come from that commit. Existing checkouts holding
an earlier candidate tag can fetch the corrected tag explicitly:

git fetch origin +refs/tags/0.99.8c:refs/tags/0.99.8c

snajpagent 0.99.8b-d25f0846 (development)

Choose a tag to compare

@snajpa snajpa released this 29 Sep 21:13

Development snapshot based on 0.99.8b — September 29, 2026

This snapshot fixes OpenAI API-key token preflight and includes the terminal,
voice and context-continuity changes developed after 0.99.8b. Its version keeps
that approved base and adds the source commit's Git suffix. The stable release
and its existing downloads remain unchanged.

Changes

  • Token-count requests select input parameters separately from generation
    controls. This fixes the Unknown parameter: 'include' rejection and excludes
    prompt-cache routing from ordinary and compaction counts. Generation retains
    encrypted reasoning and cache affinity, including after manual compaction.
  • Native terminal attachment keeps one session owner while the foreground
    terminal detaches, reattaches or switches sessions. Retained controls, process
    continuity and workstation transfers use the existing ownership boundaries.
  • History paging, context-cache recovery and goal-aware retries preserve durable
    work across long-session transitions. IRC recovery retains input identities
    and reply obligations within their original input and turn lifetimes.
  • Voice shares session controls and read capabilities with typed input, retains
    public dialogue and working-history observations, and keeps interface requests
    separate from coding work. Credential filtering and settled-request retention
    protect responses across credential rotation and voice shutdown.
  • Validated native voice expiry and temporary transport/service failures renew
    the physical connection while retaining logical conversation state. Completed
    tool effects and previously sent audio are not replayed. Policy errors remain
    distinct from capacity recovery.
  • Production recipes enable device audio and native voice backends on Linux,
    macOS, Windows and BSD. File decoding, provider audio routes and device access
    remain separate capabilities; Office rendering uses its documented runtime.
  • Linux voice and HTTPS share Mbed TLS; libarchive is built with Nettle.
    DTLS-SRTP and AES-GCM remain enabled with GPLv2-compatible license options.
  • Builds after a development tag keep the approved version base and replace the
    previous Git suffix with the current revision. Clean tagged builds retain the
    exact tag; modified checkouts add -dirty.

Scope and compatibility

Permanent unit and strict HTTP-fixture regressions cover the token-count
rejections, compaction request isolation and development-version derivation.
Fixture coverage also exercises context, transport, terminal attachment,
lifecycle and packaging. Device and operating-system runtime qualification is
listed separately in QUALIFICATION.md; consult it together with the platform
ABI and installation guidance in the manual.

Native voice capacity recovery remains unfinished and is excluded from this
snapshot. The binary journal codecs are preparatory; live sessions continue
using the existing storage format.

Downloads and updates

Development assets cover the complete implemented PROD_TARGETS matrix and
include matching symbols, manual, source, dependency notices and SHA256SUMS.
Application builds use DEBUG=1, retaining debug information and frame pointers
without application LTO or stripping. Select the exact OS, architecture and ABI
and verify its checksum before installation. macOS builds retain the documented
per-file quarantine exception for a verified download.

Git-suffixed versions use latest-dev and default automatic updates to off.
An update replaces the executable for the next launch; existing processes keep
running until their operators restart them. Stable installations remain on
latest. Older releases and their immutable assets remain available under
their original GitHub tags.

snajpagent 0.99.8b

Choose a tag to compare

@snajpa snajpa released this 27 Sep 07:36

snajpagent 0.99.8b — September 27, 2026

This release follows the immutable 0.99.8 tag. It includes the long-session
recovery, prompt, terminal-upload and model-selection changes developed since
that tag, plus updater support for this letter-suffixed stable version.

Changes

  • Long-running sessions with accumulated media and tool history recover from
    repeated compaction or active-request rejection without re-compacting the
    same already-covered prefix. Completed tool effects and retained attachments
    remain durable. The original first native provider error was not recoverable
    from the journal; the fix is supported by reproductions and fixture coverage,
    not a claimed reconstruction of that missing response.
  • The measured context percentage repaints during active progress and at the
    idle prompt. A just-submitted input stays visible when the next composer is
    blocked, without a second echo after admission.
  • Wrapped POSIX terminals can receive regular files with the stock trz drag
    action or /upload. Successful batches become private unsent attachments;
    failed transfers restore terminal input and preserve the pending draft.
    /attach also accepts opaque files. Resume and deletion remove abandoned
    upload staging only under the operation's ownership and shape checks.
  • The model's select_model tool accepts only rows and effort variants in the
    current provider catalog. Selector cache refreshes and lists those rows;
    failed refresh leaves the prior catalog and selection intact. The operator's
    typed /model still accepts uncached names.
  • The updater and release channel accept 0.99.8b as a stable version after
    0.99.8. Stable installations stay on latest; Git-suffixed development
    builds stay on latest-dev. Existing processes continue running their mapped
    executables until their operators restart them.
  • Checkpoint serialization, upload transfer formatting, and upload checksum
    errors use interfaces available in the older BSD build SDKs; compilation
    does not establish new runtime qualification on those operating systems.

Scope and known limits

The upload client was exercised in a disposable PTY using a pinned stock Go
client, including binary multi-file success and malformed-image rollback;
synthetic wire cases cover other failures. A desktop GUI drag action, nested
SSH, a terminal-specific relay, and prompt/scrollback behavior outside the
PTY fixtures were not qualified. The iTerm2 saved-scrollback display issue is
intentionally left open. The old running processes whose high CPU usage was
sampled mapped older deleted executables. A newly installed 0.99.8 development
snapshot mapped its own inode, used 0.160 CPU seconds for twelve fake-provider
tool calls and zero CPU time while idle for five seconds; this is not a
real-provider or large-journal performance guarantee. No live session was
signaled or restarted during the fix work.

The release ships the implemented PROD_TARGETS matrix with separate matching
symbols, manual, source and dependency notices. Build success is not runtime
qualification on every platform. Linux i686 legacy stays outside that matrix:
its pinned uClibc dependency chain remains unbuildable; the opt-in recipe and
honest compatibility notes remain in source and on the download page.

Downloads and updates

Choose the executable matching the OS, architecture and ABI, compare its
SHA-256 with the published SHA256SUMS, and consult the download page for
minimum requirements and tested configurations. The official stable updater
installs a verified replacement in the background and displays one restart
notice; it never restarts a running session. Set [agent] auto_update = false
to opt out. Development builds default to updates off. Older release notes and
assets remain available under their original GitHub tags.

snajpagent 0.99.8

Choose a tag to compare

@snajpa snajpa released this 23 Sep 14:51

snajpagent 0.99.8 — September 23, 2026

Durable long-session recovery, truthful interactive input and complete tool and
IRC control.

These notes describe the immutable 0.99.8 tag and its companion downloads.
Later source changes are listed under Unreleased in CHANGELOG.md.

Changes

  • Long open turns that accumulate more than 12 MiB of image input now recover
    without replaying the same local projection error. The runtime retains every
    completed result and omits already-presented historical pixels from
    compaction requests. A rejected active request continues from the current
    input with bounded history access instead of re-compacting the same turn;
    durable media and completed tool effects remain intact.
  • Context capacity follows the selected binding's explicit limits and advertised
    maximum. A smaller normal working window remains a policy value and does not
    replace the hard ceiling. Compaction starts at the effective boundary or a
    typed provider rejection. Normal compaction covers complete call/result
    groups in overlapping chunks; a rejected active turn rebases to current
    input, current goal and exact pending steering, with the historical journal
    reachable through bounded tools rather than replayed automatically.
  • Resume preserves completed tools, unfinished outcomes and the selected
    provider/model binding. Same-model, same-family and smaller-binding changes no
    longer replay completed calls, switch back to the previous model for summary
    work or loop over already-covered history.
  • Every nonblank interactive submission appears in scrollback immediately.
    Stdin remains live for type-ahead while the ready prompt stays hidden until
    acknowledgement; whitespace-only Enter remains local and creates no turn or
    request. The presentation owner also handles one-shot output, immediate view
    changes, asynchronous backlog backfill and per-room IRC tabs.
  • Steering preserves valid calls already emitted in an accepted response.
    Commands can yield with live handles, retain the full tool catalog, and finish
    without lost or replayed work.
  • Complete redacted command output receives durable stream/range identities.
    read_tool_output pages saved bytes after result truncation, cache eviction,
    compaction or resume. set_command_shell selects a durable per-session shell
    while preserving exact command bytes and existing security boundaries.
  • Execution limits now form one visible policy with per-model overrides for
    yield, maximum wait, timeout, parallel handles, result size and output cache.
    Configured waits can use the full 32-bit millisecond range while input,
    steering, interruption and process collection remain responsive.
  • The embedded IRC server and outgoing connections run on independent runtime
    workers. Models can inspect state, send, change nick/topic, host, connect and
    disconnect; /disconnect controls model-created clients too, and topic
    authorization follows the room's live +t policy.
  • Provider compatibility, media token bounds, model-cache binding and the
    portable build/configuration matrix include the fixes accumulated after
    0.99.7.

Upgrading sessions and history

Back up prompt history before manually editing it, and do not run older builds
against newer history files. Existing sessions replay unchanged; resumed work
uses current capacity, output-retrieval and recovery rules without rerunning
completed tools.

Downloads and updates

Choose the executable for the exact OS/ABI and architecture and verify
SHA256SUMS. Each target includes matching symbols; the release also contains
source, build instructions, the manual and dependency license notices. Use a
legacy variant only on its matching OS ABI.

Official stable standalone binaries install matching updates in the background;
the old process keeps running and one redacted:secret banner gives restart advice. Set
[agent] auto_update = false to opt out. Development builds use latest-dev,
retain debug information and default to updates off.

Platform requirements and scope

The release includes every target in the source PROD_TARGETS matrix: Linux
x86-64, AArch64, ARMv6, RISC-V 64, PowerPC 64 LE and i686; macOS
Intel, Apple Silicon and universal; Windows x64 and ARM64; current and legacy
FreeBSD, OpenBSD and NetBSD variants. Experimental labels and exact ABI/minimum
requirements remain in the download table. DEPENDENCIES.md and
QUALIFICATION.md describe runtime checks and platform limits; compilation does
not establish additional runtime qualification.

PowerPC 32-bit Linux is no longer a supported production target. Its opt-in
source-build recipe remains, but this release has no PPC32 binary or update
channel; 0.99.7 also had no PPC32 binary.

snajpagent 0.99.7

Choose a tag to compare

@snajpa snajpa released this 15 Sep 17:33

snajpagent 0.99.6 — September 14, 2026

Multimodal conversations, a steadier provider continuity story and cheaper long sessions.

These notes describe the immutable 0.99.6 tag and its companion downloads.
Later source changes are listed under Unreleased in CHANGELOG.md.

Changes

  • The composer returns once the submitted turn reports processing instead of repainting a
    ready-looking prompt immediately underneath it. Text typed in that window is buffered and
    appears with the composer; empty, slash-command and display-only submissions stay immediate,
    and a turn that never reports processing returns it after a brief bounded delay.
  • Images, documents and sampled video referenced in a conversation are read natively, and Office
    work is driven through the engine installed on the target rather than a bundled runtime. Modalities
    are compiled per target and the shipped matrix reflects what each platform actually carries.
  • The provider request now carries a stable per-conversation identity in the header this proxy keys
    its prompt-cache affinity on. Consecutive requests of one session can therefore reuse the provider's
    cached prefix instead of being pinned per request: the measured baseline this addresses is 270 of 610
    large requests served under 10% from cache, with the cold class costing about five times more per
    output token than the warm one. The first measurement after the change — one fresh session, 20
    requests — shows 87.5% of input tokens served from cache against 30.0% for the same proxy before it,
    with the reuse growing as the session does; one request in that set was still cold, so this is a
    measured improvement rather than a guarantee.
  • Usage accounting records cached and uncached input tokens separately, per session (derived from the
    journal, so it survives a resume) and per program, and /status reports both with tokens per second
    for the running turn and the most recent response.
  • A tool call is named by the provider's own call id on both sides of a request, so a scope change
    between requests can no longer send a call under one id and its result under another.
  • -m accepts the catalogue index the numbered model listing prints, not only a name; an out-of-range
    index fails instead of being sent upstream.
  • A journal written by an earlier build still loads: the rules that govern what the model may do now are
    enforced when an event is committed rather than while replaying history, so a goal the operator locked and
    a model block recorded before that rule existed can no longer leave the session unresumable.
  • A goal the operator has locked is frozen in its objective: the model may not reword, block or cancel
    it, refused in the tool before dispatch and again in the store wherever the event names the model,
    while finishing or resuming it stays allowed. A refused store transition also names its own failing
    clause, call and status rather than only the event type and sequence.
  • 32-bit x86 links statically without PIE, and the legacy pin's check framework builds without its
    own test suite, which unblocked the targets those two walls held.

Known issues

  • Not a regression: one interruption path can still refuse a state transition, so an affected turn ends with invalid <type> transition at sequence N
    instead of a completed result. 0.99.6 does not fix it. Every 0.99.6 binary names the failing clause, the
    call and the result status inside that refusal, so the next live occurrence explains itself, and the fix
    follows in the next development build once one occurrence names its clause.

Upgrading sessions and history

Back up prompt history before manually editing it, and do not run older builds against newer history
files. Existing sessions replay unchanged: the cache identity is derived from the session itself, and
sessions written before it are simply sent without the header until they are used again.

Downloads and updates

Choose the executable for the exact OS/ABI and architecture and verify SHA256SUMS. Each target
includes matching symbols; the release also contains source, build instructions, the manual and
dependency license notices. Use a legacy variant only on its matching OS ABI.

Official stable standalone binaries install matching updates in the background; the old process keeps
running and one local banner gives restart advice. Set [agent] auto_update = false to opt out.
Development builds use latest-dev, retain debug information and default to updates off.

Platform requirements and scope

  • Linux: x86-64, AArch64, ARMv6, PowerPC 64-bit little-endian and i686. linux-i686-legacy,
    linux-riscv64 and linux-ppc32 are not built for 0.99.6: the legacy target's pinned uClibc
    source set cannot build it (the pin's own check framework test suite, then fontconfig 2.17.1's
    fc-cache link against undefined Brotli* symbols with a verified-correct link order), the RISC-V
    target fails one wall past its fixed FFmpeg syscall constant (libjpeg-turbo's static-SIMD coverage
    tool does not compile), and the 32-bit big-endian PowerPC target cannot link coreutils 9.8's
    libstdbuf.so in its pinned musl closure (__stack_chk_fail_local is undefined outside glibc).
    Each is a chain inside its own pin rather than a defect in this tree, all three stay buildable
    through their own recipes, and no other artifact inherits them.
  • macOS: experimental Intel, Apple Silicon and universal builds, macOS 11+. ARM64 is ad-hoc signed;
    Intel is unsigned. Developer ID signing and notarization are absent, and execution is unqualified.
  • Windows: experimental x64 and ARM64 builds using OS DLLs; ARM64 needs UCRT.
  • FreeBSD: standard libc.so.7 ABI, including 8.4 and 14.4; the separate legacy libc.so.5/libc_r.so.5
    build supports 5.1 and 5.5.
  • OpenBSD: experimental amd64 builds for 7.9, 5.9 and early 3.5, separately.
  • NetBSD: experimental amd64 builds for 10.1 and legacy 2.0/5.2.3, separately.

DEPENDENCIES.md and QUALIFICATION.md describe the actual earlier runtime checks and OS limits.
Compilation does not establish new runtime qualification.

snajpagent 0.99.6

Choose a tag to compare

@snajpa snajpa released this 14 Sep 14:40

snajpagent 0.99.6 — September 14, 2026

Multimodal conversations, a steadier provider continuity story and cheaper long sessions.

These notes describe the immutable 0.99.6 tag and its companion downloads.
Later source changes are listed under Unreleased in CHANGELOG.md.

Changes

  • Images, documents and sampled video referenced in a conversation are read natively, and Office
    work is driven through the engine installed on the target rather than a bundled runtime. Modalities
    are compiled per target and the shipped matrix reflects what each platform actually carries.
  • The provider request now carries a stable per-conversation identity in the header this proxy keys
    its prompt-cache affinity on. Consecutive requests of one session can therefore reuse the provider's
    cached prefix instead of being pinned per request: the measured baseline this addresses is 270 of 610
    large requests served under 10% from cache, with the cold class costing about five times more per
    output token than the warm one. The first measurement after the change — one fresh session, 20
    requests — shows 87.5% of input tokens served from cache against 30.0% for the same proxy before it,
    with the reuse growing as the session does; one request in that set was still cold, so this is a
    measured improvement rather than a guarantee.
  • Usage accounting records cached and uncached input tokens separately, per session (derived from the
    journal, so it survives a resume) and per program, and /status reports both with tokens per second
    for the running turn and the most recent response.
  • A tool call is named by the provider's own call id on both sides of a request, so a scope change
    between requests can no longer send a call under one id and its result under another.
  • -m accepts the catalogue index the numbered model listing prints, not only a name; an out-of-range
    index fails instead of being sent upstream.
  • A journal written by an earlier build still loads: the rules that govern what the model may do now are
    enforced when an event is committed rather than while replaying history, so a goal the operator locked and
    a model block recorded before that rule existed can no longer leave the session unresumable.
  • A goal the operator has locked is frozen in its objective: the model may not reword, block or cancel
    it, refused in the tool before dispatch and again in the store wherever the event names the model,
    while finishing or resuming it stays allowed. A refused store transition also names its own failing
    clause, call and status rather than only the event type and sequence.
  • 32-bit x86 links statically without PIE, and the legacy pin's check framework builds without its
    own test suite, which unblocked the targets those two walls held.

Known issues

  • Not a regression: one interruption path can still refuse a state transition, so an affected turn ends with invalid <type> transition at sequence N
    instead of a completed result. 0.99.6 does not fix it. Every 0.99.6 binary names the failing clause, the
    call and the result status inside that refusal, so the next live occurrence explains itself, and the fix
    follows in the next development build once one occurrence names its clause.

Upgrading sessions and history

Back up prompt history before manually editing it, and do not run older builds against newer history
files. Existing sessions replay unchanged: the cache identity is derived from the session itself, and
sessions written before it are simply sent without the header until they are used again.

Downloads and updates

Choose the executable for the exact OS/ABI and architecture and verify SHA256SUMS. Each target
includes matching symbols; the release also contains source, build instructions, the manual and
dependency license notices. Use a legacy variant only on its matching OS ABI.

Official stable standalone binaries install matching updates in the background; the old process keeps
running and one local banner gives restart advice. Set [agent] auto_update = false to opt out.
Development builds use latest-dev, retain debug information and default to updates off.

Platform requirements and scope

  • Linux: x86-64, AArch64, ARMv6, PowerPC 64-bit little-endian and i686. linux-i686-legacy,
    linux-riscv64 and linux-ppc32 are not built for 0.99.6: the legacy target's pinned uClibc
    source set cannot build it (the pin's own check framework test suite, then fontconfig 2.17.1's
    fc-cache link against undefined Brotli* symbols with a verified-correct link order), the RISC-V
    target fails one wall past its fixed FFmpeg syscall constant (libjpeg-turbo's static-SIMD coverage
    tool does not compile), and the 32-bit big-endian PowerPC target cannot link coreutils 9.8's
    libstdbuf.so in its pinned musl closure (__stack_chk_fail_local is undefined outside glibc).
    Each is a chain inside its own pin rather than a defect in this tree, all three stay buildable
    through their own recipes, and no other artifact inherits them.
  • macOS: experimental Intel, Apple Silicon and universal builds, macOS 11+. ARM64 is ad-hoc signed;
    Intel is unsigned. Developer ID signing and notarization are absent, and execution is unqualified.
  • Windows: experimental x64 and ARM64 builds using OS DLLs; ARM64 needs UCRT.
  • FreeBSD: standard libc.so.7 ABI, including 8.4 and 14.4; the separate legacy libc.so.5/libc_r.so.5
    build supports 5.1 and 5.5.
  • OpenBSD: experimental amd64 builds for 7.9, 5.9 and early 3.5, separately.
  • NetBSD: experimental amd64 builds for 10.1 and legacy 2.0/5.2.3, separately.

DEPENDENCIES.md and QUALIFICATION.md describe the actual earlier runtime checks and OS limits.
Compilation does not establish new runtime qualification.

snajpagent 0.99.5

Choose a tag to compare

@snajpa snajpa released this 10 Sep 08:22

snajpagent 0.99.5 — September 10, 2026

Local-first prompt history, provider reasoning continuity and terminal controls.

These notes describe the immutable 0.99.5 tag and its companion downloads.
Later source changes are listed under Unreleased in CHANGELOG.md.

Changes

  • Up/Down, Ctrl-P/Ctrl-N and Ctrl-R visit session history first, then the global
    archive. Submissions remain private to a running process until orderly exit.
    Only newly entered lines are appended globally; repeated resume/exit does not
    republish saved entries. Files are neither copied wholesale nor pruned, and
    large-file searches remain cancellable.
  • Provider reasoning is retained privately and replayed with matching tool calls
    and results, including after resume and during compaction. Replay is scoped
    to provider, endpoint, model and credential identity. DeepSeek thinking streams
    accept non-public reasoning parts without displaying or executing them.
  • Model/provider/effort selections persist across turns and resume. Goal
    interruption settles state before showing the idle prompt; empty Enter stays
    local. Command help, queued-prompt rendering, history counts, active controls
    and manual compaction have been corrected.
  • Installation and first-run instructions cover all six platform families.
    Twenty standalone production executables retain the existing target matrix.

Upgrading sessions and history

Back up prompt history before manually editing it. Do not run older builds
against the new unbounded history files: older versions can prune the archive.
Saved local entries from an earlier process are not republished on resume,
including entries whose original process crashed before its global merge.
An explicit /exit submission adds its own history entry; empty Ctrl-D does not.

Reasoning continuation is stored in the private session journal, not the public
transcript. Sessions written with the extended completion records must not be
downgraded to executables predating reasoning-continuation support.

Downloads and updates

Choose the executable for the exact OS/ABI and architecture and verify
SHA256SUMS. Each target includes matching symbols; the release also contains
source, build instructions, the manual and dependency license notices.
Use the separate legacy variant only on its matching OS ABI.

Official stable standalone binaries install matching updates in the background.
The old process keeps running and one local banner gives restart advice and the
release-log URL. Set [agent] auto_update = false to opt out. Development builds
use latest-dev, retain debug information and default to updates off; this stable
release leaves the existing development channel unchanged.

Platform requirements and scope

  • Linux: x86-64, AArch64, ARMv6, RISC-V 64-bit, PowerPC 64-bit little-endian,
    PowerPC 32-bit big-endian and i686; the separate legacy i686 build supports
    Linux 2.4.27, with procfs, secure OS entropy and devpts for PTY commands.
  • macOS: experimental Intel, Apple Silicon and universal builds, macOS 11+.
    ARM64 is ad-hoc signed; Intel is unsigned. Developer ID signing and
    notarization are absent. Actual macOS execution remains unqualified.
  • Windows: experimental x64 and ARM64 builds using OS DLLs; ARM64 needs UCRT.
  • FreeBSD: standard libc.so.7 ABI, including 8.4 and 14.4; the separate legacy
    libc.so.5/libc_r.so.5 build supports 5.1 and 5.5.
  • OpenBSD: experimental amd64 builds for 7.9, 5.9 and early 3.5, separately.
  • NetBSD: experimental amd64 builds for 10.1 and legacy 2.0/5.2.3, separately.

DEPENDENCIES.md and QUALIFICATION.md describe the actual earlier runtime
checks and OS limits. Compilation does not establish new runtime qualification.
The Windows updater's two-rename fallback has interruption/recovery semantics
specified in the manual; actual Windows/macOS updater execution remains
unqualified. Exact 0.99.5 build and validation scope accompanies the assets.

snajpagent 0.99.4

Choose a tag to compare

@snajpa snajpa released this 09 Sep 08:21

snajpagent 0.99.4 — September 9, 2026

Goal controls, durable session recovery and additional Linux builds.

Changes

  • /goal clear cancels the current goal and stops automatic continuation.
    Pause, resume and clear accept whitespace around their command words.
    An in-progress turn finishes normally; Ctrl-C interrupts it immediately.
  • Session recovery preserves admitted input and active-turn controls. Provider
    policy clarification retains running commands and partial response evidence.
  • Twenty standalone executables cover Linux, macOS, Windows, FreeBSD, OpenBSD
    and NetBSD. Linux adds ARMv6, RISC-V 64-bit, PowerPC 64-bit little-endian and
    PowerPC 32-bit big-endian builds.

Downloads and updates

Choose the executable for the exact OS/ABI and architecture and verify
SHA256SUMS. Each target includes matching symbols; the release also contains
source, build instructions, the manual and dependency license notices.
Use the separate legacy variant only on its matching OS ABI.

Official stable standalone binaries install matching updates in the background.
The old process keeps running and one local banner gives restart advice and the
release-log URL. Set [agent] auto_update = false to opt out. Development builds
use latest-dev, retain debug information and default to updates off; this stable
release leaves the existing development channel unchanged.

Platform requirements and scope

  • Linux: x86-64, AArch64, ARMv6, RISC-V 64-bit, PowerPC 64-bit little-endian,
    PowerPC 32-bit big-endian and i686; the separate legacy i686 build supports
    Linux 2.4.27, with procfs, secure OS entropy and devpts for PTY commands.
  • macOS: experimental Intel, Apple Silicon and universal builds, macOS 11+.
    ARM64 is ad-hoc signed; Intel is unsigned. Developer ID signing and
    notarization are absent. Actual macOS execution remains unqualified.
  • Windows: experimental x64 and ARM64 builds using OS DLLs; ARM64 needs UCRT.
  • FreeBSD: standard libc.so.7 ABI, including 8.4 and 14.4; the separate legacy
    libc.so.5/libc_r.so.5 build supports 5.1 and 5.5.
  • OpenBSD: experimental amd64 builds for 7.9, 5.9 and early 3.5, separately.
  • NetBSD: experimental amd64 builds for 10.1 and legacy 2.0/5.2.3, separately.

DEPENDENCIES.md and QUALIFICATION.md describe the actual earlier runtime
checks and OS limits. Compilation does not establish new runtime qualification.
The Windows updater's two-rename fallback has interruption/recovery semantics
specified in the manual; actual Windows/macOS updater execution remains
unqualified. Exact 0.99.4 build and validation scope accompanies the assets.

snajpagent 0.99.3

Choose a tag to compare

@snajpa snajpa released this 08 Sep 12:51

snajpagent 0.99.3 — September 8, 2026

Broader BSD support and a tag-driven release workflow.

Changes

  • Sixteen standalone executables now cover Linux, macOS, Windows, FreeBSD,
    OpenBSD and NetBSD. New BSD variants retain their native OS library ABI.
  • FreeBSD legacy extends to 5.1 with the libc.so.5/libc_r.so.5 ABI.
    OpenBSD has 7.9, 5.9 and early 3.5 variants. NetBSD has 10.1 and 5.2.3
    variants; the 10.1 executable uses PIE and full RELRO.
  • The approved annotated Git tag drives the ordinary native build, full matrix
    and release staging. Manual build/version/URL overrides remain available.
  • Current-master reductions consolidate terminal, process, provider and turn
    ownership paths. BSD fixes cover positional offsets, old thread runtimes,
    dependency link flags and terminal behavior.

Downloads and updates

Choose the executable for the exact OS/ABI and architecture and verify
SHA256SUMS. Each target includes matching symbols; the release also contains
source, build instructions, the manual and dependency license notices.
Use the separate legacy variant only on its matching OS ABI.

Official stable standalone binaries install matching updates in the background.
The old process keeps running and one local banner gives restart advice and the
release-log URL. Set [agent] auto_update = false to opt out. Development builds
use latest-dev, retain debug information and default to updates off; this stable
release leaves the existing development channel unchanged.

Platform requirements and scope

  • Linux: x86-64, AArch64 and i686; the separate legacy i686 build supports
    Linux 2.4.27, with procfs, secure OS entropy and devpts for PTY commands.
  • macOS: experimental Intel, Apple Silicon and universal builds, macOS 11+.
    ARM64 is ad-hoc signed; Intel is unsigned. Developer ID signing and
    notarization are absent. Actual macOS execution remains unqualified.
  • Windows: experimental x64 and ARM64 builds using OS DLLs; ARM64 needs UCRT.
  • FreeBSD: standard libc.so.7 ABI, including 8.4 and 14.4; the separate legacy
    libc.so.5/libc_r.so.5 build supports 5.1 and 5.5.
  • OpenBSD: experimental amd64 builds for 7.9, 5.9 and early 3.5, separately.
  • NetBSD: experimental amd64 builds for 10.1 and legacy 5.2.3, separately.

DEPENDENCIES.md and QUALIFICATION.md describe the actual earlier runtime
checks and OS limits. Compilation does not establish new runtime qualification.
The Windows updater's two-rename fallback has interruption/recovery semantics
specified in the manual; actual Windows/macOS updater execution remains
unqualified. Exact 0.99.3 build and validation scope accompanies the assets.

snajpagent 0.99.2

Choose a tag to compare

@snajpa snajpa released this 08 Sep 00:52

snajpagent 0.99.2 — September 8, 2026

Background binary updates and clearer streamed Markdown.

Changes

  • Official standalone binaries discover, verify and install matching releases
    in a background thread. The current process keeps running its old version.
    One local banner gives restart advice and links to the release log.
  • Stable builds default to automatic updates. Development builds carry a Git
    suffix, retain debugging information and use a separate channel that defaults
    off. Configure auto_update and update_url in [agent].
  • Plain-text code fences keep their border without a redundant type label.
    Indented and pipe-prefixed code stays literal during streaming.
  • Eleven standalone targets now include Linux i686 legacy, FreeBSD amd64 and
    FreeBSD amd64 legacy. Completed tool arguments are accepted after empty
    streaming placeholders, including snapshot-only provider responses.

Installation and updating

Download the executable for your OS and architecture and verify SHA256SUMS.
On Unix, make it executable and place it in a user-owned standalone directory.
Use auto_update = false for package-managed installations. Updates preserve
executable permissions and require ownership of the file and its directory.
The updater's trust root is the configured HTTPS publisher; expected size,
SHA-256 and product/target/publisher identity are checked before replacement.

Unix replaces the executable by a same-directory rename. Windows retains the
mapped original at .EXECUTABLE.update-old.exe if rename-over is unavailable;
this two-rename fallback has an interruption window. The manual describes
recovery. Windows replacement has Linux forced-path regression coverage but
has not yet been qualified on an actual Windows runtime for this release.

Platforms

  • Modern Linux: x86-64, AArch64 and i686, with static application libraries.
  • Legacy Linux: i686 non-PIE build; Linux 2.4.27 runtime exercised. Requires
    procfs and secure OS entropy; PTY commands also require devpts.
  • macOS: experimental Intel, Apple Silicon and universal builds, macOS 11+.
    ARM64 is ad-hoc signed; Intel is unsigned. Developer ID signing and
    notarization are absent. Actual macOS execution remains unqualified.
  • Windows: experimental x64 and ARM64 builds using OS DLLs. ARM64 needs UCRT.
  • FreeBSD: amd64 libc.so.7 build, exercised on 8.4 and 14.4; separate legacy
    libc.so.5/libpthread.so.1 build exercised on 5.5.

See DEPENDENCIES.md and QUALIFICATION.md for platform limits. Earlier
platform runs qualify those paths, not every behavior added in this release.
All targets include matching symbol archives, exact source/build instructions,
manual and dependency license notices. Development applications are
always debug builds and retain symbols without application stripping.

Tagged source and canonical build

Annotated release tag: 0.99.2.
Exact source commit: 2a5083221c6fec7c5e592023b3e162b2a666e136.

Build from the tag with Git, GNU make and Nix on a Linux host:

git clone --branch 0.99.2 https://github.com/snajpa/snajpagent.git
cd snajpagent
make -j4 UPDATE_BASE_URL=https://agent.snajpa.net prod-matrix

The build derives 0.99.2 from the tag; no BUILD_VERSION override is needed.
This canonical command resolves all eleven tagged targets to the exact published
executable hashes. The source archive matches the tag file-for-file.

The version override shown in the original BUILDING-0.99.2.md is optional.
This release uses the eleven-target matrix present at its source commit;
later platforms belong to later releases. Existing executables, symbols,
source companions and checksums remain unchanged.