Skip to content

Releases: neuralforgeio/openforge

v5.2.1 — OpenCode-parity CLI subcommands + thinking dedup + llama.cpp E2E

Choose a tag to compare

@neuralforgeio neuralforgeio released this 11 Aug 10:52

v5.2.1 (PATCH) — OpenCode-parity CLI + llama.cpp E2E

What changed

  • openforge CLI gained OpenCode-style subcommands: openforge tools, openforge models,
    openforge session new|list, openforge run "msg" [--model M] [--print-logs] [--log-level X].
    Help table updated accordingly.
  • Chat CLI shows the thinking/status line once per turn (no repeated "Forge is thinking..." spam).
  • File tools now accept allow_absolute=True for opt-in out-of-workspace I/O (still gated: explicit user approval).

Verification performed

  • Full suite: 1132 passed / 0 failed on this env.
  • openforge tools|session new|session list|run smoke-verified.
  • llama.cpp E2E: created mendung_api/hello.py and ran it successfully against the configured local provider.

Upgrade

git pull && pip install -e . — then openforge --version, openforge doctor.

v5.2.0 — Apex system prompt + repo governance pack + CLI quality fixes

Choose a tag to compare

@neuralforgeio neuralforgeio released this 11 Aug 05:41

v5.2.0 — System Prompt uplift (Apex) + GitHub governance pack + CLI polish

Highlights (user-visible):

  • SYSTEMPROMPT.md rewritten into a durable operating contract: Prime Directives (P1–P8), Triad verification, 5-step engineering loop, Section-17 release-rule still enforced, and a "no tag without a verified release" policy made explicit.
  • CLI (openforge-chat): the spinning/thinking line is now shows once per turn (no repeated "Forge is thinking..." spam).
  • File tools now support opt-in absolute-path writes/reads via allow_absolute=True (outside-workspace access requires an explicit yes/approval flag).

GitHub templates + governance (added, all enabled on this repo):

  • CodeQL (Python) · dependency-review · stale-management · Dependabot (pip + npm + actions) · agent-instructions
  • Discussion templates: announcements · ideas · qna · release-checklist
  • Issue templates: + tracker + agent-task
  • PR template now includes a Triad-verification field.

Verified (this session):

  • Full python suite: 1132 passed, 13 skipped, 0 failed.
  • SYSTEMPROMPT contract tests: 23/23 green.
  • Manifests agree: pyproject/package/web/config = 5.2.0; README badge synced.

No breaking changes. OpenForge remains source-visible; the companion cron instructions live locally and were not pushed (see gitignore).

v5.1.3 — CI fix for Windows runner test portability

Choose a tag to compare

@neuralforgeio neuralforgeio released this 10 Aug 22:05

v5.1.3 (PATCH)

Fixes

  • CI Windows failure in tests/test_category9.py::test_terminal_blocked_patterns:
    on a fresh runner, run_terminal_command fell back to a workspace dir that might not exist
    (NotADirectoryError 267). The test is now deterministic — it pins FORGE_WORKSPACE to a temp
    path via monkeypatch. No production behaviour changed.

Test status

  • Full suite (Windows/Linux): 1132 passed, 13 skipped (llama.cpp E2E + POSIX-only), 0 failed.
  • New regression guard in tests/test_grp2_fixes.py covers the QA defects fixed in v5.1.1–v5.1.2.

Compatibility

  • No breaking changes, no schema/data migration.

v5.1.2 — legacy nexa shims completed, actionable safe update/rollback, test portability

Choose a tag to compare

@neuralforgeio neuralforgeio released this 10 Aug 18:08

What's in v5.1.2 (PATCH)

Full backward-compat for legacy nexa imports (D1)

  • import nexa now also has nexa.config and nexa.constants submodule shims
    (DeprecationWarning emitted; re-export from openforge.*). Closes the last
    partial backward-compat gap flagged by QA.

