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

    dave released this 2026-07-24 17:26:54 +00:00 | 0 commits to master since this release

    What's Changed

    Focus: Infrastructure, multi-model agents, developer experience

    Features

    • Checkpoint the CRDT snapshot periodically, not once by accident (1249)
    • Script/check gates duplication and cognitive complexity (1251)

    Bug Fixes

    • CRDT snapshot has no schema migration; a failed load silently starts empty (1241)
    • Bug fields steps_to_reproduce, actual_result and expected_result cannot be edited after creation (1250)

    Refactors

    • Script/release builds project images so they can't drift (1242)
    • Merge jobs stop bloating replicated CRDT state (1243)
    • Deduplicate the worktree module cluster (cleanup/remove/sweep/create/lifecycle share ~60-line clones) (1244)
    • Deduplicate validation/requests.rs — five internal ~50-85 line self-clones (1245)
    • Extract shared LLM-runtime logic duplicated between gemini and openai runtimes (1246)
    • Deduplicate chat-transport LLM command handling (discord <-> whatsapp 45-line clone) (1247)

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.14.4...v0.14.5

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

    dave released this 2026-07-21 14:25:44 +00:00 | 17 commits to master since this release

    What's Changed

    Bug Fixes

    • Duplicate Working line: obsolete digging-in watcher survives alongside 1240 placeholder (1248)

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.14.3...v0.14.4

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

    dave released this 2026-07-21 13:33:44 +00:00 | 20 commits to master since this release

    What's Changed

    Focus: Bot commands, MCP tools, infrastructure

    Features

    • Render agent questions as numbered options in chat protocols without question UI (1228)
    • Sleds self-upgrade on startup to the gateway's published artifact if the baked binary is behind (1230)
    • Project-rebuild must not silently downgrade a live sled to the stale image binary (1231)
    • Ask "what happened with X" and get a paged, subject-scoped history (1236)
    • Matrix bot posts "Working..." immediately on message receipt (1239)
    • Matrix bot shows live progress by editing its placeholder message (1240)

    Bug Fixes

    • Explicit project arg ignored on the SSE MCP path — 1225's routing and create-guard are bypassed (1229)
    • Gateway chat bot crashes (CLI exit 1) on a sled MCP tool error instead of surfacing it (1232)
    • Notifications fire off the filesystem watcher, not the state machine — story 995's TransitionFired subscriber was never wired into startup (1235)
    • status resolves the story number against a different project than show (1237)
    • Worktree tests fail on macOS: tests clobber global HOME (1238)

    Other Changes

    • Removing hardcoded huskies session
    • Ignoring some more files

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.14.2...v0.14.3

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

    dave released this 2026-07-18 23:47:30 +00:00 | 42 commits to master since this release

    What's Changed

    Focus: MCP tools

    Bug Fixes

    • Show fails with "content unavailable" on done/archived stories — content should never be evicted (1222)
    • Work-item tools use active project as an implicit global; project arg ignored, creates/reads misfile silently (1225)

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.14.1...v0.14.2

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

    dave released this 2026-07-18 18:30:50 +00:00 | 46 commits to master since this release

    What's Changed

    Focus: Multi-model agents, infrastructure, developer experience

    Features

    • Pipeline board shows active-agent state distinctly from idle-blocked (1215)
    • Shorten long-turn notification to "Working..." (1216)
    • Remembered/sticky permission approvals so constrained agents stop re-prompting for the same action class (1218)
    • Add runtime artifacts to the default project scaffold .gitignore (1219)

    Bug Fixes

    • Find_free_port can return a reserved/occupied port (2200), flaking its test and merge gates (1214)

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.14.0...v0.14.1

    Downloads
  • 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
  • v0.13.0 Stable

    dave released this 2026-05-19 23:17:14 +00:00 | 176 commits to master since this release

    What's Changed

    Focus: Bot commands, infrastructure, Docker hardening

    Features

    • Chat-bot proxy reads stale gateway_project_urls BTreeMap instead of live store (1122 missed this seam) (1132)
    • Mkdir -p ~/.huskies/<name>/ before ssh-keygen in adopt (1134)
    • Bootstrap Claude credentials into newly-launched project sleds (1135)
    • Sled → gateway WebSocket back-channel so project pipeline events reach Timmy (1136)
    • First-run project init flow — walk through config instead of leaving defaults silently (1137)
    • In-container huskies self-update — huskies upgrade pulls a fresh binary without docker rebuild (1138)
    • Per-project Dockerfile fragment so agents can extend their own sled image (1139)
    • One-shot project-rebuild chat command: rebuild image, swap container, reconnect, preserve state (1140)
    • Convert work-item type between spike/story/bug/refactor (or at least spike→story) (1141)
    • Force coder agents through MCP-validated Edit/Write/Bash to prevent writes to master worktree (1142)
    • Decouple LLM environmental awareness from chat transport — persona-keyed sessions and a real-time event subscription (1143)
    • Gateway trampoline-restart: detached helper survives the gateway's own death (1144)
    • Codesign self-heal at exec time so a missed re-sign doesn't silently SIGKILL the binary (1145)
    • Matrix bot auto-recovers from M_UNKNOWN_TOKEN by re-logging in from bot.toml password (1146)
    • One-active-gateway invariant via pidfile+flock — prevent double-gateway during restarts (1147)
    • Per-sled upgrade chat command using huskies upgrade (1138), serial-locked (1148)
    • huskies health chat command — surface gateway, sled, matrix, creds, and build-hash status (1149)
    • Set HUSKIES_GATEWAY_URL on every sled container so 1136's relay actually spawns (1152)

    Bug Fixes

    • Install_pre_commit_hook blocks the tokio executor — sync std::process::Command::output() in an async path stalls worktree-create-sub (1151)

    Other Changes

    • script/local-release: restore build + hot-restart workflow
    • fix: project sleds need claude CLI + extensions.worktreeConfig
    • Revert "fix: bind project container host ports to 0.0.0.0"
    • fix: bind project container host ports to 0.0.0.0

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.12.1...v0.13.0

    Downloads
  • v0.12.1 Stable

    dave released this 2026-05-17 22:52:28 +00:00 | 212 commits to master since this release

    What's Changed

    Focus: Developer experience, Docker hardening, bot commands

    Features

    • Remove static website from huskies OSS repo (moved to huskies-server) (1112)
    • [huskies-server repo] Convert static website to Next.js with static rendering (1113)
    • New project: --path flag to override default host directory (1114)
    • New project: --adopt flow to wrap a container around an existing checkout (1115)
    • Rebuild_and_restart loses pending CRDT ops by calling exec() before persistence channel drains (1116)
    • MCP tool for adopt: expose new project --adopt as an MCP call (1117)
    • Automate per-project docker image builds (huskies-project-base + per-stack overlays) (1118)
    • Address npm audit moderate+ vulnerabilities in frontend/ (1119)
    • Silence intentional-error stderr in frontend tests so failures stand out (1120)
    • Remove the marketing website from the huskies OSS repo (now lives in huskies-server) (1121)
    • Chat-bot switch command reads stale gateway_projects Vec instead of live gateway_projects_store (1122)
    • Persist TransitionFired into a per-sled CRDT event log (1124)
    • LLM session entity + assemble_prompt_context helper, wired into Matrix bot (1125)
    • Gateway event aggregator with per-session scope filters (Timmy=All, Sally=single sled) (1126)
    • Migrate all LLM-invoking transports onto assemble_prompt_context; delete legacy Vec (1127)
    • Bounded event queues + EventStreamGap sentinel + observability for context assembly (1128)
    • Find_free_port fallback returns unbindable port silently when range is exhausted (1129)
    • Adopted/launched project containers bind huskies to 127.0.0.1, unreachable from host MCP (1130)

    Other Changes

    • fix: drop package-lock.json + node_modules before npm install in Dockerfile
    • fix: work around npm optional-deps bug in frontend npm install
    • chore: gitignore /pipeline.db at repo root (phantom stale file)
    • fix: build frontend before cargo in script/test (merge gate self-heal)
    • fix(1101): strip passing-test lines before classify() lint check; remove diagnostic

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.12.0...v0.12.1

    Downloads
  • v0.12.0 Stable

    dave released this 2026-05-17 01:16:27 +00:00 | 244 commits to master since this release

    What's Changed

    Focus: Bot commands, Docker hardening

    Features

    • Chat bootstrap Phase 1: new project chat command spawns a bare project container and registers it with the gateway (1106)
    • Chat bootstrap Phase 2a: stack-overlay framework + Rust and Node stack overlays (1107)
    • Chat bootstrap Phase 3: SSH-remote editor access into the project container (any editor) (1108)
    • Chat bootstrap Phase 4: --git clones an existing repo and configures push credentials (1109)
    • Chat bootstrap Phase 2b: additional stack overlays (Go, Python, Ruby, JVM) (1110)

    Bug Fixes

    • Test isolation: init_for_test() and ensure_content_store() are once-per-thread, not once-per-test, polluting CRDT state across tests (1111)

    Other Changes

    • docs: chat-driven project bootstrap design overview

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.11.1...v0.12.0

    Downloads
  • v0.11.1 Stable

    dave released this 2026-05-15 22:43:43 +00:00 | 254 commits to master since this release

    What's Changed

    Focus: Infrastructure, multi-model agents, bot commands

    Features

    • Fly.io Machines API integration for multi-tenant huskies SaaS (811)
    • Tee pipeline events into gateway Timmy's context (1063)
    • Move source-map regen into the merge pipeline; drop spawn-time regen and the orphan tracked-file drift (1065)
    • Decouple startup CRDT replay from live TransitionFired channel; add periodic reconciler for side-effect subscribers (1066)
    • Include story name in huskies: merge NNNN commit subject so release notes regenerate cleanly (1069)
    • Chat notification when a new work item is created (1073)
    • Compact Working tree: N (uncommitted) inline with the coder line in chat status output (1076)
    • Truncate merge-failure chat notification to the tail of gate output (1077)
    • Pipeline+Status split — Step B: migrate UI/display layer to read Pipeline + Status (1085)
    • Pipeline+Status split — Step C: migrate auto-assign, subscribers, and lifecycle transitions to read Pipeline + Status (1086)
    • Pipeline+Status split — Step D: migrate CRDT storage to (Pipeline, Status) and remove the Stage enum (1087)
    • Record and surface the origin of every work item (1088)

    Bug Fixes

    • done → archived sweep stops firing after rebuild_and_restart cycles (1070)
    • Coder agents run sqlx migrations against the production pipeline.db, bricking the next server restart when binary's migration set is behind (1072)
    • get_version returns stale build_hash after rebuild_and_restart (1074)
    • get_pipeline_status returns ~9 KB per item — overflows MCP token limit at ~30 active items (1075)
    • Gateway event tee from 1063 not injecting into Timmy's context — buffer wired but reminders never appear (1078)
    • Stuck-agent detector blocks stories on legitimate exploration / debugging — uses too narrow a "progress" signal (1089)
    • Chat dispatcher spawns one Timmy per inbound message — needs coalesce window + per-session serial lock (1093)
    • delete_story leaks zombie rows in pipeline_items shadow table — 176 tombstoned items still report non-terminal stages (1094)
    • Shadow drift: set_name writes CRDT name register without updating pipeline_items.name (1095)
    • Shadow drift: set_agent writes CRDT agent register without updating pipeline_items.agent (1096)
    • Shadow drift: set_depends_on writes CRDT depends_on register without updating pipeline_items.depends_on (1097)
    • Shadow drift: set_retry_count / bump_retry_count write CRDT register without updating pipeline_items.retry_count (1098)
    • Multiple LLM agents can run concurrently on the same story (coder + mergemaster + others) — enforce one-agent-per-story invariant (1100)
    • Rate-limit warning at session start sticks the rate_limit_exit flag, causing 1053's fast-path bypass to skip completion on clean session exits (1103)
    • Freeze from Backlog stores wrong resume_to — Unfreeze restores to Coding instead of Backlog (1105)

    Refactors

    • Migrate AgentPool::kill_all_children and kill_child_for_key to process_kill so server shutdown and stop_agent actually kill claude (1090)
    • Migrate the merge-gate's stale-cargo kill path to process_kill (1091)

    Other Changes

    • fix(1102): require non-empty origin.id on create_* MCP tools
    • diag(1101): log classify verdict + matched trigger on merge gate failures
    • test(tick_loop): de-flake reconcile_never_floods_broadcast_channel
    • fix(agents): kill-then-status reorder in stop_agent
    • feat: add process_kill module + use it to fix watchdog double-spawn
    • chore: gitignore .huskies/double_timmy_log.md
    • fix: skip setup commands on worktree reuse so reconciler doesn't fire npm ci every 30s
    • fix: drop source-map.json from agent orientation bundle

    Full diff: https://code.crashlabs.io/crashlabs/huskies/compare/v0.11.0...v0.11.1

    Downloads