Commit Graph
203 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš 1ca4f76575 Trim the diff payload to a manifest
The tree-sitter highlighter goes with it: the hunk types name its
`Paint` spans and it implements `ToPretty` for them, so neither side
can be removed on its own.
2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš 42a141bd8b Render patch changes with Pierre 2026-08-14 17:30:46 +02:00
Rūdolfs Ošiņš 7a5fa363be Remove unused patch read commands and diff helper
`revision_by_patch_and_id` and `review_by_patch_and_revision_and_id`
were registered as Tauri commands but never invoked: the patch view
resolves a revision or review from the revisions it already holds. Drop
the commands, their registrations and the `revision_by_id` / `review_by_id`
port methods, which had no other callers.

`fileDiffName` in `diffText` has had no callers since it was added.
2026-08-10 12:54:39 +02:00
Brandon Oxendine d19d1f21f1 Add patch deletion 2026-08-10 12:54:39 +02:00
Brandon Oxendine 62e150c29a Rebuild the patch page, review UI, and activity timeline 2026-08-10 12:54:39 +02:00
Rūdolfs Ošiņš d559015e3d Remove redundant surf Oid conversions
radicle-surf 0.29 switched from radicle-git-ext to radicle-oid for
its Oid type, making radicle_surf::Oid and radicle::git::Oid the
same type. The crate::oid::{from_surf, into_surf} helpers were
therefore no-op round-trips through git2::Oid.
2026-07-28 09:25:52 +02:00
Rūdolfs Ošiņš 6e1472d8ab Release v0.14.0 2026-07-27 17:13:31 +02:00
Rūdolfs Ošiņš 935b02308a Upgrade rust dependencies
Upgrade all radicle-* dependencies to the latest versions regardless of
cooldown and the remaining rust dependencies honoring cooldown period.
2026-07-27 15:19:45 +02:00
hlatimer266andRūdolfs Ošiņš 74aaa6ef14 Use configured explorer and seed for links
explorerUrl() hardcoded both the seed ("iris.radicle.network") and
the explorer base ("https://radicle.network"), so every "Copy Link"
and "Open in …" action ignored the user's config and could point at
a host that does not replicate the repo.

Expose publicExplorer and preferredSeeds on the Config type (both
already carried by radicle::profile::Config) and thread config
through to every explorerUrl() call site. URLs are now built from
the publicExplorer template, filling $host from the first preferred
seed (falling back to rosa only when none are configured), and link
labels show the configured explorer's host.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-07-21 13:26:31 +02:00
justarandomgeek 7fe26dc4e5 Fix console window flashes when navigating repos on Windows 2026-07-21 12:05:55 +02:00
Rūdolfs Ošiņš e7b6d054d4 Release v0.13.0 2026-07-03 12:35:51 +02:00
Rūdolfs Ošiņš 9bd20fa15c Move patch pagination into the patch service 2026-07-03 11:33:12 +02:00
Rūdolfs Ošiņš ce5e270ecb Open the COB cache database once per driver 2026-07-03 11:33:01 +02:00
Rūdolfs Ošiņš 151db44c28 Move issue pagination into the issue service 2026-07-03 11:32:58 +02:00
Rūdolfs Ošiņš 1ba7369392 Generate copyable patch text via libgit2 2026-07-03 11:32:33 +02:00
Rūdolfs Ošiņš f568125aa7 Compute diff stats via git diff --numstat
PatchTeaser requests diff_stats per row, and each call re-opened the
whole repo through libgit2-surf, so a list of patches serialized into
tens of seconds on a large repo. Shell out to `git diff --numstat`,
which opens and diffs in one fast pass, falling back to the surf diff
when git is unavailable.
2026-07-03 11:31:50 +02:00
Rūdolfs Ošiņš 0bfe2d7220 Speed up opening files in large repositories
repo_blob and repo_readme resolved the blob through radicle-surf, which
also walks history to find the last commit that touched the path.
libgit2 ignores the commit-graph and diffs every commit, so opening a
file last changed long ago took a long time and varied by how far back
the file changed, not by its size.

