Skip to content

v1.12.5

Choose a tag to compare

@juicycleff juicycleff released this 10 Oct 16:32
· 317 commits to main since this release

Forge Framework v1.12.5 (2026-10-10T16:25:19Z)

Welcome to this new release of Forge Framework!

Changelog

New Features

Bug Fixes

  • b631e1f: fix(app): stop sending unknown environments to a noop logger (@juicycleff)
  • 725c407: fix(ci): reconcile release-please with the repository's real tags (@juicycleff)
  • 88bb6f1: fix(cli): add PluginErrorBoundary and dashboard-runtime to dashboard scaffold (@juicycleff)
  • e47a6b8: fix(cli): anchor the boundary discriminator to structure, tidy dashboard plugin docs (@juicycleff)
  • 85ade4d: fix(cli): correct the Next dashboard scaffold's contractBase (@juicycleff)
  • 8c46330: fix(cli): let dry-run adopt survive a missing grove migration table (@juicycleff)
  • f2da883: fix(cli): load ForgeDashboard through next/dynamic in the Next scaffold (@juicycleff)
  • b8d3aac: fix(cli): make forge db adopt work on real bun tables and reachable after an upgrade (@juicycleff)
  • 7ec368f: fix(cli): never overwrite existing files when scaffolding a Next dashboard (@juicycleff)
  • 791e7df: fix(cli): pin the generated runner's grove version and normalize DSN scheme case (@juicycleff)
  • d056e41: fix(cli): port forge generate to grove (@juicycleff)
  • 4d43319: fix(cli): scope adopt's applied-check by group and stop losing partial reads (@juicycleff)
  • 0cd3f15: fix(cli): thread the resolved DSN into the grove runner and let db init scaffold before it needs a database (@juicycleff)
  • df13a23: fix(client): only a components reference resolves by its trailing segment (@juicycleff)
  • 0504ba9: fix(client): read a duplex channel's directions from the operations that speak them (@juicycleff)
  • 951b9c6: fix(client): resolve component message refs before speaking a whole channel (@juicycleff)
  • 995ebf4: fix(client-core): carry hello/goodbye through a repartition reopen too (@juicycleff)
  • 81697e8: fix(client-core): fall through a name candidate that cannot serve as one (@juicycleff)
  • 624cd1c: fix(client-core): fall through an empty channel_id to channel (@juicycleff)
  • 661ac17: fix(client-core): give LiveBinding.raw the handler type StreamBinder.raw takes (@juicycleff)
  • 2b7b3b1: fix(client-core): let a caller holding cache.live speak on a duplex channel (@juicycleff)
  • 3dd1c01: fix(client-core): send hello once, order onReconnect after greet, guard goodbye-only (@juicycleff)
  • f7f4f6f: fix(client-core): surface a literal channel from the streaming decoder (@juicycleff)
  • c281bc9: fix(client-devtools): apply the panel's design, not just its structure (@juicycleff)
  • e745eae: fix(client-devtools): build the chrome the design actually specifies (@juicycleff)
  • 14045dc: fix(client-devtools): render duplex stream bindings in the streams tab (@juicycleff)
  • fa2dc22: fix(client-devtools): stop table columns collapsing, deprecate the lean view (@juicycleff)
  • 750c2d9: fix(client-react-devtools): type the props in the mount tests (@juicycleff)
  • 75b115f: fix(conduit): allow periodic Redis fsync to confirm durable writes (@juicycleff)
  • d5bbb15: fix(conduit): retry Kafka rejections before append during topic startup (@juicycleff)
  • 4d7f71e: fix(conduit): scope backfill recovery and gate broker fault integration (@juicycleff)
  • 2008152: fix(dashboard): answer 401 when an intent is refused for want of identity (@juicycleff)
  • 785c364: fix(dashboard): attribute contributor status at registration instead of inferring it (@juicycleff)
  • 81e035c: fix(dashboard): bind generic command replay to trusted scope (@juicycleff)
  • 1c088ac: fix(dashboard): clear the graph residue tasks 6+7 review round 1 found (@juicycleff)
  • 921b236: fix(dashboard): consume claims after typed output encoding fails (@juicycleff)
  • 704ae9b: fix(dashboard): correct comments left describing deleted code (@juicycleff)
  • 7d5b296: fix(dashboard): forget contributor status when unregistering through the recording registry (@juicycleff)
  • 4ab3254: fix(dashboard): gate the shell pin behind a sentinel and verify its digest (@juicycleff)
  • 217abff: fix(dashboard): match typed encoding failures by exact identity (@juicycleff)
  • 1f46924: fix(dashboard): preserve contract authorization errors (@juicycleff)
  • 63dd223: fix(dashboard): stop redirecting the core paths into a prefix that no longer exists (@juicycleff)
  • 9d4e5bd: fix(dashboard): sweep the stale shell docs and tighten the static handler (@juicycleff)
  • 3ed25d8: fix(deploy): enforce runtime identity and export boundaries (@juicycleff)
  • a78177c: fix(deploy): isolate SQL settings and protect workbench edits (@juicycleff)
  • 58f7a12: fix(deploy): preserve Kubernetes lifecycle safety (@juicycleff)
  • 32a59e0: fix(deploy): preserve active workloads and reject stale approvals (@juicycleff)
  • e0c7221: fix(deploy): preserve managed export endpoints and secret scope (@juicycleff)
  • a2b2fc4: fix(deps): move the last three modules onto forge v1.11.0 (@juicycleff)
  • 3d0a6e6: fix(deps): move the last three modules onto forge v1.11.0 (@juicycleff)
  • e4c057c: fix(deps): replace go-utils with local path in 27 sibling modules (@juicycleff)
  • 32559d4: fix(events): declare durability and preserve subscription removal (@juicycleff)
  • 3e5fdf5: fix(events): recover durable delivery and drain shutdown safely (@juicycleff)
  • fd078e5: fix(queue): escape AMQP credentials and keep passwords out of logs (@juicycleff)
  • b3bbf6d: fix(queue): merge credential escaping and log redaction (@juicycleff)
  • 192a6f0: fix(release): keep module checks portable and warm canonical Go versions (@juicycleff)
  • 00d4c81: fix(scheduler): merge cancellation handling for dispatched jobs (@juicycleff)
  • 3023af8: fix(scheduler): stop a cancelled job that was already dispatched (@juicycleff)
  • bd5fea5: fix(streaming): keep lifecycle names out of the domain-event slot (@juicycleff)
  • ce20853: fix(streaming): merge lifecycle frame follow-ups (@juicycleff)
  • f301ade: fix(workbench): replace theme dropdown with an icon button (@juicycleff)

