Use inline style for icon colors to prevent CSS specificity override
sx-generated color classes were being overridden by Tab card context styles. Switching color to inline style prop ensures icons always render with the correct c...
Add kamo.commerce.enabled=true to k8s configmap
This is the file the CI pipeline actually applies (k8s/configmap.yaml). Required for CommerceService and EngagementLifecycle to load under the new @ConditionalO...
Add KAMO_COMMERCE_ENABLED=true to k8s configmap
Required for CommerceService and EngagementLifecycle to load now that they use @ConditionalOnProperty instead of @ConditionalOnBean.
MatchIfMissing=false を Commerce Bean の ConditionalOnProperty に追加する
CommerceServiceとEngagementLifecycleが kamo.commerce.enabled が設定されていない場合、デフォルトで無効化します。 プロパティを構成しないサービスは、これらの豆をスキップします.
Enable commerce beans via kamo.commerce.enabled property
CommerceService and EngagementLifecycle now use @ConditionalOnProperty instead of @ConditionalOnBean. Set kamo.commerce.enabled=true so they load in SecuritySer...
ConditionalOnBeanをConditionalOnProperty for Commerceに置き換える
******************** は春前に評価されます データJPAは、ユーザー定義のリポジトリービーンズを登録し、信頼できないようにします。 メニュー プロパティ分解フェーズで評価され、常に信頼性があります。 コマース(SecurityService)が必要なサービスは、application.yml 経由...
Prevent overflow:hidden on tab card from clipping status widget
Move overflow:hidden from the Card to the Tabs wrapper Box so scrollable tabs are contained but the right-aligned status/substatus widget remains fully visible.
Correct hexhead geometry, z-index layering, and viewport clamping
- Fix axialToPixel to use flat-top hex formula (was pointy-top) so honeycomb aligns flat-edge to flat-edge as the hex SVG shape requires - Fix generateRing to...
Use Next.js client-side navigation for all MUI Link components
MUI Link without component={NextLink} renders as a plain <a> tag, causing full page reloads that reset all React state including tool windows. Added component={...
Replace window.location hard navigations with router.push/refresh
All window.location.href, window.location.assign(), and window.location.reload() calls in page components caused full page reloads, wiping all React state inclu...
Move ToolDock above auth gate to prevent tool window wipe on navigation
PresenceWrapper switches its component tree structure when auth resolves (Fragment > children → ChatWebSocketProvider > PresenceProvider > children). This unmou...
ツールバーを適用し、埋め込みチャットモードへの変更を検索
ChatBox は、常にチャットツールを介して埋め込まれたモードでレンダリングされます。 移動する 検索フィールドとスクロールツーボトムボタンでツールバーを呼び出します 埋め込まれたセクションに、ツールウィンドウで変更が表示されるようにします.
Data-chatbox-rootからdata-tool-windowにHexHeadGroupセレクターを更新
ツールウィンドウシステムは、ToolWindowShell上のデータツールウィンドウを使用しますが、 HexHeadGroup はまだフットプリントの検出のためのデータチャットボックスのルートを照会しました。 これは、ハニカムを破壊し、任意のオープンツールの窓を見るために六角頭を引き起こしました 整列、ラップアラウンド...
チャットUI研磨 - プライマリカラーテーマ、入力中の emoji、ラウンド送信btn、六角ステータスカラー
- 部署タブとチャットボックスヘッダーは、ハードコードされた緑色の代わりに --color-primary を使用します - Emojiピッカーボタンは、チャット入力フィールドを右揃えに動かしました - ボタンを送ります flexShrink:0 楕円形にスケリングを防ぐため - HexHead のボーダー: オンライ...
チャットシステムの改善 - 編集スピン、六角マスクの回転、色、最大最小化
- 編集(バックスペース/削除)と入力を検知して後方ヘックスヘッドスピンをトリガー - hex クリップマスクをタイピング/編集中に境界線とともに回転させる(アバターは直立的にとどまります) - 部署のタイトルヘッダーとチャットボックスのタイトルバーを#22c55eに変更(オンライングリーン) - 最大化された状態から...
新しいOTKセッションと一致したときに無効にしないでください***セッション
有効なルートは、Redis から既存の *** セッションを削除しました OTKを見る前に。 OTK が同じセッションを指していたとき、 "Sessionが見つからなかったり、期限が切れたりしない"と、検索結果が失敗します。 今だけ IDが新しいIDと異なる場合、古いセッションを無効化します.
クエリパラメータから、クロスサブドメインWebSocket authを受け付けます
?***= クエリパラメータから ID を読みます。 クッキー。 これは、内部のフロントエンドを可能にします.kamocrm.com 認証する WebSocketは、クロスドメインクッキーなしでmedia.kamocrm.comに接続します。 インターセプターはRedisに対して直接セッションを検証します.
パス*** IDは、クロスサブドメインWebSocketのauthのクエリパラメータとして
クロスドメインのクッキーに依存するのではなく(全体で動作しない) subdomains) は、*** クッキー クライアント側を読んで、クエリとして渡します。 media.kamocrm.com WebSocket に接続するときのパラメーター.
Cookie ドメインを .kamocrm.com にクロスサブドメイン共有を設定する
クッキーは明示的なドメインなしで設定されました。 webSocket認証用のmedia.kamocrm.comへ.
Cookie ドメインを .kamocrm.com にクロスサブドメイン共有を設定する
*** クッキーは明示的なドメインなしで設定されました, デフォルトでは、 内部.kamocrm.com. これにより、クッキーが送信されないように webSocketハンドシェイク中にmedia.kamocrm.com、すべてのWS接続を引き起こします 「有効な *** クッキーが見つかりません」で拒否する.
独自の消費者再試行によるNATSコンシューマーバインディングの処理
- createNatsMessageHandler() メソッドにメッセージハンドラーを抽出する - 「Consumerは既にバインドした」時に、独自のコンシューマー名でリトリーロジックを追加 サーバの再起動後にエラーが発生します - 動詞デバッグロギングをクリーンアップ
チャットのメッセージング、プレゼンストラッキング、自動オープンの問題の解決
- ユニークなNATSサブスクリプションを再試行することで受信されていないメッセージを修正 "Consumer既にバインドした"エラーが発生した場合のコンシューマー名 - STOMP 接続で即時のハートビートを送信することにより、オフラインの状態を修正し、 接続後のバルクプレゼンスを再取得 - 冗長を避けるためにセッシ...
MUI アイコンの型エラーを解決し、単一の STOMP WebSocket 接続を共有する
- tsconfig パスを @mui/icons-material に追加して、壊れた ESM をバイパスします。 ./esm/index.d.ts 以外の点の v7.3.1 でエクスポート - ChatWebSocketContext を作成して、単一のSTOMPクライアントをアプリ全体に共有 PresenceWr...
階段閉鎖を防ぐための openChat でメンバーパネルを開くための ref を使用する
ユーザーがメンバーパネルを開くと、メンバーをクリックしてチャットし、閉じます。 async session API 呼び出しが返される前のパネル、チャットウィンドウは パネルがまだ開いているかのように500pxオフセットで置かれる。 お問い合わせ openChat がメンバーをキャプチャしたので、呼び出し時にクロージャ...
Remove forced WebSocket headers from media middleware
Traefik v3 handles WebSocket Upgrade/Connection headers natively. Remove forced headers that broke non-WebSocket API requests.
ポートのTraefikによるRoute MediaServiceトラフィック 443
- クラスター内部サービスアクセス用の MEDIASERVICE URL env var を追加 - 最初に env var を使用する 9 API ルートで getMediaServiceBaseUrl を修正 - WebSocketのホックはTrefikによってmedia.kamocrm.com:443に接続します...
ポートのTraefikによるルートWebSocket 443
- service.yaml:podの実際のリスニングポートに合わせてポート80→8443を修正 - ingressroute.yaml: バックエンドのスキーム https + port 8443 を使用する - servertransport.yaml: バックエンド TLS の証明書に insecureSkipV...
リポジトリの可用性でコマース豆の状態を作る
Add ******************** に婚約 ライフサイクル そして CommerceService コマースリポジトリがいるときにのみ読み込みます スキャン。 UnsatisfiedDependencyExceptionをサービスで防いで下さい com.kamo をスキャンする MediaService ...
Add system account to all NATS configs
Add $SYS account with admin credentials to k0m1, k1m1, and k2m1 NATS configs. Enables nats CLI cluster management operations (peer removal, step-down, etc.) for...
NATS接続用のクラスター内部DNSを使用する
デフォルトNATS URLをWireGuard IP(100.64.x.x)から変更 nats.kamo.svc.cluster.local ローカルサーバ リモートノード (k0m1、k2m1)はWireGuard IPに残ります.
NATSが利用できなくなったときにアプリ起動を許可する
JetStream() から @ConditionalOnBean を削除し、@Nullable を 接続パラメータ。 natsConnection() が null を返すとき (NATS) unreachable)、ばねはUnsatisfiedDependencyExceptionと衝突しません.
Layout.tsx を削除し、docCount/historyCount タイプのエラーを修正
- 誤って追加されたレイアウトを削除(サイト全体に影響を与える) - page.tsx のラッパー div をリバート (不要) - グラデーションの背景をLeadViewClientのルートコンテナに移動 - 型のエラーを修正: docCount と HistoryCount は LeadInsights には存在し...
PipelineOrdersTab ベンダーのフィールド名をバックエンド DTO に合わせて更新
V.uid → v.id、v.name → v.companyName、および選択したVendorIdタイプを変更 数値から文字列へ CommerceMarketVendor DTO と整列します.
コマース市場向けのバックエンド DTO による TypeScript 型を揃える
CommerceMarket、CommerceMarketVendor、およびVendorCategory TypeScript インターフェイスは、間違ったフィールド名(uid/name vs id/title、名前vs)を使用しました companyName、websiteUrl対ウェブサイト、説明対ノート)。 こ...
パイプラインの市場はローディングおよび市場のマネージャーのレイアウトの間隔を置いていません
パイプラインは、getPOSConfig() から "No Commerce が設定されていない" を示すようになりました。 市場フィールドを返さない。 コマースMarketApiから市場をフェッチ 直接。 また、市場とフィールドの設定タブの間隔/パディングを固定 製品カタログの設計に一致して下さい.
POS の設定で 'u.map が機能しない、 Commerce nav を更新する
- コマースMarketApi(getMarkets、getVendorCategories、getMarketVendors、SeedVendorCategories)で防御的な配列抽出を追加して、包まれたAPIレスポンスを処理する - すべての6 POSタブを含む設定StatusWindow Commerceサブト...
