aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-client (follow)
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
* 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>
* 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>
* 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
|
* 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: 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.
* 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
* 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
* 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>
* 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.
* feat: include atuin login in secret patterns (#1518)Matthew Berryman2024-01-08
| | | | | * include atuin login in secret patterns * doc catchup
* refactor: String -> HistoryId (#1512)Ellie Huxtable2024-01-06
|
* feat: rework record sync for improved reliability (#1478)Ellie Huxtable2024-01-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: rework record sync for improved reliability So, to tell a story 1. We introduced the record sync, intended to be the new algorithm to sync history. 2. On top of this, I added the KV store. This was intended as a simple test of the record sync, and to see if people wanted that sort of functionality 3. History remained syncing via the old means, as while it had issues it worked more-or-less OK. And we are aware of its flaws 4. If KV syncing worked ok, history would be moved across KV syncing ran ok for 6mo or so, so I started to move across history. For several weeks, I ran a local fork of Atuin + the server that synced via records instead. The record store maintained ordering via a linked list, which was a mistake. It performed well in testing, but was really difficult to debug and reason about. So when a few small sync issues occured, they took an extremely long time to debug. This PR is huge, which I regret. It involves replacing the "parent" relationship that records once had (pointing to the previous record) with a simple index (generally referred to as idx). This also means we had to change the recordindex, which referenced "tails". Tails were the last item in the chain. Now that we use an "array" vs linked list, that logic was also replaced. And is much simpler :D Same for the queries that act on this data. ---- This isn't final - we still need to add 1. Proper server/client error handling, which has been lacking for a while 2. The actual history implementation on top This exists in a branch, just without deletions. Won't be much to add that, I just don't want to make this any larger than it already is The _only_ caveat here is that we basically lose data synced via the old record store. This is the KV data from before. It hasn't been deleted or anything, just no longer hooked up. So it's totally possible to write a migration script. I just need to do that. * update .gitignore * use correct endpoint * fix for stores with length of 1 * use create/delete enum for history store * lint, remove unneeded host_id * remove prints * add command to import old history * add enable/disable switch for record sync * add record sync to auto sync * satisfy the almighty clippy * remove file that I did not mean to commit * feedback
* chore(release): prepare for release v17.2.1 (#1495)Ellie Huxtable2024-01-03
|
* chore(release): prepare for release v17.2.0 (#1492)Ellie Huxtable2024-01-03
|
* fix(import/zsh): zsh use a special format to escape some characters (#1490)依云2024-01-03
| | | | | | | | | | * fix(import/zsh): zsh use a special format to escape some characters unescape those correctly rather than throw them away. zsh side code: https://github.com/zsh-users/zsh/blob/9f57ca4ac8ae071727b1d77cbb8c4c0d893b9099/Src/utils.c#L4889-L4900 * fix code style
* fix(stats): time now_local not working Conrad Ludgate2024-01-01
|
* feat: add semver checking to client requests (#1456)Ellie Huxtable2023-12-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * feat: add semver checking to client requests This enforces that the client and the server run the same major version in order to sync successfully. We're using the `Atuin-Version` http header to transfer this information If the user is not on the same MAJOR, then they will see an error like this > Atuin version mismatch! In order to successfully sync, the client and the server must run the same *major* version > Client: 17.1.0 > Server: 18.1.0 > Error: could not sync records due to version mismatch This change means two things 1. We will now only increment major versions if there is a breaking change for sync 2. We can now add breaking changes to sync, for any version >17.1.0. Clients will fail in a meaningful way. * lint, fmt, etc * only check for client newer than server * Add version header to client too
* fix(stats): don't require all fields under [stats] (#1437)Ramses2023-12-11
| | | | | | | | | | | | | | | | | | | Before this change, when configuring only `common_subcommands` and not `common_prefix` (so it would take its default value), atuin produces an error message: ``` Error: could not load client settings Caused by: failed to deserialize: missing field `common_prefix` Location: atuin-client/src/settings.rs:456:26 Error: could not load client settings Caused by: failed to deserialize: missing field `common_prefix` Location: atuin-client/src/settings.rs:456:26 Error:: command not found ``` With this change, the fields can be specified separately and missing fields will take their default values.
* fix(docs): fix typo (#1439)Josef Friedrich2023-12-11
|
* chore(release): prepare for release v17.1.0 (#1432)Ellie Huxtable2023-12-10
|
* chore: update rusty_paseto and rusty_paserk (#1420)Ellie Huxtable2023-12-02
|
* docs: new stats config (#1412)Ellie Huxtable2023-11-23
|
* feat: allow configuring stats prefix (#1411)Ellie Huxtable2023-11-23
|
* fix: initial list of history in workspace mode (#1356)Ellie Huxtable2023-10-29
| | | | The initial list didn't correctly show all history while in workspace mode, while it worked totally as expected while searching. Fix this.
* Release v17.0.1 (#1354)Ellie Huxtable2023-10-28
|
* Remove duplicate "invert" in default config (#1338)Michael Vincent2023-10-26
|
* Fix deleted history count (#1328)Ellie Huxtable2023-10-25
|
* Prepare release v17.0.0 (#1327)Ellie Huxtable2023-10-25
|
* Correct some secrets filter regex (#1326)Ellie Huxtable2023-10-25
|
* Add enter_accept to immediately execute an accepted command (#1311)Ellie Huxtable2023-10-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * make enter execute the command, tab copy it * Add config for enter_accept enter_accept will make Atuin immediately accept an execute a command when selected. It defaults to false in our binary, but the default config enables it. This means that users who already use atuin will not default to the new behaviour unless they opt in, but new users will have it by default. Thanks to @davidhewitt for the patch and bulk of this implementation! Currently we have it just for zsh, but I'll follow up with other shells (unless anyone beats me to it :D) * Add docs * we need to tidy up the ui code anyway * Check if using zsh * Update docs/docs/config/config.md Co-authored-by: Conrad Ludgate <conradludgate@gmail.com> --------- Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com> Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
* Add commands to print the default configuration (#1241)Tobias Genannt2023-10-12
| | | | | | | | | | | | | * Add commands to print the default configuration When updating a software I often want to compare my configuration with the configuration of the new version. To make this possible atuin can now print the default configuration. This also updates the example files with the actual values used as default in the settings.rs files. * Changed command name to 'default-config' * Fixed merge
* clear history id (#1263)Conrad Ludgate2023-10-08
| | | | | * clear history id * fix nu
* Fix/1207 deleted entries shown in interactive search (#1272)Dieter Eickstaedt2023-10-04
|
* fix sync timestamps (#1258)Conrad Ludgate2023-09-28
| | | | | | | * fix timestamp * add sync test * skip all sync tests
* handle missing entries (fixes #1236) (#1253)Conrad Ludgate2023-09-26
| | | | | * fix #1236 * lints
* better sync error messages (#1254)Conrad Ludgate2023-09-26
|
* refactor: Duplications reduced in order to align implementations of reading ↵Dieter Eickstaedt2023-09-23
| | | | history files (#1247)
* Add connect timeout and overall timeout (#1238)Ellie Huxtable2023-09-18
| | | | | | | | | * Add connect timeout and overall timeout * Make it configurable * Fix test * Add docs
* feat(keyup): Configure SearchMode for KeyUp invocation #1216 (#1224)Dieter Eickstaedt2023-09-17
| | | | | | | | | | | * feat(keyup): Configure SearchMode for KeyUp invocation #1216 * docs: adjusted search mode documentation * feat: setting search mode on engine * chore: cargo fmt * chore: removed redundant field name
* Update config.toml: List inverted mode (#1226)Matheus Martins2023-09-14
|
* Bump shellexpand from 2.1.2 to 3.1.0 (#1186)dependabot[bot]2023-09-13
| | | | | | | | | | | | | | Bumps [shellexpand](https://gitlab.com/ijackson/rust-shellexpand) from 2.1.2 to 3.1.0. - [Commits](https://gitlab.com/ijackson/rust-shellexpand/compare/shellexpand/2.1.2...shellexpand-3.1.0) --- updated-dependencies: - dependency-name: shellexpand dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>