Roadmap

Newest at the top, oldest at the bottom. Major and minor releases sit on the trunk; patch releases branch off. Future versions are bold guesses against the Platform Rollout phasing — themes are committed, dates and order will shift.

horizon post-v1
Direction without commitment
  • OAuth / Sign in with Apple for the hosted relay · Relay wiki — bearer-token model is forward-compatible.
  • End-to-end encryption · Relay wiki — relay becomes a relay of opaque blobs; mutually exclusive with server-generated APNs payloads.
v1.0 ~Q4 2026 later
1.0 launch — second-desktop + hosted relay
  • Linux desktop tray · reincarnates #179 — macOS quality bar met; revisit embedded-daemon vs relay.
  • Windows 11 desktop · reincarnates #180 — tray app + WebView2 popover.
  • Hosted relay beta at relay.irrlicht.app · Relay wiki — same binary, public URL, auth-on-by-default.
Concept: three tray-app thumbnails for Linux (GNOME), Windows 11 (notification area), and the hosted relay at relay.irrlicht.app
v0.9 ~Oct 2026 later
Android + Apple watch family
  • Android client · Platform Rollout Phase 5 — Kotlin / Compose, FCM via the relay's push_provider.
  • watchOS companion · Platform Rollout §6 — glanceable working/waiting/ready counts; trivial once IrrlichtCore exists.
  • StandBy / Live Activities tile on iOS · Platform Rollout §6 — aggregated status on the lock screen.
  • macOS WidgetKit · reincarnates #254 — overlay design now settled; widget reads the shared snapshot.
Concept: Apple Watch showing working/waiting/ready counts, an Android phone with the same session list, and a StandBy iOS tile with aggregate counts
v0.8 ~Aug-Sep 2026 next
iOS family
  • iOS companion app via the relay · reincarnates #112 — SwiftUI app, APNs via the relay's push_provider.
  • iPadOS adaptive layout · Platform Rollout Phase 4 — master/detail on iPad, same target as iOS.
  • IrrlichtCore Swift package · Platform Rollout Phase 3 — shared models / SessionStream / reconnect / notification logic extracted from platforms/macos/.
Concept: iPhone and iPad showing the Irrlicht session list — adaptive layout from a shared IrrlichtCore Swift package
v0.7 ~Aug 2026 in flight
Relay v0 completes + productivity metrics + cross-IDE reach
  • Relay v0 completes — macOS multi-source UI · Relay wiki — bearer-token auth, SessionStream refactor, Settings → Relay Servers pane (wiki phases 4–6). The user-visible payoff of v0.5's foundation: aggregate laptop + remote-box + VM sessions into one list with source badges. Unblocks iOS in v0.8. Phase 7 LAN-direct mode for Tailscale users ships alongside.
  • VS Code panel hosting the dashboard · #350 — thin extension webview; Cursor / Windsurf inherit it for free. Rolled forward from v0.6, unshipped there.
Concept: a yield-ratio donut chart (73% kept, 27% reverted) next to a cache-hit-rate line chart with a marked regression at version v2.1.130
2026-10-11 · today
v0.6.7 2026-10-11
  • Every codex session on the shared app-server shows up · #2077 #2080 #2081 #2082 #2083 — concurrent codex TUIs each keep their own row, a closed TUI's row ends, idle sessions return after a restart, and no placeholder rows for codex's background processes
  • Execution-confidence chip · #737 — a “? score” chip in the web and macOS rows when an agent's recent messages hedge heavily

Also: join a relay by pasting one enrollment URL #1965, and concurrent Muse sessions on one muse serve process stay visible #2084.

v0.6.6 2026-09-27
  • Meta (Muse) quota in the header · #2057 #2062 #2063 — a Meta chip next to Anthropic and OpenAI, one Keychain read per grant, and up to five subscriptions sharing the header width

Also: Claude Code sessions keep their own PID and come back after a wrong delete #2042, and an advisor call no longer doubles the context size #2052.

v0.6.5 2026-09-22
  • DeepSeek Harness joins the supported agents · #1980 — compressed-transcript adapter with replay evidence
  • Install a relay with one command · #1964 #1963 — Linux installer with systemd, relay-side one-time enrollment codes

Also: one subscription shows as one quota provider again after the attribution change #2030.

v0.6.4 2026-09-15
  • The menu bar icon becomes a budget · #1955 — the compact toggle is replaced by a grouping (one bucket per project, one per machine, or all in one), a slot budget the whole icon spends before the rest fold into a single …, and an ordered list of which subscriptions get their own quota bar.
  • Muse joins the supported agents · #1960 — Meta’s muse CLI, with nested subagents, explicit turn boundaries, approval waits and token accounting. 41 of 50 matrix cells observed, 12 of 12 core.
  • The relay link survives standby · #1953 — a half-open WebSocket after a wake left relay rows frozen behind a green dot with no fault reported. A liveness ping and a wake handler now cancel the dead socket so the existing reconnect runs.

Also: every rendered project group is reorderable, including rows served by a second daemon #1948; group order is remembered as a superset #1954; and Claude Code sessions stop printing an Irrlicht marker into the assistant text you read #1944.

v0.6.3 2026-09-11
  • Autonomy — how long sessions ran without needing a human · #1905 — a new History section measuring the typical run, the usual spread, the longest run per bucket and peak concurrency, with a per-project panel underneath. Reconstructed points are marked as reconstructed rather than presented as measured.
  • Phone notifications, end to end · #1847 — a relay-side push engine plus an installable Web Push app, so a session that finishes a turn, asks a question or nears its context limit can reach you off the desk. Pairing mints a single-use code that expires in ten minutes, and #1939 adds a QR encoding of it.
  • Every Claude surface answered on its own evidence · #1894 — a documentation page splitting the interface surface from the execution place, one row per product mode across Claude Code, Cowork and Chat, each with the evidence behind it and the date it was last checked.

Also: waiting now surfaces for every permission prompt rather than nine named tools #1867; the backchannel is removed in full, so Irrlicht observes agents and no longer types into them #1846; Claude Desktop Local becomes a driven, recorded execution profile #1887; and site/ finally has a CI gate covering dead links, tag balance, head essentials and the sitemap #1894.

v0.6.2 2026-09-03
  • Compact control for every menu bar style · #1845 — one modifier aggregates project dots and narrows Usage quota bars, while a stable status-item identity keeps the user’s Cmd-drag position across restarts.
  • Initial Junie adapter support · #1851 — process discovery, sidecar CWD resolution, JSONL parsing, metrics and site coverage; maturity stays planned until replay recordings establish the claims.

Claude Code usage-limit errors now clear on the real resume event #1858 and stay red through idle prompts #1871; process exits delete the row again because Irrlicht cannot distinguish a crash from a deliberate quit #1860; the expanded Notifications panel keeps its margin #1854; and Usage style stays quota-only when an error occurs #1862.

v0.6.1 2026-08-26
  • A fourth session state, error · #1796 — a session whose provider call fails, whose credentials are rejected, or whose process dies mid-turn now reads red with the agent’s own failure text, instead of reading ready. Six adapters produce the signal (claude-code, copilot, gemini-cli, opencode, codex, pi and aider), and it reaches the wire, the web dashboard and the macOS menu bar.
  • Irrlicht reports its own faults — hook entries that went missing, and a hook channel installed but receiving nothing, now surface as a banner on both surfaces instead of only inside a --diagnose tarball.
  • An errored session stays red across a daemon restart · #1815 — a release, a reboot or a rebuild used to reset it to green or delete the row outright. Five separate reapers could take it; a static tripwire now fails any new one that skips the exemption.

Also: the history strip no longer coerces an unrecognised state to green — or overwrites it on disk #1807; the macOS Activity Matrix carries the error series it was silently dropping #1821; and every recording driver now observes its own teardown rather than asserting it, after nine exit_clean runs leaked a live agent apiece #1825. The history strip itself stays three-state: its wire format is 2 bits per bucket and all four codes are taken, tracked in #1805.

v0.6.0 2026-08-24 shipped
Hooks close out as the primary state channel — every adapter that can observe an approval prompt or a turn boundary now does, live
  • Eight more adapters push live state instead of irrlicht guessing it · #1355 — kiro-cli, gemini-cli, mistral-vibe, opencode, pi, hermes and antigravity, across four delivery shapes (JSON splice, comment-preserving TOML, an installed plugin/extension, and a shared shell hook).
  • GitHub Copilot CLI gains a hook-authoritative live-state tier · #1378 — on top of the transcript-based detection v0.5.10 shipped.
  • Months of safety hardening under the channel · #1360 — permission-gated installs, mandatory transcript-path confinement, per-adapter version floors, a liveness watchdog, wall-clock ceilings on hook-asserted holds, entry re-verification, registry-driven uninstall.
  • A permission that’s granted but not actually applied is now visible without opening Settings · #1385 — on both macOS and the web dashboard.
  • Two adapter calls, made honestly — aider audited and left unchanged, a recorded negative result rather than a silent gap #1720; gemini-cli scheduled for deprecation in v0.7 as no longer independently verifiable #1725.

This absorbs the cross-IDE-reach goals this row previously carried: the Claude Code Agent View orchestrator idea (#312) was closed as a negative result in June — Agent View is a viewer, not an orchestrator, with nothing to model — and the VS Code panel (#350) rolls forward into v0.7 below, unshipped.

#218 #307 #327 #329 #475 #488 #508 #529 #570 #657 #727 #728 #744 #759 #784 #832 #889 #903 #904 #910 #988 #998 #1013 #1034 #1044 #1046 #1055 #1141 #1161 #1171 #1173 #1174 #1178 #1186 #1187 #1209 #1213 #1248 #1256 #1326 #1332 #1342 #1348 #1349 #1353 #1359 #1363 #1366 #1367 #1369 #1377 #1382 #1383 #1384 #1386 #1387 #1388 #1389 #1390 #1391 #1392 #1394 #1397 #1399 #1400 #1401 #1402 #1404 #1405 #1406 #1407 #1408 #1410 #1411 #1415 #1418 #1419 #1420 #1423 #1424 #1426 #1427 #1428 #1430 #1431 #1432 #1433 #1434 #1435 #1438 #1439 #1440 #1441 #1442 #1445 #1446 #1447 #1448 #1450 #1451 #1452 #1453 #1454 #1455 #1456 #1457 #1461 #1462 #1463 #1466 #1467 #1468 #1469 #1471 #1472 #1473 #1474 #1476 #1477 #1478 #1479 #1480 #1481 #1482 #1484 #1485 #1486 #1487 #1490 #1491 #1492 #1493 #1494 #1495 #1496 #1497 #1498 #1499 #1500 #1501 #1502 #1503 #1504 #1505 #1506 #1507 #1508 #1509 #1510 #1511 #1512 #1513 #1514 #1515 #1516 #1517 #1518 #1519 #1520 #1521 #1522 #1523 #1524 #1525 #1526 #1527 #1528 #1529 #1530 #1531 #1532 #1533 #1534 #1535 #1537 #1538 #1539 #1540 #1541 #1542 #1543 #1544 #1545 #1546 #1547 #1548 #1549 #1550 #1551 #1553 #1554 #1557 #1558 #1559 #1561 #1563 #1564 #1565 #1567 #1569 #1570 #1572 #1573 #1574 #1576 #1578 #1580 #1582 #1583 #1585 #1586 #1588 #1590 #1591 #1594 #1596 #1598 #1600 #1603 #1605 #1607 #1609 #1611 #1612 #1614 #1615 #1616 #1618 #1619 #1621 #1624 #1625 #1627 #1628 #1629 #1630 #1632 #1633 #1635 #1636 #1638 #1639 #1641 #1642 #1644 #1645 #1646 #1647 #1649 #1650 #1652 #1655 #1656 #1658 #1659 #1661 #1662 #1663 #1664 #1666 #1667 #1668 #1669 #1670 #1671 #1672 #1673 #1674 #1675 #1676 #1677 #1678 #1679 #1680 #1681 #1682 #1683 #1684 #1685 #1686 #1687 #1688 #1689 #1690 #1691 #1692 #1693 #1694 #1695 #1696 #1697 #1698 #1699 #1701 #1702 #1703 #1704 #1705 #1706 #1707 #1708 #1709 #1710 #1711 #1712 #1713 #1714 #1715 #1726 #1727 #1728 #1730 #1731 #1735 #1737 #1738 #1739 #1740 #1741 #1742 #1743 #1746 #1747 #1751 #1752 #1757 #1759 #1760 #1766 #1769 #1770 #1771 #1772 #1773 #1774 #1776 #1777 #1778 #1779 #1780 #1781 #1782 #1783 #1784 #1785 #1786 #1787 #1788 #1789 #1790 #1791 #1792 #1793 #1794
v0.5.10 2026-08-09
  • GitHub Copilot CLI adapter · #1256 — the tenth monitored agent. Explicit turn boundaries in a uniformly-enveloped events.jsonl, transcript-tier permission prompts with no hook install, and live per-message tokens and cost. Verified against CLI 1.0.77–1.0.78.
  • Hermes Agent adapter · #1325 — the eleventh, and the first whose sessions have no files of their own: every session lives in one shared SQLite store at $HERMES_HOME/state.db, discovered live while the session is still running.
  • herdr as a controllable terminal backend · #1348 — alongside tmux and kitty. A session in a herdr pane can be typed into, interrupted and read back from the daemon, headless and over the relay, addressed by the pane’s own $HERDR_PANE_ID rather than variables it merely inherited from a long-lived server.
  • Hook-authoritative live state for Claude Code and Codex · #1129 — Claude Code’s Stop #1161 and Notification/idle_prompt #1173 hooks and Codex’s PermissionRequest/Stop tier #1171 replace prose heuristics, so “an approval prompt is on screen” and “the turn is over” are observed rather than inferred.

Plus a correctness sweep: a dropped kqueue creation event can no longer hide a session for the daemon’s whole lifetime #1286; a slow-but-executing edit is no longer mislabelled as a stalled prompt #1132; a timed-out lsof probe no longer permanently purges a live background process #1307; the macOS menu-bar panel stopped burning ~10% CPU while closed #1134; the master “Enable notifications” toggle now silences every channel including spoken alerts #1183; and the task ETA converges as a task progresses instead of staying anchored to one unrepresentative round #1211.

v0.5.9 2026-07-15

A correctness sweep across session discovery and state. A parent session no longer wedges at working forever once it has spawned a background subagent #1098 — v0.5.8’s guard could never release, because Claude Code writes a zero count as absence rather than an explicit 0. Three agents whose session root is relocated by an env var or config key are no longer silently invisible: Vibe’s $VIBE_HOME #1108 and [session_logging].save_dir #1123, and Kiro CLI’s KIRO_HOME #1074. The transcript tailer now detects a file rewritten in place, not just one that shrank #1120.

v0.5.8 2026-07-15
  • Mistral Vibe agent adapter · #921 — state, model, context, cost, summaries, and terminal write-back control (since retired — #1846) for vibe sessions, plus a full 44-cell onboarding column.
  • Activity Matrix lands on macOS · #1038 — the projects × time grid shipped web-only in v0.5.7 is now a top-level History tab in the app, with nine zoom granularities and CSV/JSON export.

A long sweep of session-lifecycle correctness: a parent no longer flips to ready while a background subagent is still running #1037; a session’s swallowed first turn is synthesized on late or child discovery #1010; terminal write-back state is re-keyed across presession reconciliation so control is not silently lost #1007; and non-Claude adapters stop falling back to Claude’s model config #1022.

v0.5.7 2026-07-13
  • Activity Matrix chart in History · #986 — a projects × time-bucket grid of working/waiting/ready agent counts, zoomable across nine granularities from 1 minute to 1 year.
  • DORA metrics in History · #959 — Deployment Frequency, Lead Time for Changes, Change Failure Rate, and MTTR as a new Metrics section on both macOS and web.
  • CO2 equivalent reference lines on the CO2 chart · #955 — reference lines at the height of relatable everyday CO2e equivalents, plus a CO2 Methodology docs page.

Question and waiting-cue detection now understands German, Spanish, French, and Portuguese, not just English #939; WCAG-AA contrast failures in summary/question pills fixed on macOS and web #987; a recurring family of -race test flakes, root-caused to a session-repository aliasing bug, closed out for good #976.

v0.5.6 2026-07-09
  • Subscription quota in the menu bar status icon · #917 — the status icon can render your 5h/7d quota windows directly, as stacked bars or a compact ring, with Lights/Usage/Combined styles and a per-provider picker.

Sessions with a still-active background child no longer flip to ready mid-turn #893 #899, nor when a transcript moves into or out of a git worktree #878; long background-research subagents no longer falsely time out #882; the CO2 estimate no longer wraps to a second line #922; closed every open CodeQL alert and the remaining SonarQube security/reliability findings from the project-wide code-health sweep #894 #896 #910 #912 #913; install.sh no longer kills unrelated daemons on the machine #876.

v0.5.5 2026-07-04
  • Estimated CO2 footprint alongside cost · #831 — click a session's cost figure to cycle to an estimated CO2e footprint, with a tooltip disclosing how confident the number is.
  • Cache-regression badge explains itself · #826 — the badge now shows which agent version caused the regression, with a plain-language explanation on hover instead of a bare icon.

History's Model grouping fixed #793 and its tab switcher moved into the header #788; the menu bar app recovers from a stuck local-daemon or relay reconnect #845 #848 and no longer double-counts relay-echoed sessions #830; “Expand All Task Summaries” persists across restarts #800; Antigravity’s non-interactive host poller no longer shows as a phantom session #791; FocusMonitor’s remaining macOS 26 crash path closed #790; subagents are reaped after transcript deletion #850; a fragile SwiftPM resource-bundle dependency removed #847.

v0.5.4 2026-06-29
  • History view with spend analytics · #752 — a cost-analytics surface for both macOS and the web dashboard: cumulative spend with a linear projection, project/branch/provider/model attribution and drill-downs, a concurrent-agents timeline, a productive-vs-reverted yield ratio, faceted cross-filtering, and CSV/JSON export.
  • Act on your agents from the dashboard · #731 — control discovered agents locally or remotely, across agents and terminal backends; event→action rules, agent-translated command presets, and a Custom command. Since retired — #1846.
  • Plain-language session summaries · #770 — rows lead with a human-readable intent block and the exact waiting-question, built from lightweight markers with a pluggable compaction step.

ETA accuracy improvements surfaced sooner #768; a built-in diagnostics bundle (/debug/bundle + --diagnose) #742; cache-creation regression detection #749; a generic GUI-host fallback for click-to-focus #741; ghost sessions age out / get reaped #740 #734; the Settings panel no longer janks #730; a TTS crash fixed #781; a macOS 26 / Xcode 26 SDK launch crash fixed #782; non-Anthropic-frontend sessions price correctly (codeburn alias sync) #726.

v0.5.3 2026-06-21
  • Google Antigravity support · #715 — one adapter covers both the agy CLI and the Antigravity IDE; transcript-first discovery makes PID-less IDE sessions first-class.
  • Publish to relay · #718 — a macOS toggle that streams this daemon’s sessions out to a standalone relay (works behind NAT); the forwarder hot-reloads so toggling Publish or editing the URL/token applies to the running daemon with no relaunch #722.

Relay native multi-tenant workspace isolation #709; the Antigravity context bar renders (tokens read from the sibling conversation store) #719; Claude Code sessions stay “waiting” across a daemon restart #706; the brand flame gradient is legible on light backgrounds #708.

v0.5.2 2026-06-19
  • Gemini CLI adapter · #668 — eighth coding-agent backend (alpha): live working/waiting/ready state from Gemini’s ~/.gemini/tmp JSONL transcripts, nested subagent chats, and per-turn token deltas.
  • ~3× less CPU under heavy load · #693 — macOS WebSocket refreshes are coalesced into one redraw per ~100ms window; measured ~100% → ~31% of a core under 40 agents.
  • Configurable context-pressure alert · #692 — set the context-fill alert as a percentage (default 80%) or an absolute token count, in a tidied settings panel with an Advanced Settings group and Beta badges.

/ir:doc-review documentation-audit skill #698; dead sessions age out correctly (no-op refresh no longer bumps updated_at) #684; manual /compact shows the full working→ready lifecycle #658; the installer downloads + verifies before removing the old build #654; release DMGs are codesigned before notarization #652.

v0.5.1 2026-06-07

Session rows stop lying: /compact no longer strands sessions in “working” #642; Claude Code 2.1.168’s background-daemon processes no longer mint permanent ghost rows (and old ghosts are retired on upgrade) #648; sibling-bound ghost pre-sessions are swept continuously #646; the startup-race “?” agent icon heals itself #647; daemon restarts can no longer resurrect idle sessions as “working” (ledger schema v4) #650.

v0.5.0 2026-06-06 shipped
Consent-first permissions, agent-authored task ETAs, and Kiro CLI joins the watch list
  • Consent-first permission wizard · #570 — every read and modification irrlicht performs is a declared per-agent permission behind explicit consent; nothing is exercised until granted, and revoking actively undoes (hooks uninstall, watchers stop).
    Permission wizard listing Claude Code and Codex with per-permission toggles, what each permission touches, and an Apply button
  • Task-completion ETA chip · #558 — the agent self-reports progress via a hidden in-band marker; web + macOS show a “~9m left” chip that degrades honestly when reports go stale.
  • Kiro CLI adapter · #280 — seventh coding-agent backend: live state, PID binding, todo-list task progress, and model + context metrics from Kiro’s session sidecar.
  • irrlicht-ls dashboard parity, in the default install · #554 — hierarchy, cost/context/adapter columns, filters, --format json; PKG symlinks it into /usr/local/bin.

Eyed-flame mark lands everywhere #594; menu-bar attention icon for pending permissions #607; Gas Town event-driven polling kills a CPU spike #575 + unified rig/role/cost display #560; stale subagent badges fixed via Seq-gap re-hydration #601, #637; macOS login item self-heals on every launch #563.

v0.4.8 2026-05-30
  • Remote session relay — irrlichtrelay · #547 — a standalone binary that aggregates every machine’s sessions into one macOS app + web view, secured with TLS/wss, bearer-token auth, an origin allowlist, and per-IP / per-connection caps.
    Three irrlichd daemons pushing over authenticated wss to a standalone irrlichtrelay, which fans out to the macOS app and web dashboard
  • Linux daemon · #482 — irrlichd builds and runs on Linux (amd64 + arm64) behind a portable ProcessObserver seam; same curl … | sh install.

Per-provider windowed usage spend + subscription empty-state #441; OpenCode inherits OpenAI rate limits via JWT account_id #424; backgrounded Bash processes hold a session working #450, #452; claudecode permission prompts surface as waiting #490; codex turn_aborted settles interrupted turns #464; 22 new frontend pricing aliases synced from codeburn; editable relay URL + token in macOS Settings #550; web dashboard split into three files #418; onboarding-factory rewrite — of CLI as sole replaydata/ writer, shard migration, 4-verb skill #514.

v0.4.7 2026-05-22
  • Sparkle 2.x auto-update integration · #413 — in-app update prompts with a signed EdDSA appcast at irrlicht.io/appcast.xml. First Sparkle-enabled release; v0.4.6 users need one manual upgrade before auto-updates begin.
  • Developer-ID signed + Apple-notarized DMG · #409 — first launch through curl installer or Homebrew cask no longer trips Gatekeeper; quarantine-strip workarounds removed.
  • OpenCode todowrite as task-progress dots · #410 — dashboard parity with Claude Code’s TaskCreate/TaskUpdate pipeline.

OpenCode working→ready tail latency drops ~2.5 s #412; Claude Code wrapped command preserves user statusLine output #404; curl installer survives GitHub API rate limits #401; get-task-allow removed from production entitlements before notarization #407, #415; /ir:onboard-agent pipeline lands with first-class opencode driver #328, #408; Focus entitlement + DevID codesigning restored #406; coverage-viewer and find-flicker-sessions retired #411, #414; kitty docs clarify full-restart requirement #402.

v0.4.6 2026-05-17
  • Public roadmap page · #395 — chronological newest-at-top timeline at /docs/roadmap.html with concept tiles for every future release and ALSO SHIPPED roll-call for every past release.
    Roadmap page top — Horizon and v1.0 entries on a dashed future spine

Brand: gradient flame refresh propagates to remaining surfaces (docs sidebar dot, design-system tiles) #394; working-state icon switches to a breathing solid dot #393; web subagent dot-matrix row dropped to match macOS overlay #397; Claude Code task list prunes entries absent from task_reminder snapshots #396.

v0.4.5 2026-05-16
  • Pro / Max subscription burn-rate forecast in the macOS overlay · #309, #379 — stacked 5h/weekly progress bars with linear-projection forecast.
    Quota progress bars in the menu-bar overlay header
  • New gradient flame brand system · #388 — single-path silhouette across app, icon, navbar, design system.
    Side-by-side: old wisp flame on the left, new single-path gradient flame on the right
  • Unified per-row state icons across web and macOS · #382 — heartbeat halo / pause bars / checkmark, same vocabulary in both surfaces.
    The three Irrlicht state icons: working = breathing dot, waiting = pause bars, ready = checkmark
v0.4.4 2026-05-16
  • Web dashboard reaches overlay parity, beta · #354 — http://127.0.0.1:7837 mirrors the macOS overlay row anatomy, header controls, and settings.
    The macOS overlay reference design that v0.4.4 web dashboard now mirrors

Codex sessions price at real-dollar instead of $0 (split-event token_count attributed to session model) #361; adapters honor agent-CLI env vars for relocated session dirs (#349).

v0.4.3 2026-05-15
  • macOS app autostarts at login · #343 — SMAppService.mainApp registers the app on first launch; the menu-bar overlay is up before you open your first terminal.

Click-to-focus follows VS Code / Cursor / Windsurf across macOS Spaces and fullscreen windows #344; daemon no longer kills a neighboring session when two Claude Code instances open in one VS Code window #345.

v0.4.2 2026-05-15
  • macOS overlay aligned with the official design system · #229 — typography, spacing, and color tokens unified with the brand system; foundation the v0.4.5 brand refresh built on.

Drop legacy file-polling path and retire the vaporware IRRLICHT_DISABLED env var; document the four env vars that actually exist (#337).

v0.4.1 2026-05-14

kitty click-to-focus lands on the right window and tab #326.

v0.4.0 2026-05-14 shipped
Architecture refactor + per-event notifications
  • Agent-declaration architecture refactor · #159 Phase A — adding a new agent is now a Go-only one-line registration; sealed-sum source type unifies the watcher wiring.
  • Per-event notification sound picker · #253 — separate toggle, sound, and preview per ready / waiting / context-pressure event; custom audio import + speak-aloud voice.
v0.3.13 2026-05-11

OpenCode ghost-session cleanup after upgrade; Homebrew tap kept current on every release #299.

v0.3.12 2026-05-09
  • OpenCode adapter · #255 — first SQLite-backed monitoring path; sets the pattern for non-JSONL agents.

ir:triage skill for diagnostic GitHub-issue triage #283.

v0.3.11 2026-05-02

Serve stale LiteLLM cache instead of zeroing costs #275; aider stays open across re-prompts under --yes-always #274.

Session history streams over WebSocket (replaces 30s polling) with bit-packed 60-bucket rings #249; daemon serves dashboard from disk so the UI is hot-editable in dev #267.

v0.3.10 2026-04-27

Sweep zombie sessions on daemon startup #242.

Prune deleted sessions from apiGroups synchronously so the overlay updates immediately instead of after a 30s rehydrate #244.

v0.3.9 2026-04-27
  • Aider adapter shipped · #220, #224 — first agent through the new /ir:onboard-agent flow; tmux-driven interactive driver, scenario fixtures, trailing-? waiting contract.

Homebrew cask via own tap #187 — brew install --cask irrlicht.

v0.3.8 2026-04-24
  • Menu bar rewritten on NSStatusItem + NSPanel · #196 — eliminates the one-frame background flash on collapse/expand; panel grows downward from the status item.

"…" overflow indicator on the menu-bar icon when more than five project groups are active #193; unified agent registration via agents.Config #199 — foundation for the v0.4 Phase A refactor.

v0.3.7 2026-04-24
  • Agent history bar — per-session state timeline with 1s / 10s / 60s granularity — cycling mode button switches between context display and history; persists across daemon restarts.
    Session rows showing per-row colored history timelines and a waiting-question block

Click-to-focus extends to 17 terminal/IDE hosts (Zed, Rio, Tabby, WaveTerm, Alacritty, Nova, Kitty, JetBrains family, …); Claude Code task-list progress dots in the session row.

v0.3.6 2026-04-19
  • Click-to-focus the launching terminal or IDE · #170 — clicking a session row raises iTerm2 / Terminal.app / VS Code via AX title-matching; ppid-chain host resolution.

Web dashboard renders on initial load (was empty until the 30s rehydrator) #167; project-group reorder chevrons restored #172.

v0.3.5 2026-04-19
  • Per-group cost display with day / week / month / year timeframes · #83, #162 — project headers cycle through cost windows instead of a single hard-coded one.
  • LiteLLM as the single source of truth for model context windows + pricing · #165 — hand-maintained capacity table removed; the daemon picks up new models without a restart. 1M context for Sonnet 4.6 lands.

curl | sh installer at irrlicht.io/install.sh; daemon binds localhost-only and rejects cross-origin WebSocket upgrades #94, #155.

v0.3.4 2026-04-14
  • Gas Town full role support with recursive group nesting · #154 — first-class role registry (mayor, deacon, witness, refinery, polecat, scribe, …) instead of ad-hoc strings.

Desktop notifications on macOS state transitions #147.

v0.3.3 2026-04-11
  • Full session lifecycle recording + offline replay harness · #107, #138 — ir:test-mac writes a sidecar; replay replays it byte-identically against the production tailer and fails on drift.

Cost display toggle in the macOS menu bar, off by default #130.

v0.3.2 2026-04-08
  • Claude Code session-state flicker eliminated · #102 — four distinct bugs fixed: stale-tool timer, open-tool tracking desync, interrupt-vs-cancel, stop_reason allow-list.

Offline replay harness lands — any Claude Code, Codex, or Pi transcript runs through the production tailer + classifier in virtual time; a 500-hour session replays in under a second.

v0.3.1 2026-04-06
  • Dynamic model capacity from LiteLLM — context-window sizes and pricing fetched at daemon startup, replacing hardcoded fallbacks. Sets the stage for v0.3.5's single-source-of-truth lookup.

Reorderable project groups in the macOS popup and menu bar; agent landscape page launches with 63 tracked agents.

v0.3.0 2026-04-06 shipped
Permission-pending state + Gas Town orchestrator UI
  • Permission-pending detection · #108 — sessions with non-blocking tool calls awaiting user approval flip to waiting after a 5-second stale-tool timeout. New piece of the three-state vocabulary.
  • Gas Town educational UI — role-hierarchy visualization and active-tool display for orchestrator sessions.
  • Per-adapter transcript parsers — each agent owns its own parser; foundation for the v0.4 Phase A refactor.
v0.2.4 2026-04-05
  • Will-o'-the-wisp brand identity lands — macOS app icon plus SVG/PNG favicons across the landing page and docs; SEO metadata (Open Graph, Twitter Card, canonical URL) on every site page.

/ir:release automation skill drives DMG + PKG + universal-binary builds, changelog updates, and GitHub release creation from one command; branded DMG background asset.

v0.2.3 2026-04-04
  • Subagent lifecycle end-to-end — background and foreground subagents detected, tracked, and shown as children with a purple count badge on the parent; cascade cleanup on parent exit.
    Session row with a purple subagent count badge showing 2 child sessions
  • Hierarchical dashboard API — GET /api/v1/sessions returns Orchestrator → Group → Agent → Children with SubagentSummary counts.

PID-discovery retry with backoff (500ms, 1s, 2s) plus CWD fallback resolves multi-instance race.

v0.2.2 2026-04-04
  • Embedded daemon in app bundle · closes #35 — Irrlicht.app ships as a single artifact with both SwiftUI UI and the Go daemon; DaemonManager spawns, monitors, and restarts it with exponential backoff. No separate LaunchAgents.

Idle ready sessions auto-delete after 30 minutes (configurable); dark-forest landing hero with floating wisps animation.

v0.2.1 2026-04-04
  • UI state icons land — hammer (working) / hourglass (waiting) / checkmark (ready) replace the earlier dot-only menu-bar rows. Same vocabulary survived through v0.4.5's unified-state-icons milestone.

Session persistence across daemon restarts (sessions kept as ready instead of deleted); worktree awareness via git-common-dir; MCP tool detection prevents browser-automation tools from flipping state to waiting.

v0.2.0 2026-04-03 shipped
First bundled installer — Codex + cost tracking
  • Codex adapter shipped — first agent beyond Claude Code; recursive directory watching, transcript parsing, model + token extraction.
  • Cost estimation with per-model pricing — estimated session cost shown per session and aggregated per project group.

How this page is maintained

Hand-edited as part of /ir:release. When a release ships, its row moves from the future section down across the "today" line into the past, and any closed-deferred items reincarnate when their wiki gates lift. The version dates and themes in the future section are bold guesses; the issue and wiki links are the source of truth.

If an item here looks stale relative to its linked issue, the issue wins — file a bug.