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
Adjustable chat font size (grok.chatFontScale, #14) (v1.4.9)
Lets users zoom the Grok chat panel on its own — text, icons, and
spacing together — without rescaling the rest of VS Code (the reporter's
complaint in #14 about the global Ctrl/Cmd+Shift+=). It's a percent
setting (60–300, default 100) at User or Workspace scope and applies
live with no reload.
The webview uses CSS `zoom`, which scales layout but which `vh` units
ignore — a 100vh body at zoom 0.7 renders at 70vh and leaves dead space
below the composer. Both the `zoom` and a `height: calc(100vh /
var(--chat-zoom))` compensation are derived from one `--chat-zoom`
variable (baked into <body> by the host, updated live via postMessage),
so the composer stays pinned to the bottom at any scale.
Also: README screenshots for Voice input and the Agent Dashboard, plus a
few wire-level details moved from the feature blurbs into
docs/architecture.md.
473 tests green; 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
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,17 @@
1
1
# Changelog
2
2
3
+
## 1.4.9 — 2026-06-16
4
+
5
+
> Make the chat bigger — just the chat.
6
+
7
+
### Features
8
+
9
+
-**Adjustable chat font size (#14).** A new `grok.chatFontScale` setting zooms the Grok chat panel only — text, icons, and spacing together — as a percent (e.g. `150`, `200`, or smaller like `70`). Unlike VS Code's global `Ctrl/Cmd+Shift+=`, it leaves the rest of the editor at its normal size, so you can enlarge (or shrink) just the chat for readability. It applies live with no reload, the composer stays pinned to the bottom of the panel at any scale, and it works at both User (global) and Workspace (local) scope. ([package.json](package.json), [src/sidebar.ts](src/sidebar.ts), [media/chat.css](media/chat.css), [media/chat.js](media/chat.js))
10
+
11
+
### Docs
12
+
13
+
-**README polish.** Added screenshots for *Voice input* and the *Agent Dashboard*, and moved a few wire-level implementation details out of the feature blurbs into [docs/architecture.md](docs/architecture.md) so the feature list reads less like internals. ([README.md](README.md), [docs/architecture.md](docs/architecture.md))
14
+
3
15
## 1.4.8 — 2026-06-15
4
16
5
17
> Run several Grok sessions at once — switch between them instantly, and see at a glance which one needs you.
Copy file name to clipboardExpand all lines: README.md
+12-9Lines changed: 12 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,8 +12,6 @@ Works with a SuperGrok subscription or an xAI API key. **Not affiliated with xAI
12
12
13
13

14
14
15
-
**[More screenshots →](docs/screenshots/)**
16
-
17
15
---
18
16
19
17
## Why an extension, not the CLI?
@@ -97,7 +95,7 @@ _Click any feature to expand._
97
95
<details>
98
96
<summary><strong>Permission cards with diff preview</strong> — see every edit in VS Code's native diff before you approve</summary>
99
97
100
-
For `kind:"edit"` tool calls the card shows a `path — N → M lines` summary and an **open diff →** button that opens VS Code's native diff editor against the proposed content. Approve with *Allow once / always*, or *Reject*. The actual write only happens *after* you approve, via `fs/write_text_file` — no surprise changes to your files.
98
+
When Grok proposes an edit, the card shows a `path — N → M lines` summary and an **open diff →** button that opens VS Code's native diff editor against the proposed content. Approve with *Allow once / always*, or *Reject*. The file is written only **after** you approve — no surprise changes to your files.
101
99
102
100
</details>
103
101
@@ -115,7 +113,7 @@ For `kind:"edit"` tool calls the card shows a `path — N → M lines` summary a
115
113
<details>
116
114
<summary><strong>Image & video generation</strong> — <code>/imagine</code> renders right in the chat</summary>
117
115
118
-
Type `/imagine <prompt>` (or `/imagine-video <prompt>`) and the result renders **inline** — images as a compact thumbnail (capped at 320px; click to open the source file), videos with native playback controls. Hover either for **Copy path** / **Open in VS Code** icons. Both are **subscription-only** Grok features, both survive a session resume, and the file is streamed from disk so even a multi-MB video plays. (Editing a reference photo with `/imagine` works too, via Grok's `image_edit` tool.) Wire-format details: [research/image-generation.md](research/image-generation.md).
116
+
Type `/imagine <prompt>` (or `/imagine-video <prompt>`) and the result renders **inline** — images as a compact thumbnail (capped at 320px; click to open the source file), videos with native playback controls. Hover either for **Copy path** / **Open in VS Code** icons. Both are **subscription-only** Grok features, both survive a session resume, and even a multi-MB video plays. Editing a reference photo with `/imagine` works too. Wire-format details, for the curious: [research/image-generation.md](research/image-generation.md).
119
117
120
118
</details>
121
119
@@ -128,6 +126,8 @@ The two-word send phrase is deliberate (it won't fire on a message that merely e
128
126
129
127
> **Cost:** Speech-to-Text is a *separate*, pay-as-you-go xAI product — **$0.10/hr** batch, **$0.20/hr** streaming, billed by audio duration. In practice ~500 words ≈ ½–1¢; a heavy 10,000-word day ≈ 10¢. It needs its own [console.x.ai](https://console.x.ai) key (`grok.voiceApiKey` / `GROK_VOICE_API_KEY` / `XAI_API_KEY`) — a SuperGrok subscription grants no API credit. Why it bypasses the CLI, and how the cost was measured end-to-end: [research/voice-input.md](research/voice-input.md).
130
128
129
+

130
+
131
131
</details>
132
132
133
133
<details>
@@ -156,21 +156,23 @@ The green/red dot is an **unread** badge: it appears when a session finishes whi
156
156
157
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
158
159
+

160
+
159
161
</details>
160
162
161
163
<details>
162
164
<summary><strong>Instant feedback</strong> — a <em>Grokking…</em> indicator the moment you send, with no startup pause</summary>
163
165
164
166
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
167
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.
168
+
There's also no longer a long silent pause before that first response. Plan Mode needs a little hidden setup per session; it now happens**quietly in the background** the moment a session opens — instead of in front of your first message — so it's almost always done before you hit send. If you *are* quick, your message still appears right away. *(What that setup is and why it's needed: [How it works](#how-it-works).)*
167
169
168
170
</details>
169
171
170
172
<details>
171
173
<summary><strong>Session history</strong> — resume, rename, or delete any past session</summary>
172
174
173
-
The clock icon lists every session the CLI saved for this project (`~/.grok/sessions/<urlencoded-cwd>/`). Click a row to resume — the extension calls `session/load` and Grok replays the conversation, with inline images, plans, and reasoning intact. Hover to rename (pencil) or delete (trash); names default to the first message. Renames live in VS Code's `globalState` and never touch Grok's own files.
175
+
The clock icon lists every session the CLI saved for this project. Click a row to resume — Grok replays the conversation, with inline images, plans, and reasoning intact. Hover to rename (pencil) or delete (trash); names default to the first message. Renames are stored by the extension and never touch Grok's own files.
174
176
175
177
</details>
176
178
@@ -184,7 +186,7 @@ Every action Grok takes appears in chat — a single flat row ("Read sidebar.ts
184
186
<details>
185
187
<summary><strong>Math & LaTeX rendering</strong> — equations render as math, not raw TeX</summary>
186
188
187
-
When Grok answers with LaTeX — inline `\(…\)`, display `\[…\]`, and environments like `\begin{pmatrix}` matrices, `cases`, integrals, sums, and Greek — the chat renders it as real typeset math via [MathJax](https://www.mathjax.org), vendored into the extension so it works **offline with no network**. Inline math sits on the text baseline in your editor's text color; display equations get their own centered block with horizontal scroll so a wide matrix doesn't overflow the narrow sidebar. A malformed expression shows a small inline error instead of blanking the message. **Hover a display equation** for actions: copy its LaTeX source, or export it as a PNG (your theme's background) or a transparent SVG tuned for a light or dark background. Bare `$…$` is intentionally **not** a delimiter — it would mangle prose like "it costs $5 and then $10".
189
+
When Grok answers with LaTeX — inline `\(…\)`, display `\[…\]`, and environments like `\begin{pmatrix}` matrices, `cases`, integrals, sums, and Greek — the chat renders it as real typeset math via [MathJax](https://www.mathjax.org), bundled into the extension so it works **offline with no network**. Inline math sits on the text baseline in your editor's text color; display equations get their own centered block with horizontal scroll so a wide matrix doesn't overflow the narrow sidebar. A malformed expression shows a small inline error instead of blanking the message. **Hover a display equation** for actions: copy its LaTeX source, or export it as a PNG (your theme's background) or a transparent SVG tuned for a light or dark background. Bare `$…$` is intentionally **not** a delimiter — it would mangle prose like "it costs $5 and then $10".
188
190
189
191

190
192
@@ -193,7 +195,7 @@ When Grok answers with LaTeX — inline `\(…\)`, display `\[…\]`, and enviro
193
195
<details>
194
196
<summary><strong>Mermaid diagrams</strong> — flowcharts and sequence diagrams render as diagrams</summary>
195
197
196
-
When Grok answers with a ` ```mermaid ` block — flowcharts, sequence and state diagrams, git graphs, class and ER diagrams, and more — the chat renders it as a real diagram via [Mermaid](https://mermaid.js.org), vendored into the extension so it works **offline with no network**. Diagrams are themed to match your VS Code light/dark mode and scroll horizontally so a wide flowchart doesn't overflow the narrow sidebar. **Hover a diagram** to copy its source, or export it as a PNG (your theme's background) or a transparent SVG re-themed for a light or dark background. If a diagram is still streaming or turns out to be malformed, the readable diagram source is shown instead — you never lose the content.
198
+
When Grok answers with a ` ```mermaid ` block — flowcharts, sequence and state diagrams, git graphs, class and ER diagrams, and more — the chat renders it as a real diagram via [Mermaid](https://mermaid.js.org), bundled into the extension so it works **offline with no network**. Diagrams are themed to match your VS Code light/dark mode and scroll horizontally so a wide flowchart doesn't overflow the narrow sidebar. **Hover a diagram** to copy its source, or export it as a PNG (your theme's background) or a transparent SVG re-themed for a light or dark background. If a diagram is still streaming or turns out to be malformed, the readable diagram source is shown instead — you never lose the content.
197
199
198
200

199
201
@@ -202,7 +204,7 @@ When Grok answers with a ` ```mermaid ` block — flowcharts, sequence and state
202
204
<details>
203
205
<summary><strong>Model picker</strong> — switch models live, no restart</summary>
204
206
205
-
Click the model name in the gear popover. The list comes from the CLI's `session/new` response; switching is live (`session/set_model`) with no restart when the target model belongs to the same agent.
207
+
Click the model name in the gear popover. The model list comes from your CLI; switching is live with no restart in most cases. (A few models belong to a different agent and need a quick session restart — the extension detects that and handles it for you, carrying your context forward.)
206
208
207
209
</details>
208
210
@@ -247,6 +249,7 @@ Or edit the config via gear → *Open global / project config*, then click **+**
247
249
|`grok.defaultEffort`|`""`| Reasoning effort forwarded as `--reasoning-effort` (`none` / `minimal` / `low` / `medium` / `high` / `xhigh`). Empty = CLI default. Changing it restarts the session. |
248
250
|`grok.includeActiveFileByDefault`|`true`| Auto-add the active editor as a context chip. |
249
251
|`grok.useCtrlEnterToSend`|`false`| When true, Enter inserts a newline and Ctrl/Cmd+Enter sends. |
252
+
|`grok.chatFontScale`|`100`| Zoom for the chat panel only, as a percent (`150`, `200`, …). Scales the whole chat UI without rescaling the rest of VS Code (unlike `Ctrl/Cmd+Shift+=`). Applies live; supports User (global) and Workspace (local) scope. |
250
253
|`grok.voiceApiKey`|`""`| xAI API key for voice Speech-to-Text — a separate [console.x.ai](https://console.x.ai) developer key, not the CLI login. Empty = fall back to `GROK_VOICE_API_KEY` / `XAI_API_KEY` in the workspace `.env`. |
251
254
|`grok.ffmpegPath`|`""`| Path to `ffmpeg` for microphone recording. Empty = use `ffmpeg` from `PATH`. |
252
255
|`grok.voiceInputDevice`|`""`| Microphone device override. Empty = system default (Windows auto-detects the first DirectShow audio device). |
Copy file name to clipboardExpand all lines: package.json
+8-1Lines changed: 8 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
"name": "grok-vscode-phuryn",
3
3
"displayName": "Grok Build",
4
4
"description": "Thin VS Code sidebar client for the Grok Build CLI over Agent Client Protocol (ACP). Streams responses with thinking traces, tool calls, file chips, and permission cards with diff preview. All session state stays in the CLI. Not affiliated with xAI.",
5
-
"version": "1.4.8",
5
+
"version": "1.4.9",
6
6
"publisher": "PawelHuryn",
7
7
"author": {
8
8
"name": "Paweł Huryn",
@@ -191,6 +191,13 @@
191
191
"default": false,
192
192
"description": "Use Ctrl/Cmd+Enter to send (Enter inserts newline)."
193
193
},
194
+
"grok.chatFontScale": {
195
+
"type": "number",
196
+
"default": 100,
197
+
"minimum": 60,
198
+
"maximum": 300,
199
+
"markdownDescription": "Zoom for the Grok chat panel only, as a percent (100 = default). Scales the whole chat UI — text, icons, spacing — without affecting the rest of VS Code (unlike `Ctrl/Cmd+Shift+=`). Applies live, no reload needed. Supports User (global) and Workspace (local) scope."
0 commit comments