Skip to content

Releases: Bobsans/AIHelper

v1.5.0

Choose a tag to compare

@Bobsans Bobsans released this 31 Aug 18:16

AIHelper v1.5.0

Linux gains a managed MCP service, OpenCode joins the agents AIHelper can wire
itself into, and every published JSON Schema is now derived from the Rust type
that serializes it — which is how the GitLab and PostgreSQL schema defects fixed
here were found, and why they cannot come back.

Highlights

  • The managed MCP HTTP server installs as a systemd user unit on Linux
    (experimental), with the same lifecycle, status reduction, and drift detection
    as the Windows Task Scheduler path.
  • ah ai install supports the opencode target, and ah ai status reports
    every system, user, project, and local environment rather than one scope per
    target.
  • Published JSON Schemas are derived from the types that serialize them, so a
    schema can no longer disagree with its payload. Two GitLab commands that
    failed every typed call with OUTPUT_SCHEMA_VIOLATION are fixed as a
    consequence.
  • An ah invocation consumed by update recovery now says so, in the event log
    and in --json output.

What's Changed

✨ New

  • ah mcp service install, start, stop, restart, status, and uninstall
    work on Linux, registering the managed HTTP server as the systemd user unit
    aihelper-managed-mcp.service wanted by default.target. The support is
    experimental: it needs a reachable systemctl --user manager
    (XDG_RUNTIME_DIR and a running user manager), and running the unit with
    nobody logged in still requires loginctl enable-linger, which AIHelper does
    not enable for you. macOS continues to report
    MCP_SERVICE_UNSUPPORTED_PLATFORM.
  • ah ai install, ah ai uninstall, and ah ai status support the opencode
    target. The aihelper MCP server is registered in OpenCode's JSON/JSONC
    configuration with its comments preserved, and ah ai status now reports every
    supported system, user, project, and local environment instead of one scope per
    target.
  • An invocation consumed by update recovery reports itself. The event log gets
    one system record, severity warning, code
    UPDATE_RECOVERY_CONSUMED_INVOCATION, carrying the redacted argv, the
    interrupted transaction id, the operation, and the journal state found on disk.
    With --json, the payload's consumed_invocation field distinguishes a
    command that never ran from one that ran and printed nothing.

🚀 Improvements

  • Every published JSON Schema — built-in domains, host commands, and all four
    dynamic plugins — is derived from the Rust types it describes instead of being
    written by hand.
  • file.stat.kind and plugins.list.source/state publish their enum values,
    and the three plugins.* mutations publish const on command, where before
    the values existed only in prose.
  • The managed rules block written by ah ai install states the invariants no
    per-command description can carry: context.cwd over MCP, closed argument
    schemas, long work belonging to ah.job.*, paths that must already exist, a
    missing secret being the user's to add, and 401/403 meaning a missing scope
    rather than something to retry. Rerun ah ai install to refresh an existing
    block.
  • Ollama's decode failure message matches the GitHub and GitLab wording:
    failed to decode ollama response for '<path>'. The OLLAMA_RESPONSE_INVALID
    code is unchanged.
  • A write to stdout that the stream refuses is reported as OUTPUT_WRITE_FAILED
    instead of panicking the process.

🐛 Fixes

  • gitlab.issues and gitlab.pipelines published an output schema declaring
    four of the ten properties they serialize, with additionalProperties: false,
    so every typed call returned OUTPUT_SCHEMA_VIOLATION. Both schemas now come
    from the types that produce them.
  • MCP clients could receive a credential id in an error cause. Redaction had
    been applied on the CLI side only; both surfaces now project from one table.
  • gitlab.job.trace and gitlab.job.warnings left OSC terminal sequences in the
    trace text, so a warning wrapped in one did not match the warning scan. GitLab
    now uses the same stripper as GitHub, which handles OSC and CSI.
  • postgres.exec published its yes confirmation flag as optional and relied on
    the handler to refuse; the schema now requires it. postgres.describe requires
    object, which its extractor always needed.
  • github release create and gitlab release create sent unset options as an
    explicit null — rejected by GitHub with nil is not a string, and read by
    GitLab as a request to clear the field. Unset options are omitted, so each API
    applies its own default.
  • Over MCP, github.* and gitlab.* calls that name their own repo or
    project and read no file input no longer require context.cwd.
  • A git remote pointing at a self-managed GitLab supplies the host when --host
    is omitted, instead of failing with GITLAB_PROJECT_UNDETECTED while
    addressing gitlab.com. An explicit --host or --project is never
    overridden.
  • The workspace builds, tests, and lints cleanly on Linux and macOS.

