Skip to content

v0.3.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 09:10
· 421 commits to main since this release

A release built from a full audit of the 0.3.2 candidate (e19e1b9e, 0.3.1 plus the work merged after it): all 134 scenarios against their screens and code,
plus the trust boundaries (report). Every P0 and P1
finding is fixed or carried to a named row. It also ships the work that landed on main after 0.3.1.

  • Schema 78 → 79 (migration 20261005000081_project_board.sql, the project board's core). Fabric 0.3.2
    does not migrate an existing database itself: it refuses a database below schema 79 and names the upgrade
    procedure (release runbook, upgrading an existing database).
    Once a database is migrated to 79, Fabric 0.3.1 can no longer open it, so take the backup the procedure
    asks for first. The rehearsal is one command: node scripts/rehearse-upgrade.mjs runs the upgrade on a copy
    of your dump in a separate, disposable stack.
  • Usage counts, on by default in a release build, from the first start. Fabric sends installs, days of use
    and how many projects, products and agents are connected, to PassionCode's self-hosted analytics. Every event
    carries the app version, the OS name, a session id and a random installation id that every PassionCode app on
    this Mac shares; never names, paths or content. Settings → Share usage counts turns it off for every
    PassionCode app on the Mac (docs/ANALYTICS.md). Builds from source send nothing.
  • The project board. Agents that connect to Fabric's surface (Claude Code, Kilo, Hermes) get the project-board tools (com.submit, com.list,
    com.get, com.read_ack, com.status): durable, project-addressed messages that survive the session
    (ADR-0117).
  • More coding agents in the launch menu: Kilo Code, Hermes Agent and Cline. Hermes runs over the Agent Client
    Protocol through Fabric's terminal shell; Kilo through its session-config variable
    (ADR-0119).
  • The editor never damages a file it cannot show as text. Binary and non-UTF-8 files open read-only and
    are never written back; a save no longer rebuilds the editor, so typing during a save is kept; "Keep mine"
    overwrites only the version you were shown; a conflict puts the focus on its explanation, not on the
    destructive button.
  • Agents run through ACP behave. A turn has no two-minute deadline; a line typed ahead never answers a
    permission question, and Ctrl-C during one answers it as cancelled; stopping an agent ends its whole process
    group, including the tools it started, even when Fabric has to force the stop; Kilo and Hermes do not start
    in a mode their bundle cannot honour; one failed request no longer closes the stdio bridge.
  • Your project's servers go with Fabric's surface to every agent that connects to it. Hermes, which takes no HTTP MCP servers,
    reaches each granted server through its own stdio bridge; a session whose granted servers cannot be carried
    is not opened.
  • Cline asks before each tool. It now starts in Ask (--auto-approve false); Bypass is the only mode in
    which it approves tools on its own.
  • Keys stay out of transcripts in more spellings: Kilo's config, ACP header pairs, the bridge's
    FABRIC_BRIDGE_AUTHORIZATION, escaped JSON and Python dicts (ADR-0119, amendment 4).
  • Not yet: restoring a private-history archive into a new estate does not bring back project-board messages
    (CO-212); the archive keeps the board's events, not its stored messages.
  • Attention, Board, digest and history read true. A granted refusal leaves the queue and repeats are one
    item; an answered question keeps its receipt on the Board screen (the project page's panel does not yet, CO-222); the digest no longer marks lines read while you read
    them and is no longer cut at 1000 rows; an agent's history shows its newest 200 events and says when earlier
    ones may exist.
  • Windows hold only Fabric. A window can show only Fabric's own page, links leave for your browser, the
    built page carries a Content-Security-Policy, and the bridge refuses any other caller. A failure in a window
    is sent to Diagnostics; a broken screen shows a recovery screen, and a window whose page process died is
    reloaded instead of staying blank.
  • Fabric tells you when your local database is reachable from the network. The Supabase CLI publishes the
    stack's ports on every interface with its default password, and Fabric cannot bind them to this Mac alone.
    Fabric checks after start and again while it is open, at most about ten minutes apart (and retries a check
    that failed); if the ports answer on your network address, a warning above every screen gives the remedy for
    OrbStack or Docker Desktop.

Verify

gpg --verify SHA256SUMS.asc SHA256SUMS      # key 63B30DC324BD697487AA31944FAFB8AEC803B6A7
shasum -a 256 -c SHA256SUMS --ignore-missing
gh attestation verify <file> --owner passioncode-ai --signer-repo passioncode-ai/.github

The organization's public key: https://github.com/passioncode-ai/.github/blob/main/release-signing/passioncode-release-signing.asc