• v0.14.0
    Publish sled artifact / publish-dev-artifact (push) Canceled after 0s
    Stable

    dave released this 2026-07-18 11:58:54 +00:00 | 54 commits to master since this release

    What's Changed

    Focus: Bot commands, MCP tools, infrastructure

    Features

    • huskies projects chat command — list every registered project with port and status (1153)
    • Extend gateway_health with 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)
    • compact chat command: distill session context deterministically, then reset with a seed (1186)
    • status chat 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)
    • overview chat 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)
    • compact command 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 status gives 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 release chat command — build sled binary and publish artifact
    • Add upgrade all chat 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