Repository navigation
Atuin history provider #144
Description
Activity
- addedarea:shellShell backend and integrationShell backend and integrationarea:compatibilityCompatibility with CLI/TUI toolsCompatibility with CLI/TUI toolstype:researchResearch or investigation taskResearch or investigation task
on Sep 27, 2026 - added a parent issue
on Sep 27, 2026 Decision: adopt an explicit optional Atuin provider, with NMSh Native as the default, replacing the prior automatic Atuin preference. The user approved this persisted choice/default change. Select it in Config → Command history provider; the shared provider gallery detects installation/version and Status reports the active source/fallback.
The installed Atuin 18.22.0 help and upstream CLI source expose time, cwd, exit, duration, session and UUID via history list --format/--print0. Duration is a largest-unit display value, so imported durations are approximate. Tabs/newlines in commands survive the fixed-prefix field format. Unknown duration stays unknown.
NMSh uses only local history list, with detached execution, cancellation, a 15-second timeout and 128MiB output limit. No sync/start/end/delete operations are invoked; recording remains owned by the existing zsh hooks. NMSh therefore adds no second Atuin recording path. The upstream history-end path may sync according to the user's existing setup; these hooks are preserved, not altered.
CLI data is loaded in the background on startup or provider change and cached in memory, not fetched per keystroke. Search uses the same bounded/cancellable index as Native. Missing, failed or incompatible tools fall back to Native and expose the reason. Synthetic provider tests verify operation argv and fallback without reading private user history. 100k indexed query measurements are in the performance documentation; local real-database CLI latency has not been benchmarked. Source formats remain optional; Native journals provide exact NMSh timing.
#144 stays open under the milestone release policy.
Development implementation is reviewable in #236, with cumulative hardening in #240; final acceptance documentation is #241. These are dependent, unmerged PRs on current dev, with no release/version bump.
The complete code head passed 714 local tests, build, typecheck, benchmark types and diff checks, plus Node 22/26 CI. Architecture and limitations describe what is implemented and deferred. One physical-QA checklist covers the relevant keyboard/layout/provider/privacy checks; it has not been performed.
This issue stays open until release. Project status could not be updated because the available token lacks read:project; active branches/PRs provide durable work status.
Implemented on the v0.16 branch (PR #303,
feature/v016-platform-portability-agents). Explicit, read-only Atuin history provider with detection, status and Native fallback:src/shell/historyProviders.ts,tests/historyProviders.test.ts. It was part of the integrated build the maintainer physically validated in the earlier v0.16 QA pass; closing with the implementation.
Goal
Optional support for users who already use Atuin. Native history remains the default. Sync/cloud is never required.
Current state (important)
HistoryServicealready shells out toatuin history list --cmd-onlywhen Atuin is installed, silently preferring it over$HISTFILE. Atuin recording hooks are preserved in the managed zsh (#16).Research questions
Acceptance criteria
Dependencies / related
Part of #143. Related #16, #9.
Research references