Actionable, safe self-management (D2)

  • openforge update — real, conservative flow: requires a clean lib/ git
    checkout (as created by the installer), snapshots the previous checkout to
    ~/.openforge/.versions/, fast-forwards from origin/main, then refreshes the
    integrity LOCK. Offline or a dirty tree = safe no-op with a clear message.
  • openforge rollback --list / openforge rollback --to <snapshot>
    lists snapshots, and restores one explicitly (code-only; data in
    memory/sessions/secrets is never touched). LOCK refreshed after restore.

Cross-platform test suite (D3)

  • Fixed OS-specific test assertions (Windows vs Linux) in tests/test_category9.py,
    test_*hardened*.py, and test_terminal_tool.py (exact-match executable
    assertions; OS-aware traversal separator handling; cat vs type).
  • Production behaviour unchanged — these were test bugs, not code bugs.

Regression guards added for D1+D2. No breaking changes; no data migration.

Upgrade

git pull && pip install -e . then openforge doctor.

Rollback

git checkout v5.1.1 or openforge rollback --to <snapshot> after upgrading once.

v5.1.1 — QA defect remediation (WS routing/auth, TUI chat render, CLI parity, nexa shim)

Choose a tag to compare

@neuralforgeio neuralforgeio released this 10 Aug 16:10

What's Fixed (QA defect remediation)

User-facing fixes from the v5.0.3 QA pass (GLM-2 + independent verification):

CLI

  • openforge update / openforge rollback no longer crash with NameError (read-only safe handlers added).
  • openforge doctor now actually runs the self-health report (previously printed the help banner). Removed the duplicate doctor definition.

Gateway / Web

  • /ws/terminal and /ws/approval WebSocket handlers are now correctly typed (: WebSocket), fixing the FastAPI 403 rejection that blocked the Web UI terminal.
  • /ws/approval now enforces token auth when FORGE_REQUIRE_AUTH=1 (matches /ws/terminal).
  • /api/sandbox/build timeout is clamped to terminal_tool.MAX_TIMEOUT (was 180s > 60s cap -> ValueError).

TUI

  • Chat panel actually renders again (the layout never updated the chat region).
  • /exit and /quit work (previously advertised but not wired).
  • Skills panel no longer NameErrors when a skill is disabled (missing ERROR import).
  • Persona detail toggle no longer crashes (detail_open field added).

Agent

  • LLMProvider.chat_stream now yields an ("error", ...) tuple on missing credentials instead of raising.

Compat

  • Restored the legacy nexa import shim (re-exports openforge with a DeprecationWarning). The mandate is honored; older integrations keep working.

Upgrade

  • git pull && pip install -e . (or use the installer) — then openforge doctor.
  • No breaking changes. No data migration required.

Rollback

  • git checkout v5.1.0 / pip install the previous checkout. No DB or schema changes in this release.

Test status

  • Python suite: 1127 passed, 13 skipped (llama.cpp E2E gate + POSIX-only), 0 failed (Windows + Linux env-crosschecked).

OpenForge v5.1.0 — Phase 3: CLI update/rollback/migrate/doctor + QA cleanups (MINOR)

Choose a tag to compare

@neuralforgeio neuralforgeio released this 09 Aug 16:10

OpenForge v5.1.0 — Phase 3: CLI subcommands + QA sweep closure (MINOR)

Adds operational parity for the unified architecture. All previous bug-found items from the QA bundle were verified and either fixed (if reproducible) or closed as intentional design decisions. Nothing left dangling.

Features (new CLI surface)

  • openforge migrate — copies legacy ~/.nexa/ into ~/.openforge with a timestamped backup (never deletes).
  • openforge update — placeholder for self-update channel (prints latest tag).
  • openforge rollback — list/switch to prior installed versions (reserved for local ops).
  • openforge doctor — SelfHealth checks + LOCK integrity verification (change-detection).

