-
released this
2026-07-18 11:58:54 +00:00 | 54 commits to master since this releaseWhat's Changed
Focus: Bot commands, MCP tools, infrastructure
Features
huskies projectschat command — list every registered project with port and status (1153)- Extend
gateway_healthwith a relay-working signal — is each sled actually delivering events? (1154) - Bracket logging around install_pre_commit_hook to diagnose bug 1151 freezes (1155)
- Periodic liveness tick so runtime freezes have a precise timestamp (1156)
- Reject boilerplate user stories at save time (1158)
- Replace perm_rx lock-as-presence-signal with a permission router (1163)
- Gateway pulls signed artifacts from a release channel into its local store (1169)
- Add Docker log rotation to project container launch args (1172)
- Identity-aware fleet checks: cryptographic node identity in upgrade and health probes (1173)
- Gateway startup announcement reports version and model (1174)
- Token-authenticated sled→gateway WS uplink (remote-gateway ready) (1179)
- Sled↔gateway goes WS-only: remove the deprecated HTTP fallback paths (1180)
- Config parse error hints at misplaced top-level keys after component (1183)
- Bounded auto-retry for GatesFailed merges before requiring human intervention (1185)
compactchat command: distill session context deterministically, then reset with a seed (1186)statuschat command shows that project's status (1187)- Merge tool results return a summary, not the full gate log (35KB per call) (1188)
- Gitea Actions workflow: build the sled artifact on master merges and publish to the dev channel (1189)
overviewchat command: active work across all connected sleds (1193)- Orphaned build-dir GC: reclaim dead worktree targets without touching warm caches (1199)
- Low-disk warning: the fleet tells the operator before the disk takes it down (1200)
- Chat notification when a new work item is filed (1201)
- Slim CRDT-backed pipeline_query MCP tool (project / stages / fields / include_archived) (1204)
- Fleet_identity MCP tool: read sled pins vs live signed identity, and re-pin via TOFU (1206)
- Fleet_resources MCP tool: on-demand host + per-container disk, load, and CPU/mem (1207)
- Ops/LLM sessions can reach gateway-mode + cross-project MCP (the biggest shell-fallback cause) (1208)
- Gateway lifecycle & telemetry MCP: gateway_info, restart_gateway, gateway_logs, start_story, chat_telemetry (1209)
- Gateway-side "digging in" notification for long tool-only turns (1210)
- Deterministic crash notification when the agent PTY dies mid-turn (1211)
- Sled chat messages show "workspace" instead of the real project name (1212)
- Chat "stop" command that immediately aborts the in-flight LLM turn (1213)
Bug Fixes
- Chat bot crash-loops on poisoned Claude Code session resume (1160)
- Full tokio runtime stall after unblock → merge auto-assign (1170)
- Flaky tests intermittently fail merge gates (1175)
- Base_branch fallback hardcodes master instead of auto-detecting (1176)
- Project.toml scaffold puts top-level keys after component so uncommenting them silently no-ops (1177)
- MergeFailureFinal is a trap state: successful re-merge cannot mark the story done (1178)
- Sled uplinks all register as 'workspace' — containers never get HUSKIES_PROJECT_NAME (1182)
- Stage transitions never reach the gateway relay: StatusEvent::StageTransition is published only in tests (1184)
- Startup version announcement only fires on the trampoline path — normal restarts still say just "Timmy is online." (1190)
- /identity node_id field reports the CRDT id, not the node_identity.key the signature uses (1191)
compactcommand is swallowed by the registry placeholder before its real handler runs (1192)- Db shadow-table tests flake when SHADOW_DB_PATH is not initialized (1194)
- Chat show renders metadata from stale content-text YAML instead of CRDT registers (1195)
- Inactivity watchdog kills agents mid tool-call: awaited MCP calls produce no PTY output (1196)
- Failed agents are never reaped — a dead pool entry blocks respawn indefinitely (1198)
- Flaky test: matrix pull pull_rejects_tampered_artifact_sha256_mismatch fails nondeterministically in merge gates (1202)
- Gateway
statusgives no response — 1187 made it proxy-only with no local resolution or error surfacing (1203) - Compact STILL swallowed after 1192 — interception is placed AFTER the registry dispatch, not before (1205)
Refactors
- Update workspace Cargo.toml dependencies to latest compatible versions (1162)
- Lockfile refresh + sqlx alpha-to-stable (1164)
- Upgrade matrix-sdk 0.17 to 0.18 (1165)
- Upgrade ed25519-dalek 2 to 3 (1166)
- Upgrade garde 0.22 to 0.23 (1167)
- Upgrade tokio-tungstenite 0.29 to 0.30 (1168)
- Dependency freshness sweep: bump manifest minimums, refresh lockfile, drop dead serde_yaml (1181)
Other Changes
- docs: refresh README release section
- script/release: push branch and tag together so master doesn't lag the tag
- Fix compact no-op in gateway mode: add compact to GATEWAY_LOCAL_COMMANDS
- Fold GatesFailed auto-retry into the block subscriber's shared budget
- Upgrading Docker to include newer node, so front-end builds
- Install Node 22 from NodeSource in project base image
- docs: update stale libsqlite3-sys pin comment for sqlx 0.9 stable
- Fix CRDT self-deadlock: read_llm_session re-locked the state mutex
- Disable CRDT debug logging in default features — fixes runtime stalls
- Pre-check binary writability before accepting an upgrade request
- Fix WS deadlock: never block on perm_rx in the chat handler
- Drop the drain check from upgrade — agent death is routine
- Remove all alternate update paths — fleet redeploy is release + upgrade all
- Revert /app/target binary fallback in entrypoint
- Add
releasechat command — build sled binary and publish artifact - Add
upgrade allchat command with drain check and convergence verify - Serve sled binary artifacts from ~/.huskies/artifacts/
- Install sled binary in huskies-owned dir so upgrades work without root
- Add /api/version endpoint for upgrade convergence checks
- Fixed exec bug
- Fix rebuild_and_restart in Docker project containers
- Added CRDT snapshotting
- Unreachable container times out gracefully
- Catching a docker rm problem
- Adding doc comments.
- Converted all external tool calling to async
- Dealing with bot failures
- Stack detection fix
- Added docs comment
- Adding show story mcp
Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.13.0...v0.14.0
Downloads