Repository navigation
Releases
dsh-claude-bridge 0.4.1
Upgrade
No breaking changes. Run the install commands with this tag; setup moves your other profiles to the same release, keeps your config and adds the Claude Stop hook to ~/.claude/settings.json (backup first; CLAUDE_DONE=0 skips it):
dsh plugin --profile web add github:ahmedibrahim085/dsh-claude-bridge#v0.4.1
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live.
Fixed
dsh-wait-turnonly reads an existing event file. It used totouchit, which dsh's sandboxed shell refuses (PermissionError: Operation not permitted), so dsh could not wait for Claude (or for another dsh session). Tested under a no-writesandbox-execprofile and live from a dsh turn.
Full Changelog: v0.4.0...v0.4.1
dsh-claude-bridge 0.4.0
Upgrade
No breaking changes. Run the install commands with this tag; setup moves your other profiles to the same release, keeps your config and adds the Claude Stop hook to ~/.claude/settings.json (backup first; CLAUDE_DONE=0 skips it):
dsh plugin --profile web add github:ahmedibrahim085/dsh-claude-bridge#v0.4.0
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live.
Added
- Claude "done" signal:
claude-turn-event, a Stop hook that writes one JSON line per finished Claude Code turn (with its final reply, first 8000 characters) to~/.local/state/claude-events/turns.jsonl. It prints nothing and always exits 0, so it never blocks a turn. setupadds the hook to~/.claude/settings.json(backup first; other hooks keep their order;CLAUDE_DONE=0skips it);doctorchecks it;uninstallremoves only this entry.dsh-wait-turn --claudewaits on Claude's events (CLAUDE_TURN_EVENTS_FILEoverrides the path).- Tests: hook script, settings merge and removal,
--claudewait;clean-install.shchecks the hook is added and removed.
Full Changelog: v0.3.0...v0.4.0
dsh-claude-bridge 0.3.0
Upgrade
No breaking changes. Run the install commands with this tag; setup moves your other profiles to the same release and keeps your config:
dsh plugin --profile web add github:ahmedibrahim085/dsh-claude-bridge#v0.3.0
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live. To receive messages from dsh, start Claude Code with claude-dsh.
Added
- dsh can message a running Claude Code session: tool
send_to_claude(message, optionalcwd) in every configured profile, through dsh's MCP client and the newbin/dsh-claude-channelserver. The message arrives at once, even in an idle session, as a Claude Code channel event. claude-dsh: starts Claude Code with that channel loaded for this session only (--mcp-config), so other sessions start nothing (the server is about 37 MB per session). Uses Claude Code channels, a research preview.CHANNEL=1|0in the config;setupwrites~/.config/dsh-claude-bridge/channel-mcp.json,doctorchecks it,uninstallremoves it.- Tests: 5 channel-server tests with real processes and sockets; setup/uninstall tests;
clean-install.shchecks the new pieces.
Full Changelog: v0.2.4...v0.3.0
dsh-claude-bridge 0.2.4
Upgrade
No breaking changes. Run the install commands with this tag; setup moves your other profiles to the same release and keeps your config:
dsh plugin --profile web add github:ahmedibrahim085/dsh-claude-bridge#v0.2.4
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live.
Added
dsh-claude-bridge uninstall [--dry-run] [--purge]: removes only whatsetupmade (plugin and managed block per profile, links, skill, acpx and mcacpdshagents, and mcacp when nothing else uses it).--purgealso deletes the config, turn events and helper state.test/clean-install.shnow uninstalls, checks nothing is left, and reinstalls.
Fixed
- The CLI usage text listed a
setup --yesflag that does not exist; it now showssetup [--source SPEC]anduninstall.
Full Changelog: v0.2.3...v0.2.4
dsh-claude-bridge 0.2.3
Upgrade
No breaking changes. Run the install commands with this tag; setup moves your other profiles to the same release and keeps your config:
dsh plugin --profile web add github:ahmedibrahim085/dsh-claude-bridge#v0.2.3
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live.
Changed
- The
dsh-harnessskill sends three or more parallel dsh sessions to mcacp, which runs them in one dsh process (16 sessions: 502 MB) instead of acpx's one process per session (16 sessions: 5.2 GB). It tells Claude to shut mcacp's agent down when the work is done.
Added
- Eval case
parallel-fanout-uses-mcacp. - Docs: measured helper cost (about 200 MB each), how to raise the helper cap past 8, and both directions under load at once.
Full Changelog: v0.2.2...v0.2.3
dsh-claude-bridge 0.2.2
Upgrade
No breaking changes. Run the install commands with this tag; setup moves your other profiles to the same release and keeps your config:
dsh plugin --profile web add github:ahmedibrahim085/dsh-claude-bridge#v0.2.2
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live.
Added
setupupgrades a profile whose plugin is pinned to an older release;doctorwarns about an old pin.- Docs: measured parallel limits for both directions (README Limits, skill gotchas, MAINTENANCE).
Changed
setupreplaces old symlinks in place and moves only real files or folders to a backup dir outside the link dir (~/.local/state/dsh-claude-bridge/backups,~/.claude/skills-backup).
Fixed
doctor --livedeletes the dsh session its test turn created; it used to leave one behind on every run.npm testruns on Node 26 (node --test test/stopped accepting a directory).
Full Changelog: v0.2.1...v0.2.2
dsh-claude-bridge 0.2.1
Upgrade
No breaking changes. Add the new release to each profile listed in PROFILES (default web acp headless), then run its setup:
for p in web acp headless; do dsh plugin --profile $p add github:ahmedibrahim085/dsh-claude-bridge#v0.2.1; done
~/.dsh/profiles/web/node_modules/dsh-claude-bridge/bin/dsh-claude-bridge setupRestart any running dsh host, then run dsh-claude-bridge doctor --live.
Fixed
setupmoves an existing~/.claude/skills/dsh-harnessto~/.claude/skills-backup/instead of renaming it insideskills/, where Claude Code would load both copies.
Full Changelog: v0.2.0...v0.2.1
dsh-turn-events 0.1.0
First release.
- Plugin (
dsh-turn-events): on every finished agent turn (agent/turn-stopping), appends one JSON line{"ts","event","session_id","cwd","turn","agent_preset"}to~/.local/state/dsh-events/turns.jsonl(override withconfig.fileorDSH_TURN_EVENTS_FILE). Runs in the dsh host process: no shell, no hook bridge, no sandbox change; observes only and never steers or blocks a turn; write failures are logged, not thrown. dsh-wait-turn: blocks until the next matching turn finishes (--sessionmatches any part of the id,--cwd,--timeout), prints its event and exits 0, or exits 2 on timeout. Event-driven on macOS/BSD (kqueue); 1-second size check elsewhere.dsh-turns: one-shot lookup of finished turns with each turn's reply text, read from dsh's own session logs (needs thezstdCLI).- Installable as a dsh bundle (
dsh.bundle.patch); tested on dsh 0.2.2-rc.1, Node 26, macOS, in web (including full-access) and ACP (read-only) sessions.
Known limits: the plugin listens to dsh's internal agent/turn-stopping event, which is not a documented public API, so a future dsh release may need an update. Headless one-shot runs are not covered by bundle profiles that do not list this plugin.
Install
dsh plugin --profile web add github:ahmedibrahim085/dsh-turn-events#v0.1.0Tests: 5 plugin tests (node --test) + 3 CLI tests, all passing on macOS, Node 26, dsh 0.2.2-rc.1; live-verified in web and ACP sessions.