# 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 `
` 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 `
`. ## Send Script File: `/root/.hermes/scripts/send-shonuff.py` ```bash python3 /root/.hermes/scripts/send-shonuff.py "" "" "" ``` 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`