Skip to content

Releases: aby-agency/aby-claude-watcher

v1.7.2 — Toast notifications in compact view

22 May 13:31

Choose a tag to compare

Fixed

  • Toast notifications now appear in compact view even when the bell is off. Previously, the toast overlay was gated on the per-session bell preference at the main-process level, so users in compact view who hadn't enabled the bell got no visual signal on waiting / pending transitions. The IPC now fires unconditionally and the renderer gates by view mode: compact always shows the toast, grid keeps the bell-gated behaviour (unchanged), micro still skips the overlay (window too small). In compact view, the bell now controls only sound + native OS notifications.

The CHANGELOG also retroactively documents 1.7.0 and 1.7.1.

Downloads

  • Apple Silicon: Aby.Claude.Watcher-1.7.2-arm64.dmg
  • Intel: Aby.Claude.Watcher-1.7.2-x64.dmg

v1.7.1 — Color semantics rework + compact branch truncation fix

22 May 08:17

Choose a tag to compare

What changed

State colors now match the what needs my attention? mental model rather than the what is the process doing? one. The result: only one state pops visually, and it's the one that actually demands action.

New color mapping

State Color Meaning
thinking 🟣 violet Claude is reading your prompt
running 🔵 blue Claude is executing tools (in progress)
waiting 🟢 green turn finished, idle
pending 🟡 amber permission prompt — action required
error 🔴 red API error or silent crash

Amber is now reserved for the one state where Claude is genuinely blocked on your input. Everything else is either active work (blue) or done-for-now (green), so the dashboard reads as "is anything amber? then go look" instead of forcing you to scan the whole list.

Fixes

  • Compact card spinner/label color — the CSS selector targeted .compact-meta-state, a class that didn't exist in the DOM, so the active-state coloring never applied. Spinner now correctly inherits the running-state color.
  • Compact card branch truncation.branch-value had a hard max-width: 100px that was intended for the detail-card variant but bled into the compact view, ellipsing branch names well before the row ran out of space. Now scoped properly; compact view uses the full available width.

Install

Download the DMG matching your Mac (Apple Silicon = arm64, Intel = x64) and drag the app to /Applications.

v1.7.0 — Detect Claude Code subagents in live sessions

21 May 15:30

Choose a tag to compare

What changed

The app now detects background subagents dispatched from monitored Claude Code sessions and displays them as nested rows under the parent session card. When Claude launches an Agent with run_in_background: true (think parallel SEO audits, multi-role UI reviews, anything fan-out), each live subagent shows up as its own green row tagged with the agent type and description — and disappears as soon as it finishes. Works in all three views (grid, compact, micro).

No setup. No hooks to install. The watcher reads the same per-session JSONL transcripts Claude Code writes anyway (~/.claude/projects/<project>/<session>/subagents/agent-*.jsonl).

Added

  • subagents.js: scan the per-session subagents/ directory, derive each agent's state (running / completed / error) from its JSONL tail + mtime, expose a SubagentTracker.snapshotForSession() API.
  • watcher.js: capture every Agent tool_use from parent JSONLs into session.agentDispatches, joining toolUseId to each subagent's meta.json so we can filter background vs. foreground.
  • main.js: extend serializeSession() with a subagents: [] payload (no new IPC channel — rides along with existing session updates).
  • Renderer: nested sub-rows under cardHTML, compactItemHTML, microItemHTML, with view-tuned styling (full row in grid, type-pill drop in micro for density).
  • 25 new unit tests covering meta parsing, tail-read with huge-line safety, state derivation matrix, scan filtering, and the watcher's agentDispatches capture.

Filter behaviour

Only background + currently running subagents are shown. Foreground dispatches and completed/errored agents are intentionally hidden — they'd clutter the parent card without adding signal. The dispatch metadata is still tracked in memory if you want to surface them later via a toggle.

Install

Download the DMG matching your Mac (Apple Silicon = arm64, Intel = x64) and drag the app to /Applications.

v1.6.1 — popover height fix

20 May 15:18

Choose a tag to compare

Fixed

  • Popover height stuck regardless of session count — the tray popover measured .popover-body.scrollHeight to auto-resize, but that element has height: 100vh + overflow: hidden and its scrollable child (.popover-list) scrolls internally without pushing the parent. scrollHeight therefore always returned the current window height, so opening the popover with 1 session or 15 sessions produced the exact same ~360px window. Height is now computed from header.offsetHeight + popList.scrollHeight + footer.offsetHeight + 2px (body borders) so the window grows up to the existing 600px clamp before the inner list takes over scrolling.

Downloads

  • Aby Claude Watcher-1.6.1-arm64.dmg — Apple Silicon (M1/M2/M3/M4)
  • Aby Claude Watcher-1.6.1-x64.dmg — Intel Macs

v1.6.0 — Live-only: drop completed/resume/clear, fix notif spam

10 May 15:17

Choose a tag to compare

What changed

The app now monitors only live Claude Code sessions. When a session ends, it disappears instantly — no more grey "completed" cards, no "Old sessions" divider, no resume modal. The value prop becomes "ambient awareness of what Claude is running right now"; for history or resume, the claude CLI itself is more reliable.

Removed

  • Completed state: dark-grey cards, "Anciennes sessions" / "Old sessions" divider, dirty config entries from older versions are migrated out on first launch.
  • Resume flow: the play button on completed cards, the modal with --dangerously-skip-permissions toggle, and the IPC + AppleScript machinery behind it.
  • Clear-completed: the "Tout effacer" / "Clear all" button and its confirmation modal.
  • ~250 lines of related code, i18n strings (state_completed, action_resume, resume_*, clear_completed_*, sessions_old_label), CSS, endedAt/wasResumed fields.

Changed

  • Notification cooldown now resets only when state goes to thinking (= a real user prompt landed). A Claude tool-loop waiting → running → waiting no longer re-rings the bell every cycle. One ding per "Claude is waiting for you" episode.
  • Error sessions stay visible with a manual X button — the only non-active state still surfaced in the UI.

Install

Download the DMG matching your Mac (Apple Silicon = arm64, Intel = x64) and drag the app to /Applications.

v1.5.10 — Notifications overhaul + AskUserQuestion PENDING in bypass

07 May 18:06

Choose a tag to compare

Notifications overhaul

  • Sound themes
  • Persistent bell indicator
  • Banner toast
  • Ghostty terminal focus support

Watcher state fix

  • AskUserQuestion and ExitPlanMode now correctly mark sessions as PENDING (orange) even in bypassPermissions mode
  • Hook payload carries tool_name so the watcher can distinguish interactive tools from regular permission prompts
  • Notification hook covers idle_prompt fallback (60s safety net)
  • User-level hooks now installed in ~/.claude/settings.json (was .local.json which Claude Code doesn't load at user scope)

DMGs

  • arm64 — Apple Silicon (M1/M2/M3/M4)
  • x64 — Intel Mac

v1.5.9 — Direct interactions: click=focus, name=rename, no context menu, no +

06 May 16:09

Choose a tag to compare

This is a UX-driven cleanup release. The cards lost about half their
controls and the codebase about 200 net lines, while the experience
becomes more direct: one click on a card opens its terminal, one click
on the name renames it inline, no context menus, no "+" to add sessions
manually, no remote-control bouton.

Removed

  • Remote-control featuresession.remoteUrl, the globe button on
    cards, the context-menu entry, and the watcher's bridge_status event
    detection are gone. The internal open-remote IPC stays as the
    underlying transport for openExternalUrl (still used for the GitHub
    link in About).
  • Manual "Add session" + button — the toolbar action and its modal,
    along with the add-session / launch-session IPC, the
    watcher.addSession() method, and focus.launchSession(). Sessions
    are auto-detected; the empty state now reads "Lancez claude dans un
    terminal — les sessions apparaissent ici automatiquement".
  • Rename modal — replaced by inline rename (see Added).
  • Right-click context menushowContextMenu / hideContextMenu,
    the <div class="context-menu"> placeholder, the oncontextmenu
    attribute on cards, and the global click listener that hid the menu.
    Every action that lived there is now reachable directly: focus
    terminal = click on the card, rename = click on the name, resume /
    delete = the existing buttons on completed/error cards.
  • Terminal >_ button and "more" button on macro and compact
    cards. Card click handles focus.
  • X sessions actives header above the list (was a 1.5.7 add).
  • Session slug display on cards (the small grey hex string under the
    name). handleCopyId is left as dead code for now.
  • Pointer cursor on hover of .card / .compact-card (it implied
    reorder), and the cursor: grab on draggable cards. cursor: grabbing
    is kept while a drag is actively happening.

Added

  • Inline rename — hover the project name and a pencil icon fades in;
    click to convert the span into an <input> in place. Enter saves,
    Esc cancels, blur saves. Skips the IPC roundtrip if the value didn't
    change.
  • Multi-window VS Code / Cursor focus — the editor case in focus.js
    was rewritten around open -a "<App>" "<cwd>". macOS LaunchServices
    routes the call to the window that already has that workspace open, so
    clicking a card reliably brings the right Code/Cursor window forward
    even when several windows are open. Crucially, this needs no
    Accessibility nor Automation permission
    , which the previous
    System Events / AXRaise approach did, and which broke during
    npm run dev because the dev Electron binary wasn't authorised.
  • detectTerminalFromPid reads ps -o command= in addition to
    comm=. The truncated comm= is just Electron for both Code and
    Cursor main processes; the full command path
    (/Applications/Visual Studio Code.app/...) reliably distinguishes
    them.

Changed

  • Compact view layout is now 3 lines: name + actions / état · outil / branch. The branch line wraps freely when the name is long
    (no more ellipsis cutting it off — there's room on its own line).
  • Status bar typography unified — every label, percentage, reset
    countdown and clock icon now inherits the bar's 10 px / text-muted,
    matching the 5h / 7D labels. One source of truth in .status-bar.
  • Card click = focus terminal (single click) on macro and compact
    cards, matching the existing micro behaviour. Buttons inside the card
    call event.stopPropagation() so they keep their own actions.

v1.5.8 — Compact mini-cards + Settings modal anchored

06 May 14:40

Choose a tag to compare

Changed

  • Compact view → mini cards — the previous compact view was a single
    line per session that landed visually almost on top of the micro view.
    It's now a true intermediate density: a small card with a header
    (project + slug + actions) and two metadata lines (state · duration ·
    tool · tokens, then branch · model). The list uses the same
    responsive auto-fill grid as the macro view but with narrower
    minimum (260 px vs 320 px), so a typical 13" screen fits 8-10 cards
    vs 3-4 in macro. Macro and micro views are unchanged.
  • Settings modal: fixed content height — the modal used to resize
    itself depending on which tab (Général, Notifications, À propos) was
    active. Cycling through tabs forced you to chase the tab buttons with
    the mouse. The content area is now a fixed 440 px with internal
    scrolling for tabs that overflow, so the tab row stays anchored.

v1.5.7 — Active count, old sessions divider, modal refresh

06 May 14:29

Choose a tag to compare

Added

  • Active-session count header above the list (X active sessions) so a
    glance at the dashboard tells you immediately how busy you are.
  • Old sessions divider — completed sessions are now visually separated
    from active ones with a divider that includes a Clear all button. A
    confirmation modal protects against fat-finger purges. The clear only
    removes sessions from the dashboard's view (and their custom names /
    notification preferences); the underlying Claude Code session files on
    disk are untouched, so claude --resume still works.
  • About panel describing what the app does — replaces the keyboard
    shortcuts modal in the toolbar's "?" button.

Changed

  • Update check cadence — first check at startup is now 10 s (was 30 s),
    and the app re-checks every 2 hours while it's running (previously only
    on launch). The internal 1 h rate limit on the manual "Check" button is
    unchanged.
  • Removed Cmd- keyboard shortcuts* (⌘1-9, ⌘G, ⌘P, ⌘F, ⌘?). They were
    rarely used, took inventory in the modal that was better spent on app
    context, and added behaviour that interfered with macOS Cmd-key
    conventions. Esc still closes any open modal — that's UX
    baseline, not a "shortcut".

v1.5.6 — Update banner polish

06 May 14:11

Choose a tag to compare

Changed

  • Update banner padding and typography — the "Installer maintenant"
    button felt cramped, especially during the long-text states
    ("Téléchargement 47 %", "Installation et redémarrage…"). Roughly
    doubled the button's vertical padding, bumped font sizes by 1 px,
    added font-weight: 500 and white-space: nowrap so the label
    doesn't wrap, and gave the banner itself more breathing room
    (gap 12→16, padding 8/14→12/20). Hover now lifts the button by 1 px
    for tactile feedback.