aboutsummaryrefslogtreecommitdiffstats
path: root/crates (unfollow)
Commit message (Collapse)Author
2026-03-27chore: Prepare 18.13.6 release (#3356)Michelle Tilley
2026-03-27chore(deps): Update to eye-declare v0.2.0 (#3355)Michelle Tilley
eye-declare v0.2.0 includes two relevant changes: * "Capture-phase" event handling lets us remove the special-case event handling in `InputBox` that allowed global keyboard binds to work; the `AtuinAi` component now handles this directly. * `Tracked::read()` allows reading fields in tracked state without triggering the dirty-tracking from the `DerefMut` implementation, allowing us to send messages on the app event bus without marking the containing state as dirty.
2026-03-27feat: Use eye-declare for more performant and flexible AI TUI (#3343)Michelle Tilley
This PR replaces the mess of custom rendering code in Atuin AI with [eye-declare](https://github.com/BinaryMuse/eye-declare), and updates the TUI to feel more terminal-native: output appears inline and persists in scrollback, so you can scroll up and look at previous conversations for reference. The "review" state — which used to exist between the LLM generating a response and the user either executing or following up — has been removed; just start typing to follow up with the LLM, or press `enter` at the empty input box to execute the suggested command. <img width="1203" height="633" alt="image" src="https://github.com/user-attachments/assets/159ee447-9a2a-4edd-b56e-a79bf1aaaa94" />
2026-03-26fix: set WorkingDirectory in PowerShell Invoke-AtuinSearch (#3351)James Brooks
Fixes #3350 PowerShell's Set-Location (cd) doesn't update the process-level working directory, so the spawned search process sees a stale cwd and directory filter mode matches against the wrong directory. Setting `WorkingDirectory` on the `ProcessStartInfo` ensures the correct cwd is passed through.
2026-03-26fix(powershell): handle non-FileSystem drives (#3353)Lucas Trzesniewski
The current version generates the following error when PowerShell's current directory is on a [non-FileSystem drive](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_providers): > A parameter cannot be found that matches parameter name 'Raw'. Repro: <img width="475" height="166" alt="image" src="https://github.com/user-attachments/assets/72af2dd1-ff80-46e1-936d-808d0563796a" /> <!-- 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
2026-03-25fix: remove unnecessary arboard/image-data default feature (#3345)Ross Williams
2026-03-24chore: Prepare 18.13.5 (#3342)Michelle Tilley
2026-03-24fix: Atuin Hex fails to init on bash and zsh (#3341)Michelle Tilley
Fixes #3340
2026-03-23chore(release): prepare for release 18.13.4 (#3336)Michelle Tilley
2026-03-23fix: Don't run 'atuin init' in 'atuin hex init' — each must be ↵Michelle Tilley
initialized separately (#3334)
2026-03-23chore: Refactor CLI auth flows and token storage (#3317)Michelle Tilley
This PR eplaces the binary `is_hub_sync()` auth routing with an explicit `SyncAuth` enum that classifies the client's authentication state at runtime. This fixes a class of bugs where CLI session tokens were silently mis-stored or used with the wrong auth scheme during Hub migration.
2026-03-23feat: hex init nu (#3330)Xavier Ruiz
- **feat(hex): add nushell support for `atuin hex init`** - **docs(hex): add nushell hex setup instructions** This adds setup for nushell. It breaks the pattern of calling `eval $(atuin init)` on behalf of the user because nushell simply cannot do this. I tried to source the atuin.nu file and add the preamble to it, but it is part of the atuin package, so it made things too difficult. I think settling for separate init is ok. Partially addresses #3329. Please see #3323 as well. I was able to get it working and I am using these changes in my dotfiles: https://github.com/xav-ie/dots/compare/b1a8cf96b58f802396ac5103f0925e1434fc473c...696dbf31008395587353e3071f5296c459685a17 Basically, I just do as the new docs say and make sure to add hex init before regular init and source it. <!-- 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
2026-03-23fix: Disable features in init when that feature is explicitly disabled (#3328)Michelle Tilley
This PR updates `atuin init` to skip initializers for subfeatures when that subfeature is explicitly disabled with a setting value of `false`. For `ai.enabled = false`, this releases the question mark keybind. Fixes #3325
2026-03-20feat: Allow running `atuin search -i` as subcommand on Windows (#3250)Lucas Trzesniewski
This is the equivalent of #3208, but for Windows. ~The rendering performance is noticeably slower in this mode when refreshing a large part of the screen, but it's better than not having the feature at all.~ Fixed 🙂 The second commit fixes some unrelated warnings. /cc @BinaryMuse FYI ## 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
2026-03-20feat: add a small atuin label to the ai box (#3309)Ellie Huxtable
<!-- 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
2026-03-20feat: error if value not provided and no stdinEllie Huxtable
2026-03-20feat: allow setting kv values from stdinEllie Huxtable
2026-03-19fix: Clarify what data is sent when using Atuin AI during setup (only OS and ↵Michelle Tilley
shell) (#3290) Clarifies during `atuin setup` that Atuin AI does not send any shell history to the AI provider.
2026-03-19fix: remove per-event mouse capture toggling that leaked ANSI to stdout (#3299)Michelle Tilley
The per-event `EnableMouseCapture`/`DisableMouseCapture` in `handle_input` wrote directly to `std::io::stdout()`, causing ANSI escape sequences to leak into captured output when running under command substitution (e.g. `VAR=$(atuin search -i)`). This toggling became redundant when session-level mouse capture was added to `Stdout::new()`/`Stdout::drop()`. Fixes #3298
2026-03-19fix(ai): restore url-quote-magic for ? in zsh (#3304)Alex Kirk
I discovered that since #3178, typing or pasting a `?` in a URL no longer gets escaped by `url-quote-magic`. For example, pasting `https://example.com/search?q=foo&test` would result in `https://example.com/search?q=foo\&test` (leave the `?` unescaped, while `&` still worked correctly). The root cause is that Atuin binds `?` to `_atuin_ai_question_mark`, which bypasses `url-quote-magic` in two ways: 1. **Typed `?`**: the else branch (non-empty buffer) appended `?` directly to `LBUFFER` instead of delegating to `self-insert` which runs `url-quote-magic`. 2. **Pasted `?`**: `bracketed-paste-magic` only [activates widgets whose name matches `self-*`](https://github.com/zsh-users/zsh/blob/99f578897614f318cdad76402a7d2423ce176b5a/Functions/Zle/bracketed-paste-magic#L24). Since `_atuin_ai_question_mark` didn't match, pasted `?` characters fell through to `zle .self-insert` — the raw built-in that inserts literally without any URL escaping. The fix renames the widget to `self-atuin-ai-question-mark` (Note: I am not sure this is the best way but it is a relatively simple one). The `self-` prefix satisfies `bracketed-paste-magic`'s `active-widgets` pattern, so `?` in paste is processed by our widget and delegated to `zle self-insert`, restoring `url-quote-magic` behaviour. The typed case delegates to `zle self-insert` in the else branch for the same reason.
2026-03-18fix: Call ensure_hub_session even if primary sync endpoint is self-hostedMichelle Tilley
2026-03-17chore: Replace atuin-ai rendering with component-oriented system (#3288)Michelle Tilley
2026-03-17feat: Report distro name with OS for distro-specific commands (#3289)Michelle Tilley
2026-03-16chore(release): prepare for release 18.13.3Ellie Huxtable
2026-03-16vendor nucleo fork into atuin workspaceEllie Huxtable
Rename crates (nucleo → atuin-nucleo, nucleo-matcher → atuin-nucleo-matcher), add to workspace members and dependencies, update all import paths, remove vendored CI workflow, and suppress upstream clippy warnings. format codespell fixes clippy clappy
2026-03-16feat: Add custom filtering and scoring mechanismsMichelle Tilley
2026-03-16Update readmeMichelle Tilley
2026-03-16feat: Allow headless account ops against Hub server (#3280)Michelle Tilley
2026-03-16chore: symlink changelog so dist can pick it upEllie Huxtable
2026-03-16fix: Nushell 0.111; future Nushell 0.112 support (#3266)Stuart Carnie
Fix issue introduced by #3249. Nushell 0.112 will introduce the breaking change; not 0.111.
2026-03-16specify version in all daemon atuin cratesEllie Huxtable
2026-03-13chore(release): prepare for release 18.13.2 (#3264)Ellie Huxtable
I tried adding a windows arm64 build to the last release, which was perhaps a little naive of me. I thought it working on x86 windows and arm everything else would be enough 💀 ## 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
2026-03-13chore(release): prepare for release 18.13.1 (#3263)Ellie Huxtable
We were using buildjet as our runners previously, but it looks like they have gone under. Luckily, GitHub now provides the arm runners we need ## 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
2026-03-13chore(release): prepare for release 18.13.0 (#3262)Ellie Huxtable
<!-- 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
2026-03-12chore(release): prepare for release 18.13.0-beta.7 (#3259)Ellie Huxtable
<!-- 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
2026-03-12feat: Add `atuin setup` (#3257)Michelle Tilley
2026-03-12chore(release): prepare for release 18.13.0-beta.6 (#3258)Ellie Huxtable
<!-- 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
2026-03-11feat: Initialize Atuin AI by default with `atuin init` (#3255)Michelle Tilley
* Run Atuin AI's `init` during main `init` for bash, zsh, and fish * Note that logging into Hub will enable sync * Add instructions for users with existing sync accounts * Ensure daemon respects `auto_sync` setting * Update docs on disabling Atuin AI
2026-03-12fix: ctrl-c not exiting ai (#3256)Ellie Huxtable
<!-- 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 --> Listen to signals as well as state ## 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
2026-03-11chore(release): prepare for release 18.13.0-beta.5 (#3253)Ellie Huxtable
<!-- 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
2026-03-11feat: Allow authenticating with Atuin Hub (#3237)Michelle Tilley
## Summary This PR enables the Atuin CLI to authenticate with Atuin Hub, unifying authentication across CLI sync and Hub features (AI, runbooks, etc.). ### Key Changes - **Dual auth support**: New `AuthToken` enum supports both `Bearer` (Hub) and `Token` (legacy CLI) authentication - **Smart protocol selection**: New `sync_protocol` setting (`auto`/`hub`/`legacy`) determines auth method. By default, `api.atuin.sh` uses Hub auth; custom sync addresses use legacy auth - **Hub login flow**: `atuin login` now initiates an OAuth-like flow for Hub users—generates a code, user authorizes in browser, CLI polls for completion - **Account linking**: After Hub auth, silently attempts to link existing CLI sync account to Hub account for seamless migration - **Graceful fallback**: `sync_auth_token()` prefers Hub token when available, falls back to CLI session token ### Auth Flow 1. User runs `atuin login` (with default sync address) 2. CLI requests auth code from Hub, displays URL 3. User opens URL, logs in/registers on Hub 4. Hub attaches API token to code 5. CLI polls, receives token, saves as hub session 6. If user had existing CLI sync account, it's automatically linked ### Backward Compatibility - Existing self-hosted users: unaffected (legacy auth via `Token` header) - Existing `api.atuin.sh` users: continue working with CLI session until they run `atuin login` - New users: go through Hub flow automatically ## Test Plan - [ ] New user registration via Hub flow - [ ] Existing CLI user can still sync without changes - [ ] `atuin login` links CLI account to Hub account - [ ] Self-hosted users unaffected by changes - [ ] AI commands work after Hub auth --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2026-03-10chore(release): prepare for release 18.13.0-beta.4 (#3252)Ellie Huxtable
<!-- 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
2026-03-10fix: support Nushell 0.111 (#3249)Stuart Carnie
The flag for `job spawn` changed, which prevents the script from compiling on Nushell 0.111+. ## 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
2026-03-09chore: upgrade axum 0.7 to 0.8 to deduplicate with tonic's axumEllie Huxtable
atuin-server used axum 0.7 while tonic already pulled in axum 0.8, resulting in both versions compiled into the binary. Migrates to axum 0.8: path params use {param} syntax, FromRequestParts uses native async traits (dropping async-trait dep from atuin-server).
2026-03-09feat: use pty proxy for rendering tui popups without clearing the terminal ↵Ellie Huxtable
(#3234) It feels much, much nicer this way. This has also been asked for pretty consistently since we made inline rendering the default. Now we can have everything :) Maintains a shadow vt100 renderer so that we can restore the terminal state upon popup close. This happens on a background thread, so our impact on terminal performance should still be super minimal, if anything ## 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
2026-03-09feat: Allow running `atuin search -i` as subcommand (#3208)Michelle Tilley
Allow `atuin search -i` to work in command substitution contexts like `VAR=$(atuin search -i)`. Previously this would fail with "The cursor position could not be read within a normal duration" because stdout was captured by the subshell, preventing terminal queries from working. Changes: - When stdout isn't a terminal, fall back to /dev/tty for TUI rendering (Unix only) - Force fullscreen mode in this case (inline mode requires cursor position queries that don't work with captured stdout) - Write the selected command to stdout (instead of stderr) when stdout is captured, so it gets assigned to the variable Fixes #3207
2026-03-05feat: Allow setting multipliers for frequency, recency, and frecency scores ↵Michelle Tilley
(#3235)
2026-03-04feat: initial draft of atuin-shell (#3206)Ellie Huxtable
<!-- 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 --------- Co-authored-by: Claude <noreply@anthropic.com>
2026-03-03fix: clear script database before rebuild to prevent unique constraint ↵Ellie Huxtable
violation (#3232) The script store build() replays all records from the record store into SQLite but never cleared the database first. Stale rows from previous builds caused unique constraint violations on the name index when scripts were renamed or recreated. <!-- 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
2026-03-02chore(release): prepare for release 18.13.0-beta.3 (#3228)Ellie Huxtable
<!-- 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