Skip to content

Releases: unohee/OpenSwarm

v0.17.7

Choose a tag to compare

@unohee unohee released this 16 Jul 02:53
de95732

Added

  • Atlas Cloud provider adapter — new LLM adapter, now an official provider sponsor. (#297, #298)

Fixed

  • openswarm stop actually stops a launchd-managed daemon — runs launchctl bootout itself instead of only printing a hint. (INT-2798, #296)
  • Dashboard project disable survives a daemon restart — records the project in the hard removedConfigPaths denylist in both tilde and absolute forms. (INT-2799, #301, #302)
  • Failed-session partial work is committed before the worktree is preserved — captured as a WIP commit on the swarm branch so a manual dir cleanup can't lose it. (INT-2729, #301)
  • Lance memory writes no longer collide under review --max — removed the dead per-search lastAccessed write and added jittered-backoff retry to every memory write. (INT-2817, #303, #304)

Full notes: CHANGELOG.md

v0.17.5

Choose a tag to compare

@unohee unohee released this 05 Jul 03:00
c794f59

Added

  • Worker escalation on repeated review feedback: one-shot higher model and/or high effort retry before the session gives up (INT-2475, #232)

Full details in CHANGELOG.md.

v0.17.4

Choose a tag to compare

@unohee unohee released this 05 Jul 02:40
7148577

Fixed

  • Reviewer-revise treadmill: failed/rejected attempts persist reviewer feedback and re-attempts start with it injected (both heartbeat paths); a repeating reviewer ends the session early (INT-2474, #230)
  • Fan-out winner promotion no longer dies on dirty projects (plain worktree apply + graceful single-worker fallback) (#230)

Full details in CHANGELOG.md.

v0.17.3

Choose a tag to compare

@unohee unohee released this 05 Jul 01:26
9fdc865

Fixed

  • Duplicate daemons are no longer spawned next to a launchd-managed instance — :3847 port probe before spawn; status/stop are probe-aware (INT-2473, #228)
  • Adaptive worker fan-out actually executes — dirty-worktree snapshot seeding instead of a clean-tree bail; execution is visible in stdout (#227)
  • Worker validation-evidence gate false-positives: chained commands, .mts/.cts, data-dir exemption scoping, defer-to-reviewer instead of hard-fail (#227)

Added

  • Optional autonomous.maxConcurrentPerProject cap (#227)

Full details in CHANGELOG.md.

v0.17.2

Choose a tag to compare

@github-actions github-actions released this 02 Jul 10:48

Fixed

  • Review fix workers no longer die at the 5-minute defaultreview --max --fix now gives each area worker a 15-minute timeout, and timeout failures are classified as infrastructure errors instead of being mislabeled as auth/permission problems. Direct API adapters now preserve the shared timeoutMs: 0 contract as "no deadline". (INT-2350)
  • Heartbeat Live Log skip spam is collapsed — unmapped/disabled Linear project skips are aggregated per project and repeated identical summaries stay silent across heartbeats. (INT-2350)
  • OAuth browser launch is safer and shared — Linear, GPT, and OpenRouter PKCE flows now use one spawn-based browser opener instead of shell-quoting URLs into per-provider exec helpers.
  • Auth, MCP, memory, and registry APIs fail more cleanly — auth profile files are shape-validated before use, unknown OAuth providers fail explicitly, MCP registry/tool schemas are sanitized, memory metadata parsing is tolerant, vector search pushes filters into LanceDB, and registry GraphQL list/search resolvers avoid broad in-memory filtering.
  • Web/TUI runtime hardening — mutating GraphQL and local filesystem reads now honor origin/token checks, the web server clears its git-status poller on stop, monitor fetches are abortable with timeouts, SSE reconnects reject invalid streams and cap partial buffers, and resumed chat goals/model selectors avoid stale async state updates.
  • Task-state and multibyte input regressions restored — Linear sync comments without author metadata still hydrate canonical state when the OpenSwarm marker/prefix match, and the TUI again deduplicates doubled multibyte keystroke events.

v0.17.1

Choose a tag to compare

@github-actions github-actions released this 02 Jul 06:31
9437e80

Fixed

  • Worktree PRs are actually created now — the gh helper in worktreeManager ran with the daemon's own cwd (typically not a git repository, e.g. $HOME), so every gh pr list / gh pr create after a completed task died with fatal: not a git repository while the branch push succeeded — completed work stranded on remote branches with no PR (80 recorded failures; the only successes were when the daemon's cwd happened to be the target repo). gh now runs inside the task's worktree, mirroring the git helper. (INT-2327, #202)

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 04:52
526d776

Added

  • Same-project parallel agents — the daemon can now run multiple agents on one project concurrently. The DecisionEngine's hard "one task per project per cycle" rule (whose justifying comment was stale) is replaced by round-robin selection: every pass adds at most one task per project, so no project monopolizes the slots, and later passes fill the remaining slots from the same projects. Active only when the scheduler can actually isolate the runs (allowSameProjectConcurrent + worktreeMode); file-overlapping tasks within a project are still deferred by the knowledge-graph conflict detection — which this change finally exercises (it was dead code). Verified live: 4 tasks from one project running in parallel worktrees. (INT-2318)

Changed

  • Per-project 5h task cap removed — the rolling-window cap (dailyTaskCap, default 6) silently stalled a project after a productive burst (throttled with an idle scheduler and no error). Like the previously-removed global pace gate, throughput is now governed only by the cron schedule and the Linear rate limiter. Completion records (daily-pace.json) are kept as cost/throughput telemetry. The dailyTaskCap config field is gone; stale keys in existing configs are ignored. (INT-2317)

Fixed

  • Vendored dirs no longer poison conflict detection — with same-project parallelism live, the KG conflict detector deferred 4/5 tasks as "conflicting" via vendored google-cloud-sdk/ files (a.py, run.py, api.py substring-matched every issue text). The scanner now skips vendored trees (google-cloud-sdk, third_party, vendor(s)), and issue-impact filename matching requires a whole-word boundary and ≥3 chars. A poisoned cached graph shrank 14MB → 52KB on rescan. (INT-2320)
  • Project cancellation path normalization~ expansion and relative-path resolution before the exact-or-descendant match, plus a fix for a latent traversal bypass (/dev/WAVE/../WAVE-next was cancelled by disabling /dev/WAVE). Thanks to @ag-linden. (#192) An empty/blank cancellation path now cancels nothing instead of resolving to the daemon's cwd. (#197)

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 01:53
3e1acc1

Security

  • taskState store hardened — prototype-pollution-safe task map (null-prototype via schema preprocess), fail-closed on a corrupt persisted state file (no silent overwrite), Linear sync-comment trust filter (marker/prefix + author allowlist, OPENSWARM_TASK_STATE_TRUSTED_COMMENT_USERS for extras) with an issueId mismatch guard against cross-issue poisoning. (INT-2316)
  • Telemetry privacy tightenedcommand/adapter/event labels are sanitized to a strict token shape so dynamic strings can never leak paths or prompt text; installId is shape-validated; the send timeout is unref'd so fire-and-forget telemetry cannot keep the process alive. (INT-2316)
  • Web dashboard auth: linear-time bearer parse — replaced a polynomially-backtracking Bearer header regex (CodeQL js/polynomial-redos) with a regex-free parse. (INT-2316)
  • BS detector catches env-fallback secretsprocess.env.X || "hardcoded-secret" is now flagged (any line mentioning process.env used to be excluded wholesale). (INT-2316)

Changed

  • Audit hardening batch landed — two full-codebase openswarm review --max --fix passes (~130 files) applied per-area fixes: R5 Linear reconcile extended to done→reopened transitions, fix-loop worker errors surfaced (all-failed round stops early), readOnly adapter option plumbed through the tool layer, locale key coverage, GraphQL resolver and memory-ops cleanups — plus 13 new test files (suite 1326 → 1389). (INT-2316)

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 01:17
1027258

Added

  • openswarm fix is now multi-language — check resolution auto-detects the project's ecosystem instead of requiring package.json scripts. First non-empty source wins: an explicit "checks" map in openswarm.json (key → shell command — the escape hatch for any language and for mixed repos), package.json scripts, Cargo.toml (Rust: cargo check --all-targets + cargo test by default; clippy/build via --checks lint,build), or Python markers (ruff check . / mypy . / pytest, each included only when the repo is configured for the tool; --checks bypasses the gating). Previously Rust/Python projects always exited with No checks resolved. (INT-2303)

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 08:18
a6b10e1

Added

  • Auto-release on version bump — a push to main that changes package.json now runs the gate (lint / typecheck / build) and automatically publishes to npm + tags + creates a GitHub release (notes sliced from this file). The release flow is just "merge a version-bump PR". Idempotent. Requires a repo secret NPM_TOKEN. (INT-2270)
  • CLI update notifier — when the running version is behind npm's latest, the CLI prints a two-line "update available" notice. 24h cached (~/.openswarm/update-check.json) so it's near-instant and non-blocking; skips non-TTY / CI / --version / NO_UPDATE_NOTIFIER. (INT-2270)

Changed

  • checkHandler colors unified onto the shared NO_COLOR/TTY-safe helper (src/support/colors), finishing the CLI/TUI status-consistency work — ~108 hand-rolled ANSI sites now go through c / status. Output is byte-identical when piped. (INT-2260)
  • CI test job promoted to a hard gate (the suite is green), and lint is now warning-free (36 → 0).

Fixed

  • Stale service.test.ts provider-override tests — the reapply lives inside the autonomous-start block; the tests drove it with a non-autonomous config. Fixed → the full suite is green (1315 passing). (INT-2271)
  • postbuild chmod +x dist/cli.js — a clean rm -rf dist && build no longer leaves the global CLI unexecutable ("permission denied").