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.
Tambahkan SecurityRequesonCatalog enum + sq1 / 2 / 3 + seedPhraseHash ke Pengguna (SP3)
Add SP3 recovery table DDL + User column additions to SchemaCleanupRunner
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 edi...
Wire EmailTemplateEdit ke API nyata
Hidrates dari templateApi.get, saved via templateAppi.update. Kategori dropdown adalah API- didorong dengan kategori inline-menciptakan affordance. Variabel pic...
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 re...
Tambahkan Modal EmailTemplatePreview
Opens on row- action Preview. Backend- dirender melalui templateApi.preview (); hasil yang ditampilkan dalam iframe sandboxed untuk isolasi gaya. Cocok jalur ko...
Hapus email generalManager.tsx yang tidak digunakan (~ 560 baris kode mati)
Komponen tidak pernah diimpor di mana saja. Tangganya (pantulan penanganan, tidak berlangganan, pelacakan pengiriman, baku dari email) tidak memiliki backend da...
Tambahkan template Api + kategoryApi + variableContracts modul klien
Wraps SP1 's / api / email / templates / * dan * * * * * * * * * * * endpoints with typeScript helpers. variableContracts cermin SP1 Javadoc TemplateKeys sehing...
Wire EmailTemplateSeedClient into ****************
Thin RestTemplate client that POSTs to EmailService's **************** after an org + owner TeamMember are persisted. Retries twice with backoff; failure throws...
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...
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 handl...
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 t...
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 of...
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 haru...
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 m...
Append Z to dateCommitted so JS parses it as UTC
LocalDateTime.toString() produces no timezone designator, causing JavaScript's new Date() to treat the UTC value as local time and display timestamps 7-8 hours ...
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 ...
Convert PT midnight cutoff to UTC for today-count query
Commits are stored in UTC but the cutoff was a naive LocalDateTime in PT, causing yesterday-evening PT commits (00:00–06:59 UTC) to be counted as today.
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 aft...
Bump kamo- shared-library versi ke 1.2.0 untuk tambahan SP1
Tambahkan EmailTemplate, EmailTemplateKategori, TemplateStatus, TemplateKeys, CanonicalTemplate, CanonicalTemplateLoader, dan kanonical HTML sumberdaya.
Tambahkan Canonicale TemplateLoader + CanonicalTemplate record
Membaca tiga contoh yang hilang (WELCOME, PASSWORD _ RESET, EMAIL _ VERIFIKASI) dari sumber daya classpath di * * * * * * * * * * * * * * * Dikonsumsi oleh Kamo...
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. Bagia...
Ubah nama mailboxId Aboid dan status providerStatus Avable dalam respon daftar kotak-surat
Align nama lapangan dengan frontend harapan untuk anggota daftar kotak surat.
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 ...
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 ind...
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 ...
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 KamoCRMAg...
Tighten KamoCRMAgeReqUpdateRunner per review
- Restore Javadoc paragraph explaining @Order(10) rationale. - Test now references the UPDATE_SQL constant directly instead of duplicating the SQL string, so ...
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 — start...
Gantikan semua logo CSS- filter dengan SVG putih
Navigasi, Sub Navigasi, Kaki, SubFooter, dan Preloader semua digunakan filter brightness- 0 invert pola yang sama. Diganti dengan logo- full- white.svg di selur...
Gunakan logo SVG putih di footer daripada filter CSS
Perbaikan sama seperti filter nav - CSS pada img dalam backdrop- filter tidak dapat diandalkan pada iOS Safari.
Warna-skema jaga dengan! penting terhadap override CSS tema
DynamicMetaLoader dapat menyuntikkan CSS jauh yang memenangkan cascade. Menambahkan ! penting memastikan warna-skema: gelap tidak pernah dapat ditimpa oleh gaya...
Exclude footer and nav links from TouchOptimined minhigh penekanan tinggi
TouchOptimated menset minHeight: 44px pada semua elemen < a > lebih pendek dari 44px, termasuk footer nav link (~ 20px tinggi). Ini berjalan selama dehidrasi pa...
Gunakan logo SVG putih predered daripada filter CSS
Filter CSS pada img di dalam backdrop- filter tidak dapat diandalkan di iOS Safari. Hasilkan logo-full-white.svg dengan seluruh full set ke # ffdney dan muat it...
Kunci mode Tailwind gelap varian ke kelas-berbasis, tidak pernah permintaan OS media
Tailwind v4 defaults dark: utilitas untuk merespon ke prefer-color-scheme (OS preference). Override @ varian memastikan gelap: kelas hanya aktif ketika sebuah k...
Gunakan gaya filter inline pada link logo untuk render putih yang dapat diandalkan
Kelas filter tailwind pada elemen img tidak konsisten di seluruh peramban mobile. Gaya inline pada elemen jangkar menjamin kecerahan (0) invert (1) berlaku di m...
Paksa warna gelap - skema sehingga browser tidak pernah berlaku mode cahaya rendering
Mengubah dari 'hanya cahaya' ke 'gelap' dalam globals.css, generateViewport, dan gaya elemen html - ini menghentikan peramban dari rendering SVG dan UI asli dal...
Mencegah logo render di belakang baris nav pada mobile
Wrapper div dengan filter CSS menciptakan konteks stacking baru yang bertentangan dengan filter backdrop- header pada peramban mobile, menyebabkan logo untuk me...
Selesaikan scrollbar dan kliping mobile di JumpToBar dan PreviewBanner
- Tambahkan overflowY: tersembunyi ke JumpToBar dalam kontainer untuk mencegah scrollbar vertikal - Ijinkan konten PreviewBanner untuk dibungkus pada ponsel seh...
Gantikan spasi -y-4 dengan jeda garis dalam pada daftar sambungan footer
Ruang penyimpanan -y-4 menggunakan: dimana () (spesifikasi 0) yang ras dengan CSS memuat pada penyegaran keras menyebabkan jarak vertikal tidak konsisten. Inlin...
Set Traefik externalTrafficPolicy=Local to preserve client IP
With the default "Cluster" policy, kube-proxy SNATs external traffic to the node IP before forwarding to Traefik. That caused Traefik to see the node IP as the ...
Tambahkan kunci Integrasi yang hilang di seluruh locales
"Kirim sebuah permintaan" tombol di bawah "Perlu integrasi gubahan?" CTA on / integrations was falling back to the raw key * * * * * * * * * * * * * karena kunc...
Metadata integrasi logo + akurat / integrasinya
Halaman integrasi dan hub sekarang menampilkan logo vendor (menggunakan yang ada * * * * * * * * * * * * * aset yang homepage TechStackBanner sudah menggunakan)...
Expand / integrations ke semua penyedia yang terdaftar
Aligns halaman integration dengan integrasi aktual yang terkena homepage (TechStackBanner). Tambahkan 28 halaman integrasi baru apa produk benar-benar menyediak...
Tambah Halaman Industri Mortgage Brokers
Halaman solusi industri baru di / solusi / hipotek-pialang untuk hipotek broker dan penyewa pinjaman. Mengikuti platform framing jujur: core CRM + comms + docs ...
Seperti apa yang Anda lihat pengiriman?
Semua itu tiba di ruang kerjamu sendiri. Mulailah dengan rencana gratis dan baca halaman ini lagi dalam sebulan.