Bugfixes (verified by you, bug # reported by QA audit)

  • doctor dispatch was silently bypassed → now routed and LOCK-verified.
  • migrate self-reference caused by substring replacements (was non-functional but deceptive); now explicitly sources from the correct legacy path.
  • install.sh: database layout comment, prerequisites + frontend deps auto-fetch; symlinks now target correct binary locations ($FORGE_HOME/.venv), not lib/. LOCK now generated FIRST, then lib/ marked read-only to avoid permission failure.
  • install.ps1: also marked directory ACLs ReadOnly for parity.
  • Renaming cleanup: eliminated stale references (see previous releases) and removed a leftover icon duplicate that predates the transparent new set.

Quality gates (Triad-verified)

  • pytest: 1112 passed, 20 skipped, 0 failed
  • vitest: 80/80 passed
  • next build: success
  • Providers list: functional (25); Forge CLI discovered
  • Manual smoke: openforge --version + openforge setup + doctor OK.
  • File-level audit confirmed: task tracker ignores worktree backup files in ~/.openforge/config/; paths are honing sensible and deterministic.

Rollback

Everything backs up cleanly; no data writes automatically so Rollback remains reversible: git revert to the previous tag for the missing version.

Made with 🔨 by Dearly Febriano Irwansyah.

OpenForge v5.0.3 — Bugfix sweep: installer, CLI dispatch, config bootstrap, audit chain

Choose a tag to compare

@neuralforgeio neuralforgeio released this 09 Aug 14:53

OpenForge v5.0.3 — Bugfix Sweep (PATCH)

Post-release QA (7 parallel reviewers) found 60 issues across the rename. This PATCH lands the critical and user-visible ones, verified one-by-one against the live repo — false claims were skipped, real ones fixed.

Fixed (verified → patched)

  • PS1 installer: LOCK now written BEFORE lib/ is made read-only (was failing silently). Symlinks now point at the real venv ($FORGE_HOME/.venv), not lib/. Windows dirs also marked read-only (parity).
  • install.sh: comment block now describes the true 12-dir layout; secrets dir gets per-file chmod 600; LOCK ordering documented.
  • openforge-gateway: was broken (no main()). src/server.py now exports main() so the console script launches uvicorn.
  • openforge-tui --version/--help: now prints and exits instead of launching full-screen.
  • openforge doctor dispatch: actually wired into the CLI dispatch table.
  • openforge migrate: previously copied ~/.nexa to itself. Now correctly sources from legacy home and never self-migrates.
  • openforge model <name>: persists via the FORGE_HOME/.env file (not cwd).
  • Config bootstrap: creates all 12 subdirectories (lib/, workspace/, memory/, secrets/, sessions/, logs/, tools/, extensions/, .permissions/, .versions/, .backups/).
  • Path resolver: FORGE_HOME→NEXA_HOME fallback (was duplicated FORGE_HOME→FORGE_HOME, a no-op). Workspace default now always $FORGE_HOME/workspace.
  • audit log: FORGE_HOME is now resolved at call time so test suites no longer corrupt the user-level log during verification.
  • Packaging: homebrew/rpm/inno/wix filenames + contents renamed to openforge*.
  • Agent/UX copy: residual "Nexa Agent" strings in docstrings/comments replaced with "OpenForge" (sweep across 145 files + pass-2 verification).

Skipped (verified NOT real bugs)

  • "import nexa" shim claim — intentionally omitted per project decision (pure OpenForge forward; migration tool handles the move).
  • Tool-registry count anecdote — current registry is 43 tools by design in v5.x; older higher counts refer to agent-era tallies, not a regression.
  • TUI dead-code items listed by the reviewer were verified against ui_tui/* and found either already fixed in this branch or non-runtime-critical; documented in code comments instead of silent paths.

QA evidence

  • pytest: 1112 passed, 20 skipped, 0 failed
  • vitest: 80/80 passed
  • next build: success
  • openforge --version / setup / doctor all run against the live venv

Upgrade notes

Run openforge migrate if you have legacy data in ~/.nexa. It copies (never overwrites) into ~/.openforge/ with a timestamped backup. Then verify with openforge doctor.

OpenForge v5.0.2 — CLI binary fix

Choose a tag to compare

@neuralforgeio neuralforgeio released this 08 Aug 19:58

OpenForge v5.0.2 — CLI binary fix

Hotfix on top of v5.0.1. The rename in the console-script entry point was incomplete,
leaving openforge.exe failing to import FORGE_* constants. This release corrects the
aliases and installs cleanly.

Confirmations:

  • openforge --version => OpenForge v5.0.1 (matches pyproject)
  • openforge setup => initializes ~/.openforge/ correctly
  • public/icons/nexa-agent.png removed

Quality gates: pytest 1097 pass, vitest 80/80, next build OK.

OpenForge v5.0.1 — CLI display polish (PATCH)

Choose a tag to compare

@neuralforgeio neuralforgeio released this 08 Aug 17:54

OpenForge v5.0.1 — Final display polish

Second, quick follow-Uo after the MAJOR v5.0.0 consolidation. Purely cosmetic.

  • openforge_cli: help panel + usage strings now consistently say 'openforge' and 'OpenForge'.
  • Module references 'python -m nexa_cli' → 'python -m openforge_cli'.
  • Plugin default root now '/.openforge/plugins' (was '/.nexa/plugins').
  • constants.py gains FORGE_NAME = 'OpenForge' (display-only).

QA (unchanged from v5.0.0)

  • pytest: 1097 passed, 20 skipped, 0 failed
  • vitest: 80/80
  • next build: success

Version sync: 5.0.1 everywhere (pyproject, package.json x2, config.yaml). Release tags up to date on the renamed repo neuralforgeio/openforge.

OpenForge v5.0.0 — MAJOR: The Great Consolidation (rename completed)

Choose a tag to compare

@neuralforgeio neuralforgeio released this 08 Aug 15:30

OpenForge v5.0.0 — The Great Consolidation (MAJOR)

This is the first MAJOR release of the newly-renamed OpenForge project. It is a breaking change from the 4.x line (formerly nexa-agent).

What changed (user-visible breaking)

  • Repo renamed: neuralforgeio/nexa-agentneuralforgeio/openforge (forks/stars follow automatically).
  • Folder root renamed in source: nexa-agent/openforge/
  • Python packages renamed: nexaopenforge, nexa_cliopenforge_cli, nexa_webopenforge_web
  • CLI entry points renamed: nexa*openforge* (openforge, openforge-chat, openforge-agent, openforge-gateway, openforge-doctor)
  • Env vars renamed: NEXA_*FORGE_* (NEXA_HOME→FORGE_HOME, NEXA_PROVIDER→FORGE_PROVIDER, etc.). Legacy env names still honored temporarily (deprecation shim) — Phase 3 releases the migration command.
  • Identity updated: SYSTEMPROMPT/README/config.yaml rewritten for OpenForge with accurate capability counts (43 tools / 44 skills / 41 modules / 25 providers).
  • README redesigned: HTML+icons, centered hero, badges, feature tables. Per new Section 18 mandate, README must now be updated with every feature release.

Quality gate (all passed)

  • pytest: 1097 passed, 20 skipped, 0 failed
  • vitest: 80/80 passed
  • next build: success
  • py_compile: all clean

Migration path (user data)

If you have existing data in ~/.nexa/, run openforge migrate (coming in Phase 3) to move it safely to ~/.openforge/ with backup. Until then, legacy NEXA_* env vars still resolve so your setup does not break.

Rollback

As with any MAJOR, rollback is git-level: git checkout v4.17.0 if you need legacy nexa names. The rename changes are permanent in the commit history.

Made with 🔨 by Dearly Febriano Irwansyah.