Changelog
Full release history for Suvadu.
Also available on GitHub Releases and CHANGELOG.md.
v0.4.1
Latest- added Codex session capture — incremental native transcript import at Stop/SessionEnd captures prompts and final answers independent of shell commands, plus provider-reported token counters without double-counting cumulative updates. Inspect with
suv agent sessions/suv agent session, import withsuv agent import-session, remove withsuv agent delete-session. - added Claude Code session capture —
suv init claude-codeinstalls Stop/SessionEnd reconciliation hooks that incrementally capture human prompts, assistant text, every observed model, and deduplicated provider-reported usage (cache-read/cache-creation tokens normalized into total input while staying visible separately in the raw session data). Thinking blocks, attachments, images, file contents, and tool results are excluded. - added OpenCode session capture — prompts, assistant responses, model, and token usage are now captured in addition to the existing bash-command tracking, via OpenCode's own
session.messagesAPI when a session goes idle.suv init opencodenow also registers the plugin directory in OpenCode's config automatically, closing a gap where the plugin installed but was never actually loaded. - added Cross-agent MCP session summaries —
list_agent_sessions,get_agent_session, andresolve_current_agent_sessionlet any connected agent summarize a captured session by ID or resolve "current session" conservatively. Long sessions are processed page by page into compact running notes with evidence IDs; saved summaries are reusable checkpoints that extend safely from their last offsets, or rebuild fully if earlier evidence changed. - added Unified session browser —
suv sessionsnow combines human terminal sessions, command-backed agent sessions, and native Codex/Claude Code/OpenCode sessions in one picker (Ctrl+Tcycles All/Human/AI). AI timelines show captured prompts, responses, commands, model changes, and provider-reported token totals, including sessions with no commands. - added AI-session summary panel — press
son an AI session insuv sessionsto view its saved summaries in a scrollable overlay.Tabtoggles between a lightweight rendered view and the raw markdown,Ctrl+Ycopies the raw markdown, and[/]cycle between multiple saved summaries for the same session. - added Builtin session-memory skill —
suv init claude-codeandsuv skills syncnow seed and materialize a suvadu-ownedsuvadu-session-memoryskill (gated onmcp.allow_session_summaries = true) that steers connected agents toward Suvadu's own session-summary tools instead of writing a generic local memory note. Reaches Claude Code, and — since skills aren't host-restricted — Cursor's project rules and Codex'sAGENTS.mdtoo on a default sync. - fixed
suv mcp-serveno longer disconnects before completing the MCP handshake when the local database was already migrated to a newer schema by a different Suvadu build — every tool/resource call now reports the underlying database error instead of the connected host seeing an opaque "Connection closed". - fixed Codex
response_itemtranscripts now capture real user prompts and final assistant answers while excluding developer instructions, injected environment context, commentary, reasoning, and duplicate item-completion records; imports also accept bounded records up to 16 MiB for image-bearing prompts and compaction snapshots. - fixed Up/Down navigation now continues across page boundaries in Search, Sessions, Agent Dashboard, and both Prompt Explorer views (this also fixes trackpad/scroll-wheel gestures on terminals that send them as Up/Down key presses), while explicit Left/Right page navigation still works as before.
v0.4.0
- added Shared skills library —
suv skillskeeps reusable instructions in one place instead of every AI tool maintaining its own copy.suv skills add/list/show/edit/rmmanage skills scoped toglobalor a specific project directory; three new read-only MCP tools (list_skills,get_skill,search_skills) plus a client-readablesuvadu://skills/indexresource let any MCP-capable agent discover and read them directly. - added
suv skillsis now a full interactive management app — baresuv skills(no subcommand) launches a TUI to browse/filter skills with a live preview, add or edit one (body edited via$EDITOR), delete with confirmation, trigger a sync, and approve/reject pending agent-proposed skills.add/list/show/edit/rm/synckeep working exactly as before for scripting. - added
suv skills sync— materializes active skills into each agent's own native format (~/.claude/skills/<name>/SKILL.md,.cursor/rules/<name>.mdc, a managed block inAGENTS.mdfor Codex) for hosts that don't pull from MCP. Idempotent — only rewrites a file when its content actually changed, and never touches hand-written content around its managed section. - added
propose_skillMCP tool (off by default) — lets an agent propose a new skill, saved aspending_reviewonly, never active. Enable withmcp.allow_skill_proposals = trueinconfig.toml; a human approves or rejects proposals from the review queue insuv skills(Ctrl+P). Disabled by default since a skills store readable and writable by agents is a shared-memory poisoning target — the gate is checked before the proposal write connection is opened. - added MCP server now exposes 3 prompts —
project_briefing,check_recent_failures, andassess_command_riskare reusable, parameterized requests a client can surface directly (often as slash commands), instead of relying on the connected model to decide on its own to call a tool. Theinitializehandshake'sinstructionsfield is also now directive rather than purely descriptive, telling a connecting client when to proactively callproject_context/learn_from_failures/assess_risk/list_skills. - added Risk assessment now catches obfuscated commands —
eval, decoding base64 into a shell, and command substitution wrapping a destructive/network command (e.g.echo $(curl ... | sh)) are now flagged, closing a gap where wrapping a dangerous command in indirection let it slip past risk assessment entirely. You can also flag your own org-specific risky commands with a newagent.risk_extra_patternsconfig list (regex + level + description). - added Prompt Explorer gets an always-on search box and filters —
suv agent promptsnow live-filters by prompt text as you type, withCtrl+P/Ctrl+Acycling time period/executor andCtrl+Sjumping to a prompt's session timeline, mirroringsuv search's conventions. - added
suv guard <command>— assess a command's risk before it runs and exit non-zero if it's too dangerous, for use in git hooks, CI, or a zsh widget (documented in--help) that blocks risky commands interactively before they execute. - added Per-project config overlay — drop a
.suvadu.tomlin a project directory (or the nearest ancestor containing one) to supply project overrides for command recording, CLI risk rules, and the theme, e.g. a stricter risk policy or a different exclusions list for one sensitive repo. Table fields merge key-by-key, so the overlay only needs to name what it's actually changing. - added
suv bookmarks(renamed fromsuv bookmark, old name kept as an alias) opens a full interactive picker — fuzzy-search and recall a bookmarked command, or add, edit, and delete bookmarks right from the TUI (Ctrl+A/Ctrl+E/Ctrl+D) instead of separateadd/removeinvocations for every change. Opens even with zero bookmarks saved yet. - added
suv aliases(renamed fromsuv alias, old name kept as an alias) opens a full interactive manager — fuzzy-search your aliases, or add, edit, and delete them right from the TUI (Ctrl+A/Enter/Ctrl+D); TUI changes regenerate the sourcedaliases.shwhile aliases remain, so it's live in new shells without a separatesuv aliases apply.add/remove/list/apply/add-suggested/suggestkeep working exactly as before for scripting. - changed Command search is faster —
suv search/Ctrl+Rsubstring matching is now backed by a trigram full-text index instead of a full table scan, so search stays fast as your history grows. Same results, just quicker. - changed
suv --helpgroups commands by purpose (Setup, Search & recall, Insights & safety, Organize, Data, AI integration, Other) instead of one flat list, and surfaces theCtrl+R/arrow-key shortcuts up top. - changed Visual consistency pass across
suv search,suv agent dashboard,suv agent prompts,suv agent stats,suv stats,suv skills,suv bookmarks,suv aliases suggest, andsuv sessions— all now share the same centeredSUVADU <SCREEN>title and footer badge styling with Quit listed first; the search-driven screens also share an always-on live-filter search box andCtrl+<letter>shortcuts. The dashboard's agent/risk summary, the prompt detail view's session info, and the session timeline's session info are now shown in their own boxed panels instead of dense single lines, agent stats' cards use rounded borders, and its High Risk Commands table now fills the available width instead of truncating commands at a fixed 30 characters. - changed
suv sessionrenamed tosuv sessions(old name kept as an alias) — same session picker and timeline as before; the picker's search box is now always-on like every other search-driven screen (Esc quits immediately instead of clearing the query first, and letters/digits are always query text rather than doubling asq/vim-style navigation shortcuts). - fixed
mcp.exclude_dirsis now actually enforced — the setting was configurable viasuv settingsand saved toconfig.toml, but no MCP tool or resource handler applied it, so a directory you excluded could still surface in a connected agent's queries. Every MCP tool and resource now filters it out, matching the directory and its subtree, with~expanding to your home directory. - fixed Closing a session timeline from
suv sessionsnow returns to the session list instead of exiting straight back to the shell — previously the only way out of a timeline was closing the picker entirely. - fixed Pasting a multi-line skill into
suv skills' Add/Edit form no longer misfires — Enter used to submit the form (jumping straight to$EDITORfor the body) regardless of which field had focus, so a paste with an embedded line break could launch the editor before later fields were even filled in. Enter now advances fields like Tab, only submitting on the last one; the form is also bigger and each field caps at 200 characters. - fixed
suv stats's content boxes now use rounded borders, andsuv settings' title matches every other screen — the earlier visual-consistency pass fixed both screens' title/footer styling but missedsuv stats' border style and never touchedsuv settings' title casing. - fixed Prompt Explorer's Session field now shows the full session ID instead of truncating to 8 characters — for agent-run entries that ID is the underlying agent's own session ID (e.g. Claude Code's), and the truncated form wasn't enough to do anything useful with it, like
claude --resume <id>.
v0.3.7
- added Codex CLI is now a first-class agent integration —
suv init codexinstalls hooks that capture both prompts and shell commands, merging into any hooks you already have in~/.codex/hooks.jsonrather than overwriting them, and auto-registers the suvadu MCP server in~/.codex/config.tomlso Codex can query your shell history directly. The config file is edited in place, so existing comments and formatting survive untouched. - fixed
.bashrccommands sourced before the first prompt are no longer recorded as if you'd typed them — bash'sDEBUGtrap fires for every command bash runs, not just ones typed interactively, so setup lines left in.bashrcafter theeval "$(suv init bash)"line were getting captured at the first prompt.
v0.3.6
- added
PageUp/PageDown/Home/Endnavigation in the search TUI —PageUp/PageDownscroll 10 rows at a time,Home/Endjump to the first/last result. Works in both normal and vim-normal modes. - fixed Codex CLI commands are now auto-recognized as agent activity — detection checked for
CODEX_CLI, which Codex never actually sets; it now checksCODEX_THREAD_ID, the variable Codex really exports. - fixed
cargo testno longer backgrounds itself under Bash/Zsh alias detection — concurrent interactive alias-detection shells could raiseSIGTTOUand suspend the whole test process. These shells are now detached into their own session.
v0.3.5
- added "Bookmarks only" search filter —
Ctrl+Oin the search TUI shows just your bookmarked commands. - fixed
brew installon Linux installed the wrong binary — the Homebrew formula only ever pointed at the macOS build, causing an "Exec format error" on Linux (x86_64 and aarch64). Release automation now publishes and selects the correct binary per OS/architecture. - fixed Shell hooks now self-heal a stale
suvbinary path after switching install methods (e.g.cargo install→brew), instead of silently breaking command recording. - fixed Recorded timestamps and durations were wrong under comma-decimal locales (Polish, German, French, and others) —
$EPOCHREALTIMEparsing now forcesLC_ALL=C.
v0.3.4
- changed Recall now hides AI-agent commands by default — Up-arrow and
Ctrl+Rshow your own commands only. Toggle live withCtrl+A/Alt+A, per-run with--include-agents, or setsearch.recall_show_agentsin config. Up-arrow is also recency-first, so a command typed in another directory isn't buried aftercd. - changed Search ranking overhauled — results must contain your typed words as literal substrings (loose character-subsequence matching removed), ranked prefix → contiguous → in-order words → any-order. Searching for something absent now returns nothing.
- added
suv backup [--out PATH]— snapshot the history database; one is also taken automatically before any destructivesuv delete(--no-backupto skip). - added
suv bookmark pick— interactive picker that recalls a saved bookmark into your prompt. - added "Failed only" search filter —
Ctrl+Ein the search TUI orsuv search --failed. - added
suv stats --human— analytics excluding agent activity (also thehtoggle in the stats TUI). - added
suv agent report --fail-on <low|medium|high|critical>— non-zero exit for local CI checks and git hooks. - added Configurable
agent.prompt_capture_max_chars(default raised 500 → 4000) andredaction.extra_patterns(your own secret regexes). - added Idempotent JSONL import —
suv importdeduplicates (--allow-duplicatesto opt out); new risk patterns forgit clean -f, world-writablechmod, andchown -R. - fixed Secret redaction no longer mangles
docker -p/ssh -p/curl -u, and now redacts@-in-password and password-only database URIs; fixed MCP UTF-8 panics on multibyte output. - fixed Destructive prompts (
suv delete/suv uninstall) refuse a pipedywhen stdin is not an interactive terminal.
v0.3.3
- fixed Cross-machine
suv export→suv importno longer dies with a FOREIGN KEY error on a fresh database — the importer auto-creates a placeholder session for unknownsession_ids and re-maps each entry'stag_idvia the carried-overtag_name(creating the tag locally if it doesn't exist). - fixed
suv importrejects non-JSONL files (e.g. an accidentally-piped CSV) up front with a clear, single-line error pointing atsuv export > history.jsonl, instead of spewing a parse error for every line. - fixed
suv export --format jsonwith zero matching entries now emits[]instead of an empty file, so downstream JSON parsers accept it.
v0.3.2
- added Paste support in search TUI —
Cmd+V/Ctrl+Vworks in the search pane and all dialog inputs (filter, note, go-to-page). Pasted text is sanitized and respects the 2000-char limit. - fixed Reduced false positives in secret redaction — env vars like
AUTHOR_NAME,TOKENIZERS_PARALLELISM,PASSWORD_FILEare no longer incorrectly redacted. Sensitive keywords must now appear as the final segment of the variable name. - fixed Bash octal parsing error — fixed
value too great for basecrash whenEPOCHREALTIMEmilliseconds had a leading zero (e.g.,068).
v0.3.1
- added
suv history— non-interactive history dump with all standard filters,--jsonoutput, and-nlimit. Pipeable to other tools. - added
suv doctor— diagnostic command that checks shell version, hooks, config, database health, recording state, MCP registration, and agent hooks. - added Configurable search scoring —
length_threshold,human_boost_percent,cwd_boost_percentin[search]config. Tune ranking viasuv settings. - added pi.dev agent integration —
suv init piinstalls a TypeScript extension for command and prompt capture. - changed Session filenames now use full UUID instead of truncated 8-character prefix.
v0.3.0
- added
find_agent_session— search past AI agent sessions by prompt text, directory, executor, or date range. Returns summaries with command counts, success rates, and resume commands. - added
replay_agent_session— full chronological timeline of a specific agent session with prompts interleaved between commands. - added
learn_from_failures— analyze recurring command failures with agent vs human comparison and failure rate tracking. - added
project_context— on-demand project briefing: common commands, build/test/lint patterns, failure rates, agent activity. - added
suvadu://agents/sessionsresource — auto-injected summary of 5 most recent agent sessions. - added
suvadu://context/projectresource — auto-injected project context at session start. Agents know your workflow before you ask. - changed MCP server expanded from 11 tools + 5 resources to 15 tools + 7 resources.
v0.2.1
- added Vim keybindings — optional vim-style modal navigation in the search TUI. Enable via
suv settingsorvim_mode = truein config. - changed Slimmed down README from 840 to ~120 lines, linking to suvadu.sh for full docs.
v0.2.0
- added MCP Server —
suv mcp-serveexposes shell history to AI agents via Model Context Protocol. 11 tools includingassess_risk. 5 auto-injected resources. 100% local. - added MCP auto-configuration —
suv init claude-codeandsuv init cursorautomatically register the MCP server. Zero extra setup. - added Cursor agent integration —
suv init cursorinstalls hooks for command capture with exit codes and prompts. - added Enhanced
suv status— shows database path, total commands, detected agents, and tips. - fixed Cursor executor detection, unique mode sort, relative date parsing, settings list scrolling.
- changed Unified TUI styling across Stats, Agent Dashboard, and Agent Stats.
v0.1.5
- added Prompt Explorer — two-screen TUI to browse agent prompts and drill into triggered commands.
- added Cursor agent integration —
suv init cursorinstalls hooks for command and prompt capture. - added Executor selector in search filter — Up/Down picker showing actual executors from the database.
- fixed Dead text bug in
suv searchstandalone — selected commands now inject into the editing buffer correctly. - fixed Claude Code exit codes — agent commands no longer stored with NULL exit codes.
v0.1.4
- added Custom agent detection — configurable
[agents]section and Agents tab insuv settingsTUI. - added
suv init opencode— OpenCode integration via plugin with prompt capture. - fixed Regex lookahead in secret redaction causing errors on first use.
v0.1.3
- fixed Powerlevel10k compatibility — Ctrl+R search now works correctly with p10k instant prompt.
- added
suv updatenow checks version before downloading and shows release notes.
v0.1.2
- fixed Linux self-update — "Text file busy" error resolved.
- added Universal installer script with OS/arch auto-detection and SHA256 verification.
v0.1.0
- added Major milestone:
suv alias,suv gc,suv sessiontimeline,suv wrapfor AI agents. - added Secrets redaction — API keys, tokens, and passwords auto-redacted before storage.
- added Minisign signature verification for self-update.
- added Command syntax highlighting across all TUI views.
- added 975 tests (up from ~100). Architecture overhaul with module decomposition.
- fixed 40+ bug fixes including UTF-8 safety, SQL injection prevention, atomic file writes, and streaming exports.
v0.0.1
- added Initial release — interactive TUI search, session tracking, AI agent monitoring, statistics dashboard, self-update.