- Render headless agents as ghosts (#369) — Agents adopted from outside the office (
claude -p, Watch All Sessions) have no terminal to focus; a new Display Headless as Ghosts setting renders them translucent so they read differently from clickable agents. Off by default.
- Never overwrite user settings (#378) — The hook installer now aborts instead of rewriting
~/.claude/settings.jsonwhen the file is unparseable or holds shapes it did not author, takes a one-time backup before the first write, verifies every write, and serializes consent answers. Closes #377. - Sync agent state on standalone webview connect (#371) — A standalone browser client that connects while agents are mid-work now receives active tool statuses, waiting status, and team metadata instead of showing every agent as idle until its next update.
- Consistent palette and hue for every client (#370) — Character palette and hue shift are now assigned server-side at agent creation, so every connecting webview (including read-only viewers) sees the same colors instead of each connection rolling its own.
- Dependency updates: Vitest 4, ESLint 10, and GitHub Actions bumps, with the accompanying test and lint fixes.
Thank you to the contributors who made this release possible:
- @giawa — Standalone connect state sync and server-side palette assignment
- @pablodelucca — Merge-safe hook installer and headless-agent ghosts
- @florintimbuc — Merge-safe hook installer review and fixes
- Claude Code Agent Teams visualization (#218) — Renders team leads and teammates as coordinated characters in both tmux and inline modes, with role labels, lead badges, token fuel gauges, tool activity, persistence, and coordinated cleanup. Builds on the early implementations in #79 and #177. Closes #65.
- Claude Code sub-agents and teammates compatible up to v2.1.220 (#351) — Supports the newer Claude harness, where every
Agentspawn runs in the background against an implicit per-session team. Named spawns become seated teammate characters with their own hook routing; unnamed spawns stay Subtask sub-agents whose transcripts are watched for live tool activity. Resumed leads re-latch to their newest team instead of stranding departed teammates or showing a phantom lead, and teammates take the free seat closest to their lead. - Context gauge on every agent (#351) — Shows each agent's context occupancy above its character, sized to the context window of the model that session actually runs.
- Animated pets (#315) — Adds Claudio and Gitcat to the layout editor, autonomous walking and idle animations, petting interactions, saved placement, and custom pets loaded from external asset directories. Reimplements and supersedes #219 on the new architecture.
- Carpets and workspace Areas (#316) — Adds three auto-tiling carpet styles with WYSIWYG color controls, paint/erase/eyedropper tools, undo, and persistence. Named Areas can be painted onto the office, mapped to workspace folders, and used to seat agents in the right part of the layout. Integrates the original carpet work from #213 and Areas work from #259.
- Optional startup automation (#221) — Adds
pixel-agents.autoShowPanelandpixel-agents.autoSpawnAgentsettings to open the panel and launch an agent automatically when VS Code starts. Both remain off by default.
- Layered architecture and provider-ready core (#236, #238, #273, merged through #275) — Separates shared contracts, the runtime server, the VS Code adapter, and the webview; centralizes lifecycle state in
AgentRuntimeandAgentStateStore; and removes runtime VS Code dependencies from the server. Provider, adapter, transport, and state interfaces now give future clients and agent providers stable integration points. - Standalone browser app and npm package (#273, #344) —
npx pixel-agentsstarts a local Fastify server and browser office with WebSocket state delivery. The standalone UI now covers the core VS Code experience, including settings, diagnostics, asset reloads, layout import/export, Areas, carpets, and pets, while user state is centralized under~/.pixel-agents/. Closes #120. - Multi-server hook discovery and fan-out (#344) — Lets the VS Code extension and one or more standalone servers run together. Each server registers independently, Claude hook events fan out to every live server, and each surface adopts only the sessions in its configured scope.
- Published WebSocket protocol contract (#273) — Makes
core/asyncapi.yamlthe authoritative AsyncAPI contract and generates the shared TypeScript message bindings with CI drift detection.
- Agent and teammate lifecycle reliability (#287, #344) — Fixes idle/done state regressions, aligns teammate lifecycle behavior, and preserves agent tracking when terminals move between VS Code locations.
- Standalone server and development reliability (#316, #344) — Honors an explicit
--port, restores browser-mock hot reload, adds connection-state feedback, and fixes Windows e2e startup behavior. - Areas editor and seating polish (#316) — Correctly seats agents from custom-named workspace folders, fits four Area cards per row, and prevents the folder picker from being clipped.
- File watching and session adoption (#352) — Fixes duplicate agent adoption on Windows, where case-sensitive path comparison let the same session be adopted twice, and closes a
/clearrace in which the external scanner could adopt a replacement transcript beforeSessionStartreassigned it. - Hook install failures and restored-agent rendering (#351) — Hook installation now reports failure instead of logging false success, and restored agents render regardless of the order in which
layoutLoadedandexistingAgentsarrive. Closes #333, #334. - Standalone rendering of already-running agents (#349) — Sends
layoutLoadedafterexistingAgentsonwebviewReady, so a standalone client that connects once agents already exist renders their characters instead of an empty office. - Workspace transcript discovery with hooks enabled (#330) — Keeps workspace JSONL discovery active when hooks are installed, so sessions are still found by file path rather than relying on hook delivery alone.
- Cross-platform build and server tests (#289) — Fixes
npm run buildfailing outright on Windows for paths containing spaces, and server tests that bypassed temp-home isolation and wrote to the real~/.pixel-agents.
- Comprehensive Playwright e2e suite (#287, #344) — Expands coverage across VS Code and standalone, hooks-on and hooks-off lifecycles, Agent Teams, pets, carpets, Areas, and multi-server behavior. Adds a deterministic mock Claude process, narrated run videos, an in-repo coverage inventory, and combined Allure reporting.
- Verified npm publishing pipeline (#344) — Adds package-contract tests, installed-tarball smoke verification, release tag/version checks, and provenance-ready npm publishing for the standalone package.
- CI gating and platform coverage (#352) — Adds a single aggregate
Required Checksjob so branch protection can gate on one stable check instead of every shard name, and unblocks the e2e suite on macOS Tahoe by making video recording optional.
- Move project links to
pixel-agents-hq(#274) — Updates repository, issue, and community links after the GitHub organization migration. - Dependency and release-action updates (#224, #225, #226, #227)
Thank you to the contributors who made this release possible:
- @itsManeka — Animated pet system, bundled pet sprites, and pet interactions
- @NNTin — Carpet system and foundational Playwright e2e infrastructure
- @balgaly — Automatic panel display and agent startup settings
- @elietwd — Cross-platform Windows build script and server test isolation
- @snvtac — Workspace JSONL discovery with hooks enabled
- @bezzborodth-tech — Standalone rendering fix for agents that already exist on connect
- @srasantos — Reported the hook-install and restored-agent rendering bugs
- @ErickGross-19, @ZenidX — Early Agent Teams implementations that informed the shipped design
- @pablodelucca — Claude 2.1.220 sub-agent and teammate support, context gauge, Workspace Areas, layout-editor polish, and watchable narrated e2e review
- @modtanoii — Architecture refactor collaboration, server and WebSocket design, and extensibility hardening
- @florintimbuc — Architecture refactor, Agent Teams integration, standalone and npm package, multi-server support, file-watcher and CI hardening, e2e expansion, and release coordination
Earlier standalone implementations from @rollecode (#156), @MikaelDDavidd (#166), and @TimpiaAI (#63) demonstrated community demand and validated the browser SPA, WebSocket, and server discovery direction. These PRs were closed as superseded, with many thanks to their authors.
Several community PRs independently diagnosed or fixed issues resolved in v1.4.0. Some overlapped with the final implementation, but each helped validate and strengthen the release:
- Standalone hook path: @sakuramoon44 (#283), @joemanat1997 (#292), @Ralphive (#295), @AxlLinares (#306), @mariopablobarron (#325), and @NatVich (#326).
- Windows message generation: @sakuramoon44 (#280) and @joemanat1997 (#291).
- Standalone agent rendering: shipped through @bezzborodth-tech (#349), with independent fixes and tests from @miguemlima-creator (#324), @Ralphive (#297), @meganechan (#299), @SichAlexander (#336), and @yshyuk (#338).
- Windows test isolation: @sakuramoon44 (#281), consolidated by @elietwd (#289).
- Dependency audit cleanup: @Suoriks (#345).
Special thanks to @sakuramoon44, @Ralphive, and @joemanat1997 for contributing multiple fixes during this release cycle.
- Hooks-first session management with dual-mode architecture (#214) — Splits agent detection into a preferred hooks path and a heuristic fallback. When Claude Code hooks are available, session lifecycle, tool activity, permissions, and sub-agent events are reported instantly via a local HTTP server; when unavailable, the extension transparently falls back to JSONL polling. Builds on #187. Closes #188, #201.
- Claude Code hooks for instant agent status detection (#187) — Adds a standalone HTTP server and hook installer that routes 11 Claude Code hook events (SessionStart, Stop, PreToolUse, PostToolUse, SubagentStart, Notification, and others) to the webview for sub-second status updates, replacing filesystem polling when hooks are installed.
- External session support and Agent tool recognition (#115) — Detects Claude sessions launched outside the extension (external CLIs, other editors) and recognizes the renamed
Agentsub-agent tool so sub-agent characters spawn correctly with current Claude Code versions. Closes #184, #74, #9, #8, #1. Supersedes #2, #77, #101, #141. - Multi-root workspace agent detection (#102) — Scans all workspace folders in multi-root workspaces instead of only the first, so agents launched in any folder are discovered and adopted. Closes #30. Supersedes #103, #157.
- Load custom characters from external asset directories (#208) — Users can drop custom character PNGs into an external asset directory and have them loaded alongside the built-in palettes, enabling community-contributed character skins without forking the extension.
- Tailwind CSS v4 migration for the webview UI (#204) — Modernizes the webview styling stack to Tailwind v4, simplifying theming, reducing custom CSS, and improving build times.
- Prevent duplicate restores, fix tool status reconnect, and improve agent tool detection (#197) — Stops agents being restored twice on reload, restores tool status correctly after a reconnect, and tightens the tool-name detection heuristics so active tool animations match the running tool.
- Add
shared/to lint, format, and lint-staged (#212) — Brings the shared package under the project's lint, format, and pre-commit pipeline so cross-package code stays consistent. - Dependabot dev-dependency group bumps (#209, #210)
Thank you to the contributors who made this release possible:
- @drewf — External session support and Agent tool recognition
- @Commandershadow9 — Multi-root workspace agent detection
- @mitre88, @noam971 — Duplicate restore, tool status reconnect, and tool detection fixes
- @itsManeka — Custom characters from external asset directories
- @pablodelucca, @NNTin — Claude Code hooks integration, Tailwind v4 migration
- @florintimbuc — Hooks-first dual-mode architecture, review coordination
- External asset packs (#169) — Load furniture assets from user-defined directories outside the extension, enabling third-party asset packs alongside built-in furniture. Add/remove directories via Settings modal with live palette refresh.
- Bypass permissions mode (#170) — Right-click the "+ Agent" button to launch with
--dangerously-skip-permissions, skipping all tool-call approval prompts. - Improved seating, sub-agent spawning, and background agents (#180) — Agents prefer seats facing electronics (PCs, monitors). Sub-agents spawn on the closest walkable tile to their parent instead of claiming seats. Background agents stay alive until their queue-operation completes.
- Agent connection diagnostics and JSONL parser resilience (#183) — Debug View shows agent connection state with diagnostic info. JSONL parser handles malformed/partial records gracefully. Simplified file watching to single poll for reliability.
- Browser preview mode (#143) — Preview the Pixel Agents webview in a browser for development and review.
- Always show overlay setting — Option to keep agent overlay labels visible at all times, with reduced opacity for non-focused agents.
- Agents not appearing on Linux Mint and macOS without a folder open (#70) — Falls back to
os.homedir()when no workspace folder is open, matching Claude Code's own behavior.
- Playwright e2e tests (#161) — End-to-end test infrastructure using Playwright's Electron API with a mock Claude CLI, validating agent spawn flow in a real VS Code instance.
- Add feature request template and update community docs (#164)
- Bump Vite 8.0, ESLint 10, and various dependency updates
- CI improvements: skip PR title check for Dependabot, restrict badge updates to main repo (#181)
Thank you to the contributors who made this release possible:
- @marctebo — External asset packs support
- @dankadr — Bypass permissions mode
- @d4rkd0s — Linux/macOS fix for no-folder workspaces
- @daniel-dallimore — Always show overlay setting
- @NNTin — Playwright e2e tests, browser preview mode
- @florintimbuc — Agent diagnostics, JSONL resilience, CI improvements, code review
- Fix Open VSX publishing — Created namespace on Open VSX and added
skipDuplicateto publish workflow for idempotent releases.
- Migrate to open-source assets with modular manifest-based loading (#117) — Replaces bundled proprietary tileset with open-source assets loaded via a manifest system, enabling community contributions and modding.
- Recognize 'Agent' tool name for sub-agent visualization (#76) — Claude Code renamed the sub-agent tool from 'Task' to 'Agent'; sub-agent characters now spawn correctly with current Claude Code versions.
- Dual-publish workflow for VS Code Marketplace + Open VSX (#44) — Automates extension releases to both VS Code Marketplace and Open VSX via GitHub Actions.
- Add linting, formatting, and repo infrastructure (#82) — ESLint, Prettier, Husky pre-commit hooks, and lint-staged for consistent code quality.
- Add CI workflow, Dependabot, and ESLint contributor rules (#116) — Continuous integration, automated dependency updates, and shared linting configuration.
- Lower VS Code engine requirement to ^1.105.0 — Broadens compatibility with older VS Code versions and forks (Cursor, Antigravity, Windsurf, VSCodium, Kiro, TRAE, Positron, etc.).
Thank you to the contributors who made this release possible:
- @drewf — Agent tool recognition for sub-agent visualization
- @Matthew-Smith — Open VSX publishing workflow
- @florintimbuc — Project coordination, CI workflow, Dependabot, linting infrastructure, publish workflow hardening, code review
- macOS path sanitization and file watching reliability (#45) — Comprehensive path sanitization for workspace paths with underscores, Unicode/CJK chars, dots, spaces, and special characters. Added
fs.watchFile()as reliable secondary watcher on macOS. Fixes #32, #39, #40.
- Workspace folder picker for multi-root workspaces (#12) — Clicking "+ Agent" in a multi-root workspace now shows a picker to choose which folder to open Claude Code in.
- Lower VS Code engine requirement to ^1.107.0 (#13) — Broadens compatibility with older VS Code versions and forks (Cursor, etc.) without code changes.
Thank you to the contributors who made this release possible:
- @johnnnzhub — macOS path sanitization and file watching fixes
- @pghoya2956 — multi-root workspace folder picker, VS Code engine compatibility
Initial public release.