Add com.kamo.z.shared.commerce to EnableJpaRepositories scan
**************** (required by **************** in the shared library) lives under com.kamo.z.shared.commerce but was not included in the JPA repository scan, ca...
Correct field name and type in getFromAddresses response
Backend was sending 'email' key but frontend expected 'address', and sent type 'shared_mailbox' when frontend expected 'shared'. Also fixes hasMailboxes flag wh...
이메일 provider domains 기본 설정이 없는 경우 org domains로 돌아가기
KamoMailDomainValidator는 403 의 orgs에 대 한 어려운 실패 org domains의 DNS 인증 도메인은 아니지만 이메일에 추가하지 않습니다. 공급자 도메인 등록. 첫 번째 활성을 사용하는 fallback을 추가하십시오. DNS 인증, 최고 수준의 org dom...
Kamo-shared-library 업데이트에 대한 재건 (remove OrganizationType, add isTopLevel)
상태 필터 및 목록에 자동 입력된 필수 템플릿
- EmailTemplateController.list()는 이제 ?status= param 및 필터를 허용합니다. 기존 findByOrgIdAndStatus 저장소 쿼리 사용 - 초기 묘목을 놓은 orgs에 대한 Auto-seeds 필수 템플릿 (seedForOrgIfMisssing ...
Cross-tenant 이메일 주소를 차단하는 KamoMail 도메인 validator 추가
서비스 레이어에서 확인하는 KamoMailDomainValidator 구성품을 소개합니다. 제출 된 이메일 도메인이 org의 검증 된 기본 도메인과 일치 여부 KamoMail이 활성 공급자입니다. MailboxProvisioningService에 주사, AliasService 및 Sha...
Kamo-shared-library 업데이트에 대한 재건 (CREATE CHILD ORG 오른쪽 + 적용 플래그)
새로운 RoleRightType.CREATE CHILD ORG (id 131)을 잡아, ChildOrgSecurityModel의 3개의 적용 대상 플래그, 2개의 13-arg 서비스 하중 및 AppliedModelEnforcementService Creator-type 헬퍼.
Kamo-shared-library 업데이트에 대한 재건 (appConfig upsert-only fix)
더 이상 AppConfig 행을 삭제하지 않은 ****************는 콜러의 페이로드에서 서비스 유형이 absent 인 appConfig 행을 삭제합니다. 부분 페이로드가 수신되면 침묵 데이터 손실을 방지합니다.
Rebuild for kamo-shared-library update (effective-feature resolver)
Picks up the new AppliedModelEnforcementService methods (computeAvailabilitiesMap, isAppEffectivelyEnabled, getEffectivelyEnabledAppTypes, computeEffectiveFeatu...
Rebuild for kamo-shared-library update (applied-model enforcement + appConfigs + isPrivate)
Triggers a rebuild so this service pulls the updated kamo-shared-library containing AppliedModelEnforcementService, ChildOrgSecurityModelAppConfig entity, Servi...
Rebuild for kamo-shared-library update (runtime force rules + DEFAULT fallback in MemberRightsAppliedService)
Triggers a rebuild so this service picks up the updated **************** that applies template force rules and DEFAULT-template fallbacks on top of the existing...
Rebuild for kamo-shared-library update (master model, default role templates, force-rule resolver)
Triggers a rebuild so this service pulls the new kamo-shared-library revision containing Organization.branchTypeID, Organization.masterModelID, ****************...
Preview uses same auto-vars as sendToUser (org logo + name)
The preview endpoint now injects logoUrl, logoSimpleUrl, and orgName from the org's domain before applying sample content variables, matching the exact variable...
Auto-inject logoUrl, logoSimpleUrl, and orgName variables at send time
EmailTemplateService now merges base variables (logoUrl, logoSimpleUrl, orgName) derived from the org's primary domain before rendering, so all transactional te...
Add resetCode to password reset email, add emailVerifyByCode endpoint, send WELCOME_MEMBER after email verification
Update EMAIL_VERIFICATION sample vars to match current template
Use expiryText instead of expiryMinutes (renamed variable), and update verifyLink to point to the register subdomain (correct send path).
Preserve DB domain case in NoReply from address
Removed toLowerCase() — the domain already comes from resolvePrimaryDomain which reads org_domains from the database, so case is canonical from DB.
Resolve root domain for NoReply from-address instead of bare subdomain
resolvePrimaryDomain() was returning the first domain entry (e.g. "www") which produced NoReply@www. Now prefers root domains (parent == null) so transactional ...
Add internal.auth.secret to EmailService configmap
InternalAuthFilter was rejecting all service-to-service calls (send, seed-org) with 503 because internal.auth.secret was unconfigured. Matches the same INTERNAL...
Allow transactional send on port-25 relay and auto-seed missing templates
Port-25 SMTP (postfix) requires no auth — transactionalCredentials() was throwing ProviderUnavailableException when user/pass were unconfigured, blocking all ve...
Add dao.repositories to JPA scan so EmailTemplateRepository is found
Same pattern as KamoInitializerService — explicit basePackages overrides default scanning and must include every package that has repositories.
Add EmailTemplateCategoryController REST endpoints
**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Sessio...
Add EmailTemplateController REST endpoints + DTOs
Exposes /api/email/templates/* CRUD + preview + duplicate + reset-to-default + service-to-service /send + /seed-org/{orgId}. Top-level orgs (no parent) addition...
Service-to-service endpoint에 대한 InternalAuthFilter 추가
/api/email/templates/send에 X-Internal-Auth 헤더를 유효성 검사합니다. /api/email/templates/seed-org/* 경로. 다른 경로 우회 이 필터 (사용자 세션 auth 그들을 처리). 비밀은 INTERNAL AUTH SECRET에서 온다 ...
EmailTemplateCategoryService 추가 — CRUD for org-scoped 카테고리
Case-insensitive name uniqueness per org 서비스 레이어에 강제 (DB의 일부 고유 인덱스를 매칭). 삭제 null 카테고리 id 범주를 제거하기 전에 영향을받는 템플릿에. SP1의 부분.
Add EmailTemplateService — CRUD + send + seed + reset-to-default
거래 이메일의 핵심 오케스트라. sendToUser는 템플릿을 해결합니다. 제목/체를 렌더링, 조직에서 org의 기본 도메인을 선택합니다. 도메인, noReply@{org.domain} 으로 이메일 보내기SmtpService 를 호출합니다. SeedForOrg for new-org Li...
Add NoReplySenderService for 'NoReply@{domain}' from-address
주소에서 거래 이메일에 대한 진실의 단일 소스. 지원하다 도메인 문자열, lowcase-normalizes, 반환 "NoReply@<domain>". Callers는 org의 도메인을 해결해야합니다 ( Organization.domains lookup 또는 유사) 그리고 그것을 안으로 ...
TemplateRenderer를 {{var}} 대용 추가하기
Stateless regex 기반 렌더링기. Missing vars 대체 빈 문자열 및 템플릿키 + orgId로 WARN 로그를 방출합니다. HTML escaping 없음 v1 - 값은 서버 제어입니다. SP1의 부분.
MailboxId→id와 공급자Status→status를 우편함 명부 응답에 지명하십시오
Align 필드 이름 회원 mailbox 목록에 대한 기대.
Add concurrency group to prevent duplicate workflow runs
When a push triggers a workflow and workflow_dispatch is also fired (or two pushes arrive in quick succession), both runs would execute simultaneously. Adding a...
Bump version to trigger rebuild with updated kamo-shared-library
Rebuilds the Docker image with the fixed Member entity (memberType field removed) so the Hibernate SQL no longer selects security_level from the member_team_mem...
Support mailbox switching by resolving IMAP credentials per mailboxId
Added getMailCredentialsByEmail to look up virtual_users by email directly, resolveForMailbox to MailProviderResolver with access verification, and optional mai...
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...
Rename DomainService to EmailDomainService to resolve bean name conflict
The shared library's DomainService and EmailService's local DomainService both registered as 'domainService' bean, causing CrashLoopBackOff on deploy.
Correct method signatures in DomainController and MailboxController
- Fix getMemberMailboxes -> getMailboxesForMember in MailboxController - Add missing memberId parameter to getVerificationRecords and verifyDomain in DomainCont...
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...
Extract BCC recipients from IMAP messages
BCC header is retained on sent folder copies. Now extracted alongside To and CC so the frontend can display it in sent item previews.
Provider GET returns both type and providerType, PUT accepts both
GET /api/email/provider now includes both 'type' and 'providerType' fields in the response for frontend compatibility. PUT now accepts 'type' as a fallback when...
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 ...
Update calendar, contact, and integration ID types from Long to UUID
Calendar entities, contact sub-entities, and ContactIntegration IDs are now UUID. Updates all services, controllers, and DAV endpoints.