diff options
| author | Ellie Huxtable <ellie@atuin.sh> | 2026-01-27 20:08:00 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-27 20:08:00 -0800 |
| commit | 8bf57bb05e8836f2f61446fb6b45be2ff82670d7 (patch) | |
| tree | 5c259e9a8f1689a18ea6c2d8c0c23fa6353dccfd | |
| parent | chore(deps): audit ssl deps (#3110) (diff) | |
| download | atuin-8bf57bb05e8836f2f61446fb6b45be2ff82670d7.zip | |
fix: new session on shlvl change (#3111)
eg, the user uses tmux, runs zsh again as a nested session, etc
## Checks
- [ ] I am happy for maintainers to push small adjustments to this PR,
to speed up the review cycle
- [ ] I have checked that there are no existing pull requests for the
same thing
| -rw-r--r-- | crates/atuin/src/shell/atuin.bash | 3 | ||||
| -rw-r--r-- | crates/atuin/src/shell/atuin.fish | 3 | ||||
| -rw-r--r-- | crates/atuin/src/shell/atuin.nu | 3 | ||||
| -rw-r--r-- | crates/atuin/src/shell/atuin.ps1 | 3 | ||||
| -rw-r--r-- | crates/atuin/src/shell/atuin.xsh | 3 | ||||
| -rw-r--r-- | crates/atuin/src/shell/atuin.zsh | 3 |
6 files changed, 12 insertions, 6 deletions
diff --git a/crates/atuin/src/shell/atuin.bash b/crates/atuin/src/shell/atuin.bash index 18c943e2..a57b6801 100644 --- a/crates/atuin/src/shell/atuin.bash +++ b/crates/atuin/src/shell/atuin.bash @@ -12,9 +12,10 @@ else # (include guard) beginning of main content #------------------------------------------------------------------------------ __atuin_initialized=true -if [[ -z "${ATUIN_SESSION:-}" ]]; then +if [[ -z "${ATUIN_SESSION:-}" || "${ATUIN_SHLVL:-}" != "$SHLVL" ]]; then ATUIN_SESSION=$(atuin uuid) export ATUIN_SESSION + export ATUIN_SHLVL=$SHLVL fi ATUIN_STTY=$(stty -g) ATUIN_HISTORY_ID="" diff --git a/crates/atuin/src/shell/atuin.fish b/crates/atuin/src/shell/atuin.fish index 0288e13b..683b0fd7 100644 --- a/crates/atuin/src/shell/atuin.fish +++ b/crates/atuin/src/shell/atuin.fish @@ -1,5 +1,6 @@ -if not set -q ATUIN_SESSION +if not set -q ATUIN_SESSION; or test "$ATUIN_SHLVL" != "$SHLVL" set -gx ATUIN_SESSION (atuin uuid) + set -gx ATUIN_SHLVL $SHLVL end set --erase ATUIN_HISTORY_ID diff --git a/crates/atuin/src/shell/atuin.nu b/crates/atuin/src/shell/atuin.nu index 150309cb..c327ea11 100644 --- a/crates/atuin/src/shell/atuin.nu +++ b/crates/atuin/src/shell/atuin.nu @@ -8,8 +8,9 @@ use (if not ( (version).minor >= 103 ) { "compat" }) * -if 'ATUIN_SESSION' not-in $env { +if 'ATUIN_SESSION' not-in $env or ('ATUIN_SHLVL' not-in $env) or ($env.ATUIN_SHLVL != ($env.SHLVL? | default "")) { $env.ATUIN_SESSION = (random uuid -v 7 | str replace -a "-" "") + $env.ATUIN_SHLVL = ($env.SHLVL? | default "") } hide-env -i ATUIN_HISTORY_ID diff --git a/crates/atuin/src/shell/atuin.ps1 b/crates/atuin/src/shell/atuin.ps1 index 9215ad34..3ff4824a 100644 --- a/crates/atuin/src/shell/atuin.ps1 +++ b/crates/atuin/src/shell/atuin.ps1 @@ -30,8 +30,9 @@ if (!(Get-Module PSReadLine -ErrorAction Ignore)) { } New-Module -Name Atuin -ScriptBlock { - if (-not $env:ATUIN_SESSION) { + if (-not $env:ATUIN_SESSION -or $env:ATUIN_PID -ne $PID) { $env:ATUIN_SESSION = atuin uuid + $env:ATUIN_PID = $PID } $script:atuinHistoryId = $null diff --git a/crates/atuin/src/shell/atuin.xsh b/crates/atuin/src/shell/atuin.xsh index 0ea9514e..a80f29a2 100644 --- a/crates/atuin/src/shell/atuin.xsh +++ b/crates/atuin/src/shell/atuin.xsh @@ -5,8 +5,9 @@ from prompt_toolkit.filters import Condition from prompt_toolkit.keys import Keys -if "ATUIN_SESSION" not in ${...}: +if "ATUIN_SESSION" not in ${...} or ${...}.get("ATUIN_SHLVL", "") != ${...}.get("SHLVL", ""): $ATUIN_SESSION=$(atuin uuid).rstrip('\n') + $ATUIN_SHLVL = ${...}.get("SHLVL", "") @events.on_precommand def _atuin_precommand(cmd: str): diff --git a/crates/atuin/src/shell/atuin.zsh b/crates/atuin/src/shell/atuin.zsh index 562148d9..5a817209 100644 --- a/crates/atuin/src/shell/atuin.zsh +++ b/crates/atuin/src/shell/atuin.zsh @@ -25,8 +25,9 @@ else ZSH_AUTOSUGGEST_STRATEGY=("atuin") fi -if [[ -z "${ATUIN_SESSION:-}" ]]; then +if [[ -z "${ATUIN_SESSION:-}" || "${ATUIN_SHLVL:-}" != "$SHLVL" ]]; then export ATUIN_SESSION=$(atuin uuid) + export ATUIN_SHLVL=$SHLVL fi ATUIN_HISTORY_ID="" |
