Skip to content

Rocky v1.3.0 — deep focus, resilience, accuracy, preferences

Choose a tag to compare

@KetanSomvanshi KetanSomvanshi released this 10 Jul 06:36
791b5a3

Trust it: deep focus, a resilient registry, accurate signals, and a preferences layer

This closes out "Horizon 1" from the roadmap — the product only earns its
peripheral-vision job once the click actually lands, the registry can't take
the whole app down, alerts are trustworthy, and a screen-sharing engineer can
mute the cat instantly.

Deep focus for the terminals Rocky already detects

Clicking a tab now lands on the exact window/pane, not just the app, for:

  • kitty — via remote control (kitten @ focus-window), when enabled.
  • VS Code / Cursor — opens the session's folder; both route it to the
    window already showing that workspace.
  • Terminal.app — fully scriptable by tty, like iTerm2 already was.
  • tmux, inside any terminal — selects the exact window + pane and
    switches the attached client, so even Ghostty/Alacritty get deep focus if
    Claude runs inside tmux there.

Terminals with no scripting surface at all now say so on hover ("click
focuses Ghostty only") instead of silently promising more than they deliver.

Registry resilience

Claude Code's session registry (~/.claude/sessions/) is an undocumented
internal — a single upstream change could've taken Rocky's whole session list
down with it. Now:

  • A versioned adapter decodes it, tolerating renamed/retyped fields if the
    format drifts.
  • An unreadable or unrecognizable registry degrades to hooks-only mode
    (every session that's fired a hook still shows up) instead of an empty pet.
  • The right-click menu always shows a plain-language self-check: hooks wired?
    registry readable?

Signal accuracy

  • Rocky no longer dings for state it discovers already true the moment it
    (re)starts — a real, frequent false alarm during dev iteration or after a
    reboot.
  • A permission prompt resolved outside Rocky (approved/denied at the
    terminal) now still flags the very next "your turn" instead of missing it.
  • The re-nudge interval is tunable from the right-click menu.
  • Added scripts/test-session-store.swift, a standalone regression suite
    (no framework — swiftc + run) covering the registry⨯hook merge and alert
    logic.

A minimal preferences layer

No config file, no settings window — every knob lives in the right-click menu
and persists in UserDefaults, same as the window position always has:

  • Alert Style — Ripple + Sound or Ripple Only.
  • Pet Size — Small / Medium / Large.
  • Quiet Hours — a daily window where alerts go quiet automatically.
  • Respect macOS Focus — best-effort sync with Focus/Do Not Disturb.
  • Per-session mute — right-click a tab; it stays visible with a 🔕, just quiet.

Muting anything only silences the interruption (sound, ripple, window
auto-raise) — the tab, its status, and the stuck-pulse stay visible. Rocky's
whole point is peripheral vision, so nothing muting does ever makes a session
disappear.

Install / upgrade

brew upgrade rocky        # or: brew install ketansomvanshi/tap/rocky

or from source: git clone then ./install.sh.