⚠️ Compatibility

  • Derived schemas differ from the hand-written ones in four ways that carry no
    meaning: required is alphabetical, a nullable field spells itself
    type: [T, "null"] instead of oneOf: [T, null], array arguments advertise
    "default": [], and an empty required is omitted rather than published as
    []. Property names, types, and constraints are unchanged.
  • AH_POSTGRES_TEST_SYSTEM_PATH no longer overrides psql resolution. It was
    named as a test seam but shipped in the plugin ahead of PATH itself, and no
    test referenced it. Resolution now follows PATH.
  • The released CLI surface and the stable JSON and MCP contracts remain
    backward compatible with v1.4.0. The C plugin ABI is unchanged: version 1,
    with the same exported symbols.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains the ah executable and its executable-relative plugins/
directory. Keep them together after extraction.

Full Changelog

v1.4.0...v1.5.0

v1.4.0

Choose a tag to compare

@Bobsans Bobsans released this 25 Aug 08:05

AIHelper v1.4.0

This release adds one-command setup for five AI coding agents and extends the
credential vault to GitHub and GitLab workflows while keeping secret values out
of MCP calls and command logs.

Highlights

  • Configure Claude Code, Codex, Gemini, Cursor, or GitHub Copilot with
    ah ai install, including stdio, loopback HTTP, and managed Windows MCP
    transports.
  • Use vault-backed GitHub and GitLab tokens from the direct CLI or MCP without
    putting token values into agent requests.
  • Complete secret setup in a protected browser form with responsive styling,
    strict content security policy, and a confirmation page.

What's Changed

✨ New

  • ah ai install, ah ai uninstall, and ah ai status manage the aihelper
    MCP registration and a bounded rules block for claude, codex, gemini,
    cursor, and copilot. Installation supports --scope,
    --transport <stdio|http|managed>, --url, component-only modes,
    confirmation, and dry-run output.
  • Direct CLI commands can select vault entries with --credential SLOT=ID
    whenever their command catalog declares a matching secret slot.
  • Secret kinds github-token and gitlab-token provide the optional token
    credential slot used by all GitHub and GitLab commands.
  • Protected browser secret setup now provides light and dark themes, responsive
    layout, redacted success metadata, and a Close action.

🚀 Improvements

  • CLI and MCP credential execution share the plugin's normal parser and
    BindResolvedSecrets validation path instead of maintaining a separate
    CLI-to-typed conversion path.
  • GitHub and GitLab ambient environment tokens and Git credential-helper output
    are limited to the default API host, the detected remote host, or loopback.
    Caller-selected API hosts require an explicit token.
  • MCP rejects inline GitHub and GitLab token arguments and requires the vault
    credential slot; direct --token flags and provider environment variables
    remain available for CLI use.
  • Managed AI-agent installation uses the endpoint reported by
    ah mcp service status, starts or installs the service only when explicitly
    selected, and refuses drifted registrations.

🐛 Fixes

  • Browser secret submission no longer fails with LOCAL_REQUEST_REJECTED when
    the form posts back to the local setup endpoint.
  • GitHub and GitLab refuse to send tokens to cleartext non-loopback endpoints;
    GitLab also withholds tokens from a GraphQL endpoint on another host.
  • Git credential-helper execution is bounded, drains output while waiting, and
    always reaps the child process.
  • Credential parsing stops at --, secret-like option values remain redacted,
    and AH_VAULT_MASTER_KEY rejects non-hexadecimal input.
  • AI-agent installation validates a plain HTTP loopback URL ending exactly in
    /mcp and restores the prior CLI registration when replacement fails.
  • PostgreSQL tool.* commands reject database credentials rather than silently
    ignoring them.

⚠️ Compatibility

  • Released CLI, JSON/MCP, plugin ABI, and C ABI contracts remain backward
    compatible. The removed CLI-to-typed sidecar API was not part of a published
    release.
  • Existing direct GitHub and GitLab --token flags and the GITHUB_TOKEN,
    GH_TOKEN, GITLAB_TOKEN, and GL_TOKEN environment variables continue to
    work.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains the ah executable and its executable-relative
plugins/ directory. Keep them together after extraction.

Full Changelog

v1.3.2...v1.4.0

v1.3.2

Choose a tag to compare

@Bobsans Bobsans released this 18 Aug 22:00

AIHelper v1.3.2

AIHelper v1.3.2 completes the Windows rollback compatibility fix introduced in
v1.3.1.

