Commit graph

34 commits

Author SHA1 Message Date
Ellie Huxtable
08a01e037c
Add bash support to enter_accept (#1316) 2023-10-21 12:34:23 +01:00
Ellie Huxtable
2f9df9350d
Add fish support for enter_accept (#1315)
* Add fish support for `enter_accept`

Also fixes shell detection. Who trusted me to write jetlagged code last
night huh?

* Document
2023-10-20 07:57:29 +01:00
Ellie Huxtable
88f3e2a04f
Add enter_accept to immediately execute an accepted command (#1311)
* make enter execute the command, tab copy it

* Add config for enter_accept

enter_accept will make Atuin immediately accept an execute a command
when selected. It defaults to false in our binary, but the default
config enables it.

This means that users who already use atuin will not default to the new
behaviour unless they opt in, but new users will have it by default.

Thanks to @davidhewitt for the patch and bulk of this implementation!
Currently we have it just for zsh, but I'll follow up with other shells
(unless anyone beats me to it :D)

* Add docs

* we need to tidy up the ui code anyway

* Check if using zsh

* Update docs/docs/config/config.md

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

---------

Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2023-10-20 07:16:54 +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
Ellie Huxtable
dead8f3645
Run formatting (#1202) 2023-08-30 22:37:15 +01:00
Ellie Huxtable
465faca6d1
Add workspace mode, enable if in git repo (#1053)
* Add workspace mode, enable if in git repo

* Fix tests

* Should now be good

* Page filter modes correctly if in workspace
2023-07-14 19:58:20 +00:00
Ellie Huxtable
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
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 7b0c72e7e050c358172f9b53cbd21b9e44cf4931.

* 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
Ellie Huxtable
d2240e1163
Allow server configured page size (#994)
* Allow server configured page size

* Backwards compat via semver checks

* Correct header name
2023-05-21 15:21:51 +00:00
Yannick Ulrich
7b9dea72e3
feat: add delete account option (attempt 2) (#980)
* Added DELETE register endpoint

* Added remove function to database

* Added unregister to client

* Updated docs

* Renamed functions

* Reformatting

* Used execute instead of fetch in delete_user
2023-05-16 22:00:59 +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
0d16a113c5
Add atuin status (#830)
Useful for debugging, checking the state of things, and for if you
forget your username!
2023-03-30 06:45:49 +01:00
Conrad Ludgate
bb7f00dbef
chore: use fork of skim (#803)
* use fuzzy-matcher instead of skim

switch to a search-engine abstraction

* fmt

* fix deprecated warnings
2023-03-26 15:47:38 +01:00
Ellie Huxtable
dcd77749dd
Add history deletion (#791)
* Drop events. I'd still like to do them, but differently

* Start adding delete api stuff

* Set mailmap

* Delete delete delete

* Fix tests

* Make clippy happy
2023-03-20 09:26:54 +00:00
Patrick Decat
efd2230eba
Prefer PWD environment variable over cwd if available to better support symbolic links (#783) 2023-03-14 23:15:39 +00:00
YummyOreo
e9c5e1d85c
Windows support (#754)
* adds support for getting home dir in windows

* fixes bug

* adds windows server support + build for linux ^| todo: test server on linux

* improvements to redability

* removes comment

* returns if windows when importing auto

* this should be here, to prevent double inputs

* adds explanation to why we have to throw away 1 event in the tui

* better message when running atuin import on windows + spell fix
2023-03-05 19:00:59 +00:00
cyqsimon
a033890506
Fix race condition in directory tests (#748) 2023-03-02 09:39:15 +00:00
Ellie Huxtable
e297b98f72
Add local event log storage (#390)
* Add event data structures

This adds the data structures required to start syncing events, rather
than syncing history directly.

Adjust event

Fix

Add event data structure to client

* Add server event table sql

* Add client event table migration

Adjust migration

* Insert into event table from client

* Add event merge function

Right now this just ensures we have the right amount of events given the
history we have

BUT it will also be used to merge CREATE/DELETE events, resulting in
history being deleted :)

* Make CI happy

* Adjust

* we don't limit history length any more

* Update atuin-client/src/database.rs

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

* fix usage

* Fix typo

* New Rust, new clippy stuff

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2022-11-04 09:08:20 +00:00
Ellie Huxtable
f03f6e9ad7
Add automatic update checking (#555)
* Add automatic update checking

* Add setting to opt out of update checks

* Document options

* no

* no

* also no

* Make clippy happy

* Update atuin-client/src/settings.rs

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

* fix features

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2022-10-14 10:59:21 +01:00
Conrad Ludgate
5725f4b40b
add some error messages (#510)
* add some error messages

* fmt
2022-10-07 20:33:07 -07:00
Conrad Ludgate
7f5310a1aa
history list (#340) 2022-04-25 07:13:30 +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
Ellie Huxtable
f4240aa62b
Initial implementation of calendar API (#298)
This can be used in the future for sync so that we can be more
intelligent with what we're doing, and only sync up what's needed

I'd like to eventually replace this with something more like a merkle
tree, hence the hash field I've exposed, but that can come later

Although this does include a much larger number of count queries, it
should also be significantly more cache-able. I'll follow up with that
later, and also follow up with using this for sync :)
2022-04-13 18:29:18 +01:00
Conrad Ludgate
a95018cc90
goodbye warp, hello axum (#296) 2022-04-12 23:06:19 +01:00
Ellie Huxtable
fe45787474
Re-add macro_use to atuin-common (#107)
* Re-add macro_use to atuin-common

When build as a dependency, the macro is available from another crate.
When you try to build common by itself, the macro is not found. Magic,
huh?

* chore: remove unneeded use - clippy is confused

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2021-05-10 21:16:07 +00:00
Conrad Ludgate
de2e34ac50
some changes 🤷 (#83)
* make everything a cow

* fmt + clippy
2021-05-09 21:17:24 +01:00
Conrad Ludgate
4b9ff801a6
fix some bugs (#90)
* fix some bugs

* format
2021-05-09 19:12:41 +01:00
Conrad Ludgate
1c59f85ea8
remove dyn Reply (#48)
* cleanup reply types

* cleanup error api

* small update

* improve api some more

* fmt
2021-05-07 21:06:56 +01:00
Ellie Huxtable
156893d774
Update docs, unify on SQLx, bugfixes (#40)
* Begin moving to sqlx for local too

* Stupid scanners should just have a nice cup of tea

Random internet shit searching for /.env or whatever

* Remove diesel and rusqlite fully
2021-04-25 17:21:52 +00: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