チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· kamo-internal
DNSセットアップUIでTXTドメイン所有権レコードを表示する
- DomainData/DnsStatus: 認証トークン、所有権認証、タイプフィールドを追加 - AliasStatusTable:コピー ボタンが付いているCNAMEのテーブルの上のTxtOwnershipCardを、示して下さい indigoの保留/緑の確認されたスタイリング;CNAMEの証明された計算からのTXTをろ過して下さい - ManualDnsGuide: 確認を受け入れる トークンプロップ; 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: 検証トークンと所有権認証フィールドを追加 - DomainService: setVerificationToken() と setOwnershipVerified() を追加 - DomainDTO: API 応答で検証トークンと所有権を検証 - DnsStatusDTO:CNAMEステータスからTXTを区別するためにタイプフィールドを追加します
· kamo-internal
スティッキーヘッダ、更新されたエイリアス、常に見えるプレーン英語DNSガイド
· SecurityService
Update required aliases — add app, capcha, docs, sign; remove legacy
· kamo-internal
常に所有者にDNSボタンを表示し、ドメインフローを変更
· kamo-internal
セットアップ/ dns を経由して orgId を渡します
· SecurityService
Allow cross-org domain management by verifying user ownership
· kamo-internal
/setup/dnsページとドメイン設定フローを/networkに追加
- 2相流れの新しい /setup/dns ページ: ドメインエントリ その後 DNS 60秒の自動ポーリングとSSL確認 - マニュアルDnsGuide:すべてのために、利用可能なステップバイステップのDNS指示 レコード名とターゲット値のコピーボタンでスキルレベル - AliasStatusTable: ライブ・パー・エイリアス CNAME 認証ステータスと 検証/終了/エラーチップ/オプションバッジ www - DnsProgressView:フェーズインジケータ(DNS → SSL → Ready)、進捗バー、 カウントダウンタイマー, 今すぐチェック ボタン, 成功状態への自動利点 - DomainEntryForm: wwwのトグルとプレーン言語UXのドメイン入力 - /networkページ: 未確認のカスタムでorgsの 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 フィールドを OrgDomain と DomainDTO に追加する
2つの新しいフィールドを OrgDomain のエンティティティティや DomainDTO に追加して SSL を追跡 自動認証サービスの問題の後の証明書確認ステータス 証明書。 また、 DomainService に setSslConfirmed() ヘルパーを追加します.
· kamo-marketing
クライアント側チェンジログの検閲を削除 — バックエンドで処理
単語の交換と秘密の赤字が変更ログSanitizationに移動 サービス (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ブロック)です。 アドオン スライダ(25GBの0-1000GB)でトグルスイッチを交換 ステップ) 数値入力フィールドと。 コストダウンがストレージをそのまま表示 別のライン項目。 PlanSelectionには追加のStorageGBが含まれています 従ってメーターで計られた請求をセットアップするバックエンド.
· kamo-internal
ワイヤー・ビリングマネージャーとリレーションマネージャー 実際のバックエンドへ
BillingManager(アカウント課金タブ): - 実際のStripe-backedの支払方法の100%のローカル州のモックを取り替えて下さい billingApiによる管理 - マウント上のGET /api/billing/payment-methodsから支払い方法を読み込む - 支払い方法フローを追加する createSetupIntent → StripeProvider + PaymentMethodForm → 確認カード設定 → 添付ペイメント方法(必須) PlansBillingTabへの流れ - デフォルト設定は、******************** で最適化 星のアイコンと列ごとの機内スピナー - 確認ダイアログでbillingApi.deletePaymentMethodを使用して削除します。 デフォルトのカード削除はツールチップでブロックされます - 既存のカードブランドアイコン(Visa/Mastercard/Amex/Discover) SVG アセット; 未知のブランドのための一般的な CreditCard アイコンのフォールバック - Skeletonのローディング、再試行、スナックバーのフィードバックが付いているセクション間違い 関係マネージャー(アカウント関係タブ): - GET /api/security/org/my-networks でローカル状態を置換 - ネットワークの分類:isOwner=false → Parent Networks (ユーザを構成) isOwner=true → Child Networks (ユーザーが管理する) - アバターの初期、orgのタイトル、タイプ/ドメインメタ、およびロールチップを表示 - 利用可能な場合の org ドメインへのプロファイルアクションリンク - ツールチップで無効なアクセス権アクション(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サブスクリプションダッシュボードでmock statsページを置き換える
/settings/account?tab=statsを完全に有線、読み取り専用インサイトに再構築 ダッシュボード。 すべてのモックデータをBillingServiceに並行して呼び出します 既存の billingApi クライアント。 レイアウト: - トップ2-colグリッド:プラン概要カード(プラン名、ステータスバッジ、座席数) 請求サイクル, 期間, 警告をキャンセル, 機能リスト) + 請求の概要 カード(次の請求書金額、単価、アクティブアドオン、クレジット残高、支払い) 最後の方法 4) - フル幅の使用法セクション: 1メートルの進捗カード(電子メールが送信され、電子メール 保存、ファイルストレージ、文書)、色分けされた進捗バーが派生 プラン機能の限界から-70%/90%のしきい値の緑/warning/error - 全幅の請求書履歴テーブル:請求書番号、期間、ステータスチップ、 subtotal/tax/total、PDFのダウンロードリンク;最大20最新請求書 データ: getCurrentサブスクリプション、getAvailableプラン、getCurrentUsage、 getInvoices、getCreditBalance、getPaymentMethods - Promise.all ですべて セットアップ そのため、各セクションはエラー時に独立して劣化します。 MUIスケルトンローダー/ 取得中のセクション.
· kamo-internal
プランフローのエンドツーエンドを選択
- PlansBillingTab ダイアログ(プレースホルダーの置換) にワイヤ プランの計算機 - ページロードの課金APIから利用可能なプランをフェッチ - ハンドルプランの提出:新しいサブスクリプションを作成するか、既存の更新 - サブスクライブ前の支払い方法を要求する(支払いを追加するリダイレクト) - 提出時にストライプ処理メッセージで読み込み状態を表示 - 計画コンテキスト(現在の計画、サイクル、座席、アドオン)を計算機に渡して下さい - CreditMethodForm を修正し、代わりに clientSecret を prop として受け入れる Stripe Elements 内部へのアクセス
· kamo-internal
ルートKamoCRMのorgのための計画と請求タブを隠す
KamoCRMの所有者は、費用なしですべての機能を持っています — 彼らはすべき 請求タブが表示されません。 タブは条件付きでのみレンダリングされます チャイルド組織(組織.hasParent が真の場合) チャイルド orgの所有者は、そのorgの請求を参照してください。メンバーは、に基づいて請求を参照してください 委任構成.
· SecurityService
BillingService を追加して、パブリックプロジェクトを変更
· kamo-internal
プラットフォーム間でStripe課金システムを統合
- すべての請求のための完全なTypeScriptタイプを持つ新規請求Api.tsクライアント エンドポイント(サブスクリプション、決済方法、請求書、クレジット、使用方法) 設定、管理者) - 新しいストライプ要素コンポーネント: StripeProvider、PaymentMethodForm、 完全な費用の故障、容積の割引および束が付いている計画の計算機 - PlansBillingTabを実際のStripeの統合と書き換えて下さい:計画管理、 ストライプ要素の支払い方法、請求書履歴、クレジット残高、 使用法のメーターで計ること、請求の委任の構成、チーム メンバーの課金のステータス - アップデート機能プランベースのゲーティングで管理:ロックアイコンとアップグレード 現在のサブスクリプションプランに含まれていない機能の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
/calculatorと/pricing/offerをすべてのサイトマップに追加します。 i18n HTMLサイトマップラベル
- app/sitemap.ts: /pricing/offer と /calculator のエントリを locale の代替に追加します。 - app/api/sitemap/route.ts: 価格計算機と特別オファーエントリを追加 -サイトマップClient.tsx:すべてのラベル/記述のためのt()のコンポーネント内のstaticSectionsを動かして下さい; プロダクトセクションの下の計算機リンクを加えて下さい - message/en.json: 38の新しいサイトマップリンクラベル/説明キーを追加
· kamo-marketing
製品、ブログ、価格設定、デモ、連絡先、計算機から残りの体文字列を完全に抽出
· kamo-marketing
機能から全身の文字列を抽出します。, 約, ホーム