What's Fixed

  • A rollback to an older release now finalizes the already verified updater
    transaction before invoking that release's normal mcp service install
    command. Older binaries no longer need to recognize the newer updater-only
    install fast path, and managed MCP is reconciled and restarted normally.

Compatibility

  • CLI, JSON/MCP contracts, plugin ABI, release manifests, and archive layout
    are unchanged from v1.3.1.
  • Upgrades still restore managed MCP before finalizing the transaction. Only
    rollback and recovery paths that return to an older target use the
    backward-compatible finalization order.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive is published with matching .manifest.json and .manifest.sig
assets. The Windows archive includes ah-mcp-service.exe and
ah-update-helper.exe.

Full Changelog

v1.3.1...v1.3.2

v1.3.1

Choose a tag to compare

@Bobsans Bobsans released this 18 Aug 20:32

AIHelper v1.3.1

AIHelper v1.3.1 fixes Windows self-update completion when managed MCP is
installed and running.

What's Fixed

  • Update activation and rollback now reconcile the managed MCP definition and
    Task Scheduler registration before starting the restored service. This
    updates the expected binary version and restart policy instead of failing
    with MCP_SERVICE_CONFIGURATION_DRIFT.
  • Interruption recovery runs the signed update helper from a verified private
    copy outside the transaction directory. Windows can therefore remove the
    completed transaction without the helper locking its own executable.

Compatibility

  • CLI, JSON/MCP contracts, plugin ABI, release manifests, and archive layout
    are unchanged from v1.3.0.
  • Existing v1.3.0 installations without a pending transaction can upgrade
    normally to v1.3.1.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive is published with matching .manifest.json and .manifest.sig
assets. The Windows archive includes ah-mcp-service.exe and
ah-update-helper.exe.

Full Changelog

v1.3.0...v1.3.1

v1.3.0

Choose a tag to compare

@Bobsans Bobsans released this 18 Aug 18:06

AIHelper v1.3.0

AIHelper v1.3.0 adds retryable HTTP workflows and atomic response extraction for
multi-step API checks. It also restores Windows updater rollback handoff and
makes managed MCP restart and stop behavior reliable on Task Scheduler hosts
where native failure retries do not run consistently.

Highlights

  • HTTP requests and assertion cases support opt-in fixed-delay retries through
    both CLI and typed MCP.
  • Assertion specs can extract JSON values, headers, and regex captures for use
    by later cases without publishing extracted secrets in reports.
  • Windows managed MCP owns its bounded retry loop and safely handles task
    instances disappearing during stop.
  • Interactive CLI errors provide actionable corrections, usage, and scoped
    help without changing machine-readable JSON diagnostics.

What's Changed

✨ New

  • ah http request, get, post, put, patch, delete, replay,
    assert, and run accept --retry and --retry-delay-ms. Transport
    failures, timeouts, response read failures, and HTTP 5xx responses are
    retryable; HTTP 4xx and assertion failures are not.
  • HTTP assertion specs support an extract map with JSON-path, response-header,
    and text-regex selectors. A case publishes its values only after all
    assertions and extractors succeed, and reports never include extracted
    values.

🚀 Improvements

  • Interactive text errors replace internal-code-first output with concise
    explanations, likely command corrections and descriptions, valid command
    shapes, scoped --help guidance, and practical recovery hints. --json
    retains the stable diagnostic fields used by automation.

🐛 Fixes

  • Windows update activation, recovery, and ah upgrade --rollback validate the
    inherited named-mutex lifecycle lease used by the managed MCP service.
  • ah-mcp-service.exe performs one initial child launch plus at most three
    retries at one-minute intervals, while native Task Scheduler retries remain
    disabled to prevent duplicate retry loops.
  • ah mcp service stop tolerates the exact Task Scheduler instance disappearing
    during state readback or immediately before Stop() without weakening task,
    instance, or PID identity checks.

⚠️ Compatibility

  • Existing CLI behavior, stable JSON/MCP response contracts, and plugin C ABI
    remain backward compatible; retries and extraction are opt-in additions.
  • Retrying POST, PUT, PATCH, or DELETE after an ambiguous transport failure or
    HTTP 5xx can repeat a remote mutation that already succeeded.
  • Windows managed MCP installations require ah-mcp-service.exe beside
    ah.exe. Keep it together with ah-update-helper.exe and the
    executable-relative plugins/ directory.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains the ah executable and its executable-relative
plugins/ directory. The Windows archive also contains
ah-mcp-service.exe and ah-update-helper.exe. Each archive is published with
matching .manifest.json and .manifest.sig assets.

Full Changelog

