Reset document.title in rebrand() when React overwrites it
React re-applies RSC payload after hydration, resetting the title to "analytics". Add a title check inside the MutationObserver callback so it gets corrected ev...
Replace "analytics" text nodes with "Kamo Analytics" instead of clearing
Use TreeWalker to remove all "analytics" text nodes from rendered DOM
The workspace nav title "analytics" comes from JS bundles loaded after auth, rendered as a text node next to the logo SVG. Uses TreeWalker to find and clear all...
Add guarded MutationObserver for client-side rendered logo/text
Login page and dashboard content is rendered by Next.js JS bundles, not in the HTML body, so sub_filter can't reach it. Adds a script with a busy-flag-guarded M...
Redirect favicons at nginx level, fix RSC payload escaping
- Serve favicon via nginx 302 redirect instead of trying to rewrite HTML/RSC payload href strings (cleaner, always works) - Fix RSC title replacement with pro...
Use pure sub_filter replacements instead of MutationObserver
MutationObserver caused infinite loop (DOM change -> observer fires -> DOM change). Switch to direct nginx sub_filter string replacements targeting both static ...
デフォルトで分析をロードし、許可されたドメインでwwwサブドメインを含める
- 分析がクッキーレス/GDPRフレンドリーであるため、すべての訪問者をデフォルトで追跡 - ユーザーが明示的にクッキー設定で分析を拒否した場合のみ無効化 - データドメインにwww.kamocrm.comを追加(ホスト名は正確に一致しなければなりません)
Comprehensive analytics rebranding for login page and dashboard
- Replace title dynamically (handles "Login | analytics", "Dashboard | analytics" etc.) - Replace "analytics" h2 text on login page with Kamo logo image - Repla...
Use MutationObserver to rebrand analytics client-side rendered UI
analytics is a Next.js app that sets title/logo via JavaScript after initial HTML load. Replaces static sub_filter approach with injected script that uses Mutat...
翻訳がソーステキストを等しいとき、次のプロバイダに秋に
Bergamot は、ソースのテキストをシングルワードの nav に変更せずに返しました 項目, 頭字語句フレーズ (API, CRM), 化合物の単語 (ログの変更) 成功を報告している間(fallback=0)。 ルータは同じ値を扱うようになりました 次のプロバイダ(例:LibreTranslate)を試してみる信...
デルタの翻訳エンジン+ワイヤーすべてのハードコードされたUIのひもi18nに
翻訳システム: - translate.ts は delta モードで動作します。これは欠落しているキーのみです。 既存の翻訳キーは、英語と同一のAPIに送信されます。 保存されていない状態です。 CI の翻訳時間を80〜95%の典型的な実行でカットします。 - --force フラグを追加して、すべてのキーを再変換し...
Suppress Chrome は locale-switched ページのポップアップを自動翻訳
<html> と <meta name="google" に translate="no" を追加 そのため、Chromeは、ユーザーがすでに意図的にページを翻訳するために提供していません 別の言語に切り替えます.
Bound translation concurrency to 3 threads to prevent DB pool exhaustion
Unbounded @Async (SimpleAsyncTaskExecutor) created 50 threads simultaneously when the retry scheduler fired, each opening a DB transaction and draining HikariCP...
Three bugs preventing changelog translations from being saved
1. **************** was discarding events because handleWebhook() had no @Transactional — save + publishEvent() ran outside any transaction. Add @Transact...
クエリCommitLogs with LEFT JOIN なので、ゼロトランスレーションレコードは再試行でキャッチされます
CommitLogTranslationから選択した古いクエリ — ログをコミットしない 全てが目に見えないものでした。 CommitLogからLEFT JOINを使用する そのため、HAVING COUNT < 予想句には 0 の翻訳を含むレコードが含まれています。 また、句の大きいallIdsを削除し、代わりにPa...
Apply word replacement at translation time, not ingestion
Original text is preserved in the DB so that adding a new rule and re-triggering translation is all that is needed to update existing records. Changes: - Chang...
空の API 応答と課金タブの優雅な劣化を処理する
- billingApi の get/put のヘルパーは空の応答ボディを安全に扱うようになりました res.json() を空の入力でクラッシュする代わりに - PlansBillingTab loadDataは、.catch() ですべての課金API呼び出しをラップします。 そのため、個々のエンドポイントの失敗はペ...
Check TeamMember.isOrganizationOwner flag for owner detection in my-networks endpoint
The previous check only looked at org.getOwner() (user_id_owner column) which can be null for existing orgs. The authoritative owner flag lives on the TeamMembe...
請求プロキシのための***セッションからorg/memberコンテキストを解決する
BillingService コントローラーは X-Org-Id と X-Member-Id ヘッダーが必要です。 直接呼び出し(APIServiceをバイパス)すると、これらは設定されていない。 次に、Next.js プロキシは、*** Cookie を読み込み、セッションを Redis、orgID と Member...
Add /api/billing/*のNext.js APIプロキシルート
請求 API クライアントは、/api/billing/* を相対 URL として呼び出されました。 APIService ゲートウェイの代わりに Next.js サーバーを押します。 追加 先に進むキャッチオールプロキシルート(商取引市場としてのサメパターン) ForwardToApi → APIService → ...
Include parent org in /org/domain response
The getOrganizationByDomain endpoint manually builds a response map but never included the parent organization reference. This prevented the frontend from knowi...
親 ID と親を OrgProviderProps タイプに追加する
組織の props インターフェイスは、parentId と親フィールドが欠落していました。 しかし、TypeScriptのコンパイル中にそれらをドロップする原因 バックエンドは送信します。 この予防組織。hasParent から つまり、すべての子組織のPlans & Billingタブを隠しました.
Purge incomplete model directories in init container
The service crashes on startup if it finds a directory in /models that has missing or partial model files. Add a sweep at init start that removes any directory ...
Remove GitHub LFS downloads, use only data.statmt.org models
GitHub raw URLs return LFS pointer files, not actual binaries. Drop enru/enar downloads entirely — LibreTranslate handles those locales. Only download the 4 pai...
Narrow bergamot へ es/fr/de/pl, 復元 bergamot-first 注文
GitHub LFS ファイルは、プレーンカールでダウンロードできません(URL を返す) ポインタは内容ではありません)。 bergamot スコープから enru/enar を削除する locales は、他のすべてのサポートされていないペアと一緒に LibreTranslate に落ちます。 ベルガモットは今、...
Narrow BergamotProvider targets to 6 pairs with available models
pt, it, uk, tr, ro, id, vi have no bergamot model source — LibreTranslate handles them. bergamot now claims: es, fr, de, pl, ru, ar.
スケールベルガモットを0にし、mozilla/translation-serviceにイメージを更新して下さい
Googleクラウドストレージモデルのダウンロードバケット(ベルガモットモデルサンドボックス) すべてのファイルとfirefox-translations-modelsリポジトリの404を返す 必要な言語ペアなしで12月2025をアーカイブしました。 ベルガモットはできない 作業モデルのソースが見つかるまで起動します。...
Route all translations through LibreTranslate while bergamot is offline
BergamotProvider is moved to fallback position. LibreTranslate supports all 13 locales bergamot was handling **************** so this eliminates the flood of "C...
プロキシ *** 複数のドメインのサポートのためのログインサーバーによるチャレンジ
直接クロスオリジンフェッチをcapcha.{domain}/api/challengeに置き換える /api/capcha/challenge で同じオリジンプロキシ。 前のアプローチが必要 ウィジェットが読み込まれる前に、capcha.* サブドメインで有効な TLS 証明書, 最初に使用している org ドメインに...
スケールベルガモット バック 1 レプリカ — 欠落したポッドによって引き起こされる翻訳失敗
ベルガモットは、サービスがまだ登録されて0のレプリカでした。 プロバイダーロイター TranslateService では、回路ブレーカがなかったため、es/fr/de/pt/it/ のすべてのリクエスト pl/ru/uk/tr/ro/id/vi/ar は繰り返された関係との死んだ ClusterIP を槌で打ちました...
Don't let null translated description hide the English original in changelog
The translation lookup for non-en locales was unconditionally overwriting description with **************** which is null when: - the translation was saved befo...
Resolve 23 compilation errors from controller-service signature mismatches
Controllers were built by a separate agent from services, causing method name and parameter type mismatches. Fixed all controllers to match actual service signa...
Update kamo-shared-library version from 1.0.0 to 1.1.0
Needed to resolve the new billing entities in the commerce.billing package added to shared library 1.1.0.
Kamo-shared-libraryバージョンを1.0.0から1.1.0に更新
共有ライブラリは 1.1.0 ではなく 1.0.0 として公開されます。 これは原因だった Maven は "artifact not found" で失敗する Docker ビルド 依存関係を解決しません.
ローカルリポジトリから共有ライブラリを解決するために、-U フラグを追加
依存性:go-offline ステップは、最初にMaven Centralを試してみました。 kamo-shared-library (ローカルのみ) のキャッシュされた失敗、およびそれ その後のパッケージステップを毒しました。 -U 力 Maven を追加 ローカル1を含むすべてのリポジトリを再確認してください.
翻訳チャンクサイズを50キーに減らし、指数関数的なバックオフ
150 キーはまだいくつかのプロバイダのために大きすぎる (長い段落値で プライバシー/利用規約/GDPR 今のところ: チャンクあたりの50のキー、指数関数の4のretries バックオフ(2s→4s→8s→15s)、フルリクエスト+応答をカバーする3分のタイムアウト、 chunk ごとのよりよい間違いのロギング.
大規模なペイロードでフェッチタイムアウトを防ぐためのチャンク翻訳リクエスト
1500以上のキーで、単一のバッチリクエストのペイロードは接続を引き起こしていました 一部の翻訳プロバイダのタイムアウト。 150キーのチャンクに分割 3つのレトリーとチャンクごとの2分のタイムアウト.
