aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* feat: Add '/', '?', and 'I' bindings to vim-normal mode (#1760)Mike Pastore2024-02-26
| | | | | | | | | | | | Add 'I' binding to vim-normal mode (a la 'A' introduced in #1697) to jump into vim-insert mode at the beginning of the search input. Also add '/' and '?' bindings to vim-normal mode to clear the search input and jump into vim-insert mode. This mimics the UX in e.g. `set -o vi` (bash) or `bindkey -v` (zsh) mode when you are using 'k' and 'j' to browse history lines and can type '/' or '?' to start a new search. (In a perfect world it would target the search in the forward or backward range starting at your current position in the history, but this is a reasonable first step.)
* feat: Add PHP package manager "composer" to list of default common ↵Korvin Szanto2024-02-26
| | | | | | | subcommands (#1757) * Add PHP package manager "composer" to list of default common subcommands * Run cargo fmt and sort entries
* fix(client): no panic on empty inspector (#1768)Helmut K. C. Tessarek2024-02-26
| | | | | | | | | | | | | | | | * fix(client): no panic on empty inspector * fix: clippy warning Although I am not that happy with this clippy rule. I am old school and we learned to put the most likely path first. Back then compiler optimizations were not too great and cache prediction was better handled this way. * Update atuin/src/command/client/search/interactive.rs --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* chore(release): prepare for release v18.0.2 (#1775)Ellie Huxtable2024-02-26
|
* fix: ensure sync time is saved for sync v2 (#1758)Ellie Huxtable2024-02-22
|
* fix: check session file exists for status command (#1756)Ellie Huxtable2024-02-22
|
* refactor(alias): Clarify operation result for working with aliases (#1748)David Chocholatý2024-02-21
|
* feat: add alias feedback and list command (#1747)Ellie Huxtable2024-02-21
|
* fix(import/zsh-histdb): missing or wrong fields (#1740)Aloxaf2024-02-21
| | | | | | | | | * fix(import/zsh-histdb): import exit_status and session * fix(import/zsh-histdb): avoid session id conflict * fix(import/zsh-histdb): follow the format conventions of session and hostname * fix(import/zsh-histdb): duration unit is nanosecond
* feat: add history prune subcommand (#1743)Xavier Vello2024-02-21
|
* feat(client): add config option keys.scroll_exits (#1744)Helmut K. C. Tessarek2024-02-21
| | | | | | | | | | | | | | | | | | | | | | | | | * 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>
* chore(deps): bump lukemathwalker/cargo-chef (#1705)dependabot[bot]2024-02-20
| | | | | | | | | | | | 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>
* fix: typo (#1741)Onè2024-02-20
|
* refactor(nushell): update `commandline` syntax, closes #1733 (#1735)Steven Xu2024-02-20
| | | | | * refactor(nushell): update `commandline` syntax, closes #1733 * refactor(nushell): add backwards compatibility for *Nushell* v0.90.x
* feat: change fulltext to do multi substring match (#1660)依云2024-02-19
|
* fix(bash): rework #1509 to recover from the preexec failure (#1729)Koichi Murase2024-02-17
| | | | | | | | | | | | | | | 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
* Revert "Revert "fix(bash): avoid unexpected `atuin history start` for ↵Ellie Huxtable2024-02-17
| | | | | keybind…" (#1728) This reverts commit 032ca19c73be45c39a2d7a9972cb7d47d34d31ce.
* Revert "fix(bash): avoid unexpected `atuin history start` for keybindings ↵Ellie Huxtable2024-02-17
| | | | | (#1…" (#1727) This reverts commit 86f2c8e58806020bc04999a5039e18ff10409e59.
* fix(xonsh): Add xonsh to auto import, respect $HISTFILE in xonsh import, and ↵jfmontanaro2024-02-15
| | | | | | | | | | | | | 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
* fix: fish init (#1725)Ellie Huxtable2024-02-15
|
* feat: support syncing aliases (#1721)Ellie Huxtable2024-02-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* feat: add 'ignored_commands' option to stats (#1722)David2024-02-15
|
* feat(search): process Ctrl+m for kitty keyboard protocol (#1720)Koichi Murase2024-02-14
| | | | | | | | | | | | 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].
* fix(ui): don't preserve for empty space (#1712)依云2024-02-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 [...]
* feat: Add xonsh history import (#1678)jfmontanaro2024-02-12
| | | | | | | | | | | | | | | | | * 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>
* perf: optimize history init-store (#1691)Ellie Huxtable2024-02-12
| | | | | | | 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
* 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>