Commit graph

120 commits

Author SHA1 Message Date
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
73bd8015c3
Automatically filter out secrets (#1182)
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
2023-08-19 12:28:39 +01:00
Conrad Ludgate
aa8e5f5c04
Update dependencies (#1181) 2023-08-18 20:45:29 +00:00
Ellie Huxtable
69a772d1ca
Add kv map builder and list function (#1179)
* Add kv map builder and list function

1. BREAKING - default namespace is now called "default"
2. Build an in-memory hashmap from the kv store
3. Allow listing

I need to cache the hashmap next, probs with a write-through to avoid
constant rebuilds.

Also check if BTreeMap is suitable. Sorted is useful for listing but
there's probs a better ds to use.

* Allow pure kv set, no filesystem
2023-08-18 08:36:55 +01:00
Ellie Huxtable
613218f0d8
Fix client-only builds (#1155) 2023-08-07 12:06:48 +01: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
Conrad Ludgate
af14366a2e
encode paseto payloads as json (#1146) 2023-08-02 21:46:07 +00:00
Richard Jones
d7f8929656
Add support for max_preview_height setting (#1088) 2023-07-31 18:36:58 +01:00
Ellie Huxtable
5a457d6b3b
Drop default sync frequency to 10m (#1130) 2023-07-28 08:55:19 +01:00
Richard Turner
c0449955e3
use Ctrl-n instead of Alt-n on macOS (#1106)
* use Ctrl-n instead of Alt-n on macOS

* make ctrl-n instead of alt-n configurable
2023-07-27 08:10:40 +00: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
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
db83d9598f
write some key tests (#1095) 2023-07-14 07:50:28 +01:00
Conrad Ludgate
8c94d798c6
fix key encodings again (#1089) 2023-07-08 21:11:25 +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
Conrad Ludgate
a75e516986
remove decryption from api-client (#1063) 2023-06-21 08:45:23 +01:00
Conrad Ludgate
b8b57c86af
remove rmp-serde (#1057)
* remove rmp-serde

* use version info
2023-06-18 12:33:55 +01:00
Vlad Stepanov
4077c33adf
Builder interface for History objects (#933)
* [feature] store env variables in History records

WIP: remove `HistoryWithoutDelete`, add some docstrings, tests

* Create History objects through builders.

Assure in compile-time that all required fields
are set for the given construction scenario

* (from #882) split Cmd::run into subfns

* Update `History` doc

* remove rmp-serde from history

* update warning

---------

Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2023-06-15 10:29:40 +00:00
Ellie Huxtable
0c75cfbfda
Add namespaces to kv store (#1052) 2023-06-15 08:17:30 +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
J. Emiliano Deustua
79f7b1d81c
Fix --delete-it-all and --delete commands (#913)
* Add `delete_at` is null condition during search

Since entries are searched everytime a delete process ends, the
--delete-it-all command will enter an infinite loop if searching the
whole history.

* Remove command blanking

Command blanking may violate the `unique(timestamp, cwd, command)`
condition.

* Overwrite command with random string when deleting

* Add rand dependency to client crate

---------

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2023-06-13 07:43:06 +00:00
Peter Brunner
a6da5340e7
add support to override hostname and username via env var (#1041) 2023-06-12 16:58:46 +00:00
Hilmar Wiegand
d21b691bcf
Add option to completely disable help row (#993)
* Add option to completely disable help row

* Pass full settings object to draw command

* Add documentation for show_help
2023-05-22 11:10:11 +00:00
Ellie Huxtable
5b5e4eaa86
Input bar at the top if we are in inline mode (#866)
* Put input chunk at the top in inline mode

* Invert the search results if bar is at top

* fix styling on reversed rendering

* add setting

* settings

---------

Co-authored-by: Patrick Decat <pdecat@gmail.com>
Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2023-05-21 17:42:44 +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
Ellie Huxtable
ca263834e9
Restructure account commands to account subcommand (#984)
* Stop running triggers on history delete

* Move to account management dir

* Alter trigger function to only run for inserts

* wip

* Add atuin account subcommands, and re-org delete

* Clarify docs

* Delete silly dupe migration

* Um where did this come from

* Oops, insert only plz
2023-05-17 21:28:37 +01: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
b53ca357cd
Fix key regression introduced (#974) 2023-05-11 20:18:20 +00:00
Ellie Huxtable
bf7432f392
Patch bash history import regression (#970)
* At least patch this on the server side so we don't loop forever

* Postgres doesn't support <microsecond precision

Use millis - almost everything should support them and they are still
faster than a human can reasonably spam a button.
2023-05-10 13:02:35 +00:00
Kjetil Jørgensen
244a501cbb
cwd_filter: much like history_filter, only it applies to cwd (#904)
* cwd_filter: much like history_filter, only it applies to cwd

* appease clippy
2023-05-02 02:55:54 +00:00
Conrad Ludgate
c7d89c1703
chore: uuhhhhhh crypto lol (#805)
* chore: uuhhhhhh crypto lol

* remove dead code

* fix key decoding

* use inplace encryption
2023-04-17 21:12:02 +01:00
postmath
64671a17c1
Improve error message for issue #850. (#876)
* Improve error message for issue #850.

* Applied cargo fmt, doh.
2023-04-14 19:48:45 +00: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 993e60f8dea81a1625a04285a617959ad09a0866.
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
Tom Cammann
e149a0a6e9
Add --reverse to atuin search (#862)
Add `-r/--reverse` flag to `atuin search` to allow searching by oldest
results first.

Example to find the oldest `cargo` command:
```
atuin search --limit 1 --reverse cargo
```
2023-04-11 09:39:23 +01:00
János Illés
04044c4146
Use XDG data directory for fish import (#851)
* Use XDG data directory for fish import

On MacOS, atuin was looking for fish history under "$HOME/Library/Application Support".

Now atuin honors XDG_DATA_HOME, if set, and otherwise uses "$HOME/.local/share".

* cargo fmt

---------

Co-authored-by: Charles Gould <charles@gould.dev>
2023-04-08 10:53:32 +01:00
cyqsimon
188117dfae
Handle empty lines when importing from Bash (#845)
* Handle empty lines

* Fix insufficient accuracy in timestamp tests

* Use nanoseconds
2023-04-05 09:37:27 +01:00
cyqsimon
6671f72d1b
Updated client config docs (#839)
* Updated client config docs

- Example `config.toml` now includes all the newest options
- `settings.rs`, `config.toml`, and `config.md` now have uniform option order

* Remove trailing space
2023-04-05 09:32:26 +01:00
Ellie Huxtable
400544738b
Fix deleting history that doesn't exist yet (#844)
This can occur if history has been added + then deleted on a machine
before it has a chance to be synced to a new one.
2023-04-05 09:23:09 +01:00
Tom Cammann
fa0a1447a6
Add --offset flag to atuin search (#825)
This flag allows the user to continue searching at an offset. This is
useful for building tools that use atuin to search for previous
commands and return only one result.

```

atuin search --limit 1
atuin search --limit 1 --offset 1
atuin search --limit 1 --offset 2
```
2023-03-29 09:27:14 +01:00
jean-santos
caf2ddfb9f
client filtering done in query (#629) 2023-03-27 22:33:04 +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
Steven Xu
a7cb21a51b
feat: add *Nushell* support (#788)
* feat: add *Nushell* support

* refactor: use `sh` to swap `STDOUT` and `STDERR` instead of using a temporary file

* feat: include both keybindings, with the current REPL buffer passed to *Atuin*'s

* feat: don't record commands run by keybindings
2023-03-26 15:44:06 +01:00
Patrick Decat
13ce5f746c
feat: add an inline view mode (#648)
* add inline viewport

* Add inline_height setting. Zero disables inline mode (the default)
2023-03-25 17:27:20 +00:00
Ellie Huxtable
79622cf698
Delete all instances of a command (#797)
* Delete all instances of a command

Our search command will de-dupe results by default. But... This isn't
great for deleting! You don't want to run it over-and-over-and-over
until all commands are deleted.

Loop the query, and keep on deleting what it returns until they are all
gone.

* Optimize delete upload

It was running a request for every element, on every sync lol

Only push a delete if needed

Future: push all deletes in one request
2023-03-24 09:04:57 +00:00
Krut Patel
378be6b790
Allow changing search_mode during interactive search (#586)
* Make search_mode a part of SearchState

* Allow changing search mode using ctrl+s

* Tweak state reset for switched_search_mode

* Improve search_mode display in interactive mode

* Incorporate review suggestion

* Tweak language

* Fix Clippy and format
2023-03-22 16:16:59 +00:00
Ellie Huxtable
bc06d5f36f
Fix skim search (#795) 2023-03-21 20:00:19 +00:00
Ellie Huxtable
13514b635c
Support old msgpack (#794)
* Support old msgpack

I forgot it isn't backwards compatible... This should fix any sync
issues resulting from the deletion PR

* Update atuin-client/src/encryption.rs

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

* Bye bye unwrap

---------

Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
2023-03-20 21:26:37 +00: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
Conrad Ludgate
edcd477153
skim-demo (#695)
* skim-demo

* skim some more

* Weight first word match higher (#712)

* some improvements

* make skim opt-in

---------

Co-authored-by: Frank Hamand <frankhamand@gmail.com>
2023-03-19 20:49:57 +00:00