Resolve the content with a direct tree lookup and the last commit via
`git rev-list -1`, falling back to the libgit2 walk when git is
unavailable.
2026-07-03 11:30:51 +02:00
Rūdolfs Ošiņš 2bfd580bbe Count commits via git rev-list with bitmaps
libgit2's revwalk ignores the pack bitmap and commit-graph, so counting
walks every commit. Shell out to `git rev-list --count --use-bitmap-index`,
which uses those indexes, and fall back to the revwalk if git is
missing, too old, or errors, so the result is unchanged, just faster on
maintained storage.
2026-07-03 11:30:07 +02:00
Rūdolfs Ošiņš 5b121b131a Add a diff actions menu with copy and save to disk
Replace the file-header and whole-diff copy buttons with a popover menu
offering "Copy to clipboard" and "Save to disk".
2026-07-03 11:28:57 +02:00
Rūdolfs Ošiņš 32b1d0e272 Restore list scroll position on back/forward
Navigating away from a list and back via history (the sidebar
back/forward buttons) returns to the same scroll position with the
previously loaded pages intact, instead of refetching only the first
page at the top.
2026-07-03 11:27:58 +02:00
Rūdolfs Ošiņš 8970fd6f68 Project issues through a timestamp-ordered SQLite query
list_issues previously read through heartwood's id-ordered issue cache,
forcing it to load and sort every issue in memory on each page. Mirror
the patch path instead: a domain/issue Service backed by an IssueStorage
adapter that queries the issues table directly.
2026-07-03 11:26:36 +02:00
Rūdolfs Ošiņš ac92fc9197 Omit issue body from list responses
The issues list shipped each issue's full root comment (body) over IPC,
but the teaser never renders it, only the detail view does. Make
Issue.body optional and add an Issue::summary constructor that skips it;
list_issues now builds summaries while issue_by_id keeps the full body.
2026-07-03 11:26:16 +02:00
Rūdolfs Ošiņš e1b940b21d Paginate the issues list view
The issues list loaded every issue at once and rendered them all.
Paginate it the same way as commits and patches.
2026-07-03 11:26:03 +02:00
Rūdolfs Ošiņš 239cc84bbf Show Linux launcher name as Radicle
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.
2026-06-10 14:00:58 +02:00
Rūdolfs Ošiņš 3abba53437 Release v0.12.0 2026-06-09 13:55:44 +02:00
Rūdolfs Ošiņš 411e2a9126 Raise open-file limit at startup
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.
2026-06-05 10:59:59 +02:00
Rūdolfs Ošiņš 063b7f8d01 Run heavy read commands on the blocking pool 2026-06-04 18:04:33 +02:00
Rūdolfs Ošiņš d2441f1b3a Speed up commit count with a direct revwalk 2026-06-04 18:04:33 +02:00
Rūdolfs Ošiņš efea7f1ab2 Add peer selector to repo source browsing
Introduce a peer/branch/tag selector in the repository source and commits
views, letting you browse the canonical refs or any peer's namespace.
2026-06-04 17:19:31 +02:00
Rūdolfs Ošiņš 857d68a1e9 Fix Linux AppImage on non-Debian distros
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.
2026-06-02 14:32:13 +02:00
Rūdolfs Ošiņš 657ac9a6c1 Release v0.11.0 2026-05-22 12:33:32 +02:00
Rūdolfs Ošiņš c651ef7779 Exclude job COBs without runs from list_jobs 2026-05-21 15:56:53 +02:00
Rūdolfs Ošiņš 071338d4d0 Work around alias lookups not working
Aliases advertised via i2p/tor would not resolve when the features
aren't compiled in. This is only a workaround, it would be better to fix
upstream.
2026-05-20 11:01:28 +02:00
Rūdolfs Ošiņš 3057fd7644 Fix clippy lints for Rust 1.90 2026-05-19 17:40:37 +02:00
Rūdolfs Ošiņš 7ea1f580c8 Fix inbox show all and align group filters 2026-05-19 17:16:09 +02:00
Fintan Halpenny aa767003de crates: Use Edition 2024 2026-05-19 11:40:52 +01:00
Lorenz Leutgeb 9a474a4258 tauri/config/bundle: Add category and homepage
To allow desktop environments to list the app alongside other
development tools, set the appropriate category in the Tauri bundle
configuration.

See:
 - https://radicle.zulipchat.com/#narrow/channel/392584-Feedback/topic/Purely.20eastetic.20change.20for.20radicle-desktop/with/595736519
2026-05-18 09:39:49 +02:00
Rūdolfs Ošiņš 3e01bafb71 Bump tauri 2.5/2.10 -> 2.11
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.
2026-05-13 12:31:36 +02:00
Daniel Norman 3fc73a0b89 Fix contributor filter in list_repos & repo_count
- the previous list_repos / repo_count predicates only matched
  SignedRefsInfo::Some, so a forked repo whose sigrefs predate the
  current FeatureLevel (NeedsMigration) was hidden from the
  contributor view and undercounted
- add is_contributor helper so the two call sites can't drift again
  (they already had — list_repos was inverted from repo_count after the
0.22 sigrefs refactor)

See discussion for more info
https://radicle.zulipchat.com/#narrow/channel/369277-heartwood/topic/.60SignedRefsInfo.3A.3ANeedsMigration.60.20and.20local.20signed.20refs/with/594265582
2026-05-12 11:35:52 +02:00
Daniel Norman 28e1ddd372 Remove unused create_repo handler
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
2026-05-12 11:35:52 +02:00
Daniel Norman 073a5fb574 Bump deps to radicle 0.24 / radicle-job 0.6
- 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
2026-05-12 11:26:53 +02:00
Brandon OxendineandRūdolfs Ošiņš ec49ecbd36 Start review from code-comment on revision diff
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-04-30 16:49:41 +02:00
Rūdolfs Ošiņš e0aafa7de2 Register dialog plugin in release builds 2026-04-30 12:10:52 +02:00
Yaroslav Halchenko af7d2e5181 chore: run codespell to fix typos automagically 2026-04-28 12:04:26 +02:00
Rūdolfs OšiņšandJulien Donck 65c453e37d Add commit history list and single commit views
Co-authored-by: Julien Donck <donckjulien@gmail.com>
2026-04-27 18:00:14 +02:00
Rūdolfs Ošiņš 0bd6f6b2b9 Share a single Highlighter across diff commands 2026-04-27 17:58:55 +02:00
Rūdolfs Ošiņš 17188c77c2 Reuse cached tree-sitter configurations in Highlighter 2026-04-27 17:58:30 +02:00
Lorenz Leutgebandjustarandomgeek 1ed54a46fa radicle-tauri/check_radicle_cli: Fix for Windows
Co-authored-by: justarandomgeek
2026-04-27 12:17:27 +02:00
Rūdolfs Ošiņš a9423e20f2 Regenerate types via ts-rs
After the update there were slight differences on the rendered types.
2026-04-27 11:40:35 +02:00
justarandomgeek d6d0fbfb7a chore: Update dependencies related to Tauri 2026-04-27 11:35:56 +02:00