Releases: ferrus-dev/ferrus
Release list
v0.4.1-alpha.1
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-checkenabled 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-featuresbuild 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).
v0.4.0-alpha.3
This release improves Ferrus HQ runtime tables with framed, resilient terminal output.
Changed
- Render
/tasks,/runs, and/eventsas framed HQ tables with bold orange headers. - Preserve plain output for empty results and keep table borders visible when terminal height is constrained.
- Updated
nevato 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.
Full Changelog: 0.4.0-alpha.2...0.4.0-alpha.3
v0.4.0-alpha.2
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.diffsubmissions.
Task lifecycle and approval locking semantics remain unchanged.
Full Changelog: 0.4.0-alpha.1...0.4.0-alpha.2
v0.4.0-alpha.1
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.dbsidecar. - 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 searchandferrus graph context. - Added the read-only
project_memory_status,project_context_search, andproject_contextMCP 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
nevato0.5.2while retaining the existing MCP protocol behavior throughlegacy-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
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-specHQ command. - Ferrus now archives only the currently selected completed spec, making archival explicit and scoped.
- Completed specs can now receive a final
## Outcomesection 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
- Archive spec by @RomanEmreis in #52
Full Changelog: 0.3.0-alpha.2...0.3.1-alpha.1
v0.3.0-alpha.2
What's Changed
- UI improvements by @RomanEmreis in #49
- Fix dangling MCP process by @RomanEmreis in #50
- Update display info for agents by @RomanEmreis in #51
Full Changelog: 0.3.0-alpha.1...0.3.0-alpha.2
v0.3.0-alpha.1
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
/runand/run --limit N, including deterministic milestone readiness and duplicate task prevention. /task,/task --manual, and/runnow share the same queue and scheduler path.- Added scoped task/run artifacts under
.ferrus/tasks/<task-id>.mdand.ferrus/runs/<task-id>/. - Added role-only MCP registrations:
ferrus-executorandferrus-supervisor. - HQ-managed agents now receive concrete runtime identity through
FERRUS_AGENT_ID,FERRUS_TASK_ID, andFERRUS_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 doctorferrus 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
What's Changed
- Feat/structure polishing by @RomanEmreis in #43
Full Changelog: 0.2.7-alpha.3...0.2.7-alpha.4
v0.2.7-alpha.3
What's Changed
- New
/reset-speccommand by @RomanEmreis in #42
Full Changelog: 0.2.7-alpha.2...0.2.7-alpha.3
v0.2.7-alpha.2
What's Changed
- Style fix after spec creation by @RomanEmreis in #41
Full Changelog: 0.2.7-alpha.1...0.2.7-alpha.2