Closed gsaslis closed 6 months ago
@maninak please take a look and let me know what you think
For context, the gitlab merge request "overview" (from the GitLab Workflow extension) follows a very similar design - perhaps with some parts a bit cleaner overall...
This (as well as multiple other new features) will require a Webview probably using those as components.
The thing is that this practically means that we start adding web-apps to our extension which is a major new tech capability, also affecting build/publishing pipelines etc. Practically everything that isn't a Welcome view like those we already know (with sync, fetch, announce buttons) or TreeView like the Patches View, has to be a Webview
@gsaslis , I suggest we scope that task out as a separate ticket as it adds significantly to the scope of this present one which is already sizeable.
@maninak makes sense, thanks for enlightening me here.
You mean creating the issue about adding Webview separately ? Wanna have a go at a description of what that would include?
I created #96 to cover the above
I created #96 to cover the above
thanks!
could you also please assign a size bucket ?
@gsaslis How can we know the source and target branches? I can see the base
and oid
fields inside a revision object but those as far as I've seen only point to a commit hash.
@gsaslis How can we know the source and target branches? I can see the
base
andoid
fields inside a revision object but those as far as I've seen only point to a commit hash.
we can't. This information is not provided by the protocol at this point in time. at the moment, the only global branch is the defaultBranch and all patches are targeting that branch.
As agreed, I'll be deferring commit listing in the Activity section to a later task.
In the interest of time, this ended up having plenty of tangential and even non-related changes that I sneaked in while working on the long-standing branch due to the atomic effort it required.
Here's the list of all changes (sit comfortably and grab a snack for good measure):
New Patch detail view
patch-detail: implement new patch detail webview showing highly dynamic, in-depth information for a specific patch
can be opened via a new button "View Patch Details" on each item in the Patches view
panel's title shows the patch description in full if it's short, otherwise truncated to the nearest full word fitting the limit
the new view's design is purposefully minimal, glanceable, legible, responsive and verbose. It remains familiar to VS Code's native look'n'feel, while also staying true to Radicle's "hacky" vibe. Despite it being a full-fledged custom web-app under the hood, it successfully creates the illusion of it being just another piece of native VS Code UI.
view's theme adapts fully and on-the-fly (without reopening of the view) to whichever theme the user configures for his VS Code
view has the following main sections:
header
Patch
Revision
Activity
header section shows the following info:
status of the patch (e.g. open, merged, archived, ...)
major events like "created", "last updated", "merged" and related info with logic crafting optimal copy for each case (see similar tooltip improvements below)
a "Refresh" button that refetches from httpd all data of that patch and updating all views that depend on it
a "Check Out" button that checks out the Git branch associated with the Radicle patch shown in the view
a "Check Out Default" button that checks out the Git branch marked as default for the Radicle project
"time-ago" for major patch events gets auto-updated to remain accurate as time goes by
Patch section shows the following info:
checked-out indicator
id
revision author(s)
labels
emoji reactions to the patch
title
description
Revision section shows the following info:
a revision selection dropdown located next to the section heading contains all revisions of the current patch as options
merged
/<countOfMergedRevisions>
if more than one revisions got merged e.g. merged/3
accepted
accept
reviewrejected
reject
reviewfirst
latest
sole
id
author
reviews
date
latest commit
based on commit
emoji reactions to the revision
description
Activity section lists various patch-related events that took place across the lifetime of the patch. Each event is preceded by a "mini"-sized "time-ago" and a dedicated icon. A new event entry is listed for:
event for patch revision creation
event for review of any revision, with the following data:
event for standalone-comment/discussion posted on a revision, with the following data:
patch merge
all of the above events also show:
the Activity an Revision sections come with fine-tuned responsiveness features depending on the webview viewport's width
when the viewport is wide they are shown in a 50/50 split two-column layout
as the viewport is getting narrower the Revision column gets narrower faster (resulting in e.g. 70/30 split) to prioritize giving the Activity section maximum of the available horizontal real-estate since it not only hosts relatively more important content, but also one that is commonly wrapping around into new lines due to how expansive it can be. Even a few pixels narrower Activity column can result in very quickly stretching it's contents vertically as it wraps around itself.
when the viewport becomes less than 640px the columns will collapse in a single one and the two respective sections will get joined in a tabbed layout. State such as the selected revision in the section's dropdown persist across tab switching and column-layout changes
Markdown parsing comes with multiple additional features such as
code highlighting with an aditional label communicating the language the code is identified and highlighted as
task list e.g. - [ ] task to do
and - [X] task done
SVG
emoji e.g. :car:
=> 🚗
:)
=> :)
instead of it getting converted to 😀
, which may not match the author's initial sentimentmarked text e.e. ==marked==
=> <mark>inserted</mark>
footnote references e.g.
Here is a footnote reference,[^1] and another.[^longnote]
[^1]: Here is the footnote.
[^longnote]: Here's one with multiple blocks.
subscript e.g. C~7~H~14~O~2~
superscript e.g. x^2^
abbreviation e.g. this input:
*[HTML]: Hyper Text Markup Language
*[W3C]: World Wide Web Consortium
The HTML specification is maintained by the W3C.
results in:
<p>The <abbr title="Hyper Text Markup Language">HTML</abbr> specification is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p>
automatic table of contents generation wherever the marker [toc]
is placed, based on previously declared headings etc
automatic linkification of text such as email URIs
patch state remains in sync with all other views
where applicable the various data have on-hover indicators hinting that they come with a tooltip which shows additional info such as author's DID, full Id in case it's shortened, or localised time (including the timezone used) in full text in case it's a "time-ago", etc
all data coming from Radicle is made visually distinct (and a bit more accessible / easier to read) from miscellaneous UI copy by rendering it using a monotype font
~/.radicle/bin/rad
defined in https://radicle.xyz/install script to the list of watched paths previously defined for the legacy package-manager-based installersradicle.clone
command. Now the list will also be shown with the most seeded repos at the top. Addresses regression caused due to a breaking change in Radicle HTTP API (httpd).radicle.clone
command not showing number of users seeding each repo in the list items. Addresses regression caused due to a breaking change in Radicle HTTP API (httpd).pinia
and @vue/reactivity
. This enables sharing state across sibling views/entities that was previously too hard, enabling more performant solutions and features that were previously too impractical to tackle, while the code for them can be much more maintainable and less likely to regress in the future.
This issue is about the activity view that comes up from the Radicle Patch list items and the highlighted area in the screenshot below.
It contains read-only information:
rad patch checkout $patch_id
,There is a separate issue about the actions available on this view.
Resources: