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 with suv agent import-session, remove with suv agent delete-session.
  • added Claude Code session capture — suv init claude-code installs 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.messages API when a session goes idle. suv init opencode now 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, and resolve_current_agent_session let 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 sessions now combines human terminal sessions, command-backed agent sessions, and native Codex/Claude Code/OpenCode sessions in one picker (Ctrl+T cycles 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 s on an AI session in suv sessions to view its saved summaries in a scrollable overlay. Tab toggles between a lightweight rendered view and the raw markdown, Ctrl+Y copies the raw markdown, and [/] cycle between multiple saved summaries for the same session.
  • added Builtin session-memory skill — suv init claude-code and suv skills sync now seed and materialize a suvadu-owned suvadu-session-memory skill (gated on mcp.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's AGENTS.md too on a default sync.
  • fixed suv mcp-serve no 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_item transcripts 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 skills keeps reusable instructions in one place instead of every AI tool maintaining its own copy. suv skills add/list/show/edit/rm manage skills scoped to global or a specific project directory; three new read-only MCP tools (list_skills, get_skill, search_skills) plus a client-readable suvadu://skills/index resource let any MCP-capable agent discover and read them directly.
  • added suv skills is now a full interactive management app — bare suv 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/sync keep 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 in AGENTS.md for 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_skill MCP tool (off by default) — lets an agent propose a new skill, saved as pending_review only, never active. Enable with mcp.allow_skill_proposals = true in config.toml; a human approves or rejects proposals from the review queue in suv 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, and assess_command_risk are 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. The initialize handshake's instructions field is also now directive rather than purely descriptive, telling a connecting client when to proactively call project_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 new agent.risk_extra_patterns config list (regex + level + description).
  • added Prompt Explorer gets an always-on search box and filters — suv agent prompts now live-filters by prompt text as you type, with Ctrl+P/Ctrl+A cycling time period/executor and Ctrl+S jumping to a prompt's session timeline, mirroring suv 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.toml in 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 from suv 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 separate add/remove invocations for every change. Opens even with zero bookmarks saved yet.
  • added suv aliases (renamed from suv 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 sourced aliases.sh while aliases remain, so it's live in new shells without a separate suv aliases apply. add/remove/list/apply/add-suggested/suggest keep working exactly as before for scripting.
  • changed Command search is faster — suv search/Ctrl+R substring 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 --help groups commands by purpose (Setup, Search & recall, Insights & safety, Organize, Data, AI integration, Other) instead of one flat list, and surfaces the Ctrl+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, and suv sessions — all now share the same centered SUVADU <SCREEN> title and footer badge styling with Quit listed first; the search-driven screens also share an always-on live-filter search box and Ctrl+<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 session renamed to suv 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 as q/vim-style navigation shortcuts).
  • fixed mcp.exclude_dirs is now actually enforced — the setting was configurable via suv settings and saved to config.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 sessions now 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 $EDITOR for 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, and suv settings' title matches every other screen — the earlier visual-consistency pass fixed both screens' title/footer styling but missed suv stats' border style and never touched suv 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 codex installs hooks that capture both prompts and shell commands, merging into any hooks you already have in ~/.codex/hooks.json rather than overwriting them, and auto-registers the suvadu MCP server in ~/.codex/config.toml so Codex can query your shell history directly. The config file is edited in place, so existing comments and formatting survive untouched.
  • fixed .bashrc commands sourced before the first prompt are no longer recorded as if you'd typed them — bash's DEBUG trap fires for every command bash runs, not just ones typed interactively, so setup lines left in .bashrc after the eval "$(suv init bash)" line were getting captured at the first prompt.

v0.3.6

  • added PageUp/PageDown/Home/End navigation in the search TUI — PageUp/PageDown scroll 10 rows at a time, Home/End jump 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 checks CODEX_THREAD_ID, the variable Codex really exports.
  • fixed cargo test no longer backgrounds itself under Bash/Zsh alias detection — concurrent interactive alias-detection shells could raise SIGTTOU and suspend the whole test process. These shells are now detached into their own session.

v0.3.5

  • added "Bookmarks only" search filter — Ctrl+O in the search TUI shows just your bookmarked commands.
  • fixed brew install on 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 suv binary path after switching install methods (e.g. cargo installbrew), instead of silently breaking command recording.
  • fixed Recorded timestamps and durations were wrong under comma-decimal locales (Polish, German, French, and others) — $EPOCHREALTIME parsing now forces LC_ALL=C.

v0.3.4

  • changed Recall now hides AI-agent commands by default — Up-arrow and Ctrl+R show your own commands only. Toggle live with Ctrl+A / Alt+A, per-run with --include-agents, or set search.recall_show_agents in config. Up-arrow is also recency-first, so a command typed in another directory isn't buried after cd.
  • 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 destructive suv delete (--no-backup to skip).
  • added suv bookmark pick — interactive picker that recalls a saved bookmark into your prompt.
  • added "Failed only" search filter — Ctrl+E in the search TUI or suv search --failed.
  • added suv stats --human — analytics excluding agent activity (also the h toggle 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) and redaction.extra_patterns (your own secret regexes).
  • added Idempotent JSONL import — suv import deduplicates (--allow-duplicates to opt out); new risk patterns for git clean -f, world-writable chmod, and chown -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 piped y when stdin is not an interactive terminal.

v0.3.3

  • fixed Cross-machine suv exportsuv import no longer dies with a FOREIGN KEY error on a fresh database — the importer auto-creates a placeholder session for unknown session_ids and re-maps each entry's tag_id via the carried-over tag_name (creating the tag locally if it doesn't exist).
  • fixed suv import rejects non-JSONL files (e.g. an accidentally-piped CSV) up front with a clear, single-line error pointing at suv export > history.jsonl, instead of spewing a parse error for every line.
  • fixed suv export --format json with 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+V works 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_FILE are 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 base crash when EPOCHREALTIME milliseconds had a leading zero (e.g., 068).

v0.3.1

  • added suv history — non-interactive history dump with all standard filters, --json output, and -n limit. 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_percent in [search] config. Tune ranking via suv settings.
  • added pi.dev agent integration — suv init pi installs 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/sessions resource — auto-injected summary of 5 most recent agent sessions.
  • added suvadu://context/project resource — 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 settings or vim_mode = true in 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-serve exposes shell history to AI agents via Model Context Protocol. 11 tools including assess_risk. 5 auto-injected resources. 100% local.
  • added MCP auto-configuration — suv init claude-code and suv init cursor automatically register the MCP server. Zero extra setup.
  • added Cursor agent integration — suv init cursor installs 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 cursor installs 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 search standalone — 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 in suv settings TUI.
  • 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 update now 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 session timeline, suv wrap for 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.