Repository navigation
v0.3.2
Pre-release
Pre-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.mjsruns 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/.githubThe organization's public key: https://github.com/passioncode-ai/.github/blob/main/release-signing/passioncode-release-signing.asc