aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* chore(release): prepare for release 18.16.0 (#3457)Michelle Tilley2026-04-28
|
* chore(release): prepare for release 18.16.0-beta.1 (#3450)Michelle Tilley2026-04-24
|
* Merge branch 'main' of github.com:atuinsh/atuinMichelle Tilley2026-04-24
|\
| * chore: Update to eye_declare 0.5.1 (#3449)Michelle Tilley2026-04-24
| |
* | Tweak release skillMichelle Tilley2026-04-23
|/
* perf: Reduce AI TUI rendering overhead for long conversations (#3447)Michelle Tilley2026-04-23
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* feat: Add skill discovery, loading, and invocation (#3444)Michelle Tilley2026-04-23
| | | Adds a skills system that lets users define reusable LLM instructions as `SKILL.md` files with YAML frontmatter.
* feat: Send user-defined context with `TERMINAL.md` (#3443)Michelle Tilley2026-04-23
| | | | | | | | | | This PR adds the ability to inject user-defined content into Atuin AI requests, a la `AGENTS.md` or `CLAUDE.md`. * `.atuin/TERMINAL.md` (or alternatively just `TERMINAL.md`) is checked in every directory from the cwd up to the root * `~/.config/atuin/TERMINAL.md` (or equivalent config dir) is also checked * Supports Claude-style ``` !`` ``` and ```` ```!...``` ```` style shell interpolation
* fix: minor issues with fish's vim mode(s) (#3362)Aditya Bhargava2026-04-23
| | | | | | | | | | This PR fixes two minor issues when using Atuin with fish's vim mode(s): 1. Add support for `fish_hybrid_key_bindings`: in addition to `fish_vi_key_bindings`, fish also provides `fish_hybrid_key_bindings`, which is a vi-based mode with some extra keybinds; but the key bind check for `atuin search` only checks for the former. 2. The AI keybind inserts a `?` on the command line in vim mode even though it can only be called from normal mode, when pressing `?` normally does nothing.
* fix: require all subcommands covered for shell allow rules (#3440)Michelle Tilley2026-04-21
|
* docs: update for new server binary (#3439)Ellie Huxtable2026-04-22
| | | | | | | | | | | | <!-- 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 --> ## 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
* feat: shell tool execution timeouts (#3437)Michelle Tilley2026-04-21
|
* fix: shell tool preview stuck as Running after completion (#3436)Michelle Tilley2026-04-21
|
* chore: Use cat -n format for read_file tool (#3435)Michelle Tilley2026-04-21
|
* refactor: Replace ad-hoc dispatch with FSM + driver architecture (#3434)Michelle Tilley2026-04-21
| | | | | | | 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.
* docs: document show_numeric_shortcuts (#3433)ash2026-04-21
| | | | | | | | | | | | | | | <!-- 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 --> This was added in https://github.com/atuinsh/atuin/pull/2863, but not documented at the time. ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing
* feat: Implement write_file tool with overwrite safety (#3432)Michelle Tilley2026-04-21
| | | | | | | | | | | | | | | | | | | | ## Summary Implements the `write_file` client-side tool — creates new files or overwrites existing ones with an explicit `overwrite` flag for safety. - **Overwrite flag**: Writing to an existing file without `overwrite: true` returns an error directing the LLM to set the flag or use `edit_file` for targeted changes. Prevents accidental overwrites. - **Snapshots**: Existing files are backed up before overwriting (same infrastructure as `edit_file`). - **Content preview**: Completed writes show the first 10 lines in gray with line numbers, plus "+ N more lines" for longer files. - **Atomic writes**: Uses `tempfile` + fsync + rename (same as `edit_file`). - **File tracker update**: After writing, the file is registered in the tracker so subsequent `edit_file` calls work without a separate read. - **Permission**: Shares the `"Write"` rule with `edit_file` — one permission covers both tools.
* feat: AI tool rendering overhaul + edit_file tool (#3423)Michelle Tilley2026-04-21
| | | | | | 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.
* chore: Clarified note about regular expressions matching in path. (#3427)dotfrag2026-04-21
| | | | | | | | | | | | <!-- 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 --> ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing
* chore: update to rust 1.95 (#3426)Ellie Huxtable2026-04-21
| | | | | | | | | | | | <!-- 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 --> ## 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
* chore(release): prepare for release 18.15.2 (#3421)Michelle Tilley2026-04-16
| | | | | | | | ## 18.15.2 ### Bug Fixes - Tab doesn't insert suggested command ([#3420](https://github.com/atuinsh/atuin/issues/3420))
* fix: Tab doesn't insert suggested command (#3420)Michelle Tilley2026-04-16
|
* chore: Fix Claude release skill to properly catch completed checksMichelle Tilley2026-04-16
|
* chore(release): prepare for release 18.15.1 (#3419)Michelle Tilley2026-04-15
|
* fix: Enter runs suggested command when selecting permissions (#3418)Michelle Tilley2026-04-15
|
* Update release skillMichelle Tilley2026-04-15
|
* chore(release): prepare for release 18.15.0 (#3417)Michelle Tilley2026-04-15
|
* fix: loss of loading spinners + tokio panic on exit (#3415)Michelle Tilley2026-04-14
|
* feat: Allow resuming previous AI sessions (#3407)Michelle Tilley2026-04-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. <img width="1055" height="593" alt="image" src="https://github.com/user-attachments/assets/3f9ff01a-ef64-44a9-b0e2-3a4252c5746f" /> ## 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.
* fix: dependency fix (#3414)Michael Zeller2026-04-14
| | | | | | | | | | | This was commented out in #3413 and needs to be fixed back up. It's possible we can drop this line altogether if CI passed before without it. ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing
* chore: add release script (#3411)Michelle Tilley2026-04-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## Summary Adds release automation for Atuin in two forms: a standalone bash script (`scripts/release.sh`) and a Claude Code skill (`/release`). Both follow the same process: 1. Check dependencies (`git`, `gsed`, `cargo`, `gh`, `git-cliff`) 2. Detect current version from workspace `Cargo.toml`, prompt for new version 3. Clone to a clean temp directory, create release branch 4. Update versions across all `Cargo.toml` files (with escaped dots in the sed pattern) 5. `cargo check` to update `Cargo.lock` 6. Generate changelog with `git-cliff` and insert incrementally (preserves manual edits to old entries) 7. Commit, push, create PR with changelog in the body 8. Wait for PR merge, then tag and push 9. Publish to crates.io (stable only, `--no-verify` to avoid index-lag failures, graceful "already uploaded" handling for independently-versioned crates like atuin-nucleo) ### Changelog strategy - **Prereleases**: maintain a running `## [unreleased]` section with all changes since the last stable release - **Stable releases**: replace the `[unreleased]` section with a versioned `## X.Y.Z` heading covering the same span - cargo-dist reads `CHANGELOG.md` at the tagged commit for GitHub Release notes, so the edited changelog flows through automatically ### Bash script vs Claude Code skill | Bash script | `/release` skill | |---|---| | `read -p "Press Enter..."` | AskUserQuestion with structured options | | `$EDITOR CHANGELOG.md` | Shows the entry inline, edits conversationally | | `sleep 5` polling loop | Persistent Monitor with CI check summaries | | `echo -e "${GREEN}✓${NC}"` | Natural language progress reporting | | Must know the script exists | `/release 18.15.0` from any Claude Code session |
* feat: Enable atuin hex for illumos (#3413)Michael Zeller2026-04-14
| | | | | | | | | | | | | This bumps the `portable-pty` dep which itself has a dependency on a newer termios that knows about illumos. Unless this was pinned for a particular reason I think this is fine. With this dep bumped we can enable `atuin hex` on illumos. ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing
* feat: Add OCI standard labels to Dockerfile (#3412)Rufo Sanchez2026-04-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | <!-- 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 --> ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing Hi there! Just a small thing I noticed; I self-host an Atuin server via Docker and have started bumping my compose dependencies with Renovate. They have a feature that pulls the changelog and displays it in-line in the PR, which is handy when it works! - but currently this doesn't work for Atuin. According to [their documentation](https://docs.renovatebot.com/modules/datasource/docker/#description), the `org.opencontainers.image.source` label needs to point to the repository for them to grab release notes. Renovate cites their Dockerfile as an example, so I took a look at [the actual Dockerfile](https://github.com/renovatebot/renovate/blob/main/tools/docker/Dockerfile) to see if they had any other labels, and figured I'd pop those in as well. No particularly strong feelings on the labeling itself, styling, etc; so free free to make any changes deemed necessary :)
* fix: install script incorrectly tries to install opencode hooks (#3410)Michelle Tilley2026-04-14
|
* chore(release): prepare for release 18.14.1 (#3405)Ellie Huxtable2026-04-13
| | | | | | | | | | | | <!-- 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 --> ## 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
* fix: Thread remote and content_length through system for server tool calls ↵Michelle Tilley2026-04-13
| | | | (#3404)
* docs: Add Tools & Permissions doc section (#3402)Michelle Tilley2026-04-13
|
* fix: ensure we can publish to crates (#3403)Ellie Huxtable2026-04-13
| | | | | | | | | | | | | | | include_str won't work outside of the crate boundary. Crates is so frustrating sometimes. <!-- 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 --> ## 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
* chore(release): prepare for release 18.14.0 (#3401)Ellie Huxtable2026-04-13
| | | | | | | | | | | | <!-- 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 --> ## 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
* refactor: rename examples -> contrib (#3400)Ellie Huxtable2026-04-13
| | | | | | | | | | | | <!-- 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 --> ## 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
* feat: autoinstall ai shell history hooks (#3399)Ellie Huxtable2026-04-13
| | | | | | | | | | Follows our existing behaviour of automatically installing shell hooks, extend this for ai agents too ## 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
* feat: add pi hook installer (#3398)Ellie Huxtable2026-04-13
| | | | | | | | | | | | | | | Support installing the pi extension via `atuin hook install pi`. Bundle the extension in the binary and update the docs. <!-- 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 --> ## 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
* feat: remove agent search from tui (#3397)Ellie Huxtable2026-04-13
| | | | | | | | | | | | | This is essentially not a useful place to search agent history Right now, using the CLI is the best way to explore this. We are looking into building another TUI for searching records more widely and in more detail ## 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
* feat: track coding agent shell usage (#3388)Ellie Huxtable2026-04-11
| | | | | | | | | | | https://github.com/user-attachments/assets/7868c7a4-6a91-4c93-ac6a-e8665cf1f799 ## 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
* fix: ensure daemon is running (#3384)Ellie Huxtable2026-04-11
| | | | | | | | | | | | | | | | | | | Instead of only ensuring the daemon is running as part of writing history, route all calls through a function that ensures it's running if an error occurs. This fixes the case where a system boots, no commands run, and the user tries to search history. <!-- 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 --> ## 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
* feat: add history tail for live monitoring view (#3389)Ellie Huxtable2026-04-11
| | | | | | | | | | Useful for watching what agents are doing, or viewing live info from other machines. Regardless I am liking it for debugging ## 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
* chore: Prepare 18.14.0-beta.1 release (#3393)Michelle Tilley2026-04-10
|
* feat: Client-tool execution + permission system (#3370)Michelle Tilley2026-04-10
| | | | | | 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.
* feat: add strip_trailing_whitespace, on by default (#3390)Ellie Huxtable2026-04-10
| | | | | | | | | | | | I can't think of any reason you would want this disabled by default - trailing whitespace means nothing, breaks dedupe, and wastes a few bytes closes #3387 ## 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
* docs: Minor readability improvement to README (#3381)Anirudh Vempati2026-04-07
| | | | | | | | | | | | <!-- 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 --> ## Checks - [x] I am happy for maintainers to push small adjustments to this PR, to speed up the review cycle - [x] I have checked that there are no existing pull requests for the same thing