Skip to content

Releases: ferrus-dev/ferrus

v0.4.1-alpha.1

Choose a tag to compare

@RomanEmreis RomanEmreis released this 05 Sep 12:10
4f52783

This release reduces runtime overhead, peak memory use, and binary size across HQ, indexing, retrieval, and check execution.

Changed

  • Bound TUI transcript rendering to visible history and avoid repeated database initialization during steady-state HQ reads.
  • Batch repository-graph cache updates and reuse eligible completed snapshots while preserving revalidation, diagnostics, retention, and publication semantics.
  • Reduce project-memory query allocations through earlier filtering, bounded ranking state, shared Rust AST traversal, and JSON size accounting without full intermediate buffers.
  • Stream check output to scoped log files while retaining bounded failure feedback in memory.
  • Enable ThinLTO, symbol stripping, and a single codegen unit for release builds.
  • Keep update-check enabled by default while allowing HTTP/TLS dependencies to be omitted with --no-default-features.
  • Reduce the macOS arm64 release binary from 21.91 MiB to 13.74 MiB; the dist --no-default-features build is 9.13 MiB.

Fixed

  • Close stdin for check commands, preventing input-reading processes from blocking or consuming MCP JSON-RPC traffic.

Task lifecycle, leases, retry accounting, and submission semantics remain unchanged.

Performance work tracked in [#71](#71) and implemented in [#72](#72).

Full Changelog

v0.4.0-alpha.3

Choose a tag to compare

@RomanEmreis RomanEmreis released this 03 Sep 16:52
0970961

This release improves Ferrus HQ runtime tables with framed, resilient terminal output.

Changed

  • Render /tasks, /runs, and /events as framed HQ tables with bold orange headers.
  • Preserve plain output for empty results and keep table borders visible when terminal height is constrained.
  • Updated neva to 0.5.6 and refreshed supporting dependencies.

Fixed

  • Keep columns aligned when long values are shortened with ....
  • Normalize control characters in table values so embedded newlines and terminal sequences cannot corrupt the dashboard layout.

Supervisor -> Executor -> Reviewer lifecycle semantics remain unchanged.

Implemented in [#69](#69).

Full Changelog: 0.4.0-alpha.2...0.4.0-alpha.3

v0.4.0-alpha.2

Choose a tag to compare

@RomanEmreis RomanEmreis released this 03 Sep 10:54
4fc1a71

This release makes /approve integration safer for concurrent task workflows.

Fixed

  • Replaced direct patch application with a three-way merge between the pinned task baseline, current canonical workspace, and frozen submission.
  • Non-overlapping edits to the same file now merge automatically, while genuine conflicts remain recoverable through INTEGRATION_ERROR.md.
  • Preserved staged, unstaged, untracked, binary, added, deleted, and ignored content across integration failures and rollbacks.
  • Added fail-closed handling for submodule gitlink changes and paths outside sparse checkouts.
  • Retained compatibility with legacy PATCH.diff submissions.

Task lifecycle and approval locking semantics remain unchanged.

Fixed #67 in #68.

Full Changelog: 0.4.0-alpha.1...0.4.0-alpha.2

v0.4.0-alpha.1

Choose a tag to compare

@RomanEmreis RomanEmreis released this 31 Aug 14:18
3f9a88e

This release adds local project memory, federated repository retrieval, and the foundations for distributed indexing. The default Ferrus workflow remains local-first and SQLite-backed.

Highlights

Project memory

  • Added an independently revisioned project-memory.db sidecar.
  • Indexes approved specification structure, archived Outcomes, archive metadata, and bounded terminal task/run provenance.
  • Refreshes project memory best-effort after successful spec archival.
  • Keeps raw submissions, reviews, patches, logs, questions, and integration errors outside the default memory policy.

Federated retrieval

  • Added deterministic links between project memory and pinned repository snapshots.
  • Added repository, memory, and combined domains to ferrus graph search and ferrus graph context.
  • Added the read-only project_memory_status, project_context_search, and project_context MCP tools.
  • Retrieval remains bounded, snapshot-pinned, and offline. No embeddings or external model calls are required.

Distributed indexing prototype

  • Added vendor-neutral contracts for tenant-scoped source packaging, durable index jobs, renewable leases, stateless workers, encrypted object and fact storage, and independent graph/memory publication.
  • Added snapshot-pinned query, retention, and deletion adapters backed by SQLite.
  • Hardened the prototype with semantic idempotency, CAS publication, quotas, deadlines, immutable input validation, and tenant isolation.

The distributed implementation is an opt-in prototype. It does not start a network service or add cloud dependencies to the default Ferrus runtime.

Reliability and maintenance

  • Hardened managed worktree seeding, symlink handling, patch generation, interrupted setup recovery, and configuration synchronization.
  • Updated neva to 0.5.2 while retaining the existing MCP protocol behavior through legacy-spec.
  • Split several large graph, project, HQ, TUI, and test modules into smaller semantic submodules.
  • Reduced the README and moved detailed architecture and operational guidance into docs/.
  • Expanded regression, privacy, deadline, pagination, retention, and distributed adapter coverage.

Compatibility

The Supervisor -> Executor -> Reviewer lifecycle is unchanged. Repository graph and project memory remain optional, rebuildable derived state.

Full Changelog: 0.3.1-alpha.1...0.4.0-alpha.1

v0.3.1-alpha.1

Choose a tag to compare

@RomanEmreis RomanEmreis released this 09 Jul 16:49
c7547cb

This release adds spec archival support to Ferrus, giving completed work a compact project memory while moving raw task and run artifacts out of the repository checkout.

Highlights

  • Added the new /archive-spec HQ command.
  • Ferrus now archives only the currently selected completed spec, making archival explicit and scoped.
  • Completed specs can now receive a final ## Outcome section summarizing implementation results, review notes, deviations from the original plan, and useful follow-up context.
  • Raw task files and run artifacts are moved into a machine-local project archive instead of remaining indefinitely under .ferrus/.

Spec Archival Workflow

/archive-spec starts an interactive supervisor archival flow. The supervisor reviews the completed spec and related artifacts, proposes the ## Outcome content, and Ferrus
archives files only after approval.

Archives are stored outside the repository at:

  ~/.ferrus/projects/<project-id>/archive/specs/<spec-slug>-<timestamp>/

Each archive includes:

  • manifest.toml
  • spec.md
  • archived task markdown files
  • archived run artifacts

This keeps the repository checkout cleaner while preserving detailed historical artifacts locally.

/spec Integration

When creating a new spec with /spec, Ferrus now checks whether the currently selected spec is already complete and still has checkout artifacts. If so, HQ asks whether to archive it first.

If approved, Ferrus runs the same archival flow before continuing with new spec creation.

What's Changed

Full Changelog: 0.3.0-alpha.2...0.3.1-alpha.1

v0.3.0-alpha.2

Choose a tag to compare

@RomanEmreis RomanEmreis released this 05 Jul 13:12
37c07a2

What's Changed

Full Changelog: 0.3.0-alpha.1...0.3.0-alpha.2

v0.3.0-alpha.1

Choose a tag to compare

@RomanEmreis RomanEmreis released this 02 Jul 15:33
93488d5

This release moves ferrus onto a SQLite-backed runtime and lays the foundation for multi-task orchestration.

Highlights

  • SQLite is now the runtime source of truth for tasks, runs, events, leases, retries, reviews, pauses, and recovery state.
  • .ferrus/ now stays focused on human-readable artifacts: task files, submissions, reviews, questions, answers, consultations, patches, and integration errors.
  • Added queued task execution with /run and /run --limit N, including deterministic milestone readiness and duplicate task prevention.
  • /task, /task --manual, and /run now share the same queue and scheduler path.
  • Added scoped task/run artifacts under .ferrus/tasks/<task-id>.md and .ferrus/runs/<task-id>/.
  • Added role-only MCP registrations: ferrus-executor and ferrus-supervisor.
  • HQ-managed agents now receive concrete runtime identity through FERRUS_AGENT_ID, FERRUS_TASK_ID, and FERRUS_RUN_ID.
  • MCP tools, prompts, and resources are now scoped to SQLite task context instead of global STATE.json.
  • Added multi-executor scheduling with limits.max_parallel_tasks.
  • Added managed git worktree isolation for executor sessions.
  • Executor submissions now persist PATCH.diff; approval applies the patch back to the canonical workspace.
  • Integration failures are recorded as INTEGRATION_ERROR.md, SQLite failure reasons, and runtime events.
  • Added a new HQ dashboard foundation with project state, milestone status, task activity, command output, errors, and human-question handling.
  • Added DB-first inspection and recovery commands for projects, tasks, runs, events, stale leases, interrupted runs, and orphaned worktrees.
  • Added experimental support for OpenCode and Goose coding agents.

Migration Notes

Existing projects should run:

ferrus migrate
ferrus doctor

ferrus migrate imports legacy state and converts old indexed MCP registrations where possible. ferrus doctor reports remaining schema, registration, lease, or artifact
issues.

Legacy STATE.json is no longer used for runtime coordination; it only remains as an import source during migration.

Full Changelog: 0.2.7-alpha.4...0.3.0-alpha.1

v0.2.7-alpha.4

Choose a tag to compare

@RomanEmreis RomanEmreis released this 12 May 12:50
841952d

What's Changed

Full Changelog: 0.2.7-alpha.3...0.2.7-alpha.4

v0.2.7-alpha.3

Choose a tag to compare

@RomanEmreis RomanEmreis released this 10 May 14:00
74c525f

What's Changed

Full Changelog: 0.2.7-alpha.2...0.2.7-alpha.3

v0.2.7-alpha.2

Choose a tag to compare

@RomanEmreis RomanEmreis released this 03 May 13:49
101a967

What's Changed

Full Changelog: 0.2.7-alpha.1...0.2.7-alpha.2