Commit Graph
57 Commits
Author SHA1 Message Date
Brandon OxendineandRūdolfs Ošiņš dc1a067396 Render mermaid diagrams
Mermaid code blocks showed up as code. Mermaid is loaded lazily, and
diagrams are redrawn when the app theme changes. DOMPurify's config
moves from a global `setConfig` to each call site, because the global
one stripped mermaid's SVG output.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-10-07 16:56:58 +02:00
Brandon OxendineandRūdolfs Ošiņš ab8300e09a Show repository images in READMEs
Relative images in markdown and AsciiDoc files were broken, nothing
resolved them against the repository. They're read through a new
`repo_blob_bytes` command, which skips the text encoding and last
commit lookup of `repo_blob`. Images now also keep their alt text.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-10-07 16:56:16 +02:00
Brandon OxendineandRūdolfs Ošiņš 70046d0c74 Render GitHub style alerts
A blockquote starting with `[!NOTE]` or one of its siblings showed up
as a plain quote, while GitHub and the web explorer render it as a
titled callout.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-10-07 16:54:00 +02:00
Brandon Oxendine 950f83b2e9 Move issue metadata buttons into action row
In the new issue modal, "Add labels" and "Add assignees" sat on their
own row between the description and the action buttons. They now sit at
the left of the action row, opposite Attach, Preview and Save.
2026-10-06 17:18:20 +02:00
Brandon OxendineandRūdolfs Ošiņš 8175823ab8 Fix pasted images not rendering
Pasting a single image went through save_embed_by_clipboard, which
stored the clipboard's raw RGBA pixels instead of an encoded image.
The result could not be decoded, so the embed showed as a broken image.
Always store the pasted file's own bytes instead. Nothing else uses
save_embed_by_clipboard, so it's removed.

Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-10-06 15:04:57 +02:00
Brandon Oxendine d6145300c1 Make task list items clickable in markdown 2026-10-06 14:33:08 +02:00
Brandon OxendineandRūdolfs Ošiņš 91ab693b4b Link Radicle entities from comments
References are picked or pasted in the composer, stored as `rad:` URIs
with a readable label, and shown as chips or links that open in-app when
the entity is here.

Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-10-05 17:29:02 +02:00
Brandon OxendineandRūdolfs Ošiņš bee84e9d40 Search node aliases for mentions
Mentioning someone starts from their alias, but aliases are
self-declared and unrelated nodes often share one. Results say who is
followed or is you, so the composer can tell them apart.

Co-Authored-By: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-10-05 17:29:02 +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
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
Brandon Oxendine 2e907e1309 Cross the sidebar's two views instead of morphing 2026-09-21 18:15:27 +02:00
Brandon Oxendine 8aa54c065d Spin the sidebar section header's icon on hover 2026-09-21 18:14:24 +02:00
Brandon Oxendine 892869637f Animate the repo list and filter button 2026-09-21 18:13:52 +02:00
Brandon Oxendine 9816d74205 Add tooltips to items in collapsed sidebar 2026-09-21 18:13:52 +02:00
Brandon Oxendine 20a92c95ce Badge the private lock onto the avatar in collapsed sidebar 2026-09-21 18:13:51 +02:00
Brandon Oxendine 6177515e92 Put sidebar spacing on a 16/32 scale 2026-09-21 18:08:45 +02:00
Brandon Oxendine 39b63b4d88 Use the radicle logotype on the loading screen 2026-09-21 11:23:30 +02:00
Brandon Oxendine c83777e6a9 Fix muddy diff colors in light mode 2026-09-21 11:01:19 +02:00
Brandon Oxendine e97af99286 Submit the issue modal with Cmd+Return from title
Closes c4c2391d30
2026-09-14 10:20:21 +02:00
Brandon Oxendine ba5e571337 Keep the view steady when reacting or commenting
Bind each cached loader to a `{@const}` so the `{#await}` blocks keep
the same promise across patch reloads instead of re-running and
flashing their pending branch.
2026-09-14 10:00:13 +02:00
Brandon Oxendine cae5ed5a8d Unify top bar button treatment
The patch page already sets the pattern: one filled primary action and
naked buttons for everything else. The issue page and the repo header
used the grey ghost fill instead, so their secondary actions competed
with the primary one.
2026-09-09 15:06:11 +02:00
Brandon Oxendine 6e29b80371 Use a globe icon for public repositories 2026-09-09 14:31:53 +02:00
Brandon OxendineandRūdolfs Ošiņš 039c0d49d5 Stop layout shifts when clicking on commits in patch
scrollToFilesTop scrolled the port down to hide the patch chrome, with a
smooth animation. Clicking a commit while already at the top of the diff
pulled the header off screen for no reason.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-09-09 14:21:43 +02:00
Brandon OxendineandRūdolfs Ošiņš 7dc1d4d94d Stop one duplicate path losing the whole diff
A type change, a symlink replaced by a regular file, reaches the frontend
as two entries for one path. CodeView throws on the duplicate id, the
parse promise rejects, and the Changes tab is left with no files at all:
on heartwood's patch 327be3c one such file emptied all 84.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-09-09 14:21:43 +02:00
Brandon Oxendine 8fbb408c58 Disable save button instead of hiding it 2026-09-09 12:37:11 +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
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
Brandon OxendineandRūdolfs Ošiņš fe37d6a85c Add Stop seeding to the sidebar context menu
`rad unseed` only drops the seeding policy and leaves the repository in
storage, so while `list_repos_summary` listed everything on disk an
unseeded repository never left the sidebar and unseeding looked like it
had done nothing. That call now filters by seeding policy.

