Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· kamo-internal
Tampilkan catatan kepemilikan kepemilikan TXT dalam pengaturan UI DNS
- DomainData / DnsStatus: tambahkan verifikasi Token, ownershipshipted, type fields - AliasStatusTable: tampilkan TxtOwnerchankCard di atas tabel CNAME dengan tombol salin, indigo tertunda / hijau diverifikasi styling; filter TXT dari CNAME jumlah diverifikasi - ManualDnsGuide: menerima verifikasi Token prop; menunjukkan TXT record sebagai Langkah 3a sebelum catatan CNAME (Langkah 3b) dengan tombol salin inline - DnsProgressView: lulus domain.verificationToken ke ManualDnsGuide
· SecurityService
Generate TXT verification token on domain create, check in verify-dns
- createDomain: generate 32-char UUID token and store via setVerificationToken - verifyDns: check _kamo-verify TXT record for kamo-site-verification=<token> - TXT verification counts toward requiredTotal/requiredVerified - Once ownership_verified=true, cache result so member can remove TXT record - CNAME statuses now include type="CNAME"; TXT status includes type="TXT"
· InitializerService
Add verification_token and ownership_verified columns to org_domains
· kamo-shared-library
Tambahkan verifikasi kepemilikan domain melalui rekaman DNS TXT
- Domain Organisme: tambahkan daerah verifikasi Token dan ownertrance Verified - DomainService: tambahkan setVerificationToken () dan setOwnershipted () - DomainDTO: mengekspos verifikasi Token dan memiliki verifikasi dalam tanggapan API - DnsStatuSDTO: tambahkan tipe field untuk membedakan status TXT dari CNAME
· kamo-internal
Header sticky, alias terbaru, selalu-terlihat panduan DNS Inggris
· SecurityService
Update required aliases — add app, capcha, docs, sign; remove legacy
· kamo-internal
Selalu tampilkan tombol DNS bagi pemilik, tambahkan arus perubahan domain
· kamo-internal
Pass orgId melalui setup / dns flow untuk cross- org manajemen domain
· SecurityService
Allow cross-org domain management by verifying user ownership
· kamo-internal
Tambah / setup / dns halaman dan domain setup flow ke / network
- Halaman baru / setup / dns dengan dua tahap aliran: masukan domain kemudian DNS verifikasi dengan konfirmasi auto- detik dari polling dan SSL - ManualDnsGuide: Langkah yang mudah dipahami oleh - instruksi DNS langkah untuk semua tingkat keterampilan dengan tombol salinan untuk nama rekaman dan nilai target - AliasStatusTable: status verifikasi asal-alias dengan Diverifikasi / Mending / Error chip dan lencana opsional untuk www - DnsProgressView: indikator fase (DNS SSL SIAP), progressView, timer hitung mundur, Periksa tombol Sekarang, otomatis maju ke keadaan sukses - DomainEntryForm: masukan domain dengan uuw toggle dan mood- bahasa UX - / halaman jaringan: non-aktifkan tombol Enter untuk orgs dengan gubahan yang belum dikonfirmasi domain; tampilkan tombol Domain Setup bagi pemilik membutuhkan konfigurasi
· SecurityService
Add /setup/dns backend — one-domain enforcement, SSL probe, new aliases
- Enforce one custom domain per org in POST /api/security/domains - Add capcha, docs, sign to standard aliases; remove legacy aliases - Update verify-dns to track required vs optional CNAMEs, auto-trigger HTTP seeds to Traefik logs when all required CNAMEs verified, and HTTPS-probe for SSL confirmation (marks sslConfirmed on parent domain) - Add SslProbeService with triggerHttpSeed() and probeHttps() methods - Expose domainSetupComplete per org in GET /api/security/org/my-networks
· InitializerService
Add ssl_confirmed and ssl_confirmed_at columns to org_domains
Adds idempotent ALTER TABLE statements to provision the two new columns needed for DNS setup SSL confirmation tracking.
· kamo-shared-library
Tambahkan ssslConfirmed / sslConfirmateAt field ke Domain Organin dan DomainDTO
Tambahkan dua bidang baru ke Entitas Organis dan DomainDTO untuk melacak SSL status konfirmasi sertifikat setelah masalah layanan auto-cert sertifikat. Juga tambahkan pembantu setSslloadfied () ke DomainService.
· kamo-marketing
Hapus sensor changelog sisi klien - sekarang ditangani oleh backend
Pengganti kata dan redaction rahasia pindah ke ChangelogSanitisasi Layanan (SecurityService) jadi sanitasi terjadi sebelum penyimpanan DB dan terjemahan. The frontend tidak lagi perlu menyentuh teks.
· SecurityService
Move changelog word replacement to backend before translation
Text replacements (Docs→Docs, Meet→Meet, etc.) and secret name redaction (K8s secret names→***) were previously applied client-side in ChangelogClient.tsx, meaning the raw sensitive terms were stored in the database and transmitted to the translation service — so translated records could expose internal names in other languages. Both lists are now applied in ChangelogSanitizationService before the commit is persisted. replaceText() covers titles; sanitize() covers descriptions (strip-patterns run first, then replaceText). The frontend no longer needs to do any censoring.
· kamo-internal
Replace storage add-on toggle with quantity slider
Additional Storage is usage-based ($4/25GB block), not a simple on/off add-on. Replaced the toggle switch with a slider (0-1000GB in 25GB steps) plus a numeric input field. Cost breakdown now shows storage as a separate line item. PlanSelection includes additionalStorageGB for the backend to set up metered billing accordingly.
· kamo-internal
Kawat Manajer BillingManager dan Manajer Hubungan ke backends nyata
Manajer BillingManager (tab penagihan akun): - Displaced 100% local- negara mengejek dengan Stripe nyata - didukung metode pembayaran manajemen melalui bilingApi - Loads metode pembayaran dari GET / api / billing / payment-metode di mount - Tambahkan arus metode pembayaran menggunakan createSetupIntent ÁStripeprovider + Metode Pembayaran (identik flow ke PlansBillingTab) - Set default via * * * * * * * * * * * * * * * * * * dengan optimis bintang ikon dan in- penerbangan spinner per baris - Hapus melalui billingApi.deletePayHardMethod dengan Dialog Konfirmasi; penghapusan kartu baku diblokir dengan tooltip - Ikon merek kartu (Visa / Mastercard / Amex / Discover) yang ditampilkan dari keberadaan aset SVG; ikon CreditCard generik fallback untuk merek tidak dikenal - Skeleton loading, per- bagian error dengan retry, snackbar feedback Manajer hubungan (tab hubungan akun): - Mengganti negara lokal kosong dengan GET / API / Security / org / my-network - Rahasia jaringan: Pemilik = Jaringan Induk salah (orgs pengguna milik), Pemilik = benar Anak Networks (orgs pengelola pengguna) - Tampilkan inisial Avatar, judul org, tipe / domain meta, dan role chip - Sambungan aksi profil ke domain org ketika tersedia - Aksi hak akses dinonaktifkan dengan tooltip (dikelola via org admin) - Summary chip menunjukkan jumlah orangtua / anak hidup - Tambah / hapus secara sengaja baca-saja; info waspada mengarahkan ke Jaringan halaman untuk manajemen hubungan (tidak ada titik akhir CRUD backend)
· KlusterServices
Restore bergamot with working model sources and correct image
- replicas: 1 - Init container (alpine): downloads 4 pairs from data.statmt.org (tarballs for enes/enfr/ende/enpl) and 2 from firefox-translations-models GitHub LFS (individual .gz files for enru/enar) - Image: mozilla/translation-service (proper HTTP server, was WASM library) - Port: 8080 via PORT env var (service defaults to 8000) - Health probes: TCP socket (service has no /health HTTP endpoint) - Remaining 7 locales (pt/it/uk/tr/ro/id/vi) fall through to LibreTranslate
· kamo-internal
Ganti halaman statistik tiruan dengan dasbor langganan langsung KamoCRM
Rebuilt / settings / account? tab = statistik kedalam sebuah wawasan penuh, baca-saja Dasbor. Mengganti semua data dengan panggilan paralel ke Layanan BillingService via klien bilingApi yang ada. Tata letak: - Top 2-col grid: rencana kartu overview (nama rencana, status lencana, jumlah kursi, cycle billing, period, cancel warning, feature list) + Ringkasan tagihan kartu (jumlah tagihan berikutnya, harga unit, tambahan aktif, saldo kredit, pembayaran metode terakhir 4) - Full-width Bagian Penggunaan: per-meter progress cards (email dikirim, email penyimpanan, penyimpanan berkas, dokumen) dengan warna-kode progress bar diturunkan dari batas fitur rencana - hijau / peringatan / error pada batas 70% / 90% - Full-width Invoice History table: faktur nomor, titik, status chip, subtotal / pajak / total, link download PDF; hingga 20 faktur terbaru Data: getRecentSubscription, getVavailablePlans, getPemakaian, getInvoices, getCredititubalance, getPaytment Methods - all via guarse.all Selesai sehingga setiap bagian degrade independen pada kesalahan. MuI Skeleton loaders per bagian ketika mengambil.
· kamo-internal
Lengkap Pilih alur Rencana end-to-end
- Wire PlanKalculator ke dialog PlansBillingTab (menggantikan placeholder) - Ambil rencana yang tersedia dari penagihan API pada halaman beban - Menangani pengiriman rencana: membuat langganan baru atau pemutakhiran yang ada - Perlu metode pembayaran sebelum subscribing (pengalihan untuk menambah pembayaran) - Tampilkan keadaan pemuatan dengan pesan pemrosesan Stripe selama mengirimkan - Pass konteks rencana (saat ini rencana, siklus, kursi, addon) ke kalkulator - Perbaiki Metode Pembayaran untuk menerima rahasia klien sebagai properti bukannya mengakses Unsur Stripe
· kamo-internal
Sembunyikan Plan & Billing tab untuk root KamoCRM org
Pemilik KamoCRM org memiliki semuanya diaktifkan tanpa biaya - mereka harus tidak pernah melihat tagihan. Tab kini hanya diberikan secara kondisional untuk organisasi anak (dimana organisasi .Hasent adalah benar). Anak Pemilik org melihat tagihan org mereka; anggota melihat penagihan berdasarkan Delegasi config.
· SecurityService
Tambahkan Layanan BillingService ke projek-proyek transelog
· kamo-internal
Integrasikan sistem stripe billing di seluruh platform
- Klien baru billingApol.ts dengan tipe TypeScript lengkap untuk semua penagihan titik akhir (langganan, metode pembayaran, faktur, kredit, penggunaan, config, admin) - New Stripe Elemen komponen: StripeProvider, Payment MethoodForm, PlanKalkulator dengan kerusakan biaya penuh, diskon volume, dan bundles - Tulis ulang PlansBillingTab dengan integrasi Stripe nyata: manajemen rencana, Metode pembayaran elemen stripe, faktur sejarah, saldo kredit, penggunaan metering, billing delegasi config, anggota tim billing status - Update FeaturesManager with plan-based gating: lock icon and upgrade CTA untuk fitur tidak termasuk dalam rencana berlangganan saat ini - Hapus tab penagihan dari pengaturan akun (pindah ke halaman anggota) - Pasang @ stripe / stripe-js dan @ stripe / reakt- stripe-js
· BillingService
Initial BillingService — Stripe-integrated billing for KamoCRM
Complete Spring Boot service for managing KamoCRM billing via Stripe: - Stripe Customer, Subscription, PaymentMethod, Invoice lifecycle management - Credit system with ledger auditing (Stripe Customer Balance) - Usage metering for KamoMail and DocManager (daily cron sync to Stripe) - Billing delegation (ORG_PAYS_ALL / MEMBERS_PAY_OWN modes) - Configurable delinquency enforcement (SOFT_LOCK, HARD_LOCK, OWNER_FALLBACK) - Stripe webhook processing for real-time state sync - Stripe Price/Product auto-creation from subscription catalog - Full REST API: customers, subscriptions, payment methods, invoices, credits, usage, config, admin endpoints - K8s deployment manifests + Forgejo CI/CD pipeline - Internal-only service (no IngressRoute), accessed via APIService gateway
· APIService
Add Stripe webhook forwarding and billing API gateway routing
- POST /api/billing/webhooks/stripe receives Stripe webhooks and forwards to BillingService with Stripe-Signature header preserved - /api/billing/** gateway routes proxy authenticated billing API calls to BillingService through the existing forward() mechanism - Adds billing.service.url and stripe.webhook.secret configuration - Adds stripe-webhook-secret k8s secret reference
· InitializerService
Add billing config initialization to KamoCRMPricingLoader
Seeds a default BillingConfig (ORG_PAYS_ALL, SOFT_LOCK, 7-day grace) for the KamoCRM organization during pricing loader startup. Supports the new Stripe billing system.
· kamo-shared-library
Tambahkan entitas penagihan dan repositori untuk integrasi Stripe
Paket baru dengan 9 entitas (Pelanggan BillingSubscription, Pembayaran Billing Metode, BillingInvoice, BillingCredit, BillingCredit Ledger, BillingConfig, BillingUgageSnapshot, BillingStripePriceMapping) dan 9 sesuai Repositor JPA. Entinitas ini cermin negara Stripe lokal untuk Sistem penagihan KamoCRM baru.
· kamo-marketing
Tambah / kalkulator dan / pricing / menawarkan ke semua sitemaps; i18n HTML saitmap label
- app / sitemap.ts: tambahkan / pricing / offer dan / kalkulator masukan dengan lokal alternatif - app / api / sitemap / route.ts: tambahkan nilai Kalkulator dan masukan spesial - SitemapClient.tsx: pindahkan statistik di dalam komponen dengan t () untuk semua label / deskripsi; tambah link Kalkulator di bawah bagian Produk - pesan / en.json: tambahkan 38 kunci taut saitmap baru
· kamo-marketing
Ekstrak total string tubuh yang tersisa dari produk, blog, harga, demo, kontak, kalkulator
· kamo-marketing
Mengekstrak penuh string tubuh dari fitur, sekitar, rumah

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