Skip to content

Releases: passioncode-ai/fabric

v0.3.8

v0.3.8 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Oct 08:22

The patch of the operator's audit of the installed 0.3.7 (2026-10-21): other products can now get the access that
fabric.project.resolve needs, the log says what happened, the startup failure names a full disk, and a coding agent
in a folder that is too broad stops asking every half minute. No schema change: 0.3.8 admits schema 94, as 0.3.7 did.

  • A full disk is named when the local stack will not start. When the volume that holds Fabric's data has under
    3 GB free (decimal), the startup failure says first how much is free and that Docker stops when the disk runs out (in
    each system's own words), and the copied details and startup-failure.log carry the same number. On macOS the figure
    leaves out space the system could purge, so Finder may show more. The stack's own words only ever named a missing Docker socket.
  • Other products can ask Fabric which project a folder belongs to. 0.3.7 shipped fabric.project.resolve, but a
    product had no way to get the access it needs: fabric.access.request refused every ask of Fabric itself but
    session.enroll and board.respond (Observatory's live check, 2026-10-21). Fabric now admits project.resolve on the
    resource projects, read-only, at once on the operator's own machine, for a registered service or a coding agent it
    knows (never for one the person disconnected). Settings → Agent access says it in words, and revoking it ends it:
    fabric.project.resolve now answers only while that grant, or a coding agent's enrollment, is live.
  • A coding agent in a folder that is too broad stops asking every half minute. While Fabric refuses the folder as
    too broad (the home folder, a folder right under it, one that holds other projects), fabric-mcp waits twice as long
    each time, up to 10 minutes; a repeated failure waits up to a minute, and a 503 that names Retry-After is waited out.
    Every refusal the person can lift in Fabric keeps its wait (a detached folder 30 s, a denial 60 s), and the agent's
    own fabric_whoami still asks at once. A Hermes in the home folder had asked every 30 s for three days. A coding
    agent already running keeps its old fabric-mcp until it is restarted.
  • The log says why a tool turned a call down. A tool's typed refusal (needs-grant, no-session and the like) is
    recorded at warn with its code, not as an error with no reason (CO-335); a product's or Fabric's own failure stays
    an error, and a call that may have run is unknown; an accepted MCP notification is no longer a
    warning (336 in 49 minutes of the 0.3.7 log).
  • Docker on Windows is waited for in its bare pipe form too (//./pipe/docker_engine).
  • What 0.3.7 said would come in 0.3.8 comes in 0.3.9: the agents' own acts in История and Fabric's own enrollment on
    the shared attribution rules (CO-339). 0.3.8 is this patch; История now says «in a later version».

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

v0.3.7

v0.3.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Oct 00:05
  • Fabric starts when you log in (macOS and Windows). It starts without a window, so agents and the board keep
    running; turn it off in Settings → «Компьютер». Settings shows the row only where Fabric registers a login item (not
    on Linux or in a development build) and says when the system itself does not start Fabric (turned off in Login Items
    or Startup apps, or waiting for your approval).
  • An agent's history reads as what it did. In Агенты the picked agent's history is newest first and in words (a
    task it moved, a decision it recorded, its stage), with who did it, and it now includes what the agent wrote itself.
  • Other products can ask Fabric which project a folder belongs to. Fabric's hub answers fabric.project.resolve
    with the shared rules all three products agreed on (DEC-0089), so Observatory and Switchboard attribute a folder by
    the same rules. When Git cannot be read in time the answer is pending with git-unreadable (DEC-0092), never a guess; a
    relative path is refused and one call is bounded at 8 s.
    Fabric's own enrollment of agents moves onto the same rules in 0.3.8 (CO-339).
  • A task is no longer stuck after its agent ended. When an agent's process has ended but Fabric cannot prove its
    provider stopped, the console offers «Работа закончена»: the task goes back to the queue and can be taken again, and
    «Отменить» on the act line holds it again and puts the console back, so it offers «Работа закончена» again.
    After the press the console says «Вы отметили: работа закончена», not that Fabric confirmed the stop (ADR-0170).
  • A console is your own setup. Claude Code in a Fabric console now has your MCP servers (Observatory, your plugins)
    beside Fabric's, and Codex runs with your own AGENTS.md, plugins, trust and sign-in instead of an empty copy,
    without copying your sign-in. A console also finds the same programs your terminal does. An agent you create in a
    project, and a console in a project that declares MCP servers of its own, still see only the servers they declare and
    run Codex in their own home with a copy of the sign-in (ADR-0169).
  • Every coding agent starts as a console, with fewer prompts by default. A project's console can now start any
    coding agent of the catalogue this computer has (Gemini CLI, OpenCode, Goose, Cursor, Pi, OpenClaw and the rest),
    not only the five Fabric connects to its surface. Settings has «Разрешения агентов»: «Меньше подтверждений», chosen by default,
    or «Проверять вручную», one choice for every agent, and each agent's row shows how it starts. OpenCode's own
    fabric-mcp registration is accepted (ADR-0168).
  • Fewer generated-looking touches. Thick coloured side stripes on notices and selected rows became a thin
    outline, and buttons and links no longer end in an arrow («Продолжить», not «Продолжить →»).
  • A quieter top bar and a denser rail. The top bar holds the place's name and the open consoles, nothing else:
    search is ⌘K, the profile block and the conversation button are gone, and a line about this computer appears at the
    foot of the rail only when something needs a look. Projects take less room on the rail (OF-04, OF-05).
  • Consoles open inside Fabric, as tabs along the top. «Консоль» no longer opens a separate window: the console
    fills the main area, and each open console is a tab in the top bar with its project's name and its coding agent, so
    you see which are open and switch with one press. Closing a tab never stops the session. «Открыть в отдельном окне»
    on the console still gives it a window of its own.
  • A console whose agent has ended says so. It said «Остановка не подтверждена» and offered to force a stop of a
    process that was already gone; now it says «Сессия завершилась» with the exit code.
  • «Where you stopped» stays where you stopped. It used to jump to whichever project an agent last touched; now it
    is the project of your own last act, and it still counts what happened there since.
  • Claude Code no longer asks «Do you trust this folder?» in Fabric's consoles. When Fabric starts Claude Code in a
    project's folder, it marks the folder trusted first, as Orca does. Folders already trusted stay trusted.
  • A console no longer closes itself when it opens. Opening a coding agent's console again sent the terminal's own
    answers into the agent, and Claude Code read them as «Esc» on its «Do you trust this folder?» question and quit.
  • Many coding agents at once no longer push each other out. With dozens of Claude Code sessions open in
    different projects, they took turns disconnecting one another and then waited on Fabric's rate limit. The limit of
    eight sessions now counts one project, and each session gets its own share of calls; one coding agent still holds
    at most 64 sessions across all projects, and past that the oldest is ended.
  • One rail, five places (SCN-162). The left of the window holds «+ Создать», Главная, Агенты, История and
    Настройки, then your projects: favourites first, then by latest activity, a green dot where an agent works and a
    count where something waits for you. The tab strip, the Back button, the per-project links and the bar above each
    screen are gone; ⌘[ goes back and ⌘] forward; ⌘K opens search. Board, Plan, Messages between projects, account
    limits, Help and Fabric's name and look are reached from where they belong (Главная, the project page, Настройки).
  • «Создать» opens in the window with three choices: open a projects folder, create a project, create an agent.
    Drafts you left unfinished are listed there to go on with.
  • История lists every act you take, newest first by day, with «Отменить» where it can be taken back
    and the reason where it cannot. After an act, one quiet line at the foot of the place says what was done, with
    «Отменить».
  • No more «are you sure?» (ADR-0160). Stop, force stop, releasing a task, removing a folder, discarding a draft and
    replacing your words with a shortcut happen at once and can be undone. A link opened while the first run was on
    screen opens what it links to. An agent's request to use a product, the usage-count question and the warning that
    the local database is reachable from your network are questions on Главная, never a pop-up or a banner.
  • «Отключить» for a coding agent that joined on its own (SCN-167). Агенты shows each coding agent that joined
    from a terminal, with the fact that Fabric cannot prove which program it is. «Отключить» revokes its access, ends
    its consoles and keeps it out of every project until you press «Пустить снова»; either can be undone.
  • Docker no longer brings back services Fabric does not use. Containers an older full start had left (the
    database studio, its logs, mail and file storage) started again with every Docker or OrbStack restart and took about
    1.4 GB of memory. Fabric now removes them when it starts its local database; the data stays.
  • An agent started deep inside a repository adds the repository, not the folder it started in, and removing one
    copy of a repository from a project no longer keeps every other copy of it out. This is the first step of one
    shared answer to "which project is this folder" across Fabric, Switchboard and Project Observatory (ADR-0166).
  • Any folder an agent starts in becomes a project by itself, not only a Git repository: a plain folder is added
    the same way, with the agent named in the operations log; the add is listed in История with the agents' own acts in 0.3.8. Only a container is skipped (the
    disk root, the home folder, a folder right under it such as Documents, or a folder that already holds projects).
  • Every act can be taken back (ADR-0160, SCN-168, SCN-169). Moving a task, releasing
    a claim, removing or adding a folder, renaming a project, answering a question, stopping a console and discarding a
    draft are each recorded with who did it and how to undo it: a task moves back, a claim is taken again, a folder
    is attached again, the old name returns, a question is opened again, a console starts again where it stood, a
    draft is restored. An undo is itself recorded and can be undone. What cannot be taken back says why: a task
    closed, a release published, an agent's key revoked.
  • An answered question can be reopened. The question is open again, what it blocks is blocked again, and a new
    answer is a new decision; agents no longer read the withdrawn answer as a current decision.
  • A task held by an unfinished run says so (CO-323): fabric_work_claim and fabric_task_claim no longer refuse a
    task whose launched session exited with «another agent claimed it in the same moment»; they name the run that holds it,
    its session, since and until when, and that its stop is not proved; fabric_work_list lists that task as held,
    not open. An expired claim of a session that is gone is taken over by the next claim, as before.
  • A coding agent opened in an unknown folder gets its project automatically through Fabric's enrollment: exact,
    ancestor, worktree and remote identity attach to the existing project, an otherwise unknown repository or plain
    folder is created once, and session.enroll is allowed at once on the operator's own machine. Containers (the disk
    root, the home folder, a folder right under it, a folder that holds projects) and ambiguity are refused; detached or
    archived projects are not brought back. Every create, attach and access decision is recorded and revocable
    (ADR-0136, ADR-0160).
  • Usage counts go to PassionCode's own analytics host (analytics.passioncode.ai, docs/ANALYTICS.md),
    no longer to the operator's personal instance; what is counted, and the switch that stops it, are unchanged.
  • **Fabric wai...
Read more

v0.3.6

v0.3.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:54

The home says who is doing what across every project, in plain words; a project's page says where it came from,
where it is and where it goes; Settings becomes a screen with the coding agents on this computer; and projects answer
each other's requests on the project board, which Comms now lets you read at any size.

  • The home says who is doing what (SCR-30, SCN-158). Four counts at the top — agents working now, tasks in work,
    what needs you, what waits for review — each opening where it is counted. Beside "Needs you" («Нужно вам»), "Who
    is doing what"
    («Кто что делает») lists the tasks in work and in review across projects, each as a plain summary
    (the task brief's «what», else its title, never its instruction) with its project, agent, how long and the agent's
    current stage. "Agents at work" («Агенты в работе») shows every working session with what the agent says it is
    doing, in its own words; a session gone silent is marked "silent" («молчит»); a click opens the agent's console when
    Fabric holds one, else its project. The reading refreshes every 15 seconds and when the journal moves; a failed
    reading says so, keeps the last one on screen and shows the counts as «—». A claim whose agent stopped signing for
    it stays in work marked "nobody signing" («никто не отмечается»); a capped count is a floor («50+»), and a lane past six rows offers
    "{count} more" («Ещё N») on the Board. The rail's «Настроить агентов» is now «Агенты».
  • Projects on the home: favourites in your order, then by latest activity (SCN-043, amended), each card with
    "Now: …" («Сейчас: …», what its agent is doing) or "Quiet for …" («Тихо уже …»). Projects that are not favourites lost their manual ↑ ↓ order:
    an order saved for them before is no longer used; favourites keep theirs.
  • A project's page says where it came from, where it is and where it goes (SCR-31, SCN-159): the heading says what
    its agent is doing now; "Where we came from and where we go" («Откуда пришли и куда идём») shows recently done → in
    work and in review (with each agent's stage) → the goal and the queue in board order; then "Questions for you" («Вопросы ко мне»), the
    board at a glance (four columns with their counts and first cards; "Done 20+" («Готово 20+») when only the newest twenty were
    read) and "Agents on this project" («Агенты на проекте»), each opening its console. A project with no tasks shows its first step instead of an
    empty way.
  • Settings is a screen (SCR-52, SCN-160), no longer a band over another page; the page you came from stays as it
    was underneath. It groups the coding agents on this computer (each with its version and path, not answering, or
    not installed with the vendor's install command), the launch fallback order, sleep ("Keep the computer awake", «Не давать компьютеру засыпать»,
    with what the OS will not do), theme and language, and Data and access: usage counts, private history and restore,
    and Agent access. When Switchboard 0.6.31 or later publishes its catalogue (switchboard --json agents status), its
    default and switched-off agents are marked and agents only Switchboard knows are added; Fabric reads that catalogue
    and never writes it, and an older or absent Switchboard is said.
  • Fixed: Claude Code sessions could not ask another project anything (CO-292). In 0.3.5 the board tools published
    no argument types, so Claude Code sent nested arguments as strings and com.submit, and com.list with a limit,
    were refused invalid_arguments. Each board tool now publishes the shape its handler accepts; the board still
    validates every call itself.
  • Fabric waits for a stack that is still starting instead of refusing to open: right after Docker (OrbStack)
    comes back, «container is not ready: starting» and «supabase start is already running» are waited out and retried
    (up to four tries, ten seconds apart, said on the splash in English, like the whole splash — CO-306); any other
    refusal, Docker unreachable among them, is shown at once, as before. Each try keeps its own four-minute start
    deadline, so a stack that never becomes ready can hold the splash for about 16 minutes before the refusal (CO-311).
  • The folder question on the home screen names what a folder will not bring back in your words — goals, tasks,
    questions and routines — instead of an English sentence with table ids in it (seen in Russian on the 0.3.5 first run).

How sessions start

  • A coding agent that connects to Fabric is not started while Fabric's agent surface is down. In 0.3.5 only Kilo
    Code, Hermes Agent, Codex and Kimi Code were refused; Claude Code started unconnected — without its board tools,
    permissions and briefing, while appearing connected in the journal. Now every connected agent, Claude Code included,
    is refused before it starts, with " was not started: Fabric's agent surface is not running, and this agent's
    permissions and connection are given with it. Start the session again once the surface is up (Settings → Agent
    access)." A launch through the fallback order moves on to the next agent.
  • Fixed: Kimi Code's Plan, Ask and Bypass modes are applied. 0.3.5 passed --plan / --auto, which Kimi Code
    accepts and ignores (its session still started in default), so a Plan session ran with Kimi's ordinary approvals.
    The mode is now set on the session itself (ACP session/set_mode: plan, default, yolo).
  • A task's own words are always delivered whole; memory that does not fit the session's context budget is left out,
    and the session is told what was left out. The budget now counts everything the pack writes (its head, separators
    and the omission note) when it selects memory; a task, brief and project identity larger than the budget are
    delivered whole and nothing is selected from memory. (Between 0.3.5 and this release a revision 4 that never
    shipped refused such a task; 0.3.5 itself, at revision 3, never refused one.) The context compiler is at revision 5, so a
    pack recorded by 0.3.5 names revision 3 and one compiled now names 5.
  • Agents are asked for plain-language stages. Fabric's tool descriptions and its rules ask an agent to report its
    stage, write a task's brief and title a task as one plain sentence the project's owner understands, in their
    language — that is what the home and the project page show. The rules' hash changes with them, so each session's
    session.oriented@1 names the rules it got.
  • The resource admission and worker pools of the harness wave
    (ADR-0152,
    ADR-0154) ship inactive: no launch in this
    release waits on them.

Comms and the project board

  • Comms reads a long board a page at a time (wave 4, ADR-0156 §8):
    threads newest activity first, 50 a page, with "Show older threads"; the filters — project, kind, coding agent, open
    request, activity — are answered by Comms itself, so they work on a board too large to hold, and a filter Comms did
    not answer keeps the last confirmed list and says so instead of saying nothing matches. The rail's count reads each
    thread's last message only and says "5000+" past its cap.
  • Comms says who answers each request and how it ended (SCN-147): "Responder #n · · since ", a lapsed
    lease ("That says nothing about whether it worked."), or that no agent answers it now and why the last one left;
    the responder's reported outcome and its evidence, or the requester's reason for cancelling; an outcome nobody
    observed reads "may have happened — awaiting reconciliation" with who can settle it. Each message says which projects
    marked it read, and each file a message names shows its hash as the sender stated it — only https: links open.
    A request's timeline and the threads related to one (the same projects, or the same file) open on demand.
  • Search what projects told each other (SCN-156), newest first; % and _ are searched as themselves, and a search
    that runs out of time says so. What waits for a project (SCN-157): per project, the messages none of its agents
    has read, the oldest, and the requests nobody answers.
  • Projects answer each other's requests (COM-03, ADR-0149
    Amendment 1): the project board serves all seventeen tools of fabric-project-comms/0.1 at contract DEC-0073 —
    com.reply and com.cancel, com.directory, and the responder tools com.enroll, com.claim, com.renew,
    com.accept, com.progress, com.effect_begin, com.complete, com.reconcile and com.responder_replace. An agent
    answers a project's requests only once the operator allowed it ("Let answer requests for
    ?", Settings → Agent access); every responder call is fenced, so an agent that was replaced cannot record a
    late result. A session's end releases what it held. A service agent joins a project's board with fabric.board.join.
  • The responder consent says what the grant does not change: "This grant itself lets it spend, publish or delete
    nothing; it still has its own tools, and a request is never an approval." In Russian the prompt now says requests
    are sent «проекту «…»», not «в проекте «…»».
  • Requests can be cancelled and expire; replies are threaded (COM-02.3): the requester's Project may cancel a
    request (work that had begun becomes "outcome unknown" — it may have happened — until reconciled), a passed deadline
    expires a queued request (an accepted one is held), and a reply lands in the thread of what it answers. com.reply
    and com.cancel take the arguments contract DEC-0073 fixed, served since F...
Read more

v0.3.5

v0.3.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Oct 12:03

Fabric on Windows and Linux, the way the other PassionCode.ai apps ship (CO-238); a coding agent you open
yourself in a terminal can work in your project through Fabric; and Fabric shows which agent works on what.

  • Fabric opens from a product's Fabric button. A fabric:// link from Fabric Dashboards or any product now opens Fabric in that product's project (found from the product's repository), or says why it could not; before, macOS answered that Fabric was not installed, because Fabric did not register the scheme. A link that starts Fabric is not lost while the window opens, and one that arrives during the first run waits for it to end.
  • A coding agent opened outside Fabric works in your project. Register Fabric once in Claude Code or Codex —
    claude mcp add --scope user fabric -- "<Fabric>/bin/fabric-mcp" --runner claude-code, or
    codex mcp add fabric -- "<Fabric>/bin/fabric-mcp" --runner codex — with no key in it (on Windows:
    claude mcp add --scope user fabric -- cmd /c "<install folder>\resources\bin\fabric-mcp.cmd" --runner claude-code, with the install folder under
    %LOCALAPPDATA%\Programs\; not yet
    tried on a Windows machine). The first
    time the agent starts in a project's folder, Fabric asks you once whether it may work there; after Allow it gets what
    a session Fabric starts gets in that project, and its work is recorded like any session's. Revoke it in
    Settings → Agent access (ADR-0134).
    <Fabric>/bin is Fabric.app/Contents/Resources/bin on macOS and the install folder's resources/bin on Windows
    (fabric-mcp.cmd) and Linux. On Linux register it from the .deb (/opt/Fabric/resources/bin/fabric-mcp): an
    AppImage mounts at a new path each start, so a registration pointing into it breaks on the next start.
  • Who is working on what. A project's page lists each agent's claim on a task — the agent, how it came in, what it
    touches, since when, its last sign of life — marks two claims that overlap as related, and lets you release a claim
    after asking (SCR-31). Where work is (SCR-78, in the rail) shows the same across every project, with the sessions
    that belong to none on the last row. Coding agents claim a task through Fabric before they start and are warned of
    related work (REQ-38).
  • The first run asks which coding agent to use as one choice among the agents Fabric found, and an agent that
    cannot be chosen says why (REQ-40).
  • Fixed: agents registered on this Mac could not be connected through Fabric. Since 0.3.1 the hub's requests,
    decisions and calls were refused by the app's own journal before they were saved, so an agent's request never reached
    you (CO-254). They are recorded now, and a test checks every event the app writes against the journal's policy.
  • The database moves to schema 84 (from 79): five migrations, applied in order. An existing database is upgraded
    by the documented procedure before 0.3.5 opens it.
  • "Running for N days" counts from the day Fabric could first open your Estate, not from an install that failed
    to start (CO-242).
  • The old first owner leaves a repaired Estate. On a database the 0.3.4 repair gave to you, 0.3.5 revokes the old
    seed's second owner at its first start — through the membership door, recorded, never a delete — while that member is
    still the seed's own and nobody signs in as it (CO-242).
  • A database Fabric refuses at start says what to do in your language: the schema it found and the one it needs,
    or that the stack did not answer — the copied details stay in English, for a report.
  • Codex and Kimi Code connect to Fabric's surface. Sessions of both get the project-board tools
    (com.submit, com.list, com.get, com.read_ack, com.status) like Claude Code, Kilo Code and Hermes
    Agent before them — each through the way its own probe verified (report):
    Kimi Code over ACP with HTTP MCP (no bridge), Codex through an isolated per-session CODEX_HOME whose server
    name and token variable are random per session, because a project .codex/config.toml shadows any name it
    knows. So a Codex session Fabric starts does not read your own ~/.codex/config.toml or ~/.codex/AGENTS.md
    (a project's own AGENTS.md still applies); when you are signed in to Codex it uses a copy of that login, removed
    when the session ends, and otherwise Codex asks you to sign in for that session. One residue, recorded as CO-247: Codex 0.162.1 has no --ignore-project-config, so a project can still
    add MCP servers of its own — as it already could before Codex connected. Cline stays unconnected: its ACP
    session/new demands a sign-in no probe has passed.
  • The project board is visible to the operator: the Comms screen (SCR-81, SCN-143). The left rail gains
    Comms / «Переписка»: the estate's threads and messages read with your own eyes — sender, principal and its
    provenance per message, a request's state and effect as two separate labels, live by cursor polling; a board
    that does not answer says so, never an empty list. Read-only by design; the read goes through two new SQL
    functions, sanctioned for the local estate by ADR-0117 (D3).
  • Windows. A per-user installer for Windows on Intel and AMD (x64) and on Arm (arm64): Fabric-0.3.5-windows-x64-setup.exe
    and -arm64-setup.exe, Authenticode-signed through Azure Artifact Signing. Terminals
    open PowerShell; the local stack needs Docker Desktop (WSL2) and the Supabase CLI (scoop install supabase).
  • Linux. An AppImage and a .deb for x64 and arm64. The local stack needs Docker Engine and the Supabase CLI. Install
    the .deb to open fabric:// links and to register fabric-mcp: it registers the scheme and keeps one path.
  • Not yet on Windows and Linux: whether a coding agent is signed in is not read there (it says so, CO-244).
    Not yet on Windows: connecting a cloud product's secret through Project Observatory (CO-245); Agent access says
    so when you press Connect, before the product is opened.
  • Windows and Linux are offered on GitHub Releases; the
    download page on passioncode.ai offers the Mac build until its own change.
  • Usage counts (only after you answer the switch): agents_with_access counts agents with access to a connected
    product, and coding agents enrolled in projects are counted apart as coding_agents_enrolled
    (docs/ANALYTICS.md).

Upgrading. A database at schema 79 (0.3.2 to 0.3.4) is upgraded to 84 before 0.3.5 opens it: install 0.3.5 and
start it once (it refuses, and copies its migrations into Fabric's stack folder), quit it, make a verified backup,
rehearse on a copy, then run supabase migration up --local in that folder and start 0.3.5 again
(release runbook).
Until then 0.3.5 refuses to start its workspace services and says which schema it found. An older database (69, 75,
78) takes the same procedure; supabase migration up applies every missing migration in order.

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

v0.3.4

v0.3.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 17:28

Fabric starts on a new Mac, and one download now serves Apple silicon and Intel Macs. Every fresh install since 0.2.0
stopped before its first window with "identity could not be established: that person is not a member of this
estate": the database Fabric sets up on first start gave its first Estate to an owner Fabric never runs as
(ADR-0131).

Fixed

  • A new install opens its Estate. The database is set up with you as the owner of its first Estate, the same
    way Fabric itself founds one.
  • An install of 0.3.2 or 0.3.3 that could not start, starts. On the next start Fabric finds the database
    untouched and makes you its owner. Untouched means nothing happened in it but its creation, and at most an
    agent asking for access while the start was failing. A database anyone has used is never changed this way.
    The old first owner stays a member in the database beside you; nobody signs in as it, and no screen shows it.
  • When Fabric still cannot open the Estate, it says why. The startup window names the refusal and what Fabric
    found, instead of "could not work out why".

Changed

  • One universal DMG for Apple silicon and Intel Macs (Fabric-0.3.4-universal.dmg, in place of -arm64.dmg).
    Its Intel runtime was measured under Rosetta on an Apple silicon Mac
    (receipt); the app has not yet been run on an
    Intel Mac. How the universal app is built: release runbook, Universal macOS.

Upgrading. No schema change: a database at schema 79 (0.3.2, 0.3.3) opens as it is. A database a 0.3.0 or 0.3.1
install made (75 or 78), or a 0.2.0 one (69), is refused for its schema first: upgrade it to 79, backup and
rehearsal included, and the next start repairs it. If Fabric never opened a window on that Mac, the database holds
nothing, and the runbook names the shorter way
(release runbook).

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

v0.3.3

v0.3.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Oct 22:20

Fabric becomes the way into PassionCode.ai: the first screen offers four actions, and the work behind the two agent
actions happens in the console of a coding agent you already use, not in a chat of Fabric's own
(ADR-0129,
ADR-0123). The CEO chat itself
stays in this release; it moves to a session in a later one (amendment 1 of ADR-0123).

Upgrading. No schema change: a database at schema 79 (0.3.2) opens as it is. A database still at 75 (0.3.0)
or 78 (0.3.1) needs the upgrade to 79 first, backup and rehearsal included
(release runbook).

  • Four actions to start. The first run and + Project offer two pairs. Agent: create a new one, or adapt
    one you built elsewhere. Project: open one (one folder, or a folder of them), or create one. The role agent of
    a project is made from that project's Team.
  • Create an agent. A name, one sentence on what it will do, where its folder goes and which coding agent
    builds it. Fabric creates the folder as a git repository and a project for it, then opens the coding agent's
    console with the creating-fabric-agents skill; the agent asks the rest there, one question at a time.
  • Adapt an existing agent. Choose its folder: Fabric reads it without running anything and opens the coding
    agent's console with the adapting-projects-to-fabric skill. The agent shows its plan and waits for your yes;
    a folder that is not yet a repository is committed as it is first, with anything that looks like a secret kept
    out; the work goes on a new branch fabric-adapter, and the conformance report says what passed. Fabric writes
    nothing in the folder and does not admit the agent to its registry.
  • The Fabric Agent Adapter skills are checked before either starts, with the version: for Claude Code, Codex,
    Kilo and Hermes in the folder each reads; for Cline and Kimi Code, which have no folder Fabric knows, only the
    shared ~/.agents/skills, and the screen says so. When they are missing, the one command that installs them is
    shown to copy, with a note when it does not cover the chosen agent. Fabric installs nothing itself.
  • A retry is the same attempt. A launch that fails after the folder or the project was made continues with
    the same folder, project and task, also after leaving the screen and coming back; a console that did not open
    is brought forward again; Use another coding agent gives the same project a new task, and Start over is the
    only way to another name or place.
  • A scanned project arrives with what its repository says it is (the manifest's description, else the
    README's first paragraph), kept as the repository's words — "From README.md: …" — not as yours; a repository that
    says nothing gets none.
  • "Set up this project with the agent", the first shortcut on a project's task panel and the scan's next
    step: the agent reads the repository, records what it learns with the file each fact came from, asks you to
    confirm a one-sentence purpose and files the next three pieces of work. It changes no file, and it runs only on a
    coding agent that connects to Fabric's tools: by name, through a created agent, or through the fallback order,
    which passes over agents that do not.
  • Fallback order (Settings): a list of coding agents a launch may walk, each with whether to start a new
    session or use an open one; once set, «Fallback order → agent» is offered in the agents and task panels (ADR-0125).
  • Kimi Code is in the coding-agent list and the launch menu, launched as itself; it does not connect to
    Fabric's tools.
  • Usage counts wait for your answer. They stay on by default, but a release build sends nothing, the install
    included, until you have answered the switch once, on a first-run notice or in Settings
    (ADR-0127, docs/ANALYTICS.md).
    An install from 0.3.2, which may already have sent counts, is told so on that notice.
  • The launch screens follow the prototype: «Discuss with Fabric ↗» (it opens the CEO chat) and Profile in the
    scope bar, the Fabric strip under it, a compact network-exposure warning, and nothing wider than the window. The default
    workspace reads My workspace.
  • Smaller fixes on the project page: the toolbars wrap instead of running past the window, a task's subtitle
    names its agent and date instead of a raw id, and Home's «+ Add a topic» opens the board with its form.
  • Russian. Every screen string, the startup failure dialog, the folder pickers and the app menu are in
    Russian when the app is. Not yet: messages written by the main process, the terminal prompts of ACP agents and the
    feed's verification tooltips are still in English (CO-225).
  • Provider pins move to the installed Claude Code and Codex versions; the README names the commercial-licensing
    path (passioncode.ai/business).

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

v0.3.2

v0.3.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 09:10

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

v0.3.1

v0.3.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Oct 14:51
  • The hub: a local agent reaches a cloud product through Fabric, on your consent
    (ADR-0115). Fabric listens
    for agents registered on this Mac on a stable loopback port, FABRIC_HUB_PORT (default 47070), published in
    ~/Library/Application Support/ai.passioncode.fabric/hub.json beside a door token (both 0600, rewritten on
    start, removed on quit). An agent asks once with fabric.access.request; you answer once in a native prompt,
    or from the attention queue when Fabric is in the background; on Allow the agent collects a revocable binding
    credential and calls the product with agent.call, narrowed by your grants and again by the product.
    Settings → Agent access lists products, waiting requests, agents with their grants (Revoke, Revoke all)
    and standing denials (Clear).
  • Fabric Inbox connects once, by its own consent. Connect opens the Fabric Inbox app; its key goes to
    Project Observatory's vault, never into Fabric's database or logs. It needs a Fabric Inbox server with
    account narrowing (fabric-inbox#24). Fabric checks that the runtime reports version 0.9.0 or later, but a
    version check does not prove narrowing: the deployed source and a live acceptance remain open (CO-195,
    fabric-inbox#26). The 0.9.0 app supplies the connect link.
  • Hardening from three verification iterations: a per-request poll secret, so only the agent that asked
    can read its answer and collect its credential; the registry reads regular files only and never blocks the
    app; the connect callback answers the product within its 10 seconds and keeps nothing it could not confirm,
    except a late record whose withdrawal itself failed, which stays and is shown to you as such; hub authority
    restored from an archive comes back revoked, for you to approve again; each estate keeps its own product
    secret slot; the consent, grant and queue wording is in English and Russian; a call whose outcome is unknown
    is never sent again under the same key; a caller that disconnects no longer holds an admission slot; quitting
    can no longer hang on a special file planted at hub.json.
  • First run shows whether Claude Code and Codex are signed in (CO-176), read with each tool's own read-only
    status command on the exact builds Fabric has verified; any other answer is shown as unknown, never as signed
    in, and the step never waits for it.
  • Stopping an agent: asking again to stop a Claude Code or Codex run whose stop was already sent answers with
    that first outcome instead of a refusal that would read as "nothing was sent".
  • Smaller fixes: the onboarding launcher no longer covers the project controls, onboarding scrolls inside
    narrow windows, and restoring saved drafts reads one consistent snapshot.
  • Schema 75 → 78 (migrations 76, 77 and the file with suffix 80; the schema version is the migration count).
    Fabric 0.3.1 does not migrate an existing database itself: it refuses a database below schema 78 and names the
    upgrade procedure (release runbook, upgrading an existing database).
    Once a database is migrated to 78, Fabric 0.3.0 can no longer open it, so take the backup the procedure
    describes first.
  • Not done yet: agent.call takes product tool names the agent contract's capabilityName pattern refuses
    (CO-193); a session Fabric starts cannot reach a product through Fabric (CO-194); no live end-to-end run with
    the Fabric Inbox app yet (CO-195); the knowledge base needs final released facts (CO-196); final-source workspace
    publication and acceptance remain open (CO-197).

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

v0.3.0

v0.3.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Oct 23:45

Release v0.3.0.

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