Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· kamo-internal
Показать запись владения доменом TXT в UI настройки DNS
- DomainData/DnsStatus: добавьте verificationToken, ownershipVerified, поля типов - AliasStatusTable: показать TxtOwnershipCard над таблицей CNAME с кнопкой копирования, Indigo pending/green verified styling; фильтры TXT от CNAME verified count Руководство DnsGuide: принимает проверку Реквизит токена; показывает запись TXT как шаг 3a до записи CNAME (Шаг 3b) с помощью встроенной кнопки копирования - DnsProgressView: перейдите domain.verificationToken в 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: добавьте верификациюToken и верифицированные поля - DomainService: добавить setVerificationToken() и setOwnershipVerified() DomainDTO: разоблачение верификацииToken и право собственностиПроверено в ответах API DnsStatusDTO: добавить поле типа, чтобы отличить TXT от CNAME
· kamo-internal
Прилипкий заголовок, обновленные псевдонимы, всегда видимое простое английское руководство по DNS
· SecurityService
Update required aliases — add app, capcha, docs, sign; remove legacy
· kamo-internal
Всегда отображайте кнопку DNS для владельцев, добавляйте изменение потока домена
· kamo-internal
Pass orgId through setup/dns flow for cross-org domain management
· SecurityService
Allow cross-org domain management by verifying user ownership
· kamo-internal
Добавить /setup/dns страницу и установить домен поток в /network
Новая страница /setup/dns с двухфазным потоком: ввод домена, затем DNS 60-секундный автополлинг и подтверждение SSL Руководство DnsGuide: разборные пошаговые инструкции DNS для всех уровни навыков с кнопками копирования для имен записей и целевого значения AliasStatusTable: Live per-alias CNAME Verified / Pending / Чипы ошибок и дополнительный значок для www - DnsProgressView: индикатор фазы (DNS → SSL → Ready), планка прогресса; Таймер обратного отсчета, кнопка «Проверить сейчас», автопродвижение до состояния успеха - DomainEntryForm: ввод домена с помощью www toggle и UX на простом языке - /network page: отключить кнопку Enter для оргов с неподтвержденным пользовательским интерфейсом домен; показать кнопку «Настройка домена» для владельцев, которым нужна конфигурация
· 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 fields в OrgDomain и DomainDTO
Добавление двух новых полей в OrgDomain и DomainDTO для отслеживания SSL статус подтверждения сертификата после проблем с авто-сертификатом Сертификат. Также добавляется setSslConfirmed() Helper в DomainService.
· kamo-marketing
Удалить цензуру на стороне клиента — теперь обрабатывается backend
Замена слов и секретная редакция перешли в ChangelogSanitization Сервис (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/25 ГБ блока), а не на простом включении/выключении. дополнение. Заменить переключатель переключения с помощью слайдера (0-1000 ГБ в 25 ГБ) Шаги) плюс числовое поле ввода. Разбивка расходов теперь показывает хранение отдельная строка. PlanSelect включает в себя дополнительный StorageGB бэкэнд, чтобы настроить отмеренный счет соответственно.
· kamo-internal
Проводите BillingManager и RelationshipManager к реальным бэкэндам
BillingManager (закладка счета): - Заменить 100% макет на местном уровне реальным способом оплаты с поддержкой Stripe Управление через BillingApi - Способы оплаты загрузок из GET /api/billing/payment-metods на mount Добавить способ оплаты потока использует createSetupIntent → StripeProvider + PaymentMethodForm → подтвердитьCardSetup → прикрепитьPaymentMethod (идентичный) Скачать PlansBillingTab Установите дефолт через ******************* с оптимизмом звезда икона и в полете спиннер за ряд - Удалить через billingApi.deletePaymentMethod с помощью ConfirmationDialog; Удаление карты по умолчанию блокируется с помощью инструмента Иконки карточных брендов (Visa/Mastercard/Amex/Discover) Активы SVG; общий резерв иконок CreditCard для неизвестных брендов - Загрузка скелета, погрешность сечения с повторным использованием, обратная связь с закусочной Менеджер по взаимодействию (таблица по взаимодействию с аккаунтом): Заменить пустое локальное состояние на GET/api/security/org/my-networks Классифицирует сети: isOwner=false → Parent Networks (orgs the user) принадлежит), isOwner=true → Child Networks (orgs the user manages) - Показывает инициалы Avatar, название организации, метатип / домен и ролевой чип Ссылки на действия профиля в домене org, когда они доступны - Действие по правам доступа отключено с помощью инструмента (управляется через администратора организации) - Сводные чипы показывают количество живых родителей / детей Добавление/удаление намеренно только для чтения; оповещение о информации направляется в Сеть Страница для управления отношениями (нет бэкэнд-конечной точки CRUD)
· 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
Перестроенный /settings /account?tab = stats в полностью проводной, только для чтения прозрение приборная панель. Замените все поддельные данные параллельными вызовами в BillingService Существующий клиент BillingApi Укладка: - Верхняя сетка 2 градуса: карта обзора плана (название плана, значок статуса, количество мест, цикл выставления счетов, период, предупреждение об отмене, список функций Биллинг Резюме карта (сумма следующего счета, цена единицы, активные дополнения, кредитный баланс, оплата) Последний способ 4 - Полноразмерный раздел использования: карты прогресса на метр (отправленные электронные письма, электронная почта) хранение, хранение файлов, документов) с производными цветными индикаторами прогресса от пределов характеристик плана — зеленый / предупреждение / ошибка при порогах 70% / 90% - Полная таблица истории счетов-фактур: номер счета, период, чип состояния, subtotal/tax/total, ссылка для загрузки PDF; до 20 последних счетов Данные: getCurrentSubscription, getAvailablePlans, getCurrentUsage, getInvoices, getCreditBalance, getPaymentMethods — все через Promise.all Настроенный Таким образом, каждый раздел ухудшается независимо от ошибки. Погрузчики MUI Skeleton per Секция во время извлечения.
· kamo-internal
Выберите план потока сквозной
Проводной калькулятор в диалог PlansBillingTab (заменяет заполнитель) - Получить доступные планы от выставления счетов API при загрузке страницы Отправка плана: создание новой подписки или существующих обновлений - Требовать способ оплаты перед подпиской (перенаправляет на добавление оплаты) Показать состояние загрузки с сообщением обработки Stripe во время отправки - контекст паспортного плана (текущий план, цикл, сиденья, надстройки) в калькулятор - Исправьте PaymentMethodForm, чтобы принять ClientSecret в качестве реквизита Доступ к внутренним элементам Stripe
· kamo-internal
Закладка Hide Plans & Billing для root-орга KamoCRM
Владельцам KamoCRM-оргов все включено бесплатно - они должны Никогда не видел счетной вкладки. Вкладка теперь условно отображается только Для детских организаций (где это правда). ребенок Владельцы организации видят выставление счетов своей организации; члены видят выставление счетов на основе Конфигурация делегации.
· SecurityService
Добавить BillingService в Changelog Public Projects
· kamo-internal
Интеграция платежной системы Stripe через платформу
Новый клиент BillingApi.ts с полными типами TypeScript для всех платежей конечные точки (подписки, способы оплаты, счета-фактуры, кредиты, использование, конфигурация, админ - Новые компоненты Stripe Elements: StripeProvider, PaymentMethodForm, PlanCalculator с полной разбивкой по стоимости, скидками на объем и пакетами Переписать PlansBillingTab с реальной интеграцией Stripe: управление планами Способы оплаты Stripe Elements, история счетов, кредитный баланс, счетчик использования, конфигурация делегации выставления счетов, статус выставления счетов члена команды - Update FeaturesManager with plan-based gating: блокировка иконок и обновление CTA для функций, не включенных в текущий план подписки - Удалить вкладку выставления счетов из настроек учетной записи (перемещена на страницу участника) - Установить @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
Добавление платежных организаций и репозиториев для интеграции Stripe
Новый пакет ******************* с 9 организациями (BillingCustomer, BillingSubscription, BillingPayment) Метод, BillingInvoice, BillingCredit, BillingCreditLedger, BillingConfig BillingUsageSnapshot, BillingStripePriceMapping) и 9 соответствующих Репозитории JPA. Эти объекты зеркально отражают штат Стрип локально для Новая система оплаты KamoCRM.
· kamo-marketing
Добавить /калькулятор и /цена / предложение для всех карт сайта; i18n HTML
- app/sitemap.ts: добавить /pricing/offer и /calculator записи с локальными альтернативами - app/api/sitemap/route.ts: добавить калькулятор цен и специальные предложения SitemapClient.tsx: перемещать статические разделы внутри компонента с t() для всех меток/описаний; Добавить ссылку на калькулятор в разделе Продукт Сообщения / en.json: добавить 38 новых ярлыков ссылок Sitemap
· kamo-marketing
Полностью извлечь оставшиеся строки тела из продукта, блога, ценообразования, демо, контакта, калькулятора
· kamo-marketing
Полностью извлечь струны тела из функций, о, дома

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта