KM Koushik and GitHub
61dfcee67d
fix: enforce team scoping for campaign, contacts, and invites ( #356 )
...
* fix: enforce team-scoped lookups for campaign contacts and invites
* fix(test): mock domain service in campaign security test
2026-02-23 11:30:05 +11:00
KM Koushik and GitHub
f7a0d11758
Fix webhook documentation link in changelog
...
Updated webhook documentation link to point to the correct URL.
2026-02-22 23:28:15 +11:00
091b99cb10
Add v1.8.0 changelog entry with February 2025 updates ( #348 )
...
* docs: add v1.8.0 changelog with features since v1.7.0
Adds changelog entry covering webhooks, Python SDK, Contact Books API,
email retention/cleanup, idempotency support, and various improvements.
https://claude.ai/code/session_012hGggJSKqRZB4PkaaPAyrS
* update
---------
Co-authored-by: Claude <noreply@anthropic.com >
2026-02-22 22:19:41 +11:00
KM Koushik and GitHub
487902421b
feat: add web testing foundation with infra-backed suites ( #349 )
...
* feat: add web test framework with infra-backed suites
* fix: honor DATABASE_URL env in integration prepare script
* fix: apply web test review feedback
* fix: streamline web test infra lifecycle and workflow scope
2026-02-16 09:13:29 +11:00
09bdb8aaad
feat(python-sdk): add webhook verification and event handling ( #344 )
...
* feat(python-sdk): add webhook verification and event handling
Add webhook support to the Python SDK matching the JS SDK implementation:
- Add Webhooks class with verify() and construct_event() methods
- Implement HMAC-SHA256 signature verification with timing-safe comparison
- Add timestamp validation with configurable tolerance (default 5 minutes)
- Add comprehensive webhook event types (18 events: email, contact, domain, test)
- Add WebhookVerificationError with typed error codes
- Export webhook constants (headers) and types
* fix(python-sdk): harden webhook parsing and typing
Normalize invalid UTF-8 webhook payloads to INVALID_BODY errors so verify() safely returns false, and narrow base email webhook event types to avoid discriminated-union overlap. Add regression tests for both paths.
* chore(python-sdk): bump package version to 0.2.9
* feat(python-sdk): add local webhook test example project
Add a runnable Flask receiver and signed webhook sender under packages/python-sdk/example, and link it from the Python SDK README for local verification.
---------
Co-authored-by: Claude <noreply@anthropic.com >
2026-02-08 08:18:14 +11:00
e246d32ef9
fix: prevent duplicate notification emails via atomic Redis SET NX ( #346 )
...
The warning and limit-reached notification emails were being sent
multiple times because of a race condition: concurrent workers could
both read the Redis cooldown key as empty (GET), both send emails,
then both set the key (SETEX). Replaced the non-atomic GET + SETEX
pattern with a single atomic SET ... NX EX that claims the cooldown
slot before any emails are sent. Also increased cooldown from 6 hours
to 24 hours so each notification is sent at most once per day.
https://claude.ai/code/session_01VBYXi5e64Vtq1cXWsfTYTw
Co-authored-by: Claude <noreply@anthropic.com >
2026-02-01 07:24:02 +11:00
KM Koushik
1b3b8f5751
fix: add repository field for npm provenance
2026-01-18 22:08:26 +11:00
KM Koushik
4c4d150dba
fix: configure npm OIDC trusted publishing correctly
2026-01-18 22:03:24 +11:00
KM Koushik and GitHub
b3b7bddafb
Change publish command from pnpm to npm
2026-01-18 21:56:01 +11:00
KM Koushik and GitHub
b0575ea9fc
Update release workflow with OIDC permissions
...
Added permissions for OIDC and updated job steps.
2026-01-18 21:54:08 +11:00
KM Koushik
eed37d09c6
fix build
2026-01-18 21:44:25 +11:00
KM Koushik and GitHub
d3b6ba7c0a
fix: add tsup config for SDK and bump version to 1.6.0 ( #343 )
2026-01-18 21:04:43 +11:00
KM Koushik and GitHub
8676965019
feat: add webhooks ( #334 )
2026-01-18 20:50:54 +11:00
KM Koushik and GitHub
f40a311cc9
fix: enforce contact book ownership ( #341 )
2026-01-17 18:08:05 +11:00
KM Koushik and GitHub
bba9e937bb
fix seg fault ( #329 )
2025-12-30 07:45:34 +11:00
95dfa6b532
Upgrade Next.js to 15.5.9 ( #326 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-12-18 06:48:24 +11:00
KM Koushik and GitHub
bef580ff92
use turbo in dev mode ( #321 )
2025-12-14 20:29:53 +11:00
11b5ac1bf7
Fix bar chart hover on zero delivery days ( #320 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-12-14 10:27:28 +11:00
KM Koushik and GitHub
1e79f13bd4
add export contact book option ( #318 )
2025-12-14 10:08:54 +11:00
461cd949e5
Fix Infinity% display bug in email chart ( #319 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-12-14 09:35:05 +11:00
KM Koushik and GitHub
fd3c600b2e
add upload contacts support ( #314 )
2025-12-13 08:15:42 +11:00
7fdb82a9e9
Fix version display in side navigation ( #306 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-12-08 09:19:37 +11:00
3e3f6d521a
Display Docker image version in sidebar ( #304 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-12-07 22:18:56 +11:00
KM Koushik and GitHub
b4640ac5e4
update mintlify ( #302 )
2025-12-07 07:48:33 +11:00
KM Koushik and GitHub
693ec9c0ce
bump nextjx version ( #301 )
2025-12-07 07:41:15 +11:00
KM Koushik
d6be1af5b9
fix image position issue
2025-12-04 08:24:06 +11:00
KM Koushik and GitHub
e1b64d0d7b
Add feedback dialog for cloud dashboard ( #293 )
2025-11-29 10:22:12 +11:00
KM Koushik and GitHub
05a02844b2
Update prisma version in start script
2025-11-21 20:14:05 +11:00
KM Koushik and GitHub
b2e0233758
fix: update docker node version ( #290 )
2025-11-20 18:08:07 +11:00
KM Koushik and GitHub
cb489654b5
idempotency ( #282 )
2025-11-17 11:42:09 +11:00
KM Koushik
f525381fb9
send free limit reached email for inactive plans
2025-10-26 11:05:51 +11:00
7edff5b783
Add subscription ID search to admin team lookup ( #284 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-26 09:40:11 +11:00
4fe354b85a
Fix free limits and email notifications for inactive users ( #283 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-26 07:52:44 +11:00
KM Koushik
8e569f886e
fix build
2025-10-25 05:43:00 +11:00
1c9056ba75
Configure Email Usage Alert Logic ( #278 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-25 05:37:46 +11:00
KM Koushik and GitHub
374f173a09
add delete resource modal ( #280 )
2025-10-25 05:37:16 +11:00
f1e63b6c46
add team ID column to email analytics page ( #279 )
...
Co-authored-by: Claude <noreply@anthropic.com >
2025-10-25 04:49:45 +11:00
KM Koushik and GitHub
77b0239b92
add contact to users on waitlist removal ( #276 )
2025-10-19 15:08:33 +11:00
KM Koushik
78db758512
product update
2025-10-19 08:15:04 +11:00
KM Koushik
189b44bc1e
fix campaign update not working
2025-10-19 07:14:03 +11:00
KM Koushik and GitHub
367457997e
add changelog page ( #275 )
2025-10-19 06:57:23 +11:00
KM Koushik and GitHub
a5ca3b2f87
add campaign api ( #274 )
2025-10-18 10:31:43 +11:00
KM Koushik and GitHub
e631f16c85
feat: batch campaigns ( #227 )
2025-10-12 22:43:16 +11:00
KM Koushik and GitHub
159b15e37e
queue bulk contacts ( #273 )
2025-10-12 06:18:04 +11:00
KM Koushik and GitHub
2fe2d5cdab
update package version and response return tyupe for delete domain api ( #272 )
2025-10-11 06:37:24 +11:00
KM Koushik and GitHub
890ad72057
feat: add custom email headers ( #260 )
2025-09-28 21:33:45 +10:00
KM Koushik and GitHub
1a00999bf0
feat: add waitlist rejection email ( #257 )
2025-09-27 09:41:47 +10:00
KM Koushik and GitHub
76fdad6c81
feat: expose domain dns records via api ( #259 )
2025-09-27 09:40:14 +10:00
KM Koushik and GitHub
014199201b
fix: clear email attachments after send ( #258 )
2025-09-27 06:30:33 +10:00
KM Koushik and GitHub
b342335502
add coderabbit as sponsor ( #256 )
2025-09-26 07:37:05 +10:00
KM Koushik and GitHub
5780177d26
fix: send founder email on first paid subscription ( #247 )
2025-09-21 06:18:16 +10:00
KM Koushik and GitHub
1226e89aaf
add postmortem ( #241 )
2025-09-19 22:09:54 +10:00
KM Koushik
2fa8c1b600
fix build
2025-09-19 08:24:08 +10:00
KM Koushik and GitHub
81faba2aba
add admin mail analytics ( #240 )
2025-09-19 08:18:23 +10:00
KM Koushik and GitHub
62a15ef811
add waitlist confirmation ( #239 )
2025-09-19 07:26:38 +10:00
KM Koushik and GitHub
87c772dcc4
add waitlist submission form ( #238 )
2025-09-18 21:00:59 +10:00
KM Koushik and GitHub
21cac61d89
docs: clarify anti-spam requirements ( #236 )
2025-09-18 03:30:12 +10:00
KM Koushik and GitHub
c9114be223
docs: add anti-spam enforcement clause to terms ( #235 )
2025-09-18 02:53:14 +10:00
KM Koushik
4144c75959
Enforce unsub url
2025-09-18 02:14:24 +10:00
KM Koushik
e1cb1f27d1
enable waitlisting in cloud
2025-09-17 22:13:03 +10:00
KM Koushik
8c8af1f846
use bucket from environment variable
2025-09-17 18:08:57 +10:00
KM Koushik and GitHub
c8ef49f12c
fix callback not working in self-hosted version ( #234 )
2025-09-17 17:38:12 +10:00
KM Koushik and GitHub
cbd97853b9
docs: update railway deploy links ( #233 )
2025-09-16 07:45:01 +10:00
KM Koushik and GitHub
4c4094619a
docs: remove MCP contextual options ( #229 )
2025-09-15 05:30:58 +10:00
KM Koushik and GitHub
101bcc56b1
Update open_collective funding format
2025-09-14 07:41:52 +10:00
KM Koushik and GitHub
c440a7111a
Add Open Collective funding option
2025-09-14 07:40:56 +10:00
KM Koushik and GitHub
053fafb7cd
docs: add Railway self-hosting guide ( #228 )
2025-09-14 06:34:11 +10:00
KM Koushik
0872179762
fix: update domain name in the dns records
2025-09-12 06:49:16 +10:00
KM Koushik
66208a4b7a
chore: update README with new contributors and remove outdated Python documentation
2025-09-11 21:09:06 +10:00
KM Koushik
59fac64356
add simpleanalytics
2025-09-11 10:40:10 +10:00
KM Koushik and GitHub
5423013b77
feat: include bounce reason in export ( #226 )
2025-09-11 07:09:13 +10:00
KM Koushik and GitHub
0167d13ce8
fix: do not limit users when self-hosting ( #225 )
2025-09-11 05:52:07 +10:00
KM Koushik and GitHub
cd40de0407
feat: add email export option ( #212 )
2025-09-11 05:36:57 +10:00
KM Koushik
71b9150a9b
fix
2025-09-10 22:53:04 +10:00
KM Koushik
1ae6257c11
fix
2025-09-10 22:53:04 +10:00
KM Koushik and GitHub
dbc6996d9a
feat: add Discord link to contact section ( #223 )
2025-09-10 21:15:24 +10:00
KM Koushik and GitHub
9723c78825
feat: add auth email rate limit ( #220 )
2025-09-09 23:08:59 +10:00
KM Koushik and GitHub
3d123dba1f
fix: avoid crash on billing page when payment method missing ( #221 )
2025-09-09 21:05:46 +10:00
KM Koushik and GitHub
7cf46107e6
remove waitlist link
2025-09-09 17:33:11 +10:00
KM Koushik
dd09217e36
remove beta user check
2025-09-09 07:40:53 +10:00
KM Koushik
292048d2c9
add languages to landing page
2025-09-09 07:13:15 +10:00
KM Koushik and GitHub
3158ddc51c
feat: add typed Python SDK ( #213 )
2025-09-09 05:50:08 +10:00
KM Koushik
92f56f1ebf
add minor ui tweaks
2025-09-08 20:30:45 +10:00
KM Koushik
db7863ca3e
fix railway build
2025-09-08 18:17:37 +10:00
KM Koushik and GitHub
55d8c7e998
block sending emails on limits ( #216 )
2025-09-08 18:08:57 +10:00
KM Koushik
5b3022c27b
update docs theme
2025-09-07 18:13:39 +10:00
KM Koushik
ef76711fe0
add og images
2025-09-06 21:29:39 +10:00
KM Koushik
01f6e36b8b
fix marketing page build
2025-09-06 13:13:50 +10:00
KM Koushik
c827c1c891
fix build
2025-09-06 11:46:39 +10:00
KM Koushik
99d2813f98
fix footer
2025-09-06 11:43:56 +10:00
KM Koushik
e00e75c511
add proper status
2025-09-06 11:39:51 +10:00
KM Koushik and GitHub
69470a4937
add pricing calculator ( #214 )
2025-09-06 10:53:53 +10:00
KM Koushik
79d1ebaf36
fix build and some docs
2025-09-06 06:01:03 +10:00
KM Koushik
02a8338505
fix build
2025-09-06 05:30:20 +10:00
KM Koushik and GitHub
3e6d4d12df
add rebrand landing page ( #211 )
2025-09-05 22:32:56 +10:00
KM Koushik
1c8bb550d9
update to useSend
2025-09-04 04:46:16 +10:00
KM Koushik
dbc9e3e976
update branding in docs
2025-09-03 22:46:03 +10:00
KM Koushik and GitHub
07c53d3f58
rebrand to useSend ( #210 )
2025-09-03 08:21:55 +10:00
KM Koushik and GitHub
b1a59d2705
feat: reload SMTP server TLS certificates on change ( #209 )
2025-08-31 21:01:09 +10:00
KM Koushik
c9ec8b732c
add agents.md
2025-08-30 22:11:49 +10:00