Журнал змін
Что нового.
Все усовершенствования платформы, как только она будет запущена.
· kamo-internal
Показати TXT запис володіння доменом в налаштуваннях DNS
- DomainData/DnsStatus: додано перевіркуToken, власністьПеревірено, типи полів - AliasStatusTable: показати TxtOwnershipCard над CNAME таблиці з копіюванням кнопки, indigo pending / зелений перевірений укладку; фільтри TXT від CNAME перевірені кількість - КерівництвоDnsGuide: приймає перевірку Token проп; показує запис TXT як крок 3a перед записами CNAME (Step 3b) з вбудованою кнопкою копіювання - DnsProgressView: прохід домен.verificationToken to 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
Додавання перевірки володіння доменом через DNS TXT запис
- OrgDomain: додати перевіркуТокен і власністьВерифіковані поля - доменне обслуговування: add setVerificationToken() і setOwnershipVerified() - DomainDTO: .Verified in API відповіді - DnsStatusDTO: додати поле типу, щоб відрізняти TXT від статусів CNAME
· kamo-internal
Sticky header, оновлений aliases, завжди-видимий простий керівництво DNS
· SecurityService
Update required aliases — add app, capcha, docs, sign; remove legacy
· kamo-internal
Завжди показати кнопку DNS для власників, додати зміни потоку домену
· kamo-internal
Пройдіть orgId через налаштування/dns потоку для керування доменами
· SecurityService
Allow cross-org domain management by verifying user ownership
· kamo-internal
Додати /setup/dns сторінку та потік налаштування домену в /network
- Нова сторінка /setup/dns з двофазним потоком: запис домену потім DNS Перевірка з підтвердженням 60-секундного автоматичного полірування та SSL - ManualDnsGuide: покрокова інструкція DNS для всіх рівні навички з копіюванням кнопок для імен записів та цільового значення - AliasStatusTable: статус перевірки CNAME з Перевірені / Закінчення / Помилка чіпсів та додаткова значка для www - DnsProgressView: Індикатор фази (DNS → SSL → Ready), бар прогресу, відлік таймера, перевірте зараз кнопка, автоматично допускається до стану успіху Статус на сервери - /network page: відключити кнопку Enter для orgs з непідтвердженим на замовлення домен; Показати кнопку Налаштування домену для власників
· 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
Додати SslConfirmed/sslConfirmedAt поля до OrgDomain і DomainDTO
Додайте два нові поля для OrgDomain та DomainDTO для відстеження SSL Статус на сервери сертифікат. Також додає setSsslConfirmed() помічник в DomainService.
· kamo-marketing
Видаліть цензуру вашого клієнта — тепер опрацьовуються за допомогою Backend
Заміна Word і секретна переробка перейшла до зміни Послуги (SecurityService) так само, як правило, відбувається перед зберіганням та перекладом DB. Передайтеся більше не потрібно доторкнутися до тексту.
· 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
Замініть накопичувачі, щоб захиститися від кількості слайдерів
Додаткове зберігання на основі використання ($4/25GB блок), не просто на/в Додати Заміна перемикача перемикача з слайдером (0-1000GB в 25GB кроки) плюс нумеричне поле введення. Відключення витрат тепер показує зберігання як окремий елемент лінії. PlanSelection включає додатковіStorageGB для Повернутися до зарахування заблокованих рахунків відповідно.
· kamo-internal
Дріт BillingManager and RelationshipManager to real backends
BillingManager (закладка з рахунку): - Замінено 100% локально-державний мок з реальним способом оплати стриптиз Управління за допомогою billingApi - Способи оплати вантажів від GET /api/billing/pay-methods на кріпленні - Додайте спосіб оплати за допомогою створенняSetupIntent → StripeProvider + ПлатіжнийMethodForm → підтвердженняcardSetup → прикріпитиPaymentMethod (ідентичний) потік до PlansBillingTab) - Набір за замовчуванням через ****** з оптимістичною Зірка іконка і фаршпінер на рядку - Видаліть через вексельне обслуговуванняApi.deletePaymentMethod з підтвердженнямDialog; Видалення картки за замовчуванням заблоковано за допомогою інструментів - іконки марки Карт (Visa/Mastercard/Amex/Discover) відображаються з існуючих SVG активи; загальний значок кредитної картки на невідомі бренди - Скелетонне завантаження, замісна помилка з птицею, зворотним зв'язком Зв'язки: - Замінити порожню місцеву державу з GET /api/security/org/my-networks - Класифікує мережі: isOwner=false → Парент мережі (оргує користувача) належить до), isOwner=true → Дитячі мережі (оргує користувача) - Показує ініціали Аватар, заголовок org, тип/домен мета та рольовий чіп - Профільні посилання на сторінку org при наявності - Вимкніть права доступу, відключені з інструментом - Резюме чіпси показують живі батьківські/чизні підрахунки - Додайте/необхідно прочитайте-тільки, про це повідомляється, що повідомлення направляється до мережі сторінка для управління відносинами (без зворотного зв'язку CRUD Endpoint існує)
· 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
Замініть сторінку квадроциклів з дишбордом онлайн KamoCRM
Rebuilt /settings/account?tab=stats in the повністю провідований, read-only insight панель. Заміняє всі дані з паралельними дзвінками на BillingService через існуючий рахунокАпі клієнт. Місце проведення: - Верхній 2-коловий сітчастий: План Огляд картки (податкове ім'я, значок стану, кількість місць, цикл рахунків, період, скасування попередження, список функцій + Підрахунок Картка (дата векселя, ціна одиниці, активні додаткові послуги, кредитний баланс, платіж метод останнього 4) - Повний розділ використання трафіку: карти прогресу на метрах (посилання відправлені, електронна пошта зберігання, зберігання файлів, документів від планових лімітів — зелена/теплова/error на 70%/90% - Таблиця історії пропуску на повну пропускну здатність: номер рахунку, період, чіп статусу, subtotal/tax/total, посилання для завантаження PDF; до 20 останніх рахунків-фактур Дані: getCurrentSubscription, getAvailablePlans, getCurrentUsage, getInvoices, getCreditBalance, getPaymentMethods — все через Promise.all Шахрайство так кожен розділ деградує самостійно на помилки. Навантажувачі MUI Skeleton секція під час стікання.
· kamo-internal
Повний Виберіть план потоку кінцевий
- Wire PlanCalculator в PlansBillingTab діалогове вікно (замінює місцевласника) - Витрата доступних тарифних планів API на сторінці - Подача плану ручки: створення нової підписки або оновлення існуючих - Вимагати спосіб оплати перед підсобуванням (попередньо додавати платіж) - Показати стан завантаження з повідомленням про обробку стриптизу під час подачі - Передача плану контексту (поточний план, цикл, сидіння, доповнення) на калькулятор - Виправлення PayMethodForm для прийняття клієнтомSecret замість доступ до внутрішніх елементів Stripe
· kamo-internal
Приховати плани та вкладка для кореня KamoCRM org
Власники KamoCRM мають все, що включено без вартості - вони повинні ніколи не дивиться вкладку. Вкладка тепер умовно відображається тільки для дитячих організацій (де організація.hasParent – true). Дитячий org власники бачать вексельні рахунки org; члени дивляться вексельні рахунки на основі Конфігурація делегатів.
· SecurityService
Додати BillingService для зміни публічних проектів
· kamo-internal
Інтеграція системи стриптизу на платформі
- Новий рахунокApi.ts клієнт з повними типами TypeScript для всіх рахунків кінцеві пункти (підписи, способи оплати, рахунки, кредити, використання, config, адміністратор) - Нові компоненти Stripe Elements: StripeProvider, PaymentMethodForm, ПланКалкулятор з повною вартістю розбиття, ємнісних знижок і пакетів - Rewrite PlansBillingTab з реальною інтеграцією Stripe: управління планами, Методи оплати стриптизових елементів, історія рахунків, кредитний баланс, вимірювальні прилади, налаштування делегування векселів, статус учасника - Особливості оновлення CTAs для функцій, які не включені до поточного плану підписки - Видаліть вкладку в обліковий запис з налаштувань облікового запису - Встановити @stripe/stripe-js і @stripe/react-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
Додавання векселів та репозиторій для інтеграції стриптизу
Новий пакет************************************************************************************************************************************************************************************************************************************************************** (BillingCustomer, BillingSubscription, BillingPayment Метод, BillingInvoice, BillingКредит, BillingCreditLedger, BillingConfig, BillingUsageЗнімок, BillingStripePriceMapping) і 9 відповідних Репозиторії JPA. Дані суб'єкти дзеркального стриптизу локально для Нова система закупівель KamoCRM.
· kamo-marketing
Додавання /калькулятор та /прискування/відправлення на всі карти сайту; мітки i18n HTML sitemap
- app/sitemap.ts: add /pricing/offer і /calculator записів з місцевими чергуваннями - додаток/api/sitemap/route.ts: додавати Калькулятор цін та спеціальні записи Пропозиція - SitemapClient.tsx: переміщення статичнихсекцій всередині компонента з т() для всіх міток/описів; додати посилання Калькулятора під розділом продукту - повідомлення/en.json: додати 38 нові теги для посилання на сайт
· kamo-marketing
Повний екстракт, що залишився рядок тіла від продукту, блог, ціноутворення, демо, контакт, калькулятор
· kamo-marketing
Повністю екстракт рядків тіла з особливостей, про, додому

Твій всесвіт чекає.
Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.
Безкоштовно назавжди — не потрібна кредитна карта