Diagnostics
Every command here exists so a bug report can be answered without a screen share.
labdash doctor
It never prints a token.
The debug HTTP log
Every request and response goes to <config dir>/http-debug.log, with Authorization, PRIVATE-TOKEN and JOB-TOKEN redacted before anything reaches the disk.
The GitLab request id is the most useful line in a report about a self-managed instance, because an administrator can find that exact request in their own logs.
The application log
<config dir>/labdash.log. Structured, rotated, and never written to stdout or stderr.
A full-screen terminal application owns the screen. Anything else writing to it corrupts the display, and the corruption gets reported as "the UI randomly breaks", which is nearly impossible to diagnose from a bug report.
Every subprocess labdash spawns has its output sent to io.Discard for the same reason.
Crash reports
A panic restores your terminal first, then writes a report and prints its path:
Leaving someone with a broken shell, with no cursor, no echo and the alt-screen still active, is a worse bug than whatever caused the panic. The restore happens before anything else.
The report contains the stack trace, the version and the terminal environment. It contains no credential and no row data, because your merge request titles are not ours to collect.
Theme preview
Renders every token, every status glyph and every state at your colour depth with your font, which is the only place the question "does this look right" can be answered.
Use it when reporting anything visual. A screenshot of theme preview says more than a paragraph.
Bug report contents
labdash doctoroutput- What you expected, and what happened
- For a rendering problem: the terminal name and version, and
theme preview - For a request problem: the relevant lines from the debug log, including the
x-request-id - For a settings problem: the relevant block, with names changed
A pinned view contains your group and project paths. A debug log contains hostnames. Neither is a credential, and both may still be something your employer would rather you did not paste into a public issue.
Never include a token, even partially. If one reaches a transcript, revoke it.
Version and updates
The update check is one request, cached, and it never blocks startup.