Skip to content

Feature / TODO list — session detection, status, detail view, and more #66

@grimmerk

Description

@grimmerk

Feature / TODO List

Collected from recent sessions. Ordered by suggested priority.

High Priority

1. Rewrite detection with ~/.claude/sessions/ (#65) ✅ Done (PR #67)

  • Replace ps aux + regex + lsof + cross-reference with reading ~/.claude/sessions/<PID>.json
  • Direct PID → sessionId mapping, ~5ms vs ~200-450ms
  • Solves "unsolvable" bare claude + no /rename case (for iTerm2/cmux with TTY)
  • Enables VS Code session detection (entrypoint: "claude-vscode")
  • name field gives -n session names without parsing process args
  • Handles /clear correctly (updates session ID — see c9watch PR #73)
  • Fallback to current approach if sessions/ doesn't exist (old Claude Code versions)
  • Reference: agent-sessions, claude-control, claude-sessions

2. Active session status: idle / needs-attention (#63 related)

  • Show different colored dots on first screen (not just purple = active)
    • Purple: active + idle (ready)
    • Orange/amber: needs attention (tool permission or user question)
    • Working indicator: currently processing
  • Approach A — Hook-based (preferred): inject Claude Code hook config → on Stop event, write to SQLite or send HTTP to CodeV (port 55688). Near-zero CPU when idle.
  • Approach B — Polling JSONL: read last N lines of session JSONL periodically (c9watch approach, 5-9% CPU at 3.75s interval)
  • Reference: c9watch PR #66 — NeedsPermission → NeedsAttention, AskUserQuestion detection, question mark heuristic with 20s grace period
  • Reference: c9watch PR #14 — CPU optimization from 15% → 5-9%

3. Detail view (Space key preview)

  • Press Space on a session item → full detail view (like macOS Finder Quick Look)
  • Esc to return to list
  • Content: full first/last prompt, session ID (click to copy resume command), terminal selector, entrypoint badge
  • Platform for future features: in-session search, session history, terminal choice
  • Reference: c9watch history → click item → shows session ID at top, click to copy

Medium Priority

4. Show final assistant message for all sessions (not just active)

  • Currently only active sessions show blue assistant response text
  • Extend to all sessions via async tail -n 200 + grep on JSONL
  • 100 sessions parallel: ~400ms (SWR pattern, acceptable)
  • Future optimization: use Node.js fs.read with seek instead of spawning tail processes, or Rust native module for large-scale

5. VS Code Claude Code session support

  • Detection: via ~/.claude/sessions/ with entrypoint: "claude-vscode" (comes free with feat: add UI part of delete button #1)
  • Display: show [VSCODE] badge, use ai-title from session JSONL as display name
  • Switch: activate VS Code window only (cannot focus specific Claude tab — VS Code limitation, no URI handler registered)
  • Launch: code --goto or open -a "Visual Studio Code"
  • Limitation: no /rename support (#33165), not in history.jsonl (#24579, #18619)

6. Quick launch via search bar

  • Type !ghost ~/git/project in CodeV search → open new session in Ghostty at that path
  • Shortcuts: !ghost, !iterm, !cmux, !code (VS Code), !tmux
  • Path completion (autocomplete from working directory)
  • Support multiple Claude accounts/endpoints (different CLAUDE_CONFIG_DIR env vars)

7. In-app update check ✅ Done (PR #73 + PR #74)

  • update-electron-app + update.electronjs.org (Squirrel.Mac) — no need for electron-builder
  • PR feat: in-app auto-update via update-electron-app #73: auto-update infra (notifyUser: true, CI signed zip)
  • PR feat: custom update UI in Settings popup #74: custom update UI in Settings popup (notifyUser: false)
    • "Check for Update" manual button + auto check every 1 hour in background
    • States: Checking → Downloading → Install & Restart / Latest / Retry
    • 30s timeout for dev mode / network issues

8. UX improvements ✅ Done (PR #72)

  • 8a. Mouse hover on background return: when CodeV returns from background with mouse in middle of screen, selected item jumps to mouse position → fix by ignoring onMouseEnter briefly after window focus
  • 8b. Assistant message color: blue (#64B5F6) is slightly too prominent → tone down to a subtler shade
  • 8c. Settings in switcher: copy some menu bar settings (IDE Preference, etc.) to the Settings panel in the switcher's top-right corner

9. Custom keyboard shortcuts ✅ Done (PR #72)

  • Let users rebind global shortcuts (⌃+⌘+R, ⌃+⌘+E, ⌃+⌘+C)
  • Conflict detection:
Scope Can detect? How
macOS system shortcuts Partially Read ~/Library/Preferences/com.apple.symbolichotkeys.plist
CodeV's own shortcuts Fully Internal map
Other apps' global shortcuts No reliable way No unified API; apps use CGEventTap/MASShortcut independently
  • Practical approach: use Electron's globalShortcut.register() — if registration fails, the shortcut is occupied → show "already in use by another app"
  • Effort: small to medium

10. Remote control (mobile monitoring)

  • Let users monitor/control sessions from phone
  • Final assistant message + input capability
  • Claude Code's --input-format stream-json / --output-format stream-json enables programmatic I/O
  • Requires: relay server + auth + mobile UI
  • Colleague's request: "don't need full chat history, final message is enough, focus on remote control"
  • Effort: large

Lower Priority

11. AI Assistant cleanup / optimization

  • Insight Chat + Smart Chat features are rarely used
  • Three directions:
Option Description Effort Risk
A. Remove entirely Delete Insight Chat + Smart Chat code + UI + API key settings Small Sunk cost; some users may use occasionally
B. Accessibility API (like Bob Translate) Use macOS Accessibility API to read selected text directly (no ⌘+C needed), popup on shortcut Large Needs Accessibility permission; MAS review risk (Apple strict on Accessibility API)
C. Simplify (recommended) Remove Insight Chat prompt settings; keep Smart Chat as quick Claude chat; ⌃+⌘+E reads clipboard directly Small Minimal
  • Recommendation: Option C short-term. Long-term, Claude Code's VS Code extension chat may make CodeV's AI Assistant redundant → remove entirely.
  • If doing Option B: need Swift native module for AXUIElementCopyAttributeValue, not feasible for MAS version.

🤖 On behalf of @grimmerk — generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions