You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Multi-session Agent Dashboard + eager non-blocking primer (v1.4.8)
Keeps a pool of live grok sessions instead of one — instant lossless
re-focus (each session buffers its webview posts, so focusing replays
the buffer with no grok reload or kill), status dots in the history
dropdown (a derived, persisted unread badge that survives idle reaping
and a VS Code restart), and silent idle-TTL + LRU reaping that never
touches the focused or a working/needs-you session.
Also fixes the pre-turn primer latency. The hidden plan-mode primer now
fires eagerly + non-blocking the moment a session goes live (new,
restore, post-/compact) instead of in front of the user's first prompt.
The first real send awaits the same in-flight primer turn and is
released the instant it acks; the user's bubble shows immediately with a
"Grokking…" indicator standing in until grok produces content. The
primer was trimmed to v4 — the product-blurb paragraph + repo URL that
tempted agentic grok into a 15–40s pre-turn workspace exploration are
gone, replaced by an explicit do-not-act / "reply with just ok"
constraint. The plan-verdict protocol itself is unchanged.
473 tests (15 new); live gate green (5 passed, image-gen SKIP).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,18 @@
1
1
# Changelog
2
2
3
+
## 1.4.8 — 2026-06-15
4
+
5
+
> Run several Grok sessions at once — switch between them instantly, and see at a glance which one needs you.
6
+
7
+
### Features
8
+
9
+
-**Multi-session Agent Dashboard.** The sidebar now keeps several sessions *alive* at once instead of one at a time. Switching between them from the history dropdown is **instant and lossless** — the conversation you switch away from keeps running in the background (mid-turn, mid-approval, anything), and switching back replays its exact state with no reload. Picking a session that isn't live anymore loads it from history as before. ([src/sidebar.ts](src/sidebar.ts), [src/session.ts](src/session.ts))
10
+
-**Status dots in the history dropdown.** Every session shows a dot so you can see what each one is doing without opening it. It's **gray** at rest, and only lights up when there's something to know: **blue** = working, **yellow** = needs you (a permission, question, or plan to review), **green** = finished with output you haven't opened yet, **red** = finished with an error you haven't opened. The green/red marker is an *unread* badge — it clears the moment you open the session, and it's **persisted**, so it survives the idle cleanup below and even a VS Code restart. Walk away, come back, and the green sessions are exactly the ones with results waiting. ([media/chat.js](media/chat.js), [media/chat.css](media/chat.css), [src/session-pool.ts](src/session-pool.ts))
11
+
-**Idle sessions are cleaned up automatically.** To keep a pile of background sessions from each holding a live process, a session left untouched for an hour — or beyond a cap of ~8 live — is quietly shut down (never one that's working or waiting on you). It reappears in history and reloads on click, so nothing is lost. ([src/session-pool.ts](src/session-pool.ts))
12
+
-**Updating the Grok Build CLI warns about sessions in progress.** With multiple sessions now able to run at once, the *Update Grok Build CLI* action confirms before it restarts when any session is mid-turn or waiting on you — so an update doesn't silently interrupt work in a background session. ([src/sidebar.ts](src/sidebar.ts))
13
+
-**No more long pause before Grok starts.** Sending your first message used to sit silent for 15–40 seconds before anything appeared. Behind the scenes the extension primes each session with a hidden plan-mode instruction, and that primer was running *in front of* your first message and — because Grok Build is an agentic CLI — was wandering off to read files and search the workspace before your real prompt even ran. The primer now fires **the moment a session goes live**, silently in the background, so it's almost always finished before you hit send; if you're quick, your message shows immediately and is released the instant the primer settles. The primer text itself was also trimmed to just the protocol it needs to teach (the product blurb and repo link that were tempting Grok to go exploring are gone), so it completes in a beat instead of dozens of seconds. ([src/sidebar.ts](src/sidebar.ts), [src/grok-primer.ts](src/grok-primer.ts), [src/session.ts](src/session.ts))
14
+
-**A "Grokking…" indicator while you wait.** Every turn now shows an animated *Grokking…* placeholder the instant you send, so there's immediate feedback that Grok received your message — it's replaced in place the moment the first thought, reply, or tool action arrives. ([media/chat.js](media/chat.js), [media/chat.css](media/chat.css))
15
+
3
16
## 1.4.7 — 2026-06-15
4
17
5
18
> Sharper math, and one-click export for equations and diagrams.
Copy file name to clipboardExpand all lines: README.md
+31-1Lines changed: 31 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -137,6 +137,36 @@ The active editor is added as an **implicit** chip automatically (toggle with `g
137
137
138
138
</details>
139
139
140
+
<details>
141
+
<summary><strong>Agent Dashboard</strong> — run several sessions at once, switch instantly, see which need you</summary>
142
+
143
+
Keep more than one session **alive at the same time**. Start a new session with **+** while another is mid-turn, and switch between them from the history dropdown — the one you leave keeps running in the background (mid-turn, mid-approval, anything), and switching back replays its exact state with **no reload**. Picking a session that isn't live anymore loads it from history as before.
144
+
145
+
Each row in the dropdown shows a **status dot** so you can see what every session is doing without opening it. It's **gray** at rest and only lights up when there's something to know:
146
+
147
+
| Dot | Meaning |
148
+
|---|---|
149
+
| 🔵 Blue | Working — a turn is in flight |
150
+
| 🟡 Yellow | Needs you — a permission, question, or plan is waiting |
151
+
| 🟢 Green | Finished, with output you **haven't opened yet**|
152
+
| 🔴 Red | Finished with an error you haven't opened |
153
+
| ⚪ Gray | At rest — idle, already read, or not loaded |
154
+
155
+
The green/red dot is an **unread** badge: it appears when a session finishes while you're looking at *another* one, and clears the moment you open it. It's persisted, so it survives idle cleanup **and** a VS Code restart — fire off a few agents, walk away, and the green dots are exactly the sessions with results waiting.
156
+
157
+
To keep a pile of background sessions from each pinning a live process, a session left untouched for an hour (or beyond ~8 live) is quietly shut down — never one that's working or waiting on you — and reloads from history on click, losing nothing.
158
+
159
+
</details>
160
+
161
+
<details>
162
+
<summary><strong>Instant feedback</strong> — a <em>Grokking…</em> indicator the moment you send, with no startup pause</summary>
163
+
164
+
Every message you send shows an animated **Grokking…** placeholder immediately, so there's always feedback that Grok received it — it's replaced in place the instant the first thought, reply, or tool action streams in.
165
+
166
+
There's also no longer a long silent pause before that first response. The extension primes each new session with a hidden plan-mode instruction; that primer now runs **eagerly in the background** the moment the session goes live (and on resume, and after `/compact`) instead of sitting in front of your first message — so it's almost always finished before you hit send. If you *are* quick, your message appears right away and is released the instant the primer settles. The primer text was also slimmed down so it completes in a beat rather than wandering off to read your workspace first.
167
+
168
+
</details>
169
+
140
170
<details>
141
171
<summary><strong>Session history</strong> — resume, rename, or delete any past session</summary>
142
172
@@ -261,7 +291,7 @@ Grok's own **slash commands** (`/imagine`, `/compact`, …) autocomplete in the
261
291
262
292
The extension is intentionally **thin**: it speaks JSON-RPC over `grok agent stdio` and renders the results. Grok owns sessions, memory, MCP, models, and tool execution; the extension mediates file reads/writes, terminal requests, diff previews, the webview UI — and **Plan Mode**.
263
293
264
-
Plan Mode is the one place the extension is *not* thin. The CLI's `exit_plan_mode` is unreliable (it reports "approved" to any reply), so the extension enforces planning itself: a **gate** blocks workspace writes and non-read-only commands until you approve, and a hidden **primer** message teaches Grok to read your real verdict (`[Plan approved]` / `[Plan rejected]` / `[Plan cancelled]`) from your next message.
294
+
Plan Mode is the one place the extension is *not* thin. The CLI's `exit_plan_mode` is unreliable (it reports "approved" to any reply), so the extension enforces planning itself: a **gate** blocks workspace writes and non-read-only commands until you approve, and a hidden **primer** message teaches Grok to read your real verdict (`[Plan approved]` / `[Plan rejected]` / `[Plan cancelled]`) from your next message. The primer is fired **eagerly and silently** the instant a session goes live (not in front of your first prompt), and is kept lean so it doesn't add a startup pause — your first real message simply waits, in code, for the silent primer turn to finish (Grok runs one turn at a time) and is released the moment it does.
265
295
266
296
Full diagram, message flow, module map, and design notes: **[docs/architecture.md](docs/architecture.md)**.
|[src/session.ts](../src/session.ts)| Per-session state bag — one `Session` per live `grok agent stdio` process (the sidebar holds a *pool* of these + one focused) |
180
+
|[src/session-pool.ts](../src/session-pool.ts)| Pure reaping policy (`selectReapable`) — idle-TTL + LRU cap over the live-session pool |
99
181
|[src/acp-dispatch.ts](../src/acp-dispatch.ts)| Pure protocol helpers — line parsing, update routing, response + generated-media extraction (`isMediaGenToolCall`/`extractGeneratedMediaPaths`) |
100
182
|[src/cli-locator.ts](../src/cli-locator.ts)| Locate the `grok` binary; cross-platform |
101
183
|[src/terminal-manager.ts](../src/terminal-manager.ts)| Headless shells for the agent's `terminal/*` calls |
0 commit comments