Skip to content

Releases: uppinote20/duru

v0.5.0

Choose a tag to compare

@claude claude released this 20 May 13:19

What's Changed

New Features

  • Jump to project memory from Sessions mode with J key (#41)
    • Press J on a selected session to instantly open that project's CLAUDE.md in Memory mode
    • File priority: CLAUDE.md (Project/Global) → MEMORY.md → first memory file
    • Collapses a 4-step workflow (Tab → scroll → select → lCLAUDE.md) into a single keystroke
  • Delete memory files with d + y/N confirmation (#42)
    • Press d in Files or Preview pane to arm deletion; help bar shows Delete <filename>? (y/N)
    • Confirm with y, cancel with any other key (including n, Esc, navigation keys)
    • Global CLAUDE.md and MEMORY.md index are protected from deletion
    • Removing the last file in a project collapses the project entry and returns focus to the Projects pane

Documentation

  • Add engineering handbook scaffold and bidirectional source markers (#39)
    • Introduces CLAUDE.md with quick reference tables, boilerplate guide, top-10 coding traps, and workflow rules for contributors
    • Bidirectional @handbook, @tested, and @covers markers 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 gitignored docs/ENGINEERING_HANDBOOK.md symlink

v0.4.1

Choose a tag to compare

@claude claude released this 25 Apr 03:19
a5b747a

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_creation in 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

Maintenance

  • Add windows-latest to 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

Choose a tag to compare

@claude claude released this 23 Apr 05:16
3ee11f5

What's Changed

New Features

  • Automatically prune old settings.json backups, keeping only the two most recent (#29)
    • duru hooks install and duru hooks uninstall each 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 COLORFGBG environment 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 light overrides are unchanged; detection failure still falls back to Dark
  • Add sort direction toggle for Sessions view (#31)
    • Press S to 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 (s key), 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

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
  • Fix Windows build failure by gating terminal-colorsaurus to Unix targets (#33)
    • src/theme.rs was importing terminal_colorsaurus unconditionally, causing unresolved import errors on aarch64-pc-windows-msvc and x86_64-pc-windows-msvc
    • Theme::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

  • Scope libc dependency to Unix targets only (#27)
    • Windows builds no longer include libc in the dependency graph
    • No functional changes; Unix behavior is unchanged
  • Bump version to v0.4.0 (#32)

v0.3.1

Choose a tag to compare

@claude claude released this 20 Apr 03:57

What's Changed

Bug Fixes

  • Fix repo starring in duru hooks install consent flow (#26)
    • gh repo star does not exist as a subcommand; switched to gh api --method PUT /user/starred/{owner}/{repo} (the correct REST endpoint)
    • Suppressed gh stderr leaking through by switching from .status() to .output()
    • Updated unauthenticated fallback message to point users to the GitHub URL directly

v0.3.0

Choose a tag to compare

@claude claude released this 19 Apr 22:52
0a939fe

What's Changed

Bug Fixes

  • Fix Windows build by cfg-gating Unix-only APIs (#24)
    • is_pid_alive now compiles on Windows, returning true conservatively (falls back to mtime-based liveness)
    • Hook script chmod factored into chmod_executable with 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

Choose a tag to compare

@claude claude released this 14 Apr 08:04

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
  • Edit memory files in-place with e key (#6)
    • Press e in the Files or Preview pane to open the selected file in $EDITOR
    • Editor resolution follows Unix convention: $VISUAL$EDITORvi; multi-word values like emacsclient -t are 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

v0.1.0

Choose a tag to compare

@claude claude released this 11 Apr 04:09

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 COLORFGBG environment variable
  • Manual override with --theme dark or --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/duru

Scoop (Windows)

scoop bucket add uppinote20 https://github.com/uppinote20/scoop-bucket
scoop install duru

Install script (macOS / Linux)

curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/uppinote20/duru/main/install.sh | bash

Prebuilt 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/ location

Key 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