Commit Graph

175 Commits

Author SHA1 Message Date
Remo Senekowitsch
9fa223eaaf
chore(build): compile protobufs with protox (#2122)
* chore(build): compile protobufs with protox

protox is a pure-rust implementation of the protobuf compiler.
Therefore, it can be managed by cargo.

This removes the implicit dependency on protoc being available
in the environment for the build.

* fix(build): replace copypasta in build script

The paths passed to `compile` aren't actually used by the build.
`skip_protoc_run` prevents that.
That's why a clean build succeeds even with this mistake.

However, the paths are passed to a `cargo:rerun-if-changed` directive.
So this mistake would've caused a failed incremental build if the
protobuf definitions were changed.
2024-06-12 16:45:38 +01:00
Ellie Huxtable
9be49e434e
chore(release): prepare for release v18.3.0 (#2105)
* chore(release): prepare for release v18.3.0

* build full release

* Revert "build full release"

This reverts commit 65e7718b51.
2024-06-10 14:42:32 +01:00
Ellie Huxtable
c102851e29
chore(release): v18.3.0-prerelease.1 (#2090)
* chore(release): v18.3.0-prerelease.1

* update contributors

* changelog, plan only on prs
2024-06-05 14:56:10 +01:00
Ellie Huxtable
7ec002ba44
chore: switch to cargo dist for releases (#2085)
* chore: switch to cargo dist for releases

From https://axo.dev

cargo-dist handles building releases far better than we can, and do so
for several large projects now.

We will need to change our install script to use the cargo-dist
installer.

Historically, we have used the system package manager wherever possible.
Once switched to the new installer, this will no longer be the case. If
the user wishes to use their package manager, and Atuin is maintained
there, then they can choose to do so.

This way, we can ensure that users are running a known build, can easily
uninstall (just delete the atuin dir), easily update, etc. Builds will
use our lockfile, and can have their checksum verified. Later, I'd like
to introduce build signing.

As Axo are focused on release engineering, they will likely have
resolved many more issues than we have - libc versions, etc.

I'm not particularly happy with our response of "just use your package
manager", as many users seem to have difficulty there. It's unclear what
our installer has done, as this behaviour varies massively across
systems. It's also unclear how some package maintainers may have patched
things

I'm hoping that some better release tooling will lead to more confidence
in the process, and therefore more frequent releases.

Uninstall clarity: #111, #372, #640, #1485, #1546, #2049, #1529

* config

* add protobuf

* test build

* use native arm mac

* lol

* add toolchain

* use 1.78, 2vcpu

* nix flake update

* 1.77
2024-06-05 13:25:01 +01:00
Xavier Vello
5f2cc51dd1
chore(deps): raise MSRV to 1.74 to match dependencies (#2069)
* chore(deps): raise MSRV to 1.74 to match dependencies

* Update Cargo.toml
2024-06-03 11:04:40 +01:00
Cristian Le
c694a0a67f
chore(deps): relax sqlx and argon2 dependencies (#2065)
* Bump sqlx dependency

* Relax dependencies for Fedora
2024-05-31 09:44:55 +01:00
dependabot[bot]
43fb9ca745
chore(deps): bump uuid from 1.7.0 to 1.8.0 (#2047)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-28 07:57:12 +01:00
Nemo157
2e88321aec
feat: support systemd socket activation for daemon (#2039)
This avoids issues with clients attempting to connect to the daemon
while it's starting, systemd creates the socket early and will queue
connections up until the daemon is ready to accept them.
2024-05-25 13:03:55 +01:00
dependabot[bot]
ec98f1456d
chore(deps): bump serde from 1.0.197 to 1.0.202 (#2034)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.197 to 1.0.202.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.197...v1.0.202)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 09:49:00 +07:00
dependabot[bot]
7672286814
chore(deps): bump base64 from 0.21.7 to 0.22.1 (#2017)
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.21.7 to 0.22.1.
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.21.7...v0.22.1)

---
updated-dependencies:
- dependency-name: base64
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 10:07:20 +07:00
dependabot[bot]
b7f55a7110
chore(deps): bump clap from 4.5.1 to 4.5.4 (#2019)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.1 to 4.5.4.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.1...v4.5.4)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-14 10:07:09 +07:00
Ellie Huxtable
bce0faa1c2
feat: add background daemon (#2006)
* init daemon crate

* wip

* minimal functioning daemon, needs cleanup for sure

* better errors

* add signal cleanup

* logging

* things

* add sync worker

* move daemon crate

* 30s -> 5mins

* make clippy happy

* fix stuff maybe?

* fmt

* trim packages

* rate limit fix

* more protoc huh

* this makes no sense, why linux why

* can it install literally just curl

* windows in ci is slow, and all the newer things will not work there. disable the daemon feature and it will build

* add daemon feature

* maybe this

* ok wut where is protoc

* try setting protoc

* hm

* try copying protoc

* remove optional

* add cross config

* idk nix

* does nix want this?

* some random pkg I found does this

* uh oh

* hack, be gone!

* update contributing
2024-05-08 12:09:04 +01:00
dependabot[bot]
dd751873d5
chore(deps): bump serde_json from 1.0.115 to 1.0.116 (#2003)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.115 to 1.0.116.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.115...v1.0.116)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 08:09:24 +01:00
Ellie Huxtable
0639ff4960
fix(dotfiles): allow clearing aliases, disable import (#1995)
* fix(dotfiles): allow clearing aliases, disable import

At the moment there are far too many edge cases to handle importing
aliases.

1. We need an interactive shell to print aliases. Without it, most
   shells won't report much.
2. Many people have their shells print things on startup (graphics,
   fortunes, etc). This could be detected as an attempt to set an alias.

 Rather than spend the next year finding import edge cases, I'm
 disabling it for now. There's probably a better way we can do this?

* clippy
2024-05-02 16:53:38 +01:00
dependabot[bot]
150bcb8eb8
chore(deps): bump rustix from 0.38.32 to 0.38.34 (#1986)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.32 to 0.38.34.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.32...v0.38.34)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-29 08:34:00 +01:00
dependabot[bot]
a5e9c27e74
chore(deps): bump typed-builder from 0.18.1 to 0.18.2 (#1967)
Bumps [typed-builder](https://github.com/idanarye/rust-typed-builder) from 0.18.1 to 0.18.2.
- [Changelog](https://github.com/idanarye/rust-typed-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/idanarye/rust-typed-builder/commits)

---
updated-dependencies:
- dependency-name: typed-builder
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-26 12:18:53 +01:00
Ellie Huxtable
95cc472037
chore: move crates into crates/ dir (#1958)
I'd like to tidy up the root a little, and it's nice to have all the
rust crates in one place
2024-04-18 16:41:28 +01:00
Ellie Huxtable
a0231a7095
chore(release): prepare for release v18.2.0 (#1950)
* chore(release): prepare for release v18.2.0

* disable codespell for the changelog
2024-04-15 10:37:28 +01:00
Ellie Huxtable
d434d4e8b7
chore(gui): cargo update (#1943)
* chore(gui): cargo update

* also fix workspace
2024-04-11 17:06:37 +01:00
Ellie Huxtable
6cd4319fcf
feat(gui): add base structure (#1935)
* initial

* ui things

* cargo

* update, add history refresh button

* history page a bit better, add initial dotfiles page

* re-org layout

* bye squigglies

* add dotfiles ui, show aliases

* add default shell detection

* put stats in a little drawer, alias import changes

* use new table for aliases, add alias deleting

* support adding aliases

* close drawer when added, no alias autocomplete

* clippy, format

* attempt to ensure gdk is installed ok

* sudo

* no linux things on mac ffs

* I forgot we build for windows too... end of day

* remove tauri backend from workspace
2024-04-11 16:59:01 +01:00
dependabot[bot]
dc2d0be098
chore(deps): bump whoami from 1.5.0 to 1.5.1 (#1851)
Bumps [whoami](https://github.com/ardaku/whoami) from 1.5.0 to 1.5.1.
- [Changelog](https://github.com/ardaku/whoami/blob/v1/CHANGELOG.md)
- [Commits](https://github.com/ardaku/whoami/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: whoami
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 15:28:46 +00:00
Ellie Huxtable
74182aad42
chore(release): prepare for release v18.1.0 (#1854) 2024-03-11 14:33:03 +00:00
Ellie Huxtable
a5e1d25287
refactor: rename atuin-config to atuin-dotfiles (#1817) 2024-03-04 15:49:28 +00:00
Remmy Cat Stock
5f0e6dd307
feat(nushell): add nushell completion generation (#1791) 2024-02-29 11:08:32 +00:00
Ellie Huxtable
cf09464d4d
chore(release): prepare for release v18.0.2 (#1775) 2024-02-26 11:37:54 +00:00
Ellie Huxtable
20f3296468
feat: support syncing aliases (#1721)
* feat: support syncing aliases

This is definitely not yet finished, but works for zsh right now.

TODO:

1. Support other shells
2. Cache the alias generation, so we don't have to do a bunch of work at
   shell init time

* correct imports

* fix clippy errors

* fix tests

* add the other shells

* support xonsh

* add delete

* update rust, then make clippy happy once more

* omfg fmt too
2024-02-15 19:07:08 +00:00
Ellie Huxtable
1464cb657a
chore(release): prepare for release v18.0.1 (#1706) 2024-02-12 08:38:23 +00:00
Ellie Huxtable
5738d06282
chore(release): prepare for release v18.0.0 (#1685) 2024-02-09 12:42:34 +00:00
Ellie Huxtable
a6f1fe2c10
feat: reencrypt/rekey local store (#1662)
* feat: add record re-encrypting

* automatically re-encrypt store when logging in with a different key

* fix

* actually save the new key lmao

* add rekey

* save new key

* decode bip key

* "add test for sqlite store re encrypt"
2024-02-01 15:00:46 +00:00
Ellie Huxtable
4b20544474
chore: use resolver 2, update editions + cargo (#1635) 2024-01-26 17:59:06 +00:00
dependabot[bot]
4192fd88c2
chore(deps): bump rustix from 0.38.28 to 0.38.30 (#1566)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.28 to 0.38.30.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.28...v0.38.30)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-17 19:49:06 +00:00
Ellie Huxtable
4d41a741f0
fix(perm): set umask 077 (#1554)
This ensures no other user can read shell history data

Resolves #1250
2024-01-12 18:52:39 +00:00
Ellie Huxtable
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
Ellie Huxtable
9f79a34a9d
chore(release): prepare for release v17.2.1 (#1495) 2024-01-03 15:51:47 +00:00
Ellie Huxtable
999a98c577
chore(release): prepare for release v17.2.0 (#1492) 2024-01-03 12:46:08 +00:00
Conrad Ludgate
7aeea1c050
chore(deps): uuidv7 stable (#1451) 2023-12-16 19:21:04 +00:00
Conrad Ludgate
ec131c7c96
update basically everything (#1452) 2023-12-16 19:20:40 +00:00
Ellie Huxtable
da2e58fbb1
chore(release): prepare for release v17.1.0 (#1432) 2023-12-10 13:00:59 +00:00
dependabot[bot]
5ce2a4a677
Bump serde_json from 1.0.107 to 1.0.108 (#1363)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.107 to 1.0.108.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.107...v1.0.108)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-09 17:40:22 +00:00
Ellie Huxtable
e55b34b816
chore: update to sqlx 0.7.3 (#1416) 2023-11-29 09:30:34 +00:00
Ellie Huxtable
2959891f58
Release v17.0.1 (#1354) 2023-10-28 19:19:10 +00:00
Ellie Huxtable
0b22d06ad3
Prepare release v17.0.0 (#1327) 2023-10-25 18:06:59 +00:00
dependabot[bot]
ad6cae4dac
Bump semver from 1.0.18 to 1.0.20 (#1299)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.18 to 1.0.20.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.18...1.0.20)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-17 15:39:47 -07:00
dependabot[bot]
b87159d990
Bump itertools from 0.10.5 to 0.11.0 (#1223)
Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.10.5 to 0.11.0.
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/compare/v0.10.5...v0.11.0)

---
updated-dependencies:
- dependency-name: itertools
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 08:44:19 +01:00
Conrad Ludgate
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
Conrad Ludgate
aa8e5f5c04
Update dependencies (#1181) 2023-08-18 20:45:29 +00:00
Ellie Huxtable
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
Ellie Huxtable
1fb7caa2d6
Move all references to the old repo (#1132)
The repo now lives on an org! Move all references to the old path.
2023-07-30 23:08:00 +01:00
dependabot[bot]
d151f8fd6d
Bump serde_json from 1.0.86 to 1.0.99 (#1075)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.86 to 1.0.99.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.86...v1.0.99)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-27 08:53:55 +01:00
Ellie Huxtable
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