v1.2.1...v1.3.0

v1.2.1

Choose a tag to compare

@Bobsans Bobsans released this 11 Aug 17:49

AIHelper v1.2.1

AIHelper v1.2.1 hardens Windows managed MCP startup and command diagnostics.
Managed services launch without transient console windows, while invocation
logs can distinguish AIHelper success from the result of a checked child
process without retaining child output.

Highlights

  • Windows Task Scheduler starts managed MCP through the thin,
    windowless ah-mcp-service.exe launcher.
  • run.check completion records can report the child exit outcome without
    storing stdout, stderr, or child argv.
  • Managed-service status retains scheduler errors while continuing safe runtime
    and readiness inspection.

What's Changed

🚀 Improvements

  • Completed run.check invocation logs include only the optional child
    success, timed_out, and exit_code outcome. A failed checked process does
    not incorrectly change the successful outer AIHelper invocation status.

🐛 Fixes

  • The Windows managed service uses a thin GUI-subsystem launcher that starts
    the sibling ah.exe in a kill-on-close Job Object without creating or
    attaching to a console.
  • Task Scheduler readback uses the exact rooted task identity, and
    ah mcp service status preserves scheduler diagnostics while still reporting
    trusted runtime and readiness evidence.
  • ah ctx pack and ah ctx symbols skip complete files with invalid UTF-8 even
    when invalid bytes occur after the initial binary sniff.

⚠️ Compatibility

  • Released CLI, JSON/MCP, and plugin C ABI contracts remain backward compatible.
  • Windows managed MCP installations require ah-mcp-service.exe beside
    ah.exe. The Windows release archive includes both executables; keep them
    together with ah-update-helper.exe and the executable-relative plugins/
    directory.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains the ah executable and its executable-relative
plugins/ directory. The Windows archive also contains
ah-mcp-service.exe and ah-update-helper.exe. Each archive is published with
matching .manifest.json and .manifest.sig assets.

Full Changelog

v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

@Bobsans Bobsans released this 06 Aug 10:34

AIHelper v1.2.0

AIHelper v1.2.0 adds a managed Windows MCP service, bounded parallel MCP jobs,
and a signed Windows self-update path. Release assets now carry canonical
Ed25519 manifests and signatures so installed updater code can verify release
identity and managed files before activation.

Highlights

  • Manage a per-user HTTP MCP server through ah mcp service install, start,
    stop, restart, uninstall, and status without elevation or stored
    passwords.
  • Run typed MCP commands through bounded parallel execution and the ordinary
    ah.job.start, ah.job.status, ah.job.result, and ah.job.cancel tools.
  • Check, install, recover, and roll back signed Windows x64 updates through
    ah upgrade while preserving managed MCP state.
  • Verify every release archive through a canonical manifest, detached Ed25519
    signature, and exact managed-file inventory.

What's Changed

✨ New

  • Local Streamable HTTP MCP serving exposes exact readiness identity and an
    identity-aware control shutdown endpoint while sharing process-wide execution
    capacity and retained jobs across sessions.
  • The managed MCP lifecycle uses a per-user Task Scheduler 2.0 registration,
    exact process identity, deterministic status snapshots, and a bounded restart
    policy.
  • Windows x64 users can run ah upgrade --check, ah upgrade,
    ah upgrade --version VERSION, and ah upgrade --rollback. Update
    transactions verify candidates offline, recover after interruption, keep one
    verified permanent backup, and restore a previously running managed MCP.
  • The release workflow publishes archive, manifest, and signature triplets for
    Linux x64, Windows x64, and macOS ARM64. The Windows archive includes the
    isolated ah-update-helper.exe helper.

🚀 Improvements

  • Standalone version output avoids runtime startup and invocation logging.
  • Windows process timeouts use Job Objects to terminate descendant processes
    without scanning unrelated system threads. MCP logs distinguish queue wait
    from execution time, and git status reduces child-process startup overhead.
  • Packaged CLI and MCP smoke checks run on every release platform before assets
    are accepted for publication.

🐛 Fixes

  • MCP shutdown, job cancellation, managed-service recovery, and updater handoff
    reject ambiguous process identity and preserve retryable durable state on
    bounded failures.
  • Activation, rollback, and recovery keep operation-specific diagnostics and
    bound helper subprocess time, output, and descendant lifetime.

🔒 Security

  • The updater verifies canonical release manifests, detached Ed25519 signatures,
    archive identity, and signed managed-file hashes against its embedded
    production public key before activation. The private signing seed remains in
    the protected GitHub release-signing environment.
  • Release signing rejects unsafe archive entry types and unsupported compression,
    bounds state reads during I/O, and uses immutable commit SHAs for external
    GitHub Actions.

