The hostile input tests compared elapsed time against fixed limits, so they measured the machine as well as the code. They fail on slower or loaded builders, such as the nixpkgs x86_64-linux check phase, even though rendering stays linear. Compare the CPU time of an input against one four times as long instead. Linear rendering gives about 4 and a quadratic regression about 16. CPU time is needed because a wall-clock ratio inflates under bursty load, when a short run fits between bursts and a long one does not. Rendering past the reference limit gets its own test, since the link count cannot catch a limit that stops linking but keeps rescanning. The bare reference test now puts a valid reference before the long run, so giving up is visible in the result without any timing. AI-assisted: Claude Code (claude-opus-5-5)
Radicle Desktop
This desktop application lets you interact with Radicle, a peer-to-peer code collaboration and publishing stack.
It lives in the desktop/ folder of the radicle-gui repository, next to the
Radicle web explorer. Install dependencies at the repository root, and run all
other commands below from desktop/.
Installation
See radicle.dev/desktop#install.
From source
Prerequisites:
- Node.js (24 or higher) and npm
- Rust toolchain (1.77 or higher)
- Tauri system dependencies
On Windows, NPM's script shell must be set to a POSIX compatible shell such as Git Bash:
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
Run the following commands to build the desktop app locally:
git clone https://seed.radicle.dev/z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git radicle-gui
cd radicle-gui
npm ci -w desktop
cd desktop
npm run tauri build
Then run one of the builds that the script outputs at the end.
Development
To start the app in development mode with hot reload:
npm run dev
To log how long every backend command takes, for performance work, set
VITE_LOG_INVOKE_TIMINGS=true. Each call then prints
[invoke] <command> <ms>ms to the browser console (visible at debug level):
VITE_LOG_INVOKE_TIMINGS=true npm run dev
A dev build uses its own identifier, so it runs next to an installed release,
and it never registers itself as the handler for rad: links. On Linux and
Windows, open a link in it by starting the dev binary a second time with the
link as its argument, while npm run dev is running:
target/dev-without-assertions/radicle-desktop rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
On macOS links only reach app bundles. Quit the installed app, then build and open a debug bundle:
npm run tauri build -- --debug --bundles app
Releasing
Releases are driven by an interactive, phased script. Start one with:
scripts/release --phase prep --version X.Y.Z
Each phase does its mechanical work, then prints the manual tasks for its gate
and the exact flag to resume with. List the phases and see the configuration
with scripts/release --list and scripts/release --help. Releases are tagged
releases/desktop/<version>.
Getting in touch
To get in touch with the maintainers, sign up to our official chat on Zulip.
License
The UI is distributed under the terms of GPLv3. See LICENSE for details.