Commit Graph
138 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš b0a519d1c5 Mirror every Tauri command in test-http-api
Several commands had no route or returned stubs, so e2e tests silently got
null or empty data. A missing route now fails loudly, the profile loads on
first use so onboarding works, and node status is polled over HTTP. A
parity test keeps the routes from drifting from the Tauri handlers again;
it also caught revisions_by_patch being registered twice.
2026-10-01 18:16:29 +02:00
Brandon Oxendine ca80f13631 Disable Back and Forward when they lead nowhere
Fixes f18b808b76
2026-09-29 16:34:31 +02:00
Brandon Oxendine 407a8d0c6e Add markdown shortcuts to textareas
Closes: 7bdaa5ad64
2026-09-29 15:24:55 +02:00
Rūdolfs Ošiņš 3c13166776 Centralise keyboard shortcuts in a registry
A single catalog in lib/shortcuts defines every shortcut's keys and
description. Components bind behaviour to it by id for as long as they
are mounted, and one listener applies the shared rules for text fields,
modals, priority and cycling. The shortcuts modal lists the catalog.
2026-09-25 13:02:38 +02:00
Brandon OxendineandRūdolfs Ošiņš 1f38339c9f Add keyboard shortcuts
Add a shortcuts modal `?` and app-wide shortcuts:

- Cmd+F: sidebar repo filter, pressed again: list search
- Cmd+N: new issue, anywhere in a repo
- Cmd+1…9: jump to the nth sidebar repo; holding Cmd shows
  the numbers on the repo avatars
- Cmd+[ / Cmd+] (Alt+Left / Alt+Right elsewhere): back and forward
- Cmd+R: reload, skipped while typing or in a modal with a text field

Global shortcuts are ignored while typing in an input and, except
for `?`, while a modal is open.

Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-09-25 13:02:38 +02:00
Brandon Oxendine 1d2cdaf033 Align issue page design with patch page
Rebuild the issue page as a single column matching the patch page:
the state dropdown sits next to the title, with author, issue ID,
labels and assignees in a row beneath it.

Let issue authors change the state, not only delegates. Add a
delete_issue command so authors can delete their own issues.

Share the delete confirmation and ID chip with the patch page.
2026-09-25 12:48:35 +02:00
Brandon OxendineandRūdolfs Ošiņš 54835363a9 Add a repository identity document view
Adds a read-only page for a repository's identity document. It shows the
current document together with its full revision history. The data and
wording follow heartwood and the rad id / rad inspect CLI.

Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-09-24 17:04:54 +02:00
Rūdolfs Ošiņš 092f3354ee Distinguish local repos from seeded ones
A repository can sit in storage without being seeded, which `rad ls`
hides and `rad ls --all` shows as "local". A new Settings preference
picks the `Show` passed to `list_repos_summary`, defaulting to seeded.
2026-09-09 14:51:21 +02:00
Rūdolfs Ošiņš 5f86b10f05 Fix unseed error paths and seeded repo filter
Unseeding only deletes the policy row, so a node defaulting to `allow`
keeps seeding: `unseed` now reports `DefaultPolicySeeds` instead of
claiming success, and both callers refresh in a `finally` so a failed
`clean` no longer leaves a stale row behind.
2026-09-09 14:50:28 +02:00
Brandon OxendineandRūdolfs Ošiņš 55e18a45f0 Keep the window draggable while a modal is open
Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-09-09 12:23:16 +02:00
Rūdolfs Ošiņš 982a568538 Polish author and committer popover
Show the email alongside each name. Co-authors are read from the commit
message trailers and listed as their own section. The trigger avatars
now stack and fan apart on hover, and cover everyone credited on the
commit rather than just the author and committer. Timestamps now show
both committed and authored times in the tooltip.
2026-09-09 10:49:50 +02:00
Brandon Oxendine ba3316c246 Add a collapsible, resizable sidebar
The sidebar collapses to a narrow rail of icons. Its collapsed state
and its width both persist across launches.
2026-09-08 17:38:18 +02:00
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