aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* chore(treewide): Remove glob importsBenedikt Peetz3 days
|
* build(flake): Expose nixos-moduleBenedikt Peetz3 days
|
* docs(README): Update to highlight the changesBenedikt Peetz3 days
|
* fix(config): Don't write non-TOML default config filesBenedikt Peetz3 days
|
* perf: Add basic profiling frameworkBenedikt Peetz3 days
|
* tests(basic): Extend to cover repeated syncBenedikt Peetz3 days
|
* build(cargo): Use `mold` as a linkerBenedikt Peetz3 days
|
* chore(daemon): Remove the `autostart` featureBenedikt Peetz3 days
| | | | A service manager should deal with that.
* fix(sqlite): Ensure that database migration runs sequentiallyBenedikt Peetz3 days
| | | | Otherwise, we might run migration from multiple db-connections.
* chore(treewide): Also fix all `clippy` warningsBenedikt Peetz4 days
|
* chore(treewide): Fix some of `clippy`'s errorBenedikt Peetz4 days
| | | | Just a run of `cargo clippy --fix`
* chore(treewide): Remove `cargo` warnings to 0Benedikt Peetz4 days
| | | | There are still the `clippy` warnings, but they are for a future date.
* chore(treewide): Cleanup themesBenedikt Peetz4 days
|
* feat(server): Really make users stateless (with tests)Benedikt Peetz5 days
| | | | This commit also remove another load of unneeded features.
* feat(server): Make user stuff statelessBenedikt Peetz5 days
|
* chore(server): Remove the last remnants of the "hub" sync-server thingyBenedikt Peetz5 days
|
* chore(server): Simplify the database supportBenedikt Peetz5 days
|
* chore: Remove all `pub`sBenedikt Peetz5 days
| | | | | They will not be marked by rustc/cargo as unused, and as atuin doesn't expose an API all of them _should_ be `pub(crate)`
* chore: Restore db migrationsBenedikt Peetz6 days
|
* chore: Move everything into one big crateBenedikt Peetz6 days
| | | | | That helps remove duplicated code and rustc/cargo will now also show dead code correctly.
* chore: Somewhat simplify sync codeBenedikt Peetz6 days
|
* chore: Remove more (kinda) useless stuffBenedikt Peetz6 days
|
* chore: Turn all `allow`s into into `expect`sBenedikt Peetz6 days
|
* chore: Remove more useless codeBenedikt Peetz6 days
|
* chore: Remove some unused rust codeBenedikt Peetz6 days
|
* chore: Remove unneeded filesBenedikt Peetz6 days
|
* feat: Capture command output + expose to new `atuin_output` tool (#3510)Michelle Tilley8 days
|
* chore(deps): bump debian from bookworm-20260421-slim to ↵dependabot[bot]12 days
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bookworm-20260518-slim (#3500) Bumps debian from bookworm-20260421-slim to bookworm-20260518-slim. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=debian&package-manager=docker&previous-version=bookworm-20260421-slim&new-version=bookworm-20260518-slim)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore: update GitHub app token formatChris Rose12 days
|
* chore(deps): bump lukemathwalker/cargo-chefdependabot[bot]2026-06-01
| | | | | | | | | | | | Bumps lukemathwalker/cargo-chef from latest-rust-1.95.0-slim-bookworm to latest-rust-1.96.0-slim-bookworm. --- updated-dependencies: - dependency-name: lukemathwalker/cargo-chef dependency-version: latest-rust-1.96.0-slim-bookworm dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
* chore: update to Rust 1.96 (#3507)Ellie Huxtable2026-05-28
| | | | | | | | | | | | <!-- 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: Atuin hangs when attempting to spawn daemon from Ctrl+R invocation (#3502)Michelle Tilley2026-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This PR fixes a shell hang when daemon autostart happens from the interactive search widget. The bash/zsh/fish integrations run `atuin search -i` under command substitution and swap stdout/stderr so the TUI can draw to the terminal while the selected command is captured: ```sh 3>&1 1>&2 2>&3 ``` This leaves fd 3 open in the atuin search process. If search autostarts the daemon, the spawned long-running `atuin daemon start --daemonize` inherits fd 3, the command-substitution pipe, so the shell keeps waiting for EOF until the daemon is killed. The fix: close fd 3 after the swap in the non-tmux bash/zsh/fish paths: ```sh 3>&1 1>&2 2>&3 3>&- ``` Tested on zsh; I still need to confirm for bash and fish. Near as I can tell, the other shell integrations don't need this change. Fixes #3499
* Allow overriding model with env var (#3493)Michelle Tilley2026-05-19
| | | | | | | This PR allows overriding the Atuin AI model for feature-flagged users with the `ATUIN_AI__MODEL` environment variable. Any OpenRouter model is accepted; it's recommended to include an explicit `openrouter:` provider prefix, so models with colons in their names are interpreted correctly, e.g. `ATUIN_AI__MODEL=openrouter:deepseek/deepseek-v4-flash:free`.
* docs: Highlight `Ctrl-r` keybinding on docs page (#3489)Thorsten Ball2026-05-17
| | | | | | | | | | | | | | | I had to look 5 times and I think highlighting it like this might've reduced it to 2 :) <!-- 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
* refactor: pull `fn into_utc` into atuin-server-database crate (#3487)John Oxley2026-05-14
| | | | | | | | | | | | The `fn into_utc` was defined in both `atuin-server-postgres` and `atuin-server-sqlite`, with tests being in the postgres crate. This pulls the function into the `atuin-server-database` crate along with the tests and references it from both crates. ## 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: vouch for all existing contributors (#3486)Ellie Huxtable2026-05-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 - [ ] 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: Implement From<sqlx::Error> and clean up fix_error (#3484)John Oxley2026-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the database crates for atuin-server, there is `fn fix_error`. This PR implements `From<sqlx::Error>` on `DbError` which makes it possible to mostly use `?` to bubble up the errors. There are cases where `?` is not being used e.g. ```rust async fn get_session(&self, token: &str) -> DbResult<Session> { sqlx::query_as("select id, user_id, token from sessions where token = $1") .bind(token) .fetch_one(&self.pool) .await .map_err(fix_error) .map(|DbSession(session)| session) } ``` There are two options ## 1. Use `Into::into` ```rust async fn get_session(&self, token: &str) -> DbResult<Session> { sqlx::query_as("select id, user_id, token from sessions where token = $1") .bind(token) .fetch_one(&self.pool) .await .map_err(fix_error) .map(|DbSession(session)| session) } ``` ## 2. Create a variable and use `?` ```rust async fn get_session(&self, token: &str) -> DbResult<Session> { let session = sqlx::query_as("select id, user_id, token from sessions where token = $1") .bind(token) .fetch_one(&self.pool) .await .map(|DbSession(session)| session)?; Ok(session) } ``` I chose to do option 1 as it was just a find/replace but say the word and I'll convert them all to option 2 ## 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
* fix(ci): fossier install in scan workflow (#3485)Ellie Huxtable2026-05-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 - [ ] 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: setup fossier to stop bot slop prs (#3482)Ellie Huxtable2026-05-14
| | | | | | | | | | | | | | | | I am tired of PRs from "people" who have forked >100 repos and opened >200 PRs in a single day. Use AI to amplify what you can do. I'm not reading your slop PR body that you haven't even read, reviewing code you have had no part in, and testing something you have probably never built. ## 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.16.1 (#3476)Ellie Huxtable2026-05-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ## 18.16.1 ### Bug Fixes - *(shell/xonsh)* Use os.devnull instead of hard-coded /dev/null ([#3464](https://github.com/atuinsh/atuin/issues/3464)) - Atuin update on windows ([#3453](https://github.com/atuinsh/atuin/issues/3453)) - Ensure local key matches remote data before syncing ([#3474](https://github.com/atuinsh/atuin/issues/3474)) ### Documentation - Add related projects section to README ### Features - *(ui)* Prominent banner for wrong-key errors at login/sync ([#3475](https://github.com/atuinsh/atuin/issues/3475)) ### Miscellaneous Tasks - Generate LLM-optimized docs ([#3468](https://github.com/atuinsh/atuin/issues/3468)) - Rename 'atuin hex' to 'atuin pty-proxy' ([#3473](https://github.com/atuinsh/atuin/issues/3473))
* feat(ui): prominent banner for wrong-key errors at login/sync (#3475)Ellie Huxtable2026-05-12
| | | | | | | | | | | | | | | | | | | | | | | | | The wrong-key error was a long unwrapped sentence buried under "Successfully authenticated.", and wrapped by eyre error formatting add - print_error(title, description) — red box-drawn bars across the terminal width (capped at 100 cols) with bold title; word-wraps the description; plain "Error:" header when stderr isn't a TTY. - format_sync_error(SyncError) -> eyre::Report — intercepts WrongKey to print the banner and exit(1) so eyre's footer never runs; forwards other variants unchanged. Use it from: - account/login.rs — replaces bail\! in the wrong-key path - command/client/sync.rs — .map_err(format_sync_error)? on sync() - store/push.rs and store/pull.rs — .map_err on check_encryption_key ## 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 local key matches remote data before syncing (#3474)Ellie Huxtable2026-05-12
| | | | | | | | | | | | | | | We rely on the user to manage their keys. This is ok, and is intentionally part of our security model However. If the user messes up, they corrupt their remote store. It is possible to work around and fix, but not without difficulty. This change ensures that if the local key does not match the remote data, no data is synced and the user has a chance to fix it before breaking things. ## 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: Rename 'atuin hex' to 'atuin pty-proxy' (#3473)Michelle Tilley2026-05-11
|
* chore: Generate LLM-optimized docs (#3468)Michelle Tilley2026-05-08
|
* docs: Add related projects section to READMEEllie Huxtable2026-05-06
| | | Added a section for related projects in the README.
* fix(shell/xonsh): use os.devnull instead of hard-coded /dev/null (#3464)Sai Asish Y2026-05-05
| | | | | | | | | | | Refiles a previously-closed PR (#3463) that was closed in error after the force-push. Same fix; new branch. Uses inline `@(os.devnull)` per @ltrzesniewski's suggestion in #3463. Fixes #3462. Signed-off-by: SAY-5 <saiasish.cnp@gmail.com> Co-authored-by: SAY-5 <saiasish.cnp@gmail.com>
* chore(deps): bump debian from bookworm-20260202-slim to ↵dependabot[bot]2026-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bookworm-20260421-slim (#3455) Bumps debian from bookworm-20260202-slim to bookworm-20260421-slim. [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=debian&package-manager=docker&previous-version=bookworm-20260202-slim&new-version=bookworm-20260421-slim)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: atuin update on windows (#3453)Lucas Trzesniewski2026-05-04
| | | | | | | | | | | | | | | | | | | | | | This fixes the `atuin update` command on Windows. Windows doesn't let you overwrite a running exe, but it lets you rename it. This PR special-cases the official `update` plugin by renaming the running `atuin.exe` to `atuin.old` before the update, and rolling it back if the update fails. Note that the `atuin.old` file is left behind on success, which shouldn't be a problem in practice: it will be overwritten on the next call to `atuin update` (also deleted if there's no update available), and is located in `~/.atuin/bin`, which is an isolated location specific to Atuin. Fixes #3451 ## 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(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
|