24 nights with commits after midnight in the last 90 days
11 in the 90 days before
gitdashx 0.3.0 · windows x64 · runs offline
Point it at your GitHub organizations and it reads the commit history the way a colleague would: when the work actually happened, what shipped each quarter, how pull requests moved, who is the only person who knows a product.
It is a desktop app. There is no account, no server of ours, and nothing to upload.
125.8 MB · windows 10/11 · no node, no git, no gh to install first
#preview
One window, every organization you belong to, for any period you choose.
| a.rahman | 412 | 24% | |
|---|---|---|---|
| s.kowalski | 318 | 9% | |
| m.okafor | 247 | 31% | |
| j.lindqvist | 174 | 6% | |
| t.nakamura | 120 | 12% |
Sample data. A screenshot of a real run would show real people's working hours.
#charts
Everything the app draws, at the size it draws it. Pick a person and a period and all of it follows.
| contributor | commits | prs | merged | rate | reviewed | issues | repos |
|---|---|---|---|---|---|---|---|
| a.rahmanyou | 412 | 96 | 88 | 92% | 61 | 44 | 9 |
| s.kowalski | 318 | 71 | 64 | 90% | 52 | 31 | 7 |
| m.okafor | 247 | 54 | 47 | 87% | 38 | 26 | 6 |
| j.lindqvist | 174 | 32 | 28 | 88% | 24 | 18 | 5 |
| t.nakamura | 120 | 15 | 8 | 53% | 9 | 7 | 3 |
24 nights with commits after midnight in the last 90 days
11 in the 90 days before
49% of your commits in the last 90 days were outside office hours
down from 53% - rest of team 1%
15 days in a row with commits, without a day off
28 jul - 11 aug, the longest stretch this year
+110% commits in the last 90 days against the 90 before
544 against 259
6h 40m median time to merge, down from 8 hours
72% merged within a day
5 products where one person wrote over 80% of the commits
esap 92%, ghg 85%, audit 100%, and 2 more
| q2 24 | q3 24 | q4 24 | q1 25 | q2 25 | q3 25 | q4 25 | q1 26 | q2 26 | total | |
|---|---|---|---|---|---|---|---|---|---|---|
| a.rahman | 10 | 12 | 17 | 32 | 40 | 49 | 30 | 20 | 38 | 248 |
| s.kowalski | · | 12 | 15 | 33 | 46 | 44 | 50 | 42 | 29 | 271 |
| m.okafor | · | · | 29 | 36 | 42 | 29 | 30 | 41 | 29 | 236 |
| j.lindqvist | · | · | · | 38 | 35 | 45 | 23 | 23 | 27 | 191 |
| t.nakamura | · | · | · | · | 54 | 28 | 34 | 34 | 22 | 172 |
| total | 10 | 24 | 61 | 139 | 217 | 195 | 167 | 160 | 145 | 1118 |
| pull request | author | open for |
|---|---|---|
esap#412 Split the reporting job off the request thread | m.okafor | 19 d |
ghg#118 Scope 3 factors for the 2026 dataset | s.kowalski | 12 d |
portal#77 Keep the filter state in the URL | a.rahman | 6 d |
audit#204 Retry the evidence upload on a 502 | j.lindqvist | 2 d |
| contributor | commits | outside | late night | midnight | weekend | busiest |
|---|---|---|---|---|---|---|
| a.rahman | 412 | 24% | 11% | 64 | 13% | 12 pm |
| s.kowalski | 318 | 9% | 2% | 6 | 3% | 10 am |
| m.okafor | 247 | 31% | 14% | 41 | 18% | 11 pm |
| j.lindqvist | 174 | 6% | 1% | 2 | 2% | 2 pm |
| t.nakamura | 120 | 12% | 4% | 9 | 5% | 4 pm |
Drawn, not screenshotted, and every number invented. A screenshot of a real run would show real people's logins and the hours they work.
#measures
Every organization you belong to, separately or combined, for any period you choose.
#output
Not a wall of totals. Ranked observations, each one compared with the period before it.
| after-hours share | 18% | +7 pts |
|---|---|---|
| weekends worked | 6 d | +2 d |
| longest run, no day off | 34 d | +11 d |
| late nights, 22:00-04:59 | 12 | -3 |
| median time to merge | 6h40m | -1h20m |
| products only you know | 3 | unchanged |
Each highlight is measured against the period before it, so the page tells you what changed rather than what is merely large.
#private
The whole tool is one process on your machine talking to GitHub. That is the entire architecture.
Contribution analytics means reading how your colleagues spend their working hours. That is exactly the kind of data that should not be sitting on somebody else's server.
#how
#download
Free. Unsigned, so verify the checksum if you would rather check than trust.
| build | file | size | notes |
|---|---|---|---|
| installer | ↓ gitdashx-0.3.0-x64.exe sha256 812489d26186d26d0d6a07a30e70f4cc30d050429dde531572ad35d1642a3933 | 125.8 MB | shortcuts, per-user, no admin rights |
| portable | ↓ gitdashx-0.3.0-portable.exe sha256 5ec4f6a480ca582cf727381fe9c1cc03206d635bc3b927c6d5ab8df6c1b0b10a | 125.6 MB | runs from anywhere; one copy at a time |
#faq
Does anything leave my computer?
Only requests to GitHub's own API, made with your token. There is no GitDashx server, no account and no telemetry. Everything it works out is stored in a folder on your machine.
Does it download our source code?
No. It mirrors history with git clone --mirror --filter=tree:0, which fetches commit metadata and skips file contents entirely. It never reads what is inside your files.
What access does it ask for?
A GitHub token with the repo and read:org scopes. It reads commit metadata, pull requests and repository statistics, and never writes to your repositories.
Why does Windows warn me when I run it?
The builds are not code-signed, so SmartScreen flags an unknown publisher. Choose More info, then Run anyway. Every release publishes a SHA-256 checksum you can verify first.
Do I need git or the GitHub CLI installed?
No. The desktop app carries its own copy of git. If the GitHub CLI happens to be installed and signed in, the app offers those accounts as a shortcut, but it does not need them.
Is there a macOS or Linux build?
Not yet. The packaged app is Windows x64 only today. The tool underneath is plain Node.js and runs anywhere from a checkout.