Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · kamo-internal

    Mostra il record di proprietà del dominio TXT in configurazione DNS UI

    - DomainData/DnsStatus: aggiungere verificaToken, proprietàVerified, campi di tipo - AliasStatusTable: mostrare TxtOwnershipCard sopra la tabella CNAME con il pulsante di copia, indigo in attesa / verde ha verificato lo styling; filtri TXT da CNAME conte verificato - ManualDnsGuide: accetta la verifica Token prop; mostra TXT record come Passo 3a prima dei record CNAME (Step 3b) con pulsante di copia in linea - DnsProgressView: passare domain.verificationToken a 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

    Aggiungere la verifica della proprietà del dominio tramite record DNS TXT

    - OrgDomain: aggiungere la verificaToken e la proprietà Campi obbligatori - DomainService: aggiungi setVerificationToken() e setOwnershipVerified() - DomainDTO: esporre la verificaToken e la proprietàVerified in risposte API - DnsStatusDTO: aggiungere campo di tipo per distinguere TXT dagli stati CNAME

  5. · kamo-internal

    Intestazione appiccicosa, alias aggiornato, guida DNS semplice-inglese sempre visibile

  6. · SecurityService

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

  7. · kamo-internal

    Mostra sempre il pulsante DNS per i proprietari, aggiungi il flusso di dominio di cambiamento

  8. · kamo-internal

    Passare orgId attraverso il flusso setup/dns per la gestione del dominio cross-org

  9. · SecurityService

    Allow cross-org domain management by verifying user ownership

  10. · kamo-internal

    Aggiungi /setup/dns pagina e dominio flusso di configurazione a /network

    - Nuova pagina /setup/dns con flusso bifase: ingresso dominio poi DNS verifica con conferma automatica 60 secondi e SSL - ManualDnsGuide: istruzioni DNS pieghevole passo per passo per tutti livelli di abilità con pulsanti di copia per i nomi di record e il valore di destinazione - AliasStatusTable: live per-alias CNAME stato di verifica con Chip verificati / in attesa / errore e badge opzionale per www - DnsProgressView: indicatore di fase (DNS → SSL → Ready), barra di avanzamento, timer conto alla rovescia, Controlla ora pulsante, auto-avances allo stato di successo - DomainEntryForm: input di dominio con www toggle e UX in lingua semplice - /network page: disabilitare il pulsante Invio per org con personalizzato non confermato dominio; mostrare Impostazione pulsante di dominio per i proprietari che necessitano di configurazione

  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

    Aggiungi sslConfirmed/sslConfirmedAt campi a OrgDomain e DomainDTO

    Aggiunge due nuovi campi a OrgDomain entità e DomainDTO per monitorare SSL stato di conferma del certificato dopo i problemi di servizio di auto-cert un certificato. Aggiunge anche setSslConfirmed() helper a DomainService.

  14. · kamo-marketing

    Rimuovere la censura del changelog lato client — ora gestito da backend

    Sostituzione di Word e reazione segreta spostata a ChangelogSanitization Servizio (SecurityService) così la sanificazione avviene prima di DB storage e traduzione. Il frontend non ha più bisogno di toccare il testo.

  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

    Sostituisci l'opzione aggiuntivo di archiviazione con il cursore di quantità

    Storage supplementare è basato sull'utilizzo ($4/25GB blocco), non un semplice on/off Add-on. Sostituito l'interruttore di attivazione con un cursore (0-1000GB in 25GB step) più un campo di input numerico. La ripartizione dei costi ora mostra lo stoccaggio come un elemento di linea separato. PlanSelection include ulterioriStorageGB per il backend per impostare la fatturazione misurata di conseguenza.

  17. · kamo-internal

    Wire BillingManager e RelationshipManager per veri backend

    BillingManager (account fatturazione scheda): - Sostituito 100% locale-stato mock con vero metodo di pagamento Stripe-backed gestione tramite fatturazioneApi - Carico metodi di pagamento da GET /api/billing/pagamento-metodo sul montaggio - Aggiungere i metodi di pagamento flusso utilizza creareSetupIntent → StripeProvider + PaymentMethodForm → confermareCardSetup → collegarePaymentMethod (identico flusso a PlansBillingTab) - Impostare i valori predefiniti tramite ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ icona stella e spinner in volo per fila - Elimina tramite fatturazioneApi.deletePaymentMethod con confermaDialog; l'eliminazione della carta di default è bloccata con tooltip - Icone di marca della carta (Visa/Mastercard/Amex/Discover) mostrate dall'esistente Attività SVG; Rimborso icona di CreditCard generico per marchi sconosciuti - Caricamento scheletrico, errore per sezione con riprovazione, feedback snackbar RelationshipManager (tabella relazioni account): - Sostituito stato locale vuoto con GET /api/security/org/my-networks - Classifica reti: isOwner=false → Parent Networks (orgs l'utente appartiene a), èOwner=true → Child Networks (orgs l'utente gestisce) - Mostra le iniziali di Avatar, titolo di org, tipo / meta del dominio e chip di ruolo - Link di azione del profilo a dominio org quando disponibile - Azione per i diritti di accesso disabilitata con tooltip (gestito tramite org admin) - I chip di sintesi mostrano i conti dei genitori/bambini vivi - Add/remove è intenzionalmente in sola lettura; info alert indirizza alla rete pagina per la gestione delle relazioni (nessun backend CRUD endpoint esiste)

  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

    Sostituisci la pagina delle statistiche del mock con il cruscotto Live KamoCRM

    Ricostruito /settings/account?tab=stats in una visione completamente cablata, di sola lettura cruscotto. Sostituisce tutti i dati del mock con le chiamate parallele a BillingService via il client di fatturazione esistenteApi. Layout: - Top 2-col griglia: Plan Panoramica carta (nome del piano, tasso di stato, numero del sedile, ciclo di fatturazione, periodo, avviso di cancellazione, elenco delle caratteristiche) + Riepilogo fatturazione carta (importo netto della fattura, prezzo unitario, add-on attivi, saldo di credito, pagamento metodo ultimo 4) - Larghezza intera Sezione di utilizzo: schede di progresso per metro (email inviate, email stoccaggio, archiviazione file, documenti) con barre di progresso codificate a colori derivate dai limiti delle caratteristiche del piano — verde/avvertimento/error alle soglie del 70%/90% - Tabella di storia della fattura: numero di fattura, periodo, stato chip, subtotal/tax/total, PDF download link; fino a 20 fatture più recenti Dati: getCurrentSubscription, getAvailablePlans, getCurrentUsage, getInvoices, getCreditBalance, ottenerePaymentMethods — tutti via Promise.all Settled così ogni sezione si degrada indipendentemente sull'errore. Caricatori MUI Skeleton per sezione durante la cattura.

  20. · kamo-internal

    Scegli un Piano di flusso end-to-end

    - Wire PlanCalculator in PlansBillingTab dialogo (sostituisce segnaposto) - Ottieni i piani disponibili dalla fatturazione API sul carico di pagina - Presentazione del piano maniglia: crea nuovi abbonamenti o aggiornamenti esistenti - Richiedere il metodo di pagamento prima della sottoscrizione (reindirizzi per aggiungere il pagamento) - Mostra lo stato di caricamento con il messaggio di elaborazione Stripe durante l'invio - contesto del piano di passaggio (piano corrente, ciclo, sedili, addons) alla calcolatrice - Fix PaymentMethodForm per accettare clientSecret come prop invece di accesso a Stripe Elements interni

  21. · kamo-internal

    Nascondi Piani & Billing scheda per radice KamoCRM org

    I proprietari di org di KamoCRM hanno tutto abilitato senza alcun costo — dovrebbero Non vedi mai la scheda di fatturazione. La scheda è ora condizionatamente resa solo per le organizzazioni di bambini (dove l'organizzazione.hasParent è vero). Bambino i proprietari di org vedono la fatturazione del loro org; i membri vedono fatturazione in base alla delegazione config.

  22. · SecurityService

    Aggiungere BillingService ai progetti pubblici di changelog

  23. · kamo-internal

    Integrare il sistema di fatturazione Stripe attraverso la piattaforma

    - Nuovo client BillingApi.ts con tipi di script completi per tutte le fatture endpoint (abbonamenti, metodi di pagamento, fatture, crediti, utilizzo, config, admin) - Nuovi componenti Stripe Elements: StripeProvider, PaymentMethodForm, PlanCalculator con ripartizione completa dei costi, sconti del volume e pacchetti - Rewrite PlansBillingTab con la reale integrazione Stripe: gestione del piano, Metodi di pagamento Stripe Elements, cronologia delle fatture, saldo di credito, misurazione dell'utilizzo, config della delegazione di fatturazione, stato di fatturazione del membro del team - Aggiornamento CaratteristicheManager con gating pianificato: icone di blocco e aggiornamento CTA per funzioni non incluse nel piano di abbonamento corrente - Rimuovere la scheda di fatturazione dalle impostazioni dell'account (spostato alla pagina del membro) - Installare @stripe/stripe-js e @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

    Aggiungi entità di fatturazione e repository per l'integrazione di Stripe

    Nuovo pacchetto con 9 entità (BillingCustomer, BillingSubscription, BillingPayment Metodo, BillingInvoice, BillingCredit, BillingCreditLedger, BillingConfig, BillingUsageSnapshot, BillingStripePriceMapping) e 9 corrispondenti Repositori JPA. Queste entità rispecchiano lo stato Stripe localmente per nuovo sistema di fatturazione KamoCRM.

  28. · kamo-marketing

    Aggiungi /calculator e /pricing/offer a tutte le mappe del sito; i18n HTML sitemap etichette

    - app/sitemap.ts: aggiungere /pricing/offer e /calculator con alternanze locali - app/api/sitemap/route.ts: aggiungere il calcolatore di prezzi e le voci dell'offerta speciale - SitemapClient.tsx: spostare staticSezioni componenti interni con t() per tutte le etichette/descrizioni; aggiungere il link Calcolatore nella sezione Prodotto - messaggi/en.json: aggiungere 38 nuove mappe del sito link etichetta/descrizione chiavi

  29. · kamo-marketing

    Estrarre completamente le corde del corpo rimanenti da prodotto, blog, prezzi, demo, contatto, calcolatore

  30. · kamo-marketing

    Estrarre completamente le corde del corpo da caratteristiche, circa, casa

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta