Revert "chore(messages): add wave3 translation merge fragments (JSON)"
This reverts commit ****************
Revert "feat(setup-dns): show platform kamocrm domain on custom domain entry"
This reverts commit ****************
Show platform kamocrm domain on custom domain entry
Surface the active *.kamocrm.com hostname on the add-domain flow and detect custom domains by excluding kamocrm URLs instead of default-flag alone.
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Checkpoint translations per chunk and per locale on main
Persist locale JSON after each API chunk so cancellation loses at most one batch. CI translates one locale per process and commits/pushes after each so finished...
Disable Docker BuildKit cache so every pipeline run does a full rebuild
Sets no-cache on both image build steps so npm ci and npm run build always run, even when the source tree is unchanged.
Bust Docker BuildKit cache per commit so npm run build runs every push
Identical checkout trees (e.g. empty commits) reused cached layers and skipped a real Next build. Pass GIT_COMMIT from the workflow and label the image revision...
プライマリメールボックスが割り当てられ、変更、または削除されたときに、メンバーを同期します
メールボックスがKAMO MAIL orgのメンバーに割り当てられた場合、members.email 決して更新されず、EmailCredentialService が IMAP を解決できなかった 会員の資格情報.
重複ルートドメインを防止し、プライマリドメイン表示を修正
ONE DOMAIN PER ORG チェックを誤って .kamocrm.com web-alias ドメインは、複数のルートドメイン(および10)を蓄積するorgを許可します 異なるエイリアスと再試すことで各エイリアスを。 今、すべてのカウント 接尾辞に関係なくトップレベルのドメイン(親はNULL)。 ネットワーク...
会員セキュリティとメンバーのPUTコールをシリアライズし、CockroachDBの競合を回避
同じ `members` 行に 2 つの同時書き込みがシリアライズ可能 分離の対立 — 会員セキュリティは、メンバー間で行を読みます endpoint はそれに書きました(countUpdated を経由して)、1 つのトランザクションを中絶します エラー40001で。 シーケンシャルコールは重複を排除します.
Org作成レイテンシーを削減し、翻訳カスケードの失敗を修正
- 組織管理者:TeamMembersForAllOrgs(完全なorg)を確実に交換する TeamMemberForOrg(単一オーガニゼーション)を確実なテーブルスキャン 〜400ms×N DB 往復 /network/create 送信 がスタック - 組織管理者:メールを移動しますTemplateSeedCli...
ワイドな commit log translations.title から TEXT まで、DB 列にマッチ
列は、アノテーションとDBのVARCHAR(512)で、 長い翻訳タイトルに失敗する翻訳インサート。 DB カラムは 今、ストリング(直接適用)。このアノテーションの変更は、組織を維持します 一貫した.
バックエンド応答封筒からのUnwrapカタログと計算
getSubscriptionCatalog は { カタログ {...} を返しましたが、直接キャストされました サブスクリプションカタログとして、カタログを残します。undefinedとプラン 選択ステップ空白。 計算のための同じ問題サブスクリプション 価格 その { 計算: {...} } ラップパーは未処理でし...
@JsonProperty を is*-prefixed boolean DTO フィールドに追加
Lombok は isXxx() を生成します。 isXxx() は boolean フィールドの isXxx() を生成します。 ジャクソンは「is」のリーディングをイジェッタから取り除き、それらをシリアライズします 'xxx' ではなく 'isXxx' なので、'accountManager' になった JSON ...
Fuser の代わりに s を使用して、ストール ポートフォワード (k0m1) をキルします
ランナーのホストにfuserとlsofがインストールされていない。 ss -tlnp を使う PID 保持ポート 18080 を抽出し、直接それを殺すために grep。 その他 pkillをSIGKILL(-KILL)に切り替えるので、階段プロセスに依存しない 優雅な信号を調達する.
スタンドポートをクリーンアップするので、キャンセルされた翻訳ジョブは、次の実行をブロックしない
バッシュは背景のプロセスに信号を転送しないので、kubectl ポートフォワードアウトライブ解除ワークフローの実行と保有ポート 18080, その後のtranslate and rebuildジョブをブロックします。 修正: 結合する前に 18080 で既存のポートフォワードをキル (pkill + fuser/ls...
ページ全体ですべての壊れたプレースホルダーの値を復元する
Salvage-keys スクリプトは CSS classNames、インラインスタイル、JS をつかみました 114メッセージの元の英語テキストの代わりにテンプレートリテラル メモ、kb、コマース、アカウント、レポート、リード、設定、 ダッシュボードページ.
セットアップを表示 請求ボタン なしのアカウントを持つorgの所有者
Orgの所有者が計画ビルティングタブを開き、請求アカウントを開くとき 存在し、ジェネリックの代わりにbootstrapプロンプトを表示 "あなたの連絡先 orgの所有者"メッセージ。 ボタンは POST /api/security/account/ を呼び出します。 boottrap-billing (idempote...
リードページを復元 英雄のタイトルとgit履歴からのサブタイトル
ヒーロータイトルは「ヒーロータイトル」(プレースホルダ)、ヒーローサブタイトルは「フレックスギャップ2」でした (salvage-keys は誤って隣接する CSS クラス名をつかむ)。 コミット10f4e4bから回復された正しい値.
既存のorgsにbootstrap-billingエンドポイントを追加
メニュー 同じトリガー サブオーガニゼーション・ホック(BillingSetupService)としての意図的なセットアップ .setupForSubOrgCreation はオーガナイザーのオーナーがオンデマンドと呼ぶことができます。 課金レファクタの前に作成されたorgsを扱います。 そのため、アカウント+アカウン...
ウィジェットをポーリングすることでフィニッシュボタンを有効にします。getState() と auto=onload への切り替え
ステートチェンジイベントリスナーは、フィニッシュボタンが確実に有効になっていない 確認後。 2つの根本原因: 1。 ドレインロジックはウィジェットを読み込みます。 ウィジェットに存在しない状態 — ウィジェットは .state プロパティではなく getState() を公開しているため、ドレインは常に 確認後にリス...
Orgリストにサブスクリプションターゲットアカウントを含める
listForOrg では、サブスクリプションがターゲットとなるアカウントも返します。 リクエスト org — 直接所有するアカウントだけではありません。 マルチオーガニゼーション ペイメントアカウントは、カモCRMのトップレベルのorgに住んでいます サブスクリプション対象サブオーガナイザー。このカモクラブのオーガナ...
StatusWindow ラベルの名前空間を追加し、すべての設定のプレースホルダを修正
- Add****************(50キー)設定 navサイドバーは、キーパスの代わりに実際のテキストを表示します - BranchTypesLabel ICUフォーマットを修正:\${branchLabel} → {branch} - Fix tr()フォールバックガード:next-intlは、代わりにキー...
ウェーブ3変換、フォールバック修正、自動翻訳CI
- すべてのハードコードされた英語の文字列をt()の呼び出しを波3を渡して置き換える コンポーネント(チャット、クラブハウス、サポート、メモ、パイプライン、リード、ナビゲーションなど) - メッセージ/en.json (+19 キー) に 3 つのフラグメントをマージします。 - en.json(welcome、tag...
他のツールウィンドウのサイズ+カラースキームに一致
- defaultSize と minSize は現在 320x650, 再利用可能な: false (Softphone、チャット、電卓、SMS、AIチャットと一致します) - ダークスレートグラデーションから標準ライトグラデーション(#fafbfc -> #f5f7fa)にSoftphonePanelで使用 - H...
Locale のソースとして、Member.language と次の intl のワイヤ
URLなしでカモインタナル全体で次のインテルベースの国際化を追加します。 locale プレフィックス。 アクティブなロケールは、kamo-locale Cookie から読み込まれます。 認証されたメンバーの「言語設定」をミラーリングします。 地域設定カード************************ インフラ...
Forward Range header so audio playback can scrub
Without this the VOIPService recording-streaming endpoint always returns the full file (Range header is dropped by buildForwardHeaders), which works for play-fr...
Drop language search filter on My Language step
The supported language list is short enough to scan visually; the search input added complexity without user value.
Rewrite /etc/odbc.ini to point at $MARIADB_HOST on every boot
The escomputers/freepbx:17 image bakes /etc/odbc.ini with Server=db (the docker-compose link target). On this Kubernetes deployment MariaDB lives at \$MARIADB_H...
Fall back to imaging recordings for call history + voicemails
FreePBX 17 doesn't expose voicemail messages over REST or GraphQL on this install (the GraphQL voiceMail type returns mailbox config, not messages, and /admin/a...
Paginated Recording lookup by (instance, extension, isVm)
Used by the softphone tabs as the canonical source of truth for call recordings and voicemails when the upstream provider can't list them — e.g. FreePBX 17 has ...
Resolve member→extension before VM/CDR provider lookup
CallController was passing memberId where FreePBX (and other PBX-style providers) expect an extension number — voicemail listing returned empty because no PBX e...
デッドマスターをドロップAccountHolder/isMaster UI、ステープルコメントをリフレッシュ
口座スキーマは、マスターアカウントホルダーまたはパーメンバーがマスターされていない フラグ — これらは、Account-as-billing-principal と一緒に削除されました リファクタ。 AccountViewClient は、常に未定義の「マスター」をレンダリングを停止します。 ホルダー/メール"行とパ...
自動座席は床、より広いorgの無効として、床として、放します
BillingSetupService は、作成者の最初のオープンライセンススロットを有効にします。 サブ・オーガナイゼーション(およびプロモート・トゥ・ビルリング・オーナーと同じ)を見るとき — そうでなければ、新鮮なサブオーガニの所有者は、あるにもかかわらず、無料のベースラインを参照してください シードプランのライ...
BillingGroup-eraコメント+未使用サブスクリプション会員のクエリをドロップする
左上の doc ブロックを AppliedModelEnforcementService でストライプします。 長期のBillingGroupの概念に、および取除きます ***************************************************************************...