# Email Signature — Sho'Nuff

## Current Signature (Jul 2026)

The signature is rendered from `/root/.hermes/references/shonuff-email-signature.html`.
The Sho'Nuff quote is placed as a standalone line in the email body BEFORE the `<hr>` separator and signature block.

```
━━━ red 40px accent bar (2px thick, rounded, #cc0000) ━━━

         ┌──────────────────────┐
         │                      │
         │  Circular avatar     │  Sho'Nuff Brown (weight 900)
         │  (base64 embedded)   │  [Random title from shonuff-titles.py]
         │                      │  IT Pro Partner
         │                      │
         │                      │  tel  — —— —— —— ——
         │                      │  @    shonuff@germainebrown.com
         └──────────────────────┘
```

### Latest changes (Jul 6, 2026)
- Separator: gradient line → **solid red 40px bar** (#cc0000, 2px, rounded corners)
- Name color: #222222 → **#1a1a1a**, weight 700 → **900**
- Phone label: "Tel:" → **"tel"** (lowercase, gray #bbbbbb)
- Email label: "Email:" → **"@"** (minimal)
- Phone placeholder: underscores → **dashed line** with letter-spacing
- Email link: plain blue → **dotted underline** (#555555)
- Image: S3 URL → **base64 data URI** (Wasabi doesn't allow public-read)
- Layout: labels on same row as values (two-column table)
- "Who's the Master?" tagline removed from signature block (quote is the email sign-off before the separator instead)
- Font stack: added Inter first (modern sans-serif)
- Vertical alignment: top → **middle** (aligned with image center)

## Two placeholders

- `%SHONUFF_IMAGE%` — base64 data URI of the character image
- `%SHONUFF_TITLE%` — random title from `SHONUFF_TITLES` list (rotates per send)

## Rotating Titles

File: `/root/.hermes/references/shonuff-titles.py`

13 titles including "Germaine's AI Ops Engineer", "Germaine's Baddest AI Mofo Low Down Around This Town", "Germaine's Full-Time Menace", and more. Load via `importlib`, pick with `random.choice()`.

## Rotating Closing Quotes

File: `/root/.hermes/references/shonuff-closings.py`

8 quotes. Used as the email sign-off instead of "Thanks" or "Regards". Placed in the email body between the message and the `<hr>`.

## Send Script

File: `/root/.hermes/scripts/send-shonuff.py`

```bash
python3 /root/.hermes/scripts/send-shonuff.py "<to>" "<subject>" "<body>"
```

The script:
1. Loads closings + titles from references files, picks random from each
2. Loads base64 image, substitutes into HTML template
3. Sends from **shonuff@germainebrown.com** via mail.germainebrown.com:2525
4. BCCs g@germainebrown.com on every send
5. Builds multipart/alternative: text/plain (fallback) + text/html (rich)

## Sending Rules

- All "send me this as an email" requests go from **shonuff@germainebrown.com**
- BCC the user on every send
- Do NOT access Germaine's inbox (g@germainebrown.com) unless asked
- Sho'Nuff's incoming email is shonuff@germainebrown.com (IMAP monitored)
- SMTP port 2525 everywhere — netcup blocks 25/465/587
- Password for shonuff SMTP: in `~/.config/himalaya/shonuff.pass` and `.env`

## Image Hosting

The image is embedded as a base64 data URI (NOT external). Stored at `/root/.hermes/references/shonuff-image-b64.txt` (~78KB). Wasabi S3 does not allow public-read with this IAM user, so data URIs are the only reliable rendering method. Current image used: `/root/.hermes/cache/images/shonuff-v2-clean.png` (600x800, transparent PNG, signature removed).

## Inbox Monitoring

Sho'Nuff's inbox (shonuff@germainebrown.com) is monitored every 15 minutes via a two-stage cron job:
1. **Collect script** (`scripts/shonuff-inbox-collect.py`) — checks for new UNSEEN messages from non-trusted senders via IMAP, extracts sender/subject/body preview, outputs JSON
2. **LLM summary** — reads the collected JSON, summarizes each new message in 2-3 sentences, delivers to Germaine via Telegram

Trusted senders (silently skipped): `g@germainebrown.com`, `mailer-daemon@heracles.mxrouting.net`
