VS Code Extension v0.18.2
Live status tiles for every Claude Code terminal.
A sidebar that shows what every Claude is doing at a glance — animated dots, color-coded borders, drag-to-reorder, context-window tracking, and a passive-aggressive mode that guilt-trips you when you ignore it.
What the tile tells you
Four dots, seven colors, one number.
Every signal is small on purpose. The sidebar should read at a glance, not demand a tutorial.
Status dots
Context badge
Theme (left border)
Right-click any tile New
Mark as done parks a session. It sinks to the bottom of auto-sort, the dot goes quiet, and background events won't re-surface it until you submit the next prompt.
Clone, set color, kill — all one click from the menu, no file editing.
Features over time
Sixteen days, fifteen versions.
First commit went up on April 4, 2026. This is where the bar has traveled since — from first push to now.
-
0.1–0.2
First push Apr 4 · Day 1
Initial sidebar dashboard for Claude Code terminals went up in the afternoon. Before the day was over, v0.2 landed: DOM diffing instead of full re-renders, context % in the statusline, sticky waiting tiles, thicker left borders. The live preview page went up the same evening.
-
0.3–0.5
Named, configured, set up Apr 5–10 · Days 2–7
- v0.3.1 — renamed from the generic "dashboard" to Claudelike Bar; ID-based identity; the first right-click menu.
- v0.4.0 — real config file, per-terminal nicknames, auto-start, hooks shipped with the extension.
- v0.5.1 — one-command setup script, JSONC config with comments, comprehensive docs. "Point Claude at it" became the first install option.
- v0.5.2 — esbuild bundling fix for
jsonc-parser.
-
0.7
Drag, drop, done Apr 11–12 · Days 8–9
The version where the interaction model clicked.
- v0.7.1 — per-terminal
commandoverride, drag/drop reorder, mark as done, explicitsortModeauto/manual, state-machine fixes. - v0.7.2–.6 — post-review polish, ignored-state bug fix, debug-log docs, public-use rename sweep, Open VSX listing metadata.
- Tests & CI — vitest suite and a 3-OS GitHub Actions matrix (Ubuntu / macOS / Windows).
- v0.7.1 — per-terminal
-
0.8
Ready for the Marketplace Apr 13–14 · Days 10–11
- v0.8.0 — hook rewritten in Node.js with
os.tmpdir()and 3-tier matching (terminal name → path → basename) so it works identically on Windows, macOS, and Linux. - v0.8.1 — marketplace-ready install flow: single VSIX, onboarding modal, explainer screen.
- v0.8.2 — standalone statusline module so context % no longer depends on the full extension.
- v0.8.0 — hook rewritten in Node.js with
-
0.9
Deeper state awareness, Windows parity Apr 14–16 · Days 11–13
Hook coverage went from "a few events" to everything the Claude Code CLI emits, and the whole thing started working the same way on Windows.
- v0.9.0 — multi-agent, error, and notification matchers.
- v0.9.1 — SessionStart/End lifecycle, tool errors, compaction events.
- v0.9.2 — Windows / PowerShell / git-bash parity via
createTerminal({env}); standalone statusline with backup + restore. - v0.9.3–.5 — state-machine fixes across permission/subagent/session flows; cross-platform
cwdoption with automatic migration.
-
0.10
Path identity, global config Apr 16 · Day 13
Two evenings of refactoring that reshaped how projects are keyed and where config lives.
- Path-based identity (v0.10.0) — projects keyed by absolute
path, not basename. Twoapifolders in different trees get distinct collision-resistant slugs. - Global config at
~/.claude/(v0.10.1) — oneclaudelike-bar.jsoncacross every VS Code window, next to your hooks and settings. Workspace-local configs auto-migrate on first load.
- Path-based identity (v0.10.0) — projects keyed by absolute
-
0.11
First-run experience Apr 16 · Day 13
The extension stopped assuming you'd edit JSONC by hand.
- Setup wizard (v0.11.0) — 5-step QuickPick: pick folders, confirm names, assign colors, choose startup command, review.
- Sidebar
+, walkthrough, hook path index (v0.11.1) — VS Code's native walkthrough API; one-click Register Project;~/.claude/claudelike-bar-paths.jsonso manually-opened terminals resolve via cwd. - Upgrade notification + "Start fresh" (v0.11.2) — re-run the wizard cleanly after an update.
- Custom CSS colors (v0.11.4) — any
#hex,rgb(),hsl(), orvar(--anything)per-terminal. - Instant-open Register Project (v0.11.5) — flow ends with Open terminal now / Register only. Build a 15-project registry without spawning 15 terminals.
-
0.12
Audio alerts Apr 18 · Day 15
Optional chime when Claude is waiting. Two slots — end-of-turn (
Stop) and mid-job permission prompts (Notification) — so you can tell done apart from blocked on approval by ear. Off by default; BYO sound files to~/.claude/sounds/, right-click to mute per-tile. -
0.13
Remote hosts, pinned tiles, launch on demand Apr 18 · Day 15
Six patches in one afternoon. The bar now works on every host VS Code can reach, with tile zones for stability and a rocket for on-demand launches.
- Launch Registered Project (v0.13.0) — rocket icon in the header, palette command, and tile right-click menu all QuickPick any registered project that isn't currently open.
- Auto-sort toggle & cwd pre-flight (v0.13.1) — one-click flip back to auto after dragging;
fs.existsSyncskips missing auto-start paths with a single toast instead of stacking modals. - Custom color picker (v0.13.2) — rainbow
<input type="color">in the swatch row flows any hex through the same setColor handler. - Remote everywhere (v0.13.3) —
extensionKind: ["workspace", "ui"]so WSL2, SSH, Dev Containers, and Codespaces all register hooks to the right~/.claude/. - Pinned & offline tiles (v0.13.4) — pin a tile to a stable bottom zone; registered-but-not-open projects show as dim click-to-launch tiles.
- Hotfix (v0.13.5) — webview.js parse error introduced by v0.13.4.
-
0.14
New-user smoothness Apr 19 · Day 16
A batch aimed at the first-run experience, plus a subagent-counter drift fix. Install from a fresh devcontainer and the bar just works — bundled chime, legacy-hook cleanup, self-diagnosing health check.
- Bundled chimes & slot rename (v0.14.0) —
audio.sounds.ready/permission→turnDone/midJobPrompt(read-side shim migrates on first save). Two chimes ship inmedia/sounds/(Mixkit + Pixabay, CC0) so Toggle Audio works without sourcing a file. - Legacy hook cleanup & Diagnose command (v0.14.0) — one-shot toast offers to remove old
notify.sh/notify-silent.shhook registrations; Claudelike Bar: Diagnose runs five read-only health checks and toasts only when the fingerprint differs from last session. - Dev Containers install docs (v0.14.0) — new
docs/install.mdsection with a self-healingpostAttachCommandsnippet. No-cache rebuilds no longer drop the extension silently. - Subagent counter drift fix (v0.14.1, #16) — tiles no longer wedge on "Working (N agents)". Root cause: the single-file status bus coalesces rapid SubagentStop writes under FileSystemWatcher's debounce, permanently inflating the derived
pendingSubagentscounter. Fix: zero the counter on every parentStop, which is the authoritative end-of-turn signal.
- Bundled chimes & slot rename (v0.14.0) —
-
0.15
Marketplace first-publish Apr 19 · Day 16
The bar is now live on the Visual Studio Marketplace alongside Open VSX — one install URL for every VS Code distribution. Two bug fixes rolled in.
- False-offline suppression (#20) — a tile whose status file is freshly written by a running session no longer renders as the dim "registered/offline" tile just because the tracker hasn't associated a VS Code terminal with that slug. The status file is consulted as a liveness tiebreaker before synthesizing.
- Clone terminals stay transient (#17) — Clone terminal from the right-click menu no longer writes a permanent config entry for the
(copy)-suffixed clone. Close the clone and it's gone; no dead registered tile left behind. - Marketplace listing —
marketplace.visualstudio.com/items?itemName=aes87.claudelike-bar. - Legacy hook detection on Windows (v0.15.1) —
referencesLegacyScriptaccepts both path separators, so Windows users withnotify.sh/notify-silent.shentries now get the cleanup toast that POSIX users have had since v0.14. Plus a test-only fix (USERPROFILEalongsideHOME) that turned Windows CI green for the first time since v0.14. - Marketplace icon (v0.15.2) — purpose-built logo: rounded square with three full-bleed status stripes (cyan / teal / magenta) and contrasting status dots aligned on the left, transparent background so it sits clean on light marketplace cards and dark VS Code chrome alike.
- Activity-bar icon refresh (v0.15.3) — sidebar glyph now mirrors the new logo: rounded outline, three horizontal divisions, three dots on the left. Replaces the generic 2×2 dashboard placeholder for visual consistency between the marketplace card and the day-to-day sidebar icon.
- Editorial-palette icon re-skin (v0.15.4) — marketplace icon and GH Pages identity now share a coherent editorial palette (deep purple, amber, teal) instead of the cyan/teal/pink first cut. Adds an icon to the hero, favicon + apple-touch-icon, and OG/Twitter meta image for social shares.
- Subagent permission tiles float to the top (v0.15.5, #23) — when a subagent fires
permission_promptmid-job, the tile now projects toreadyfor render + sort: amber attention dot instead of green pulse, and floats above plain working tiles in auto sort. The state machine still tracksworkinginternally so transitions and the subagent counter are unaffected.
-
0.16
Plain shells in the bar Apr 26 · Day 23
The bar now hosts non-Claude terminals alongside your Claude tiles, opt-in via a single config flag.
- Plain shell tiles (#25) — set
"type": "shell"on a terminal entry in~/.claude/claudelike-bar.jsoncand the bar renders it as a gray pill with no state machine, no animated dot, no Claude-specific menu items. Click to focus. Status JSONs are ignored if they happen to match the slug — your config opt-out is authoritative. Auto-sort puts shell tiles between idle Claude tiles and offline ones; manual mode obeysorderlike everything else. Live config flips (claude ↔ shell) work without a reload. - Landing page moves to
lab.mattharte.com/claudelike-bar/(v0.16.1) — same page, new home under a unified personal-portfolio subdomain instead ofaes87.github.io/claudelike-bar/. Cloudflare Worker + static assets; the old GitHub Pages URL stays alive as a meta-refresh stub so existing links keep working. No code changes. - Click-to-launch for shells (v0.16.2, #25) — when a shell-typed terminal isn't open, the bar now surfaces it as a click-to-launch tile (gray dot, dashed border, "Launch this shell" action) alongside the registered Claude tiles. Clicking spawns the configured terminal at its
cwdand runs the per-terminalcommandif set. Shell entries don't inherit the globalclaudeCommand, so a registered shell with no per-terminal command opens an empty shell — no Claude-in-a-shell mishap. - Rename from tile context menu (v0.16.3, #11) — right-click any live tile → Rename… opens an InputBox prefilled with the current name. The new name persists as
nickname(display) +projectName(status routing), so future hook events that arrive under the new name route to this tile. Empty input or matching the raw terminal name reverts to the underlying VS Code terminal name. Conflicting renames (would steal another tile's name) are rejected with an inline validation error. - Last-prompt recall (v0.16.4, #19) — flip
"showLastPrompt": truein your config and the bar surfaces the last user prompt you sent in each terminal. Hover the tile for a tooltip preview (truncated to 80 chars); right-click → Show last prompt for the full text in a modal. The hook captures viaUserPromptSubmit, truncates at 300 chars at the source, and only on parent-turn input — subagent fan-out is excluded. Off by default since prompts can contain sensitive content. - Hotkey bindings (v0.16.5, #18) — ten commands ready for binding in your own
keybindings.json:focusSlot1…focusSlot9jump to the Nth live tile in current sort, andfocusByNametakes a tile name viaargsfor stable per-project bindings. Slot bindings follow the slot (auto-sort surfaces urgent tiles); forced bindings always land on the named tile. - Push notifications when work completes (v0.16.6, #5) — flip
"pushNotifications": trueand the bar fires a VS Code information notification (✓ <tile> — ready for input) when a non-focused tile hits ready. Includes an Open action that focuses the terminal. Skips when the tile is currently focused — no self-pinging. Independent of the audio alert path; both can run side by side. - Workspace-scoped auto-start (v0.16.7, #9) — auto-start now only spawns terminals whose
pathlives under one of the current workspace folders. A user with 15 projects across 3 windows used to get all 15 terminals on every activation; now each window starts only what belongs there. Entries with nopathstill auto-start (no scope to apply). Empty windows (no folders open) fall through to the legacy unfiltered behavior.
- Plain shell tiles (#25) — set
Always on
Five things that just work.
- Drag to reorder — grab any tile, drop where you want. Saved to
.claudelike-bar.jsonc, survives reloads. - Sort modes —
"auto"floats waiting → ignored → ready → working → done → idle to the top;"manual"respects your drag order. - Passive-aggressive mode — guilt-trips you when you ignore waiting tiles. Optional. The patiently judging you status is from this mode.
- Context tracking — mono
ctx %badge on every tile, color-coded at 60% and 80%. - Debug log — flip
"debug": trueand the extension streams hook events, state transitions, and auto-start decisions to an output channel.
Configuration
Configure it by talking to Claude.
The config file is ~/.claude/claudelike-bar.jsonc — JSON with comments, auto-created. You can edit it by hand. Most days, it's easier to just describe what you want.
.claudelike-bar.jsonc:
path and autoStart:
path sets the working directory — no cd needed, cross-platform. Next VS Code launch, all four open automatically.
command override:
Ctrl+Shift+U) and run a prompt in print-go-brrr — I'll watch for hook events and state transitions. If the hook never fires or the project name doesn't match the tile, we'll see it in the trace.
Everything above is plain JSONC in ~/.claude/claudelike-bar.jsonc. Comments, section headers, and defaults are preserved by the extension's round-trip save — feel free to hand-edit. Or run the setup wizard for a guided start.
Install
Put it on your sidebar.
Ships on the VS Code Marketplace and Open VSX. Free, open source, MIT licensed. Works in VS Code, Cursor, Windsurf, and anywhere else that speaks VSIX.