UPDATE:
No more nail-biting agony !! The progress update for the Radicle IDE plugins that was funded by this Grant is finally here!
Jetbrains IDE Plugin
The biggest milestone for the Jetbrains IDE plugin was that the project’s development has successfully taken the first steps in moving from GitHub → Radicle!
GitHub → Radicle migration
We split the migration into 3 phases:
- Use Radicle for git hosting and use Radicle Patches (RPs) instead of GitHub Pull Requests (PRs).
- Migrate Issues from GitHub → Radicle
- Migrate CI away from GitHub Actions (or use GitHub Actions with Radicle)
For (1), a new, multi-delegate project was created and already the team is using Radicle Patches as its main workflow!
For (2), we have already built a tool that facilitates the issue migration, however we are still missing a planning board (we are currently relying on GitHub projects) and are looking for alternatives in this space.
For (3), we are still a little blocked due to the lack of CI integrations in Radicle yet and especially due to the multi-platform CI environment we are currently using in GitHub Actions (windows, macOS, linux). For this reason, we are still having to use GitHub PRs - in parallel with Radicle Patches.
New features
Not 1, not 2, not 3… but 6(!! ) releases shipped during the last 3 months, allowing us to already do some work with Patches and Issues inside the IDE:
Reviewing a Radicle Patch for the Radicle Jetbrains Plugin itself in IntelliJ - Left: list of changes, top: activity view, bottom: reviewing changed file
In more detail, here are the release highlights:
v0.6.1
A small patch release with a couple of quality of life improvements:
- Adds a refresh button for patches and issues #294
- Adds support for aliases in radicle identities in #271
- Refactor issue & patch filters in #281
v0.6.2
The hightlight in this patch release was fixing latest heartwood breaking changes, as well as the Issue Overview page:
New features:
Fixes:
- Fix broken api requests in #323
- Fix
rad self
parsing in #306 - Add alias field in the settings in #312
- Wait for data before calling the filter method on issues / patches in 299
- Remove classes from Utils and move to separate files, in 317
v0.7.0
A small, first release in the 0.7.z stream of releases that introduces support for 2023.2 IntelliJ version and brings the first bit of additional functionality with regards to patches: changing labels and status of Patches.
v0.7.1
- You can now create new Radicle Issues from within your IDE ! , in #343
- You can also add reactions to comments (for both Patches and Issues !) , in #270
- The “Refresh” button would reset filters in the Issue listing. @JChrist (politely) explained that it shouldn’t, in #349
- The Radicle Tool Window Icon size was kind of… large. A short diet later, it’s now back to normal! , in #345.
v0.7.2
- Checkout patches directly from the IDE! A new check out button, allows you to check out the patch branch, so you can work directly with the code in your working copy, in #352
- You can now not only add reactions to patches / issues, but you can also - wait for it - remove them… No more stress when you accidentally misclick the embarassing wrong icon, in #326.
- The issue descriptions and comments were all having a bit of a bad hair day, so it was time to help them out a little by wrapping the text. We also fixed the order of the fields inside publish dialog to match the CLI order! - in #335
v0.7.3
- Synchronizing your Radicle project with the network is something that the
radicle-node
automagically takes care of you behind the scenes. But not always (as the node is sometimes not running, or offline, etc.) That’s why it’s important to allow the user to manually sync their project!- More info: #358
- Let’s be honest, markdown is much prettier when rendered! We weren’t correctly rendering markdown, so this PR adds markdown support in Radicle Issue and Patch description and comments! in #335
- Small fix when we didn’t show the radicle tool window after the user first published a project.
- More info: #328
- Few (successful) projects have less than 10 issues or patches. Our test projects did though(!!), so we were previously only loading the latest 10… That’s now fixed, so the plugin is ready for some real-world projects!
- More info: #373
- It’s now possible to add arbitrary Decentralized Identifiers (DIDs) as assignees to an issue (and not just assign an issue to delegates)
- More info: #346
- Improved the emoji reaction button look and feel, so it should hopefully be easier to add reactions now!
- More info: #377
Upcoming work
Our next release (v1.0) will deliver the last missing features that our team is struggling with, as we are dogfooding on the plugin itself (and Radicle), in order to write the next plugin versions. With a lot of the work on issues already in place, this release will focus primarily on missing functionality around working with Patches entirely inside IntelliJ and other Jetbrains IDEs. For more details, please refer to the github milestone.
Visual Studio Code (VS Code) Extension
Starting the quarter, the VS Code extension only partially supported Heartwood. Our first and foremost target was to migrate all existing functionality to Heartwood.
This included a bunch of changes related to identity (and aliases) and the rad auth
flow inside the IDE, which is now super streamlined for smooth user onboarding.
With those out of the way, we placed a lot of focus on usability and user onboarding, so that the features we build into the VS code extension are here to stay - hoping to avoid further UX improvement iterations, which have been necessary in the Jetbrains IDE plugin.
New Features
Smaller number of releases here, but, they are packed with new features!!
v0.2.2
- commands: replace pre-heartwood, now deprecated rad pull/push commands with fetch/announce across multiple UI locations (#42)
- update from old (seedling) to new (alien) Radicle logo and branding (#56)
- auth: fix creation of new Radicle identity which now requires a mandatory alias (#67)
v0.3.0
This feature-packed version introduces quite a few enhancements and fixes, bringing Radicle Patches inside VS Code for the first time!
Highlights
- New Patches view
Enhancements
- patches: show new view in the sidebar listing all Radicle Patches, including a tooltip with more info on hover and the ability to easily copy the Patch identifier (#43)
- patches: each item in the list of Radicle Patches can be expanded to show a sub-list of files changed. (#46)
- If multiple items have the same filename, their directory URL will be additionally shown as the item’s description.
- On hover, a tooltip shows the relative URL of the file in the repo, and the kind of change it had.
- A left click on a filechange item will open a diff between the original and patched file versions.
- A right-click allows opening either the original or changed file versions (as applicable) without the diffing visual noise.
- commands: new VS Code command to refresh the list of Radicle Patches (#43)
- commands: new VS Code command to collapse all items in the list of Radicle Patches (#46)
- ux: convert existing flows with series of user input steps into a bespoke, cohesive experience indicating total step count and completion progress, allow editing of already submitted answers of the same flow, as well reveal-toggling of typed-in passwords, among other improvements (#67)
- auth: additionally show the alias associated with a Radicle identitifier whenever showing the latter (#67)
Security Fixes
- auth: prevent potential leaking of
RAD_PASSPHRASE
into the JavaScript console (#70)
Fixes
- auth: don’t allow the user to submit an empty string as an alias when creating a new radicle identity (#67)
- auth: warn the user that an empty passphrase will result in an unencrypted Radicle key when creating a new radicle identity (#67)
- auth: don’t ask users with empty-passphrase-identities to enter their (blank) passphrase each time an auth-guarded Radicle command is executed (#71)
- auth: ask the user to re-enter their chosen passphrase when creating a new radicle identity to protect agains typos and align with Radicle CLI’s UX (#67)
- auth: show “created new” instead of “unlocked” in the notification and logs when creating a new radicle identity (#67)
- auth: cancel the whole flow, warn and notify user when pressing escape at any step of the flow (previously only applied for the passphrase question) when user is asked for his input in order to create a new radicle identity (#67)
- httpd: show buttons opening Output or the related configuration option in Settings in the event of Fetch Error (#39)
Refactors
- ux: wrap VS Code’s lackluster InputBox API resulting in procedural, verbose and brittle client code, with a new custom-built sensible wrapper (#67)
- httpd: design and implement architecture for idiomatic code interacting with the Radicle HTTP API (#39)
Documentation
- readme: use up-to-date screenshots for Integrated Authentication features (#67)
Upcoming work
Our next release (v0.4) aims to complete the required functionality around Patches, so it is possible to work entirely with Radicle inside VS Code, without the need to switch back and forth between CLI, broswer and IDE. You can find more details on the GitHub milestone (for now). The next goal is to introduce support for Radicle Issues in v0.5, so we can also migrate our issues to Radicle!
Conclusion
The releases of the Radicle Jetbrains IDE Plugin and the Radicle VS Code Extension conclude the work undertaken as part of this grant. We look forward to continuing the work on the Radicle IDE plugins soon!