⚠️ Compatibility

  • Built-in self-update is supported on Windows x64. v1.2.0 is the first
    release containing the updater, so users on v1.1.0 must install this release
    manually; ah upgrade can then install later compatible releases.
  • Native Windows process control requires Windows 10 or Windows Server 2016 and
    newer. Other supported platforms continue to use manual archive installation.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Keep each extracted ah executable with its executable-relative plugins/
directory. The Windows archive also requires ah-update-helper.exe beside
ah.exe for self-update. Each archive is published with matching
.manifest.json and .manifest.sig assets.

Full Changelog

v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@Bobsans Bobsans released this 20 Jul 17:22

AIHelper v1.1.0

AIHelper gains privacy-aware operational logging for CLI and MCP activity, providing bounded diagnostic records without exposing secret-bearing values by default.

Highlights

  • Daily JSONL records for completed CLI and MCP invocations.
  • Structured diagnostics, ten-day retention, bounded records, and concurrent-process locking.
  • Default secret redaction with an explicit opt-in for isolated diagnostics.

What’s Changed

✨ New

  • Best-effort daily JSONL logging captures completed CLI and MCP invocations with structured error diagnostics.
  • Logging enforces ten-day retention, bounded record sizes, and concurrent-process locking.

🔒 Security

  • Secret-bearing values are redacted by default.
  • AH_LOG_UNREDACTED=1 enables full diagnostic values for isolated troubleshooting while retaining record-size limits.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains ah plus executable-relative GitHub, GitLab, Ollama, and PostgreSQL plugins.

Full Changelog

v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@Bobsans Bobsans released this 17 Jul 09:47

AIHelper v1.0.0

AIHelper 1.0 turns every enabled typed command into a discoverable MCP tool with schemas, structured results, cancellation, and explicit safety metadata.

Highlights

  • A production stdio MCP server exposed through ah mcp serve.
  • Transport-neutral typed contracts shared by built-in and dynamic tools.
  • Risk, impact, effects, and reversibility metadata across every supported domain.

What’s Changed

✨ New

  • Each enabled typed command is available as a separate MCP tool with input/output schemas and live catalog updates.
  • Dynamic plugin sidecar symbols support typed catalog discovery, invocation, and cancellation.
  • Built-in, host, GitHub, GitLab, Ollama, and PostgreSQL tools advertise operational risk metadata.

🚀 Improvements

  • Runtime execution uses a bounded sequential FIFO with request-scoped cwd, limits, deadlines, and cancellation.
  • Cargo-built profile plugins take precedence during development while packaged executable-relative discovery remains unchanged.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains ah plus executable-relative GitHub, GitLab, Ollama, and PostgreSQL plugins.

Full Changelog

v0.6.3...v1.0.0

v0.6.3

Choose a tag to compare

@Bobsans Bobsans released this 13 Jul 18:34

AIHelper v0.6.3

This hardening release makes long-running and high-volume agent workflows safer through bounded streaming, descendant-process cleanup, deterministic traversal, and stricter plugin boundaries.

Highlights

  • Bounded command, task, HTTP, and provider-log processing.
  • Deterministic search and byte-safe Git change detection.
  • More complete GitLab issue inspection with configurable GraphQL routing.

What’s Changed

✨ New

  • Response and output limits cover HTTP bodies, GitHub workflow logs, GitLab job traces, and saved task execution.
  • GitLab supports --graphql-url and issue view --full aggregation for details, comments, and designs.

🚀 Improvements

  • run check and task run bound output while reading and terminate descendant processes on timeout.
  • Search traversal is deterministic and ignore-aware even when rg is unavailable.
  • Git and context change detection preserve unusual paths and rename metadata through NUL-delimited parsing.
  • Provider log processing, pagination, deadlines, and plugin invocation boundaries fail more predictably.

🐛 Fixes

  • Relative --cwd is applied once, and child arguments resembling host flags are preserved.
  • Valid UTF-8 remains text when a sniff buffer ends inside a multibyte character.

⚠️ Compatibility

  • Plugin boundary hardening preserves the existing plugin ABI.

Downloads

Platform Archive
Windows x64 ah-windows-x64.zip
Linux x64 ah-linux-x64.zip
macOS ARM64 ah-macos-arm64.zip

Each archive contains ah plus executable-relative GitHub, GitLab, Ollama, and PostgreSQL plugins.

Full Changelog

v0.6.2...v0.6.3