The confirmation dialog also offers to delete the files, running the
equivalent of `rad clean` after the unseed.

Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
2026-09-03 19:21:16 +02:00
Brandon Oxendine f4ab2544ae Keep the patch description open while editing
The description collapses past 300px behind a show more toggle, which
also applied to the editor that replaces it. Half of what was being
written could be cut off, with a control offering to hide more of it.

Editing state moves from the revision component to a bindable prop, so
the patch view that owns the collapse can see it.
2026-09-03 18:40:26 +02:00
Brandon Oxendine 25b7ba86c4 Fix inline node ID in the guide 2026-09-03 18:30:50 +02:00
Brandon Oxendine 9bf912da3d Confirm before hiding the Guide button 2026-09-03 18:26:11 +02:00
Brandon Oxendine 073720a7a6 Reveal Guide dismiss only when it has focus 2026-09-03 18:26:11 +02:00
Brandon Oxendine 3ac4249651 Match the reaction and edit button sizes
The reaction trigger sits in a block wrapper, so its icon formed a line
box and took the leading with it, leaving the button taller than the
edit one beside it. It also carried its own padding, colour and hover
fill, on top of the ones the action around it already provides.

The action is now a fixed square with its content centred, so its size
no longer depends on the shape of whatever it wraps.
2026-08-27 17:48:32 +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
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
Brandon Oxendine 030b5fe1f1 Show absolute timestamps on hover 2026-08-10 08:35:49 +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
Brandon Oxendine 3ee2ca9d58 Format All Repos count as a counter badge 2026-07-21 13:43:57 +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
Brandon Oxendine 0e9f99c04f Indent replies into individual boxes 2026-04-30 12:10:52 +02:00
Brandon Oxendine 783ac6bf74 Polish comment form footer 2026-04-30 12:10:51 +02:00
Brandon Oxendine 8ef7b34612 Reveal comment actions only on hover 2026-04-30 12:10:51 +02:00
Brandon Oxendine fbae6e22ed Restyle reactions and highlight own reactions 2026-04-30 11:11:56 +02:00
Brandon Oxendine 56db0a0dcb Show first revision description on patch 2026-04-28 14:19:46 +02:00
Brandon Oxendine 89b8e9a17b Always show discussion comment form 2026-04-15 15:49:21 +02:00
Brandon Oxendine c74b8e014e Truncate repo header text 2026-04-15 15:04:39 +02:00
Brandon Oxendine 7fa9c42c2b Fix README ordered list clipping 2026-04-14 09:24:45 +02:00
Brandon Oxendine ee001e96fa Use brand styling for save actions 2026-04-14 09:08:30 +02:00
Brandon Oxendine 0e38df1e2f Update app icon 2026-03-20 09:34:53 -06:00