Add geo-database-url to analytics-secret for CockroachDB geolite lookup
Kamo Analytics uses this URL to look up visitor IP→country/region/city from the **************** tables. Uses kamo user with password auth and sslmode=require (...
Add kamo-nowww redirect middleware (apex/unknown→www, ACME pass-through, 308)
Add public known-aliases endpoint for kamo-nowww build-time bake-in
Add subtle KamoCRM backlink to welcome and in-meeting UI
Mirrors the PoweredByKamo pattern shipped in kamo-login and kamo-register to the KamoMeet (Meet fork) web surfaces. Each client's KamoMeet deployment serves on ...
Add subtle KamoCRM backlink to registration pages
Mirrors the PoweredByKamo badge shipped in kamo-login. Since kamo-register is served on each white-label client's domain, this creates a stable dofollow backlin...
Add subtle KamoCRM backlink to auth pages
Adds a small "Powered by KamoCRM" style footer badge to the three user- facing auth surfaces (login, recover, validate). Since kamo-login is the shared white-la...
Add /alternatives hub + 9 competitor comparison pages for SEO
Adds a full competitor comparison suite targeting "X alternative" search queries. Each page includes deep narrative (2500+ words), 20-25 row feature matrix, pri...
Use CockroachDB geolite tables for IP geo lookup instead of .mmdb file
Replace the bundled MaxMind .mmdb file with a query to the geolite_blocks and geolite_locations tables in CockroachDB, which are maintained and updated weekly b...
Add iframe-compatible middleware chain for kamo-analytics
Add security-headers-allow-iframe (no X-Frame-Options) and kamo-middlewares-allow-iframe chain so analytics can be embedded in iframes from internal.kamocrm.com...
Remove logout, move nav to right, tie session to kamo-internal ***
Remove logout option from UserButton since auth is managed by kamo-internal. Move SideNav from left to right side. Store the *** ID in analytics auth data durin...
Replace login with OTK auth, force light mode, hide theme toggle
Remove direct login — authentication now handled exclusively via one-time keys from kamo-internal. New /api/auth/otk route validates OTK against shared Redis, s...
Add analytics icon to navtop with OTK-authenticated iframe
Adds a BarChart icon to NavTop gated to Team Members of the top-level org (no parent). Clicking navigates to /analytics which generates an OTK and loads analyti...
Add analytics → analytics text replacement in changelog sanitization
Initial Kamo Analytics — forked from analytics with Kamo branding
- Replace analytics logo SVG with Kamo logo (theme.kamocrm.com) - Replace analytics favicons with Kamo favicon - Replace "analytics" heading/nav text with "Kamo...
Move kamo-analytics to own repo, keep only postgres in KlusterServices
- Remove analytics deployment, service, and nginx-configmap (now owned by kamo-analytics project with its own CI/CD pipeline) - Remove analytics-ingressroute ...
Redact tokens ≥32 chars in changelog sanitization
Any word (run of non-whitespace) that is 32 characters or longer is replaced with **************** before titles and descriptions are sent to the translation se...
Replace separate call/text icons in navtop with unified VoipButton dropdown
Rebrand analytics analytics UI with Kamo logo, title, and favicon
Adds nginx sidecar proxy that injects CSS to replace the analytics logo with KamoCRM logo, changes the page title to "Kamo Analytics", and overrides the favicon...
Replace Google Analytics with analytics, add event tracking across site
- Remove Google Analytics (gtag.js) from layout - Add analyticsAnalytics component: consent-aware script loading via cookie preferences, data-do-not-track, do...
Add analytics analytics deployment and analytics.kamocrm.com routing
- New analytics/ directory: PostgreSQL StatefulSet + analytics deployment, services, and secret template - **************** routes analytics.kamocrm.com → analy...
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...
Je, unaona nini kuhusu usafiri?
Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.