CHANGELOG

CodeRook preview

Current product milestones for the website, Worker API, storage pipeline, and native desktop.

October 2026

  • Fixed: large installers were wrongly blocked as malware. The scanner ran out of time on big files and that was read as a detection; it now has half an hour a file, a time limit is never counted as a finding, and every file blocked this way is offered again, checked once more, and its owner told.
  • Pull requests open inside the project, as a tab beside Issues and Actions, rather than on a page of their own. Lines can insist on named checks and on their code owners’ approval (from a CODEOWNERS file), pull requests can merge by themselves once nothing stands in the way, and can be squashed. See What a line insists on.
  • Actions grew up. Whoever started a run hears when it fails and again when it is fixed; every run is listed with filters, can be re-run, and shows its output live; History ticks each save. Actions can start on issues, releases, merges and schedules, take secrets, run a matrix, wait for other jobs or for approval, stop at a time limit and run one at a time, and each run gets a token to comment, label and release. Workflows can be YAML files in .rook/workflows. See Workflow files.
  • Issues keep a record of what happened to them, close as completed, not planned or a duplicate, note every mention by number, and can be filtered by label and assignee. Forms ask the right questions, rules label, assign, welcome and close quiet issues, and labels have descriptions and a starter set. The list now names who opened each issue (it showed your own name on all of them). See Issues.
  • Releases can be drafts, sit on update channels, be marked as pre-releases and have notes written from what changed. Every public release has SHA256SUMS and a signed manifest (cbx verify), and lockfiles are checked against OSV for known vulnerabilities (cbx deps, and a check on pull requests).
  • Anybody signed in can fork a public project and offer changes back as a pull request, and report a vulnerability privately to its owner. See Forks and Reporting a vulnerability.
  • Pull requests of CodeRook’s own. Every project has a Pull requests tab: open, merged and closed, with search and “waiting on my review”. Each one has a conversation with comments on lines, replies, resolved threads and suggested changes applied as a save; the line’s saves; its checks; and every changed file line by line with “Viewed” ticks. Beside it: reviewers, labels, the issues it closes, drafts, close and reopen, and a box saying exactly what stands in the way of merging. An approval stops counting when new saves land on the line. The same from the terminal with cbx pr. See Pull requests.
  • Private files in a public project: name folders and file types in Settings, or with cbx private, and everybody outside the project is served every version without them. See Keeping files private.
  • Fixes that matter for safety. A file stored on CodeRook can no longer be claimed by somebody who only knows its digest; the bytes have to be sent. A published release’s files cannot be removed or swapped, apps that update themselves get the highest version number rather than the most recently named release, and labels on an issue can only be set by people who can change the project.
  • Actions: runs can be cancelled (cbx cancel, or the Actions tab), cbx logs --follow shows a run as it happens, a run nobody picks up is ended with the reason, the Actions tab shows real figures, and CodeRook’s own runners give every account the same 1,000 minutes a month. Release files show their download counts, and whoever opens, replies to or is assigned an issue now hears about it.
  • Malware checks on what people hand out and what they propose. Every file attached to a version is scanned before anybody outside the project can download it, and one that fails disappears from the release, the latest-release document and the update feed, with whoever attached it and the owner told what was found. Every proposal has a required coderook/malware check on what it adds or changes, naming the file when something is found. Tokens can be limited to one project, so a CI system or review tool reports checks on its proposals without reaching anything else on the account.
  • Mod repositories for games. Whoever makes a game can set up a place its players get mods from, with its own rules: which file types a mod may hold, archives inside opened and checked too, the manifest each upload carries, size limits, and whether anybody or only the owner uploads. Modders publish with their own accounts; nothing is listed until it passes the rules and a ClamAV scan, and programs and scripts are refused everywhere. The game reads a catalogue signed with the repository’s own key, from requests signed by its official builds. It is the service ZT1-Engine’s mod Lab already uses, opened to every game: cbx mods create, cbx mods publish, and the protocol in the docs.
  • Command line 0.35.0: cbx mods, for the above, and a FreeType or any other source folder named cache is no longer refused as “a browser profile”; a folder called Cache only counts as one when what is inside is a browser’s cache. Also, cbx clone and cbx get survive a connection that drops partway through a file. They used to stop on the spot with the single word “terminated” and leave a .incoming folder behind; now the file is tried again, carrying on from the byte it had reached where the service allows, while the files that already arrived stay put. If one still cannot be fetched, the message names it and the reason, and nothing is left behind.
  • Many saves into one project at once. Measured with up to eight agents saving into a 14,108-file project on the live service, saves used to fail about one time in five once they overlapped; none of a hundred failed afterwards. The faults were a database deadlock between a save and other people’s uploads, upload plans that cancelled each other over a shared chunk, and a storage call made the wrong way. The same work made a single save on that project about three times quicker (24 s, from 61–87 s) and cut how long a save holds the project from 3.3 s to 2.1 s, so one project can take about 40,900 saves a day. The numbers, and Git and Anthropic’s Scion beside them, are on Why; the homepage timeline now shows Piper, Sapling and Scion alongside CBX.
  • Project pages, laid out the way GitHub and GitLab users already read one.
    • The file list shows, beside every file and folder, the version that last changed it and when, and folders open into their own list with a path above them. It no longer scrolls inside a box of its own.
    • Files open with line numbers and syntax colouring, beside a tree of the project; a link to a line lands on it, and Markdown files show a preview.
    • Releases have a page of their own: the notes, every download as a link, checksums and updater files folded underneath, and the addresses an app or a script reads them from.
    • Explore lists every public project, with search, sorting and licence filters. It had been showing only the newest twelve.
    • Every control shows that it can be pressed, a whole row opens what it names, the address says which project you are in so a reload keeps you there, and profile pictures appear wherever initials were drawn instead.
  • A release’s downloads can be public while its source stays private, so one project can ship its own app without a second, public project for the installers: cbx release 1.4.0 --downloads public, or Make downloads public in History. The update feed and /releases serve it; the source routes do not. Command line 0.34.10 adds the option and shows who can take each release in cbx releases.
  • Opening a large project is faster: a version’s file list is kept once it has been built, so a 19,000-file project opens in under half a second instead of three and a half.
  • Desktop 0.41.16 and command line 0.34.9: a small change to a big project now costs what the change costs.
    • A save used to describe every file in the project to change one of them, and downloaded the whole file list three times. It now sends only what changed and what was removed, and keeps the last version’s list in the project’s own .coderook folder. Changing one line in a 6,628-file project went from a 2.3 MB request and three list downloads to a 578-byte request and none, and from 23 seconds to 11.
    • Restoring a version from History failed for most projects with “does not match the total of its chunks”: small files stored together in a pack were restored as empty lists of pieces. Fixed on the service, so it works from every app.
  • Serving an app its own updates from a public project is now easy to find, for people and for AI assistants alike. api.coderook.com says what the API offers, the public routes are described for tools at openapi.json, llms.txt has a section on building on CodeRook, and the Claude connector can check whether a project is ready to update its app and give the address to use. See Updating an app from CodeRook.
  • Desktop 0.41.15 and command line 0.34.8, after a 5 GB game was saved through two dropped connections, the app was updated in place, and one project was saved from two folders at once:
    • A file published with its credentials on purpose kept them for one more save and then lost them, after which it could not be downloaded (“did not arrive intact”). Fixed, and every version that had already lost one has been repaired.
    • Desktop: while the connection is down, the panel says it is waiting for the connection, with a clock, instead of showing the last figure and an estimate of hours. The time left is averaged over about twenty seconds, so it no longer jumps between minutes and hours.
    • Desktop: installing an update waits for a save that is running, and closing the window during a save asks first.
    • A test suite’s made-up Slack token (“xoxb-test-…”) is no longer taken for a real one.
  • Desktop 0.41.14 and command line 0.34.7, from a round of saves of real folders (a game, an install disc, four versions of a source tree, media and a folder of awkward files):
    • Renaming or moving a folder no longer uploads it again. A file is matched to the copy the project already holds by its contents, wherever it was before.
    • A file that changes while it is being saved (a log or a game writing as you save) stops the save with a plain explanation, instead of failing with “not part of what it asked to send”.
    • A file another program holds open, or one your account may not read, is named for what it is, and a first save refused for it no longer leaves an empty project behind.
    • A save that does not fit your storage says how much it needs, how much is free and what would make it fit.
    • Command line: a plain cbx submit after deleting files now says they are still in the saved version and how to remove them, instead of “this folder matches the saved version”; cbx status marks new files as new; and “1 versions” and “1 files” read properly.
  • Desktop 0.41.13 and command line 0.34.6, from saving a copy of Blender:
    • A project with the same file in several places no longer fails partway through with “This save is sending a file that was not part of what it asked to send”. The save now sends exactly the bundles of small files it priced.
    • Public certificate bundles (cacert.pem, which comes with every Python that has pip) are no longer refused as credentials. A .pem is opened and judged by what it holds; one with a private key in it is still refused.
    • A project that already has a licence, under any name (LICENSE.md, COPYING, a license folder), is never given a second one, and adding the default licence can no longer fail a save.
    • Desktop: a save no longer waits before starting while it counts changed lines. That took 104 seconds on Blender and showed as “Checking files to send”. It now runs alongside the save and skips files with no lines.
  • Desktop 0.41.12: the upload bar no longer sits at 99% at the end of a large save. It follows the bytes rather than the file count, so a project carried by a few big builds is no longer “most of the way” the moment its small files land; reading a large file moves it too; and batches of small files count as they go instead of all at once when each one lands. Once the last byte is out, the panel says it is waiting for CodeRook to confirm the last files, then “Recording 3,003 files on CodeRook” with a clock, instead of a number that will not tick over. Time left shows while sending, once there is enough to judge by.
  • Command line 0.34.5: the same progress fixes as the desktop. Reading a large file reports how far it has got instead of standing still until it is finished, and batches of small files count as they go up rather than all at once when each one lands, so the end of a save no longer looks like it has stopped.
  • Command line 0.34.4: a folder holding two copies of the same file sends it once; the copy waits for the first and costs a question rather than a transfer. Offline now reads as offline (“its address could not be looked up, which usually means this computer is offline”) instead of a bare error code, and no failure is reported as just “fetch failed”.
  • A save whose batch held two identical files no longer fails with “Internal server error” and falls back to sending every file on its own.
  • Command line 0.34.3: inviting somebody works again. cbx people --invite asked for a role the service does not have; it now invites with write access and prints the invite link in case the email goes astray, and cbx people --accept <link> joins a project from the terminal. The warning before a save no longer promises a merge that does not happen: different lines of a text file combine on their own. Conflicts are named in plain words, cbx merge lists --both, NO_COLOR is honoured everywhere, and “1 files” reads “1 file”.
  • Retrying a save that was kept on a merge now reports the merge instead of “already saved”, and cancelling a merge lets the same upload be made again. The merges page names each conflict in plain words too.
  • Films: five short films about what CodeRook does, every screen in them a real recording.
  • The free plan has no monthly upload steps. Its storage allowance is the only limit, as it is on yearly billing; the steps (30% of the month’s allowance, then 60%, 90% and all of it a week apart) apply to monthly billing only. See pricing.
  • Command line 0.34.2: cbx link stands a folder on the head of its line, not the newest version in the project. After cbx undo the two differ, and the first save from a newly linked folder was refused once everything had uploaded. It also stops calling the free plan “Annual”.

