Commit graph

166 commits

Author SHA1 Message Date
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
Jacob Evan Shreve
0f77f8ae72
Fix compatability with fish vi key bindings (#541)
PR #420 addressed the existence of pagination in a fish prompt by trying
to track when pagination was enabled and disabled. This introduced
atuin-specific bindings for common keys: `\t`, `\e`, `\r`, and `\n`
which exports a variable and informs the `_autiun_search` function to
not show the TUI.

Fish has a commandline function that will instead tell you whether
pagination is enabled so the user doesn't need to keep track of that
state. This PR uses this function, `commandline -P` to replace the prior
TUI supression scheme. Removing these extra function calls allows us to
remove the additional bindings which were breaking fish vi key bindings.

Replacing the value for `bind -M insert \e` completely breaks vi mode by
blocking the user from exiting insert mode. By removing these extra
binds, this PR restores fish vi mode compatability.
2022-10-07 20:31:30 -07:00
Ellie Huxtable
634b3e375f
Add contributors command (#550)
Inspired by the ClickHouse system contributors table, I thought this is
a nice extra way to say thank you to all those who put time and energy
into our project
2022-10-04 21:56:49 -07:00
c-14
f93da455a3
Clear RBUFFER when accepting output from atuin (#545)
Since we pass $BUFFER to atuin search, retaining RBUFFER (the part of
the buffer to the right of the cursor) probably doesn't make sense. The
advantage of setting RBUFFER and LBUFFER separately instead of setting
BUFFER is that the cursor is positioned after the end of LBUFFER instead
of remaining where it was before atuin was called.
2022-09-25 09:13:38 -07:00
c-14
045c87fbcd
Allow stateless commands to be run without config/database (#544)
* Allow stateless commands to be run without config/database

Fixes an issue where gen-completions fails trying to create a config
directory in restrained build environments/distribution.

* move non-db commands up to core subcommands

* re-add lost lines

* re-add lost lines

Co-authored-by: Conrad Ludgate <conrad.ludgate@truelayer.com>
2022-09-25 11:15:33 +01:00
Conrad Ludgate
db2a00f456
custom history list (#524)
* use custom list impl

* fmt

* segment

* clean up

* fix offsets

* fix scroll back space

* small touch ups
2022-09-12 20:39:41 +01:00
Conrad Ludgate
e8c8415278
update default layout (#523)
* update layouts

* add other duration changes

* fmt :(
2022-09-12 20:19:22 +01:00
Conrad Ludgate
702a644f68
better cursor search (#473)
* improve cursor code

* proper unicode support

* refactor and test

* fmt

* clippy

* move methods to state

* refactor search modules
2022-09-11 16:24:16 +01:00
Conrad Ludgate
474170fd90
hide errors for #516 (#518) 2022-09-01 09:07:10 +00:00
Jamie Quigley
aa556fa088
Fix atuin crashing on commands that start with -- (#509)
The use of `--` in the shell scripts prevents clap attempting to parse
the command name as a flag, in the case that it starts with `--`.
2022-08-23 17:26:42 +01:00
Frank Hamand
ab994e3c82
Batch key handling (#448)
* Batch input events and only query once they are finished

This simplifies the code a lot (no more bounded channel) and yields
the same performance improvement with scroll wheel spam while fixing copy/paste

* Clippy

* fmt

* Use blocking wait before emptying events channel

This was causing a busy loop

* Update query on filter mode change
2022-06-13 09:33:05 +01:00
Sam Edwards
e0ba60fc3c
Enhancements to bash init script (#445) 2022-06-07 21:28:06 +00:00
Frank Hamand
3f5350dee6
[feature] Add scroll wheel support to interactive history search (#435) 2022-06-04 10:16:12 +01:00
b3nj5m1n
9ac0c60cc4
Implement cursor (#412) 2022-05-24 20:44:12 +00:00
Satyarth Sampath
119ab9e007
Adds password prompt for register and login (#424)
* Adds the rpassword dependency

* Provides only a prompt based input for login and register with a hidden prompt for password

* Adds option based inputs for login and register commands

* Password can also be provided as an option

Co-authored-by: Satyarth <satyarth.sampath@gojek.com>
2022-05-24 14:25:48 +01:00
noyez
e5df809dd2
Noyez zsh histdb import (#393)
* Attempting to implement zsh-histdb import

Import compiles passes tests, but doesn't run b/c of async runtime.
zsh-histdb uses sqlite, and sqlx-rs is async, but import code is sync.

* More working on importing histdb

* Rewriting tests and using `Vec<u8>` instead of `String`

 - Rewriting tests to eliminate depencency on local file system
 - Using `Vec<u8>` for command strings instead of `String` to eliminate
   the utf8 errors i was seeing previously. Seems to be working.

* Running fmt

Co-authored-by: Bradley Noyes <b@noyes.dev>
2022-05-20 07:36:53 +01:00
Sam Lanning
b08e254343
Improve default fish keybindings (#420)
binding on "up" can conflict with the default fish keybindings as when
in tab-completion mode, you are supposed to be able to use arrow keys
to navigate the grid of suggestions, however pressing "up" will open
the tui instead.

This attempts to work around it by tracking when the user is probably in
a tab completion mode by setting a variable that we use to determine
whether to open atuin or perform the default fish up action
2022-05-20 07:25:36 +01:00
Jakub Jirutka
ab294cde34
Don't pollute shell environment - remove 'id' variable (#408) 2022-05-16 22:13:17 +01:00
Jakub Jirutka
14b30606a5
Allow to build atuin server without client (#404) 2022-05-13 06:57:27 +01:00
Conrad Ludgate
1d030b9d32
Importer V3 (#395)
* start of importer refactor

* fish

* resh

* zsh
2022-05-09 07:46:52 +01:00
Luke Baker
e9d2ec4bf7
Add ctrl-k and ctrl-j for up and down (#394) 2022-05-08 09:03:00 +01:00
Satyarth Sampath
4a839dab44
Adds stats summary (#384)
* stat command parsing is handled without subcommands

* Updates match clause based on PR review

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

* updates value returned by match based on PR review

* adds vscode to gitignore

* use an if statement instead of match

Co-authored-by: Satyarth <satyarth.sampath@gojek.com>
Co-authored-by: Conrad Ludgate <oon@conradludgate.com>
2022-05-03 15:49:27 +01:00
Jakob-Niklas See
9d2e9ea174
Search: Allow specifiying the limited of returned entries (#364)
This patch adds a new option to the search command, allowing to limit
the returned results from the database.
2022-04-28 18:54:16 +01:00
Jakub Panek
93ab4e7842
ignore JetBrains IDEs, tidy-up imports (#348)
* ignore JB IDEs

* tidy-up imports

* add rustfmt config
2022-04-28 18:53:59 +01:00
jean-santos
5926ea64bf
fix import auto for bash (#352) 2022-04-26 17:56:06 +01:00
Conrad Ludgate
7f5310a1aa
history list (#340) 2022-04-25 07:13:30 +01:00
Conrad Ludgate
7436e4ff65
feature-flags (#328)
* use feature flags

* fmt

* fix features

* update ci

* fmt

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2022-04-22 20:14:23 +00:00
Ellie Huxtable
508d4f4761
History filter (#329)
* Add history filters, and hotkey toggle

Switch between different search modes to narrow down the history you
want - global search for all history, host for all history from your
current machine, session for the current shell session, and directory
for the current directory

The default can be configured via `filter_mode`

* Update docs

* Add context
2022-04-22 21:05:02 +01:00
Conrad Ludgate
02c70deecb
refactor (#327) 2022-04-22 19:24:38 +01:00
Conrad Ludgate
9085485a4f
tracing (#315)
* enable tracing on server

* fmt

* instrument handlers
2022-04-21 18:07:33 +01:00
Conrad Ludgate
d57f549855
refactor commands for better separation (#313)
* refactor commands for better separation

* fmt
2022-04-21 09:12:56 +00:00
Conrad Ludgate
48747e3b7c
A few minor tweaks (#314)
* use bail macro

replace client database errors

remove dead code

* fix test
2022-04-21 08:05:57 +01:00
Conrad Ludgate
3c5fbc5734
provide better error messages (#300) 2022-04-13 18:08:49 +01:00
Conrad Ludgate
a95018cc90
goodbye warp, hello axum (#296) 2022-04-12 23:06:19 +01:00
Jamie Quigley
f861893293
Update to clap 3.1.x (#289) 2022-04-07 06:32:11 +01:00
Jakob Schrettenbrunner
e8f7aaccef
Add compact mode (#288) 2022-04-04 20:59:01 -07:00
Ellie Huxtable
d270798277
Update config-rs (#280)
* Update config-rs

Also fix our call to current_dir

This should resolve #195

Thanks @conradludgate for the upstream fix!

* Format
2022-03-17 21:26:57 +00:00
Lucas Burns
7f587418da
Fix history list --cwd errors (#278) 2022-03-13 19:53:49 +00:00
Patrick Jackson
e117b622fe
Update fish bindings. (#265) 2022-02-15 23:21:28 +00:00
Sandro
4223ac6943
Restore bash 4.2 compatibility, only add hook once (#271) 2022-02-15 22:54:25 +00:00
Sandro
7651f89261
Add support for blesh (#267)
* Fix intendation

* Add support for blesh

See https://github.com/akinomyoga/ble.sh/wiki/Manual-%C2%A71-Introduction#user-content-fn-blehook for more details
2022-01-25 18:33:25 +00:00
Ellie
7fa3e1c0f4
Do not crash if the history timestamp is in the future (#250)
Resolve #189

We were throwing an OutOfRangeError. This occurs when you attempt to
convert to a duration, and your input is <0. A value in the future would
have done this. This is especially noticeable during DST...
2021-12-20 05:52:07 +00:00
Mat Jones
133971179e
Add Alt+backspace and Ctrl+u keybinds for deleting by word and by line, respectively (#243)
* remove unused environment var loading entire history into an env var

* Add Alt+backspace and Ctrl+u keybinds for deleting by word and by line, respectively
2021-12-17 12:14:45 +00:00
Mat Jones
059e858a00
remove unused environment var loading entire history into an env var (#242) 2021-12-16 19:45:05 +00:00
Orhun Parmaksız
079d8037ab
Enable help messages for command line arguments (#239) 2021-12-11 22:29:47 +00:00
Conrad Ludgate
87df7d80ec
Fish importing (#234)
* make a start on fish

* fix

* test

* enable fish

* fmt

* update histpath

set up fish init script

* update readme

* cover edge case

* fmt

* fix session variables

Co-authored-by: PJ <me@panekj.dev>

* respect NOBIND

Co-authored-by: PJ <me@panekj.dev>

* fix env var setting

Co-authored-by: PJ <me@panekj.dev>

* fix whitespace

Co-authored-by: PJ <me@panekj.dev>

* add fish to supported shells

Co-authored-by: PJ <me@panekj.dev>
2021-12-11 09:48:53 +00:00
Orhun Parmaksız
0abd063e01
Support generating shell completions (#235)
* Add gen-completions subcommand for generating shell completions

* Update documentation about generating shell completions

* Include the shell completions in release tarball
2021-12-10 23:59:39 +00:00
Conrad Ludgate
4bdf4c40c2
feat: login/register no longer blocking (#216) 2021-12-08 13:37:49 +00:00
Conrad Ludgate
f539f60ae4
chore: add more eyre contexts (#200)
* chore: add more eyre contexts

* chore: rustfmt
2021-11-17 11:50:34 +00:00
Conrad Ludgate
8f91b1410c
chore: some new linting (#201)
* chore: some new linting

* chore: some more linting

* chore: rustfmt
2021-11-13 22:40:24 +00:00
Jannik
27d3d81afe
feat: allow input of credentials from stdin (#185)
* feat: allow credential input from stdin for registration

This changes the options for register to be optional. If arguments are
not given, the program will ask for them interactively.

* feat: allow credential input from stdin for login

* style: apply cargo fmt
2021-09-24 16:24:59 +00:00
Jannik
446ffb88c7
Resolve clippy warnings (#187)
* refactor: nest or patterns

* refactor: fix clippy lint names

* refactor: remove unnecessary wraps

* style: apply cargo fmt
2021-09-24 16:03:37 +00:00
Ellie Huxtable
f55d5cf0bf
Ignore commands beginning with a space, resolve #114 (#123) 2021-05-14 08:31:29 +01:00
Ian Smith
a127408e93
run shellcheck (#97)
* run shellcheck

* Update .github/workflows/shellcheck.yml

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

* shellcheck fixes in which i am highly confident

* shellcheck fixes in which I am less confident - not executing this is fine, right?

* SC2155

In src/shell/atuin.bash line 1:
export ATUIN_SESSION=$(atuin uuid)
       ^-----------^ SC2155: Declare and assign separately to avoid masking return values.

* shellcheck doesn't support zsh, per https://github.com/koalaman/shellcheck/wiki/SC1071

* yaml fix

* gotta checkout our code, too

* yaml fix

* action spelling

* exclude .zsh

* Shellcheck doesn't support zsh, per

https://github.com/koalaman/shellcheck/wiki/SC1071, and the ignore: param
in ludeeus/action-shellcheck only supports _directories_, not _files_.
So instead, we manually add any error the shellcheck step finds in the
file to the above line ...

* comment all the ignores

* Update src/shell/atuin.bash

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>

* new zsh plugin shellcheck errors

* new zsh plugin shellcheck errors, pt 2

Co-authored-by: Conrad Ludgate <oon@conradludgate.com>
Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2021-05-14 08:31:15 +01: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
Yuvi Panda
c02934d184
Implement 'quick access' via Alt-<n> (#79)
* Implement 'quick access' via numbers

Puts numbers 0-9 next to commands *above* current selection.
Ctrl-<number> should activate them - but since Ctrl-<num> are
reserved by terminal, this does not currently work. Need to
find different sets of keyboard shortcuts.

Numbers are *above* current selection, since the user must use
the arrow keys to go over the commands below current selection
before reaching selection.

* Use Alt+<n> to select last nth command

* Don't print Opt+0

Same as <Enter>

* Run rustfmt

* Simplify code

- Use ? operator for getting selected item
- Use RangeInclusive to check if character pressed is a number
2021-05-10 12:55:29 +01:00
Yuvi Panda
f0463326fa
Use format! instead of string concat (#94)
Cleaner
2021-05-09 22:33:57 +01:00
Conrad Ludgate
de2e34ac50
some changes 🤷 (#83)
* make everything a cow

* fmt + clippy
2021-05-09 21:17:24 +01:00
Ellie Huxtable
e43e5ce74a
Add logout, only login if not already logged in (#91)
Also:
- Ensures that a key is generated as soon as a user registers!
- Ensures that "atuin key" will generate a key if needed, and doesn't
  double base64 encode data

And a few other little fixes :)

Resolves #85
Resolves #86
2021-05-09 20:11:17 +01:00
Will Fancher
623df9064e
Add Emacs style ctrl-g, ctrl-n, and ctrl-p (#77) 2021-05-09 18:43:55 +00:00
Conrad Ludgate
4b9ff801a6
fix some bugs (#90)
* fix some bugs

* format
2021-05-09 19:12:41 +01:00
Ellie Huxtable
bd4db1fa03
Allow listing or searching with only the command as output (#89)
Should be useful for using other tools, such as FZF
2021-05-09 18:01:21 +00:00
Ellie Huxtable
d39e3cb479
Fix bash integration to set the session (#88) 2021-05-09 18:47:41 +01:00
Conrad Ludgate
090120a834
Generic Importer Trait (#71)
* initial importer trait

* appease linters

* improve file handling. fixes #66

* use size hint

* format + comment

* update serde rename mess

* tested 😎 🚀

* small formatting
2021-05-09 18:34:15 +01:00
Jamie Quigley
725ea9b16b
Fix resh importer, and change error handling method (#82) 2021-05-09 15:20:39 +01:00
Yuvi Panda
c69f6ee3f9
Run shellcheck on bash file (#81)
Ref #64
2021-05-09 13:12:09 +01:00
Yuvi Panda
a04865d9d8
Use an enum for dialect (#80) 2021-05-09 11:39:39 +01:00
Yuvi Panda
19bd00f620
Support fulltext search of commands (#75) 2021-05-09 08:33:56 +01:00
Ellie Huxtable
07c5461013
Retain the query entered into the TUI (#76)
If no results are found, and the user presses enter, keep the query!

Resolves #73
2021-05-08 22:10:40 +01:00
Jamie Quigley
bb086808b1
Add importer for resh_history file (#69)
* Added resh history importer

* Silence trivial clippy warnings for the PR CI
2021-05-08 17:29:46 +01:00
Jamie Quigley
2e5f16a6a3
Add Ctrl-d as a way of exiting the TUI (#65) 2021-05-08 14:04:33 +00:00
Ellie Huxtable
8bd4d12cfa
Add ATUIN_NOBIND (#62)
* Add ATUIN_NOBIND

* Update docs/key-binding.md

`<kbd>`, what magic

Co-authored-by: bl-ue <54780737+bl-ue@users.noreply.github.com>

Co-authored-by: bl-ue <54780737+bl-ue@users.noreply.github.com>
2021-05-08 14:17:22 +01:00
Ellie Huxtable
99f26ff383
Allow using Ctrl-c to exit (#53) 2021-05-08 00:02:39 +01:00
Ellie Huxtable
4df77c5201 Release v0.6.4
- Fix version
- Only build for two targets
2021-04-26 18:36:19 +01:00
Ellie Huxtable
646fec893e Fix pipeline
Lol no more committing to main for me
2021-04-26 12:05:20 +01:00
Ellie Huxtable
7b5c3d543d Support bash, resolves #3 2021-04-26 11:57:30 +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
4a50ce3666 Bugfixes, show time ago, perf improvements
Also allow unique listing and more ergonomic cwd usage
2021-04-21 21:26:44 +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
Ellie Huxtable
34888827f8
Switch to Warp + SQLx, use async, switch to Rust stable (#36)
* Switch to warp + sql, use async and stable rust

* Update CI to use stable
2021-04-20 16:07:11 +00:00
Ellie Huxtable
f6de558070
Optimise docker (#34)
* Smaller dockerfile, better error handling

* Add config dir
2021-04-14 17:40:50 +00:00
Ellie Huxtable
9c8d426184
Add dockerfile (#32) 2021-04-13 21:31:41 +00:00
Ellie Huxtable
5751463942
Add history sync, resolves #13 (#31)
* Add encryption

* Add login and register command

* Add count endpoint

* Write initial sync push

* Add single sync command

Confirmed working for one client only

* Automatically sync on a configurable frequency

* Add key command, key arg to login

* Only load session if it exists

* Use sync and history timestamps for download

* Bind other key code

Seems like some systems have this code for up arrow? I'm not sure why,
and it's not an easy one to google.

* Simplify upload

* Try and fix download sync loop

* Change sync order to avoid uploading what we just downloaded

* Multiline import fix

* Fix time parsing

* Fix importing history with no time

* Add hostname to sync

* Use hostname to filter sync

* Fixes

* Add binding

* Stuff from yesterday

* Set cursor modes

* Make clippy happy

* Bump version
2021-04-13 19:14:07 +01:00
Ellie Huxtable
9f16f76bd8 Update config 2021-04-09 12:40:21 +01:00
dependabot[bot]
b5845bc3a1
Bump rusqlite from 0.24.2 to 0.25.0 (#30)
* Bump rusqlite from 0.24.2 to 0.25.0

Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.24.2 to 0.25.0.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.24.2...v0.25.0)

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

* Fixes for new rusqlite (mostly the new Params trait)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ellie Huxtable <e@elm.sh>
2021-04-06 10:59:07 +00:00
Ellie Huxtable
c9579cb9ca
Implement server (#23)
* Add initial database and server setup

* Set up all routes, auth, etc

* Implement sessions, password auth, hashing with argon2, and history storage
2021-03-21 20:04:39 +00:00
Ellie Huxtable
716c7722cd
Add TUI, resolve #19, #17, #16 (#21) 2021-03-20 00:50:31 +00:00
Ellie Huxtable
61607e023f
Add config file support (#15) 2021-03-10 21:24:08 +00:00
Ellie Huxtable
a342dc58bb BUFFER -> LBUFFER 2021-02-16 21:34:33 +00:00
Ellie Huxtable
41f072a8b4
Add init command (#12)
* Add init command

This makes setting up the shell part of A'tuin much easier. Eval the
output of "atuin init".

* Update readme, add up binding
2021-02-15 23:33:30 +00:00
Ellie Huxtable
e980973ba0 Satisfy clippy 2021-02-15 21:36:07 +00:00
Ellie Huxtable
ba086f909d Allow listing by current directory and/or session 2021-02-15 21:30:19 +00:00
Ellie Huxtable
48198cdfe9 Fix import message 2021-02-15 20:33:39 +00:00
Conrad Ludgate
68c5ca9ece
use database trait instead of sqlite impl (#10)
small improvements
2021-02-15 09:07:49 +00:00
Ellie Huxtable
b10d302e57 Bump version 2021-02-14 22:33:22 +00:00
Ellie Huxtable
851285225f
Add stats command (#9)
* Add stats command

For example

atuin stats day yesterday
atuin stats day last friday
atuin stats day 01/01/21

* Output tables, fix import blanks
2021-02-14 22:12:35 +00:00
Conrad Ludgate
6636f5878a
zsh bin is sometimes /usr/bin/zsh or might be elsewhere too (#8)
zsh also uses ~/.zsh_history

get better errors for not found history file
2021-02-14 18:40:51 +00:00
Ellie Huxtable
3323b3079a Add test for extended parsing 2021-02-14 18:10:56 +00:00
Conrad Ludgate
bae59474ee
a few more tiny touch ups (#7)
* a few more tiny touch ups

* all praise clippy
2021-02-14 18:00:41 +00:00
Conrad Ludgate
72c5ea7914
tidy some stuff (#6) 2021-02-14 17:18:02 +00:00