aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* 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.
* 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