Skip to content

Changelog

All notable changes to c9watch are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

  • CLI for scriptable session management — c9watch list, view, history, search, stop, watch, self, status, tasks commands for agent-to-agent monitoring (#75)
  • One-line CLI installer for macOS and Linux (install-cli.sh)
  • Cost records split by date for accurate daily totals — sessions spanning midnight now attribute costs to the correct day (#78)
  • Session names in cost tab — display custom title or first user message alongside session ID (#79)
  • Conversation preview in cost tab — click any session row to open the conversation overlay (#79)
  • DATE/COST sort toggles in cost tab with ascending/descending order (#79)
  • History tab shows latest prompt text and native custom titles from JSONL files (#80)
  • Session detection on macOS now uses cmd args instead of binary path for more reliable process matching (#77)
  • PID-to-session mapping after /clear now uses session metadata for accuracy (#73)
  • Notification title now uses renamed session title instead of generic text (#74)
  • History tab layout redesigned with CSS grid for better alignment (#80)
  • Session count shown per project in cost tab (#79)
  • Session metadata improvements — richer session info display (#65)
  • NeedsPermission renamed to NeedsAttention with user question detection (#66)
  • Draggable title bar and mobile responsive styling improvements (#58)
  • 5 new token distance milestones: Angel Falls, Mt. Vesuvius, Krubera Cave, Mt. Olympus, Mt. Etna (#63)
  • Cost pricing updated — Opus 4.5/4.6 corrected to $5/$25 (standard) and $30/$150 (fast), Haiku 4.5 to $1/$5 (#64)
  • Session titles no longer forced to uppercase with pixel font (#67)
  • History “newest” sort now uses last activity time instead of creation time (#68)
  • JetBrains IDE “Open” action now focuses existing window instead of opening a new one (#69)
  • Memory tab with two-panel viewer for browsing Claude Code memory files and Claude command integration (#41)
  • Token distance visualizer — animated rice stack overlay with 17 real-world landmarks, native share sheet, and Instagram-ready PNG export (#62)
  • FDA permission banner — heuristic detection when Full Disk Access is missing, with deep-link to System Settings (#48)
  • Debug console (Cmd+Shift+D) — hidden panel showing real-time diagnostic logs for troubleshooting session detection (#48)
  • Custom title and ACTIVE badge display in history tab (#52)
  • Multi-word AND search in history — search terms are combined with AND logic for more precise results (#51)
  • List item numbers in history session rows (#50)
  • Restore minimized terminal windows when clicking Open on a session (#49)
  • Thinking toggle restored in conversation preview (#45)
  • Product website at c9watch.mclee.dev (#42)
  • Website migrated to Starlight documentation framework (#54)
  • Path encoding mismatch — dots in directory names now correctly encoded as dashes for session matching (#57)
  • Path encoding aligned with Claude Code’s algorithm — all non-alphanumeric characters replaced with dashes (#48)
  • Sliding window rendering for large conversations — prevents DOM overload (#53)
  • Cloudflare Workers deploy configuration for website (#43)
  • Session history search tab — browse and search all past Claude Code sessions with instant metadata filter + debounced deep content search (#33)
  • Full conversation viewer overlay for history sessions with message rendering, tool toggle, message nav sidebar, and copyable RESUME command chip (#33)
  • Collapsible project groups in history BY PROJECT view with collapse/expand all (#33)
  • Search result snippets with keyword highlighting (#33)
  • Click a deep search result to scroll to and highlight the matching message in the conversation viewer (#36)
  • Inline image rendering for screenshots pasted in user messages (#38)
  • Cost tracker dashboard tab with daily, by-project, and by-model spending views (#34)
  • Rust cost backend with per-model pricing tables (Sonnet, Opus, Haiku) and mtime-based caching (#34)
  • Tab bar in native macOS title bar area with drag region and grip dots (#33)
  • Drag dots handle shows hover brightness effect for better UX feedback (#33)
  • Removed non-functional thinking toggle — JSONL files never contain thinking blocks (#38)
  • Search highlight blink after animation fade, wrong message highlighted on deep search, and NavMap scroll targeting wrong element (#37)
  • Native tray popover with session overview — click the menu bar icon to see all sessions at a glance (#25)
  • Pixel grid status bar with sweep animation on state changes (#25)
  • Fullscreen space support — popover uses NSPanel to appear above fullscreen apps (#25)
  • JetBrains IDE support: 15 IDEs (PhpStorm, IntelliJ IDEA, WebStorm, PyCharm, GoLand, CLion, Rider, RubyMine, DataGrip, Android Studio, Aqua, Fleet, RustRover) with 3-tier path resolution via Toolbox scripts dir, user Applications, and system Applications (#26)
  • Test coverage increased from 53% to 65% (#31)
  • Clippy warnings resolved and rustfmt applied throughout Rust codebase (#31)
  • Popover not appearing above fullscreen app Spaces (#25)
  • App quitting when main window is closed — tray icon now keeps app alive (#25)
  • “Open Dashboard” button not working after main window was closed (#25)
  • Strip ‘v’ prefix from version in latest.json for updater compatibility (#23)
  • WebSocket server for mobile/remote access — view sessions from any device on the same network (#6)
  • QR code connection for instant mobile browser pairing
  • Custom session titles with inline editing (#9)
  • Linux support via AppImage (#2)
  • ~60% CPU reduction — optimized polling and status detection, from ~15% to ~5-9% (#14, #19)
  • Simplified notifications — removed custom permission banner, macOS handles prompts natively (#20)
  • Better iTerm2 click-to-focus using tty matching instead of window title matching (#5)
  • Status flickering when sessions are actively working (#19)
  • Duplicate notification firing (#19)
  • Register missing get_terminal_title command (#21)
  • Automatic session discovery — detects Claude Code sessions by scanning running processes at the OS level
  • Real-time dashboard with status indicators (Working, Needs Permission, Idle)
  • Status view (grouped by state) and project view (grouped by directory)
  • Session control — expand to read full message history, approve permissions, manage agents
  • Auto-updater for future releases
  • Built with Tauri, Rust, and Svelte for minimal resource usage