aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* fix({client,server}/settings): Don't fail, when there is no config fileHEADmainBenedikt Peetz4 hours
|
* chore(treewide): Remove glob importsBenedikt Peetz4 hours
|
* build(flake): Expose nixos-moduleBenedikt Peetz4 hours
|
* docs(README): Update to highlight the changesBenedikt Peetz8 hours
|
* fix(config): Don't write non-TOML default config filesBenedikt Peetz8 hours
|
* perf: Add basic profiling frameworkBenedikt Peetz9 hours
|
* tests(basic): Extend to cover repeated syncBenedikt Peetz9 hours
|
* build(cargo): Use `mold` as a linkerBenedikt Peetz9 hours
|
* chore(daemon): Remove the `autostart` featureBenedikt Peetz9 hours
| | | | A service manager should deal with that.
* fix(sqlite): Ensure that database migration runs sequentiallyBenedikt Peetz9 hours
| | | | Otherwise, we might run migration from multiple db-connections.
* chore(treewide): Also fix all `clippy` warningsBenedikt Peetz23 hours
|
* chore(treewide): Fix some of `clippy`'s errorBenedikt Peetz23 hours
| | | | Just a run of `cargo clippy --fix`
* chore(treewide): Remove `cargo` warnings to 0Benedikt Peetz23 hours
| | | | There are still the `clippy` warnings, but they are for a future date.
* chore(treewide): Cleanup themesBenedikt Peetz31 hours
|
* feat(server): Really make users stateless (with tests)Benedikt Peetz46 hours
| | | | This commit also remove another load of unneeded features.
* feat(server): Make user stuff statelessBenedikt Peetz2 days
|
* chore(server): Remove the last remnants of the "hub" sync-server thingyBenedikt Peetz2 days
|
* chore(server): Simplify the database supportBenedikt Peetz2 days
|
* chore: Remove all `pub`sBenedikt Peetz2 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 Peetz3 days
|
* chore: Move everything into one big crateBenedikt Peetz3 days
| | | | | That helps remove duplicated code and rustc/cargo will now also show dead code correctly.
* chore: Somewhat simplify sync codeBenedikt Peetz3 days
|
* chore: Remove more (kinda) useless stuffBenedikt Peetz3 days
|
* chore: Turn all `allow`s into into `expect`sBenedikt Peetz3 days
|
* chore: Remove more useless codeBenedikt Peetz3 days
|
* chore: Remove some unused rust codeBenedikt Peetz3 days
|
* chore: Remove unneeded filesBenedikt Peetz3 days
|
* feat: Capture command output + expose to new `atuin_output` tool (#3510)Michelle Tilley5 days
|
* chore(deps): bump debian from bookworm-20260421-slim to ↵dependabot[bot]10 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 Rose10 days
|
* chore(deps): bump lukemathwalker/cargo-chefdependabot[bot]12 days
| | | | | | | | | | | | 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
|