Commit Graph
126 Commits
Author SHA1 Message Date
Rūdolfs OšiņšandBrandon Oxendine e35baf750f Show the branch a patch is opened against
Add it to the patch list byline and the patch page metadata, shown only
when it differs from the default branch. The merge activity item now
names the real target instead of always naming the default branch.

Co-Authored-By: Brandon Oxendine <brandon.oxendine@gmail.com>
2026-09-03 17:19:42 +02:00
Brandon Oxendine 66d849faaa Let the Guide sidebar button be hidden 2026-08-27 14:38:03 +02:00
Brandon Oxendine 880db5e538 Add Cmd+, shortcut to open Settings
Handle Cmd+, (Ctrl+, on Linux/Windows) in the global keydown handler
to toggle the Settings modal, matching the existing font-size and
Escape shortcuts.
2026-08-25 17:46:21 +02:00
Rūdolfs Ošiņš 9196e4f726 Share the file-tree status mapping 2026-08-14 17:30:47 +02:00
Rūdolfs Ošiņš 2c9c382073 Say who resolved a comment
The comment records only that it is resolved, so the name comes from the
resolve operation in the patch's log. Adds the action to timeline
threads too, and shapes the badge like a review's verdict.
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 62e150c29a Rebuild the patch page, review UI, and activity timeline 2026-08-10 12:54:39 +02:00
Brandon OxendineandRūdolfs Ošiņš 20f5aa1f1e Add dismissible hints
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-08-10 08:35:44 +02:00
Brandon Oxendine a03c413343 Add an author hover card 2026-08-10 08:35:41 +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
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
Rūdolfs Ošiņš e2da5055ba Integrate pierre's diffs into commit view 2026-07-20 17:40:25 +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ņš 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ņš 1ba7369392 Generate copyable patch text via libgit2 2026-07-03 11:32:33 +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ņš 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ņš a6d7d0c1e0 Cache job listings per commit 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ņš 27f860fd77 Cache repo summaries for the sidebar 2026-06-04 18:04:33 +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ņš fece6edc44 Revert to 100 items per repository in inbox 2026-05-21 17:32:46 +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ņš 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ņš 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ņš 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ņš 3611241bb7 Bump eslint 9 -> 10 2026-05-13 13:58:07 +02:00
Brandon Oxendine c9a641da13 Use status-specific label for issue and patch breadcrumbs 2026-05-06 12:50:14 +02:00
Brandon Oxendine 62752f6357 Link patch breadcrumb to its current status filter 2026-05-06 12:49:51 +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
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ņš de06613eeb Dedupe in-flight requests in cached() 2026-04-27 17:58:26 +02:00
Rūdolfs Ošiņš 99996f168e Rename radicle.xyz -> radicle.dev and app.radicle.xyz -> radicle.network 2026-04-27 11:26:17 +02:00
Rūdolfs Ošiņš b6facd02a7 Fix update checker not detecting new versions
enable() was called before invoke("version") resolved, so the first
checkNewVersion() could run while sanitizedCurrentVersion was still
undefined. Even though newVersion is a derived value, Svelte 5 may
not reliably recompute it when state changes asynchronously on a
module-level class instance.

Moving enable() inside the invoke callback ensures sanitizedCurrentVersion
is always set before any version comparison runs.
2026-04-14 09:45:51 +02:00
Rūdolfs Ošiņš e1509f0a99 Change seed.radicle.garden -> iris.radicle.xyz
We were using a deprecated seed dns name.
2026-03-23 22:59:30 -06:00
Rūdolfs Ošiņš 7b396ff72d Persist sidebar across navigations to preserve scroll position
Move AppSidebar out of per-route view components into App.svelte so it
is never unmounted on navigation. This fixes the sidebar scroll position
resetting to the top whenever the user opens a repository or navigates
between Issues, Patches and the repo home view.

Also removes the redundant invoke<Config>("config") call from each repo
route loader — the value is now taken from sidebarData.config, which
loadSidebarData() already fetches.
2026-03-23 22:51:59 -06:00
Rūdolfs Ošiņš cf40e86a8e Use a dynamic port for the test-http-api to avoid conflicts
Pick a free port at config load time using a TCP probe on port 0, inject
it into the Vite dev server via VITE_TEST_HTTP_API_PORT, and have
globalSetup start the test-http-api on the same port. The frontend
reads the env var at build time instead of the previously hardcoded 8081.
2026-03-23 10:59:39 -06:00