Commit Graph
100 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš b8df285b8a Suppress RUSTSEC-2023-0071 warning
We follow heartwood's lead on this.
2026-07-27 15:19:45 +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
Rūdolfs Ošiņš 883046269c Add share widget to repo/issue/patch pages
This replaces the open external icon button next to the ID in the
breadcrumbs as well as any copy link button.
2026-07-24 15:48:26 +02:00
Rūdolfs Ošiņš 62e7ae1fcd Upgrade npm dependencies honoring a 7 day cooldown 2026-07-24 09:27:47 +02:00
Rūdolfs Ošiņš a1a2567129 Add .dockerignore
Exclude target/, node_modules/, releases/ and .git/ from the
build context. Dockerfile.release COPYs nothing, so podman was
tarring the entire 32G target/ dir into the build context,
exhausting the machine's temp disk with "no space left on
device".
2026-07-21 11:51:46 +02:00
Rūdolfs Ošiņš e2da5055ba Integrate pierre's diffs into commit view 2026-07-20 17:40:25 +02:00
Rūdolfs Ošiņš 6c2365d4c9 Copy only current version's deb from build cache 2026-07-07 10:27:43 +02:00
Rūdolfs Ošiņš f6eeeae613 Update arch package to v0.13.0 2026-07-03 12:36:02 +02:00
Rūdolfs Ošiņš e7b6d054d4 Release v0.13.0 2026-07-03 12:35:51 +02:00
Rūdolfs Ošiņš bbb323106e Fix tar security warning 2026-07-03 12:14:05 +02:00
Rūdolfs Ošiņš 3fa3d04628 Fix npm audit issues 2026-07-03 11:52:12 +02:00
Rūdolfs Ošiņš cd7949000e Center no commits placeholder 2026-07-03 11:33:16 +02:00
Rūdolfs Ošiņš b01ba37f7e Apply restored scroll position only once 2026-07-03 11:33:14 +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ņš f7f4b2b4ba Revalidate restored lists on history navigation 2026-07-03 11:33:09 +02:00
Rūdolfs Ošiņš b4855054e4 Extract shared paginated list state helper 2026-07-03 11:33:08 +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ņš fe6d2607e1 Keep loading flag set for superseded page loads 2026-07-03 11:32:53 +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ņš bc1e636fbf Virtualize the file tree's root entries
The file tree was the one list left un-virtualized, so wide directories
mounted every entry and re-rendered all rows on selection. Render
entries through VirtualList like the other lists.
2026-07-03 11:29:40 +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ņš 737703422e Virtualize the patch-review diff renderer
Route the comment-capable diff through the same single virtualizer as
the commit diff instead of rendering every file and line at once.
2026-07-03 11:28:36 +02:00
Rūdolfs Ošiņš 41535bf32c Add unified-diff copy buttons to the commit diff 2026-07-03 11:28:33 +02:00
Rūdolfs Ošiņš fb35fe369e Virtualize the commit diff view
Render only visible diff rows (via virtua) so commit diffs stay smooth
at any size.
2026-07-03 11:28:12 +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ņš 2bc474b9ce Add VirtualList component backed by virtua
A reusable windowing wrapper that mounts virtua's Virtualizer against
the existing OverlayScrollbars viewport, so the app-wide custom
scrollbar is preserved.
2026-07-03 11:27:33 +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ņš a07787c2c6 Fix patches list pagination
The patches list paged through everything without scrolling: ScrollArea
fired its load-more check on every `updated` DOM event, and the list's
min-height made the bottom threshold always true, so each appended page
triggered the next. Move it to InfiniteScrollSentinel like the commits
list.
2026-07-03 11:25:35 +02:00
Rūdolfs Ošiņš b99d656c81 Remove dead issue/patch list from detail views
The second column that displayed the sibling list was removed long ago,
so the issue/patch lists loaded into the detail views are never
rendered.
2026-07-03 11:25:16 +02:00
Rūdolfs Ošiņš f922e9415c Show "Up to date" only after a successful check
The settings footer showed "Up to date" whenever no new version was
known — including when the update checker was disabled or the version
fetch had silently failed. Derive an explicit upToDate state that is
only true when a check succeeded and found no newer version, so a
failed or disabled check no longer claims the app is current.
2026-06-10 16:03:38 +02:00
Rūdolfs Ošiņš b363fdb297 Bypass HTTP cache when checking for new versions
The version check fetched latest.json without any cache directive.
The server sends no Cache-Control header, so WebKit applied heuristic
caching (RFC 9111 4.2.2): the response is considered fresh for 10% of
the time since Last-Modified, which can be hours to days between
releases. Apps checking for updates right after a release were served
a stale latest.json from disk cache and concluded they were up to
date. Dev builds use a separate cache, which is why the bug only
appeared in release builds.

Fetch with cache: "no-store" so every check hits the server.
2026-06-10 16:02:38 +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ņš 984a614f19 Rename step in check-arch-package to match intent 2026-06-10 11:29:34 +02:00
Rūdolfs Ošiņš 3a1324cf7f Fix arch package check
Radicle is now officially distributed via arch itself, so we don't need
to fetch it manually anymore.
2026-06-09 17:49:53 +02:00
Rūdolfs Ošiņš eca06b7b31 Check if prerequisites are met before cutting release
Make sure docker and podman are up and running as they're necessary for
the arch packaging and artifact building.

This also shows what commands would have been run when a phase fails.
2026-06-09 17:04:59 +02:00
Rūdolfs Ošiņš 1482727860 Bump node version in release image to match project 2026-06-09 17:04:59 +02:00
Rūdolfs Ošiņš 31fed63737 Replace libsoup with libsoup3 in arch package
The official Arch repos dropped libsoup (2.x); it now lives
only in the AUR, so pacman fails with "target not found:
libsoup".
2026-06-09 15:19:54 +02:00
Rūdolfs Ošiņš 6cc5549975 Update arch package to v0.12.0 2026-06-09 14:00:20 +02:00
Rūdolfs Ošiņš 3abba53437 Release v0.12.0 2026-06-09 13:55:44 +02:00
Rūdolfs Ošiņš e47a43498d Add interactive release script 2026-06-09 13:29:48 +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ņš a6d7d0c1e0 Cache job listings per commit 2026-06-04 18:04:33 +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ņš a3b66593a5 Log invoke timing in dev builds 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ņš 27f860fd77 Cache repo summaries for the sidebar 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ņš 50bd93e550 Dedupe job runs by runId to fix duplicate keys
The same run can appear under multiple job COBs at a commit, causing an
each_key_duplicate crash. Keep one view per runId, letting a terminal
status override a stale "started" one.
2026-05-29 17:15:04 +02:00
Rūdolfs Ošiņš 5c1efdeaa6 Show a placeholder when there is no commit message 2026-05-28 12:39:39 +02:00
Rūdolfs Ošiņš b02c1556cb Update arch package to v0.11.0 2026-05-22 12:36:47 +02:00
Rūdolfs Ošiņš 657ac9a6c1 Release v0.11.0 2026-05-22 12:33:32 +02:00
Rūdolfs Ošiņš 6dc071a6ca Harden rendered markdown links 2026-05-22 11:32:34 +02:00
Rūdolfs Ošiņš 154d89851e Restrict job log links to http(s) URLs 2026-05-22 11:32:34 +02:00
Rūdolfs Ošiņš 270117ee7d Escape emoji character in twemoji alt attribute 2026-05-22 11:32:34 +02:00
Rūdolfs Ošiņš 14b25872ea Add cargo cooldown config 2026-05-22 10:34:46 +02:00
Rūdolfs Ošiņš f0c17d237e Upgrade rust deps with a 7 day cooldown 2026-05-22 10:34:29 +02:00
Rūdolfs Ošiņš 4011aee528 Upgrade npm dependencies with a 7 day cooldown 2026-05-22 09:10:43 +02:00
Rūdolfs Ošiņš d79bbf3a4d Defer TextInput autofocus past portal move
Fixes autofocus in New Repo modal text input.
2026-05-21 17:58:02 +02:00
Rūdolfs Ošiņš 15763d7c6e Stop add-repo button from expanding All Repos 2026-05-21 17:58:02 +02:00
Rūdolfs Ošiņš fece6edc44 Revert to 100 items per repository in inbox 2026-05-21 17:32:46 +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ņš 0c40670e2b Show JobCob on the single-commit view 2026-05-21 15:56:53 +02:00
Rūdolfs Ošiņš 1e2eb18e8c Redesign JobCob popover 2026-05-21 15:56:52 +02:00
Rūdolfs Ošiņš 38b04536f7 Center checkmark icon in viewBox 2026-05-20 16:34:36 +02:00
Rūdolfs Ošiņš 40ad554978 Remove GitHub badges from README.md
We now have a bridge that publishes GitHub Action workflow runs as
native Radicle JobCobs directly on the repo. They're visible from
Radicle Desktop and radicle.network.
2026-05-20 14:10:14 +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
Rūdolfs Ošiņš 8f9877ac4f Fix formatting 2026-05-18 15:19:53 +02:00
Rūdolfs Ošiņš b76250ebca Fix regression where first revision wasn't editable 2026-05-18 15:11:00 +02:00
Rūdolfs Ošiņš ca50bfee93 Correctly substitute emojis with twemoji in notification teasers 2026-05-15 10:33:03 +02:00
Rūdolfs Ošiņš 7cc041e803 Add fuzzy filter to inbox
This allows to selectively clear items by combining filtering with the
delete all notifications buttons.
2026-05-14 17:38:04 +02:00
Rūdolfs Ošiņš f60f7aac95 Add custom context menu for sidebar items 2026-05-14 15:33:11 +02:00
Rūdolfs Ošiņš dfe668c2cc Add reload button to sidebar 2026-05-14 14:58:06 +02:00
Rūdolfs Ošiņš 67108bd443 Disable native context menu
Prevents the browser/webview default context menu app-wide, while
preserving it for text selections and editable fields where the
native menu is still useful.
2026-05-14 14:58:06 +02:00
Rūdolfs Ošiņš 22170c7256 Expand All Repos section when navigating to a repo
When we land on a repo via notification inbox the repository wouldn't be
visible if the section was collapsed. Now we expand it and scroll into
view so we see which repository we're browsing.
2026-05-14 09:28:28 +02:00
Rūdolfs Ošiņš 15955af7fd Replace @radicle/gray-matter with js-yaml frontmatter parser 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš 8c2c6703d3 Bump zod 3 -> 4 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš a0836d40cc Bump vite 6 -> 8, vitest 3 -> 4, vite-plugin-svelte 5 -> 7 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš 7312d056c7 Bump typescript 5 -> 6 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš 3611241bb7 Bump eslint 9 -> 10 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš 734cbc84b2 Bump eslint-plugin-simple-import-sort 12 -> 13 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš 1879c3a8a9 Bump globals 16 -> 17, wait-on 8 -> 9, happy-dom 17 -> 20, marked 15 -> 18 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš ab0bbfb94a Bump svelte 5.28 -> 5.55 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš be72541272 Bump eslint-plugin-svelte 3.5 -> 3.17 2026-05-13 13:58:07 +02:00
Rūdolfs Ošiņš 7e0f3a478f Bump prettier 3.5 -> 3.8 2026-05-13 12:31:36 +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
Rūdolfs Ošiņš d45cd37f48 Bump minor dep upgrades 2026-05-13 12:31:36 +02:00
Rūdolfs Ošiņš 2b001b59c8 Improve CI pipelines
- drop custom container, we don't want to maintain a hand-crafter
  container anymore
- use .nvmrc node version as single source of truth, also in gh actions
- bump playwright version, required to work on node >=24
2026-05-13 12:31:36 +02:00
Rūdolfs Ošiņš 2e5e7415c1 Bump node version v22 -> v24
This also gets rid of .tool-versions, making .nvmrc the single source of
truth.
2026-05-13 11:01:47 +02:00
Rūdolfs Ošiņš 8a60f58ffc Allow patch authors to change the state of their patch 2026-05-12 12:00:04 +02:00
Rūdolfs Ošiņš 071504fda7 Add repo pinning 2026-05-12 09:40:53 +02:00
Rūdolfs Ošiņš e0aafa7de2 Register dialog plugin in release builds 2026-04-30 12:10:52 +02:00