Commit Graph
361 Commits
Author SHA1 Message Date
Rūdolfs Ošiņš 010cac0377 Redesign app with new UI kit
Redesign the entire app with a new UI kit. Typography, colors, icons,
avatars, and border radii have all been updated for a more polished,
consistent appearance that matches our other products like
radicle-explorer.

- Replace blockies-based avatars with a new DID-based avatar system
- Move Settings and Create Issue into fullscreen modals
- Change the default theme to follow the system theme
- Remove window decorations on macOS for a cleaner, more native feel
- Update the app icon
- Fix popovers and tooltips

Navigation:

- Rewrite app navigation and layouts
- Add a sidebar that gives you access to all your repos
- Change the startup screen to open directly to the notification inbox
- Add a getting started guide shown to new users on first launch

Settings:

- Add a setting to disable the notification badge
- Add a code font setting

Bug fixes:

- Fix reactions and edits incorrectly targeting the root comment
  instead of the intended reply
- Restrict issue/patch state, labels and assignees to delegates only
2026-03-20 17:48:38 -06:00
Rūdolfs Ošiņš bfa38d9fe9 Show job cobs on latest revision and default branch commits 2025-07-29 16:16:56 +02:00
Rūdolfs Ošiņš 8632ea90fa Fix bug in commit listing order
Since this mutated the array it would reverse the order when switching
between patches, since we don't destroy the array.
2025-07-29 16:16:56 +02:00
Thomas Scholtes ef7736a8b0 Re-enable replying to review comments again 2025-07-29 14:55:02 +02:00
Rūdolfs Ošiņš ce35d498d4 Point update checker to the correct URL where we store files 2025-07-22 12:32:24 +02:00
Rūdolfs Ošiņš 4fd016de9e Fix copyable Id reactivity
The component would always copy the first value it was initialized with
regardless of what the actual ID was that it was showing.
2025-07-22 10:09:53 +02:00
Thomas Scholtes 0936d7f9ff Use anchors on home view for better accesibility
Convert clickable elements for filtering repos to anchors so that they
can be focused and activated with the keyboard.
2025-07-21 17:02:03 +02:00
Thomas Scholtes 1583a3103c Make repos in home focusable and interactive
Instead of making the whole card interactive, I decided to make the
heading interactive. This avoids nesting the copyable ID as an
interactive element. Nested interactive elements are generally hard to
deal with for implementers and users [1].

I also cleaned up the flex layout in the card heading.

[1]: https://accessibilityinsights.io/info-examples/web/nested-interactive/
2025-07-17 12:50:19 +02:00
Thomas Scholtes ea395ee884 Add button to delete draft reviews 2025-07-17 11:35:13 +02:00
Thomas Scholtes 595382b240 Introduce update functions for less error-prone local storage updates
For local storage updates to be persisted it had to be assigned for
example with `storage.value = storage.value`. It was easy to forget this
and it’s not immediately obvious why this is needed. (In fact, eslint
complains.)

We introduce an `update` method for the local storage and an
`updateStoredDraftReview` to encapsulate the necessary logic.
2025-07-17 11:08:41 +02:00
Thomas Scholtes ceca51c1bb Support deleting draft review comments 2025-07-17 10:48:35 +02:00
Thomas Scholtes a33799d62a Simplify reactOnComment action 2025-07-16 12:58:03 +02:00
Thomas Scholtes fdabbac599 Remove redundant partial application 2025-07-16 12:58:03 +02:00
Thomas Scholtes 2ba4e0f0e3 Simplified comment action binding 2025-07-16 12:58:03 +02:00
Rūdolfs Ošiņš c0814d88b3 Don't change issue list filter when changing issue state
This makes the issue list behave the same way as patch list. We don't change
the filter, just reload the issue list so that the new issue state is properly
reflected in the list.
2025-07-16 12:50:56 +02:00
Sebastian Martinez e0ae5b5501 Add source browsing 2025-07-16 09:41:46 +02:00
Sebastian Martinez 5954d8e822 Split revision descriptions at a new line
In the revisions listing we are trying to display the whole revision
text, which should be trimmed at a new line, or after an amount of
chars.
2025-07-14 16:22:31 +02:00
Thomas Scholtes 6f3662fa96 Extract lineDiff snippet 2025-07-10 17:29:43 +02:00
Sebastian Martinez 0336da384f Provide error.code to InvokeError
We decide during onboarding to display different things based on the
error code received from the backend.

Due to the new `InvokeError` type we lost this `error.code` string.
2025-07-09 16:20:38 +02:00
Sebastian Martinez b65b6daaee Provide currentVersion in UpdateChecker without parsing it 2025-07-04 14:28:43 +02:00
Sebastian Martinez 2f801b9940 Add eslint-plugin-simple-import-sort to sort and group imports 2025-07-03 15:46:18 +02:00
Sebastian Martinez f69c90785c Limit embed file size to 10MB 2025-07-03 15:15:28 +02:00
Rūdolfs Ošiņš a55a138a7f Improve code review usability
This patch moves the revision list from the tab bar drop-down to a sidebar
on wide screens and above the current revision on narrow screens. This
way all revisions are visible at all times.

