Tambahkan DEFAULT salah ke definisi kolom surel _ diverifikasi
Skema migrasi Hibernasi menghasilkan ALTER TABEL tanpa default, gagal pada tabel dengan baris yang ada. ColumnDefinition memaksa untuk include DEFAULT salah seh...
Resolve duplicate emailTemplateServiceClient bean conflict
**************** and **************** were identical @Components with the same default bean name, causing **************** at startup. Delete the duplicate in r...
Bump kamo-shared-library to 1.4.0
Docker Stage 1 builds kamo-shared-library main (now 1.4.0) and installs it to the local .m2; the service pom still referenced 1.0.0 which Maven could not find, ...
Terapkan perbaikan kualitas SP6 dan implementasi
C1: gunakan NEXT _ PUBLIC _ H * * _ SITE _ KEY env var instead of hardcode placeholder C2: ubah RegisterResponse.asterId dan semua param API dari nomor ke strin...
Address 4 code-review findings in registration and login paths
- Hide raw exception message in /register 500 path; log instead - Fail-closed (503) on email-verified DB check failure in login - verifyEmailToken throws if use...
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 ...
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.
Ubah nama mailboxId Aboid dan status providerStatus Avable dalam respon daftar kotak-surat
Align nama lapangan dengan frontend harapan untuk anggota daftar kotak surat.
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...
Use pg Pool options instead of connection string for geo DB
CockroachDB rejects insecure connections and node-pg can't verify self-signed certs via connection string alone. Parse the URL into Pool options and pass ssl:{r...
Backlink target ke www.kamocrm.com (canonical host)
Komponen PoweredByKamo yang dikirim menunjuk pada apex https: / / kamocrm.com / tapi kamo- host pemasaran kanonikal adalah https: / / www.kamocrom.com /. Memper...
*** session check, loading spinner, rebrand analytics to Kamo Analytics
Use redis get instead of exists for more reliable *** validation on logout. Replace "Authenticating..." text with an animated spinner on the OTK auth page. Rena...
Copy GeoLite2 database to production image for country detection
The /geo/ directory containing GeoLite2-City.mmdb was built during the builder stage but never copied to the runner stage, so all country/region lookups returne...
Move CSP to proxy.ts instead of middleware.ts to avoid build conflict
Next.js 16 doesn't allow both middleware.ts and proxy.ts. The Docker build copies proxy.ts as the middleware, so add CSP frame-ancestors header there instead. T...
Clean up legacy analytics deployment on each CI run
Delete old analytics deployment, service, and ingressroute that conflict with the kamo-analytics deployment managed by its own CI/CD pipeline.
Use Next.js middleware for CSP so frame-ancestors works at runtime
The standalone build bakes next.config.ts headers at build time, so ALLOWED_FRAME_URLS was always empty. Move CSP to a Next.js middleware that reads the env var...
Strip X-Frame-Options header in iframe-compatible middleware
Set X-Frame-Options to empty string to remove the SAMEORIGIN value that was being inherited, allowing CSP frame-ancestors to control iframe embedding instead.
Read ALLOWED_FRAME_URLS at runtime so CSP frame-ancestors works in standalone mode
The env var was being read at module scope during build, baking an empty value into the standalone server. Move CSP and all header construction into functions c...
Reset document.title in rebrand() when React overwrites it
React re-applies RSC payload after hydration, resetting the title to "analytics". Add a title check inside the MutationObserver callback so it gets corrected ev...
Replace "analytics" text nodes with "Kamo Analytics" instead of clearing
Seperti apa yang Anda lihat pengiriman?
Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.