aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@atuin.sh>2026-01-27 20:08:00 -0800
committerGitHub <noreply@github.com>2026-01-27 20:08:00 -0800
commit8bf57bb05e8836f2f61446fb6b45be2ff82670d7 (patch)
tree5c259e9a8f1689a18ea6c2d8c0c23fa6353dccfd
parentchore(deps): audit ssl deps (#3110) (diff)
downloadatuin-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.bash3
-rw-r--r--crates/atuin/src/shell/atuin.fish3
-rw-r--r--crates/atuin/src/shell/atuin.nu3
-rw-r--r--crates/atuin/src/shell/atuin.ps13
-rw-r--r--crates/atuin/src/shell/atuin.xsh3
-rw-r--r--crates/atuin/src/shell/atuin.zsh3
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=""