<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atuin/crates/atuin-client/src/record, 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-client/src/record?h=main</id>
<link rel='self' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/atom/crates/atuin-client/src/record?h=main'/>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/'/>
<updated>2026-06-10T22:54:30Z</updated>
<entry>
<title>chore: Move everything into one big crate</title>
<updated>2026-06-10T22:54:30Z</updated>
<author>
<name>Benedikt Peetz</name>
<email>benedikt.peetz@b-peetz.de</email>
</author>
<published>2026-06-10T22:54:30Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8'/>
<id>urn:sha1:5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8</id>
<content type='text'>
That helps remove duplicated code and rustc/cargo will now also show
dead code correctly.
</content>
</entry>
<entry>
<title>chore: Turn all `allow`s into into `expect`s</title>
<updated>2026-06-10T20:28:10Z</updated>
<author>
<name>Benedikt Peetz</name>
<email>benedikt.peetz@b-peetz.de</email>
</author>
<published>2026-06-10T20:28:10Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=b4011176cc4b68aed77a6946610a3dcf3b938e95'/>
<id>urn:sha1:b4011176cc4b68aed77a6946610a3dcf3b938e95</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: ensure local key matches remote data before syncing (#3474)</title>
<updated>2026-05-12T20:45:02Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@atuin.sh</email>
</author>
<published>2026-05-12T20:45:02Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=8c8730e1d559442832a794c91471bd3a0426e856'/>
<id>urn:sha1:8c8730e1d559442832a794c91471bd3a0426e856</id>
<content type='text'>
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</content>
</entry>
<entry>
<title>feat: Allow authenticating with Atuin Hub (#3237)</title>
<updated>2026-03-11T15:50:17Z</updated>
<author>
<name>Michelle Tilley</name>
<email>michelle@michelletilley.net</email>
</author>
<published>2026-03-11T15:50:17Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=c8fd7d3d8f2c93c24a4a5fc41361dfed8714e73a'/>
<id>urn:sha1:c8fd7d3d8f2c93c24a4a5fc41361dfed8714e73a</id>
<content type='text'>
## 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 &lt;ellie@elliehuxtable.com&gt;</content>
</entry>
<entry>
<title>feat: replace several files with a sqlite db (#3128)</title>
<updated>2026-02-04T21:26:06Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@atuin.sh</email>
</author>
<published>2026-02-04T21:26:06Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=57b542e8ed4335e5f66b5e008d9a8e90776ebffb'/>
<id>urn:sha1:57b542e8ed4335e5f66b5e008d9a8e90776ebffb</id>
<content type='text'>
These files have been known to have corruption issues. SQLite will
perform better across filesystems for reads/writes across threads, and
will lock as expected.

I've also put the session file in there, though I'm 50/50 on it - I'll
be replacing it with keyring storage asap anyway.

The key file is _not_ included. It should ~never be changed, and should
be easy for the user to secure + manage themselves

In the future, instead of creating more files, we can just use this as a
kv store

Resolves https://github.com/atuinsh/atuin/issues/2336, resolves
https://github.com/atuinsh/atuin/issues/1650

## 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>feat: Add a parameter to the sync to specify the download/upload page (#2408)</title>
<updated>2026-02-04T02:25:36Z</updated>
<author>
<name>Matthias Bilger</name>
<email>matthias@bilger.info</email>
</author>
<published>2026-02-04T02:25:36Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=77e816869fb94b44566c3a664231e9ce212092ab'/>
<id>urn:sha1:77e816869fb94b44566c3a664231e9ce212092ab</id>
<content type='text'>
This adds a parameter to change the upload/download page size, this
could help if one gets a '413' in a selfhosted scenario.

## 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

---------

Co-authored-by: Ellie Huxtable &lt;ellie@elliehuxtable.com&gt;</content>
</entry>
<entry>
<title>fix: halt sync loop if server returns an empty page (#3122)</title>
<updated>2026-02-03T06:31:08Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@atuin.sh</email>
</author>
<published>2026-02-03T06:31:08Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=2ec0cb7fa66ea42cd129396f987dc207c6c5d9d4'/>
<id>urn:sha1:2ec0cb7fa66ea42cd129396f987dc207c6c5d9d4</id>
<content type='text'>
We had an issue where the server was returning an empty page, when it
should not, and causing the client to keep looping

While such bugs should not happen, putting the client into a loop does
not help

## 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: clippy warnings I don't have on my version of clippy</title>
<updated>2025-09-10T19:57:43Z</updated>
<author>
<name>Ray Kohler</name>
<email>ataraxia937@ataraxia937.xyz</email>
</author>
<published>2025-08-11T22:14:21Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=e4ababed6a6b4f4f358c9e2d293e9b10a0954d52'/>
<id>urn:sha1:e4ababed6a6b4f4f358c9e2d293e9b10a0954d52</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: run `cargo fmt`</title>
<updated>2025-09-10T19:57:43Z</updated>
<author>
<name>Ray Kohler</name>
<email>ataraxia937@ataraxia937.xyz</email>
</author>
<published>2025-08-11T22:03:40Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=3b8702790b6c74786cdd0cc04c2d89962c1117cb'/>
<id>urn:sha1:3b8702790b6c74786cdd0cc04c2d89962c1117cb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix: clean up new rustc and clippy warnings on Rust 1.89</title>
<updated>2025-09-10T19:57:43Z</updated>
<author>
<name>Ray Kohler</name>
<email>ataraxia937@ataraxia937.xyz</email>
</author>
<published>2025-08-11T20:30:31Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=5af3cd2670c2312ce6821a149ed70ebd1bdf5d01'/>
<id>urn:sha1:5af3cd2670c2312ce6821a149ed70ebd1bdf5d01</id>
<content type='text'>
</content>
</entry>
</feed>
