aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* 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.
* docs: Mention environment variables for custom paths (#1614)Philippe Normand2024-01-23
| | | | Thanks to Ellie and Pete's help on this forum post: https://forum.atuin.sh/t/migration-was-previously-applied-but-is-missing-in-the-resolved-migrations/84
* feat: don't stop with invalid key (#1612)Ellie Huxtable2024-01-22
| | | | | | | | | | | | | An issue with the old sync was that if there was _one_ record encrypted with a different key, sync would stop. You'd need to delete your account and start from scratch. This sucked. This change means we will carry on, and try to encrypt and build with as much of the history as we are able to decrypt. This is possible because we can quite happily store data on disk that we cannot decrypt. The old store couldn't do this. In future, we might consider a keyring containing multiple keys.
* fix(tui): dedupe was removing history (#1610)Ellie Huxtable2024-01-22
| | | | | | | | | | Related: https://forum.atuin.sh/t/search-ignoring-commands/74/5?u=ellie When a user ran a duplicated command, but in another session, it was removed by filters. This is because the subquery that was once used did not have the same filters applied as the main query. Instead of messing with subqueries, `group by` instead. This aligns with the search() function
* feat: make store init idempotent (#1609)Ellie Huxtable2024-01-22
|
* refactor(search): refactor handling of key inputs (#1606)Koichi Murase2024-01-22
|
* feat(search): make cursor style configurable (#1595)Koichi Murase2024-01-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(search): make cursor style configurable The vim mode of the interactive Atuin search changes the cursor style on a mode change, but the current implementation has the following issues. * The terminal's cursor style set by the Atuin search remains after Atuin exits. This causes an inconsistency with the shell's setting for the cursor style. * Also, the cursor style for each keymap mode is currently hardcoded in the source code, which is not necessarily consistent with the user's cursor-style setting in the shell. * Since the current implementation does not set the cursor style for the initial keymap mode but only sets the cursor style when the keymap mode is changed, it also causes inconsistency in the cursor style and the actual keymap when the shell's keymap and Atuin's initial keymap mode are different. This patch solves those issues by introducing an opt-in configuration variable `keymap_cursor`. By default, the vim mode does not change the cursor style because there is no way to automatically determine the cursor style consistent with the shell settings. We enable the feature only when the user specifies the preferred cursor style in each mode in their config. Also, the cursor style is set on the startup of the Atuin search (based on the initial keymap mode) and is reset on the termination of the Atuin search (based on the shell's keymap mode that started the Atuin search). * chore(settings): remove dependency on crossterm
* fix(docs): update repo url in CONTRIBUTING.md (#1594)Dongxu Wang2024-01-22
|
* chore(deps): bump argon2 from 0.5.2 to 0.5.3 (#1603)dependabot[bot]2024-01-22
| | | | | | | | | | | | | | Bumps [argon2](https://github.com/RustCrypto/password-hashes) from 0.5.2 to 0.5.3. - [Commits](https://github.com/RustCrypto/password-hashes/compare/argon2-v0.5.2...argon2-v0.5.3) --- updated-dependencies: - dependency-name: argon2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* report alternate keys so shift still works (#1601)Conrad Ludgate2024-01-21
|
* chore(deps): bump the cargo group across 1 directories with 1 update (#1591)dependabot[bot]2024-01-19
| | | | | | | | | | | | | | | | | | | Bumps the cargo group with 1 update in the /. directory: [h2](https://github.com/hyperium/h2). Updates `h2` from 0.3.22 to 0.3.24 - [Release notes](https://github.com/hyperium/h2/releases) - [Changelog](https://github.com/hyperium/h2/blob/v0.3.24/CHANGELOG.md) - [Commits](https://github.com/hyperium/h2/compare/v0.3.22...v0.3.24) --- updated-dependencies: - dependency-name: h2 dependency-type: indirect dependency-group: cargo-security-group ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: add acquire timeout to sqlite database connection (#1590)Ellie Huxtable2024-01-19
| | | | | | | | | | | | | | | | * fix: add acquire timeout to sqlite database connection This should fix #1503 I wasn't able to trigger enough IO pressure for the SQL connection to be a problem. This adds `local_timeout` to the client config. This is a float, and represents the number of seconds (units in line with the other timeouts, though those are ints). Users may well want to reduce this if they regularly have issues, but by default I think 2s is fine and avoids a non-responsive system in bad situations. * tests
* fix: Use existing db querying for history list (#1589)Peter Holloway2024-01-19
| | | | | When printing the history list with either the session or cwd filter enabled, use to same query method as without either to ensure that the other options (hide deleted entries etc) are respected.
* fix: Escape control characters in command preview (#1588)Peter Holloway2024-01-19
| | | This was missed in the initial change to escape control characters.
* fix: Print literal control characters to non terminals (#1586)Peter Holloway2024-01-19
| | | | | | | | | | | | | | | | * Print literal control characters to non terminals Previous 'fix' to prevent control sequences being interpreted when they shouldn't have been also prevented them being used when they should have been. This checks if the output is to a terminal (where control sequences shouldn't be interpreted) before escaping control characters. * Update atuin/src/command/client/search.rs Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com> --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* Escape control characters using caret notation (#1585)Peter Holloway2024-01-18
| | | Instead of using their equivalent hex codes.
* chore(deps): bump lukemathwalker/cargo-chef (#1474)dependabot[bot]2024-01-17
| | | | | | | | | | | | Bumps lukemathwalker/cargo-chef from latest-rust-1.74.1-buster to latest-rust-1.75.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>
* chore(deps): bump rustix from 0.38.28 to 0.38.30 (#1566)dependabot[bot]2024-01-17
| | | | | | | | | | | | | | | Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.28 to 0.38.30. - [Release notes](https://github.com/bytecodealliance/rustix/releases) - [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.28...v0.38.30) --- updated-dependencies: - dependency-name: rustix dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump debian (#1568)dependabot[bot]2024-01-17
| | | | | | | | | | | | Bumps debian from bullseye-20231120-slim to bullseye-20240110-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>
* feat: add metrics counter for records downloaded (#1584)Ellie Huxtable2024-01-17
|
* feat: make deleting from the UI work with record store sync (#1580)Ellie Huxtable2024-01-17
| | | | | | | * feat: make deleting from the UI work with record store sync * sort cli delete too * teeny bit more logs
* Stop control characters being printed to terminal (#1576)Peter Holloway2024-01-17
| | | | | | | | | | | | | | | | | | | | | If a previous command in the history contained a literal control character (eg via Ctrl-v, Ctrl-[), when the command was printed, the control character was printed and whatever control sequence it was part of was interpreted by the terminal. For instance, if a command contained the SGR sequence `^[[31m`, all subsequent output from `atuin history list` would be in red. Slightly less of a problem, control characters would also not appear in the interactive search widget although they would be printed when selected. This meant `echo '^[[31foo'` would appear as `echo '[31foo'`. When the entry was selected, the same problem as before would occur and, for the example above, `echo 'foo'` would be printed with 'foo' in red. When copied, this command would not behave the same as the original as it would be missing the control sequence. This adds an extension trait to add a method to anything that behaves like a string to escape ascii control characters and return a string that can be printed safely. This string can then be copied and run directly without having to add the control characters back.
* docs: remove old docusaurus (#1581)Ellie Huxtable2024-01-16
|
* feat(search): introduce keymap-dependent vim-mode (#1570)Koichi Murase2024-01-16
| | | | | | | * feat(search): introduce keymap-dependent vim-mode * fix(zsh): provide widgets with specific keymaps * fix(settings): unify "vim" and "keymap_mode"
* feat: add history rebuild (#1575)Ellie Huxtable2024-01-16
| | | | | | | | | | | | | | | | | | | | | | | * feat: add history rebuild This adds a function that will 1. List all history from the store 2. Segment by create/delete 3. Insert all creates into the database 4. Delete all deleted This replaces the old history sync. Presently it's incomplete. There is no incremental rebuild, it can only do the entire thing at once. This is ran by `atuin store rebuild history` * fix tests * add incremental sync * add auto sync
* fix(sync): save sync time when it starts, not ends (#1573)Ellie Huxtable2024-01-15
| | | | | | | | | | | | Imagine the scenario where a sync fails. The function touched here will never save the sync time. That means that external to this function, the sync never happened. The next command will try and start one immediately. The happy scenario is that this succeeds. The unhappy scenario is that this fails. Fails, and isn't saved, so we try again... Should add proper backoff but this is a good start.
* feat: add better error handling for sync (#1572)Ellie Huxtable2024-01-15
| | | | Hopefully this helps users get more descriptive errors, and give more descriptive bug reports
* fix(fish): integration on older fishes (#1563)Matt Godbolt2024-01-15
| | | | | | | | | | | | | | * Fix fish integration on older fishes - On fish 3.3 the bash-style `$(...)` doesn't work, we should use `(...)` - Also quoting `"(moo)"` on older fishes gives a literal `moo` - The result of a `(subcommand)` is a single token, so no need to quote it, anyway Tested by making the change, executing `cargo run -- init fish --disable-up-arrow` and then executing that shell script on a system with fish 3.3, as well as 3.6 and observing both still work. Fixes #1562. * Alternative way of fixing the problem. Compatible with 3.3 and 3.4+
* refactor(search): refactor vim mode (#1559)Koichi Murase2024-01-14
|
* fix: shorten text, use ctrl-o for inspector (#1561)Ellie Huxtable2024-01-14
| | | | | 1. Some shells/terminals seem to directly bind ctrl-i to be tab :( Use ctrl-o for the inspector instead 2. Shorten the help text so it doesn't get squished
* chore: make clipboard dep optional as a feature (#1558)依云2024-01-14
| | | | The cli-clipboard doesn't compile on systems other than Windows, Linux and MacOS, e.g. on Android it fails to compile.
* fix(search): fix invisible tab title (#1560)Koichi Murase2024-01-14
|
* fix(windows): disables unix specific stuff for windows (#1557)YummyOreo2024-01-14
| | | | | * fix(windows): disables unix specific stuff for windows (windows has this on by default iirc) * refactor: use windows not target_family
* feat(ui): vim mode (#1553)YummyOreo2024-01-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat(config): add vim option to config * feat(ui): simple vim mode * fix(windows): windows sadly doesn't support the stuff * feat(ui): blinking * fix(merge) * revert: reverts some debugging stuff * feat(ui): changes the defaut to insert, don't know what should be the default * feat(ui): implements some vim parity * doc: adds this to the docs * docs(keybindings): adds vim mode keybindsings to the list of keybindings * refactor: rustfmt and remove the docs for pr in own repo * refactor: use execute! * Update atuin/src/command/client/search/interactive.rs --------- Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
* fix(perm): set umask 077 (#1554)Ellie Huxtable2024-01-12
| | | | | This ensures no other user can read shell history data Resolves #1250
* feat: Add interactive command inspector (#1296)Ellie Huxtable2024-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Begin work on command inspector This is a separate pane in the interactive mode that allows for exploration and inspecting of specific commands. I've restructured things a bit. It made logical sense that things were nested under commands, however the whole point of `atuin` is to provide commands. Breaking things out like this enables a bit less crazy nesting as we add more functionality to things like interactive search. I'd like to add a few more interactive things and it was starting to feel very cluttered * Some vague tab things * functioning inspector with stats * add interactive delete to inspector * things * clippy * borders * sus * revert restructure for another pr * Revert "sus" This reverts commit d4bae8cf614d93b728621f7985cf4e387b6dc113.
* chore: update funding (#1543)Ellie Huxtable2024-01-10
|
* fix(bash): work around bash < 4 and introduce initialization guards (#1533)Koichi Murase2024-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | * fix(bash): add a guard for interactive shells * fix(bash): add a guard for the Bash version * fix(bash): localize READLINE_LINE in bash < 4 In bash < 4, the variables READLINE_LINE and READLINE_POINT are not supported for the shell commands called by `bind -x`. Even if it is not supported, atuin works in not a bad way. However, this sometimes causes a strange behavior by the remaining values of READLINE_LINE set in the previous calls of __atuin_history. In bash < 4, we can consistently use an empty string instead of $READLINE_LINE, and the changes to READLINE_LINE and READLINE_POINT should be localized within the function. * fix(bash): add guard for double initialization In bash, it is customary to reload the settings by sourcing `.bashrc` again after modifying it. In such a case, `eval "$(atuin init bash)"` is executed again. This registers duplicate hooks to `preexec_functions` and `precmd_functions`. To prevent this in this patch, we introduce an include guard, so that the initialization is not performed more than once.
* feat: add extended help (#1540)Ellie Huxtable2024-01-10
| | | | | | | Given some of the questions we've had lately, I think it's sensible to add extended help to the top of the Atuin window. Future plans: Ctrl-<something else> to open up a help popup, with all common keys
* feat(bash): support high-resolution timing even without ble.sh (#1534)Koichi Murase2024-01-10
| | | | | | | | | | | | | | | | * feat(bash): support high-resolution timing without blesh For the integration using bash-preexec, this measures the execution time of the command using EPOCHREALTIME without the support by ble.sh. This is not as accurate as the measurement by ble.sh as it contains also the processing time of the preexec and precmd hooks, but it is still free from the fork cost. * fix(shell): work around custom IFS for duration When a custom IFS is set by the user, the word splitting of ${duration:+--duration "$duration"} does not work as expected. We instead use the form "--duration=$duration" with the word splitting being disabled.
* refactor(shell): refactor and localize `HISTORY => __atuin_output` (#1535)Koichi Murase2024-01-10
|