aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* feat: Add 'a', 'A', 'h', and 'l' bindings to vim-normal mode (#1697)Caleb Maclennan2024-02-12
| | | | | | | | | | | The current 'i' binding to switch to insert mode is entirely unintuitive since what I almost always want to do is append to the current query. The fact that the cursor extends past the current input (which vim doesn't do with default settings) adds to the problem. The 'a' key is what I would reach for, but 'A' makes a lot of sense too so I added that. The 'h' and 'l' bindings for moving the cursor also help makes things a bit more usable.
* docs: minor formatting updates to the default config.toml (#1689)David2024-02-12
|
* feat: use ATUIN_TEST_SQLITE_STORE_TIMEOUT to specify test timeout of SQLite ↵Eric Long2024-02-12
| | | | | store (#1703) Low-end devices like RISC-V SBCs are sometimes too slow to initialize SQLite in 0.1s. Option to specify a higher value allows check to pass on such devices with relaxed restrictions.
* chore(release): prepare for release v18.0.1 (#1706)Ellie Huxtable2024-02-12
|
* fix: reorder the exit of enhanced keyboard mode (#1694)Andrew Lee2024-02-12
| | | | | | | | | The `Stdout::new` function first enters an alternate screen then later enables enhanced keyboard mode. In `Drop`, we need to do this in the opposite order: disable enhanced keyboard mode then exit alternate mode. Fixes #1693
* chore(release): prepare for release v18.0.0 (#1685)Ellie Huxtable2024-02-09
|
* docs(README): clarify prerequisites for Bash (#1686)Koichi Murase2024-02-08
| | | | | | | * docs(README): clarify prerequisites for Bash https://github.com/atuinsh/atuin/discussions/1683 * docs(README): fix grammar
* feat: add progress bars to sync and store init (#1684)Ellie Huxtable2024-02-08
| | | | | | | Replace lots of logging with some progress bars. This looks much nicer I'd like to move it out of the atuin-client crate and into the atuin crate. But first, I want to decouple a lot of the record moving, so it can wait until that's done.
* fix(tests): add Settings::utc() for utc settings (#1677)Ellie Huxtable2024-02-06
| | | | | | Means we don't try and load timezones in tests, as this fails due to multiple threads. Also allow specifying '0' or 'utc' as a timezone
* Add timezone configuration option & CLI overrides (#1517)cyqsimon2024-02-06
| | | | | | | | | | | | | | | | | | | * Allow specifying a timezone in history search/list * Fix clippy complaints * Add a bit more comment on supporting named timezones * Add rudimentary tests * Ditch local timezone test * Timezone configuration support * Set default timezone to `local` * `--tz` -> `--timezone` `--tz` is kept as a visible alias
* chore(deps): bump debian (#1673)dependabot[bot]2024-02-05
| | | | | | | | | | | | Bumps debian from bullseye-20240110-slim to bullseye-20240130-slim. --- updated-dependencies: - dependency-name: debian dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(ci): run rust build/test/check on 3 platforms (#1675)Ellie Huxtable2024-02-05
| | | | | | | * chore(ci): run rust build/test/check on 3 platforms * need to properly test windows * do not need to strip here, and windows has a suffix anyway
* fix: correct download list for incremental builds (#1672)Ellie Huxtable2024-02-04
|
* feat: disable auto record store init (#1671)Ellie Huxtable2024-02-04
| | | I think this makes more sense as a manual action
* fix: set durability for sqlite to recommended settings (#1667)Joe Ardent2024-02-04
| | | | | Also do an optimize on connection close. Fixes lag on history insertion.
* fix(bash/preexec): support termcap names for tput (#1670)Koichi Murase2024-02-04
| | | | | | | | | | | | | | | | | | | | | | | | | * fix(bash/preexec): support termcap-based tput The current uses of tput specify the terminfo entry names. However, there are different implementations of the tput command. There are two ways to specify the terminal capability: terminfo and termcap names. Although recent implementations of tput (such as ncurses in Linux) accepts the terminfo name, some accept both the terminfo and termcap names, and some old implementations (such as in FreeBSD) only accept the termcap names. In this patch, we first attempt the terminfo name and then the termcap name if the terminfo name fails. Note: When both fail due to e.g. non-existent tput, we end up with outputting nothing. This does not cause a serious problem because it just does not clear the previous prompts. * perf(bash/preexec): cache the results of tput With the current implementation, we spwan 10 processes of the tput command at most every time we perform `enter_accept`. In this patch, to reduce the delay, we separate the related code into a function and cache the results of the tput commands.
* fix(bash/preexec): erase the previous prompt before overwritingKoichi Murase2024-02-03
| | | | | | | When the previous prompt is longer than the prompt calculated by the current PS1, some extra characters from the previous prompt remains in the terminal display. In this patch, we erase the content of the previous prompt before outputting our new prompt.
* fix(bash/preexec): erase the prompt last line before Bash renders itKoichi Murase2024-02-03
| | | | | | | | | | Fixes https://github.com/atuinsh/atuin/issues/1668 When the prompt becomes longer after "enter_accept", Bash still uses the previous shorter prompt, so the extra characters in the new prompt drawn by Atuin is left in the terminal display. In this patch, we remove the last line of the prompt drawn by Atuin so that it doesn't interfere with the last line of the prompt drawn by Bash.
* feat: add `store pull`Ellie Huxtable2024-02-02
| | | | | | | | | | | | This allows the user to 1. Specify that they want to sync, but ONLY pull new data 2. Specify that they wish to force pull, which will wipe the local store and download it from the remote With the other set of changes, this allows the user to perform sufficient maintenance to recovery from most errors I can think of right now.
* feat: add `store push --force`Ellie Huxtable2024-02-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will 1. Wipe the remote store 2. Upload all of the local store to remote Imagine the scenario where you end up with some mixed keys locally :( You confirm this with ``` atuin store verify ``` You then fix it locally with ``` atuin store purge ``` Ensure that your local changes are reflected remotely with ``` atuin store push --force ``` and then (another PR, coming soon), update all other hosts with ``` atuin store pull --force ```
* feat: failure to decrypt history = failure to syncEllie Huxtable2024-02-02
| | | | | Now that the user can purge their store and _do something_ about invalid records, we should not tolerate mixed key records in store.
* feat: add store purge commandEllie Huxtable2024-02-02
| | | | | | | | | | | | | | | | | This command will delete all records from the local store that cannot be decrypted with the current key. If a verify fails before running this, it should pass _after_ running it. Required afterwards: - A `push --force`, to allow ensuring the remote store equals the local store (deletions have now occured!) - A `pull --force`, as once remote has been forced then local needs the same Nice to have: - Provide "old" keys to purge, in case the are not lost. Or maybe rekey.
* feat: add verify command to local storeEllie Huxtable2024-02-02
| | | | | | | | This ensures that the local store can be decrypted with the current in-use key. If it cannot, we can go on to perform maintenance operations and get back into a happy state.
* feat: add prefers_reduced_motion flag (#1645)Conrad Ludgate2024-02-01
| | | | | | | | | | | * feat: add prefers_reduced_motion flag * use NO_MOTION, and ensure type is bool * update default config --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* chore(ci): re-enable test cache, add separate check step (#1663)Ellie Huxtable2024-02-01
|
* feat: reencrypt/rekey local store (#1662)Ellie Huxtable2024-02-01
| | | | | | | | | | | | | | | | | * 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"
* chore(ci): use github m1 for release builds (#1658)Ellie Huxtable2024-01-30
|
* chore: Set ATUIN_ variables for development in devshell (#1653)Matthias Beyer2024-01-30
| | | | | | | | | | | | I accidentially broke my atuin database by executing `atuin` from the PR I was working on without setting these variables and had to manually roll back my local database. That shouldn't happen, so we set the database and record store path in the devshell to something that does not overwrite our normal databases. We also warn if these files already exist, because when entering the devshell, a user might want to start from a clean slate here. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
* fix: never overwrite the key (#1657)Ellie Huxtable2024-01-30
| | | | | Now that local history is stored encrypted, new_key should not overwrite an existing one. This may be frustrating, but will remove the risk of Atuin generating a new key and the user losing their old one.
* feat: add store push (#1649)Ellie Huxtable2024-01-30
| | | | | | | | | | | * feat: add store push * only push for the current host unless specified * tidy up * tidy up some more * sort features
* feat: automatically init history store when record sync is enabled (#1634)Ellie Huxtable2024-01-29
| | | | | | | | | | | | | | | | | | | * add support for getting the total length of a store * tidy up sync * auto call init if history is ahead * fix import order, key regen * fix import order, key regen * do not delete key when user deletes account * message output * remote init store command; this is now automatic * should probs make that function return u64 at some point
* test: add multi-user integration tests (#1648)Ellie Huxtable2024-01-29
| | | | | | | | | 1. Test that multiple users can be registered without clobbering each other 2. Test that one user can change their password without it affecting the other I'd like to also test sync with multiple users, to ensure we never accidentally leak data cross-users.
* chore: disable nix tests (#1646)Ellie Huxtable2024-01-29
| | | | | | | | | | | | | For a few reasons 1. This step is really, really slow. I don't think there's sufficient value in a slow CI step to keep it 2. Whenever we add an integration test it needs to be added to the ignore list. I want to keep friction on adding such tests as low as is possible. 3. We already run tests in a bunch of places, so I don't think this is needed Ref: #1123
* Add xonsh support (#1375)Matthieu LAURENT2024-01-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add basic xonsh support * Add init xonsh command * Add Xonsh install instructions in docs * Add xonsh ctrl-R search * update xonsh script and instructions Summary of changes: * Added duration to postcommand hook * Switched main search operation to use `subproccess.run()` rather than running as an xonsh shell command - this a) allows us to capture stderr without needing a temporary file and b) avoids a weird broken-buffer state that results from running a fullscreen TUI and then programmatically editing the buffer * Added support for immediately executing chosen command via `__atuin_accept__:` (like bash/zsh/fish) * strip newline from command before sending to atuin * Add basic xonsh support * Add init xonsh command * Add xonsh ctrl-R search * Remove advanced-install guide (was accidentally re-added during rebase) * Clean up Xonsh doesn't import private functions into the local namespace when sourcing a file * Add xonsh ro readme * Respect ATUIN_NOBIND * Format with black, and improve PEP8 compliance * Add up search * Format rust code --------- Co-authored-by: Joseph Montanaro <jfmonty2@gmail.com>
* feat: Add change-password command & support on server (#1615)TymanWasTaken2024-01-29
| | | | | | | | | | | * Add change-password command & support on server * Add a test for password change * review: run format --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* feat: make history list format configurable (#1638)Dongxu Wang2024-01-29
| | | | | | | | | | | * feat: make history list format configurable * Update atuin-client/config.toml * review: run format --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* feat(zsh): update widget names (#1631)Koichi Murase2024-01-29
| | | | | | | | | | | | | | | | | | The current widget names for Zsh start with "_", which gives an impression to users that those widgets are internal API and should not be bound by the users. However, we actually instruct users to set up custom keybindings by specifying them to bindkey. In other shells, a separate namespace for widgets are not prepared, so we want to prefix "_" to shell function names to tell the users that these are not the commands that are supposed to be called from the command line. However, the widget names are separated in their own namespace in Zsh, so we do not have to isolate them by prefixing "_". In fact, other frameworks such as `fzf` define widgets with names not starting with "_". In this patch, we update the widget names to have the form "atuin-*". The old widget names that existed in the release version <= 17.2.1 are left for compatibility.
* chore(deps): update axum (#1637)Conrad Ludgate2024-01-28
|
* chore: use resolver 2, update editions + cargo (#1635)Ellie Huxtable2024-01-26
|
* docs: Update CONTRIBUTING.md (#1633)Ellie Huxtable2024-01-26
|
* docs: Create pull_request_template.md (#1632)Ellie Huxtable2024-01-26
|
* fix: Skip padding time if it will overflow the allowed prefix length (#1630)Nemo1572024-01-26
|
* feat(shell)!: bind the Atuin search to "/" in vi-normal mode (#1629)Koichi Murase2024-01-26
| | | | | | | | | | A search feature in the vi-normal mode of shells can be called by "/". To make the shell-integration keybindings consistent with the existing shell keybindings, we add the keybinding to "/" in this patch. This patch removes the Ctrl-r binding in the "vicmd" keymap in Zsh. The key Ctrl-r is used for the `redo` operation in the vi-normal mode by default. We would like to avoid overwriting an existing keybinding with a totally different feature.
* feat(ui): When in vim-normal mode apply an alternative highlighting to the ↵Nemo1572024-01-26
| | | | | selected line (#1574) This makes it much more obvious whether you're in normal or insert mode.
* chore: add feature to allow always disable check update (#1628)Mag Mell2024-01-26
| | | | | | | | | | | | | * chore: add feature to allow always disable check update In the packaging rules of some distributions, the software's self-update check needs to be permanently turned off This commit will make it easier for these users to * fix: formatting --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* fix: Check for format errors when printing history (#1623)Peter Holloway2024-01-24
| | | | | | | | | | | | | | | | | The runtime formatting used to list history commands can fail in its Display implementation and the error is not propagated through to the write error it causes. Instead, the error is cached in the FormatArgs being printed. It's a bit clumsy but by checking if there's a cached error, we can get a more useful error for the user. eg, atuin search cargo --format '{invalid}' gives history output failed with: The requested key "invalid" is unknown instead of history output failed with: formatter error
* stats: Misc improvements (#1613)Philippe Normand2024-01-24
| | | | | | | | | * fix(stats): Don't bail/error if no command is found An empty history shouldn't be source of error when printing stats. * fix(stats): Improve help message a bit. It wasn't clear what the period format could be.
* feat: add registered and deleted metrics (#1622)Ellie Huxtable2024-01-23
|
* fix(bash): strip control chars generated by `\[\]` in PS1 with bash-preexec ↵Koichi Murase2024-01-23
| | | | | | | | | (#1620) * fix(bash): strip control chars generated by \[\] in PS1 with bash-preexec Fixes https://github.com/atuinsh/atuin/issues/1617 * perf(bash): count newlines using Bash built-in features
* fix: Only escape control characters when writing to terminal (#1593)Peter Holloway2024-01-23
| | | | | When piping the output of `atuin history list` to a file, it makes more sense for the literal commands to be written rather than the escaped ones that would be printed to the terminal.