Commit Graph

23 Commits

Author SHA1 Message Date
cf09464d4d chore(release): prepare for release v18.0.2 (#1775) 2024-02-26 11:37:54 +00:00
1464cb657a chore(release): prepare for release v18.0.1 (#1706) 2024-02-12 08:38:23 +00:00
5738d06282 chore(release): prepare for release v18.0.0 (#1685) 2024-02-09 12:42:34 +00:00
c9a453289e feat: add store push --force
This will

1. Wipe the remote store
2. Upload all of the local store to remote

Imagine the scenario where you end up with some mixed keys locally :(

You confirm this with

```
atuin store verify
```

You then fix it locally with

```
atuin store purge
```

Ensure that your local changes are reflected remotely with

```
atuin store push --force
```

and then (another PR, coming soon), update all other hosts with

```
atuin store pull --force
```
2024-02-02 18:01:09 +00:00
0faf414cd9 feat: Add change-password command & support on server (#1615)
* Add change-password command & support on server

* Add a test for password change

* review: run format

---------

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2024-01-29 11:17:10 +00:00
4b20544474 chore: use resolver 2, update editions + cargo (#1635) 2024-01-26 17:59:06 +00:00
41e8d135a8 chore: schema cleanup (#1522)
The columns referred to in this PR, were for some reason created with
defaults. When created years ago, they were `bigserial` not `bigint`.

The defaults were never actually used, as verified by

1. Checking the value of the sequences on the database
2. Checking the code

So we're safe to clean them up.
2024-01-08 13:43:33 +00:00
7bc6ccdd70 feat: rework record sync for improved reliability (#1478)
* 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
2024-01-05 17:57:49 +00:00
9f79a34a9d chore(release): prepare for release v17.2.1 (#1495) 2024-01-03 15:51:47 +00:00
999a98c577 chore(release): prepare for release v17.2.0 (#1492) 2024-01-03 12:46:08 +00:00
da2e58fbb1 chore(release): prepare for release v17.1.0 (#1432) 2023-12-10 13:00:59 +00:00
2959891f58 Release v17.0.1 (#1354) 2023-10-28 19:19:10 +00:00
0b22d06ad3 Prepare release v17.0.0 (#1327) 2023-10-25 18:06:59 +00:00
b4428c27c6 support timezones in calendar (#1259) 2023-09-29 17:49:38 +01:00
7067d772bc fix sync timestamps (#1258)
* fix timestamp

* add sync test

* skip all sync tests
2023-09-28 18:56:40 -07:00
f90c01f702 replace chrono with time (#806)
* replace chrono with time

* Fix test chrono usage

---------

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2023-09-11 09:26:05 +01:00
aa8e5f5c04 Update dependencies (#1181) 2023-08-18 20:45:29 +00:00
925bf0efaa Fix index tail leak (#1159) 2023-08-09 23:47:31 +01:00
0d5332a87f Prepare release v16.0.0 (#1143)
* Prepare release v16.0.0

* Remove debug output

* Fix kv dupes if the store already exists

* Add limit in frontend as well as sync backend
2023-08-07 11:18:39 +01:00
5d26d3f47a Delete the count cache row when a user is deleted (#1103) 2023-07-14 20:45:10 +01:00
5786155969 Add total history count to the index API (#1102)
Thought it would be fun to collect some cool stats, maybe put them on
atuin.sh.
2023-07-14 20:44:47 +01:00
97e24d0d41 Add new sync (#1093)
* Add record migration

* Add database functions for inserting history

No real tests yet :( I would like to avoid running postgres lol

* Add index handler, use UUIDs not strings

* Fix a bunch of tests, remove Option<Uuid>

* Add tests, all passing

* Working upload sync

* Record downloading works

* Sync download works

* Don't waste requests

* Use a page size for uploads, make it variable later

* Aaaaaand they're encrypted now too

* Add cek

* Allow reading tail across hosts

* Revert "Allow reading tail across hosts"

Not like that

This reverts commit 7b0c72e7e0.

* Handle multiple shards properly

* format

* Format and make clippy happy

* use some fancy types (#1098)

* use some fancy types

* fmt

* Goodbye horrible tuple

* Update atuin-server-postgres/migrations/20230623070418_records.sql

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>

* fmt

* Sort tests too because time sucks

* fix features

---------

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2023-07-14 20:44:08 +01:00
8655c93853 refactor server to allow pluggable db and tracing (#1036)
* refactor server to allow pluggable db and tracing

* clean up

* fix descriptions

* remove dependencies
2023-06-12 09:04:35 +01:00