Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · 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).

  2. · 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.

  3. · VOIPService

    Add InternalAuthFilter + POST /api/bulktext/send for service-to-service SMS (SP3)

  4. · kamo-shared-library

    Tambahkan entitas pemulihan + repos; bump ke 1.3.0 (SP3)

    Tambahkan Password ResetToken, SmSOtp, RecloverySesion, AkuntVerificationCode Entitas JPA dengan repositori yang sesuai untuk aliran pemulihan SP3.

  5. · kamo-shared-library

    Tambahkan SecurityRequesonCatalog enum + sq1 / 2 / 3 + seedPhraseHash ke Pengguna (SP3)

  6. · InitializerService

    Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner

  7. · kamo-internal

    Pratinjau rute melalui latar belakang Browser - modal yang dirender (bagian dari Sp2)

    Peramban Templat Email kini memiliki Modal Pratilik secara langsung, jadi Manajer tidak perlu lagi mencegat permintaan pratinjau tingkat row-dan redirect to edit mode.

  8. · kamo-internal

    Wire EmailTemplateEdit ke API nyata

    Hidrates dari templateApi.get, saved via templateAppi.update. Kategori dropdown adalah API- didorong dengan kategori inline-menciptakan affordance. Variabel picker dibaca dari variableContrats.ts (menyatakan kontrak untuk REQUIRED kunci template; set umum untuk CUSTOM). Edit baris REQUIRED / SYSTEM Tampilkan spanduk peringatan yang sesuai. Tombol pratilik membuka backend-diberikan Email TemplatePreview modal. Bagian dari Sp2.

  9. · kamo-internal

    Wire EmailTemplateBrowser ke API + tambahkan tab Standar Sistem

    Menggantikan ~ 140 baris data mock dengan template Api.list () panggilan. Kondisional tab kelima 'Sistem Baku' hanya muncul untuk tingkat atas -org admin dan render dari response.systemTemplats. Filter kategori penduduk dari kategoryApi.list (). Semua aksi baris * * * * * * * * * * * * * * * * * hit real backend titik akhir. Galat diarahkan melalui helper bakar handleApiError. Bagian dari Sp2.

  10. · kamo-internal

    Tambahkan EmailTemplateDupcateDialog (bagian dari Sp2)

  11. · kamo-internal

    Tambahkan Modal Manajer EmailTemptategoryManager (bagian dari Sp2)

  12. · kamo-internal

    Tambahkan Modal EmailTemplatePreview

    Opens on row- action Preview. Backend- dirender melalui templateApi.preview (); hasil yang ditampilkan dalam iframe sandboxed untuk isolasi gaya. Cocok jalur kode yang tepat yang mengirim penggunaan, jadi apa yang Anda preview adalah apa penerima dapatkan. Bagian dari Sp2.

  13. · kamo-internal

    Tambahkan template Api + kategoryApi + variableContracts modul klien

    Wraps SP1 's / api / email / templates / * dan * * * * * * * * * * * endpoints with typeScript helpers. variableContracts cermin SP1 Javadoc TemplateKeys sehingga pertunjukan variabel penyunting dideklarasikan kontrak untuk contoh REQUIRED. Bagian dari Sp2.

  14. · 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.

  15. · 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.

  16. · 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.

  17. · EmailService

    Add InternalAuthFilter for service-to-service endpoints

    Validates X-Internal-Auth header on /api/email/templates/send and /api/email/templates/seed-org/* paths. Other paths bypass this filter (user session auth handles them). Secret comes from INTERNAL_AUTH_SECRET env var. Also adds transactional.smtp.user / transactional.smtp.pass config stubs consumed by EmailTemplateService — all three are sourced from the k8s configmap in production. Part of SP1.

  18. · EmailService

    Tambahkan Email TemplateCategoryService - CRUD untuk kategori org- scoped

    Menyebabkan keunikan nama sensitivitas per org dipaksa pada lapisan layanan (Cocok dengan sebagian indeks unik di DB). Penghapusan _ id kategori pada template terpengaruh sebelum menghapus baris kategori. Bagian dari SP1.

  19. · EmailService

    Tambahkan Email TemplateService - CRUD + kirim + seed + reset-to-default

    Penata inti untuk email transkasional. sendToUser menyelesaikan template, membuat subjek / tubuh, memilih domain utama org dari Organisasi. domain, and hands off to EmailsmttpService with NoReply @ {org.domain} as from -address. Termasuk seedForOrg untuk kait lifecycle new-org dan resetToDefault yang menyalin sebuah isi baris SISTEM melalui sebuah baris per-org REQUIRED. Auth untuk pengiriman menggunakan kredensial layanan transkasional SMTP (transctional.smtp.user / transctional.smtp.pass) daripada per- anggota Penyedia penyedia - pengiriman transkasional tidak memiliki anggota akting. Bagian dari SP1.

  20. · EmailService

    Tambahkan Layanan Pemberitahuan untuk 'NoReply @ {domain}' dari -address

    Sumber kebenaran tunggal untuk transctional- email dari alamat. Menerima domain string, lowercase-normalizes itu, kembali "NoReply @ < domain >". Penelepon harus menyelesaikan domain org (via Organisasi. Domains cari atau seperti) dan meneruskannya. Bagian dari SP1.

  21. · EmailService

    Tambah Pengatur Templat bagi pengganti {{var}}}

    Stareless regex- berbasis renderer. Hilang vars pengganti string kosong dan Keluarkan sebuah log WARN dengan templateKey + orgId untuk atclate. Tidak ada HTML melarikan diri dalam v1 - nilai server- dikendalikan. Bagian dari SP1.

  22. · 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.

  23. · 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.

  24. · kamo-shared-library

    Tambahkan Canonicale TemplateLoader + CanonicalTemplate record

    Membaca tiga contoh yang hilang (WELCOME, PASSWORD _ RESET, EMAIL _ VERIFIKASI) dari sumber daya classpath di * * * * * * * * * * * * * * * Dikonsumsi oleh KamoInitializerService for SYSTE-row seeding. Bagian dari SP1.

  25. · kamo-shared-library

    Tambahkan HTML + JSON untuk Welcome, PASSWORD _ RESET, EMAIL _ VERIFIKASI

    Isi dari kebenaran bagi baris SISTEM. Dimuat di Layanan KamoInitializerService started by Canoniclale TemplateLoader and UPSERTed into email _ templates. Bagian dari SP1.

  26. · kamo-shared-library

    Tambahkan repositori EmailTemplate +

    Toko satu baris SYSTEM per template _ key (org _ id NULL, adalah _ system TRUE) plus satu clone per org per template _ key. Soft--reference org _ id / categori _ id. DB- penanda waktu didorong; JSONB untuk body _ blocks dan tag. Repositori menyediakan pencarian org- scoped, penggunaan atom counter peningkatan, dan kategory- hapus Pembersihan melalui penghapusan Kategori ForOrg. Bagian dari SP1.

  27. · kamo-shared-library

    Tambahkan repositori Email TemplateKategori +

    Kategori organik untuk template email. _ Id BIGINT Lembut (tidak ada FK) cocok dengan pola yang ada. Case- nama sensitif unik per-org adalah dipaksa melalui indeks parsial ditambahkan dalam KamoInisialerservice. Bagian dari SP1.

  28. · kamo-shared-library

    Tambahkan TemplateStatus enum + TemplateKeys konstanta untuk template trankasional

    Menyatakan keadaan lifecycle REQUIRED / CUSTOM / ARCHIVED dan tiga membutuhkan kunci template (WELCOME, PASSWORD _ RESET, EMAIL _ VERIFIKASI). Kontrak variabel untuk setiap template REQUIRED yang didokumentasikan sebagai Javadoc pada kelas konstanta; SP3 dan SP4 penelepon referensi ini. Bagian dari SP1.

  29. · 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.

  30. · 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.

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit