<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atuin/atuin-client/src/history.rs, 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/atuin-client/src/history.rs?h=main</id>
<link rel='self' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/atom/atuin-client/src/history.rs?h=main'/>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/'/>
<updated>2024-04-18T15:41:28Z</updated>
<entry>
<title>chore: move crates into crates/ dir (#1958)</title>
<updated>2024-04-18T15:41:28Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2024-04-18T15:41:28Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=95cc472037fcb3207b510e67f1a44af4e2a2cae9'/>
<id>urn:sha1:95cc472037fcb3207b510e67f1a44af4e2a2cae9</id>
<content type='text'>
I'd like to tidy up the root a little, and it's nice to have all the
rust crates in one place</content>
</entry>
<entry>
<title>feat(gui): work on home page, sort state (#1956)</title>
<updated>2024-04-17T13:06:05Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2024-04-17T13:06:05Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=cb19925011d889c513e1bbedc446e399597e38a0'/>
<id>urn:sha1:cb19925011d889c513e1bbedc446e399597e38a0</id>
<content type='text'>
1. Start on a home page, can sort onboarding/etc from there
2. Introduce zustand for state management. It's nice!

Did a production build and clicked around for a while. Memory usage
seems nice and chill.</content>
</entry>
<entry>
<title>fix(build): make atuin compile on non-win/mac/linux platforms (#1825)</title>
<updated>2024-03-05T09:49:40Z</updated>
<author>
<name>Rain</name>
<email>rain@sunshowers.io</email>
</author>
<published>2024-03-05T09:49:40Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=95e9530dad098e69de560a3f4d198b5c05cc53ba'/>
<id>urn:sha1:95e9530dad098e69de560a3f4d198b5c05cc53ba</id>
<content type='text'>
Hi!

I've been trying to get atuin set up on the illumos machine I built for work
@oxidecomputer, and I ran into a few issues which are fixed here:

1. The `clipboard` feature was only supported on Windows, Mac and Linux. I've
   added a platform gate for that.
2. The `atomic-write-file` crate needed an update to the version of `nix` --
   that is included.
3. As part of this, I found a [security
   bug](https://rustsec.org/advisories/RUSTSEC-2024-0020.html) in the whoami
   crate. The bug has been fixed upstream and I've included it.

   whoami 1.5.0 deprecates the `hostname` function, which produced some fresh
   warnings. While fixing the warnings I also took the liberty of doing some
   code rearrangement, adding a few functions that wrap some common operations. I
   didn't really know where to put those functions, so I created a new `utils`
   module for it. If you have a better place to put them, I'm happy to change
   the PR.

Feel free to make any changes to this PR if you like before landing it, or to
ask for review.

As a followup I'm also happy to set up a cross-compile build for atuin on
illumos. It's a bit harder to run tests in CI for illumos at the moment, but
I'm trying to get a project started up to make that happen in the future as
well.</content>
</entry>
<entry>
<title>fix(tests): add Settings::utc() for utc settings (#1677)</title>
<updated>2024-02-06T17:47:00Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2024-02-06T17:47:00Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=199365310248eecedf8fbad579fc0cdc2e47bbe7'/>
<id>urn:sha1:199365310248eecedf8fbad579fc0cdc2e47bbe7</id>
<content type='text'>
Means we don't try and load timezones in tests, as this fails due to
multiple threads.

Also allow specifying '0' or 'utc' as a timezone</content>
</entry>
<entry>
<title>feat: Add interactive command inspector (#1296)</title>
<updated>2024-01-12T16:02:08Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2024-01-12T16:02:08Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=99249ea319fca96ace8f3f4962534dc7a4bc5923'/>
<id>urn:sha1:99249ea319fca96ace8f3f4962534dc7a4bc5923</id>
<content type='text'>
* Begin work on command inspector

This is a separate pane in the interactive mode that allows for
exploration and inspecting of specific commands.

I've restructured things a bit. It made logical sense that things
were nested under commands, however the whole point of `atuin` is to
provide commands. Breaking things out like this enables a bit less
crazy nesting as we add more functionality to things like interactive
search. I'd like to add a few more interactive things and it was
starting to feel very cluttered

* Some vague tab things

* functioning inspector with stats

* add interactive delete to inspector

* things

* clippy

* borders

* sus

* revert restructure for another pr

* Revert "sus"

This reverts commit d4bae8cf614d93b728621f7985cf4e387b6dc113.</content>
</entry>
<entry>
<title>refactor: String -&gt; HistoryId (#1512)</title>
<updated>2024-01-06T17:19:31Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2024-01-06T17:19:31Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=4e56f5a41e5224b816e9eafed145a03cbf52fd93'/>
<id>urn:sha1:4e56f5a41e5224b816e9eafed145a03cbf52fd93</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: rework record sync for improved reliability (#1478)</title>
<updated>2024-01-05T17:57:49Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2024-01-05T17:57:49Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=7bc6ccdd70422f8fc763e2fd814a481bc79ce7b5'/>
<id>urn:sha1:7bc6ccdd70422f8fc763e2fd814a481bc79ce7b5</id>
<content type='text'>
* feat: rework record sync for improved reliability

So, to tell a story

1. We introduced the record sync, intended to be the new algorithm to
   sync history.
2. On top of this, I added the KV store. This was intended as a simple
   test of the record sync, and to see if people wanted that sort of
   functionality
3. History remained syncing via the old means, as while it had issues it
   worked more-or-less OK. And we are aware of its flaws
4. If KV syncing worked ok, history would be moved across

KV syncing ran ok for 6mo or so, so I started to move across history.
For several weeks, I ran a local fork of Atuin + the server that synced
via records instead.

The record store maintained ordering via a linked list, which was a
mistake. It performed well in testing, but was really difficult to debug
and reason about. So when a few small sync issues occured, they took an
extremely long time to debug.

This PR is huge, which I regret. It involves replacing the "parent"
relationship that records once had (pointing to the previous record)
with a simple index (generally referred to as idx). This also means we
had to change the recordindex, which referenced "tails". Tails were the
last item in the chain.

Now that we use an "array" vs linked list, that logic was also replaced.
And is much simpler :D

Same for the queries that act on this data.

----

This isn't final - we still need to add

1. Proper server/client error handling, which has been lacking for a
   while
2. The actual history implementation on top
    This exists in a branch, just without deletions. Won't be much to
    add that, I just don't want to make this any larger than it already
    is

The _only_ caveat here is that we basically lose data synced via the old
record store. This is the KV data from before.

It hasn't been deleted or anything, just no longer hooked up. So it's
totally possible to write a migration script. I just need to do that.

* update .gitignore

* use correct endpoint

* fix for stores with length of 1

* use create/delete enum for history store

* lint, remove unneeded host_id

* remove prints

* add command to import old history

* add enable/disable switch for record sync

* add record sync to auto sync

* satisfy the almighty clippy

* remove file that I did not mean to commit

* feedback</content>
</entry>
<entry>
<title>handle missing entries (fixes #1236) (#1253)</title>
<updated>2023-09-26T13:52:45Z</updated>
<author>
<name>Conrad Ludgate</name>
<email>conradludgate@gmail.com</email>
</author>
<published>2023-09-26T13:52:45Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=fc1a48a4f204dfe77bd8d4f82cfb3e64ade9d028'/>
<id>urn:sha1:fc1a48a4f204dfe77bd8d4f82cfb3e64ade9d028</id>
<content type='text'>
* fix #1236

* lints</content>
</entry>
<entry>
<title>replace chrono with time (#806)</title>
<updated>2023-09-11T08:26:05Z</updated>
<author>
<name>Conrad Ludgate</name>
<email>conradludgate@gmail.com</email>
</author>
<published>2023-09-11T08:26:05Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=f90c01f702f6a98b041f766b6a1d857bc1b9afef'/>
<id>urn:sha1:f90c01f702f6a98b041f766b6a1d857bc1b9afef</id>
<content type='text'>
* replace chrono with time

* Fix test chrono usage

---------

Co-authored-by: Ellie Huxtable &lt;ellie@elliehuxtable.com&gt;</content>
</entry>
<entry>
<title>Automatically filter out secrets (#1182)</title>
<updated>2023-08-19T11:28:39Z</updated>
<author>
<name>Ellie Huxtable</name>
<email>ellie@elliehuxtable.com</email>
</author>
<published>2023-08-19T11:28:39Z</published>
<link rel='alternate' type='text/html' href='http://git.foss-syndicate.org/bpeetz/forks/atuin/commit/?id=73bd8015c3ba50ceb5168a8b67bb1ac5d3b48dc1'/>
<id>urn:sha1:73bd8015c3ba50ceb5168a8b67bb1ac5d3b48dc1</id>
<content type='text'>
I'd like to extend the regex list here very soon, but start off by
automatically filtering out secrets. Do not store them in history!

I've included regex for:

1. AWS key id
2. Github pat (old and new)
3. Slack oauth tokens (bot, user)
4. Slack webhooks
5. Stripe live/test keys

Will need updating after #806</content>
</entry>
</feed>
