Add legal fine print to footer across all locales
Adds protective legal disclaimers to the bottom of every page covering platform liability, AI/eSignature disclaimers, translation authority, terms agreement, an...
Integrate Google Analytics (G-W9K0Z7FYRV) via Next.js Script component
Show TXT domain ownership record in DNS setup UI
- DomainData/DnsStatus: add verificationToken, ownershipVerified, type fields - AliasStatusTable: show TxtOwnershipCard above CNAME table with copy button, in...
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> - T...
Add verification_token and ownership_verified columns to org_domains
Add domain ownership verification via DNS TXT record
- OrgDomain: add verificationToken and ownershipVerified fields - DomainService: add setVerificationToken() and setOwnershipVerified() - DomainDTO: expose verif...
Sticky header, updated aliases, always-visible plain-English DNS guide
Update required aliases — add app, capcha, docs, sign; remove legacy
Add /setup/dns page and domain setup flow to /network
- New /setup/dns page with two-phase flow: domain entry then DNS verification with 60-second auto-polling and SSL confirmation - ManualDnsGuide: collapsible s...
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 tra...
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.
Add sslConfirmed/sslConfirmedAt fields to OrgDomain and DomainDTO
Adds two new fields to OrgDomain entity and DomainDTO to track SSL certificate confirmation status after the auto-cert service issues a certificate. Also adds s...
Remove client-side changelog censoring — now handled by backend
Word replacement and secret redaction moved to ChangelogSanitizationService (SecurityService) so sanitization happens before DB storage and translation. The fro...
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, mean...
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 ...
Wire BillingManager and RelationshipManager to real backends
BillingManager (account billing tab): - Replaced 100% local-state mock with real Stripe-backed payment method management via billingApi - Loads payment method...
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 GitH...
Replace mock stats page with live KamoCRM subscription dashboard
Rebuilt /settings/account?tab=stats into a fully wired, read-only insight dashboard. Replaces all mock data with parallel calls to BillingService via the existi...
Complete Choose a Plan flow end-to-end
- Wire PlanCalculator into PlansBillingTab dialog (replaces placeholder) - Fetch available plans from billing API on page load - Handle plan submission: creates...
Hide Plans & Billing tab for root KamoCRM org
KamoCRM org owners have everything enabled at no cost — they should never see the billing tab. The tab is now conditionally rendered only for child organization...
Integrate Stripe billing system across the platform
- New billingApi.ts client with full TypeScript types for all billing endpoints (subscriptions, payment methods, invoices, credits, usage, config, admin) - ...
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 sys...
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 r...
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...
Add billing entities and repositories for Stripe integration
New package **************** with 9 entities (BillingCustomer, BillingSubscription, BillingPaymentMethod, BillingInvoice, BillingCredit, BillingCreditLedger, Bi...
Add /calculator and /pricing/offer to all sitemaps; i18n HTML sitemap labels
- app/sitemap.ts: add /pricing/offer and /calculator entries with locale alternates - app/api/sitemap/route.ts: add Pricing Calculator and Special Offer entries...
Fully extract remaining body strings from product, blog, pricing, demo, contact, calculator
Fully extract body strings from security, privacy, terms, gdpr, cookies, legal
Fully extract body strings from careers, company, community, resources, roadmap
Wire locale through dynamic fetches and add hash-based translation skip
- Forward locale param to SecurityService changelog API (page + route + client) - Forward locale param to KBService article/tree fetches (section + slug pages) ...
Wire useTranslations into all client components
Replaces all hardcoded strings in every (pages)/*Client.tsx with t("key") calls using next-intl useTranslations. Covers 25 files: security, contact, demo, prici...
Forward locale param to SecurityService on public subscription catalog endpoint
Add translation tables for commit logs, KB articles, and subscription plans
Add async translation for changelog and subscription plans, add locale-aware public APIs
Add async translation for KB articles, add locale-aware public article APIs
Expand messages/en.json with full page body copy coverage
Grew the translation catalogue from 172 keys (~12 namespaces) to 300+ keys across 26 namespaces, extracting every user-visible hardcoded English string from all...
Add translation entities and repositories for CommitLog, KbArticle, SubscriptionPlan
- CommitLogTranslation + CommitLogTranslationId (PK: commit_log_id, locale) - KbArticleTranslation + KbArticleTranslationId (PK: article_uid, locale) - Subscrip...
Add tooltips and fix scroll behaviour on language selector
- Add englishName to LOCALE_CONFIG for all 22 locales - Add title={englishName} to each language button (desktop + mobile) so hovering shows the English name ...
Replace offer badge with language selector in nav
Add a 2-column flag+name dropdown to the header navigation allowing users to switch between all 22 supported locales. Locale switching uses next-intl router.rep...
Restore removed languages with translationSupported field
Add translationSupported boolean to LanguageType enum. Restore URDU, MARATHI, TELUGU, and GUJARATI (translationSupported=false). All 22 previously supported lan...
Implement next-intl i18n with 22 locales, translate script, and [locale] routing
Initial TranslateService — Bergamot + LibreTranslate abstraction layer
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