We also move and nest the revision reviews into that list so that one
can see whether there's anything actionable at a glance.

Other tweaks:

  - added comment counts to revisions and reviews
  - displayed unresolved comment thread counts per review
  - swapped icons for accepted/rejected and neutral reviews to avoid clashing
    with resolved/unresolved comment icons
  - made label and assignee sections more compact with hover-triggered "+" buttons
  - added author and status sections to the sidebar
  - enabled patch state changes from the title bar
  - made "Review revision" the primary action and "Checkout patch" secondary
  - added "Draft" label to draft patches
  - capitalized all badges for consistent UI text
2025-07-03 11:46:39 +02:00
Sebastian Martinez 18f5aa9065 Allow verdict and summary changes in draft reviews
While a patch review is still in draft mode we should allow it to be
changed to no verdict or an empty summary.

The validation logic being taken care of by the `Publish draft` button.
2025-07-02 13:54:14 +02:00
Sebastian Martinez 641b809d56 Add Check for Update into Settings popover 2025-07-02 13:15:42 +02:00
Thomas Scholtes 17586953bb Draft reviews before publishing
Reviews are locally persisted but only published to the network by an
explicit user action.

- [ ] Delete line comments on draft reviews

[squash] Sort imports, separate type imports into own section
2025-07-01 14:31:55 +02:00
Thomas Scholtes 049b2b15df Allow disabling of attachments in comments with reason
[squash] Use shorthand property
2025-07-01 14:31:55 +02:00
Thomas Scholtes d35920b8cb Allow disabling of reactions, replies and changing status on diff comments 2025-06-27 16:30:13 +02:00
Thomas Scholtes 9ee9a108a5 Make comments without IDs editable
For upcoming draft reviews, comments don’t have an ID yet but we still
want to make them editable.
2025-06-27 16:30:13 +02:00
Thomas Scholtes e5f2071aea Make timestamp optional in Comment component
We’ll need this for draft comments
2025-06-27 16:30:13 +02:00
Thomas Scholtes 3adbfeecc2 Wrap invoke rejection reasons in Error instance
This way we get stack traces and more informative console logs (instead
of "[Object object]").
2025-06-27 16:29:03 +02:00
Sebastian Martinez 3e8d63fb80 Add auto-hide scrollbars into revision selector 2025-06-25 13:56:38 +02:00
Sebastian Martinez 30710d5181 Customize layout of textarea scrollbar 2025-06-19 14:44:07 +02:00
Sebastian Martinez c8b0861662 Remove unused event listeners 2025-06-18 16:24:07 +02:00
Rūdolfs Ošiņš a1de446c79 Fix issue/patch second column overflow problem 2025-06-16 15:33:44 +02:00
Sebastian Martinez cd20e647fd Import overlayscrollbars css instead of pointing to node_modules 2025-06-16 13:04:46 +02:00
Sebastian Martinez e246a48b90 Add overlay scrollbars with custom styling 2025-06-11 19:54:59 +02:00
Sebastian Martinez 499a0983ea Add rebuild cache functionality to issue and patch listing
In case of an outdated cobs cache we display a banner on top of the
patch or issue listing, to allow users to rebuild the cobs cache of a
repo similar to running `rad patch cache`
After rebuilding we fetch the issues or patches from the start.

Small caveat with patches:
The banner can only be shown after a user fetched all patches from the
backend, so we are sure we tried to fetch all of them.
2025-06-11 18:24:27 +02:00
Sebastian Martinez a6ea607c3a Fix scroll in single patch view second column 2025-06-11 16:58:24 +02:00
Rūdolfs Ošiņš 299adcaccb Implement repo seeding 2025-06-11 14:32:58 +02:00
Sebastian Martinez 8e683cf7ce Provide a full window error if something goes wrong 2025-06-06 15:22:08 +02:00
Sebastian Martinez d68a06c33a Show a spinner if startup takes more than 1 sec 2025-06-06 15:22:08 +02:00
Rūdolfs Ošiņš 8ff59fd0db Allow fuzzy finding by repo id, and issue/patch ids
This supports the workflow of copying an id from radicle-explorer and
searching for it on the app.
2025-06-05 10:51:04 +02:00
Rūdolfs Ošiņš 43989e53ba Show patch id as well as revision id in breadcrumbs 2025-05-22 14:19:35 +02:00
Rūdolfs Ošiņš f539a2a350 Implement breadcrumbs 2025-05-22 11:10:02 +02:00
Rūdolfs Ošiņš 0de67878a0 Always close inbox when navigating to notification 2025-05-20 15:58:09 +02:00
Rūdolfs Ošiņš 71069ef19e Move inbox to a global popover 2025-05-20 15:46:00 +02:00
Rūdolfs Ošiņš ac7189a1e9 Make all popover and drop-down buttons consistent 2025-05-15 17:08:43 +02:00
Rūdolfs Ošiņš 7d977f22da Extract buttons into own components 2025-05-15 17:08:43 +02:00
Sebastian Martinez f7cfae720e Update dependencies 2025-05-14 11:16:26 +02:00