परिवर्तन लॉग
क्या नया है.
यह जहाज के रूप में, प्लेटफार्म के हर सुधार.
· SecurityService
Add AccountSettingsController + Service for phone + security questions (SP3)
Allows logged-in users to set/verify phone and configure 3 security questions. Routes to /api/account/* (session-authenticated via KSESSION_DATA).
· SecurityService
Add BulkTextSmsClient + EmailTemplateServiceClient + PasswordRecoveryController (SP3)
Full password recovery flow: email-link, SMS OTP, security questions, seed phrase. Routes to /api/recover/* (unauthenticated). Uses SP1 email pipeline + VOIPService SMS.
· VOIPService
Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)
· kamo-shared-library
वसूली इकाइयों + जमा जोड़ें; 1.3.0 (SP3) के लिए टक्कर
Adds passwordResetToken, SmsOtp, RecoverySession, AccountVerificationCode SP3 वसूली प्रवाह के लिए संबंधित भंडार के साथ JPA संस्थाओं।.
· kamo-shared-library
Add SecurityQuestionCatalog enum + sq1/2/3 + seedPhraseHash to User (SP3)
· InitializerService
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
· kamo-internal
ब्राउज़र के बैकएंड-रेंडर मोडल (SP2) का हिस्सा) के माध्यम से रूट पूर्वावलोकन
ईमेलटेम्पलेटब्राउज़र अब सीधे पूर्वावलोकन मोडल का मालिक है, इसलिए प्रबंधक को अब पंक्ति स्तर के पूर्वावलोकन अनुरोधों को रोकने की आवश्यकता नहीं है और मोड को संपादित करने के लिए पुनर्निर्देशित करें।.
· kamo-internal
वायर ईमेलटेम्पलेट
टेम्पलेटApi.get से हाइड्रेट्स, टेम्पलेटApi.update के माध्यम से बचाता है। श्रेणी ड्रॉपडाउन एपीआई-प्रेरित है, जिसमें इनलाइन श्रेणी-निर्माण वहन होता है। चर वेरिएबलContracts.ts (ReQUIRED के लिए घोषित अनुबंध) से पिकर पढ़ता है टेम्पलेट कुंजी; CUSTOM के लिए आम सेट). REQUIRED / सिस्टम पंक्ति संपादन उचित चेतावनी बैनर दिखाता है। पूर्वावलोकन बटन खुलता है बैकएंड-रेंडर ईमेल टेम्पलेट पूर्वावलोकन मोडल। SP2 का हिस्सा।.
· kamo-internal
वायर ईमेलटेम्पलेटब्राउज़र रियल एपीआई + ऐड सिस्टम डिफॉल्ट टैब
टेम्पलेटApi.list () कॉल के साथ नकली डेटा की ~ 140 लाइनों को बदल देता है। सशर्त पांचवां टैब 'सिस्टम डिफॉल्ट' केवल टॉप-लेवल-ऑर्ग एडमिनिस्ट्रेशन और रेंडर्स के लिए दिखाई देता है उत्तरदायित्व प्रणाली श्रेणी फिल्टर populated from categoryApi.list(). सभी पंक्ति क्रियाएँ **************** असली हिट बैकएंड एंडपॉइंट्स। संभाल के माध्यम से रूट त्रुटियाँApiError टोस्ट सहायक। SP2 का हिस्सा।.
· kamo-internal
EmailTemplateDuplicateDialog (SP2) का हिस्सा जोड़ें
· kamo-internal
EmailTemplateCategoryManager modal (SP2) का हिस्सा जोड़ें
· kamo-internal
E-Mail साइटमैप
पंक्ति क्रिया पूर्वावलोकन पर खुलता है। Backend-rendered by टेम्पलेटApi.preview(); परिणाम शैली अलगाव के लिए एक sandboxed iframe में प्रदर्शित होता है। मैच सटीक कोड पथ जो आप उपयोग करते हैं, तो क्या आप पूर्वावलोकन प्राप्तकर्ताओं को मिलता है। SP2 का हिस्सा।.
· kamo-internal
टेम्पलेट जोड़ेंApi + श्रेणीApi + वैरिएबल कॉन्ट्रैक्ट्स क्लाइंट मॉड्यूल
SP1 की / एपीआई / ईमेल / टेम्पलेट्स /* और ******************* टाइप टाइप स्क्रिप्ट सहायकों के साथ समापन बिंदु। वेरिएबल कॉन्ट्रैक्ट दर्पण SP1 टेम्पलेटकीज़ जावाडोक इसलिए संपादक के परिवर्तनीय पिकर शो घोषित REQUIRED टेम्पलेट्स के लिए अनुबंध। SP2 का हिस्सा।.
· SecurityService
Wire EmailTemplateSeedClient into ****************
Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws OrgProvisioningException and rolls back the surrounding @Transactional so the org + owner-TeamMember save is undone (per SP1 spec). Mirrors the existing TranslateServiceClient X-Internal-Auth pattern. k8s/configmap.yaml adds: email.service.url (EmailService internal URL) internal.auth.secret (cluster-wide X-Internal-Auth header value) pom.xml bumps kamo-shared-library 1.1.0 → 1.2.0. Part of SP1.
· EmailService
Add EmailTemplateCategoryController REST endpoints
**************** CRUD. Delete response includes reassignedCount — the number of templates that became uncategorized as a result of removing the category. Session context read via the same **************** pattern as other EmailService controllers. Part of SP1.
· EmailService
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) additionally see systemTemplates in the list response. Service-to-service endpoints are protected by the existing InternalAuthFilter. Session context (orgID, memberID) read from OTKPreAuthFilter's REQ_ATTR_SESSION attribute — the same pattern already used by AliasController / MailboxController. Part of SP1.
· EmailService
सेवा के समापन बिंदुओं के लिए आंतरिकAuth Filter जोड़ें
X-Internal-Auth header को /api/email/templates/send पर मान्य करता है और /api/email/templates/seed-org/* पथ। अन्य पथ इस फिल्टर को बायपास करते हैं (उपयोगकर्ता सत्र उन्हें संभालता है)। गुप्त InterNAL AUTH SECRET से आता है var. इसके अलावा लेन-देन जोड़ता है.smtp.user/translate.smtp.pass ईमेल टेम्पलेट सर्विस द्वारा खपत किए गए विन्यास स्टब - सभी तीन स्रोत हैं उत्पादन में K8s configmap से। SP1 का हिस्सा।.
· EmailService
EmailTemplateCategoryService जोड़ें - Org-scoped श्रेणियों के लिए CRUD
केस-असंवेदनशील नाम की विशिष्टता प्रति ऑर्ग सेवा परत पर लागू होती है (DB में आंशिक अद्वितीय अनुक्रमणिकाओं में)। Deletion nulls category id श्रेणी पंक्ति को हटाने से पहले प्रभावित टेम्पलेट्स पर। SP1 का हिस्सा।.
· EmailService
ईमेल टेम्पलेट सर्विस जोड़ें - CRUD + भेजें + बीज + रीसेट-टू-डिफ़ॉल्ट
लेनदेन ईमेल के लिए कोर ऑर्केस्ट्रेटर। प्रेषक टेम्पलेट को हल करता है, विषय/बॉडी प्रदान करता है, संगठन से ओरग का प्राथमिक डोमेन चुनता है। डोमेन और NoReply@{org.domain} के साथ ईमेलSmtpService के लिए बंद हाथ से पोशाक के रूप में। नए-ऑर्ग लाइफसाइकिल हुक और रीसेट के लिए seedForOrg शामिल है प्रति-org REQUIRED पंक्ति पर एक सिस्टम पंक्ति की सामग्री की प्रतिलिपि बनाता है। भेजने के लिए Auth क्लस्टर-व्यापी लेनदेन SMTP सेवा क्रेडेंशियल का उपयोग करता है (transactional.smtp.user / transactional.smtp.pass) बजाय प्रति सदस्य प्रदाता संकल्पक - लेन-देनकर्ता के पास कोई अभिनय सदस्य नहीं है। SP1 का हिस्सा।.
· EmailService
'NoReply@{domain}' के लिए NoReplySenderService जोड़ें
पते से लेन-देन के लिए सच्चाई का एकल स्रोत। स्वीकार करना डोमेन स्ट्रिंग, लोअरकेस इसे सामान्य करता है, "NoReply@<domain>" लौटता है। कॉलर को ऑर्ग के डोमेन (संगठन के माध्यम से) को हल करना चाहिए। इसी तरह) और इसे पास करें। SP1 का हिस्सा।.
· EmailService
{{var}} प्रतिस्थापन के लिए टेम्पलेट प्रस्तुतकर्ता जोड़ें
स्टेटलेस रेगेक्स आधारित रेंडर। मिसिंग बनाम विकल्प खाली स्ट्रिंग और एट्रिब्यूशन के लिए टेम्पलेटकी + ऑर्गीड के साथ एक WARN लॉग का उत्सर्जन करता है। कोई HTML एस्केप नहीं v1 में - मान सर्वर नियंत्रित होते हैं। SP1 का हिस्सा।.
· InitializerService
Add EmailTemplateSeedRunner for SYSTEM + per-org seeding
Runs at @Order(20) on KamoInitializerService startup. Loads canonical templates from kamo-shared-library resources; upserts SYSTEM rows (no clobber); backfills per-org rows for every org that doesn't yet have them. Idempotent — safe to re-run on every startup. Part of SP1.
· InitializerService
Add partial unique indexes + CHECK constraints for email_templates
Hibernate ddl-auto can't generate partial unique indexes or computed-CHECK constraints. This commit adds them via the existing idempotent DDL runner pattern after Hibernate creates the base tables from the new entities. Part of SP1.
· kamo-shared-library
CanonicalTemplateLoader + CanonicalTemplate रिकॉर्ड जोड़ें
तीन REQUIRED टेम्पलेट्स (WELCOME, PASSWORD RESET) पढ़ें, EMAIL VERIFICATION. ************* द्वारा उपभोग सिस्टम-पंक्ति बीजिंग के लिए KamoInitializerसेवा। SP1 का हिस्सा।.
· kamo-shared-library
WELCOME, PASSWORD RESET, EMAIL VERIFICATION के लिए कैनोनिकल HTML + JSON जोड़ें
सिस्टम पंक्तियों के लिए स्रोत-ऑफ-ट्रिथ सामग्री। KamoInitializer Service CanonicalTemplateLoader और UPSERTed द्वारा शुरू होता है। SP1 का हिस्सा।.
· kamo-shared-library
ईमेलटेम्पलेट इकाई + भंडार जोड़ें
प्रति टेम्पलेट key (org id NULL, is system TRUE) प्लस स्टोर प्रति org प्रति टेम्पलेट key एक क्लोन। Soft-reference org id/category id. डीबी संचालित timetamps; JSONB body blocks और टैग के लिए। रिपोजिटरी प्रदान करता है ऑर्ग-स्किप्ड लुकअप, परमाणु उपयोग काउंटर वृद्धि, और श्रेणी-डिलीट CategoryForOrg के माध्यम से सफाई। SP1 का हिस्सा।.
· kamo-shared-library
EmailTemplateCategory इकाई + भंडार जोड़ें
ईमेल टेम्पलेट्स के लिए ऑर्ग-स्कैप्ड श्रेणियां। Soft BIGINT org id (no FK) मौजूदा पैटर्न से मेल खाता है। केस-असंवेदनशील नाम की विशिष्टता प्रति-ऑर्ग है KamoInitializer Service में जोड़ा गया एक आंशिक सूचकांक के माध्यम से लागू किया गया। SP1 का हिस्सा।.
· kamo-shared-library
जोड़ें टेम्प्लेटस्टैटस enum + टेम्प्लेटकी लेनदेन टेम्पलेट्स के लिए स्थिरांक
REQUIRED/CUSTOM/ARCHIVED lifecycle राज्यों और तीनों की घोषणा आवश्यक टेम्पलेट कुंजी (WELCOME, PASSWORD RESET, EMAIL VERIFICATION). प्रत्येक आवश्यक टेम्पलेट के लिए परिवर्तनीय अनुबंध जावाडोक के रूप में दस्तावेज किया गया है स्थिर वर्ग; SP3 और SP4 कॉलर इन संदर्भों। SP1 का हिस्सा।.
· InitializerService
Seed KamoCRM with ALL_WORK_ELIGIBLE on fresh installs
The createOrg() helper applies this single argument to both ageReqTypeMember and ageReqTypeTeamMember; consistent with platform convention. Pairs with KamoCRMAgeReqUpdateRunner which handles existing deployments via a conditional UPDATE. Completes SP5.
· InitializerService
Add one-time runner to migrate KamoCRM agereq to ALL_WORK_ELIGIBLE
Conditional idempotent UPDATE runs on service startup; WHERE clause checks the expected old value so re-runs are no-ops. Errors are logged and swallowed — startup must not block on this non-critical migration. Part of SP5. Pairs with the DataLoader edit in the next commit that makes fresh installs seed the new value directly.

तुम्हारा ब्रह्मांड इंतजार कर रहा है.
मिनटों में मुफ्त शुरू करें. जब भी आप तैयार हों तो उत्पाद जोड़ें - कोई माइग्रेशन नहीं, कोई नया लॉगइन नहीं.
हमेशा के लिए मुफ्त - कोई क्रेडिट कार्ड की आवश्यकता नहीं