<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dingger.git/ROADMAP.md, branch master</title>
<subtitle>Watches the AI coding agents in your tmux panes on macOS and tells you which need you, from the menu bar, a floating panel, the status line and notifications; jumps to them, and restores tmux sessions and agents after a crash
</subtitle>
<id>https://git.soarez.net/sz/dingger.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/dingger.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/'/>
<updated>2026-11-01T08:22:01+00:00</updated>
<entry>
<title>show what pi agents cost today, this week and this month, counting forked replies once</title>
<updated>2026-11-01T08:22:01+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-11-01T08:22:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=8146d1db419e8bdacd75920da6f3761abf724853'/>
<id>urn:sha1:8146d1db419e8bdacd75920da6f3761abf724853</id>
<content type='text'>
</content>
</entry>
<entry>
<title>mark forgotten drafts in pi agents' input boxes, and keep them across a crash or restore</title>
<updated>2026-10-30T16:59:43+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-30T16:59:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=959f0d46cac1a09d0821da599d8dff54d1147892'/>
<id>urn:sha1:959f0d46cac1a09d0821da599d8dff54d1147892</id>
<content type='text'>
</content>
</entry>
<entry>
<title>reload pi agents on an old extension: versioned extension, control socket, menu item and reload-agents</title>
<updated>2026-10-30T15:27:21+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-30T15:27:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=b0cfd10b80443d3f67d263ff4db177bb53cc90ed'/>
<id>urn:sha1:b0cfd10b80443d3f67d263ff4db177bb53cc90ed</id>
<content type='text'>
</content>
</entry>
<entry>
<title>roadmap: cost, extension version, conversation search, uncommitted work, drafts</title>
<updated>2026-10-30T14:31:03+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-30T14:31:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=91436536b69c10aa333c2b2978284b57cca3ed64'/>
<id>urn:sha1:91436536b69c10aa333c2b2978284b57cca3ed64</id>
<content type='text'>
</content>
</entry>
<entry>
<title>roadmap: park 'say what happened' with its mockup's design</title>
<updated>2026-10-30T13:15:36+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-30T13:15:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=da77b9ef9eeaeda9a1a0d4a5e62a4abdd965e34d'/>
<id>urn:sha1:da77b9ef9eeaeda9a1a0d4a5e62a4abdd965e34d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>roadmap: ideas beyond the current list</title>
<updated>2026-10-29T17:47:56+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-29T17:47:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=596cff731de3ad6762344bf89a78329710fb901d'/>
<id>urn:sha1:596cff731de3ad6762344bf89a78329710fb901d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: mark as unread does not work from inside claude code</title>
<updated>2026-10-27T12:20:08+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-27T12:20:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=7455ddfcf6158ec1304d1188a9530f7973e845d5'/>
<id>urn:sha1:7455ddfcf6158ec1304d1188a9530f7973e845d5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>roadmap: the extended-keys warning is gone</title>
<updated>2026-10-27T10:15:11+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-27T10:15:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=9f3a567d4bb1b7b6e42a744936f993bcd437882d'/>
<id>urn:sha1:9f3a567d4bb1b7b6e42a744936f993bcd437882d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>roadmap: pi's status reports, dialogs, cancelled and failed runs, extended-keys</title>
<updated>2026-10-25T04:43:25+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-25T04:43:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=5fe10900102bb2e083f41ccafff25c4b3e378cd8'/>
<id>urn:sha1:5fe10900102bb2e083f41ccafff25c4b3e378cd8</id>
<content type='text'>
items from pi 1.0.4 to 1.4.0 worth using, and from testing pi 1.4. preview
in agent search moves last.
</content>
</entry>
<entry>
<title>raise the terminal window that holds the tmux client</title>
<updated>2026-10-23T16:11:23+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-23T16:11:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dingger.git/commit/?id=e4d3bc242bd3d18aa83a76f25dcbe5cb7a2ced78'/>
<id>urn:sha1:e4d3bc242bd3d18aa83a76f25dcbe5cb7a2ced78</id>
<content type='text'>
a jump (any click, a shortcut, search) activated the terminal app, which
raised whichever window was used last. now:

- the client: the named one (a status-line click), else one already on a
  session holding the agent's window (several terminal windows can show
  one session; it shows the agent without switching, and keeps its own
  session in a session group), else any; the focused one first, then the
  one used last (its last input or focus).
- Ghostty (1.3+, scriptable by terminal id, not by tty): dingger learns
  which terminal holds each client when it gains focus. tmux's
  client-focus-in hook runs `dingger terminal focused`, which asks Ghostty
  for its focused terminal and records it in @dingger_terminal_&lt;tty&gt;, but
  only if the client is still focused once Ghostty answered (a fast switch
  must not pair the wrong terminal); a terminal holds one client, so an
  older pairing with it is dropped. `focus` raises the exact terminal
  (window, tab, split) through `tmux run-shell`: Apple Events from the tmux
  server count as Ghostty's own, so no permission prompt. a terminal that
  is gone is forgotten and the app activated, as without a pairing.
- in a hook, #{client_name} can be another client (the previous event's);
  the snippet's hook uses #{hook_client}.

e2e step 20: two nested clients on one session, focused by typing focus
reports into their outer panes, a fake osascript as Ghostty, a fake open
(tests never activate a real app); it loads the snippet's own hook line.
each rule has a negative control that fails.
</content>
</entry>
</feed>
