MergeBoard 0.4 - Threads, Attachments and More

MergeBoard 0.4 - Threads, Attachments and More

We are constantly working on improving MergeBoard and are pleased to announce that we have just released version 0.4. The new version not only brings many behind-the-scenes optimizations and improvements but also simplifies and improves the user interface. In this blog post, we want to take a closer look at the changes and how you can benefit from the new features.

Thread list

Comment threads are a key way to exchange feedback and ideas between the author and the reviewers of a merge request. Working with them can be cumbersome though. On the merge request overview page, you can scroll through all the comments but you don’t have a lot of code context. The code diff on the other hand gives you all the context you need, but you can easily lose track of where all the comments are. To solve these issues, we introduced a thread list pane in the diff viewer.

Thread list in a MergeBoard merge request.

The thread pane gives you an overview of all the threads that are relevant to the displayed changes. You can see the author, a preview of the text, the number of replies, and the state of the thread. The two checkmarks indicate whether the change request was marked as fixed and if it was already approved, allowing you to easily decide which threads are relevant for you.

Hovering over a thread in MergeBoard.

When hovering over a thread, you can see the number of code references attached to a comment. The up and down arrows can then be used to scroll to their position in the code. The corresponding code reference marker will start to blink so that you can always be sure to look at the correct lines even in areas with a lot of threads.

If you want to see the full text of the thread without cycling through all the code references, you can double-click the thread entry. The browser will then directly scroll to the position of the thread in the code.

We hope you enjoy this new feature as much as we do and are open to your feedback :-)

Simplified review and comment workflow

When you are reviewing a merge request with MergeBoard 0.4 for the first time, you might assume that something is broken. The review toolbar, which previously allowed you to switch between the selection, comment, and review mode is gone. This is not a bug though, we simply don’t need it anymore. The mode is now implicitly determined by the position where you push down your mouse button.

Referencing lines in a comment in MergeBoard.

By pressing down the left mouse button between the line numbers and code, you can start a new code comment. When you are finished marking lines, you can click the plus symbol to open the comment editor. You can still use your right mouse button to deselect lines again. In contrast to the previous MergeBoard versions, you can still edit the code references even when the editor is already open.

Another change of MergeBoard 0.4 is that the color of the code references is now determined when selecting your first line. The color, therefore, does no longer change when you submit or save a thread.

Marking lines as reviewed in MergeBoard.

To mark lines as reviewed, you need to press down the left mouse button on top of the line numbers. As before, you can use your right mouse button to remove the review markings again. Please be aware that you can only mark changed lines as reviewed. You can still start or end your drag operation on a context line, but there won’t be any visual feedback for these areas.

Attachments

Sometimes it is simply not enough to reference code or explain your thoughts in text. We have therefore added support for attachments in comments. Simply drag one or multiple files into the text area or paste an image from your clipboard.

Adding attachments to a MergeBoard comment.

Uploaded files are shown below the text of a comment and can be viewed or downloaded by anyone having read access to that comment. Users with edit permissions can also add or remove files from an existing comment. If someone ever uploads a file that they shouldn’t have shared, it is sufficient to remove it from the comment (or delete the whole comment). Files that are not attached to a comment (anymore) are only accessible by the original author and will be deleted from the system after a grace period.

Decluttered merge request list

In previous versions of MergeBoard, we displayed a lot of information in the merge request list. This often made the merge request information look very cluttered, even though some values were rarely needed. We have therefore decided to redesign the list entries based on your feedback.

List of merge requests in MergeBoard.

Our main motivation was to help you decide more quickly which merge request you want to work on next. We have therefore moved information that is rarely required for this decision, like the branch names, into a tooltip. In exchange, we now display the size of the code changes directly in the list entry. This should help you estimate if you have enough time to start reviewing a merge request. We want to stress though that this is not an invitation to skip reviews of larger merge requests forever ;-).

For more information about the displayed values, take a look at the corresponding documentation.

Speed improvements

MergeBoard offers some unique code review features like the InspecDiff or the minimap which often require additional processing power. This can sometimes lead to long load times and make MergeBoard feel sluggish. Since our goal is to make code reviews faster and nobody likes watching a loading indicator spin, we took some first big steps towards optimizing performance.

You should be able to notice the biggest differences when reviewing code once everything is loaded. Selecting lines for a comment or marking lines as reviewed should now be much faster, even for large merge requests. We have also identified and removed some unnecessary triggers that caused the minimap to redraw even though nothing has changed. This improvement should lead to be a better overall experience.

We also worked on reducing the load times of code diffs. Generating such a code diff is complex, especially the generation of InspecDiff is composed of many different steps (parsing the code, syntax highlighting, comparing AST trees, …) that are algorithmically complex. In our first efforts, we were able to reduce the load times by about 20% or more, depending on the source code file. This includes changing the way how syntax highlighting for Java works. This will lead to faster and more precise results in the long run but might have a slightly reduced quality in the meantime.

We will continue our efforts with future MergeBoard versions and already started working on further speed improvements.

Minor changes

As with every release, there is also a list of smaller enhancements you might find useful:

  • Show notification when a new branch is detected with a button to easily open a merge request
  • Scroll to the beginning of a patch when it is collapsed while it is sticky
  • Use badge instead of background color to mark pending comments/threads
  • Show absolute times as tooltip when hovering over relative timestamps
  • Collapse patches by default if they contain very long lines

If you have any questions, you can always reach us at support@mergeboard.com.

Share on
Michael Müller

About the author

Michael is one of the co-founders and managing directors of Sysmagine GmbH. Thanks to his experience in software development and team leadership, he knows what it takes to make code review processes run efficiently.

Recent Articles

blog-image
SemanticDiff: MergeBoard Diff as Visual Studio Code Extension

With SemanticDiff we now provide our code change visualization as Visual Studio Code extension. Find out how to get better diffs directly in your editor and how this affects MergeBoard.

blog-image
Does Pair Programming Replace Code Reviews?

Pair programming and code reviews are considered alternatives, but is this really true? Learn in which situations either approach performs well and how a combination can lead to the best results.

blog-image
Multitenancy with FastAPI, SQLAlchemy and PostgreSQL

Implementing multitenancy support is difficult: How do you separate the data? How do you prevent tenant data mix-ups? How do migrations work? Check out our guide for the answers and more.