TODO UPDATED 11:- [x] Campaign monitor: live tracking FIXED — added 4s poll loop (SSE only fired on counter changes; retries didn't) + renamed Cancel→Stop; Start/Pause/Resume/Stop all browser-verified; meterSegs JS crash fixed (was number, called as function); stat grid + per-recipient table update live 14:- [x] Templates: uploaded HTML file not appearing in saved template list — FIXED & VERIFIED: upload via Upload .html modal (qa_invoice.html) → appears in Saved Templates list (source: upload, 0.3 KB, all variables detected) 19:- [x] Template section: convert HTML body to PDF / image / Word — IMPLEMENTED: WeasyPrint PDF / wkhtmltoimage PNG / python-docx DOCX converters (scripts/test_converters.py ALL PASS), wizard Step 5 auto-convert radios, send pipeline wiring with graceful perm_failed, Test Image + Test Word buttons browser-verified (200 + success toasts); end-to-end campaign w/ body_word mode pending 20:- [x] Campaign monitor: live tracking + stop/pause/resume — VERIFIED: 4s poll loop, stat grid + per-recipient table live, Start/Pause/Resume/Stop all browser-verified (cancelled state confirmed in DB)