Coming from gh-dash
labdash has the shape gh-dash established: a query rendered as a table, several of those tables side by side, and a preview pane for the selected row. If you know one, this page maps it onto the other.
Concepts
Keys that carry over
| Key | Action | Key | Action |
|---|---|---|---|
| j k | move down and up | o | open in the browser |
| h l | previous and next section | y Y | copy branch, copy URL |
| Tab | next view | p | preview on or off |
| / | search loaded rows | ? | help |
| r | refresh this section | q | quit |
Three keys are new, and they are the ones that build a view: b, f and P. See the keyboard cheatsheet.
Where views live
A pinned view is written to a state file that labdash owns, next to your settings. It records the scope, the filter, the sort and the name, and it survives an upgrade.
There is no view file to commit to a repository, so a shared team dashboard is not something you check in. Each person builds their tabs in three keystrokes on their own machine.
What GitLab adds
Nested groups
Group.mergeRequests(includeSubgroups: true) returns every merge request in a nested group tree in one call. Selecting platform in the browse tree covers platform/core, platform/ingest and everything below them, in one wait rather than one per project. GitHub's org: is flat and has no equivalent.
Typed filter arguments
GitLab's merge request connection takes 46 typed arguments with real enums: state, draft, labels, author, reviewer, approvers, milestone, dates. labdash sends them as GraphQL variables and completes label, user and project names from your own instance, so a value cannot be misspelled and an impossible enum is rejected as you type it. See filtering.
detailedMergeStatus
GitLab answers why a merge request cannot merge, across 24 enum values, and labdash prints that answer in the row: conflicts, ci failed, needs 1, 3 threads open, blocked by 2. See merge blockers.
Merge trains
train 3/7 in the row, and a merge prompt that says it will queue the merge request rather than merge it. See merge trains.
To-dos
GitLab's to-do list is a queue with its own API: mark done, mark all done, snooze, restore, and filter by action or target. labdash gives it a view of its own, with a count badge on the switcher. See to-dos.