Changelog

What’s changed.

Latest releases at the top. Pulled live from GitHub releases .

  1. v0.3.0

    10 October 2026stable

    CodeTrellis 0.3.0 is the rules release. A repository can now write down how its code is meant to be built, which packages go through which wrapper, which layers may not import which, and what text must never appear, and have that checked anywhere: on your machine, in an agent's session, and on every pull request, with no AI and no secret needed. Agents can propose rules but only a person can make or loosen one. The CLI is on npm, and the app carries it too.

    Coming from 0.1.x? The 0.2.0 and 0.1.18 notes describe lines of work, overlaps, breakpoints, replay and the record, which this version builds on.

    ⚠️ Before you start

    • The app offers, once, to add the codetrellis command to your terminal (on macOS it links /usr/local/bin/codetrellis and asks for your password). Say yes if you want codetrellis check and the agent verbs from any shell. Settings → MCP Server → Command line adds or removes it later.
    • Managing Macs with Jamf, Intune or Kandji? CodeTrellis-0.3.0-arm64.pkg is an installer package for Apple Silicon. It is signed with a Developer ID Installer certificate, notarized and stapled, and installs to /Applications. It carries the receipt dev.codetrellis.app your MDM reads, and it never installs an older version over a newer one. Added on 17 October; see the footer.
    • For CI and servers, the CLI is on npm: npx codetrellis or npm i -g codetrellis. It needs no desktop app, and its version matches this release.
    • Rules you set in 0.1.18–0.2.0 still count. They lived in .codetrellis/config.json. The new Rules view shows them and offers to move them to .codetrellis/rules/, where they are reviewed like code. Nothing moves until you choose to.
    • The phone companion is 0.3.0 too, and pairing is unchanged since 0.1.14, so there is no re-pairing. Android: install CodeTrellis-Companion-0.3.0.apk, attached below. iOS: TestFlight build 29. An older companion keeps working with this desktop, without the new "Needs you" findings.

    📏 Rules

    • A rulebook in the repository. Rules are YAML in .codetrellis/rules/<suite>.yaml, committed with the code and owned like code. A rule can say:
      • who may import what;
      • that only one wrapper may import a package such as stripe, in any of the eleven languages;
      • who may import a named export, followed through re-exports;
      • who may call an HTTP host, touch a table, run a command or read an environment variable;
      • what the files in a folder must be;
      • what text must, or must not, appear.
    • Fuzzy and pattern matching. A target can match by glob, regex or look-alike name, so a typo-squatted package or a near-duplicate is caught. You can teach it your own kinds of call (a queue, an event, a feature flag) without writing code.
    • Strength you choose. block fails the check, warn says so and passes, guide only shows wherever the work touches it. New rules start at warn. Breaches that already exist are counted in a baseline that may only shrink, so a rule can land on old code without blocking everyone.
    • Only a person changes a rule.
      • Agents propose with propose_rule and say why; you accept or reject in the app.
      • Every change shows its effect on the code before you make it.
      • Loosening a rule needs your signature, and a pull request can't bring the key that approves it.
    • The Rules view has its own workspace: each rule with what breaks it today, the proposals waiting on you, and the move from config.json. The graph draws breaches, and selecting a file lists the rules that apply to it.
    • Rules reach the agent. A task's brief, the overlap card and the awareness digest name the rules in scope, so an agent hears about a rule before it breaks it.

    ✅ Checks anywhere

    • codetrellis check answers "does this change conform?" in a terminal, a session hook or any CI. It exits non-zero when the change breaks a blocking rule, when its tests fail or are older than the code, when a done task fails its checks, or when a doc describing it is stale. Narrow it with --suite, --rule or --path. Output can be SARIF for any code host.
    • Agent checks on your own agent. An agent reviews the change against the rules in scope, on your agent, model and key: Claude Code, Codex, Cursor, or any MCP client. CodeTrellis supplies the bundle and checks what comes back.
      • Every finding must quote lines it was actually shown, and is dropped if it doesn't.
      • Files named like secrets are never sent.
      • An instruction hidden in the change is flagged, not followed.
    • A review run on your device counts on the pull request. It is signed with your device key and verified in CI against the keys your base branch lists. CI needs no secret to trust it.
    • Agent checks in CI too, on your provider's key, with a cost limit, and an optional second pass that verifies the first.
    • Check runs travel with the repository. Each run is kept in .codetrellis/runs/checks/, so a run made on a laptop, in CI or by an agent shows up in the app beside the others.
    • Pipelines. Checks can run in stages, in order or in parallel, and a later stage can build on what earlier ones found.
    • The Checks view. Run any check from the app and see CI's runs beside your own. Comparing two runs shows what got fixed and what is new.
    • Findings where the code is. What the latest check found shows on the importing line in the code view, the diff and the inspector, in a task's brief, and on the phone's "Needs you". A repeated finding can graduate into a proposed rule.
    • Reviews in order of risk. A review opens with what the change does to the architecture, sorted by dependents, rule scope and test coverage. Each reviewer sees only what changed since they last looked.

    💻 CLI

    • On npm as codetrellis. It is published from CI with npm's trusted publishing, so no npm token exists anywhere.
    • Carried by the app, running on the app's own binary, so you don't need Node.
    • codetrellis desktop install downloads the app and checks it against the same signed checksums the updater uses before opening it.

    🖥 Desktop

    • The graph has a legend and one visual language. Colours, glyphs, dashes and words mean the same thing on the graph, the plan canvas, the file tree and the Timeline.
      • Edge toggles show or hide imports, cross-system calls and symbol links.
      • The graph goes full screen and back.
      • Hidden panes leave no gap.
    • Selecting a file lists the plans and tasks that touch it.
    • The branch popover scrolls and searches, even with sixty branches, and keeps worktrees in view. Each worktree says where it is, and one inside the project is no longer scanned as part of it.
    • Quiet under load. A git pull that touches many plans now reloads each plan once, with one notice, instead of a storm of refreshes and toasts. Large checkouts with many worktrees list their lines of work in one shared pass, and the graph no longer waits behind it.
    • Smaller fixes:
      • Long plan names and headings fit.
      • Opening a plan from a chip always shows it.
      • Escape from a ticked checkbox now minimises the plan workspace.

    📚 Docs

    • Every building block has a worked example, in docs/claude/rules.md in the source repository, and each example runs as a test, so the docs can't drift from what the app does. Pipeline recipes for any CI are alongside.

    📱 Phone

    • "Needs you" shows what the latest rule check found next to the work it affects.

    🔒 Security

    • Dependency advisories fixed: shell-quote (critical), source-map-js and http-cache-semantics, in both the desktop and phone builds. The npm package installs with none.
    • Rule approvals are checked against the base branch's signers even when a project is opened through a symbolic link.

    Known limits

    • Breakpoints detect and report a write that got past them; they don't undo it.
    • Google Drive and Dropbox shared folders aren't detected as shared plans folders. OneDrive and SharePoint are.
    • Windows portable .exe: an agent's connection starts only while CodeTrellis is open, and must be re-added after each update. Use the Windows installer for agent work.
    • Linux AppImage runs without Chromium's sandbox. Prefer the .deb or .rpm where you have the choice.
    • Windows builds aren't code-signed, so SmartScreen may warn once.
    Full release notes
  2. v0.2.0

    5 October 2026stable

    CodeTrellis 0.2.0 rounds off the many-agents work that arrived in 0.1.18: what you reported, and what we found running it on real repositories, is fixed. Large repositories stay responsive, open plans keep up with agents as they work, and a task shows the rules it inherits. Desktop only: the phone companion is unchanged.

    Coming from 0.1.17 or earlier? The 0.1.18 notes describe lines of work, overlaps, breakpoints, replay, the record and the rest of what this version builds on.

    ⚠️ Before you start

    • The phone companion stays at 0.1.18. Nothing in this release touches it, and pairing hasn't changed since 0.1.14. Android: keep CodeTrellis-Companion-0.1.18.apk, attached to v0.1.18. iOS: TestFlight build 28.

    🧭 Plans and agents

    • Open plans follow agents live. When an agent claims a task, moves it on or logs activity, a plan you have open shows it straight away, with no reload.
    • A task shows the rules it inherits. Claim policy ("Human only"), model and guardrails set on a parent now show on each task beneath it as "(inherited from …)", even if you never opened the parent. Agents were always held to them; the window used to show "Anyone (default)".
    • Any branch can be given a section of a plan, not only a branch with recent unmerged work.
    • Long plan titles wrap instead of being cut off.

    🛠 Reliability

    • Claiming a task answers at once on a repository with hundreds of branches. Agents' claims, "next item" and the brief used to wait for a full pass over every line of work, which took over 30 seconds on a large repository, longer than an agent waits, so the claim never landed. They now ask only what they need.
    • Pinning a baseline or scanning no longer freezes the app. On a large project every other request, yours and the agents', used to wait while the files were stored: up to 11 seconds on 2,500 files. The app now keeps answering throughout, and pinning stores only what changed.
    • A skill added before it was committed learns who added it once the commit lands, instead of staying "not committed yet" for good.
    • Opening a project while another project is still being scanned now opens it once that scan finishes, instead of quietly doing nothing.

    Known limits

    • Breakpoints detect and report a write that got past them; they don't undo it.
    • Google Drive and Dropbox shared folders aren't detected as shared plans folders. OneDrive and SharePoint are.
    • The CLI is installed from a checkout.
    • Windows portable .exe: an agent's connection starts only while CodeTrellis is open, and must be re-added after each update. Use the Windows installer for agent work.
    • Linux AppImage runs without Chromium's sandbox. Prefer the .deb or .rpm where you have the choice.
    • Windows builds aren't code-signed, so SmartScreen may warn once.
    Full release notes
  3. v0.1.19

    3 October 2026stable

    CodeTrellis 0.1.19 is a fix release for what running everything on a Mac turned up after 0.1.18: teammates' channel messages that went missing after a pull, a Diff button you couldn't click, and a top bar that lost its controls in a repository with many branches. Desktop only: the phone companion is unchanged.

    ⚠️ Before you start

    • The phone companion stays at 0.1.18. Nothing in this release touches it, and pairing hasn't changed since 0.1.14. Android: keep CodeTrellis-Companion-0.1.18.apk, attached to v0.1.18. iOS: TestFlight build 28.

    🛠 Fixes

    • A teammate's channel messages arrive after a pull, on macOS. When a pull brought new messages to several plans at once, the Mac app saw the first two plans' and missed the rest until something else touched those plans. On macOS CodeTrellis now watches each folder tree with the system's own file events, which report every folder and file in a burst.
    • Watching a large repository no longer runs short of file handles on macOS. The same change watches each tree with one handle instead of one per file, so the limit named in 0.1.18's notes is gone.
    • Code mode's Diff button can be clicked. Invisible resize handles from the layout underneath sat on top of code mode and took the clicks. Depending on the window size it could be other buttons too.
    • The top bar fits in a repository with many branches. Lines of work used to show one full-width chip per recent branch, so at 1280px the project tab, its branch chip and + were squeezed out, and at the narrowest window Settings went off the edge. The strip now shows as many chips as fit, with the rest behind +N. Below 1536px, Connect Agent, the agents count and devices show as icons with their tooltips.

    Known limits

    • Breakpoints detect and report a write that got past them; they don't undo it.
    • Google Drive and Dropbox shared folders aren't detected as shared plans folders. OneDrive and SharePoint are.
    • The CLI is installed from a checkout.
    • Windows portable .exe: an agent's connection starts only while CodeTrellis is open, and must be re-added after each update. Use the Windows installer for agent work.
    • Linux AppImage runs without Chromium's sandbox. Prefer the .deb or .rpm where you have the choice.
    • Windows builds aren't code-signed, so SmartScreen may warn once.
    Full release notes
  4. v0.1.18

    3 October 2026stable

    CodeTrellis 0.1.18 watches every agent working on your code at once, across worktrees, branches and clones, tells them when their work collides before you have to, and keeps a record you can replay and prove. It is a large release. What you report is fixed, and the features refined, before 0.2.0, so please tell us what you hit.

    ⚠️ Before you start

    • Update the phone companion for the new screens: Needs you, overlaps, breakpoints. No re-pairing: pairing hasn't changed since 0.1.14. Android: CodeTrellis-Companion-0.1.18.apk is attached below; install it over the old one. iOS: build 28 has been submitted to TestFlight (invite-only) and shows up there once Apple finishes processing it.
    • Only you approve a plan. Approve is on the plan header and on the phone's plan screen. An agent can ask for approval by setting the plan to review, but an agent's update_plan that sets it to approved is now refused, and nothing else in that call is applied. If your agent's instructions told it to approve its own plan, change them.
    • Nothing new reaches the network unless you turn it on. Keeping remotes current (Settings → Git) and review hosts (Settings → Review hosts) are off. Each is a grant only you can make, from the CodeTrellis window.
    • Optional: the Claude Code skill and hook, and a Gemini CLI hook, so the agent checks what its edit overlaps and asks about your breakpoints before it writes. They're offered in Settings and written only when you click. Nothing is installed for you.
    • Your record starts now. The tamper-evident record of what agents asked, did, checked and decided begins at the first launch of this version. Your plans and history from 0.1.17 are untouched. How long the record is kept is Settings → Data → Record.

    🧭 Many agents at once

    • Every worktree, recent branch and clone is a line of work, shown in a strip in the top bar. Any MCP agent (Claude Code, Codex, Cursor, …) is placed in the line it works in.
    • Agents are told when their work collides. When two lines of work change the same function or a contract others depend on, or drift off their ticket, each agent hears about it on its next step, and you see one line in Awareness. Mark it Intended and it stays quiet.
    • Breakpoints: "ask me before touching payments". The agent's write waits for you, on the desktop or the phone.
    • The Timeline survives a restart, with a lane per agent, its commits and its checks.
    • Replay shows the graph, the stack and what waited on you at any past moment. Catch up at 4×.
    • The Stack and Review tabs show what clashes (spreadsheets and documents too) and what to merge first, with reasons. The PR draft tells the story of the work.
    • Play-forward shows where today's plans will collide before they do.

    📋 Plans and teams

    • Approve a plan yourself, on its header or on the phone, as above.
    • One plan across several worktrees.
    • Team status through git, with any host or none. Approvals are signed with your git SSH key. The shared plans folder can be a git repo or a OneDrive / SharePoint folder.
    • Skills on tasks, and recurring playbooks where each run is a fresh plan.
    • Architecture rules, written once, kept by every agent and checked in CI.
    • Tests tied to the code they cover, so "done" on tests older than the code is caught.

    🔎 How the code got here

    • With no plan at all: what changed where, any two points compared file by file and on the graph, a file's evolution, line history with the agent where it's known, and branches and pull requests through your own git and gh.

    🧾 The record

    • What was asked, done, checked and decided, in a hash chain. Settings says whether it's intact. Export evidence for any period as one signed page, and anyone can verify it on their own CodeTrellis.
    • Each decision says who made it: "You approved", "from the phone", or "Someone over the local API".
    • Changes over the local API can be refused. Settings → MCP Server → Local API turns off every change that doesn't come from the app window, an agent's MCP connection or your phone. Changes that arrive that way are tagged "unverified" wherever they show.

    🖥 The command line

    • codetrellis runs headless for an agent in a cloud session or a CI job, with SessionStart hook and GitHub Actions recipes in docs/recipes/. For now it's installed from a checkout (npm ci && npm link). A published package is planned.

    📱 Phone

    • Needs you, overlaps in plain words with Acknowledge / Intended / Reply, the lines of work, breakpoints to answer, and a push for anything high.
    • Approve a plan from its plan screen.
    • Recurring playbooks can be run from the phone.

    🛠 Reliability

    • A project with an iOS or Android app in it no longer stops CodeTrellis seeing your lines of work. Watching each line of work used to hold a file open for everything under it, ios/Pods included, until git itself could no longer start, and lines of work, overlaps and line history went quietly empty.
    • A project opened through a link, or inside a hidden folder, works like any other. On macOS /tmp is a link, so a project there was named two ways and the window couldn't answer an overlap an agent raised; a project under a folder like ~/.config was never watched for changes.
    • CodeTrellis no longer breaks your own git commit. Its background reads used to take git's index lock.
    • Working out who overlaps with whom no longer holds up the app. Git runs without blocking, one refresh runs per project at a time, and your answer to an overlap is applied at once instead of waiting seconds while files change fast.
    • A clone with many branches no longer stalls the window.
    • An agent's line of work is watched from the moment it connects, so the agent beside it is told of an overlap even with no window open.
    • The update download shows its progress and asks where to save.
    • The Windows and Linux installers carry every library patch, checked on every build.
    • Smaller things: resizing a terminal as it closes no longer raises an error; an empty graph scans its own project instead of showing an error; the graph refits when the layout changes; a project removed from Recents stays removed; a new plan opens straight away; line_history on a line past the end of a file says so in words; a test report written again by a later run counts as a new run.

    Known limits

    • Breakpoints detect and report a write that got past them; they don't undo it.
    • On macOS, watching uses one file handle per source file. Dependencies, build output and ios/Pods are skipped, so a typical repository costs a few thousand. A repository with more than about 20,000 source files in one line of work can still run out; a watcher that costs one handle per folder tree is planned.
    • Google Drive and Dropbox shared folders aren't detected as shared plans folders. OneDrive and SharePoint are.
    • The CLI is installed from a checkout.
    • Windows portable .exe: an agent's connection starts only while CodeTrellis is open, and must be re-added after each update. Use the Windows installer for agent work.
    • Linux AppImage runs without Chromium's sandbox. Prefer the .deb or .rpm where you have the choice.
    • Windows builds aren't code-signed, so SmartScreen may warn once.
    Full release notes
  5. v0.1.17

    27 September 2026stable

    CodeTrellis 0.1.17 is a reliability and trust release. It fixes 37 bugs found by testing the whole app end to end, makes permissions yours alone to grant, and makes the app quieter. The phone companion is updated too; pairing hasn't changed, so there's no re-pairing.

    ⚠️ Before you start

    • Only you can grant permissions now, and only from the CodeTrellis window. What agents may do, which projects they can reach, what a paired phone may do, and whether phones can connect: an agent or a phone asking to change any of these is refused and told where you change it. Everything else in Settings still works from anywhere.
    • Agents can no longer delete plans. An agent asks instead: you see the plans, its reason and what deleting does, and nothing is deleted until you type the plan's name. Your own delete buttons work as before.
    • New plans follow your Shared / Local default. Plans you make in the app or on your phone used to stay on your machine even when the default said Shared. Now a new plan is written into .codetrellis/plans/ as soon as it has a name, ready to commit. To keep new plans on this machine, set Settings → Plans → Default visibility to Local.
    • Scripts that used the old task routes (/api/tasks/…, /api/plans/:uid/tasks…) need updating to the item routes. The app stopped using them long ago.
    • Update the phone companion for the new plan cards. No re-pairing: pairing hasn't changed since 0.1.14. Android: CodeTrellis-Companion-0.1.17.apk is attached below; install it over the old one. iOS: build 27 has been submitted to TestFlight (invite-only) and shows up there once Apple finishes processing it. Most phone fixes below are on the desktop side, so they reach your phone even before you update it.

    🔐 Trust

    • Permissions are yours alone to grant, as above. Opening the app window is the only way in; a command-line way is planned.
    • Every record says who made it. Items, comments, budgets, criteria, system docs and imported plans made by an agent now name that agent — Claude Code, Cursor and so on — rather than a generic "agent", and are never recorded as yours.
    • Changes an agent makes to your guardrails are flagged until you've seen them. When an agent raises a plan's budget or freezes or unfreezes the project, a flag stays on the budget chip or freeze bar, with who did what, until you mark it Seen. That includes lifting a freeze, which used to leave no trace.
    • Answers to a phone's question say who answered. If an agent answers a question that was put to you, the phone is told it was the agent.
    • Shared audio goes only to devices you've allowed to receive your microphone.
    • The phone link is hardened further.
    • The update check is the only request the app makes on its own, and turning it off in Settings → Updates is now tested to mean no request at all.

    🧭 Plans and review

    • Your diff baseline survives a restart. It used to be re-taken from whatever was on disk at launch, so "changes since baseline" quietly became "changes since this morning", and a commit you pinned was forgotten.
    • Renaming a plan keeps it connected to its files. Before, a renamed plan stopped writing to the repo, and deleting it later left its folder behind to come back on the next pull. A plan's folder follows its title until it has been committed; after that it keeps its name.
    • A deleted plan stays deleted. Its folder no longer reappears a moment later.
    • Item changes reach the repo straight away. Adding, editing, moving or deleting an item used to wait until something else about the plan changed.
    • Items can't disappear from the tree. Moving an item under one of its own sub-items, or under an item in another plan, is refused; before, both vanished.
    • Reconciling a deviation acts on the right plan, and a deviation that doesn't exist is refused rather than reported as resolved.
    • Plan history search finds every matching commit and the files each one touched.
    • A teammate's first channel messages on a shared plan show up without waiting for something else to change.
    • "Add to plan" from the code reader adds the lines to the task you pick, and a new plan made from it shows up.

    🗺 Graph and code

    • The live graph stays right between scans. Editing a file no longer drops its connections, a new file gets its connections, and a deleted file leaves the graph.
    • Worktrees work properly: the branch shows, branches and sibling worktrees are listed, and plan-file merge conflicts are detected.
    • Agents' graph questions answer correctly whether they give a project-relative or an absolute path.
    • The baseline is labelled honestly: "abc1234 + uncommitted changes" when it includes uncommitted work, and "Pin current HEAD" pins HEAD itself.

    📱 Phone

    • Editing an item on the phone saves. Every change from the phone's editor — body, status, title — used to fail silently.
    • What you do on the phone shows on the desktop straight away: plans, items, comments, links, channel posts and system docs.
    • Two phones stay in step, and a connected phone no longer receives a stream of empty updates.
    • Plan and item statuses are checked, so a phone or script can't store a status nothing understands.
    • A plan's deviations show on the phone again. They were never listed, and one would have crashed the screen.
    • Budget and freeze cards on a plan. The plan's time and cost against its ceiling, and whether the project is frozen, with any change an agent made flagged until you tap Seen. A push tells you when an agent changes a budget.
    • The splash screen shows properly while the app starts.

    🎛 Quieter and clearer

    • The change summary on the graph is one line — "Working tree · 8 changes" — and opens its breakdown when you click it. It used to sit over the graph's toolbar.
    • Plan readiness says what's left in words ("1 to do before hand-off") instead of a red percentage on every new draft.
    • The plan panel names what it sees ("Claude Code running") rather than "Agent active" beside a top bar saying "No agents".
    • Settings speak plainly. A refused value names the field ("The MCP port must be a number from 1024 to 65535"), Power says what it's doing, Logs says when this build writes no log file, and the modal no longer changes height between sections.
    • Smaller things: the plan header no longer repeats itself, item chips use icons rather than emoji, the branch chip stays on one line, the folder picker opens beside your project, and the Brief says "your agent" rather than naming one.

    🛠 Fixes

    • A refused update download no longer blocks every later one until restart.
    • Settings you save are checked on the way in, so a bad value is refused with the reason instead of quietly becoming the default at the next restart.
    • Waiting on the agent pane can't strand an agent: two agents asking at once each get their answer, dismissing cards releases whoever was waiting, and waiting on a card that doesn't exist says so at once.
    • A CSV cell an agent cites can be read back, and a quoted comma no longer counts as a column.
    • Audio capture settings are checked, so a bad value can't make the buffer grow without limit.
    • Freeze settings are checked: "no" no longer freezes the project, and an end date that isn't a date is refused.
    • Agent tools that took a plan, item or file on trust now refuse one that doesn't exist, instead of reporting success.
    • Plan and item search treats % and _ as characters.
    • get_logs says when file logging isn't running instead of reporting "no entries".

    Known limits

    • A second checkout of the same repository (a worktree or another clone) takes the first one's system docs when it's scanned. Working across checkouts is the next piece of work.
    • Once a plan's folder has been committed, it keeps its name when you rename the plan, so that teammates' copies don't break.
    • Changing permissions has no command-line way yet; use the app window.
    • Windows portable .exe: an agent's connection starts only while CodeTrellis is open, and must be re-added after each update. Use the Windows installer for agent work.
    • Sign-offs stay on the machine where they were made. Plan files carry the criteria but never the decisions.
    • Linux AppImage runs without Chromium's sandbox. Prefer the .deb or .rpm where you have the choice.
    • Windows builds are not code-signed, so SmartScreen may warn once.
    Full release notes
  6. v0.1.16

    25 September 2026stable

    CodeTrellis 0.1.16 is a big release. Agents now show their work against acceptance criteria that a person signs off, and CodeTrellis works on documents and spreadsheets as well as code. It also tightens how CodeTrellis reads files on your machine, so everyone on 0.1.15 should upgrade.

    ⚠️ Before you start

    • Existing plans may now wait for your sign-off.
      • A task whose description has an ## Acceptance criteria section gets those lines as criteria, and a person has to approve them. The description itself is not changed.
      • A task marked "needs approval" gets a "Reviewed and approved" criterion instead.
      • Once such a task is done, the next task waits until a person approves.
    • Agents can no longer clear an approval gate. The old approve-gate tool now refuses, and tells the agent to submit evidence against the task's criteria instead. Only a person decides.
    • Connect your agents again, once.
      • Agent configs copied from 0.1.14 or 0.1.15 lacked the credential CodeTrellis requires, so those agents were refused.
      • If you fixed that by pasting the credential in by hand, it stopped working every time CodeTrellis restarted.
      • Re-add CodeTrellis from Settings → MCP Server: Copy Claude Code command, Copy JSON, or Add to Claude Desktop…. The new config holds no secret and keeps working across restarts.
    • For Claude Desktop: open Claude Desktop once, then click Add to Claude Desktop… in CodeTrellis. Quit and reopen Claude Desktop afterwards so it picks up the change.
    • Using the Linux AppImage or the Windows portable .exe? Connect agents from the .deb, .rpm or Windows installer where you can (see Known limits).
    • Pin the projects your agents work in. Agents are trusted with your pinned projects and the 12 you opened most recently. When an agent is refused on an older project, the message now says so and how to fix it.
    • Update the phone companion to approve work from your phone. No re-pairing is needed: pairing hasn't changed since 0.1.14. Android: CodeTrellis-Companion-0.1.16.apk is attached below; install it over the old one. iOS: build 26 has been submitted to TestFlight (invite-only) and shows up there once Apple finishes processing it.
    • The download is about twice the size. The macOS DMG is about 340 MB, up from about 180 MB. The difference is a bundled engine that converts Word documents, decks and old-style spreadsheets on your machine.
    • Nothing new to switch on. Every new agent tool is covered by the permissions agents already have, and a paired phone's permissions already cover approvals. Screen capture for agents is still off unless you turn it on.

    ✅ Acceptance criteria and sign-off

    • Every task can carry acceptance criteria: what good looks like, in your words.
      • An agent submits evidence, and a person approves it or sends it back.
      • Sending work back always needs a note.
      • Rewording a criterion means earlier approvals no longer count.
    • Who can approve what is set per criterion.
      • By default an agent can sign off its own code checks, such as "it compiles".
      • Everything else waits for a person, and you can require a person on any criterion.
      • Criteria an agent adds start as proposals, and only a person can change a criterion's policy.
    • Submissions are checked before they reach you.
      • A submission is refused, and the agent told why, when it cites a sheet, cell, page, line, moment or quote that doesn't exist.
      • It's also refused for an output older than the task, a failing or out-of-date test report, or no change to the code the task names.
      • Anything that can't be checked is marked unverified rather than counted against the agent.
      • Whether the agent actually read the file is reported next to its submission.
    • Evidence is recorded and watched, never copied.
      • The files a task used and produced are recorded with a fingerprint.
      • If one changes after you approved it, the approval goes stale and names the file.
      • A task that had passed your approval gate waits for you again.
    • Run checks. "Run checks" on the plan page re-checks every criterion and tells you what changed since the last run. It never approves anything. When a source file changes, CodeTrellis re-checks the tasks that depend on it by itself.
    • Agents pick up what you sent back. Their worklist carries your note and the exact cell or page you pointed at, so there's nothing to copy and paste into a chat.
    • The plan review lists every criterion under its task. Each shows its state as a symbol and a word, never colour alone, plus who decided and a link to the evidence at the place it cites. Each task shows "N of M met". Deciding clears the matching "needs decision" notice, so the count stays true.
    • The PR draft says what was agreed: each criterion, its evidence, and who signed. An agent's self-approval is labelled as one.
    • Sign-off pack.
      • Save a plan's sign-off as a PDF or as a self-contained page from the Brief. PDF saving is desktop only.
      • Later, open the saved page in CodeTrellis to check that everything it vouches for still matches the files in that plan's project.
      • Decisions made on a phone name the paired device.

    📄 Documents, not just code

    • A viewer for the files work depends on:
      • PDFs, page by page.
      • Spreadsheets (.xlsx, .xlsm), with the cited cell highlighted. They show the values as last saved; macros never run, and a workbook with macros is badged.
      • Word documents and PowerPoint decks as pages, drawn by the bundled engine. If one can't be drawn, the viewer shows its text and says why.
      • Old-style .xls workbooks, through the engine.
      • HTML reports in their own sandbox, scripts off until you turn them on for that report.
      • Images; video, opened at the cited moment; CSV; and text or Markdown with the cited lines highlighted.
    • Send work back from the exact place: a cell, a page or a line, straight from the viewer.
    • Show in Finder is always there. CodeTrellis never opens a file in another app on your behalf.
    • The first Office file you open shows "Preparing preview…" for a few seconds. After that, previews come from a cache.
    • The Brief: a plan read as a piece of work.
      • It shows the tasks, the guide, the materials, what good looks like, and what the agent is doing, in plain words, e.g. "Read Q3-sales.xlsx — sheet Regional".
      • It needs no code graph and works in a folder with no git. A project can be set to open straight into the Brief.
    • Agents read materials safely.
      • A workbook sheet by sheet, a Word document as text or as its pages, a deck slide by slide, a PDF page by page.
      • Each read runs in a separate, memory-capped process with no access to anything else, and is logged on the task.
    • Agents record what they used and made. Materials, outputs and evidence are recorded against a task; these are the files the viewer shows and the checks look at.
    • Playbooks.
      • Templates now bring their acceptance criteria, and there's one template chooser for everything.
      • A new Analysis report playbook runs Gather → Analyse → Draft → Review.
      • An empty plan can be filled from any template, and a template with placeholders asks for them first.
      • Publishing a plan as a template keeps its criteria but never their approvals.
    • New guide pages: "For analysts" and "Connecting Claude Desktop".

    📱 Phone

    • Approve or send back from your phone. The notification opens the decision directly.
      • Evidence shows at the place it cites: a sheet's cells, an image, or text.
      • The next item waiting is one tap away.
    • An Approvals list gathers everything waiting on you across plans. The home tab shows a "waiting for your approval" card, and task details have a Criteria section.
    • An approval whose file has changed asks "Still met?".
    • Sending back needs a note. The note can point at the file you're looking at.

    🤖 Agents

    • Agents stay connected when CodeTrellis restarts, and a second copy of CodeTrellis running on another port no longer confuses them.
    • Agents appear under their own name — Claude Desktop, Cursor and so on — rather than a guess, and an agent is never mistaken for you.
    • Add to Claude Desktop shows you exactly what will change and keeps a backup of Claude Desktop's config before writing it. Only you can trigger it, from the CodeTrellis window. Claude Desktop gets the same tools as any other agent.
    • Copy instructions for an agent gives plain-English setup steps an agent can follow on its own. It contains no secret.
    • Point an agent at anything. Every plan, task, comment, page and attachment has a short #9f2c41ab reference. Copy it, paste it to an agent, and it will know exactly what you mean.
    • Agents can show you things: a file in the code reader, a task in the Brief, or a document at the place it cites.
    • Screenshots match the screen. For agents you've allowed to capture the screen, screenshots are no longer one step behind, and an open HTML report is included instead of a blank box.
    • Agents can attach video. A plan that fails to be made from a template now says so, rather than looking like it worked.

    🔍 Code and review

    • One verdict per line in the code reader:

      • aligned: planned and changed;
      • drifted: changed, but nobody asked;
      • outstanding: planned, not done yet.

      Deleted code shows as a visible gap, and hovering a line says why it's marked. A file the plan asked to change no longer gets a "Drift · unexpected" header.

    • The review panel sits above the plan diff and is open by default. Each task expands to the files that landed or are still missing, each one a link, and file rows in the plan diff open the file.

    • Trace works both ways, from a line to the task that wanted it and back again.

    • Plans across worktrees. Switch plans from the plan page, and see plans on your other worktrees. Opening a worktree switches to its tab instead of opening a duplicate.

    • Graph:

      • Large graphs pan smoothly again. They no longer freeze the window every 10 seconds when there are uncommitted changes, and each window draws only its own project.
      • A faster card style is the default. Glass is still available from the graph toolbar or Settings → Appearance, and your choice is remembered.
      • Zoomed-out changed cards fill with their status colour.
      • The Symbols view now actually shows symbols.
      • An empty graph says why: no connections, a filter hiding everything (with a Clear button), or a failed load (with Retry).
      • A graph scope set by an agent no longer leaves the canvas blank for the rest of the session.
    • Go to line jumps to the line even when the window isn't in front.

    🔒 Privacy and security

    • Your files are only read inside projects you have opened. That covers everything CodeTrellis reads or imports for you: plans, attachments, documents. It never follows a link out of them.
    • The document engine can't reach anything.
      • It is built from LibreOffice's own source in CI and contains no network code.
      • It is handed a document's bytes and hands back a preview. It can't open your files.
      • It only runs if every file in it matches fingerprints fixed in the app.
    • HTML reports open in their own sandbox: a separate session, no network, and only the report's own folder.
    • The sign-off PDF is printed with scripts off and every network request blocked.
    • Only a person can approve a criterion that needs a person, on the desktop or on a phone you confirmed during pairing.
    • Add to Claude Desktop only works from the app's own window, so an agent can't rewrite another app's settings.
    • Spell-check dictionaries ship with the app, and Linux and Windows builds use only them, so spell-check no longer downloads dictionaries from Google. macOS uses the system spellchecker, as before.
    • Update checks can be turned off in Settings → Updates. Settings → Telemetry lists exactly what leaves your machine, and when.
    • Every installer is built from the locked dependencies and checked for the version it will report before release. An attached Android APK is covered by the same signed checksum file as the desktop builds.

    🛠 Fixes

    • Several task settings looked saved but weren't: the approval gate, routing, symbol targets, and the shared/local switch. They save now.
    • The app reports the version it was built as. 0.1.15 reported itself as 0.1.14 and offered itself as an update.
    • First launch no longer shows a sign-up form in place of the app. Your name and email are read from git.
    • A plan imported from another clone, machine or worktree shows under the right project, and isn't re-imported on every scan.
    • A teammate's plan updates arriving by git pull were sometimes never picked up. They are now.
    • Log files are capped at 14 days and 50 MB a day. One install had reached 1.8 GB.
    • An agent asked to hide the terminal hid the Plans panel instead, and hiding Plans left an empty space. Both are fixed.
    • A long project list on the welcome screen scrolls.
    • Notifications no longer cover the chip that restores a minimised plan, and the gaps between stacked notifications no longer block clicks.
    • The "Shared" chip appears as soon as a plan is exported.
    • Removing an uploaded attachment now says the file on disk is kept.
    • Screen readers: Settings, the folder picker and the template picker behave as proper dialogs, Escape closes Settings, and the terminal tab's close button has a name.

    Known limits

    • Agent connections on the Linux AppImage and the Windows portable .exe have not been tested across restarts. Both run from a temporary location that changes each launch, and the connector config points at it. Prefer the .deb, .rpm or Windows installer for agent work until this is confirmed.
    • Sign-offs stay on the machine where they were made. Plan files carry the criteria but never the decisions, so a teammate who pulls the plan sees them unmet. A plan file can add or reword criteria but can never loosen them.
    • Shared tasks commit their conversation. Comments, attachments and channel events on a shared task are written into the plan's files and committed with it. Set a task to Local to keep it off disk.
    • Removing an uploaded attachment leaves the file on disk.
    • Materials must be inside an opened project. Files elsewhere, or reached through a shortcut or link, are not shown or read.
    • Office previews:
      • The first one takes a few seconds.
      • The engine uses about 1.3 GB of memory while it's running and stops after three idle minutes.
      • Line breaks can differ from Office's by a word.
      • Older .doc and .ppt files aren't previewed.
    • Word page numbers can't be checked, because they depend on layout, so cite a quote instead.
    • Spreadsheets show saved values only; nothing is recalculated.
    • The phone shows images, text and tables, not rendered Office pages.
    • Spell-check: only English dictionaries are bundled, so other languages get English spell-check.
    • Linux AppImage runs without Chromium's sandbox. Prefer the .deb or .rpm where you have the choice.
    • Windows builds are not code-signed, so SmartScreen may warn once.
    Full release notes
  7. v0.1.15

    19 September 2026stable

    CodeTrellis v0.1.15 — surfacing what was already there, and the Android companion is back.

    Source lives at lionroseway/codetrellis. Binaries are published here so download URLs stay stable and need no authentication. Feedback via issues on either repo, or codetrellis.dev.

    ⚠️ Read this before upgrading

    • The Android companion is back, built from the same commit as this desktop. v0.1.14 shipped without one by mistake; if you are on the v0.1.13 APK it cannot pair with a v0.1.14+ desktop, so install this one.
    • Coming from v0.1.13 or earlier? Read v0.1.14's notes first — it changed pairing, and turned remote access off by default.

    ✨ What's new

    🔍 Trace a change back to why it happened

    Reading code now tells you what the plan wanted from it.

    • Git diff colours in the gutter — added, modified and removed lines marked as you read, so a new file is visibly different from a planned change.
    • Click the item that wants this file and the plan opens on it. That row had looked like a button, with hover feedback, and had never done anything.
    • The intent is named in words — "create", "modify", "delete" — rather than encoded as the colour of a small triangle.
    • Files arriving from a running agent are clickable as they land.

    📖 A guide that covers the product

    The three-step "copy your MCP config" wizard is gone. In its place is a guide with a topic list down the side and 17 topics across plans, channels, review, budgets, tickets, terminals, system docs and the phone — each with prompts you can copy straight into a connected agent, so reading turns into doing. It opens once on a fresh profile and stays out of the way after that.

    The old wizard described five tools, one of which had never existed.

    🖥️ Things that were built but had no way in

    A whole class of feature existed only over MCP, with no button anywhere:

    • Plan budgets — a ceiling on what a plan may cost, with the spend visible on the plan.
    • Ticket sync — a plan's link to its Jira/Linear/GitHub issue, and how fresh it is.
    • Shared vs local plans — one click writes a plan into .codetrellis/plans/ so it can be committed, or keeps it on your machine only.
    • Plan revision history — every edit to a plan's title, status and description, scrollable.
    • The Timeline now shows every agent's activity. Twenty-one tools — remote terminal writes among them — were invisible to it.

    🐛 Fixes you would have noticed

    • open_project reported success having done nothing at all.
    • Two agents scanning at once collided; scans are now shared.
    • Every plan reported "0/0 actions" regardless of its contents.
    • The graph drew correctly while graph_snapshot answered empty.
    • A review after a rescan reported that no work had happened.
    • A plan reported work as done before anyone started it — a planned edit counted as complete because the file existed, which is true of every file you intend to edit. It now means the file actually changed.
    • A deleted plan kept its ticket forever, so the ticket could never be re-imported.
    • Opening a task made the plan's own page unreachable for the rest of the session — with it the budget, ticket, sharing and history.
    • There was no way to attach a file to a plan item from the item itself.
    • A project inside a larger repo listed the parent repo's changed files as its own.
    • Plans imported from a ticket belonged to no project, so drift, review and git context silently answered nothing.

    📱 Mobile

    • Review a plan from your phone — what landed, what did not, what nobody planned.
    • The Android companion ships again, and is covered by the signed checksum manifest like every other artefact.

    ⬇️ Downloads

    Platform File
    macOS (Apple Silicon) CodeTrellis-0.1.15-arm64.dmg — signed + notarized
    macOS (Intel) CodeTrellis-0.1.15-x64.dmg — signed + notarized
    Windows installer (NSIS) CodeTrellis-Setup-0.1.15.exe
    Windows portable CodeTrellis-Portable-0.1.15.exe
    Linux AppImage CodeTrellis-0.1.15-x86_64.AppImage / -arm64.AppImage
    Linux .deb / .rpm Debian/Ubuntu and Fedora/RHEL, x64 and arm64
    Android companion CodeTrellis-Companion-0.1.15.apk (sideload)
    iOS companion via TestFlight
    Checksums SHA256SUMS + SHA256SUMS.sig — signed manifest

    SHA256SUMS is signed with a key that never leaves the release machine, and the app carries the public half — so a download can be verified without trusting the server it came from. Check it yourself with shasum -c SHA256SUMS.

    📲 First-launch notes

    • macOS — signed & notarized, so it should just open: open the DMG, drag CodeTrellis to Applications. If you hit a Gatekeeper or "app is damaged" warning on an older download, clear it once: xattr -cr /Applications/CodeTrellis.app.
    • Windows — not code-signed, so SmartScreen may warn once → More info → Run anyway.
    • Linux (AppImage) — chmod +x CodeTrellis-0.1.15-x86_64.AppImage && ./CodeTrellis-0.1.15-x86_64.AppImage. Prefer .deb / .rpm where you have the choice: the AppImage ships with the Chromium sandbox disabled, and the native packages keep it.
    • Linux (.deb) — sudo apt install ./codetrellis_0.1.15_*.deb.
    • Linux (.rpm) — sudo dnf install ./codetrellis-0.1.15.*.rpm.
    • Android — not from the Play Store yet, so allow "Install unknown apps" for your browser or file manager, then open the APK. Pair by scanning the QR from the desktop.
    • iOS — install from TestFlight, then pair by scanning the desktop QR.
    Full release notes
  8. v0.1.14

    17 September 2026stable

    CodeTrellis v0.1.14 — the security hardening release. Take this one.

    Source lives at lionroseway/codetrellis. Binaries are published here so download URLs stay stable and need no authentication. Feedback via issues on either repo, or codetrellis.dev.

    ⚠️ Read this before upgrading

    • Every paired device must be paired again. The pairing and reconnect protocol changed. An older companion cannot connect to this desktop at all — it will not fail quietly, it simply will not pair. Re-scan the QR from the desktop.
    • Remote access is now off by default, and discovery and exposure are two separate switches rather than one. If you used your phone or reached the desktop across your LAN, turn it back on deliberately in Settings → Devices. A fresh profile exposes nothing.
    • Agents are authorised per tool now. Terminal control, settings changes and screen/clipboard/microphone capture are not granted to MCP clients by default. If an agent asks for one it is refused by name, and the refusal says where to turn it on.
    • No Android companion in this release. v0.1.13's APK will not pair with this desktop, and v0.1.14 shipped without a replacement — that was a mistake in our release tooling, not a decision. Use v0.1.15 if you need the Android companion.

    🛡️ Security

    CodeTrellis runs on a developer workstation with network reach into the systems it maps, so it commissioned an external review and worked the findings through gated remediation. This release is the result. The headline changes to how it behaves:

    • Loopback is no longer treated as an authorisation boundary. Any page in any browser on your machine can reach 127.0.0.1, so every local transport — the HTTP API, the WebSocket, and the MCP server — now authenticates with a per-launch capability token. Requests from an unexpected origin are refused outright rather than merely having their answer withheld.
    • Peer identity comes from the encrypted transport, not from anything a request can claim about itself, and reconnects are authenticated the same way the first connection is.
    • Sensitive filesystem access goes through a single boundary that resolves a path to the real file before deciding, rather than comparing strings — and project roots come from the projects you actually opened, never from the request asking.
    • The renderer is contained — a content security policy, navigation guards and a window-open handler, none of which existed before. The app displays content it did not author (plan bodies, spec docs, code), so this matters.
    • Debug routes that were reachable without authentication are gone.
    • Parsing is budgeted, so a pathological file cannot stall the backend.

    Each finding closed carries a test that fails without its fix, and the suite runs on every release rather than being asserted once.

    🖥️ Desktop

    • The packaged app opened to a blank window. Fixed — and the class of packaging regression behind it now has a CI guard.
    • macOS: the disk image is notarized, not just the app inside it. Gatekeeper assesses the DMG when you double-click it, separately from the app. A release could have a perfectly notarized app inside an unsigned DMG and still say "cannot be opened" — that is what was happening, and it is fixed.

    📦 Dependencies

    • Mobile moves to Expo SDK 57 / React Native 0.86, and xterm 6.
    • Desktop moves to Vite 7, web-tree-sitter 0.27, chokidar 5.
    • Production advisories are at zero, and the audit gate is ratcheted so they stay there.

    ⬇️ Downloads

    Platform File
    macOS (Apple Silicon) CodeTrellis-0.1.14-arm64.dmg — signed + notarized
    macOS (Intel) CodeTrellis-0.1.14-x64.dmg — signed + notarized
    Windows installer (NSIS) CodeTrellis-Setup-0.1.14.exe
    Windows portable CodeTrellis-Portable-0.1.14.exe
    Linux AppImage CodeTrellis-0.1.14-x86_64.AppImage / -arm64.AppImage
    Linux .deb / .rpm Debian/Ubuntu and Fedora/RHEL, x64 and arm64
    Checksums SHA256SUMS + SHA256SUMS.sig — signed manifest
    Android companion not in this release — see v0.1.15
    iOS companion via TestFlight

    SHA256SUMS is signed with a key that never leaves the release machine, and the app carries the public half — so a download can be verified without trusting the server it came from. Check it yourself with shasum -c SHA256SUMS.

    📲 First-launch notes

    • macOS — signed & notarized, so it should just open: open the DMG, drag CodeTrellis to Applications. If you hit a Gatekeeper or "app is damaged" warning on an older download, clear it once: xattr -cr /Applications/CodeTrellis.app.
    • Windows — not code-signed, so SmartScreen may warn once → More info → Run anyway.
    • Linux (AppImage) — chmod +x CodeTrellis-0.1.14-x86_64.AppImage && ./CodeTrellis-0.1.14-x86_64.AppImage. Prefer .deb / .rpm where you have the choice: the AppImage ships with the Chromium sandbox disabled, and the native packages keep it.
    • Linux (.deb) — sudo apt install ./codetrellis_0.1.14_*.deb.
    • Linux (.rpm) — sudo dnf install ./codetrellis-0.1.14.*.rpm.
    • iOS — install from TestFlight, then pair by scanning the desktop QR.
    Full release notes
  9. v0.1.13

    14 June 2026stable

    CodeTrellis v0.1.13 — a big reliability + mobile-companion release.

    The source repository is currently private. We're collecting feedback before the public source release — reach out via issues here or at codetrellis.dev.

    ✨ What's new

    📱 Mobile companion — major upgrade

    • Global navigation drawer (☰) — switch between paired desktops, jump Home, open App settings / Notification settings, pair a new device, or disconnect, from anywhere. No more losing your way once you're connected.
    • Push notifications — get pinged when an agent needs you (decision needed, stuck, context needed, hand-off) while the app is closed or backgrounded. Tapping a notification deep-links straight to the event. Presence-gated, so it never buzzes while you're already watching live.
    • One-tap notification bind — a Notifications screen that shows your exact push status (permission, bound-to-desktop) and lets you re-share your device token any time. The desktop confirms receipt, so you always know it's wired.
    • Connection resilience + clear status — a network blip no longer boots you to the device list. Drops now show a calm Reconnecting… while it recovers in the background; you only return to pairing after a genuine, long outage. The status pill reads plainly — Connecting… → Syncing… → Connected — so slow/VPN connects no longer flicker confusingly.
    • Terminal: full modifier surface — ⌃ Ctrl · ⌥ Opt · ⇧ Shift · ⌘ Cmd as sticky keys in both the quick bar and the keys drawer. Tap to arm, tap again to lock for chained shortcuts; they combine (⌃C, ⌃⇧→, ⌥f, …) and use standard xterm encoding so vim/tmux/readline see exactly what a real keyboard sends.
    • Smart, non-jarring launch connect; branded splash + living-graph background; haptics, adjustable terminal font, and transport hardening with an on-device diagnostics ring.

    🖥️ Desktop

    • Session persistence — keep the desktop awake while your phone is connected and/or an agent is active (configurable, battery-aware), with persistent on-disk terminal scrollback so hours of output survive restarts.
    • Channels polish — better surfacing and sorting of channel events, and item ↔ decision cross-linking so a decision shows the work it's anchored to.
    • mDNS hostname fix — running multiple CodeTrellis instances on one machine (e.g. a dev build alongside the packaged app) no longer causes macOS to rename your computer to "…-2". Instance identity is now liveness-aware and crash-safe.
    • File-tree restore in the explorer, database self-heal, and a planned/diverged/unplanned overlay on the sidebar.
    • MCP driver-tool navigation gaps repaired.

    🛡️ Reliability

    • Fixed a class of "ships broken" bundling regressions (runtime relative require() not surviving packaging) and added a CI guard so they can't recur.

    ⬇️ Downloads

    Platform File
    macOS (Apple Silicon) CodeTrellis-0.1.13-arm64.dmg — signed + notarized
    macOS (Intel) CodeTrellis-0.1.13-x64.dmg — signed + notarized
    Windows installer (NSIS) CodeTrellis-Setup-0.1.13.exe
    Windows portable CodeTrellis-Portable-0.1.13.exe
    Linux AppImage CodeTrellis-0.1.13.AppImage
    Linux .deb / .rpm Debian/Ubuntu and Fedora/RHEL
    Android companion CodeTrellis-Companion-0.1.13.apk (sideload)
    iOS companion via TestFlight

    📲 First-launch notes

    • macOS — signed & notarized, so it should just open (drag to Applications). If you hit a Gatekeeper/"damaged" warning on an older download, clear it once: xattr -cr /Applications/CodeTrellis.app.
    • Windows — not code-signed yet; SmartScreen may warn once → "More info" → "Run anyway".
    • Linux (AppImage) — chmod +x CodeTrellis-0.1.13.AppImage && ./CodeTrellis-0.1.13.AppImage.
    • Linux (.deb) — sudo apt install ./codetrellis_*.deb. (.rpm) — sudo dnf install ./codetrellis-*.rpm.
    • Android — allow "Install unknown apps", then open the APK. Pair by scanning the QR from the desktop.
    • iOS — install from TestFlight, then pair via the desktop QR.
    Full release notes
  10. v0.1.12

    7 June 2026stable

    CodeTrellis 0.1.12 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release — reach out via issues here or at codetrellis.dev.

    What's new in 0.1.12

    Bring Your Own VPN — reach your desktop from anywhere. The mobile companion now connects over your own VPN (e.g. Tailscale), not just the local network — and a pairing made at home keeps working when you're out, with no re-pairing.

    • Desktop advertises all its reachable addresses (LAN + VPN) in pairing and in its live state, so the companion can find it on any network; existing LAN pairings auto-upgrade to the VPN address.
    • Hardened for real mobile networks: fixed a WebRTC packet-size (MTU) issue that silently dropped data over VPN tunnels, and made state hydration retry until it lands (survives slow VPN connects and 4G↔5G handovers).
    • Companion niceties: cancel-connect + disconnect, quick-switch between paired desktops, a configurable request timeout (Settings → Connection) for slow links, and an Enter key in the terminal quick tray.

    Desktop file-explorer fix (installers rebuilt). The left explorer could show only changed files instead of the full project tree if the local database became corrupted (e.g. after a hard quit). This build:

    • self-heals a corrupt database on launch — the bad file is quarantined and rebuilt, and your plans re-import from their .codetrellis/ manifests — and decouples the file tree from database health so the explorer always renders the full project.
    • adds a plan-state overlay in the explorer: files show planned · in-progress · aligned · diverged · unplanned next to their git status, with folder rollups and a legend.

    If you installed an earlier v0.1.12 desktop build, re-download — the macOS / Windows / Linux installers were rebuilt with this fix (macOS re-signed + notarized). The Android companion APK is unchanged.

    Full release notes
  11. v0.1.11

    Stability fixes5 June 2026stable

    CodeTrellis v0.1.11 — Stability fixes

    • macOS hostname no longer drifts. The LAN-discovery service (so the mobile companion can find your desktop) was advertising under your Mac's own .local name, colliding with macOS's built-in Bonjour — which would rename your machine …-2.local, …-3.local after a crash. It now advertises under a dedicated codetrellis-<id>.local name and never touches your system hostname.
    • No more ghost discovery sessions. That advertisement id is now persisted per machine, so a crash + restart refreshes the same record instead of leaving stale "sessions" piling up — and discovery stays continuous (no flap, no spurious reconnects on paired phones).
    • Creating a new plan is fixed. A packaging regression could make "new plan" throw on the installed app (a backend module wasn't bundled). Resolved.

    Carries everything from v0.1.10: signed + notarized macOS builds (no Gatekeeper warning, no xattr -cr), self-healing database, and the CodeTrellis Companion heading to TestFlight.

    Full release notes
  12. v0.1.10

    Signed & notarized5 June 2026stable

    CodeTrellis v0.1.10 — Signed & notarized

    The big one for macOS: the app is now code-signed and notarized by Apple (Developer ID: AILAR Limited), so it just opens — no "unidentified developer" warning, no xattr -cr Terminal workaround. Download the DMG, drag CodeTrellis to Applications, and open.

    What's new

    • Signed + notarized macOS builds. The Gatekeeper warning and the xattr -cr workaround are gone.
    • Self-healing database. A new schema reconciler automatically heals additive column drift on upgrade, so moving to a new version no longer risks a migration crash.
    • CodeTrellis Companion (iOS). The mobile companion is now a branded build heading to TestFlight — watch your agents, plans, architecture graph, and terminals from your phone over a direct link to your desktop.

    Full release notes
  13. v0.1.9

    mobile companion + stability4 June 2026stable

    CodeTrellis 0.1.9 — the mobile-companion + stability release.

    A big release. Two headline themes: (1) the desktop backend is dramatically more reliable — the WASM-database memory-out-of-bounds crash class is gone, and existing DBs auto-heal schema drift on startup; (2) a full iOS / Android companion app, paired in seconds and giving you the desktop's plan workspace, channels, terminal, and dependency graph on the phone.

    The companion app is not in the App Store yet — it's going through certification. If you'd like early TestFlight / APK access, reach out via the issues tab on this repo or email — see "Mobile companion early access" below.

    Highlights

    • No more "memory access out of bounds" crashes. The desktop now uses a native SQLite (better-sqlite3) with WAL persistence instead of sql.js's WASM-in-memory engine. No memory ceiling, much faster, zero per-mutation full-DB exports.
    • Schema reconciler. Existing databases now self-heal on startup: any column declared in the schema but missing from your live DB (e.g. tasks.file_spec, tasks.symbol_specs) is added automatically. No more "no such column" crashes on upgrade.
    • Mobile companion app (TestFlight / APK). Pair in one QR scan, drive the desktop from your phone — plans, channels, terminals, graph, system docs. Real-time WebRTC + Bonjour discovery, no cloud.
    • Three new MCP tools for the mobile companion so any connected agent can drive the phone too: mobile_navigate, mobile_screenshot, mobile_present.

    Backend stability

    sql.js (WASM) → better-sqlite3 (native)

    The previous engine held the whole database in a fixed Emscripten WASM heap and re-exported the entire ~35 MB DB to disk after every mutation (~85 sites + a 30-second autosave). Past tens of MB the WASM heap faulted with RuntimeError: memory access out of bounds, which wedged every database endpoint until the app was restarted.

    The new engine is native sql, disk-backed in WAL mode, persists in place — no full-DB export churn, no memory ceiling. A thin sql.js-compatible shim (run / exec / export / close) means all ~290 existing call sites keep working unchanged. Your existing ~/.codetrellis/data.db is opened as-is; no data migration.

    Schema reconciler

    Every time the app starts, the reconciler parses the declared CREATE TABLE blocks and compares them to PRAGMA table_info on the live DB. Any column the declaration adds that the live DB is missing gets ALTER TABLE … ADD COLUMN-ed in automatically.

    This is the safety net for the "added a column to CREATE TABLE but forgot the matching ALTER" class of bug that bit tasks.file_spec in v0.1.8 (which broke get_plan_summary, post_channel_event, and the inspector's "load source").

    It's additive only — never drops or renames. Non-additive changes (NOT NULL with backfill, renames, indexes, data backfills) still go through the lazy migration block.

    Look for [DB] Schema reconciler added N column(s): … in the logs on first boot of 0.1.9.

    Frontend crash guards

    • sessions.filter is not a function no longer wedges the UI when the sessions blob comes back malformed.
    • The graph no longer throws nodes is not iterable when opening a plan whose project directory has been moved or deleted.

    Boot reliability

    • The active project is now restored on every boot — the desktop no longer reports "No project scanned" after a restart, even if the renderer hasn't issued a fresh scan yet.

    Mobile companion app

    An iOS / Android companion that pairs with the desktop in seconds and gives you full real-time access to your plans, channels, terminals, and dependency graph from anywhere on your network.

    Built with Expo + React Native. Real-time desktop ⇄ phone via WebRTC over Bonjour mDNS discovery (so it Just Works on your local network with no cloud, no signalling server). No data leaves your LAN.

    Mobile companion — early access

    We're getting the app through Apple's TestFlight and Google's internal-testing pipelines before public release. If you want early access to the mobile companion now, open an issue on this repo titled "Mobile early access" or email the address in the desktop app's About panel with your platform (iOS / Android) and TestFlight email / Google account.

    The desktop app at v0.1.9 already speaks the mobile pairing protocol — you can pair it the moment your test build is in your hands.

    Pairing & connection

    • One-scan QR pairing (Bluetooth-style flow): open Settings → Devices on the desktop, scan the on-screen QR on the phone, done.
    • mDNS / Bonjour discovery — the desktop advertises as <your-mac>.local; the phone finds it without typing IPs.
    • Auto-connect on launch — the phone reconnects to the last reachable desktop the moment it opens.
    • Reconnect on app foreground — coming back to the phone after a lock auto-restores the link via the AppState listener.
    • Conservative liveness heartbeat — no false-positive reconnects when the network briefly stutters.
    • Dead-peer reaping — zombie WebRTC connections (phones that walked out of range) are reaped server-side so the Devices list stays honest.

    Mobile features (parity rollout)

    The mobile companion now covers plans, channels, terminal, graph, and admin — broadly at parity with the desktop's plan workspace.

    Plans tab

    • Defaults to "all projects" — every plan across every CodeTrellis project on the desktop, not just the active one.
    • Browse, open, and create plans from the phone.
    • Drill into plan info, status, item tree, deviations.
    • Per-plan discussion channels — full channel rail on mobile (stuck / need-decision / need-context / handing-off / steer / weigh-in), with message threading and resolution.

    Plan authoring on mobile

    • Edit bodies and titles, post comments, set fields (status, assignee, blocked reason).
    • Create / delete items, add / remove item refs.
    • @-mention to address comments and channel posts to specific people / agents.
    • Editable titles + markdown for deviations and channel messages.
    • Body editor: Write / Preview toggle, writing-friendly font stack.

    Markdown rendering

    • Notion-style reading view for plan bodies.
    • Inline [[item]] / [[file]] / [[symbol]] / [[attachment]] chips render natively in the phone's markdown view — tap to navigate.

    Terminal panel on mobile

    • Real terminal via xterm.js running inside a WebView, streamed over WebRTC from the desktop's PTY.
    • Fit-resize so the terminal correctly tracks the phone's portrait / landscape size.
    • xterm.js is bundled offline — no CDN dependency, full air-gap.
    • Kill terminals from the phone.

    Graph on mobile

    • Interactive streamed dependency graph (live updates from the desktop's view).
    • Graph depth toggle — package / file / symbol detail levels.
    • Base mode for diff comparison against a pinned commit.
    • Git gutter showing changed files inline.
    • Graph source preview — tap a node, see the source for that file / symbol without leaving the graph.

    System docs, settings, projects, templates on mobile

    • Browse and read system docs (.codetrellis/docs/).
    • Mirror desktop settings — identity, MCP port, plan defaults.
    • Browse and open projects (with a Cancel button on the modal so you can back out cleanly).
    • Plan templates + import-from-disk.

    Handoff / mentions / presence

    • Handoff card UX on the phone when an agent posts a handing-off event.
    • @-mentions you receive ping the phone.
    • Presence indicators: see which other actors (humans, agents) are on a plan with you.

    New MCP tools (drive the phone from any agent)

    The desktop now exposes three new MCP tools that operate on the paired phone, not the desktop:

    • mobile_navigate(target, plan_uid?) — switch the phone's view: plans / channels / terminal / graph / system-docs / etc.
    • mobile_screenshot(panel?) — capture what the user is looking at on the phone (replies are chunked so screenshots of long pages no longer time out).
    • mobile_present(text, …) — post a narration card to the phone's Presence Pane (same surface as the desktop's, mirrored).

    These compose with the rest of the MCP API — any connected agent (Claude Code, Codex, Cursor, custom) can drive both the desktop and the phone in lockstep.

    Build & packaging

    • Cross-platform builds from macOS now work end-to-end with Rosetta installed. The afterPack hook (scripts/adhoc-sign.js) now checks the target platform (context.electronPlatformName) rather than the host, so cross-arch Windows / Linux builds from an Apple Silicon Mac no longer try to xattr a .app that doesn't exist.
    • werift WebRTC native deps are unpacked from app.asar so the nested node_modules resolution Just Works in packaged builds (no more MODULE_NOT_FOUND from the WebRTC stack).
    • asar packing disabled where it broke werift's nested module loader.
    • better-sqlite3 (native .node binary) is externalised in electron.vite.config so the build doesn't try to bundle it.
    • xterm.js bundled offline for the mobile WebView terminal — no runtime CDN.
    Full release notes
  14. v0.1.8

    3 June 2026stable

    CodeTrellis 0.1.8 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release; reach out via issues here or join the conversation at codetrellis.dev.

    Full release notes
  15. v0.1.7

    23 May 2026stable

    CodeTrellis 0.1.7 — installer downloads.

    The source repository is currently private while we collect feedback before the public source release. Reach out via issues here or join the conversation at codetrellis.dev.

    What's new in 0.1.7

    The theme of this release: the agent becomes a visible, accountable presence in the workspace. It can narrate what it's doing, drive the interface to show you, declare its intent up front — and get caught when it drifts from it.

    Agent Presence Pane (new)

    A floating overlay where an MCP agent narrates its work in real time — explaining a step, walking you through the architecture, or asking you a question. Speech uses the built-in, fully-offline Web Speech API (no API keys, no audio leaves your machine). Cards are colour-toned (neutral / success / warning / question), pace themselves on acknowledgement, and include a two-way reply box so you can answer the agent without leaving the app.

    Plan lifecycle management (new)

    The plan list grew up: search and filter by title, status or ID; multi-select with bulk delete; per-plan delete behind a confirmation dialog; and a database↔disk reconciliation surface that detects orphaned plan directories and prunes them. Deleting a plan now cleans both the database row and its on-disk files — from the UI and from agents alike.

    Drift detection, end to end

    Declare what a task will touch — files and symbols — and CodeTrellis checks reality against that declaration. The plan-to-reality matcher now correctly recognises satisfied targets and flags only the unexpected ones; detect_deviations surfaces off-plan files; accepting a deviation amends the plan, reverting clears it. Detection is fresh (no phantom entries lingering after a delete) and idempotent (no duplicate deviations on repeat runs).

    The dependency graph as a presentation surface

    Planned and diff overlays now show real plan alignment — on-track / planned / unexpected — instead of raw git counts. Scoping reliably filters to a subtree in every mode, and focusing a node centres it even in large 100+ node graphs.

    The agent drives the UI — visibly

    Navigation tools (open a plan, select an item, switch views) actually move the interface now; opening a plan brings the workspace forward even from the graph view. A subtle agent-action pulse glows at the screen edge whenever the agent changes something, so you always know what was you and what was the agent. Electron screenshots fixed.

    Integrated terminal

    Real command execution (newlines submit properly), active-tab focus control, a guard that stops an agent from writing into its own host terminal, and a fix for duplicate terminal tabs.

    A bigger, self-documenting MCP surface

    Many new tools across terminal control, graph navigation, screenshots, settings, logs, clipboard and UI control — and the agent skill guides now signpost the whole surface (including the Presence Pane) so a connecting agent discovers it on its own.

    Full release notes
  16. v0.1.6

    22 May 2026stable

    CodeTrellis 0.1.6 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release; reach out via issues here or join the conversation at codetrellis.dev.

    Full release notes
  17. v0.1.5

    21 May 2026stable

    CodeTrellis 0.1.5 — stability, durability, and bug fixes.

    What's new

    • Stability improvements — graceful shutdown, connection limits, and dev-mode stability hardening
    • Durability — incremental parsing and tree-sitter WASM durability fixes; hardened backend against parallel load and event-loop starvation
    • Bug fixes — general reliability improvements across the board
    • Marketing asset pipeline — automated 4K screenshot and 1080p video capture for codetrellis.dev
    Full release notes
  18. v0.1.4

    18 May 2026stable

    v0.1.4 — Plan Authoring, Integrated Terminal & UX Overhaul

    Major release covering Phases 13–17: plan export/import, plan workspace redesign, and integrated terminal with agent presets.


    Phase 17 — Plan Authoring & Execution

    • Integrated terminal with full ANSI color support — launch Shell, Claude, Codex, or Aider sessions directly inside CodeTrellis, each color-coded
    • Terminal works in desktop app — bidirectional IPC bridge for PTY I/O, terminals default to the project directory
    • Selection-driven planning (17.C) — select nodes on the graph, right-click to create plan items anchored to those files/symbols
    • Symbol-aware expansion (17.D) — plan items can reference specific functions, classes, and methods
    • Constraints & guardrails (17.F) — define boundaries for what agents should and shouldn't touch
    • One-click handoff (17.H) — hand a plan directly to an agent with pre-built context
    • Plan import (17.I) — import plans from GitHub Issues, Linear, Jira, or plain text
    • Live execution dashboard (17.J) — real-time view of agent progress against the plan
    • Approval gates (17.K) — require human sign-off before agents proceed past checkpoints
    • Drift detection UI (17.L) — visual alerts when agent work diverges from the plan
    • Completion retrospective (17.M) — summary view of what was planned vs what was delivered
    • Claim restrictions (17.O) — control which agents can work on which plan items
    • Cascade UI (17.P) — changes to parent items propagate to children
    • Readiness scoring — plans show a readiness percentage based on completeness of spec, tasks, and context
    • Plan templates — start from pre-built templates for common workflows

    Phase 16 — Plan UX Overhaul

    • V2 plan workspace replaces V1 as the sole experience — cleaner, faster, more intuitive
    • Progressive disclosure (16.B) — clean empty states, contextual actions appear when relevant
    • Plan dashboard polish (16.C) — improved sidebar, better navigation
    • Simplified +Add menu (16.D) — reduced from 10 options to 5 clear choices
    • Graph integration (16.E) — context menu on graph nodes, split view, live highlighting of plan-referenced files
    • Cmd+\ split view — keyboard shortcut to toggle plan/graph side-by-side
    • Drag-to-reorder in plan item tree

    Phase 15 — Plan Workspace Foundation

    • V2 plan workspace architecture laid down
    • Phase completion and transition to V2-only experience

    Phase 14 — Human-First Plan Workspace

    • Plan workspace designed for human authoring first, agent execution second

    Phase 13 — Plan Export & Multi-Device

    • Manual plan export/import (13.A) — export plans to disk, import on another machine
    • Auto-sync (13.B) — file-to-DB write-through with file watcher
    • Templates as publishable repos (13.C) — share plan templates via git
    • Settings surface + identity (13.D/E) — configure user identity for plan authorship

    Bug Fixes

    • Fix terminal in desktop app — Electron IPC shim now supports bidirectional WebSocket for terminal PTY I/O (was broadcast-only)
    • Fix terminal WebSocket URL parsing in Electron file:// mode — regex matching instead of URL constructor
    • Terminal defaults to project directory when a workspace is open
    • Multi-listener terminal service — WebSocket and IPC consumers coexist cleanly
    • Fix WebSocket "Invalid frame header" loop — noServer mode with manual upgrade routing
    • Fix terminal 500 error — node-pty upgraded for Node 25 compatibility
    • Fix plans/discover 404 — route ordering issue
    • Fix "Cannot update component while rendering" React warning
    • Fix duplicate React key warnings in PackageNode
    • Fix multi-agent contention — per-session MCP server instances
    • Fix Open Project regression in packaged app
    • Fix plan auto-sync flake — pre-mkdir plans directory before watcher

    E2E Testing

    • E2E harness Phases 1–3: fixture scaffolding, scripted MCP agent, multi-agent contention tests, plan-export round-trip, cross-system edge tests
    Full release notes
  19. v0.1.3

    29 April 2026stable

    CodeTrellis 0.1.3 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release; reach out via issues here or join the conversation at codetrellis.dev.

    Full release notes
  20. v0.1.2

    29 April 2026stable

    CodeTrellis 0.1.2 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release; reach out via issues here or join the conversation at codetrellis.dev.

    Full release notes
  21. v0.1.1

    29 April 2026stable

    CodeTrellis 0.1.1 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release; reach out via issues here or join the conversation at codetrellis.dev.

    Full release notes
  22. v0.1.0

    28 April 2026stable

    CodeTrellis 0.1.0 — installer downloads.

    The source repository is currently private. We're collecting feedback before the public source release; reach out via issues here or join the conversation at codetrellis.dev.

    Full release notes