Commit Graph

38 Commits

Author SHA1 Message Date
Ellie Huxtable
86f50e0356
feat: add semver checking to client requests (#1456)
* feat: add semver checking to client requests

This enforces that the client and the server run the same major version
in order to sync successfully.

We're using the `Atuin-Version` http header to transfer this information

If the user is not on the same MAJOR, then they will see an error like
this

> Atuin version mismatch! In order to successfully sync, the client and the server must run the same *major* version
> Client: 17.1.0
> Server: 18.1.0
> Error: could not sync records due to version mismatch

This change means two things

1. We will now only increment major versions if there is a breaking
   change for sync
2. We can now add breaking changes to sync, for any version >17.1.0.
   Clients will fail in a meaningful way.

* lint, fmt, etc

* only check for client newer than server

* Add version header to client too
2023-12-20 09:03:04 +00: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
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
Conrad Ludgate
6c53242b64
record encryption (#1058)
* record encryption

* move paserk impl

* implicit assertions

* move wrapped cek

* add another test

* use host

* undo stray change

* more tests and docs

* fmt

* Update atuin-client/src/record/encryption.rs

Co-authored-by: Matteo Martellini <matteo@mercxry.me>

* Update atuin-client/src/record/encryption.rs

Co-authored-by: Matteo Martellini <matteo@mercxry.me>

* typo

---------

Co-authored-by: Matteo Martellini <matteo@mercxry.me>
2023-06-26 07:52:37 +01:00
Ellie Huxtable
9558fec211
Add RecordIndex data structure (#1059)
* Add RecordIndex data structure

This allows us to compare two sets of record stores, and return a list
of diffs.

With these diffs, we should be able to sync the two stores

* Remove server handler, will follow up with this

* Make clippy happy

* Add tests and docs for diffs in both directions

* Update atuin-common/src/record.rs

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

---------

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2023-06-19 09:02:15 +01:00
Ellie Huxtable
ae1709dafd
Key values (#1038)
* wip

* Start testing

* Store host IDs, not hostnames

Why? Hostnames can change a lot, and therefore host filtering can be
funky. Really, all we want is a unique ID per machine + do not care what
it might be.

* Mostly just write a fuckload of tests

* Add a v0 kv store I can push to

* Appending works

* Add next() and iterate, test the pointer chain

* Fix sig

* Make clippy happy and thaw the ICE

* Fix tests'

* Fix tests

* typed builder and cleaner db trait

---------

Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2023-06-14 21:18:24 +01:00
Vladislav Stepanov
c05d285042
Workspace reorder (#868)
* Try different workspace structure

Move main crate (atuin) to be on the same level with other crates in
this workspace

* extract common dependencies to the workspace definition

* fix base64 v0.21 deprecation warning

* questionable: update deps & fix chrono deprecations

possible panic sites are unchanged, they're just more visible now

* Revert "questionable: update deps & fix chrono deprecations"

This reverts commit 993e60f8de.
2023-04-14 20:18:58 +01:00
Ellie Huxtable
03dd3ddf8b
Switch to uuidv7 (#864)
* Add uuid_v7

* Actually use the new uuid

* Add a test to ensure all uuids are unique, even in a tight loop

* Make clippy happy
2023-04-11 16:26:16 +01:00
Ellie Huxtable
4e4fdb9f8e
Release Atuin v14 (#836)
* Bump versions

* Write release notes

* add link
2023-04-01 18:17:38 +01:00
Ellie Huxtable
e4fde80acc
Patch release v13.0.1 (#741)
* Patch release v13.0.1

* Update blog post
2023-02-28 21:44:39 +00:00
Ellie Huxtable
fe5f728aa6
Release v13 (#727)
* Write release blog post

* Bump versions

* Update contributors
2023-02-26 21:22:29 +00:00
Ellie Huxtable
f38ef12581
Release v12 (#599)
* Release v12

* Add new contributors
2022-11-06 15:30:21 +00:00
Conrad Ludgate
990040e150
rollup of 5 dependency commits (#562)
* Bump sha2 from 0.10.5 to 0.10.6

Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.5 to 0.10.6.
- [Release notes](https://github.com/RustCrypto/hashes/releases)
- [Commits](https://github.com/RustCrypto/hashes/compare/sha2-v0.10.5...sha2-v0.10.6)

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

Signed-off-by: dependabot[bot] <support@github.com>

* Bump uuid from 1.1.2 to 1.2.1

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.1.2 to 1.2.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.1.2...1.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>

* Bump serde_json from 1.0.85 to 1.0.86

Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.85 to 1.0.86.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.85...v1.0.86)

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

Signed-off-by: dependabot[bot] <support@github.com>

* Bump itertools from 0.10.4 to 0.10.5

Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.10.4 to 0.10.5.
- [Release notes](https://github.com/rust-itertools/itertools/releases)
- [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-itertools/itertools/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>

* Bump serde from 1.0.144 to 1.0.145

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.144 to 1.0.145.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.144...v1.0.145)

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

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-14 13:33:14 +01:00
Ellie Huxtable
41eed3f6a1
Release v11 (#529) 2022-09-13 19:03:52 +00:00
Ellie Huxtable
fab8d8590f
Release v0.10.0 (#440)
06ac9587 Show current version on server index (#436)
706b1aff Disable ARM docker builds (#438)
f2abc23a Update README.md
3c2b0550 Noyez fix dir hostname utf8 (#430)
3f5350de [feature] Add scroll wheel support to interactive history search (#435)
dcdde225 Fix text outline for dark mode
9ac0c60c Implement cursor (#412)
119ab9e0 Adds password prompt for register and login (#424)
e5df809d Noyez zsh histdb import (#393)
b08e2543 Improve default fish keybindings (#420)
4096c6ee Update README.md
cd2a3ab7 Add fish shell to key binding docs (#418)
b2782110 Bump clap_complete from 3.1.3 to 3.1.4 (#397)
ee66c0a1 Bump axum from 0.5.5 to 0.5.6 (#415)
4297e263 Bump tokio from 1.18.1 to 1.18.2 (#396)
dbd9ca53 Bump clap from 3.1.16 to 3.1.18 (#401)
a7c9d19d Bump tower-http from 0.3.2 to 0.3.3 (#399)
3b79f686 Bump axum from 0.5.4 to 0.5.5 (#402)
f3407710 Cleanup dependencies – disable unnecessary or unused features (#407)
ab294cde Don't pollute shell environment - remove 'id' variable (#408)
14b30606 Allow to build atuin server without client (#404)
5e4e8d11 Don't create config dir for server in default location if not needed (#406)
b7946cc9 Update Chinese version README.md (#403)
e0291f67 Update README.md
301190e4 Build ARM docker image in GitHub Actions using QEMU (#400)
1d030b9d Importer V3 (#395)
d3a4ff95 Bump clap from 3.1.15 to 3.1.16 (#392)
e9d2ec4b Add ctrl-k and ctrl-j for up and down (#394)
25afb5b2 Bump serde_json from 1.0.80 to 1.0.81 (#387)
4a839dab Adds stats summary  (#384)
7a394b01 Bump serde from 1.0.136 to 1.0.137 (#375)
edd3f812 Bump clap_complete from 3.1.2 to 3.1.3 (#377)
d85d03d9 Bump log from 0.4.16 to 0.4.17 (#382)
dc3b7ef5 Bump tokio from 1.18.0 to 1.18.1 (#383)
12440c1c Bump serde_json from 1.0.79 to 1.0.80 (#376)
731042f4 Bump tower-http from 0.3.1 to 0.3.2 (#378)
82505e61 Bump clap from 3.1.12 to 3.1.15 (#381)
e05c19d0 Add Chinese documentation translation & Fix spelling mistakes (#373)
6e280e25 Add Russian documentation translation (#365)
40efdd11 Bump http from 0.2.6 to 0.2.7 (#368)
8bc5becc Bump tower-http from 0.3.0 to 0.3.1 (#367)
172ac8db Create FUNDING.yml
7cdd00b5 Bump tokio from 1.17.0 to 1.18.0 (#357)
9d2e9ea1 Search: Allow specifiying the limited of returned entries (#364)
93ab4e78 ignore JetBrains IDEs, tidy-up imports (#348)
2cb4cb39 Bump axum from 0.5.3 to 0.5.4 (#355)
796644e2 Add created_at column to users (#354)
f8233bcb SQLx cannot run this migration OK (#353)
d8ef5dd9 fix db range query (#351)
5926ea64 fix import auto for bash (#352)
43d299fd bump tui (#346)
8ac6571b Remove all select * from the server queries (#347)
4030de4b Add btree index on history table (#345)
b692e0ce Bump tower-http from 0.2.5 to 0.3.0 (#343)
3680f4ac Bump clap from 3.1.11 to 3.1.12 (#342)
7f5310a1 history list (#340)
2022-06-06 10:16:45 +01:00
dependabot[bot]
7a394b0115
Bump serde from 1.0.136 to 1.0.137 (#375)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.136 to 1.0.137.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.136...v1.0.137)

---
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>
2022-05-03 07:59:12 +01:00
Conrad Ludgate
7f5310a1aa
history list (#340) 2022-04-25 07:13:30 +01:00
Ellie Huxtable
2fd9651dea
Release v0.9.1 (#338)
a050faa Use `--locked` flag for CI builds (#337)
8737474 Update Cargo.lock (#336)
eab1dbf sql builder (#333)

Fixed to include an updated lockfile that was missed in the last release

Thank you for the rapid report @orhun!
2022-04-23 21:49:11 +01:00
Ellie Huxtable
22a7d8866b
Release v0.9.0 (#334)
89549b3 Bump uuid from 0.8.2 to 1.0.0 (#311)
831cc98 Fix typos in the docs. (#171)
7436e4f feature-flags (#328)
508d4f4 History filter (#329)
02c70de refactor (#327)
a9d1ece Added docker-compose.yml (#325)
b8bdd83 Bump clap from 3.1.10 to 3.1.11 (#323)
52a3d0c Bump tracing from 0.1.33 to 0.1.34 (#324)
79597b0 Bump clap_complete from 3.1.1 to 3.1.2 (#316)
5aca611 Allow for larger commands (#321)
9085485 tracing (#315)
98d70fb treat popos as ubuntu (#319)
d57f549 refactor commands for better separation (#313)
24e2971 Fix SQL cache query (#318)
fe05d86 Fix delete trigger (#317)
48747e3 A few minor tweaks (#314)
ed4e07d Use the count cache (#312)
6e11b8e Bump clap from 3.1.9 to 3.1.10 (#309)
44e417d Bump axum from 0.5.1 to 0.5.3 (#310)
b98a378 Add count trigger (#308)
7fe523a Bump sqlx from 0.5.11 to 0.5.13 (#305)
c5ab2a4 Bump clap from 3.1.8 to 3.1.9 (#306)
55f66c8 Bump cli-table from 0.4.6 to 0.4.7 (#297)
69279d2 Bump config from 0.13.0 to 0.13.1 (#303)
d94cdae README: add MacPorts installation instructions (#302)
f4240aa Initial implementation of calendar API (#298)
3c5fbc5 provide better error messages (#300)
bc45bab remove default db uri (#299)
4897f4a Bump rmp-serde from 0.15.5 to 1.0.0 (#264)
5b2e828 Bump directories from 3.0.2 to 4.0.1 (#246)
016386c Bump urlencoding from 1.3.3 to 2.1.0 (#208)
a95018c goodbye warp, hello axum (#296)
3b7ed7c fix env config parsing (#295)
2022-04-23 18:24:53 +01:00
dependabot[bot]
89549b367b
Bump uuid from 0.8.2 to 1.0.0 (#311)
* Bump uuid from 0.8.2 to 1.0.0

Bumps [uuid](https://github.com/uuid-rs/uuid) from 0.8.2 to 1.0.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/0.8.2...1.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>

* patch

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2022-04-22 21:38:37 +01:00
Conrad Ludgate
02c70deecb
refactor (#327) 2022-04-22 19:24:38 +01:00
Conrad Ludgate
a95018cc90
goodbye warp, hello axum (#296) 2022-04-12 23:06:19 +01:00
Ellie Huxtable
ac0d29f6dc
Release v0.8.1 (#291)
f861893 Update to clap 3.1.x (#289)
e8f7aac Add compact mode (#288)
1e04c4c Add rust-version to Cargo.toml (#287)
222e52b Update Dockerfile
fae118a Improve fuzzy search (#279)
7cde55a Add code of conduct (#281)
d270798 Update config-rs (#280)
3248883 Update README.md
7f58741 Fix `history list --cwd` errors (#278)
e117b62 Update fish bindings. (#265)
4223ac6 Restore bash 4.2 compatibility, only add hook once (#271)
7651f89 Add support for blesh  (#267)
c2dd332 fix: get install.sh working on UbuntuWSL (#260)
84403a3 Bump reqwest from 0.11.7 to 0.11.9 (#261)
5005cf7 Bump serde_json from 1.0.73 to 1.0.75 (#262)
7fa3e1c Do not crash if the history timestamp is in the future (#250)
8d21506 use sqlite grouping rather than subquery (#181)
d36ff13 Replace dpkg with apt (#248)
2022-04-12 09:32:19 +01:00
Lucas Burns
7f587418da
Fix history list --cwd errors (#278) 2022-03-13 19:53:49 +00:00
dependabot[bot]
5005cf70c3
Bump serde_json from 1.0.73 to 1.0.75 (#262)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.73 to 1.0.75.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.73...v1.0.75)

---
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>
2022-01-18 23:01:09 +00:00
Ellie
88b2651ba4
Release 0.8.0 (#245) 2021-12-17 19:00:08 +00:00
dependabot[bot]
6daaeb22b0
Bump serde_json from 1.0.64 to 1.0.72 (#219)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.64 to 1.0.72.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.64...v1.0.72)

---
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>
2021-12-11 00:23:54 +00:00
Ellie
6a38f17ead
Release v0.7.2 (#222)
* Release v0.7.2

* Update CHANGELOG.md
2021-12-08 12:25:49 +00:00
dependabot[bot]
e2c0605207
Bump rmp-serde from 0.15.4 to 0.15.5 (#149)
Bumps [rmp-serde](https://github.com/3Hren/msgpack-rust) from 0.15.4 to 0.15.5.
- [Release notes](https://github.com/3Hren/msgpack-rust/releases)
- [Commits](https://github.com/3Hren/msgpack-rust/commits)

---
updated-dependencies:
- dependency-name: rmp-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>
2021-11-17 11:51:44 +00:00
dependabot[bot]
87c9f61e27
Bump serde from 1.0.125 to 1.0.126 (#124)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.125 to 1.0.126.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.125...v1.0.126)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-14 22:34:48 +01:00
Ellie Huxtable
4286f65b01
Release v0.7.1 (#108) 2021-05-10 21:31:41 +00:00
Ellie Huxtable
d3059af815
Release v0.7.0 (#103)
* Release v0.7.0

- Update all the crate versions
- Update the demo gif
- Write a changelog
- Adjust the title of the search screen (has the old name still)
- Adjust the colours of the quick-jump numbers (sadly invisible on some
  colour schemes as dark grey :/)

* Update README, default config file, docs

* Link usernames

* Trigger release workflow upon release creation, as well as tags
2021-05-10 21:28:07 +01:00
Ellie Huxtable
0610ae197f
Pre release polishing (#42)
* Improve readme

* Add demo gif

* Update readme

* Add mac build

* Amend release config

* Update gif
2021-04-26 13:25:57 +00:00
Ellie Huxtable
4210e8de5a Add to Cargo.toml 2021-04-21 21:32:21 +01:00
Ellie Huxtable
d63b0110ea Bump to 0.6.1
Includes latest bugfixes and performance improvements

atuin@0.6.1
atuin-client@0.6.1
atuin-common@0.6.1
atuin-server@0.6.1
2021-04-21 21:28:10 +01:00
Ellie Huxtable
ead33664bd Release 0.6.0
atuin@0.6.0
atuin-client@0.6.0
atuin-common@0.6.0
atuin-server@0.6.0

Generated by cargo-workspaces
2021-04-20 22:01:46 +01:00
Ellie Huxtable
053ac5eacb Update versions to match 2021-04-20 21:59:54 +01:00
Ellie Huxtable
a21737e2b7
Use cargo workspaces (#37)
* Switch to Cargo workspaces

Breaking things into "client", "server" and "common" makes managing the
codebase much easier!

client - anything running on a user's machine for adding history
server - handles storing/syncing history and running a HTTP server
common - request/response API definitions, common utils, etc

* Update dockerfile
2021-04-20 20:53:07 +00:00