Mencegah pembungkus ganda dari dokumen penuh bodyHtml dalam desainer blok
Ketika BodyBlocks adalah kosong dan bodyHtml adalah dokumen lengkap <! DOCTYPE html > (mis. Canonical seeded templates), mengimpor sebagai sebuah blok tunggal d...
Pass human-readable expiry time to email verification template
Add humanizeMinutes() helper that formats minutes as days/hours/minutes (e.g. "1 day" for 1440 min). Pass as {{expiryText}} to match updated canonical template ...
Improve template verifikasi surel - URL fallback, teks kadaluarsa, subjek
- Tambahkan link verifikasi teks di bawah tombol sebagai fallback copy-paste - Switch variabel kadaluarsa dari {{expiiryMinutes}}} ke {{exporiryText} untuk form...
Mengembalikan layout halaman verifikasi dengan mengubah ukuran masukan tersembunyi
Kotak MUI menafsirkan nilai lebar / tinggi numerik 0-1 sebagai persentase, jadi lebar: 1 membuat masukan tersembunyi menutupi kartu penuh. Berubah menjadi 0 seh...
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.
Serialisasi surel penuh HTML dengan bingkai luar pada template save
- SerializeFullEmailHtml membungkus bagian dalam blok di luar merek (logo header, judul / subtitle, area isi, nama logo footer + org) menggunakan URL absolut se...
Tambahkan bingkai luar ke email-verifikasi template kanonikal
Wraps isi dalam dengan shell email yang tepat: header dengan nama org, daerah isi padded, dan footer. Menggunakan {orgName}} sebagai identifier.
Add code-based email verification path to /verify-email endpoint
The endpoint now handles both token (link click) and userId+code (manual 6-digit entry). Token path unchanged; code path hashes the supplied code and matches ag...
Token link auto-verifies dan redirecting ke login; tambahkan indikator fokus kode
- / verifikasi? token = xxx sekarang memanggil verifyEmailByToken di mount dan alihkan ke login pada sukses; kembali ke masukan kode pada kegagalan - Kotak kode...
Angkat * * * widget diatas click-to-focus overlay (z-index)
Overlay (posisi: absolut, z-index: 0) meliputi Capcha widget karena muncul nanti dalam urutan DOM. Menambahkan z-indeks: 1 ke * * * Kontainer memungkinkan peris...
Remove nonexistent postfix-lmdb package, install lmdb library instead
postfix-lmdb is not a valid Alpine package; lmdb support is built into the base postfix package. The pod was CrashLoopBackOff due to apk failure.
Add weekly image prune and journal vacuum CronJob for k1m1
CronJob runs every Sunday 3am, privileged, pinned to k1m1. - crictl rmi --prune removes unused container images - nsenter journal vacuum enforces 500MB cap - CI...
Fix Docs image registry, add Recreate strategy to coturn/postfix, increase qdrant memory
- Docs: fix wrong image registry (redis.kamo.svc... → **************** add Recreate strategy - coturn: add Recreate strategy to prevent rolling update port conf...
Compact header penyunting - hapus judul / tab besar, pindahkan aksi ke baris nav
Hapus kartu header lengket (judul, judul, Simpan / Batal / Pratilik button, Edit / Pratilik tab bar) dari EmailTeplateEdit untuk merebut kembali ~ 200px dari ru...
Perlu halaman verifikasi sebelum setiap verifikasi / kirim ulang percobaan
* * * adalah reset setelah setiap aksi (sukses atau gagal) sehingga segar memecahkan diperlukan untuk setiap usaha berikutnya.
Switch Postfix sasl_passwd from hash to lmdb format
Alpine postfix build does not include hash support — postmap and smtp_sasl_password_maps were silently failing, deferring every outbound relay attempt through s...
Mengarahkan ke / verifikasi setelah pendaftaran daripada merender inline
Menyimpan URL akurat - peramban menunjukkan / verifikasi bukan / anggota.
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 ...
Populate all EMAIL_VERIFICATION template variables
Was sending only {token, code} — template also needs orgName, firstName, verifyLink, and expiryMinutes. Load org and user to build the full vars map, and resolv...
Mutakhirkan pengalihan dari / benci -verifikasi ke / verifikasi di situs register
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...
Redirect EMAIL _ NOT _ VERIFIED ke register / benci-verifikasi
Hapus Email VerifyCard baris dalam dari halaman masuk dan semua terkait state / callbacks. Di EMAIL _ NOT _ VERIFIED, pengguna kini diteruskan ke * * * * * * * ...
Tambah / benci -verifikasi halaman untuk pengalihan login
Membuat standar / membenci-verifikasi rute yang menerima? email dan ? Param query userId, menggunakan PostCompletionScreen untuk konsisten email verifikasi UX. ...
Kartu verifikasi lebar ke 32rem untuk mencegah pembungkus label tombol
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...
Use subdomain-aware SQL to match findByDomain JPQL logic
Org domain lookup in resendVerification was doing an exact-match query that failed for subdomains stored as child records (e.g. 'api' with parent 'kamocrm.com')...
Atur Host / X- Forwarded- Host sehingga APIService memecahkan dengan benar org
APIService overwritten X-Forwarded-Host dengan request.getServerName (), yang berbunyi dari kepala Host. Tanpa sebuah header eksplisit Host layanan internal K8 ...
Correct EmailService URL port in configmap (4203 -> 80)
EmailService K8s service exposes port 80, not 4203. Verification emails were timing out on every registration attempt.
Desain ulang layar verifikasi surel + fix mengirim ulang bug surel
- PostCompletionScreen: Layout halaman penuh dengan animasi org latar belakang, kartu glassmorphism, logo, kotak kode visual 6-digit, tingkat sukses / verifikas...
Bypass JPA org lookup to avoid Hibernate cascade flush error
**************** triggers **************** which causes a Hibernate auto-flush. That flush fails because Organization.features was previously replaced with a pl...
Hapus prefeature-loading bersemangat dari getOrganizationByDomain
Features are an org-level contention unrelated to most callers of this method (mis. pendaftaran, resolusi domain login). Untuk memuat mereka via setFeatures () ...
Undo-type
Memanggil org.setFeatures (newList) menggantikan Hibernate- dilacak gigih koleksi, menyebabkan JpaSystemException ketika setiap query trigger auto- flush dalam ...
Use getReferenceById to avoid cascade orphanRemoval flush error on registration
Loading Organization via findById inside @Transactional caused Hibernate to detect the features collection was de-referenced during auto-flush, throwing JpaSyst...
Lanjutkan verifikasi menggunakan email bukan userId, maju X-Forwarded- Host
SecurityService / register / benci verifikasi mengharapkan email dalam tubuh, bukan userId (dimana respon kesalahan login tidak pernah termasuk). Juga maju X- F...
Cocokkan penyimpanan avatar internal - 3 ukuran, MiniO, langkah upload terpisah
Dialog crop kini menghasilkan tiga gumpalan PNG (50 / 150 / 350px) melalui kanvas, identik untuk kamo- internal 's GiblarManager. Setelah pendaftaran kembali, g...
Add register-photo endpoint for unauthenticated post-registration avatar upload
POST **************** accepts userId + file/fileSm/fileMd/fileLg without a session. Guards: user must be unverified and have no avatar yet, preventing abuse aga...
Ganti EMAIL _ NOT _ VERIFIED error dengan kartu verifikasi kaya
Ketika log masuk gagal dengan EMAIL _ NOT _ DIVERIFIED kartu log masuk kini digantikan oleh "Periksa kotak masukmu" layar: amplop animasi SVG dengan lipatan pem...
Panjangkan foto untuk mendukung format AVIF dan SVG
Tambahkan gambar / avif dan gambar / svg + xml ke masukan berkas terima daftar dan validasi regex. Memutakhirkan label petunjuk untuk daftar semua enam format. ...
Tambahkan penyunting foto reakt- easy-crop ke tahap pendaftaran upload
Mirror the PhotoCropDialog from kamo- internal 's AverarManager: - dialog crop dibuka segera setelah seleksi berkas - pan dengan menyeret, zoom melalui gulir at...
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.
Pass tubuh upstream error melalui proksi keamanan bukan pesan generik
Sebelumnya kembali {error: "Upstream error"} pada bukan-2xx, kehilangan nyata pesan error dari SecurityService. Sekarang maju kode status dan tubuh langsung.
Align registration field names and response shape with frontend contract
Frontend sends nameFirst/nameLast but controller read firstName/lastName, causing 400 "First name is required". Success response now returns {status, userId, al...
Gantikan sesi Redis caching dengan penerimaan Java API langsung dalam rute org
Mencegah singgahan ageReqType yang basi dari menampilkan pemeriksaan usia dengan tidak benar
- Rute org: kurangi Redis TTTL dari 24h ke 5min dan tambahkan ageReqTypember untuk deteksi basi sehingga daerah keamanan tetap segar setelah perubahan DB - Regi...
Add SecurityService and dao.repositories to EnableJpaRepositories scan
UserPhoneLookupRepository in recovery package was not picked up because EnableJpaRepositories only listed dao.repos and commerce. Added the SecurityService base...
Seperti apa yang Anda lihat pengiriman?
Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.