Skip to content

Releases: hanoong7/Claude_Multi_Agent_Console

v0.16.4

Choose a tag to compare

@github-actions github-actions released this 20 May 02:15
feat(v0.16.4): '계속 허용' button — sticky tool approval per session

Permission modal now has two allow paths:
  - '✓ 이번 한 번'   → one-shot approval
  - '✓ 이 도구 계속 허용' → adds the tool name to a per-session sticky set;
                          future requests for that tool skip the modal
                          entirely

Server keeps Map<sessionId, Set<toolName>> in memory. /permission
short-circuits in this order:
  1. shouldAutoApprove (read-only / safe Bash subset) — always allowed
  2. stickyAllow set for the session — user-granted
  3. otherwise surface the modal as before

WS permission.response now carries { approved, reason, remember }.
When remember && approved, the tool gets added to the set; the server
console logs '[permission] sticky-allow added: <tool>' for visibility.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.16.3

Choose a tag to compare

@github-actions github-actions released this 20 May 02:11
fix(v0.16.3): server-side auto-approve for safe tools — far fewer modals

Previous diagnosis (v0.15.3) was wrong. The 'too many permission
prompts' issue wasn't 'auto' being an unrecognized mode — it was that
claude's acceptEdits mode auto-approves a much narrower band than
users expect, so most Read/Glob/Grep/git-status/npm-test/etc. calls
were still being routed through our --permission-prompt-tool and
shown as modals.

Fix lives in the server's /permission handler: before broadcasting to
the UI, short-circuit with an allowlist of read-only / well-known safe
tools and Bash command prefixes. Returns approved=true immediately,
no modal:
  - tools: Read, Glob, Grep, LS, ListFiles, TodoWrite, TodoRead, Skill
  - our own mcp__agent__* (mailbox / task list — internal)
  - Bash: ls / pwd / cat / head / tail / wc / file / stat / du / df /
    tree, git read-only (status, log, diff, branch, show, …), npm/pnpm/
    yarn list+test+--version, python info, which/whereis/type, echo,
    date, hostname, whoami, uname, node --version, plain find. Pipes,
    redirects, command chaining → not auto-approved.

Everything else (Write, Edit, NotebookEdit, WebFetch, WebSearch,
arbitrary Bash) still routes to the modal. Auto-approvals are logged
to the server console for transparency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.16.2

Choose a tag to compare

@github-actions github-actions released this 20 May 01:19
feat(v0.16.2): richer queued cards + export conversation as markdown

Queued cards used to just say '<worker-name> (kind) · (예정)' which
gave no real info. Now they show:
  - the worker's role description (or first line of role prompt) as a
    placeholder for the upcoming task, italic + muted to distinguish
    from real spawned-task text
  - a row of badges: 대기 + model + effort + permissionMode when those
    diverge from defaults
This makes scanning the queue actually useful when several items are
declared in a single <plan>.

Also: ↓ export button in the chat header. Builds a markdown transcript
of the current session (role-labeled headers with timestamps, session
metadata block at the top) and triggers a Blob download named
<title>_<stamp>.md. Includes user / orchestrator / system lines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 20 May 00:55
feat(v0.16.0): light / dark theme toggle

Add a ☀/☾ button in the TopBar that flips between dark (existing) and
light themes. Choice is persisted to localStorage and applied via a
data-theme attribute on <html> at mount.

Approach is var-based rather than a full per-component refactor:
  - src/index.css declares semantic CSS vars for bg / text / border under
    [data-theme=dark] (default) and [data-theme=light]
  - root + body bg+color and scrollbar thumb pull from the vars
  - a light-mode override block at the bottom of index.css remaps the
    existing hardcoded dark Tailwind classes (bg-[#0b0d10], text-white/...,
    border-white/..., bg-white/[0.04], hover:bg-white/...) to light-mode
    equivalents so every existing component renders sensibly without
    code changes

This keeps the change surface minimal. Subtle accent colors (emerald,
amber, rose) keep their hue in both themes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.15.3

Choose a tag to compare

@github-actions github-actions released this 20 May 00:46
fix(v0.15.3): permission modal shows session + drop fake permission m…

v0.15.2

Choose a tag to compare

@github-actions github-actions released this 20 May 00:41
fix(v0.15.2): in-app prompt dialog + electron.log resets per launch

Two small fixes.

Session rename from the dashboard didn't work because Electron's
Chromium renderer disables window.prompt() entirely. Added an
appPrompt() helper alongside appConfirm() in src/confirm.tsx — same
custom-modal pattern, with an input field, autofocus + select, Enter
to submit, Esc/click-outside to cancel. Dashboard's rename + delete
both go through these now.

Also: electron.log was opened in append mode, so every relaunch
accumulated against the previous session's log. Truncate the file on
process start so the log file always represents the current run only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.15.1

Choose a tag to compare

@github-actions github-actions released this 20 May 00:12
fix(v0.15.1): hide SessionTabs in session view — one session at a time

When entering a session from the dashboard, the chat panel was still
rendering SessionTabs (all sessions as chips at the top). Remove it
so session view is focused on the single active session. Use the
'← Multi-Agent Console' button in the TopBar to return to the
dashboard and pick another session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 19 May 23:45
feat(v0.15.0): dashboard / orchestrator-view as default landing

App now opens to a dashboard listing every session as a large card,
inspired by Anthropic's Agent View. Cards show title, status pill
(live / 승인 대기 / idle), relative last-activity time, currently
running worker chips (worker-colored pulse dot), and a 3-line preview
of the most recent message. Hover reveals 이름/삭제. Click anywhere on
a card to enter that session's full 3-panel view.

  - src/Dashboard.tsx (new): grid component with SessionCard, empty
    state, and '+ 새 세션' button
  - src/App.tsx: persisted view state ('dashboard' | 'session') in
    localStorage; conditional render of Dashboard vs the existing
    3-panel layout; helpers enterSession / newSession that set
    activeSessionId and flip view
  - TopBar logo becomes '← Multi-Agent Console' when in session view,
    clicking returns to the dashboard

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 19 May 07:06
feat(v0.14.0): adversarial debate mode toggle (#4)

Optional opt-in mode: when enabled, evaluation/judgment steps
(REVIEW / INVESTIGATE / large-decision PLAN) auto-spawn two workers
with opposing stances, exchange one round of rebuttals via the
mailbox, then synthesize a consolidated answer that acknowledges
both views.

  - types.ts: OrchestratorConfig.adversarialMode: boolean
  - server.mjs: DEFAULT_ORCH default false; orchestrator.update accepts
    the field; new ADVERSARIAL_BLOCK appended to the orchestrator
    system prompt when on (after APPROVAL_BLOCK). Builds on the
    existing mailbox + shared task list (v0.13.0).
  - store.ts: initial state matches.
  - App.tsx TopBar: new checkbox alongside the plan-approval one,
    amber accent.

IMPLEMENT (coder) / DESIGN (designer) steps are explicitly excluded
from debate — those are output-generation, not judgment.
Max one rebuttal round to keep latency reasonable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 19 May 05:39
feat(v0.13.0): distributed workers — mailbox + shared task list (#1+2)

Workers (and the orchestrator) can now coordinate peer-to-peer through
six new MCP tools instead of every information path going through the
orchestrator.

New file: server/agent-mcp.mjs — stdio MCP server exposing:
  - send_message(from, to, content): peer-to-peer DM, lands in target's inbox
  - read_inbox(from): drain your own incoming messages
  - create_task(from, title, description?, assignee?): add to shared task board
  - list_tasks(from, status?): see pending / in_progress / completed across team
  - claim_task(from, id): self-assign a pending task
  - complete_task(from, id, summary?): mark done with outcome

Every call carries 'from' = the caller's worker key, since all subagents
spawned from one claude session share the same MCP server instance and
env vars can't differentiate per-worker. The orchestrator's
buildAgentsFlag now prepends a worker-key + coord-tool instruction to
each worker's role prompt so they know their key and how to use the
tools.

Server (server.mjs):
  - inboxes: Map<sessionId, Map<workerKey, Message[]>>
  - taskLists: Map<sessionId, Task[]>
  - HTTP endpoints under /agent/* that agent-mcp.mjs proxies to
  - emitAgentEvent broadcasts coordination activity (✉ A→B, + task, ▸ claim,
    ✓ complete) as system chat messages so the user sees the workflow
  - MCP config in claude spawn now includes BOTH permission + agent servers
  - Orchestrator system prompt teaches when to use the task board vs the
    Agent tool, and tells workers to call read_inbox at the start of work

Build:
  - copy + asarUnpack agent-mcp.mjs alongside permission-mcp.mjs

UI work intentionally minimal for MVP — coordination activity surfaces in
the chat log via system messages. Dedicated task / inbox panels can come
in a follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>