Releases: DMontgomery40/Faxbot
Releases · DMontgomery40/Faxbot
v0.4-beta
Highlights
- Traits‑first plugins, hybrid backends (outbound/inbound), canonical status/events, inbound idempotency, and a much more helpful Admin Console + docs.
- Both SDKs released as v1.1.0 (Node + Python), aligned with the stable API surface.
Admin Console
- Traits‑aware UX: surfaces only capabilities relevant to the active providers; no cross‑backend leakage.
- Hybrid controls: pick outbound and inbound providers separately; settings export includes dual envs only when explicitly set.
- Setup Wizard overhaul: clearer steps, provider tabs, inline validations, “Apply & Reload,” and environment snippets.
- Diagnostics & Matrix: actionable checks, trait chips, backend‑specific hints and remediation, and rate‑limit awareness.
- Plugins: manifest/registry docs + “Try it” guides; plugin builder polish.
- Tools: Scripts & Tests, Terminal (local‑only, gated), Logs refinements.
- Branding/UX: larger hero, mini‑banner header (auto light/dark), consistent motion, responsive spacing, and accessible lists.
API & Backends
- Hybrid model (dual backends): FAX_OUTBOUND_BACKEND and FAX_INBOUND_BACKEND with legacy FAX_BACKEND fallback. Gated inbound routes honor inbound_enabled and the active inbound provider.
- Canonicalization: provider status mapping via config/provider_status_map.json with a canonical queued/in_progress/success/failed layer.
- Canonical events/models groundwork for outbound + inbound, adapter base, and middleware to enforce traits (strict mode ready).
- Inbound idempotency: deduplicates (provider_sid, event_type) to avoid reprocessing cloud callbacks.
- Cloud backends: Phaxio and Sinch improvements; HMAC verification defaults for cloud inbound; SignalWire (preview), FreeSWITCH (preview).
- Self‑hosted SIP/Asterisk: AMI checks, TIFF/PDF pipeline, and clearer errors; SIP inbound gated by traits + secret.
Security & Compliance
- Security moved to top‑level in docs; HIPAA guidance tightened with authoritative HHS/NIST/CFR references.
- No PHI in logs/UI; secrets masked throughout; HTTPS enforcement option; Admin Console local‑only by default.
- Audit log option; consistent error codes (400/401/404/413/415) across API and SDKs.
Docs
- MkDocs Material migration completed (strict build clean): redirects added, dark mode default, favicon/logo corrected.
- Deep polish: bullets, admonitions, code blocks with copy, content tabs with anchors, and version badges where useful.
- Backend isolation in copy; “Learn more” links point to precise sections; canonical API reference linked at https://faxbot.net/api/v1/ and /api/v1/swagger.
- iOS app docs: TestFlight invite flow + screenshots (no private build details).
SDKs (v1.1.0)
- Node: npm i faxbot@1.1.0
- Python: pip install faxbot==1.1.0
- Identical API surface and error mapping; health checks; supports PDF/TXT; never integrates directly with providers (always calls Faxbot API).
MCP (Assistant Integration)
- Node + Python MCP servers with stdio/HTTP/SSE; parity tools: send_fax, get_fax_status, list_inbound, get_inbound_pdf.
- SSE OAuth option; HTTP/SSE JSON limit 16 MB; REST 10 MB raw; stdio supports filePath (no base64).
Upgrade Notes
- If you stay single‑backend: keep FAX_BACKEND only (no change).
- If you want hybrid: set FAX_OUTBOUND_BACKEND and/or FAX_INBOUND_BACKEND, then POST /admin/settings/reload.
- Inbound
- Enable with INBOUND_ENABLED=true.
- SIP internal route requires FAX_INBOUND_BACKEND=sip (when dual is explicit) and ASTERISK_INBOUND_SECRET set.
- Cloud inbound (Phaxio/Sinch) keep HMAC verification on by default.
- Export/persist: /admin/settings/export only includes dual envs when you explicitly set them; copy to .env to persist.
Notable Fixes
- Status map load made robust: resolves config/provider_status_map.json relative to repo root, stabilizing canonical mappings under tests and in production.
- Sinch/diagnostics corrections; Admin UI TS strict mode cleaned up; CORS/OpenAPI access points stabilized.
Install/Use
- Node SDK: npm i faxbot@1.1.0
- Python SDK: pip install faxbot==1.1.0
- API quick start: POST /fax (multipart: to, file), GET /fax/{id}
- Admin endpoints behind API key with scopes; see /openapi.json.
Faxbot v0.3-beta
Full Changelog: v2...v.03-beta
Faxbot v0.2-beta
Full Changelog: SDKv1...v2
SDKs v1.0.0
SDKv1 Update .gitignore t