Skip to content

Diagnostics and the Nerd screen

monikapurpl3 edited this page Aug 21, 2026 · 1 revision

Diagnostics and the Nerd screen

Two different tools. Diagnostics answers "is this working, and if not, where?". The Nerd screen answers "what exactly am I talking to?".

Diagnostics

A full battery mirroring the server's own breeze-core diag:

  • Connectivity, plus the server's build and advertised features — and the app's own version.
  • Authentication and security posture — that the server rejects a missing or wrong key, and which endpoints are token-gated.
  • This device's credential — auth version, and a warning as expiry approaches.
  • Your device clock offset. A phone whose clock has drifted past the server's signature window fails every signed request, and this identifies it in one tap.
  • Config secret-sanitisation — that the server does not hand back the API key or per-unit V3 secrets.
  • Input validation — unknown unit → 404, out-of-range value → 422.
  • Batch state and a live-stream check.
  • Per-unit state, latency and hardware capabilities.

One deliberate omission: it does not probe the LAN-only admin endpoint /api/auth/devices when you are remote. A single 403 there could get your address banned by the server's fail2ban — and behind NAT, that takes everyone on your connection with it.

The Nerd screen

The About row in Settings is just a version number. Tap it seven times — the gesture Android uses for developer options, with a countdown for the last three — and you get everything:

  • This app — version, package, platform, Dart runtime, and the resolved version of every dependency, read from the shipped pubspec.lock so it cannot drift from what is actually running.
  • This connection — measured round-trip latency, auth version, and how the server sees you: your IP, whether that reads as private, the Host header, scheme, X-Forwarded-For, proxy state. This is the fastest way to diagnose a reverse proxy that is not forwarding the real client address.
  • The server — version and build commit, OS, init system, CPU and architecture, every component version, install date, uptime, time zone, memory, the store paths and their file modes, the effective settings.
  • Your air conditioners — addresses, credentials, cached capabilities, history depth.
  • Everyone's devices — each enrolled client with its auth version, enrolment date, last use and expiry.

One button copies the lot as JSON, for pasting into a bug report.

It needs Breeze Core ≥ 3.0.5, which is where GET /api/system arrived. Against anything older there is no partial version worth rendering, so it says womp womp update your server and leaves it at that.

Clone this wiki locally