0.12.0 (2026-06-21)
Features
- add composite index on campaignId and status for efficient campaign completion checks (4b752a5), closes #400
- add disabledReason field to projects for better tracking of disable reasons (94ceadb)
- api: allow API key authentication for domain endpoints (d2496bc)
- bulk delete for workflows and campaigns (a05034e)
- Contacts: add subscription status filter and enhance query capabilities (8564016)
- contacts: make email cell a link to the contact detail page (6759bff)
- contacts: make email cell a link to the contact detail page (6d98d51)
- EmailService: add worker concurrency settings and improve email queue prioritization (80beb2b)
- extend table view to workflows and campaigns list pages (e932b2d)
- i18n: add Japanese (ja) translations (e399d0c)
- i18n: add Japanese (ja) translations (f34c0e1)
- implement deterministic avatar gradient generation for user accounts (e0e79cc)
- introduce DataTableFilter and FacetedFilterMenu for unified filtering experience (44e4e45)
- make detectCustomHtmlPatterns aware of TipTap's actual capabilities (9797aed)
- make detectCustomHtmlPatterns aware of TipTap's actual capabilities (ba3813e)
- normalize email addresses for contacts to handle case-variants and whitespace (05c8041), closes #403
- refactor DashboardLayout to use DropdownMenu for project and user menus (9cbd5c0)
- render template variables in WEBHOOK step url, headers and body (bfecf04)
- render template variables in WEBHOOK step url, headers and body (c484da8)
- SecurityService: enhance phishing detection by verifying sender domains and institutional TLDs (6ab4d77)
- SecurityService: enhance phishing detection by verifying sender domains and institutional TLDs (edfc399)
- table view with sorting, faceted filters, and bulk delete for templates, workflows, and campaigns (4ccb3d2)
- tanstack table view with sorting, faceted filter, and bulk delete for templates (55a0c4f)
- tests: enhance test database setup and cleanup for improved isolation and performance (32dd7bb)
Bug Fixes
- coerce boolean and numeric values in custom CSV columns (4a145f3)
- dashboard: table empty-state recovery, bulk button sizing, workflow status+steps, header casing (157ff34)
- filters: land templates/workflows/campaigns search inputs at 32px to match filter buttons (283f402)
- make email templates, campaigns and workflow search inputs same height as the rest of the app (8b3657d)
- safeguard JSON data handling in contacts migration to ensure proper object types (55a5e4d)
Code Refactoring
- database: increase Prisma connection pool limits for improved test performance (71e2277)
- SecurityService: update absolute count ceilings for new projects to improve spam detection (4de40f4)
Documentation
- add env-var sync rule to CLAUDE.md (a348d37)
- add new recipe pages for waitlist and sync unsubscribes (01ec34a)
- correct PHISHING_CONFIDENCE_THRESHOLD default in CLAUDE.md (5c16679)
- env: add wiki-documented vars to apps/api/.env.example (81315ea)
- env: sync .env.self-host.example with missing variables (1c1c95d)
- env: sync env example files, fix CLAUDE.md drift, add process rule (6ebbb50)
- wiki: document MAIL_FROM_SUBDOMAIN and NGINX_PORT env vars (971b98a)