// Field Guide — In the Field — entry 04

The Dashboard

A tour of the research station. Everything below is reachable from the left sidebar once you’ve mounted squatch_mail_dashboard "/squatch" in your router.

The dashboard is the actively-being-built part of this pre-1.0 expedition — the foundation (router macro, auth layers, embedded assets) has shipped, and the pages below are landing one by one. Watch the feature parity checklist for confirmed sightings.

Trail Log

The live activity feed. Every email your app sends appears here in real time — recipient, subject, current status, footprint count, and a relative timestamp that ticks along as you watch.

  • Statuses only upgrade. A delivery notification arriving after a click is recorded as a Footprint but doesn’t un-click the email. Bounces, complaints, and rejections always win outright. The ranking lives in SquatchMail.Tracker.next_status/2, and it never lies to you.
  • The live indicator (TRACKING LIVE, pulsing chartreuse) means the LiveView is connected and footprints stream in without refreshing.
  • Empty state: “No sightings yet. The forest is quiet… too quiet.”

Sightings

Click any row in the Trail Log and the Sighting Report slides in — a full field report on one email:

  • Preview — the rendered HTML, in a sandboxed iframe (the one deliberately light surface in the whole UI, like a photograph in a case file).
  • Text — the plaintext part.
  • Headers — every header, in mono, as the wire saw them.
  • Footprints — the event timeline: vertical trail with a footprint icon per event, mono timestamps. Delivered → opened → clicked, or bounced with the raw bounce subtype.
  • Raw — the unedited SES payloads. No blurry photos here; we keep negatives.

Bounces & Complaints

Filtered views of the Trail Log for when you’re specifically tracking what went wrong. Bounce entries carry their type (hard / soft / suppressed-by-SES) and feed the Do-Not-Disturb Registry automatically.

The Do-Not-Disturb Registry

The suppression list. Some addresses have asked — politely, or via a hard bounce — to be left alone.

  • Hard bounces and complaints are suppressed permanently.
  • Soft bounces get an expiring suppression that lifts on its own.
  • Entries can be inspected, searched, and manually released if someone swears the address works now.

Empty state: “Nobody has asked to be left alone. The Squatch respects boundaries.”

Base Camp

The SES connection and settings screen. From here you can:

  • Connect SES — one click provisions the configuration set, SNS topic, HTTPS subscription, and event destination.
  • Review identities — every sending identity with its verification and DKIM status, plus copy-paste DNS records (CNAME for DKIM, TXT for SPF/DMARC) so you don’t have to spelunk AWS’s docs.
  • Watch your quota — the send quota, synced from SES and cached for six hours so Base Camp doesn’t hammer GetAccount on every page load.
  • Break Camp — disconnect SES. The button says “Break Camp” because of course it does.

Field notes on the UI itself

The dashboard ships fully self-contained — CSS and JS embedded in the package, system fonts only, no CDN calls. Dark theme only (“midnight forest floor”), with one chartreuse accent doing all the signaling. If the sidebar footer occasionally features a small sasquatch walking by: that’s a feature, it respects prefers-reduced-motion, and no, it won’t pose for a clearer picture.