Commit Graph

776 Commits

Author SHA1 Message Date
Koichi Murase
434e8238d8
feat(bash): provide auto-complete source for ble.sh (#1487)
* feat(bash): provide auto-complete source for ble.sh

* docs(integration): mention the auto-complete source for ble.sh
2024-01-02 12:35:24 +00:00
Koichi Murase
16309ca198
fix(bash): fix error by the use of ${PS1@P} in bash < 4.4 (#1488)
The parameter expansions for the prompt strings, `${PS1@P}`, is only
available in bash >= 4.4.  In Bash 4.3 or below w/ bash-preexec, the
current implementation produces error messages.  There is no way to
evaluate PS1 with bash < 4.4, so we give up the adjustments for
multiline prompts in bash < 4.4 in this patch.
2024-01-02 12:19:16 +00:00
DS/Charlie
f44db9d7f9
fix(zsh): zsh_autosuggest_strategy for no-unset environment (#1486)
* fix for zsh no-unset environments

* fix zsh_autosuggest_strategy for no-unset environment
2024-01-02 11:53:18 +00:00
Koichi Murase
34baad290c
feat(shell): support high-resolution duration if available (#1484)
* feat(bash): measure duration in microsecond resolution with ble.sh

* feat(zsh): measure duration in nanosecond resolution with zsh/datetime

* refactor(history): use Option<i64> for command-line arg duration

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>

* style(history): apply suggestion by `cargo fmt`

* fix(history): use Option<u64> for arg duration

---------

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2024-01-02 11:40:38 +00:00
Koichi Murase
7f443588cf
fix(bash,zsh): fix quirks on search cancel (#1483)
* fix(bash): preserve the line content on search cancel

In the current implementation for Bash, the line content is lost when
the user cancels the atuin search by pressing ESC, C-g, or Down at the
bottom line.  This is because the line content is set to the empty
string returned by atuin on the cancellation of the search.

In the integrations for other shells, zsh and fish, the empty output
is properly handled so that the line content is preserved.  This patch
makes the behavior in Bash consistent with that in zsh and fish, i.e.,
we do nothing when the atuin search returns an empty output.

* fix(zsh): ignore confusing line `__atuin_accept__:*` on search cancel
2024-01-02 08:40:40 +00:00
Koichi Murase
d9dab6c92d
refactor(bash): refactor and optimize __atuin_accept_line (#1482)
* fix(bash): prefix "__atuin_" to avoid variable conflicts

Because the function "__atuin_history" executes an arbitary user
command for "enter_accept", the local variable names should be
carefully chosen.  A local variable can shadow a global variable that
the user wants to use when there is a name conflict.  To avoid such a
situation we try to namespace the variables used by atuin by prefixing
"__atuin_".

* fix(bash): work around "shopt -s xpg_echo"

* refactor(bash): simplify the rendering of the prompt

* perf(bash): avoid extra evaluation of PS1

* refactor(bash): count \n by wc

We can simply use "wc -l" to count the number of newline characters.
In the POSIX standard, a line in a text stream is defined as
characters terminated by a newline character, so the unterminated line
is not counted by "wc -l".  As a result, "wc -l" actually counts the
number of newline characters.

* refactor(bash): rename localvar `HISTORY => __atuin_command`

This patch renames the local variable `HISTORY` in __atuin_accept_line
to `__atuin_command`.  The name of the global variable `HISTORY` set
by `__atuin_history` is kept.
2024-01-02 08:29:16 +00:00
Ellie Huxtable
5bef19ba4c
docs: update logo (#1481) 2024-01-01 20:11:27 +00:00
Ellie Huxtable
7053823e7f
docs: remove stray character from README 2024-01-01 20:07:12 +00:00
Ellie Huxtable
84bc6e0744
docs: add docs for zsh-autosuggestion integration (#1480)
I've added an integrations page to the docs. We can maintain a list of
such integrations
2024-01-01 20:06:38 +00:00
Ellie Huxtable
356324b341
feat: integrate with zsh-autosuggestions (#1479)
* feat: integrate with zsh-autosuggestions

* Update atuin/src/shell/atuin.zsh

Co-authored-by: Patrick Jackson <patrick@jackson.dev>

* Update atuin/src/shell/atuin.zsh

Co-authored-by: Patrick Jackson <patrick@jackson.dev>

* feedback

---------

Co-authored-by: Patrick Jackson <patrick@jackson.dev>
2024-01-01 19:47:34 +00:00
Conrad Ludgate
e2a4e9cf13
fix(stats): time now_local not working 2024-01-01 16:42:36 +00:00
Koichi Murase
c7db7838e3
refactor(bash): factorize __atuin_accept_line (#1476) 2024-01-01 15:20:16 +00:00
Koichi Murase
1350d3fd74
fix(bash): fix small issues of enter_accept for the plain Bash (#1467)
* fix(bash): history should be updated before preexec

* fix(bash): properly execute "--"

With the current implementation, the user command "--" would not be
executed even if it were the intended one.  This is because it would
be confused as an option by the "eval" builtin.  We can specify "--"
to tell "eval" that the later arguments should be literally treated as
the command.

* fix(bash): correctly restore $? and $_

* fix(bash): fix the use of preexec_ret_value

The exit status of preexec_ret_value is used to suppress the execution
of the corresponding command in the extdebug mode.  The current
implementation somehow tries to set $? before the call of stty, which
does not have any effect.  Instead, we can manually turn off the
execution of the user command when the condition matches.

* feat(bash): support array PROMPT_COMMAND of Bash >= 5.1
2024-01-01 14:26:02 +00:00
Ellie Huxtable
7fe152a8a7
fix(install): discord broken link 2023-12-31 19:15:44 +00:00
Ellie Huxtable
9d4fdf71d0
fix(docs): discord link expired 2023-12-31 19:14:24 +00:00
Koichi Murase
a4122f062a
fix(bash): improve the support for enter_accept with ble.sh (#1465)
* feat(bash): check version of ble.sh

blehooks are only supported in ble.sh >= 0.4, so we require the ble.sh
version to be larger or equal to 0.4.  We also describe the version
requirement in README.md.

* fix(bash): use ble.sh's contrib/integration/bash-preexec

ble.sh provides module "contrib/integration/bash-preexec", which can
be used with the same interface as bash-preexec.  This module provides
"preexec_functions" and "precmd_functions" without requiring
bash-preexec.

This module also properly handles it when both ble.sh and bash-preexec
are loaded; the module resolves the conflicts between ble.sh and
bash-preexec, and the module also tries to support bash-preexec in the
detached state of ble.sh.

* fix(bash): use ble.sh's accept-line widget for enter_accept

In ble.sh, one can directly call the widget "accept-line" from a shell
script.  The widget "accept-line" is the actual widget that reserves
the command execution in ble.sh, so calling "accept-line" is
equivalent to the normal execution.  It includes all the necessary
adjustments and processing including stty and history.

In addition, the command will be executed at the top-level context
instead in a function scope.  For example, without ble.sh, running
"declare -A dict=()" through enter_accept will create an associative
array in the function scope unexpectedly.  With ble.sh, since the
command is executed at the top-level context, such a problem does not
happen.

When ble.sh is in a detached state, we fall back to the manual
execution of the command.  In this case, we cannot assume the
existence of the shell function "__bp_set_ret_value", so we always use
__atuin_set_ret_value.
2023-12-28 20:08:45 +00:00
Ellie Huxtable
5401ff12b7
fix(clippy): ignore struct_field_names (#1466)
In these cases, I think that's a _little_ too pedantic.
2023-12-28 20:02:11 +00:00
Koichi Murase
be1f6fd5ca
fix(bash): fix loss of the last output line with enter_accept (#1463)
With a single-line prompt, the last line of the output of the previous
command is overwritten by the prompt on the enter_accept.  In this
situation, `tput cuu` receives 0 as the argument, but `tput cuu 0`
emits the control sequence `\e[0A`, which moves the cursor above by
one line unexpectedly.  This is because the parameter 0 for CUU means
the default value, 1.  In this patch, to avoid moving the cursor when
the prompt offset is 0, we check the offset value before running `tput
cuu`.
2023-12-28 19:34:34 +00:00
Eric Hodel
d52e576129
feat: Add TLS to atuin-server (#1457)
* Add TLS to atuin-server

atuin as a project already includes most of the dependencies necessary
for server-side TLS.  This allows `atuin server start` to use a TLS
certificate when self-hosting in order to avoid the complication of
wrapping it in a TLS-aware proxy server.

Configuration is handled similar to the metrics server with its own
struct and currently accepts only the private key and certificate file
paths.

Starting a TLS server and a TCP server are divergent because the tests
need to bind to an arbitrary port to avoid collisions across tests.  The
API to accomplish this for a TLS server is much more verbose.

* Fix clippy, fmt

* Add TLS section to self-hosting
2023-12-27 14:15:48 +00:00
Ellie Huxtable
86f50e0356
feat: add semver checking to client requests (#1456)
* 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
2023-12-20 09:03:04 +00:00
dependabot[bot]
42ac150fe3
chore(deps): bump lukemathwalker/cargo-chef (#1425)
Bumps lukemathwalker/cargo-chef from latest-rust-1.74.0-buster to latest-rust-1.74.1-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>
2023-12-19 07:58:29 +00:00
Conrad Ludgate
7aeea1c050
chore(deps): uuidv7 stable (#1451) 2023-12-16 19:21:04 +00:00
Conrad Ludgate
ec131c7c96
update basically everything (#1452) 2023-12-16 19:20:40 +00:00
Ellie Huxtable
d58192ff55
docs(readme): use picture element for logo 2023-12-16 09:23:31 +00:00
Ellie Huxtable
206157dd23
docs(readme): fix light/dark mode logo 2023-12-16 09:20:57 +00:00
Ellie Huxtable
7fe96ff2b7
docs: correct link 2023-12-14 09:02:15 +00:00
Ellie Huxtable
1d0f05b6fb
docs: add fish install script (#1447) 2023-12-14 08:19:51 +00:00
Marcin Puc
a973697724
docs: add Void Linux install instruction (#1445)
* docs(readme): add Void Linux install instruction

* docs: add Void Linux install instruction to advanced-install.md
2023-12-14 08:19:42 +00:00
Ellie Huxtable
57b5b03c11
docs: align setup links in docs and readme (#1446) 2023-12-14 08:04:54 +00:00
Ellie Huxtable
1945c9fb3a
chore: remove issue template (#1444) 2023-12-12 23:46:41 +00:00
Ellie Huxtable
2d922d4069
docs: add link to forum 2023-12-12 23:42:14 +00:00
Ellie Huxtable
8a3834f9c8
docs(readme): add actuated linkback
Thanks again for the sponsorship @alexellis

ref: https://docs.actuated.dev/faq/#is-there-a-sponsored-subscription-for-open-source-projects
2023-12-12 15:33:19 +00:00
Dennis Trautwein
901459b805
fix(shell): respect ZSH's $ZDOTDIR environment variable (#1441) 2023-12-12 10:03:22 +00:00
Ellie Huxtable
7019697fae
Update README.md logo height 2023-12-12 09:43:22 +00:00
Ellie Huxtable
c77b749e62
Update README.md logo 2023-12-12 09:42:49 +00:00
sdr135284
218521226f
fix(history): disallow deletion if the '--limit' flag is present (#1436)
Co-authored-by: sdr13528 <sdr13528@users.noreply.github.com>
2023-12-11 20:20:31 +00:00
Ramses
edc495895a
fix(stats): don't require all fields under [stats] (#1437)
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.
2023-12-11 20:16:41 +00:00
Josef Friedrich
3c7f6991e3
fix(docs): fix typo (#1439) 2023-12-11 20:16:11 +00:00
Conrad Ludgate
9ca8f10bf3
fix blocking for #1381 (#1438) 2023-12-11 18:06:14 +00:00
Ellie Huxtable
04903bf526
chore(repo): remove issue config (#1433) 2023-12-10 13:26:19 +00:00
Ellie Huxtable
da2e58fbb1
chore(release): prepare for release v17.1.0 (#1432) 2023-12-10 13:00:59 +00:00
Ellie Huxtable
3db71f2c1c
chore: setup git cliff (#1431) 2023-12-10 12:26:28 +00:00
Ellie Huxtable
913c5a0d94
chore(readme): add contributor image to README (#1430) 2023-12-10 11:13:43 +00:00
Dennis Trautwein
bdd7fe661f
fix: respect ZSH's $ZDOTDIR environment variable (#942)
ZSH reads its configuration by default relative to a path that's set via $ZDOTDIR. If $ZDOTDIR is not set, then the value of $HOME is used; this is the usual case. Source:  https://zsh.sourceforge.io/Intro/intro_3.html#IDX11

Also $HOME is save to use, because "The system shall initialize this variable at the time of login to be a pathname of the user's home directory". Source: https://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html

Lastly, the shell parameter expansion syntax is save to use generically: https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02

Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
2023-12-09 17:52:09 +00:00
Ellie Huxtable
de6221942a
chore: don't group deps (#1424) 2023-12-09 17:44:10 +00:00
Ellie Huxtable
f35ef7459b
chore: run dependabot weekly, not daily (#1423)
* chore: run dependabot weekly, not daily

* group it all
2023-12-09 17:41:51 +00:00
dependabot[bot]
70a283a194
Bump unicode-width from 0.1.10 to 0.1.11 (#1243)
Bumps [unicode-width](https://github.com/unicode-rs/unicode-width) from 0.1.10 to 0.1.11.
- [Commits](https://github.com/unicode-rs/unicode-width/compare/v0.1.10...v0.1.11)

---
updated-dependencies:
- dependency-name: unicode-width
  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>
2023-12-09 17:40:54 +00:00
dependabot[bot]
afbd249fa4
Bump futures-util from 0.3.28 to 0.3.29 (#1344)
Bumps [futures-util](https://github.com/rust-lang/futures-rs) from 0.3.28 to 0.3.29.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.28...0.3.29)

---
updated-dependencies:
- dependency-name: futures-util
  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>
2023-12-09 17:40:43 +00:00
dependabot[bot]
114a6a61af
Bump futures from 0.3.28 to 0.3.29 (#1345)
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.28 to 0.3.29.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.28...0.3.29)

---
updated-dependencies:
- dependency-name: futures
  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>
2023-12-09 17:40:35 +00:00
dependabot[bot]
5ce2a4a677
Bump serde_json from 1.0.107 to 1.0.108 (#1363)
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.107 to 1.0.108.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.107...v1.0.108)

---
updated-dependencies:
- dependency-name: serde_json
  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>
2023-12-09 17:40:22 +00:00