All posts
product2 min read

LabFox - A GitLab Client Built to Use From a Phone

Read merge requests and diffs, check pipelines, and approve from your phone. Self-hosted GitLab works too.

When a pipeline breaks on the commute

The notification arrives and there's nothing you can do from a phone. The web UI does open in a mobile browser, but reading a diff or scanning a job log on a small screen wears thin fast. So it waits until you're back at a desk.

I wanted that loop to work from a phone, so I built it.

It doesn't port the whole web UI

Trying to cover everything GitLab's web UI does means nothing ends up good. Instead it focuses on making one loop fast, the one developers repeat every day.

Check notifications → open the issue or merge request → read the diff and review → check pipeline status → check the job log → approve, merge, or retry.

Anything off that path waited. A diff that loads quickly matters more than an elaborate settings screen.

What's inside

  • Projects, issues, merge requests, the to-do inbox, and search
  • A diff viewer with line numbers, and review actions
  • Pipeline status and colour job logs
  • Both gitlab.com and self-hosted instances

It branches on width, not platform

The same code branches on screen width rather than platform. A tablet gets a navigation rail and room to show twenty merge requests at once. Building a separate "tablet layout" means building every screen twice. Splitting on width also handles a narrowed desktop window for free.

Tokens never leave the device

Personal access tokens and OAuth tokens are stored only in the device's secure storage, Keychain or Keystore. They are sent only to the GitLab instance you configured. They don't pass through sloki9637's servers, and they don't appear in logs or error reports.

Projects, issues, merge requests and files come straight from the instance you signed in to and are rendered on your device. For a team on self-hosted GitLab, whether internal data passes through an outside server decides whether the app can be used at all, so it was built that way from the start.

Where it stands

Android is on Google Play. iOS, macOS and Windows build from source, with store releases in preparation. Built with Flutter; the code is Apache-2.0.