Refactoring

  • a23e3ea: refactor(cli): drop the database extension connection code (@juicycleff)
  • 0ae5bf5: refactor(cli): remove the last uptrace/bun dependency from database.go (@juicycleff)
  • af5eb8c: refactor(dashboard): delete the graph model, slot merging and the component vocabulary (@juicycleff)
  • 6925566: refactor(dashboard): delete the server-driven React shell and its 11MB embed (@juicycleff)
  • 6d2f7a2: refactor(dashboard): remove the graph kind from the contract transport (@juicycleff)
  • 04ab115: refactor(dashboard): trim the pilot contributor to data intents only (@juicycleff)
  • cd56e91: refactor(extensions)!: remove the database extension (@juicycleff)
  • b3728bd: refactor(logger): drop the zap-coupled re-exports from internal/logger (@juicycleff)
  • efef3ea: refactor(streaming): drop the server-rendered dashboard (@juicycleff)

Documentation Updates

Build System

  • ff541d5: build(clients): clear the client packages' Dependabot alerts (@juicycleff)
  • 142a338: build(conduit): add module publishing and pinned library releases (@juicycleff)
  • c9b5e71: build(conduit): prepare the first published module release (@juicycleff)
  • d20f6cb: build(deps): catch streaming, webrtc and webtransport up with auth (@juicycleff)
  • 48f1ac3: build(deps): tidy cmd/forge, discovery, auth and conduit (@juicycleff)
  • b0744b5: build(docs): clear the docs Dependabot alerts and take next 16.3.8 (@juicycleff)
  • 8524f73: build(vscode): clear the extension's Dependabot alerts and move packaging to vsce 4 and ovsx 1.2 (@juicycleff)
  • ec6601f: build: take amqp091-go v1.15.0 and OpenTelemetry v1.45.0, and tidy the modules that follow (@juicycleff)

Other Changes

Installation

Using Go Install

go install github.com/xraph/forge/cmd/forge@v1.12.5

Download Binary

Download the appropriate binary for your platform from the assets below.

Using Package Managers

# Homebrew (macOS/Linux)
brew install xraph/tap/forge

# Scoop (Windows)
scoop bucket add xraph https://github.com/xraph/scoop-bucket
scoop install forge

What's Changed

Full changelog: v1.12.4...v1.12.5