Multi-channel communications hub for Books in Hand — aggregates BH/personal text, email, voice, Messenger, and more into one triage interface.
C1: build_ping_embed set sender_id field value="" whenever sender_id was None, which manual_share.py always passes -- Discord rejects empty embed field values (min length 1), so every manual-share ping failed to send. Fixed by using a zero-width space sentinel that round-trips back to "" (raw_content) or None (sender_id) in parse_ping_embed. Added regression tests asserting no field value is ever empty after build_ping_embed runs. C2: raw_content over 1024 chars (Discord's embed field cap) caused inbox.send() to raise before the UID was marked seen, so oversized emails were retried forever and never ingested. Added a defensive hard truncation in build_ping_embed itself, plus an explicit truncation in email_ingest.py before the embed is built (lossy for very long emails, acceptable for MVP). |
||
|---|---|---|
| backend | ||
| bot | ||
| docs | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| Caddyfile.snippet | ||
| docker-compose.yml | ||
| README.md | ||
Chorus
Multi-channel communications hub for Books in Hand.
Aggregates BH text, personal text, BH email, personal email, voice, Facebook Messenger, and ND messenger into a single triage interface, so Donna can coordinate with volunteers and donors without switching between apps.
Standalone client project for Books in Hand. Not part of the CircuitForge product line — no BSL tiering, no CircuitForge license server integration.
Design spec and implementation plan live in a separate private planning
repo (circuitforge-plans/books-in-hand/superpowers/) and won't always be
available to whoever is working in this repo.
Status
Design in progress.