Changelog
Fromenance is a communication provenance platform, and this changelog records what shipped in each release of the API, the SDK, the verify widget, and the admin app. Dates are the month the release went live.
By the end you will know what the current release contains and where breaking changes will be announced.
2026-09: initial release
Section titled “2026-09: initial release”The whole of Phase 1, verification, in one release.
Foundation and core
- Bun monorepo with the API, admin app, marketing site, docs site, and the
core,db,ui,sdk, andverify-widgetpackages. - Deterministic normalization, 64 bit SimHash over word 3-gram shingles, Hamming distance matching, checksummed Crockford verify codes, recipient HMAC, and indicator extraction, producing identical results in Node, Bun, and Cloudflare Workers.
- Drizzle schema for every table with
tenant_idon every tenant owned table and no raw recipient column; tenant scoped repository; migrations; demo tenant seed.
API and registry (Gate 1)
- API keys with
fr_live_andfr_test_prefixes andregister,read,adminscopes; site keys with origin checks; magic link and passkey sessions. - Tenants, users, five roles, audit log on every write.
- Domains with the
_fromenance.<domain>TXT record, one minute polling, daily re-check, suspension on a missing record, and the rolestrust,sender,reply. POST /v1/communications,/batch(1,000 items),/reserve,PATCHcomplete,Idempotency-Keystored 24 hours, per key rate limits.- Edge mirror of tenants, domains, keys, and active verify codes for sub 150 ms registration and lookups.
@fromenance/sdkgenerated from the OpenAPI document:register(),registerBatch(),reserve(),complete(),footer(),fingerprint().
Inbound and verdicts (Gate 2)
- Inbound mail on
verify.fromenance.comandingest.fromenance.com, raw MIME encrypted in object storage under a tenant prefix. - DKIM, ARC, and SPF verification in the Worker; the trust check with eight rejection reasons and a 24 hour holding area.
- Queue pipeline for ingest, match, reply, and intelligence with dead letter handling.
- Extraction of code, recipient, fingerprint, headers, and indicators; the pure
decide()verdict function covering every row of the matching table including footer replay; idempotent repeat submissions. - MJML reply templates with the locked verdict block, branded reply identities through Resend with DNS records returned to the tenant, and the minimal reply identity for pilots.
- Analyst overrides, fraud list, fraud fingerprints, retro registration with coverage gap flagging.
- Journal and BCC ingestion at
journal-<slug>@ingest.fromenance.com.
Web verify and adapters (Gate 3)
POST /v1/public/submitwith site key and origin checks, per IP and per key rate limits, and Turnstile escalation; synchronous verdicts for text and.eml, poll tokens for screenshots.- Screenshot OCR feeding the same deterministic extractors.
- The embeddable widget on
cdn.fromenance.com/verify.jsandembed.html, with tenant theming, script and iframe modes. - ESP adapters behind one interface: Resend, SendGrid, Amazon SES, Postmark, Mailgun, Salesforce Marketing Cloud, Braze, and a generic signed webhook; reserve flow with 24 hour expiry; source health with silence alerts.
- Outbound webhooks
verdict.created,submission.replay_detected,indicator.new, HMAC-SHA256 signed, retried with backoff for about a day, replayable.
Admin app (Gate 4)
- App shell with dark and light themes, tenant switcher, global search, dense tables with column pick, sort, saved filters, and CSV export.
- Six step setup wizard with the forwarding test.
- Overview, Submissions with detail drawer and override, Indicators with STIX 2.1 and CSV export, Fraud list, Campaigns placeholder, Registrations with coverage, Sources with health and test event, Domains, Verify page with live preview, Reply templates with preview and send test, Webhooks with delivery log and replay, Settings.
Docs (Gate 5)
- This site: quickstart, concepts, mail platform guides, one page per adapter, verify page, verifications, webhooks with signature samples in TypeScript, Python, and Go, admin, generated API reference, security, and this changelog. Every TypeScript sample is compiled in CI and executed against a sandbox tenant.
Versioning
Section titled “Versioning”The API is versioned in the path (/v1). Additive changes (new fields, new events, new optional parameters) ship without notice here beyond a changelog entry. Anything that removes or renames a field, changes a status code, or changes signature schemes will be announced on this page at least 90 days ahead and shipped under a new version prefix.