Skip to content

Ari v0.2.3

Choose a tag to compare

@j35dev j35dev released this 01 Sep 23:46
48fa52f

Feature release since 0.2.2. Ari Core can actually work a repository, you can sign into agents without a terminal, edit each agent's own config files from Settings, import existing Pi sessions — from Settings or from the project you're in — and answer an agent's questions or approve its plan without leaving Ari.

Contributors: @tahacore · @jdholst

Thank you @jdholst for the project-scoped Pi session import and the import UX pass (#113, #114) — that work ships in this build.

Numbering note. This drop was briefly published as v0.3.0. That release has been withdrawn and renumbered so the app stays on the 0.2.x line. Everything that was in 0.3.0 is in v0.2.3, plus the fixes and the M34 work that landed after it. @jdholst's contributions and credit carry over unchanged.


Highlights

Ask the user, approve plans (M34) — @tahacore

An agent that wants to ask a question or have a plan signed off now gets a real UI instead of a dead reverse-RPC. Grok's ask_user_question was answered method-not-found, so questions vanished and plan mode read the refusal as a client disconnect.

  • ask_user_question / elicitation parks the turn as input requested for every ACP provider and Ari Core. Questions are a one-at-a-time interview: one prompt, full-width options, an Other field on every choice list, Back/Continue. Submitting drops the overlay immediately so a locked card cannot stick while the engine journals the answer.
  • exit_plan_mode answers as JSON-RPC success (approved / cancelled / abandoned), and plan review opens a markdown rail beside the transcript.
  • session/load replay is no longer folded into the follow-up assistant message, so a resumed turn stops reprinting history. session/resume is preferred when the agent advertises it.
  • The effort chip is real now: it reads each harness's advertised thought level (or effort / thinking aliases, or pi-style thinking modes) and hides when a harness has none. Grok gets minimal–xhigh, including --effort on spawn; Ari Core sends reasoning_effort on its HTTP request and finally appears in the models catalog the chip reads from.

Ari Core, for real (M33) — @tahacore

The built-in harness could not previously work a repo: tools used names models are not trained on, read returned whole files, grep was literal-only, there was no ls, the prompt never named the working directory, and every turn started from an empty conversation. Custom endpoints held one hand-typed model id.

  • Tools are now read / write / edit / glob / grep / ls / bash, with pagination, real regex grep (ripgrep, JS fallback matching rg globs), and a timeout on bash.
  • Per-turn system prompt from the actual workspace (cwd, platform, git, AGENTS.md / CLAUDE.md).
  • Conversation memory across turns (disk-backed per session), with older context summarized instead of dropped.
  • Fetch every model an endpoint serves; pick a default; the key typed in the form is the one that is sent.
  • Thinking (reasoning_content, <think>) is not dumped as the assistant reply; leftover DSML tool calls are recovered.

Import existing Pi sessions (M32) — @tahacore · @jdholst

Replay a Pi session into Ari's own journal. Pi's file is only read, so the history stays resumable in Pi.

  • Settings → Agents → Pi lists sessions with title, date, and folder; already-imported rows are marked.
  • @jdholst (#113): a finished import shows up in the sidebar immediately; per-row error with Retry; busy/loading states so a slow replay cannot be double-clicked.
  • @jdholst (#114): Import on each project menu, scoped to that project's Pi sessions; opaque candidate ids instead of renderer-controlled paths; macOS /var vs /private/var worktree identity.
  • Provenance survives the first live Ari turn, so the original Pi file cannot be imported twice.

Configure an agent from Ari (M31) — @tahacore

Settings → Agents edits the vendor's own files (settings.json, SYSTEM.md, AGENTS.md, …) in a jailed editor. Ari stores what you type and only refuses JSON the agent could not load.

Sign-in without a terminal (M29) + ACP transport (M30) — @tahacore

ACP login is a button that runs the agent's own OAuth command. Auth walls no longer fall back to a CLI that cannot sign anyone in.

Also: do not mute Pi's thinking by writing the wrong mode; --no-install probes no longer download anyway; ACP shutdown uses the shared teardown ladder (Windows process leaks); context-window gauges are not summed as input tokens.

Tool cards and errors (M28) — @tahacore

Expanded tool steps brand as Ari Run / Edit / Read / Search. Result bodies get copy + show-more. Turn failures get a classified banner (auth, rate limit, spawn, timeout) instead of vanishing. Failed command dispatches toast.

Transcript scrolling — @tahacore

Long sessions no longer hitch, flash, or stick. Rows stay in document flow with content-visibility instead of being remounted by a virtualizer at estimated heights, so the wheel drives one continuous page. Wheel-up unpins immediately, the stick-to-bottom band only re-engages when you scroll back toward the tail, and measurement corrections wait out an in-flight gesture so Chromium does not cancel it (#104, #116).

Other

  • Pi's ACP startup prelude is hidden instead of being printed as the session's first assistant message (#117).
  • macOS titlebar wordmark no longer sits under the traffic lights (#103).
  • A/B race mode and the unreachable ProjectsView settings task are gone (#105).

Commits

Commit Author Change
902f73e @tahacore feat(ui): one-at-a-time questions and plan review rail
40d060a @tahacore fix(providers): show Ari Core effort chip
b1714b3 @tahacore fix(providers): show Grok and Ari Core effort levels
e902aad @tahacore feat(providers): import effort levels from ACP harnesses
4e779d5 @tahacore feat(providers): ask the user, approve plans, skip load replay
1e6261c @tahacore fix(providers): hide pi ACP startup prelude
29d823f @tahacore fix(ui): scroll the transcript as one native document
68cfe34 @tahacore fix(ui): stop long-session transcript scroll from sticking
b176ebc @jdholst feat(desktop): add project-scoped session import
23c3a68 @jdholst fix(engine): canonicalize worktree path identity
600b7ed @jdholst fix(providers): improve session import UX
03f0344 @tahacore fix(desktop): keep imported pi provenance after the first live turn
ab2d2af @tahacore feat(providers): import existing pi sessions into Ari (M32)
92ea8d6 @tahacore feat(providers): configure an agent's own config files from Ari (M31)
59202c3 @tahacore fix(providers): close the ACP transport gaps found reviewing pi (M30)
5b0a402 @tahacore Provider sign-in without a terminal (M29)
7b58b97 @tahacore feat(ari-core): rebuild built-in tool surface with real capabilities
1c22498 @tahacore feat(ari-core): discover endpoint models and store many per endpoint
4edc26b @tahacore feat(ui): manage many models per custom endpoint in settings
cc6a0a4 @tahacore feat(ari-core): give the harness memory across turns
da57d85 @tahacore feat(ari-core): summarize older context instead of dropping it
21b3334 @tahacore perf(ari-core): run read-only tool calls concurrently
087d834 @tahacore fix(ari-core): advertise tools on the request and recover DSML calls
10febc3 @tahacore fix(ari-core): keep model thinking out of the assistant reply
a224c1d @tahacore fix(ari-core): match ripgrep glob semantics in the JS grep fallback
7a4555b @tahacore fix(ui): send the endpoint key typed in the settings form
698cea3 @tahacore test(ari-core): exercise the harness end to end on a real workspace
ad86232 @tahacore feat(ui): brand tool steps as Ari tools with structured expanded views
570bcf9 @tahacore feat(ui): copy, show-more, and Shiki highlighting on tool result bodies
46804d9 @tahacore refactor(ui): remove dead ToolBlocks per-part renderer
c64a262 @tahacore feat(ui): style engine-injected failure text as in-transcript error notes
4341063 @tahacore feat(ui): turn error banner with classifier headlines, hints, and raw details
e584085 @tahacore feat(ui): toast on failed command dispatches instead of swallowing them
28e37ed @tahacore fix(ui): stop transcript flash from virtualizer scroll fight
396a575 @tahacore fix(ui): drop titlebar wordmark under macOS traffic lights
82229db @tahacore chore(ui): drop A/B race mode and the ProjectsView settings task
bd8e0f4 @tahacore docs: picture in README

PRs: #103 · #104 · #105 · #106 · #107 · #108 · #109 · #110 · #111 · #113 · #114 · #116 · #117 · #118 · #119


Installers

  • Windows: Ari-Setup-0.2.3.exe
  • macOS: Ari-0.2.3-universal.dmg (unsigned — right-click → Open on first launch)
  • Linux: Ari-0.2.3.AppImage, Ari-0.2.3.deb

0.2.x installs on Windows and AppImage pick this up automatically on next launch; the update installs silently on quit. If you installed the withdrawn 0.3.0 build, it will not auto-update down to 0.2.3 — install from here once, and updates resume from the 0.2.x line.

Installer files attach when the release workflow finishes.