உள்ளடக்கத்திற்குச் செல்லவும்
KAMOUniverse

மாற்று பதிவேடு

என்ன புதிது.

அது கப்பல்கள் போல், தளத்தில் ஒவ்வொரு மேம்பாடு.

  1. · kamo-internal

    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, indigo pending / green verified styling; filters TXT from CNAME verified count - ManualDnsGuide: accepts verificationToken prop; shows TXT record as Step 3a before CNAME records (Step 3b) with inline copy button - DnsProgressView: pass domain.verificationToken to ManualDnsGuide

  2. · 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"

  3. · InitializerService

    Add verification_token and ownership_verified columns to org_domains

  4. · kamo-shared-library

    Add domain ownership verification via DNS TXT record

    - OrgDomain: add verificationToken and ownershipVerified fields - DomainService: add setVerificationToken() and setOwnershipVerified() - DomainDTO: expose verificationToken and ownershipVerified in API responses - DnsStatusDTO: add type field to distinguish TXT from CNAME statuses

  5. · kamo-internal

    Sticky header, updated aliases, always-visible plain-English DNS guide

  6. · SecurityService

    Update required aliases — add app, capcha, docs, sign; remove legacy

  7. · kamo-internal

    Always show DNS button for owners, add change domain flow

  8. · kamo-internal

    Pass orgId through setup/dns flow for cross-org domain management

  9. · SecurityService

    Allow cross-org domain management by verifying user ownership

  10. · kamo-internal

    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 step-by-step DNS instructions for all skill levels with copy buttons for record names and target value - AliasStatusTable: live per-alias CNAME verification status with Verified / Pending / Error chips and optional badge for www - DnsProgressView: phase indicator (DNS → SSL → Ready), progress bar, countdown timer, Check Now button, auto-advances to success state - DomainEntryForm: domain input with www toggle and plain-language UX - /network page: disable Enter button for orgs with unconfirmed custom domain; show Setup Domain button for owners needing configuration

  11. · 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

  12. · 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.

  13. · kamo-shared-library

    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 setSslConfirmed() helper to DomainService.

  14. · kamo-marketing

    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 frontend no longer needs to touch the text.

  15. · 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.

  16. · 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.

  17. · kamo-internal

    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 methods from GET /api/billing/payment-methods on mount - Add payment method flow uses createSetupIntent → StripeProvider + PaymentMethodForm → confirmCardSetup → attachPaymentMethod (identical flow to PlansBillingTab) - Set default via **************** with optimistic star icon and in-flight spinner per row - Delete via billingApi.deletePaymentMethod with ConfirmationDialog; default card delete is blocked with tooltip - Card brand icons (Visa/Mastercard/Amex/Discover) shown from existing SVG assets; generic CreditCard icon fallback for unknown brands - Skeleton loading, per-section error with retry, snackbar feedback RelationshipManager (account relationships tab): - Replaced empty local state with GET /api/security/org/my-networks - Classifies networks: isOwner=false → Parent Networks (orgs the user belongs to), isOwner=true → Child Networks (orgs the user manages) - Shows Avatar initials, org title, type/domain meta, and role chip - Profile action links to org domain when available - Access rights action disabled with tooltip (managed via org admin) - Summary chips show live parent/child counts - Add/remove is intentionally read-only; info alert directs to Network page for relationship management (no backend CRUD endpoint exists)

  18. · 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

  19. · kamo-internal

    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 existing billingApi client. Layout: - Top 2-col grid: Plan Overview card (plan name, status badge, seat count, billing cycle, period, cancel warning, feature list) + Billing Summary card (next bill amount, unit price, active add-ons, credit balance, payment method last 4) - Full-width Usage section: per-meter progress cards (emails sent, email storage, file storage, documents) with colour-coded progress bars derived from plan feature limits — green/warning/error at 70%/90% thresholds - Full-width Invoice History table: invoice number, period, status chip, subtotal/tax/total, PDF download link; up to 20 most recent invoices Data: getCurrentSubscription, getAvailablePlans, getCurrentUsage, getInvoices, getCreditBalance, getPaymentMethods — all via Promise.allSettled so each section degrades independently on error. MUI Skeleton loaders per section while fetching.

  20. · kamo-internal

    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 new subscription or updates existing - Require payment method before subscribing (redirects to add payment) - Show loading state with Stripe processing message during submit - Pass plan context (current plan, cycle, seats, addons) to calculator - Fix PaymentMethodForm to accept clientSecret as prop instead of accessing Stripe Elements internals

  21. · kamo-internal

    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 organizations (where organization.hasParent is true). Child org owners see their org's billing; members see billing based on the delegation config.

  22. · SecurityService

    Add BillingService to changelog public-projects

  23. · kamo-internal

    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) - New Stripe Elements components: StripeProvider, PaymentMethodForm, PlanCalculator with full cost breakdown, volume discounts, and bundles - Rewrite PlansBillingTab with real Stripe integration: plan management, Stripe Elements payment methods, invoice history, credit balance, usage metering, billing delegation config, team member billing status - Update FeaturesManager with plan-based gating: lock icons and upgrade CTAs for features not included in current subscription plan - Remove billing tab from account settings (moved to member page) - Install @stripe/stripe-js and @stripe/react-stripe-js

  24. · 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

  25. · 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

  26. · 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.

  27. · kamo-shared-library

    Add billing entities and repositories for Stripe integration

    New package **************** with 9 entities (BillingCustomer, BillingSubscription, BillingPaymentMethod, BillingInvoice, BillingCredit, BillingCreditLedger, BillingConfig, BillingUsageSnapshot, BillingStripePriceMapping) and 9 corresponding JPA repositories. These entities mirror Stripe state locally for the new KamoCRM billing system.

  28. · kamo-marketing

    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 - SitemapClient.tsx: move staticSections inside component with t() for all labels/descriptions; add Calculator link under Product section - messages/en.json: add 38 new sitemap link label/description keys

  29. · kamo-marketing

    Fully extract remaining body strings from product, blog, pricing, demo, contact, calculator

  30. · kamo-marketing

    Fully extract body strings from features, about, home

உங்கள் உலகம் காத்திருக்கிறது.

நிமிடங்களில் இலவசமாகத் தொடங்கவும். நீங்கள் தயாராக இருக்கும் போது பொருட்களை சேர்க்கவும் - எந்த மாற்றமும் இல்லை, புதிய உள்நுழைவுகள் இல்லை.

எப்பொழுதும் இலவசம் — கடன் அட்டை தேவையில்லை