Add EmailTemplateCategoryService — CRUD for org-scoped categories
Case-insensitive name uniqueness per org enforced at service layer (matches the partial unique index in the DB). Deletion nulls category_id on affected template...
Add EmailTemplateService — CRUD + send + seed + reset-to-default
Core orchestrator for transactional email. sendToUser resolves the template, renders subject/body, picks the org's primary domain from Organization.domains, and...
Add NoReplySenderService for 'NoReply@{domain}' from-address
Single source of truth for transactional-email from addresses. Accepts a domain string, lowercase-normalizes it, returns "NoReply@<domain>". Callers must resolv...
Add TemplateRenderer for {{var}} substitution
Stateless regex-based renderer. Missing vars substitute empty string and emit a WARN log with templateKey + orgId for attribution. No HTML escaping in v1 — valu...
Add email signature field config API
Add service and REST controller for managing email signature field visibility configuration per organization. Admins can toggle which contact fields appear in s...
Add accessible mailboxes endpoint with privilege-based expanded access
Add AccessibleMailboxService and GET /api/email/mailboxes/accessible endpoint that returns personal mailboxes, shared mailboxes, and privilege-gated access to d...
Add email domain management and mailbox provisioning through abstract provider layer
- Add DomainManager and MailboxProvisioner capability interfaces with sub-capability detection - Add ProviderDomain, ProviderMailbox, DnsRecord DTOs - Implement...
Add email aliases and shared mailbox support
New MailboxManager provider capability interface for alias and shared mailbox CRUD. KamoMailMailboxManager implementation manages dovecot/postfix virtual_users ...
Add ICS generation for REQUEST/REPLY/CANCEL and calendar message parsing
Add per-source sync status in WebSocket + displayName support
- WebSocket sync status now includes per-integration statuses in a 'sources' map keyed by integration ID - applyConfig now handles displayName field for user-...
Add member-level sync toggle and WebSocket sync status
- Add PUT /member/sync-toggle endpoint to batch-toggle syncEnabled on all member integrations at once - Add ContactSyncWebSocketController broadcasting aggreg...
Write ContactSyncLog on calendar/contact mutations for bidirectional sync
Add Google, Microsoft, and GenericDav provider stubs with token refreshers
Add IntegrationSettingsController, IntegrationSettingsService, SyncTriggerPublisher stub
Add GroupwareProvider interface, ProviderContext, and model classes
- GroupwareProvider interface defines calendar and contact book operations - ProviderContext carries runtime context for provider invocations - Model classes: P...
Add CardDavController and ContactService DAV methods for CardDAV support
Add CalDavController and CalendarService DAV methods
Adds findEventByUid, getChangedEventsSince, getDeletedEventsSince to CalendarService. Adds CalDavController handling PROPFIND, REPORT, MKCALENDAR, PROPPATCH, GE...
Add *** secret to deployment envFrom
Provides GOOGLE_OAUTH_CLIENT_ID/SECRET, **************** and ZOHO_OAUTH_CLIENT_ID/SECRET env vars needed for OAuth provider flows.
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.