MisteR Dashboard

A dashboard of the open merge requests of a GitLab project, on one page. Each one shows what it waits for: pipeline, SonarQube, mutation testing, unresolved threads, lag behind the target branch, so you see at a glance which one needs you. On top of that, it brings features that GitLab's merge request list lacks.

MisteR Dashboard listing the open merge requests of a project, each with its commits, comments, unresolved threads, pipeline, Sonar issues, coverage, remaining mutants and lag behind the target branch.
The open merge requests of the demo project, an invented online bookshop. Take the tour.

Features

What GitLab's merge request list doesn't do

  • See which merge request is worth your review now: for each one, whether it builds, its Sonar quality gate and mutation testing score, how many commits and how recent the last push, who pushed or commented last, the unresolved threads and the lag behind the target branch. Red build, no need to look yet; green with a few commits, time to review.
  • A diff that reads better, small or large: the words that changed marked within each line, the file list always beside the code, side by side or line by line, and large diffs that stay smooth, each file highlighted as it comes into view, Space + drag to read a long line.
  • The review's rhythm, in one chart: hover the commit count to see the commits pile up over time, with the reviewers' comments and the author's answers placed on the curve. Do reviews follow the pushes quickly? Do fixes follow the comments? It shows at a glance.
  • Review only what changed: the diff groups commits by push, and shows the last push alone or only what arrived since you last read it.
  • Notified when it matters: a browser notification when your merge request breaks or gets approved, or when the main branch's pipeline fails, with a sound for each: a bell for an approval, a siren for a failed main branch, an arpeggio for a merge.
  • AI prompts for a merge request: one button writes the prompt that fixes what is red, from the CI signals and the unresolved threads, or runs the actions your project defines, such as a review. Copy it into your coding agent, or launch it in a new tab of Orca, herdr or your terminal: GNOME Terminal, Terminator, xterm, tmux and others.
  • Lead time, merge request by merge request: look back at what was merged, with the same review indicators as the open ones, commits, comments, threads and the review's chart, plus how long each took to develop, to stabilize and in total.
  • Diffs that survive a GitLab outage: each diff is computed on your local git clone, kept fetched in the background.
  • No login page, no SSO redirects: the dashboard reaches GitLab with your token, so it is there as soon as the tab opens, even when the browser restores yesterday's tabs.
  • Search across merge requests: every word must match, a comma separates alternatives, !249 targets one merge request.

And everything you already use in GitLab

  • Approvals, labels, draft status and the target branch of each merge request.
  • The diff, side by side or line by line, with syntax highlighting.
  • Line comments: publish a discussion, reply, resolve or reopen a thread.
  • The merge request's comments and reviews, rendered as in GitLab.
  • Files ticked as viewed, and the review's progress.
  • The latest pipeline of the main branch, its jobs by stage.
  • Light and dark themes, in English or French.

Try it without a GitLab

The demo comes with its own fake GitLab and SonarQube and an invented project, an online bookshop, so you can try everything without a server, a token or any configuration.

git clone https://github.com/YannRobert/mr-dashboard.git
cd mr-dashboard
python3 demo/run.py

Fourteen open merge requests, with their pipelines, review threads and a real git repository for the diffs. The team keeps working while it runs: approvals come in, the main branch breaks and recovers, a merge request gets merged. A page of the fake GitLab breaks it on demand, to see the dashboard through an outage.

Start it

You need git, a local git clone of the project to track, and a GitLab token from the glab configuration (glab auth login once).

git clone https://github.com/YannRobert/mr-dashboard.git
cd mr-dashboard
python3 mr_dashboard/server.py \
    --gitlab-host https://gitlab.example.com \
    --gitlab-project group/project \
    --pipeline-branch main \
    --repo-dir ~/src/project \
    --no-sonar --no-pit

Then open http://localhost:8765/. With SonarQube or mutation testing, the options name the server and the CI jobs; start.sh keeps the dashboard running all day from a profile.

How it works

A very small server runs on your machine. It serves the page, relays the GitLab and SonarQube APIs, and keeps the local git clone fetched. It refreshes the merge requests every 5 minutes, and a reload redisplays what the browser already has without asking GitLab again.

The README gives the exact requirements.

Security

The full security model is in the README; vulnerabilities are reported privately, as SECURITY.md explains.

Current limits