Commit Graph
527 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš cbb21e7513 Move diff annotation helpers into lib
The snippet and the code thread had their own copies.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 7d2081a8aa Move ref sorting out of the peer selector 2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 520ffe3d19 Name embeds dropped from Windows paths correctly 2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 7a6c88f847 Share one embed upload path in the textarea
Drag-drop, attach and paste each had their own copy. Every upload now
shows its own placeholder instead of overwriting the previous one.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš bda26136c9 Share repo ordering between the sidebar and the inbox
Both toggled pins and ordered pinned repos with their own copies.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš ceeab4e2c6 Share which commits each revision adds
Patch and Revision each computed it with their own copy of the loop.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 9ff5529c9f Move revision description helpers into lib
The commit-list check was written twice, and revision titles and the
commit group collapse rule were untested inside components.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš c7387ac540 Keep asterisks between spaces in comment previews
"2 * 3 * 4" read as emphasis and lost its asterisks. Markdown doesn't
treat a marker with a space just inside it as emphasis.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš f6a23e0b0f Move comment preview text into lib
The regex-heavy markdown stripping was untested in the component.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš a15a20393c Move commit day grouping into lib
Today/Yesterday labels and grouping by day had date edge cases that
nothing tested.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš f267d3d16f Move comment and commit stepping into lib
The order the stepper walks comments in and its wraparound index math
were untested, and ReviewPage ordered its file groups with its own copy.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 6e1176ffcf Move discussion timeline grouping into lib
The rules for grouping a person's consecutive activity and when to repeat
their name lived in an untested loop in the component.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš ca3b059a62 Move CI job grouping into lib
The status chip's grouping, dedupe and summary rules were untested inside
the component, and a wrong CI status is very visible.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 974235b1fe Share comment thread building between patch views
Revision and ReviewPage built threads and checked who may resolve a
comment with their own near-identical copies.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš a43031ad70 Show assignee changes correctly in timelines
Assignees were compared by object identity, and each action carries its
own copies, so every change listed everyone as both removed and added.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 5887220ec7 Move issue and patch timeline building into lib
Both views built their activity feed inline, with the shared part written
twice. It now lives in tested modules.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 89131f3b3a Keep every review comment in inbox summaries
Notification actions were deduplicated by operation and type, so the
several code comments of one published review collapsed into one.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 5b3bc10a06 Check bare RIDs against already seeded repos
The seed form accepts a RID without the rad: prefix but compared it as
typed against lists that have the prefix, so duplicates got through.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 6df7827bb9 Don't break the inbox on invalid stored pins
The pinned and hidden inbox repos were read with a bare JSON.parse, so
corrupted storage threw while the inbox loaded.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš c4dcb61675 Stop the timer when resetting a dynamic interval
Resetting only forgot the key, so the pending timeout still fired and
rescheduled itself: the sidebar kept reloading repos every 5 seconds
after nothing was left to replicate, and after it unmounted.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš be0c2a424b Don't throw on empty or invalid frontmatter
Since js-yaml 5 an empty or comment-only block throws instead of returning
undefined, as does invalid YAML. Markdown renders the content from the
same parse, so one such block made the whole document fail to render.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 5d8bc00f13 Show alias errors when creating an identity
The errors weren't reactive state, so the hints never rendered.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš a178aaade2 Only prepare code blocks inside each Markdown block
Every Markdown instance searched the whole page, so code blocks got an
extra wrapper and copy button for each other Markdown block on the page.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 17e7a29cb9 Treat RIDs with non-base58 characters as invalid
parseRepositoryId threw instead of returning undefined, so the seed form
crashed on a typo instead of saying the RID is invalid.
2026-10-01 18:20:24 +02:00
Rūdolfs Ošiņš 7728c9272e Start e2e specs at a route that exists
/repos is no longer a route, so specs fell back to the inbox and logged a
routing error. The inbox opens the first-launch guide, so tests now start
with it dismissed. The router now logs the URL it couldn't resolve
instead of just "URL".
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš 0172253b4d Put invoke timing logs behind VITE_LOG_INVOKE_TIMINGS
They flooded the dev console and test logs; perf work can turn them on.
2026-10-01 18:16:29 +02:00
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
Rūdolfs Ošiņš 6b1f0e601c Handle failed CI job lookups 2026-09-29 17:28:46 +02:00
Rūdolfs Ošiņš 4d45516970 Allow creating issues with only a subject 2026-09-29 16:57:11 +02:00
Brandon Oxendine ca80f13631 Disable Back and Forward when they lead nowhere
Fixes f18b808b76f9528e406f53f70221e1a39b4664c8
2026-09-29 16:34:31 +02:00
Brandon Oxendine 407a8d0c6e Add markdown shortcuts to textareas
Closes: 7bdaa5ad647da241830ff463f03f730dce3bba67
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ņš 7c29fae1a7 Render checkboxes in markdown with appropriate styling 2026-09-23 17:43:55 +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 e97af99286 Submit the issue modal with Cmd+Return from title
Closes c4c2391d309ccff1cd745d5e98faf5b4e9bb7d9d
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
Daniel Norman 7cea431306 Use commit instead of author time consistently
Align with radicle explorer and other places where we render the commit
time like the single commit view and commit list

Fixes issue dfa74e83c4f8d0ca903c3f81d278382daad1488a
2026-09-10 13:40:33 +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
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ņš 4c899537ab Mark private repos with a lock in the sidebar 2026-09-09 14:51:14 +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 Oxendine 6e29b80371 Use a globe icon for public repositories 2026-09-09 14:31:53 +02:00