- Conversation viewer no longer jumps to unrelated content when toggling tool
output (
t), thinking (T), or timing (i), or when resizing the terminal — the viewport now stays anchored to the message you were reading
- Mouse wheel scrolling in both the search result list and conversation viewer, and click-to-open on rows in the search result list (note: enabling mouse capture may interfere with click-drag text selection in some terminals — hold Shift, or Option on macOS, to bypass)
- Search results now show the selected position (e.g. current/total) so it's easier to tell where you are in the list
- Improved search snippet previews — the context line now prefers locations where query terms appear adjacent, instead of locking onto boilerplate matches that happen earlier in the conversation
- Fixed search ranking missing adjacent-phrase matches when the phrase was
wrapped in markdown punctuation like
**media pipeline** - Added a Nix flake for installation on Nix systems
- Improved search ranking — results now score matches by where they appear (title, project, summary, or message body), so exact project and title matches rank above incidental mentions in conversation text
- Search freshness scoring uses smooth decay instead of sharp cutoffs, giving more natural ranking between recent and older conversations
- Pressing Esc now clears the search input first — a second Esc quits the app
- Faster startup with per-project binary caching of parsed conversations — only changed files are re-parsed on subsequent launches
- Reduced memory usage by streaming JSONL lines instead of loading entire files into memory
- Fixed search missing content in long conversations due to a 256K character truncation limit — all conversation text is now fully searchable
- Added Windows support — compilation and home directory resolution now work correctly on Windows (#26)
- Fixed conversations that only contain skill invocations (e.g.
/consult,/commit) being incorrectly filtered out as empty sessions
- Fixed the screen freezing when holding down arrow keys or j/k to scroll — the view now redraws smoothly during key repeat instead of jumping when the key is released (#25)
- Skill invocation prompts (e.g. from
/consult,/commit) are now hidden from search results and shown as a concise description in the conversation viewer instead of displaying the full expanded prompt text
- Added support for
CLAUDE_CONFIG_DIRenvironment variable — users with custom Claude config directories can now use claude-history without workaround (#24)
- Added
claude-history updatecommand for self-updating the binary directly from GitHub releases
- Subagent messages are now included in J/K message navigation and single message copy
- Plain text mode (
--plain) now supports pager output - Fixed
--no-colorflag being ignored in normal (non-render) display mode - Fixed text wrapping for CJK characters and emoji that occupy two terminal columns but were counted as one, causing text to overflow
- Deleting a session in the TUI (
Ctrl+X) now removes the full session directory, not just the transcript file - Fixed a potential crash when deleting a conversation while a search was in-flight
- Fixed conversations opened by UUID not showing project name or matching workspace filter
--fork-sessionnow requires--resumeand shows an error if used alone instead of being silently ignored
- Workspace filter now includes conversations from git worktrees of the same project, so sessions started in workmux worktrees appear alongside the main project's sessions
- Search result counter now shows the count relative to the current scope (project or global) instead of always showing the total
- Search typing is now smoother — search runs in a background thread so keystrokes no longer block the UI, especially with large history
- Global view is now the default — all conversations are shown on launch instead of only the current workspace's sessions (#21)
- Added
Tabkey to toggle between global and workspace-only view in the TUI (#21) - Added
-L/--localflag to start with workspace filter active - Deprecated
--global/-gflag andglobalconfig option — global is now the default behavior
- Added
--deleteflag to remove a session by its ID directly from the command line, e.g.claude-history --delete <session-id>(#23 - Added
--versionflag to display the current version (#22) - Invalid session IDs now show a clear error message instead of failing silently
- Improved search for CJK (Chinese, Japanese, Korean) text — queries with CJK characters now match correctly even when words aren't separated by spaces (#19)
- Added emacs-style keybindings to the search input:
Ctrl+A/Ctrl+Eto jump to start/end,Ctrl+B/Ctrl+Fto move by character,Alt+B/Alt+FandCtrl+Left/Ctrl+Rightto move by word,Ctrl+Kto kill to end of line,Ctrl+Uto kill to start of line (#19) - Fixed cursor alignment issues with wide characters (e.g. CJK, emoji) in the search input and conversation viewer (#19)
- Linux prebuilt binaries are now statically linked, fixing compatibility issues on older distros with outdated glibc versions (#20)
- Added message-level navigation — press
J/Kor[/]to jump between messages in the conversation viewer, with a teal marker showing the focused message (#15) - Added single message copy — press
yto copy the currently selected message to the clipboard instead (#15) - Fixed empty thinking blocks rendering as blank "Thinking" labels with no content
- Timestamps in the conversation list now automatically switch between relative ("just now", "5 min ago", "2 hours ago", "yesterday") for recent sessions and absolute ("Mar 05, 14:30") for older ones
- Recent conversations are color-graded by recency — newest sessions appear in bright teal, fading to gray as they get older, making it easy to spot recent activity at a glance
- Removed
--relative-time/--absolute-timeflags anddisplay.relative_timeconfig option — the new hybrid format replaces both
- Search now covers tool output (command results, file contents, grep output), so you can find conversations by content that previously only appeared in tool calls
- Search highlighting now merges adjacent matches across separators — searching
"red team" highlights the full word
red_teaminstead of just the individual parts - Improved search performance in conversations with large tool outputs
- Added automatic light/dark theme detection — the TUI now adapts its color scheme to match your terminal background
- Fixed arrow key navigation lag when holding keys to scroll quickly through the list or conversation viewer
- Fixed slow redraw when pasting text into the search field
- Fixed clipboard copy/yank not working on Linux — now uses
wl-copyon Wayland andxclip/xselon X11, with automatic display server detection (#17) - Fixed resuming sessions from deleted or ephemeral git worktrees failing with an error instead of gracefully recovering
- Search now matches project names, so you can find sessions by the project they belong to
- Preview panel now shows the last messages by default instead of the first, so
you see the most recent context at a glance (use
--firstto revert)
- Added
--fork-sessionflag to resume a conversation as a fork, creating a new branch from an existing session - Cross-project forking: when forking a session from a different project, the session files are automatically copied to the current project so Claude resumes in the right context
- Added configurable keybindings via the
[keys]section in the config file, allowing rebinding of resume (Ctrl+R), fork (Ctrl+F), and delete (Ctrl+X) actions - Session list search now matches session UUIDs, making it easier to find a specific conversation by ID
- Fixed markdown rendering issues: soft breaks no longer collapse words together, inline code no longer clips at block edges, and list item spacing is correct
- Subagent (Task tool) messages are now nested under their parent task, keeping
the conversation view clean and organized with
↳prefixed entries - Subagent internals are hidden by default and revealed with
Tor--show-thinking, same as thinking blocks - XML-tagged content (system reminders, analysis blocks) now displays correctly instead of being silently stripped
- Conversations from CI or headless Claude runs that lack timestamps now parse and display correctly
- Session titles (set via
/renamein Claude Code) now appear in the conversation list and viewer, making it easier to find named sessions - Search preview shows matches better now
- Added
global = trueconfig option to default to global search without passing-gevery time, with--localflag to override when needed - Ledger export and clipboard copy now render markdown properly (headings, lists, code blocks, tables) and wrap long lines instead of overflowing
- Fixed high idle CPU usage (~9% down to near zero) when the TUI was sitting idle after loading
- Fixed search preview highlighting partial word matches instead of the actual search phrase
- Fixed long lines in code blocks overflowing the terminal width
- Fixed blank lines and indentation issues in ledger export
- Added
--show-id(-i) flag to print the selected conversation's session ID, useful for resuming with custom shell aliases (e.g.,claude --resume $(claude-history --show-id)) - Added
Ikeybinding in the viewer to copy the session ID to clipboard
- Tool calls now default to truncated mode, showing the header and first few
lines with a "(N more lines...)" indicator — a middle ground between hidden
and full output. Press
tto cycle through modes: off, truncated, full - Added
--no-toolsflag to start with tools hidden (complements--show-toolsfor full mode) - Tables in conversation output are now rendered with proper box-drawing borders instead of being collapsed into plain text
- Fixed blank or empty message blocks occasionally appearing in conversation output
- Added multi-word search support in the viewer — search for phrases like "add feature" to find matches containing both words
- Timestamps now display on tool calls and results in ledger view (when timing
is enabled with
i) - Fixed a crash that could occur when highlighting search matches containing certain Unicode characters
- Fixed timestamp alignment for subagent messages and empty messages in ledger view
- Fixed double blank lines appearing after tool calls with empty output
/clearcommands are no longer shown in conversation rendering
- Added toggleable timing display in conversation viewer — press
ito show timestamps next to each message - Show conversation duration and model/token count in the viewer header
- Show conversation duration in the conversation list
- Added keyboard shortcuts help overlay — press
?in any view - Added keyboard shortcuts bar at the bottom of the conversation list
- Added
Ctrl+R(resume) andCtrl+X(delete) shortcuts to the viewer status bar - Added
Ctrl+Cto quit from viewer mode - Exports now include thinking blocks and tool calls when their display is toggled on
- Long bash commands in tool calls are now wrapped for readability
- Improved search highlight color for better visibility
- Added syntax highlighting for code blocks in conversation output
- Improved tool call display with human-readable formatting instead of raw JSON
- Added Vim-style half-page navigation (Ctrl-D/Ctrl-U) in the viewer
- Added Ctrl-W to delete word before cursor in the search field
- Show conversation summary in the viewer header and search results
- Display subagent conversations in ledger view
- Added direct JSONL file input support (pass a file path as argument)
- Added
--renderflag for debugging ledger output - Improved header layout: combined into single line when terminal width allows
- Tool/thinking toggle settings now persist within session
- Added in-TUI conversation viewer. Press Enter to view conversations without leaving the TUI, with Vim-style navigation (j/k, d/u, g/G) and search (/)
- Added export and yank menus to the viewer. Press
eto export to file oryto copy to clipboard in multiple formats (ledger, plain text, markdown, JSONL) - Added
Yhotkey to copy the conversation file path to clipboard - Added
resume.default_argsconfig option to pass custom arguments when resuming conversations withCtrl+R - Improved markdown rendering: fixed spacing after numbered lists, styled headings with subtle color
- Fixed thinking blocks to render with italic and dimmed style
- Fixed user messages showing in wrong color in the viewer
- Improved search performance
- Added
Ctrl+Rkeybinding to resume the selected conversation directly from the TUI
- Fixed a crash when using global search (
-g) that could occur when deleting conversations
- Added ability to delete conversations from the TUI (press
Ctrl+D, confirm withy) - Added cursor navigation in the search field with arrow keys
- Added markdown rendering for conversation output with support for headings, lists, code blocks, tables, and inline formatting
- Added pager support—long conversations now open in
less(or$PAGER) - Added
--plainflag for unformatted output - Improved search to better match word variations (e.g., "config" now matches "configuration")
- Added
curl | bashinstall script - Hide caveat metadata from conversation previews
- Replaced fzf with a built-in terminal UI
- Fixed project path detection failing for usernames containing dots (e.g.,
my.user) (Thanks @duke8585!)
- Cleaned up fzf picker display by removing index numbers
- Added a specific error message when fzf version is too old (requires 0.67.0+)
- Added color highlighting to the fzf picker
- Improved fzf UX: the timestamp stays visible when searching
- Added
--global(-g) flag to search conversations across all projects at once
- Added
--all-projects(-a) flag to browse conversations from any project - Added
--show-path(-p) flag to print the selected conversation's file path - Improved fuzzy search to match against full conversation content
- Added Homebrew installation support
- Added display of tool call inputs and results when viewing conversations
- Fixed project detection for paths containing dots or special characters
- Added faster startup with parallel conversation loading
- Added
--debugflag to show diagnostic information about conversation loading - Fixed conversations containing only
/clearcommands incorrectly appearing in the list - Cleaned up
/clearcommand metadata from conversation previews - Used file modification time for more accurate conversation dates
- Fixed display of tool results that contain structured content instead of plain text
- Added configuration file support (
~/.config/claude-history/config.toml) for persistent display preferences - Added
--show-thinkingand--hide-thinkingflags to control visibility of Claude's thinking blocks - Hidden tool calls by default (use
--show-toolsor-tto show them) - Added
--firstflag to show first messages in preview (inverse of--last) - Added
--absolute-timeflag to explicitly use timestamps (inverse of--relative-time) - Fixed message preview order when using
--lastflag
- Initial release