September 2026

  • CBX is open source, under the Apache License 2.0: the engine, the cbx command line, and written specifications of the storage format and the sync protocol. A folder can now keep its own history with cbx init, and save, branch and merge offline, then cbx push and cbx pull with CodeRook. Command line 0.32. See the docs and the source at github.com/AlexC1991/cbx.
  • Pages is built: a public project can be served as a website from its published versions — a Unity or Godot game, a Vite, React or Next.js build, or plain HTML. Set it up under Settings → Pages with Set it up for me, or with cbx pages auto. Each project gets its own address, and sites go live once the Pages domain is. A project with a live site shows a Play button on its public page. See the docs.
  • A signed-in account that is not on a project now sees exactly what its public page shows: the named versions nobody hid. Before, any signed-in account could read every save of a public or unlisted project through the API, unnamed commits and hidden versions included. Hiding a version also now takes it off the public page; before, it only looked hidden.
  • Changing who can see a project, what AI may do with it, or making a save public (Make public in History, cbx promote, cbx release, a pushed tag) now needs the project's owner or an admin; anyone else with push access is told access is denied. Anyone with write access can still hide a version, so a mistake can be taken down without waiting. cbx visibility sets a project's visibility from the command line.
  • A line of work can be proposed into main — Propose a line on the Merges page, propose in the desktop application, or cbx propose. Proposals can ask named people to review them, and a line can require approvals before anything lands on it.
  • A protected line now refuses saves made straight onto it, from every client and from git push, so changes reach it through a proposal. Before, protection guarded only restores and overrides.
  • Actions start themselves: on every save, when a line is proposed, or only by hand. One that runs on proposals reports its result as a check on the proposal. Set it with cbx actions or on the Actions screen.
  • A file git already tracks is sent even when a .gitignore rule matches it, the way git itself treats it. A project whose rules said storage/ no longer arrives without a committed source folder of the same name.
  • A save holding anything inside a .git directory is refused on every route, so a fetched project can never write over a git checkout’s own settings.
  • On the website, naming a save and putting it on the public page is now Make public, undone with Make private, and the project tab listing every save is called History.
  • The desktop application sends a save when you press Save, and stops to ask again only when the account is close to its storage or monthly upload allowance.
  • A project’s update feed answers at its own address, saying which platforms the newest release can update, instead of reporting that it needs a sign-in.
  • A project now has one Download project button holding every way of taking a copy — the cbx or git command, opening it in the desktop application, or a zip. It replaces the separate “Get this project” and “Download” controls, which asked you to know the difference before you had the project at all.
  • The desktop application opens a project straight from a link on this site, whether it is already running or closed. A project with no copy on the machine offers to clone it, rather than showing a list of everything. Needs desktop 0.31.1 or later.
  • The desktop application has a light theme, and follows the desktop’s own setting unless you tell it otherwise. Minimising can put it in the system tray instead of the taskbar. Both are in Settings › Appearance, in 0.32.0.
  • A folder that has been moved, renamed or deleted since it was last opened now offers to locate it, clone it back, or drop it from the list — rather than reporting that it cannot be read and stopping there.
  • Links inside a README open the file they point at instead of downloading it, and a file you are reading now has its own address to send somebody.
  • A public project shows its licence again. Every project was reporting “no licence — all rights reserved” however it was actually licensed.
  • A new page setting out what CBX is for, and the axis it is not competing on.
  • Getting started names the command it installs, so the steps can be followed from an empty machine without reading further down.
  • Profiles show when an account was opened, and a new account no longer reads as though something failed to load.

August 2026

  • The service now enforces a project’s own .gitignore. A version carrying files its rules exclude is refused, so the check no longer depends on which client sent it.
  • Uploads are scanned for credentials pasted inside ordinary files, not only for files that are credentials by name.
  • The file picker now warns about folders belonging to a program rather than to your work, and can untick them in one click.
  • Archive downloads read each stored pack once, including for projects with repeated files.
  • Restoring a backup is now a written, tested procedure rather than a file nobody had ever replayed.
  • Uploads plan and send by the same size threshold, so projects of many mid-sized files batch as intended.
  • Added per-version visibility, licences, abuse reporting, and the full set of ready-made ignore rules.

July 2026

  • Added public repository pages and crawler-safe embedded cards.
  • Added real repository, version, collaboration, storage, and billing workflows.
  • Added Google and GitHub OAuth plus secure desktop handoff.
  • Added one-time password recovery and transactional collaborator invitations.
  • Added the desktop workflow and portable Windows preview.