イラストのラッパーの高さはなかった — 0px のストリップにレンダリングされるすべての層
旅程ルートのdivは「相対的なオーバーフローヒデン」でした。 明示的な次元。 その親は絶対インセット-0で大きさで分類されましたが、 親戚の子供は自動高さをブロックし、すべての子孫が 絶対的に配置され、流入するコンテンツに寄与するものは何もありません 高さ。 その結果:レイヤーされたシーン全体が0pxに崩壊し、唯一のシ...
Sky no longer washes to white — golden-hour default + tuned sky shader
Sky was reading white because: - toneMappingExposure 1.05 + Bloom@0.45 with luminanceThreshold 0.72 was blowing the bright procedural sky into the bloom buffe...
3D世界(/journey/persona その後/journey)のポストポーチ借り手土地、レガシーMUIウィザードではなく
Reward gate + auto-resume は /journey/persona?app=<uid> に /journey?app=...&persona=... で、/journey の "Continue your application' CTA on /journey は、借り手がレガシー/apply/...
ウェルカムバックゲートは、真の帰国者のためにのみトリガーする必要があります
新しい訪問者は、歓迎されたバックゲートに遭遇しました hasPriorProgress が現在のものから返されたため、名前を入力してください。 state はすべてのレンダーで、すぐに state を直します。 お問い合わせ 名前はセットされました、 会話の途中で火をつけた門。 Root-causeの修正: "did...
デフォルトフロー + isDone-onlyオートアドバンスを推定する
見積り画面に着陸するユーザーの背後にある実際のバグ "Start over": フローエンジンは DONE を返します。 流れはnullです (選択されたフローなし → 質問リスト → ループは何も → DONE を収穫しません)。 自動アドバンス条件 `(isDone ||最小AnswersForEstimate)`...
強制動的なので、新しいデプロイはキャッシュされたHTMLでマスクされていません
ホームページは静的にプレレンダーされた(ビルド出力では○/) 同じ HTML を意味し、その埋め込まれた参照を特定のチャンクに hashes — ブラウザが無効化するまで無期限に機能しました。 アフター 船舶固定(ウェルカムバックゲート、スタートオーバーなど)、 訪問者を戻して、ブラウザが古いシェルを見るように継続しま...
ウェルカムバックゲート+常時利用できる「開始」
永続IDB状態の訪問者がまっすぐに落ちていた どの段階にも到達しました。 画面は、(会話のリードアップなしで)混乱として読みます 温かい会話のイントロを見たことがない人のための数字ダンプ. この変更: 1。 永続店にリセットアンドクリアストレージ()を追加します。 idb-keyval clearState() で...
Kamomarketing パターン (node:24-alpine、2 段階) の Dockerfile
CI ビルドは npm 10.8 から `npm ci` の node:20-alpine で失敗しました (bundled) Node 20 で、Next.js の @swc/helpers のピアDep (>=0.5.17) を 0.5.21 に解決します。 ロックファイル (ローカルnpm 11 / Node 2...
添付ファイル+インライン画像フェッチ用のバイパスサービスワーカー
<a download> 添付行をファイルの代わりにクリック ダウンロードします。 電子メールサービスワーカーは、すべて傍受されました /api/email/* GET, バイナリストリームを含む, 応答を経由して返す responseWith — クロムは SW 合成反応を異なるから扱います ダウンロード・アトリビュ...
Cid を解決: 署名の flicker を停止する時間をサニタイズするインライン画像
Cid: 投稿コミットされた useEffect で書き換えが起こっていたので、 sanitized HTML は、文字 src="cid:..." で DOM をヒットし、それぞれの img をミュートする効果 次のティックに。 内HTMLをリセットするリレンダー(例:キャッシュ対フレッシュ) body fetch,...
サブドメインテナント org バケットを MinIO フォルダーに解決
getThemePath() は、それらの両方のホスト名を apex+tld に減らしました ホストやバケットフォルダなど、サブドメインのテナント gnosia.demo.kamocrm.com は、代わりに親 apex のブランディングをロードしました 自分で。 今、最も深いエイリアスだけをドロップ (ログイン/登録...
サブドメインテナント org バケットを MinIO フォルダーに解決
getThemePath() は、それらの両方のホスト名を apex+tld に減らしました ホストやバケットフォルダなど、サブドメインのテナント gnosia.demo.kamocrm.com は、代わりに親 apex のブランディングをロードしました 自分で。 今、最も深いエイリアスだけをドロップ (ログイン/登録...
/me/languageを通したNavTopピッカーをルート
SystemUserGuard 403s の汎用メンバー PUT と呼ばれるピッカー システムユーザーがサブ組織に署名しました。 サイレントに記録されたキャッチなので、 kamo-localeクッキーは設定されず、UIは言語を切り替えることはありません。 ********************(SecuritySe...
SystemUserGuard をバイパスする /me/language エンドポイントを追加します
NavTop の言語ピッカーは、システム ユーザがシステムに署名したのは何もなかった サブオーガナイザー:PUT **************************** 最初に SystemUserGuard を実行します。 どの 403 s すべてのシステム ユーザー チーム メンバーの変異 (各々に提案) Sys...
サブドメインテナント org バケットを MinIO フォルダーに解決
getThemePath() はホスト名を apex+tld (mainDomain.tld) に削減しました。 テーマのホストとバケットフォルダの両方。 サブドメインのテナントのような 親の apex を共有する gnosia.demo.kamocrm.com は、これはそれらを折りました 親の Bucket (ka...
ModernColorGroupでダーク・バリアント色の入力をクリップを停止する
カラーピッカー列は、1fr 1frグリッド内のハードコード280pxラッパーを持っていました オーバーフロー:hidden なので、入力は狭い列に刻まれていました。 屈曲の使用:1 + minWidth:0 なので、ピッカーは列を埋め、それを縮小します.
投げられたサブスクリプションのスタブを no-subscription として扱います、間違い無し
レガシー getCurrentSubscription stub スロー 設計 so caller 落下 ウンティングされたパスに戻ります。 StatsManager は 投げ として サーフィン 「サブスクリプションデータをロードしない」 既存のデータへアクセス:null 「アクティブなサブスクリプションなし」情報ブ...
GetCurrentUsage の代わりに空のメーターを返す
StatsManager は <UsageMeters use={null}> をレガシースタブ時にレンダリングしました。 null に解決し、useum.meters でクラッシュします。 お問い合わせ コンポーネントは、既存の空のステートブランチを取ります.
CONFIGURE SYSTEMでアカウントのスライドアウトセクションをゲート
CONFIGURE SYSTEMを欠いているメンバーから「マイアカウント」メニューを隠す リンク(ステータスとコスト、アプリと機能、ブランチの種類、 オートメーションストリーム) クリック時に /settings にバウンスします。 ザ・オブ・ザ・ ホームページ タイルおよび/settings/account のページ...
許可されたオーガニゼーションに、自動ルートの子供向け所有者
/settings/account が CONFIGURE SYSTEM を欠いているユーザーに対してロードする場合 現在の org は、以前の動作は /settings へのサイレントリダイレクトだった。 管理者権限が異なる子供所有者のデッドエンド お問い合わせ 古典的なケース:ダニエルはGNosia(子供)を所有し...
ドメインでorgをフェッチするとき、完全なFQDN、eTLD+1を使用して下さい
registrableDomainFromAlias は複数のラベルのサブドメイン (例:) をストライプします。 "gnosia.demo.kamocrm.com") は eTLD+1 (kamocrm.com) まで下にあります。 は、 APIベース/ログインホスト/ OAuth 認証ルックアップ — これら 意図...
2つのラベルよりも深くサブドメイン用のフルFQDNを保存
sort by root() は最初のラベルと最後の2つだけを抽出しました 各Trefik-loggedホスト名からラベルをラベルします。 共通の2レベルの場合のため (login.b11capital.com -> root b11capital.com, サブログイン) この往復 お問い合わせ しかし、より深いホス...
TXT所有権にカモ所有のサブドメインをゲートしないでください
カモのウェブエイリアス(例えば、gnosia.demo.kamocrm.com)をピックアップしたチャイルドオルグ 「TXTレコードが見つかりませんでしたが、認証コードは一致しません」 DNS セットアップ UI で。 ルート原因: org domain の行は、階段を持っていました validate token とオ...
クライアントハンドル型のグローバルロードオーバーレイを表示しないでください
ナビゲーションインターセプターの送信リスナーは、任意のフォームを処理しました form.action は真理で、メソッド= はナビゲーションとして、 グローバルな loadContext で setLoading(true) を設定します。 明示しない action 属性、ブラウザはform.action を現在のもの...
グラント・トップ・レベル・オーガナイズ・オーナー・クロス・オーガニ・削除/更新アクセス
deleteDomain と updateDomain は、以前のプラットフォーム管理者を拒否しました 彼らはisUserOwnerOfOrgをチェックしているため、子供のドメインで動作 直接ターゲット org に対して、トップ レベル org のバイパス無し 所有者 — 読み込みフローとは異なり (getAllDom...
Per-org *.kamocrm.comサブドメインの削除を許可する
EndWith(.kamocrm.com")ガードは、すべてのデモのorgをブロックしました プラットフォームのサブドメイン(例:gmosia.demo.kamocrm.com)を交換して、 カスタムドメイン。 プラットフォームのルートkamocrm.comは、として保存されていません org domain 行なので、...
外部メディア用の新しいパブリックIP 47.181.8.83を広告する
JVB-k1m1は75.83.113.11を広告し、coturnは広告しました status.hostIP による node の LAN IP — 外部の WebRTC 媒体を破棄 公衆 WAN が 47.181.8.83 であること.
管理者権限を守ろう + テンプレート編集のロールを再シード
高い:*************************************************************************************************************************************************************...
親組織のメンバーシップに子-org-creator管理者のステータスをプロパゲート
ユーザーが子供のorgを作成するとき、彼らはその所有者になります + 管理者 (via) メニュー 彼らのPARENT-org会員, しかし、それが以前だったのは何でもです。 - 通常登録時間 管理者権限のないチームメンバーの役割 — そして、その後にその方法を維持します 子供のorgが作成されます。 子供のドメインで...
ツールバーをラップし、検索/日付を縮小するので、新しいイベントはページ上にとどまります
ツールバーは、あまりにも多くの固定幅のコンテンツを単一の非書き込みにパック flex 行; オーバーフローにセットされている親メインエリアで: 非表示、右 ~1366-1440pxビューポートにクリップされたセクション(新しいイベント+設定)。 flexWrap を有効にすると、検索フィールド (300->220) と...
デモラグを避けるためにセッションのリフレッシュ後のマスターから***を読みます
前の修正は /api/user-info 呼び出し /api/security/session/refresh だった Redis を読む前に、読み物は readKsemJsonFromRedisWithRetry を通過しました getRedisReadClient() — 読み込みのレプリカを使用します。 リフレッ...
ユーザ情報を読む前に、名前+リフレッシュセッションでタブを追跡
マニフェストと「間違ったタブが開きます」の2つの関連ナビゲーションのバグ: 1。 SettingsViewは、*index*でアクティブなタブを追跡しました。childArrayは 条件付きタブ(DocsTab、EmailboxTab、)時にレンダー間で再構成します。 PhoneSettingsTab, PlansB...
グループ化された echos で thisdoc を置換するので YAML の literal ブロック パース
/etc/odbc.ini ここで doc ボディ は 1 列に座っています。 周辺スタートアップ.sh: | リテラルブロックスケーラ と `kubectl apply` を破った ConfigMap の 刻まれたブロック内の `echo`s をグループ化するように切り替える すべての行は YAML スコープ内で保持...
HostToContainerの台紙の伝搬によってrcloneのremountに続いて下さい
スレーブ伝搬なしでポッドはFUSEバインドマウントを一度にキャプチャします コンテナの起動; rclone マウントの場合。 ホスト上でサービスの再起動、Pod 現在のFUSE接続とすべての書き込みを指し続けます /mnt/shared-files は ENOTCONN で失敗します(Transport エンドポイント...
VIEW DOCUMENTS / MANAGE DOCS SETTINGSでDocsタブをゲート
メール+電話タブゲートをミラーリングします。 VIEW DOCUMENTSのない会員(基本) ユーザレベルのアクセス) と MANAGE DOCS SETTINGS (admin) なし は表示されません Docs は自分のアカウントページにあるタブです.
ゲートメール + 権利上の電話タブ、VOIP 設定の編集、定期的なセッションのリフレッシュをゲート
Access MAIL/ACCESS VOIP なしの基本的なメンバーとして、欠落した権利を与える メール&メールボックスまたは電話設定タブを自分の上に表示することはできません アカウントページ すでにメンバーの権利を正しく省略しています。 Member rights applied / ***; UIは単にタブをレン...
TTL ヒントをツールチップに動かすことで Type/Name/TTL フィールドをアライグする
TTL フィールドは 'use 1 時間 をレンダーしました。レジストラが表示する場合 入力の下段落としてのドロップダウンのヒント。 その列が終了 タイプと名前よりも背が高いので、alignItems:center も 入力行は、水平方向のアライメントから視覚的に漂流します。 ヒントは、小さなツールチップとして表され...
SSLカードは、記録を主張する停止は、その前に検証されます
SSLカードは2つの状態(インストール/完了)を持っていたので、 "installing" コピー(必須レコードはすべて検証済みです) CNAMEs がいたときに、証明書を今インストールする」と表示されます。 まだ終了 — ユーザーは、この前にこれを読んだことを報告しました レコードが検証されました。 3番目の正直な...
ヘッダーギャップを取り除き、サブドメインを解除し、レジストラピッカーをドロップします
- DnsProvision の移動 DnsSetupStudio 内のパネルは空 px:4 pt:3 周りのラッパー(空白のバンドを作成) パネルが null を返すときのヒーローの上には、もはや出荷しません。 - レイアウトのコンテンツ領域のフル幅を取るページを作る。 ボディ、最高の幅の帽子の応答性の横のパディング...
Org が作成した後、親の /setup/dns にランド
以前に作成者をリダイレクトしたウィザード メニュー POST /api/security/org が返された直後。 新しい org のドメイン DNSがまだないので、リダイレクトは到達できないホストに解決しました (例: https://internal.sign.pink) とユーザがスタックしました。 ウィザード...
EmbAddress.country からの Drop CountryTypeConverter
コンバーターは、文字列として enum の名前 (例: "UNITED STATES") を書きます。 しかし、EmbAddressを埋め込むすべてのテーブル(ユーザー、メンバー) user addresses, account addresses, Member team member lic locs, Comme...
以下のためのアカウントの回復シードフレーズのステップが表示されます-13
なぜ:13 +ユーザーが既に電子メール、電話、およびセキュリティの質問を提供 回復方法として, それらのためのシードフレーズステップ冗長を作る. Under-13アカウントにはメール/電話/セキュリティの質問はありませんので、シード フレーズは、その唯一の回復パスのまま.
同期+ランタイムトラフィックを吸収する2つのレプリカにスケール
単一のレプリカは、辞書同期ワークフローのボトルネックです。 各ガンギコーンワーカーは、自動復帰リクエスト(~5-10s) 接続拒否のウィンドウ)、および2 CPUの限界の帽子の侵入 スループット。 両方のランタイム呼び出しと12k弦同期のヒット 同じインスタンス、TranslateService の per-call ...
Bump LibreTranslate パーコールタイムアウトを 90 秒; シングルトランスレート後方コンパットを維持
Retry/failedKeys の変更への 2 つのフォローアップ: 1。 コールリクエストのタイムアウトは30秒でした。 生産にランタイム コール ワーカーがあります。 (チャット、通知など) 同じ翻訳サービスにヒット LibreTranslate ワーカーがミッドリスタート時に CI の同期呼び出し またはキュ...
一時的な過渡的な間違いおよび表面失敗したキー(偽のパススルーをしないで下さい)
2つの失敗モードは、応答で解釈できないため、スクリプト 同じキーを英語に分けて保存しないようにしました。 すべての同期実行で、ランダムなサブセットは、そのために成功しました LibreTranslate リクエストは、ワーカーの再起動時に土地に起こった: 1. プロバイダーのエラー(タイムアウト、5xx、接続がミッド...
Alias zh -> zh-Hans そう en->zh 実際に翻訳
LibreTranslateの/languagesエンドポイントは、中国を下回る 地域固有のコード "zh-Hans" と "zh-Hant" (never bare "zh"), POST /translate はバーコードを受け入れています。 エイリアスなし, メニュー false を返します。 ProviderR...
元のファイル名とコンテンツタイプを添付ダウンロードに保存する
メニュー と共有メールボックスコントローラ) は、Content-Disposition: 添付ファイルから送信されました filename パラメータと Content-Type なし: application/octet-stream, ブラウザを強制して、URL の末尾のインデックスセグメントにフォールバック 保...
壊れたインライン画像、添付ファイルのダウンロード、およびビューパンのフリッカー
- ストリップ <img> と cid: src のメール sanitizer なので埋め込まれた画像は しない 壊れた画像のアイコンとしてレンダリングし、失敗した画像を隠します SanitizedEmailRenderer の onerror ハンドラによるランタイム。 - ネストされた <a> を <detailV...
/languages からのサポート対象をドライブし、リストを固定しません
ハードコードされた SupportED TARGETS は sw/ta/etc を要求しましたが、 それらのために公開argosパッケージが存在しないので、すべてのen->sw / en->ta 翻訳はリクエストの libretranslate Pod を、400 で失敗し、 ルーターリトライペアをトリガーしました。 ...
