summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2024-02-21feat(client): add config option keys.scroll_exits (#1744)Helmut K. C. Tessarek
* feat(client): add config option keys.scroll_exits If the config option is set the `false`, using the up/down key won't exit the TUI when scrolled past the first/last entry. Example: ``` [keys] scroll_exits = false ``` The default is `true`, which is the current behavior. * Update atuin/src/command/client/search/interactive.rs Co-authored-by: Koichi Murase <myoga.murase@gmail.com> * refactor: add option to config.toml --------- Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
2024-02-20chore(deps): bump lukemathwalker/cargo-chef (#1705)dependabot[bot]
Bumps lukemathwalker/cargo-chef from latest-rust-1.75.0-buster to latest-rust-1.76.0-buster. --- updated-dependencies: - dependency-name: lukemathwalker/cargo-chef dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-20fix: typo (#1741)Onè
2024-02-20refactor(nushell): update `commandline` syntax, closes #1733 (#1735)Steven Xu
* refactor(nushell): update `commandline` syntax, closes #1733 * refactor(nushell): add backwards compatibility for *Nushell* v0.90.x
2024-02-19feat: change fulltext to do multi substring match (#1660)依云
2024-02-17fix(bash): rework #1509 to recover from the preexec failure (#1729)Koichi Murase
In GitHub #1509, we blocked the unintended preexec event caused by the keybinding of Atuin. However, with that fix, the preexec event for the intended user command is still missing. In this patch, we try to manually run the preexec hook when we detected the unintended preexec (which means the missing intended preexec). References: https://github.com/atuinsh/atuin/pull/1509 https://forum.atuin.sh/t/atuin-bash-and-ble-sh/175 https://github.com/atuinsh/atuin/issues/1003#issuecomment-1947905213 https://github.com/atuinsh/atuin/pull/1727 https://github.com/atuinsh/atuin/pull/1728
2024-02-17Revert "Revert "fix(bash): avoid unexpected `atuin history start` for ↵Ellie Huxtable
keybind…" (#1728) This reverts commit 032ca19c73be45c39a2d7a9972cb7d47d34d31ce.
2024-02-17Revert "fix(bash): avoid unexpected `atuin history start` for keybindings ↵Ellie Huxtable
(#1…" (#1727) This reverts commit 86f2c8e58806020bc04999a5039e18ff10409e59.
2024-02-15fix(xonsh): Add xonsh to auto import, respect $HISTFILE in xonsh import, and ↵jfmontanaro
fix issue with up-arrow keybinding in xonsh (#1711) * add xonsh to `atuin import auto` * respect $HISTFILE in xonsh importers * disable up-arrow binding in xonsh when completion menu is active * include xonsh logic in the same conditional as other shells * format and fix clippy lints
2024-02-15fix: fish init (#1725)Ellie Huxtable
2024-02-15feat: support syncing aliases (#1721)Ellie Huxtable
* feat: support syncing aliases This is definitely not yet finished, but works for zsh right now. TODO: 1. Support other shells 2. Cache the alias generation, so we don't have to do a bunch of work at shell init time * correct imports * fix clippy errors * fix tests * add the other shells * support xonsh * add delete * update rust, then make clippy happy once more * omfg fmt too
2024-02-15feat: add 'ignored_commands' option to stats (#1722)David
2024-02-14feat(search): process Ctrl+m for kitty keyboard protocol (#1720)Koichi Murase
Fixes https://github.com/atuinsh/atuin/issues/1719 [C-m] is usually identical to [RET] in the terminal protocol, and some users use [C-m] in place of [RET]. However, kitty's extended keyboard protocol enables differentiating them so that [C-m] does not function as does without the extended keyboard protocol. For the compatibility with terminals without extended keyboard protocols, we anyway cannot assign a distinct feature to [C-m], so we can safely add the explicit binding of InputAction::Accept to [C-m].
2024-02-13fix(ui): don't preserve for empty space (#1712)依云
For the following situation: $ atuin search -i --inline-height 15 [ HOST ] query > 1m 19d ago item 1 1 0s 1mo ago item 2 2 0s 1mo ago item 3 3 0s 1mo ago item 4 4 0s 1mo ago item 5 5 0s 1mo ago item 6 Atuin v17.2.1 [...] Scrolling item 6 results: [ HOST ] query 0s 1mo ago item 3 0s 1mo ago item 4 0s 1mo ago item 5 > 0s 1mo ago item 6 Atuin v17.2.1 [...] With this patch it becomes: [ HOST ] query 1m 19d ago item 1 0s 1mo ago item 2 0s 1mo ago item 3 0s 1mo ago item 4 0s 1mo ago item 5 > 0s 1mo ago item 6 Atuin v17.2.1 [...]
2024-02-12feat: Add xonsh history import (#1678)jfmontanaro
* add importers for xonsh JSON files and SQLite db * rustfmt xonsh importers * remove env-dependent tests from xonsh importers * pass xonsh_data_dir into path resolver instead of looking up in env * review: run format * review: fix clippy errors --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2024-02-12perf: optimize history init-store (#1691)Ellie Huxtable
Instead of lots of small sqlite transaction, do one monster one. A single tx with 100s of 1000s of rows should be fine on all systems A very unscientific test shows this to be roughly 10x faster
2024-02-12feat: Add 'a', 'A', 'h', and 'l' bindings to vim-normal mode (#1697)Caleb Maclennan
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.
2024-02-12docs: minor formatting updates to the default config.toml (#1689)David
2024-02-12feat: use ATUIN_TEST_SQLITE_STORE_TIMEOUT to specify test timeout of SQLite ↵Eric Long
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.
2024-02-12chore(release): prepare for release v18.0.1 (#1706)v18.0.1Ellie Huxtable
2024-02-12fix: reorder the exit of enhanced keyboard mode (#1694)Andrew Lee
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
2024-02-09chore(release): prepare for release v18.0.0 (#1685)v18.0.0Ellie Huxtable
2024-02-08docs(README): clarify prerequisites for Bash (#1686)Koichi Murase
* docs(README): clarify prerequisites for Bash https://github.com/atuinsh/atuin/discussions/1683 * docs(README): fix grammar
2024-02-08feat: add progress bars to sync and store init (#1684)Ellie Huxtable
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.
2024-02-06fix(tests): add Settings::utc() for utc settings (#1677)Ellie Huxtable
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
2024-02-06Add timezone configuration option & CLI overrides (#1517)cyqsimon
* 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
2024-02-05chore(deps): bump debian (#1673)dependabot[bot]
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>
2024-02-05chore(ci): run rust build/test/check on 3 platforms (#1675)Ellie Huxtable
* 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
2024-02-04fix: correct download list for incremental builds (#1672)Ellie Huxtable
2024-02-04feat: disable auto record store init (#1671)Ellie Huxtable
I think this makes more sense as a manual action
2024-02-04fix: set durability for sqlite to recommended settings (#1667)Joe Ardent
Also do an optimize on connection close. Fixes lag on history insertion.
2024-02-04fix(bash/preexec): support termcap names for tput (#1670)Koichi Murase
* 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.
2024-02-03fix(bash/preexec): erase the previous prompt before overwritingKoichi Murase
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.
2024-02-03fix(bash/preexec): erase the prompt last line before Bash renders itKoichi Murase
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.
2024-02-02feat: add `store pull`Ellie Huxtable
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.
2024-02-02feat: add `store push --force`Ellie Huxtable
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 ```
2024-02-02feat: failure to decrypt history = failure to syncEllie Huxtable
Now that the user can purge their store and _do something_ about invalid records, we should not tolerate mixed key records in store.
2024-02-02feat: add store purge commandEllie Huxtable
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.
2024-02-02feat: add verify command to local storeEllie Huxtable
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.
2024-02-01feat: add prefers_reduced_motion flag (#1645)Conrad Ludgate
* 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>
2024-02-01chore(ci): re-enable test cache, add separate check step (#1663)Ellie Huxtable
2024-02-01feat: reencrypt/rekey local store (#1662)Ellie Huxtable
* 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"
2024-01-30chore(ci): use github m1 for release builds (#1658)Ellie Huxtable
2024-01-30chore: Set ATUIN_ variables for development in devshell (#1653)Matthias Beyer
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>
2024-01-30fix: never overwrite the key (#1657)Ellie Huxtable
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.
2024-01-30feat: add store push (#1649)Ellie Huxtable
* feat: add store push * only push for the current host unless specified * tidy up * tidy up some more * sort features
2024-01-29feat: automatically init history store when record sync is enabled (#1634)Ellie Huxtable
* 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
2024-01-29test: add multi-user integration tests (#1648)Ellie Huxtable
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.
2024-01-29chore: disable nix tests (#1646)Ellie Huxtable
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
2024-01-29Add xonsh support (#1375)Matthieu LAURENT
* 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>