Skip to content

feat: show all Claude projects as dormant characters in the office - #310

Open
fabiand93 wants to merge 25 commits into
pixel-agents-hq:mainfrom
fabiand93:feat/dormant-project-agents
Open

feat: show all Claude projects as dormant characters in the office#310
fabiand93 wants to merge 25 commits into
pixel-agents-hq:mainfrom
fabiand93:feat/dormant-project-agents

Conversation

@fabiand93

Copy link
Copy Markdown

Summary

  • Auto-discover all projects in ~/.claude/projects/ and show them as dim, grayscale characters in the office even when no Claude session is running
  • Each dormant character can have skills assigned via a Configure modal (click the hover tooltip)
  • Hidden projects managed in the Settings modal → Offline Projects section
  • When a project goes active, the dormant character seamlessly disappears and the live agent appears

What's new

  • dormantProjectScanner.ts — scans ~/.claude/projects/, extracts real workspace paths from JSONL, merges with config, capped at 20 most-recently-active
  • dormantProjectsLoaded / availableSkills / updateDormantProject — new message types (defined in asyncapi.yaml)
  • DormantCharacter in OfficeState — separate map from active agents, rendered dim+grayscale in the same Z-sorted pass
  • ProjectModal — skills chips, autocomplete from ~/.claude/skills/, hide button
  • SettingsModal — new "Offline Projects (hidden)" section with Show button
  • fs.watch on ~/.claude/projects/ with 500ms debounce for live updates

Test plan

  • Open the extension with Claude projects on disk — dormant chars appear at seats
  • Hover a dormant char — tooltip shows name, path, last active, skills
  • Click Configure — ProjectModal opens; add/remove skills; changes persist in ~/.pixel-agents/config.json
  • Click Hide — character disappears; reappears in Settings → Offline Projects
  • Start a Claude session for a project — dormant char disappears, live agent spawns
  • Close the Claude session — dormant char reappears
  • npm run test:server → 249/249 pass
  • npm run compile → clean build

fabiand93 and others added 25 commits June 18, 2026 18:54
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Spec for showing all Claude Code projects from ~/.claude/projects/ as
offline characters in the Pixel Agents office, with per-project skill
assignment via a configure modal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Export extractCwdFromJsonl and decodeDirname for public use
- Make extractCwdFromJsonl async with Promise<string | null> return type
- Return [] instead of filtering existingProjects when ~/.claude/projects/ missing
- Return [] instead of existingProjects in readdirSync catch block

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wire hermesProvider alongside claudeProvider in AgentRuntime and
PixelAgentsViewProvider; fix js-yaml namespace import to resolve
TypeScript errors; update default-layout-1 to layoutRevision 2;
minor Direction type annotation fix in officeState.
- extractCwdFromJsonl: drop hook_event_name check; return first record
  with a non-empty cwd string field (matches real Claude Code JSONL format)
- setDormantProjects: add usedSeatIds Set + findFreeUnusedSeat() to prevent
  multiple dormant chars stacking on the same seat
- _startProjectsWatcher: use local debounceTimer ref in callback; clarify
  that null _projectsWatcher on throw allows retry on next webviewReady

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 19, 2026

Copy link
Copy Markdown

@fabiand93 is attempting to deploy a commit to the pablodelucca's projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant