feat: Add tree file view for git status, AgentBar dock, and settings updates

- Add StatusTree component with collapsible directory hierarchy for staged/unstaged/untracked files
- Replace flat file lists in GitPage with tree view showing file type icons and git status badges
- Add AgentBar arc dock with per-agent terminal frame and voice modal
- Update ejecutor settings with hooks for claude-status reporting
This commit is contained in:
2026-02-15 14:21:18 -06:00
parent e9689d6ea8
commit 4aaeb8844f
13 changed files with 1489 additions and 173 deletions

View File

@@ -116,8 +116,8 @@ export function startTerminalServer() {
// Claude status broadcast endpoint
if (url.pathname === '/claude-status' && req.method === 'POST') {
try {
const body = await req.json() as { status: ClaudeStatus, tool?: string }
broadcastClaudeStatus(body.status, body.tool)
const body = await req.json() as { status: ClaudeStatus, tool?: string, agent?: string }
broadcastClaudeStatus(body.status, body.tool, body.agent)
return Response.json({ success: true }, { headers: corsHeaders })
} catch {
return Response.json({ error: 'Invalid JSON' }, { status: 400, headers: corsHeaders })
@@ -246,11 +246,12 @@ export function startTerminalServer() {
type ClaudeStatus = 'idle' | 'processing' | 'toolUse' | 'toolDone' | 'reading' | 'writing' | 'sessionStart' | 'subagentStart' | 'subagentStop' | 'notification' | 'permissionRequest' | 'thinking'
// Broadcast Claude status to ALL clients across ALL sessions
export function broadcastClaudeStatus(status: ClaudeStatus, tool?: string) {
export function broadcastClaudeStatus(status: ClaudeStatus, tool?: string, agent?: string) {
const message = JSON.stringify({
type: 'claude-status',
status,
tool,
agent: agent || 'main',
timestamp: Date.now()
})