# StackChan MCP v0.2.0

The XiaoZhi bridge now exposes a limited tool set by default. Ticket starts are
dry runs and do not create worktrees, tmux sessions or Codex prompts; ticket
completion and web search are hidden. Explicit project paths are blocked in
project discovery and the ticket-start `repo` argument. Pass
`bridge --allow-dev-mutations` only when remote ticket
starts and completion logs are intended. This flag keeps web search hidden.
Local `serve` mode retains the full tool set and its existing mutation behavior.

MCP clients must refresh tool discovery and update calls to the new names:

| Previous name | New name |
| --- | --- |
| `say_hello` | `stackchan_ping` |
| `search_internet` | `web_search` |
| `start_ticket_work` | `dev_linear_start_ticket` |
| `linear_list_teams` | `dev_linear_list_teams` |
| `resolve_project` | `dev_project_resolve` |
| `finish_issue` | `dev_linear_finish_ticket` |

Bridge traffic and diagnostic payload logs redact known token fields, local
home paths and absolute Unix paths outside the home directory. `--audit` records
metadata without argument values or response text.
Malformed multi-document WebSocket frames are rejected before stdio forwarding;
correlation IDs and valid tool schemas are preserved. Tool-list responses are
filtered by their content independently of request IDs or response ordering;
the bridge keeps no pending-request state. Tool-list requests require a non-null
ID.

New ticket worktrees default to a directory inside the repository. Existing
legacy sibling worktree layouts remain supported, and nested ticket directories
are excluded locally without changing the repository's tracked ignore rules.

Validation uses Go vet, tests and race detection, synthetic Git worktrees, and a
loopback WebSocket connected to the real isolated MCP stdio subprocess. It does
not exercise a physical StackChan, XiaoZhi infrastructure, desktop credentials,
real Linear tickets or interactive tmux/Codex sessions.

Source and new release downloads use native Entire Frankfurt and the existing
isolated Dagu worker. Linux archive layout and `release.sh` remain unchanged;
tagged source, checksums and publication provenance accompany the binary files.
Historical published assets retain their original bytes.
