Tags: Digidai/mails
Tags
fix: eng review fixes — events cleanup cron, webhook retry timing, 18… … new tests 1. Add scheduled handler for hourly events table cleanup (24h TTL) 2. Fix webhook retry delays to stay within Workers waitUntil limits (< 15s total) 3. Remove dead fireWebhook function (replaced by fireWebhookWithRetry) 4. Add cron trigger to wrangler.toml 5. Add 18 new tests: events (2), delivery-status (4), domains (5), webhook-retry (4), scoped-auth (3) Total: 283 tests (217 + 18 new + existing) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: sync CLI version to 1.6.1, fix release CI, opt into Node.js 24 - CLI version string: v1.6.0 → v1.6.1 (match package.json) - Rebuild dist/cli.js with correct version - release.yml: isolate CLI tests (same fix as test.yml) - All workflows: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix: isolate CLI tests from other unit tests in CI Bun's mock.module() pollutes the global module registry within a process. cli.test.ts mocks config.js and receive.js, which breaks send.test.ts and storage-resolver.test.ts when run in the same bun test invocation. Split into two separate bun test runs to prevent cross-file pollution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v1.3.0: unified Worker architecture — remove DB9, add self-hosted sen… …d, mailbox isolation, webhook, delete API Major release consolidating on Cloudflare Worker + D1 as the single backend: - Remove DB9 storage provider (replaced by Worker + D1) - Add WorkerSendProvider: send emails via self-hosted Worker /api/send - Send priority: worker_url > api_key > resend_api_key - Worker file split: handlers/ directory for inbox, code, email, send, attachment, auth, webhook - Mailbox isolation: auth_tokens D1 table binds token → mailbox, scopes all queries - From address validation: /api/send verifies from matches token's mailbox - Webhook push: fire-and-forget POST on email receive with HMAC-SHA256 signature - DELETE /api/email: cascade delete attachments + R2 objects - R2 attachment upload: large attachments (>100KB) stored in R2 on receive - FTS5 full-text search with injection protection - Error handling: try/catch in email() handler, network error wrapping in WorkerSendProvider - Key path logging: console.log/error on email receive, send, and errors - Security: error responses never leak internal details, DELETE scoped by mailbox - SDK: add deleteEmail to StorageProvider, remote, sqlite, receive, index exports - Tests: 187 total (53 new handler tests + 7 worker-send tests) - Docs: update all READMEs with new endpoints, secrets, and self-hosted guide - Delete stale docs/email-search-design.md (referenced removed DB9) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v1.5.2: escape LIKE wildcards in short id prefix resolution Follow-up to #6 — the LIKE queries for short id prefix matching did not escape % and _ wildcards in user input, which could cause unexpected matches. Use escLike() in db9 and add ESCAPE clause for sqlite/worker parameterized queries. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v1.5.1: docs and e2e fixes for OSS send + sync Real e2e tests verified against deployed test worker: /api/send outbound recording, /api/sync to local sqlite with search/code/attachments. Updated skill.md and all 3 READMEs with sync command and /api/send docs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v1.4.1: full e2e coverage for all 3 providers + README test matrix Add comprehensive e2e tests: db9 full flow (18 tests), remote OSS/hosted direction filter + pagination, sqlite CLI integration (11 tests). Update all 3 READMEs (EN/ZH/JA) with provider e2e coverage matrix. 239 tests total (168 unit + 71 e2e), 0 failures. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PreviousNext