<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atuin/crates/atuin-ai/src/commands/inline.rs, branch main</title>
<subtitle>Turtle. A hard-fork of atuin, focusing on a more minimal feature set</subtitle>
<id>http://git.foss-syndicate.org/bpeetz/forks/atuin/atom/crates/atuin-ai/src/commands/inline.rs?h=main</id>
<link rel='self' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/atom/crates/atuin-ai/src/commands/inline.rs?h=main'/>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/'/>
<updated>2026-06-10T20:01:45Z</updated>
<entry>
<title>chore: Remove some unused rust code</title>
<updated>2026-06-10T20:01:45Z</updated>
<author>
<name>Benedikt Peetz</name>
<email>benedikt.peetz@b-peetz.de</email>
</author>
<published>2026-06-10T20:01:45Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=5e31a81cd2207f053b8cd8ad84ebe2a2f691b29d'/>
<id>urn:sha1:5e31a81cd2207f053b8cd8ad84ebe2a2f691b29d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Capture command output + expose to new `atuin_output` tool (#3510)</title>
<updated>2026-06-08T16:12:45Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-06-08T16:12:45Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=bcdf8c8cde31e826000f1b2d6eeaebdd865a07c1'/>
<id>urn:sha1:bcdf8c8cde31e826000f1b2d6eeaebdd865a07c1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>perf: Reduce AI TUI rendering overhead for long conversations (#3447)</title>
<updated>2026-04-24T03:31:53Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-24T03:31:53Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=f72fdf7565d18b044f035fa6aca9ae8dbba34fc6'/>
<id>urn:sha1:f72fdf7565d18b044f035fa6aca9ae8dbba34fc6</id>
<content type='text'>
Fixes keystroke lag in Atuin AI that scales with conversation length.
After extended use (many turns, lots of tool calls with output
viewports), pressing a key had noticeable delay before the letter
appeared.

Three layers of optimization:

- **Skip `sync_view_state` for `InputUpdated`** — every keystroke was
cloning all events, tools, and archived data even though no FSM state
changed. Uses `handle.update_tracked()` (eye_declare 0.5) to skip
rebuilds when values haven't actually changed.

- **Pre-compute turns and `has_command` on the driver thread** — the
view function was rebuilding the full turn structure from raw events and
scanning for `suggest_command` tool calls 3× per render frame. Now
computed once per FSM state change and cached in ViewState.

- **Commit-based element tree pruning** — turns that scroll into
terminal scrollback are tracked via `on_commit` and filtered from the
element tree, keeping rendering work proportional to visible content.
Turn views are now direct children of the root VStack (not nested inside
AtuinAi) so `detect_committed` can see them.</content>
</entry>
<entry>
<title>feat: Add skill discovery, loading, and invocation (#3444)</title>
<updated>2026-04-23T20:43:01Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-23T20:43:01Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=461ef4c43589c6ca68176c180fd04f2755c9f036'/>
<id>urn:sha1:461ef4c43589c6ca68176c180fd04f2755c9f036</id>
<content type='text'>
Adds a skills system that lets users define reusable LLM instructions as `SKILL.md` files with YAML frontmatter.</content>
</entry>
<entry>
<title>refactor: Replace ad-hoc dispatch with FSM + driver architecture (#3434)</title>
<updated>2026-04-21T20:07:27Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-21T20:07:27Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=2f702ad446fcd6a261a3bea0ab2807d70eca43e2'/>
<id>urn:sha1:2f702ad446fcd6a261a3bea0ab2807d70eca43e2</id>
<content type='text'>
Replaces the tangled dispatch handler system (`tui/dispatch.rs`,
`tui/state.rs`) with a pure finite state machine + driver architecture.
The FSM handles all state transitions as explicit `(State, Event) →
(NewState, Effects)` mappings. The driver executes IO effects and
bridges the TUI to the FSM.</content>
</entry>
<entry>
<title>feat: AI tool rendering overhaul + edit_file tool (#3423)</title>
<updated>2026-04-21T17:32:54Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-21T17:32:54Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=0f20ee4eb871907defe7848f0d3e2203cfff057e'/>
<id>urn:sha1:0f20ee4eb871907defe7848f0d3e2203cfff057e</id>
<content type='text'>
Overhaul of how AI tool calls are modeled, rendered, and displayed in
the Atuin AI TUI. Fixes bugs in shell command output capture, implements
the `edit_file` tool with full safety infrastructure, and adds a diff
preview for edits.</content>
</entry>
<entry>
<title>chore: update to rust 1.95 (#3426)</title>
<updated>2026-04-21T01:34:35Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@atuin.sh</email>
</author>
<published>2026-04-21T01:34:35Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=65b74277d1f113174ad52cae9ffa93fbef1dc705'/>
<id>urn:sha1:65b74277d1f113174ad52cae9ffa93fbef1dc705</id>
<content type='text'>
&lt;!-- Thank you for making a PR! Bug fixes are always welcome, but if
you're adding a new feature or changing an existing one, we'd really
appreciate if you open an issue, post on the forum, or drop in on
Discord --&gt;

## Checks
- [ ] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [ ] I have checked that there are no existing pull requests for the
same thing</content>
</entry>
<entry>
<title>fix: loss of loading spinners + tokio panic on exit (#3415)</title>
<updated>2026-04-15T01:44:03Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-15T01:44:03Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=48b197781f7cee93b733484698fc7fee3cc5f0c8'/>
<id>urn:sha1:48b197781f7cee93b733484698fc7fee3cc5f0c8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Allow resuming previous AI sessions (#3407)</title>
<updated>2026-04-14T23:03:08Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-14T23:03:08Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=fd188da879d977ca847f10708c39dd4801a204c4'/>
<id>urn:sha1:fd188da879d977ca847f10708c39dd4801a204c4</id>
<content type='text'>
This PR introduces session continuation to Atuin AI.

* Conversations with Atuin AI are stored in a local SQLite database
* Upon startup, Atuin AI tries to find a session to resume based on its
directory/workspace and the time since the last event
* If found, Atuin AI will show a note that the session has been resumed,
and an event is added to help the LLM know where the invocation
boundaries are
* If not, Atuin AI will create a new conversation
* The user can create a new conversation with `/new`
* The new setting `ai.session_continue_minutes`, which defaults to `60`,
controls how old the last event in a session can be before it's no
longer considered for automatic resuming.

&lt;img width="1055" height="593" alt="image"
src="https://github.com/user-attachments/assets/3f9ff01a-ef64-44a9-b0e2-3a4252c5746f"
/&gt;

## Architecture

A new `SessionService` trait defines an API contract for a service that
can manage session data. `LocalSessionService` implements this, with
`DaemonSessionService` a possible future extension point.

`SessionManager` owns a `dyn SessionService` and delegates as
appropriate.</content>
</entry>
<entry>
<title>feat: Client-tool execution + permission system (#3370)</title>
<updated>2026-04-10T20:24:57Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-04-10T20:24:57Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=09279a428659cf41824737d3e0c97bcc19a8885a'/>
<id>urn:sha1:09279a428659cf41824737d3e0c97bcc19a8885a</id>
<content type='text'>
Adds client-side tool execution to Atuin AI, starting with
`atuin_history`. The server can request tool calls, which are executed
locally with a permission system, and results are sent back to continue
the conversation.</content>
</entry>
</feed>
