On Linux, Tauri derives the deb/rpm package name from productName with
no way to set them independently. We override productName to
radicle-desktop so the package is named correctly, which would otherwise
also force the launcher entry to read radicle-desktop.
Add a custom .desktop template that hardcodes Name=Radicle while keeping
the package name unchanged.
Listing a repo's refs for the peer selector resolves every remote's
signed refs through libgit2, opening a file descriptor per packfile it
reads. Radicle storage is a git monorepo that can hold thousands of
packfiles, so under the low default limit a Finder-launched bundle
exhausts descriptors and objects in the unopened packs spuriously fail
with "missing commit", leaving the peer selector stuck loading.
Raise the limit to 4096 at startup, matching heartwood's binaries.
Force-bundle libjpeg.so.8 (Fedora/RHEL lack the libjpeg8 ABI the bundled
gdk-pixbuf needs) and strip the mismatched bundled glib core so the whole
glib stack resolves from the host. Repackage with mksquashfs, reusing the
AppImage's own runtime, so the step fetches nothing from the network.
Bump the @tauri-apps/* npm packages and the matching Rust crates
together. The Tauri CLI rejects builds when the @tauri-apps/api npm
package and the tauri Rust crate are on different major/minor versions,
so they must move in lockstep.
This handler wasn't being called by any code and diverges from a typical
`rad init` flow, as it creates an empty repo with an initial empty
commit. Removing this as it reduces maintenance burden
- bump radicle 0.22 -> 0.24, radicle-job 0.5.2 -> 0.6, and
radicle-surf 0.27.0 -> 0.27.1 to match heartwood
- raise radicle-tauri rust-version to 1.86 for radicle-job 0.6's MSRV
- migrate to the 0.24 COB store API: signer moves onto the cache via
WriteAs, so issues_mut/patches_mut take &signer and the per-call
signer arg disappears from every issue/patch action method
- pass ReadOnly to JobsStore::open for radicle-job 0.6's new Access
type param
- replace the removed Profile::socket() with home().socket_from_env()
and the removed WriteRepository::set_head() with the
set_canonical_symbolic_refs + set_default_branch_to_canonical_head
pair used by rad::init
- split the old ssh::agent::Error into AgentError + ConnectError so
Agent::connect failures still bubble through ?
- swap SignedRefsInfo::is_ok() (gone in 0.23) for an explicit
matches!(_, Some(_)) on the new None/Some/NeedsMigration enum
The previous entry hardcoded a Vite-generated content-hash filename
(onig-CwjCXqnP.wasm), which breaks whenever the file's hash changes
between builds. Replacing it with 'self' covers all same-origin assets
regardless of filename.
When we switched off debug-assertions in the backend it inadvertently
also disabled browser devtools in the app. We need those in dev mode to
debug things, this brings them back.
The `radicle` crate switched its OID `struct`. The new `struct` does not
convert to/from the OID `struct` in `radicle-surf`. Introduce an ad-hoc
conversion.
Redesign the entire app with a new UI kit. Typography, colors, icons,
avatars, and border radii have all been updated for a more polished,
consistent appearance that matches our other products like
radicle-explorer.
- Replace blockies-based avatars with a new DID-based avatar system
- Move Settings and Create Issue into fullscreen modals
- Change the default theme to follow the system theme
- Remove window decorations on macOS for a cleaner, more native feel
- Update the app icon
- Fix popovers and tooltips
Navigation:
- Rewrite app navigation and layouts
- Add a sidebar that gives you access to all your repos
- Change the startup screen to open directly to the notification inbox
- Add a getting started guide shown to new users on first launch
Settings:
- Add a setting to disable the notification badge
- Add a code font setting
Bug fixes:
- Fix reactions and edits incorrectly targeting the root comment
instead of the intended reply
- Restrict issue/patch state, labels and assignees to delegates only