Releases: uppinote20/duru
Release list
v0.5.0
What's Changed
New Features
- Jump to project memory from Sessions mode with
Jkey (#41)- Press
Jon a selected session to instantly open that project'sCLAUDE.mdin Memory mode - File priority:
CLAUDE.md(Project/Global) →MEMORY.md→ first memory file - Collapses a 4-step workflow (Tab → scroll → select →
l→CLAUDE.md) into a single keystroke
- Press
- Delete memory files with
d+y/Nconfirmation (#42)- Press
din Files or Preview pane to arm deletion; help bar showsDelete <filename>? (y/N) - Confirm with
y, cancel with any other key (includingn,Esc, navigation keys) - Global
CLAUDE.mdandMEMORY.mdindex are protected from deletion - Removing the last file in a project collapses the project entry and returns focus to the Projects pane
- Press
Documentation
- Add engineering handbook scaffold and bidirectional source markers (#39)
- Introduces
CLAUDE.mdwith quick reference tables, boilerplate guide, top-10 coding traps, and workflow rules for contributors - Bidirectional
@handbook,@tested, and@coversmarkers added across 14 source and test files, keeping source ↔ doc and source ↔ test links grep-discoverable - Engineering handbook moved to a private repo; accessed locally via a
.private/clone and a gitignoreddocs/ENGINEERING_HANDBOOK.mdsymlink
- Introduces
v0.4.1
What's Changed
New Features
- Per-session cache TTL detection: show 5 min or 1 h countdown based on each session's actual policy (#37)
- Sessions using the
ttl: "1h"cache form (recent Claude Code versions) now render with a 60-minute bar instead of 5 minutes — no more false "stale" warnings for 30-minute idle 1h-cache sessions - TTL is inferred from
usage.cache_creationin the most recent assistant turn; falls back to 5 min when no signal is available - BOLD urgency cue switched from a fixed 60 s threshold to proportional (20% of TTL): last 60 s for 5 min sessions, last 12 min for 1 h sessions
- Tail scan window increased from 8 KiB to 64 KiB to reliably capture the last assistant turn in real-world transcripts
- Sessions using the
Maintenance
- Add
windows-latestto CI build matrix (#34)- Windows is now tested on every PR alongside macOS and Ubuntu
- Unix-only tests are properly gated with
#[cfg(unix)]to keep CI green on Windows
v0.4.0
What's Changed
New Features
- Automatically prune old
settings.jsonbackups, keeping only the two most recent (#29)duru hooks installandduru hooks uninstalleach create a timestamped backup of~/.claude/settings.json; without pruning, repeated runs accumulate unlimited.duru.bak.*files- After each install or uninstall, all but the two newest backups are removed
- Pruning is best-effort: filesystem errors are silently ignored so they never block install/uninstall
- Improve dark/light theme detection using
terminal-colorsaurus(#28)- Replaces the
COLORFGBGenvironment variable heuristic, which failed silently on modern terminals - Now correctly detects the terminal background on Alacritty, Kitty, WezTerm, Ghostty, foot, GNOME Terminal, and macOS Terminal.app
- Manual
--theme dark/--theme lightoverrides are unchanged; detection failure still falls back to Dark
- Replaces the
- Add sort direction toggle for Sessions view (#31)
- Press
Sto reverse the sort direction for the active field; the column header shows↓/↑to reflect the current direction at a glance - Sort direction persists across field cycles (
skey), so one toggle applies to all fields until reversed again - Expired cache-TTL sessions are now bucketed after all warm entries regardless of sort direction, ensuring nearly-expired sessions always surface at the top of a CacheTtl sort
- Press
Bug Fixes
- Mute cache TTL color for stale sessions (#30)
- Stale sessions (
/exit, hard-kill,/clear, idle timeout) now render the TTL bar in muted gray instead of the green/yellow/red urgency palette - Sub-60s bold urgency cue is now gated to active sessions only, preventing visual conflict with the
○stale indicator - TTL text (mm:ss) and progress bar fill are unchanged so resume-within-TTL information is still visible
- Stale sessions (
- Fix Windows build failure by gating
terminal-colorsaurusto Unix targets (#33)src/theme.rswas importingterminal_colorsaurusunconditionally, causingunresolved importerrors onaarch64-pc-windows-msvcandx86_64-pc-windows-msvcTheme::detect()now has two#[cfg]-gated impls: the OSC 10/11 query path on Unix, and a fallback to Dark on Windows (users can still force--theme light)
Maintenance
v0.3.1
What's Changed
Bug Fixes
- Fix repo starring in
duru hooks installconsent flow (#26)gh repo stardoes not exist as a subcommand; switched togh api --method PUT /user/starred/{owner}/{repo}(the correct REST endpoint)- Suppressed
ghstderr leaking through by switching from.status()to.output() - Updated unauthenticated fallback message to point users to the GitHub URL directly
v0.3.0
What's Changed
Bug Fixes
- Fix Windows build by cfg-gating Unix-only APIs (#24)
is_pid_alivenow compiles on Windows, returningtrueconservatively (falls back to mtime-based liveness)- Hook script chmod factored into
chmod_executablewith a no-op on non-Unix platforms - Unix-specific tests gated with
#[cfg(unix)]; Windows-specific tests added for the new behavior
v0.2.0
What's Changed
New Features
- Render markdown in the preview pane (#5)
- Adds a
pulldown-cmark-powered renderer with Rose Pine theme styling for headings, emphasis, code blocks, links, blockquotes, lists, tables, footnotes, and more - YAML frontmatter in memory files is parsed and displayed as an aligned key/value header block instead of being misinterpreted as markdown
- Width-aware rendering ensures horizontal rules and table dividers scale correctly in narrow panes
- Adds a
- Edit memory files in-place with
ekey (#6)- Press
ein the Files or Preview pane to open the selected file in$EDITOR - Editor resolution follows Unix convention:
$VISUAL→$EDITOR→vi; multi-word values likeemacsclient -tare supported - Terminal raw mode and alternate screen are cleanly suspended before the editor launches and restored on exit
- File size and content refresh automatically after saving, with scroll position preserved
- Press
v0.1.0
duru v0.1.0
First public release of duru (두루) — a terminal dashboard for Claude Code that lets you explore, manage, and monitor your setup across every project from one place.
두루 (Korean): thoroughly, comprehensively, all around — named after 두루미, the Korean crane.
What is duru?
duru scans ~/.claude/ and displays all your CLAUDE.md files and auto-memory across every project in a Miller Columns TUI. You can browse your global rules, project-specific instructions, and per-project memory files without leaving the terminal.
Features
Miller Columns layout
Three panes, navigated with arrow keys or hjkl:
- Projects — all projects that have CLAUDE.md or memory files
- Files — CLAUDE.md, MEMORY.md, and individual memory notes for the selected project
- Preview — full content of the selected file
Smart project discovery
- Scans
~/.claude/projects/*/for every project, including the global~/.claude/CLAUDE.md - Greedy filesystem matching to decode Claude Code's encoded directory names, handling both
/and_replacement patterns - Hyphenated directory names (e.g.
crypto-trading-bot) decoded correctly - Automatically excludes projects whose source directories no longer exist on disk
- Deduplicates entries across Claude Code's old (
_active) and new (--active) encoding schemes, keeping the most recently modified one
Rosé Pine theme
- Dark (
Main) and light (Dawn) variants - Automatic terminal background detection via
COLORFGBGenvironment variable - Manual override with
--theme darkor--theme light
Demo mode
Run duru --demo to explore the TUI with fake project data — useful for screenshots, demos, and trying it out without touching your real ~/.claude/ directory.
Installation
Homebrew (macOS / Linux)
brew install uppinote20/tap/duruScoop (Windows)
scoop bucket add uppinote20 https://github.com/uppinote20/scoop-bucket
scoop install duruInstall script (macOS / Linux)
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/uppinote20/duru/main/install.sh | bashPrebuilt binaries
Download directly from the assets below for macOS (ARM64/x86_64), Linux (GNU/musl), and Windows (x86_64/ARM64).
From source
git clone https://github.com/uppinote20/duru
cd duru
cargo install --path .Usage
duru # launch TUI
duru --theme light # force light theme
duru --demo # run with demo data
duru --path ~/alt/.claude # custom ~/.claude/ locationKey bindings
| Key | Action |
|---|---|
↑↓ / jk |
Navigate within the current pane |
←→ / hl |
Switch between panes |
Enter / → |
Enter the next pane |
q |
Quit |
Tech stack
- Rust (edition 2024)
- ratatui 0.29 + crossterm 0.28
- clap 4 for CLI parsing
- No async runtime — read-only v0.1, fully synchronous
License
MIT OR Apache-2.0