Commit Graph
952 Commits
Author SHA1 Message Date
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ņš c01f1a9a8a Run e2e tests against a production build
The dev server's unbundled modules made each page load take seconds, which
is most of the time a test spends; E2E_DEV_SERVER=1 keeps the dev server.
Each run writes a JSON report, and CI uses two workers now that the
dropped keep-alive connections behind the flakiness are fixed.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš 086afbb5dc Give each e2e test its own reliable peer
The page always talked to the shared palm backend, so tests couldn't set
up peers of their own. Peers now have no passphrase by default, so tests
don't need an ssh-agent and test keys stay out of the developer's agent.
Fixtures wait for replication instead of relying on gossip timing, and a
request cancelled by a reload no longer counts as a page error.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš f512682ec6 Build test-http-api once per e2e run
Each peer ran it through cargo run, which could take minutes to start.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš 2bfa19f1af Run e2e tests against heartwood 1.10.3
Matches the radicle 0.25 crate the app links against.
2026-10-01 18:16:29 +02:00
Rūdolfs Ošiņš 851fbc54be Read request bodies before test-http-api handlers run
Hyper closes a keep-alive connection when a handler leaves the body unread,
and browsers don't retry the next POST on it, which made e2e tests flaky.
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ņš aed733ade6 Move command logic from Tauri handlers into radicle-types
Auth, inbox, CLI detection and cache rebuilds lived only in the Tauri
commands, so test-http-api couldn't share them and stubbed them instead.
2026-10-01 10:20:19 +02:00
Rūdolfs Ošiņš a99631e611 Add unit tests for the router, utils and caches
Covers the pure modules the rest of the app builds on, starting with the cheapest layer of the testing strategy.
2026-10-01 10:20:19 +02:00
Rūdolfs Ošiņš 6b1f0e601c Handle failed CI job lookups 2026-09-29 17:28:46 +02:00
Rūdolfs Ošiņš 73bea06ee1 Serialize writes in the test HTTP API
Parallel e2e tests hit the repo's sigrefs lock when creating COBs
concurrently, which the Tauri avoids by running these commands on
the main thread serially.
2026-09-29 17:28:34 +02:00
Rūdolfs Ošiņš 4e6137db5b Match test browser platform to the host 2026-09-29 17:24:48 +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
Rūdolfs Ošiņš 0d5213a047 Remove Arch Linux packaging from release scripts 2026-09-23 10:47:57 +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
Rūdolfs Ošiņš 679e1a4e89 Update arch package to v0.16.0 2026-09-14 11:01:16 +02:00
Rūdolfs Ošiņš 06a84ebc14 Release v0.16.0 2026-09-14 11:01:05 +02:00
Rūdolfs Ošiņš 96664d6d9a Fix npm audit reported issues 2026-09-14 10:34:52 +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
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
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ņš 535f5e2a18 Show the detected git binary in the settings 2026-09-08 10:04:49 +02:00
Rūdolfs Ošiņš f6050ecae9 Log to a file when not launched from a terminal 2026-09-08 10:04:09 +02:00
Rūdolfs Ošiņš f8faec2c9b Resolve git outside the session PATH
A desktop launch inherits a `PATH` that holds none of the user's own
install locations, so `Command::new("git")` finds nothing usable, or on
macOS finds Apple's shim and only prompts to install the developer
tools.

Resolve git to an absolute path instead, searching `PATH` first and the
usual install locations after, and cache the result for the process.
`rad` is looked for the same way, which also fixes the CLI check for a
Homebrew or Nix install.
2026-09-08 09:30:14 +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