チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· kamo-shared-library
完全一致検索、ページ付きリスト、レシートのリポジトリクエリ
· kamo-shared-library
領収書タイムスタンプのMediaSessionMemberにLastViewed日付を追加
· kamo-shared-library
Add 添付ファイルアクセス制御のためのisAccessRevokedフラグ
· kamo-marketing
Distinguish actively-translating vs queued messages
The translation queue was already sequential, but every queued bubble rendered "Translating…". Now the single in-flight message shows "Translating…" with a pulsing dot and the rest show "Pending Translation…" with a static dot, so the visitor can see the queue progressing.
· kamo-internal
Distinguish actively-translating vs queued messages
The streaming queue was already strictly sequential (one fetch at a time), but every queued message rendered "Translating…" because they all shared the same pendingTranslation flag. Split that into two states: the single message currently in flight shows "Translating…" with a pulsing dot, all the other queued messages show "Pending Translation…" with a static dot. Live (just-arrived) messages are translated alone and start in the active state.
· kamo-marketing
Show error icon when a message fails to translate
When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders an AlertTriangle icon in red with tooltip "Failed to translate message." instead of silently leaving the bubble in the original language.
· kamo-internal
Show error icon when a message fails to translate
When the per-message translate call returns translated:false, errors out, or times out, the chat bubble now renders a small red ErrorOutline icon in place of the translate badge with tooltip "Failed to translate message." instead of silently leaving the bubble in the original language. The flag is reset whenever the user picks a new language so a re-attempt can succeed without the stale error sticking around.
· kamo-marketing
Stream translations newest-first for visitor history
When the visitor lands on a non-English locale and the support chat has existing English messages, every bubble flagged needsTranslation by the backend now shows a "Translating…" placeholder while a streaming queue fills them in one at a time, starting from the newest message. A generation counter prevents stale queues from clobbering current state.
· kamo-internal
Stream message translations newest-first on language switch
When the user picks a new language (or opens an existing chat in a language different from the messages' source), every bubble that needs translation immediately renders a "Translating…" placeholder and the translations stream in one at a time starting from the most recent message and working backwards. This includes the user's own past messages — anything authored in a different language than the viewer is now translated. A generation counter cancels in-flight queues if the user changes language again.
· kamo-marketing
Auto-translate visitor and agent messages
Live agent replies arriving in a language other than the visitor's URL locale now show a "Translating…" bubble while the TranslateService call resolves, then swap to the translated text with a Languages badge whose tooltip shows the source language and the original message. Visitor messages are tagged with the URL locale on send so the agent's chat can translate them into the agent's profile language. Messages loaded into history are translated up front via the new ?lang=<locale> query param on /api/chat/support.
· kamo-internal
Translate chat messages into the viewer's language
Adds a "My Language" flag picker in NavTop (left of the email tool, separated by a vertical rule). Selecting a language writes back to Member.language and syncs the locale cookie so the entire UI switches; it also broadcasts an event that any open ChatBox uses to re-fetch its history in the new language. ChatBox now fetches messages with ?lang=<locale>, renders translated bubbles with a small Translate badge whose tooltip shows the original text and source language, and shows a "Translating…" placeholder for live messages until the TranslateService call returns. The send path tags every outbound message with the author's locale so other viewers can translate it on demand.
· APIService
Proxy support-message translate endpoint
Adds a passthrough route for the new MediaService endpoint that translates a single support-chat message into the visitor's URL locale. The marketing-side chat widget hits **************** which the gateway now forwards to MediaService with the standard public-chat auth and rate-limit checks.
· MediaService
On-demand translation for chat and support messages
Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /translate endpoint. MediaService now talks to TranslateService via TranslationServiceClient, and MessageTranslationService caches results in MediaObjMsgTranslation so the same translation is never paid for twice. Wires the same flow into the public-chat (visitor) path: visitors send their URL locale as sourceLanguage, and the agent / visitor sides each pull translations into their own preferred language. Adds the translate-service secret to the MediaService deployment so the new client can authenticate.
· kamo-shared-library
Translation cache for chat messages
Adds the MediaObjMsgTranslation entity (one row per (message, language) pair) and an optional sourceLanguageId column on MediaObjMsg so chat messages can be translated on demand and re-served instantly to other viewers in the same language. ChatMessageDto carries sourceLanguageId so live recipients know whether they need to translate. MediaService.createMessage gains an overload that takes the authoring language, falling back to Member.language for legacy callers.
· kamo-internal
パーソナル+チャット/ドキュメント/ノート/KB/HRSを追加 セクション
/settings のインデックスは、毎回、非管理者のセクションを表示していません。 既存のセクションは管理者の権利(CONFIGURE SYSTEM)でゲートされました、 MANAGE * SETTINGS, MANAGE ACCESS RULES(マネジャー). 唯一のチームメンバー サポートの権利は、3枚のカードを正確に見ました(トピック、分析、スケジュールされた) サポート)その他何もない。 常に目に見えない個人的なセクションを追加します。 (私のプロフィール、オーディオ&ビデオ、 会計活動と計画と子供の組織の請求 ビューアー独自の /settings/member/<myId> タブ — なので、設定は空になりません。 orgレベルの権利に関係なく。 また、以前に従ったチャット/ドキュメント/ノート/知識を表面 ベース / HRS セクション — 各ゲートは、対応する org 機能フラグ 適切な MANAGE * SETTINGS を右に追加します。 /settings/features/<app> これらのアプリに既に存在するページ.
· kamo-internal
ビューポートアスペクト比に基づく目標の開口部を回転
ゴールフレームは、atan2(viewportH、viewportW)でチルトできるようになりました。 右側は、ビューポートの対角に向かって目指す - 16:9は、 開口部ポイント ~東南29°; ポートレート用ポイント 近く 南。 ユーザーが自然に頭を投げる方法を読みます 左上隅に向かって画面を戻します。 物理学:ゴールコリジョンがゴール-LOCALコロイドで動きます。 各スローン ヘッドの中心+速度はローカル フレーム、既存のAABBに回します 軸線の整列壁に対する衝突は変更されず、 押し出しおよび速度の反射は世界スペースに戻って回ります。 ザ・オブ・ザ・ スコアゾーンチェックもローカルコルドで行われますので、ヘッドは本物的に行われます (rotated) の開口部はまだスコアに入ります。 ビジュアル:SVGフレーム+エントリーサイドグローが回転中 コンテナ; お祝いオーバーレイ (GOAL!/MISS!) と REMOVE キャプション テキストが読みやすいように、回転の外側に座る。 今ミスシェイク ゼロの代わりにベースアングルの周りに振動します。 ゴール角度は、ステートセッターを介してビューポートのサイズに相当します。 並列 ref なので、スロー RAF は各フレームの最新の値を読みます コールバックを再処理することなく.
· kamo-internal
スコア/アンリミテッドのお祝いでゴールを投げる
132×132 ゴールフレームは、ヘッドが入るたびに左上に表示されます ソロドラッグまたはアクティブスロー、コーナーから56pxをオフセットするので、ヘッドは 過去や後ろを逃す。 3つの固体壁(上、左、底)はとして機能します 弾性バウンス面(0.65置換);右側は開いている エントリー バックパネルの大胆な赤色Xは、 "remove"インテントを作ります unmistakable、および脈動の記入項目の表示器は開いた側面に印を付けます。 投げられた頭部の中心がスコア ゾーンに交差するとき、それは取除かれます スローマップから、下向きのツールウィンドウを経由して閉じます tools:close と head は removeHead で削除されます。 緑の放射状 フラッシュ、18粒の金/オレンジバースト、GOALを弾く! オーバーレイ スコアの火。 投げられた頭部がちょうどあらゆる目的の壁を跳ねるとき (スパムイベントを1回失敗しないため、350msで消失) 赤とMISSの揺れ! オーバーレイパンチ。 安定性:目標の衝突は投げるRAFのループの中の完全に住んでいます (スプリングシステム含量なし)、ヘックスヘッドゴールゾーンはすべて所有 お祝いの状態を内部で — エンジンはイベントを始動させます。 ピュア 添加剤機能;非スロードラッグ/ドロップパスは変更されません.
· kamo-internal
プールテーブル衝突とコメット・トレイルによるスロー物理学
投げるしきい値がビューポートを渡って起動するヘッドを打つ 明示的な物理(摩擦、エッジバウンス、ヘッドvsヘッド弾性) ログイン スロードロップはまだリリースされた場所を正確に上陸させます。 頭の間 アーケードスタイルの火道が続く動きです。 Throw はリリース速度(>= 650 px/s の平均値)でゲートされます。 最後の ~110 ms) と総ドラッグ距離 (>= 30 px) なので、素早く正確 決して誤って投げをトリガーしません。 マグニチュードはでおおわれます 3200 px/s は、エッジ・オブ・ディット・フリック・タムを保ちます。 スロー RAF ループは、モーション値が .set() 経由で直接書き込みます。 フライト中はフレーム・モーション・スプリングを迂回し、セルフ・ストップ 停止速度のしきい値の下のすべての頭部は低下します。 placeHomeClusterおよび softPushCluster は、現在スローマップにあるアンカーをスキップします。 スプリングシステムは、物理インテグレータと戦うことはありません。 どんなクラスターからでもヘッドを取り外し、ソロクラスターに昇進して下さい、 衝突によって妨げられる衝動と投げられたシミュレーションに加わって下さい。 トレイルレンダー:SVGレイヤーと放射性勾配のエンベアー 位置、mix-blend-mode:付加的な白熱のためのスクリーン、単一のCSSの毛 柔らかさのためのフィルター — アーケード美学、ほぼゼロ CPU コスト.
· kamo-internal
サーバミントのOTKを使用して、新しいorgに切り替える
POST /api/security/org で返された otk をフォローアップに優先します。 /api/security/enter-asの往復。 サーバは新しい所有者をミントト org の作成の一環として、ポスト・クリエイトが新しいものにリダイレクト org's /validate は決定的です — ドメイン作成と競争なし サイレント・インプット・アスの失敗は、作成者を親組織のセッションに残します.
· SecurityService
ミントオーナー***+OTK on org作成
CreateOrganizationOwner を立ち上げた後、新しい所有者に縛られた新しい*** チームメンバーは、ID/members と一緒にOTK を返す。 これなしで クリエイターは、親組織のセッションにとどまります — 限られた権利と isOrganizationOwner=false — なので、新しい子 org の設定ページが表示されます。 ゲートとプラン&ビリングは、手動で再入力するまで隠されます.
· kamo-shared-library
スタートアップにおける自己healの未開発のCOMP注文
@PostConstructでは、すべてのAPPROVED COMPの注文をスキャンし、任意のものをプロビジョニング AccountSubscription がない。 イデムポテント — 発見または作成は、安全な手段 繰り返し実行します.
· kamo-internal
在庫状況のドロップダウンをビジネスの左側に移動
右側のアクションバーから左のウェルカムセクションにステータスピルを移し、挨拶セパレータとマイビジネスをディバイダーで配置します。 以前はアイコンボタンからステータスを分離した垂直ルールを削除します.
· kamo-internal
ターゲット組織を追加サブスクリプション注文タイプにIDを追加し、サブタイトルを作成 注文方法
· SecurityService
承認された注文から COMP サブスクリプションをアクティブにするプロビジョニングエンドポイントを追加
メニュー コールコール ******************** は、EntitlementService 経由でターゲット org のエンタイトルを無効化します.
· kamo-shared-library
COMP注文の承認の自動プロビジョンアカウントサブスクリプションとライセンスを割り当てる
- サブスクリプション注文: ターゲット組織を追加 (nullable FK を orgs) -**************** で targetOrganizationId 文字列を追加 - AccountRepository: 所有者メンバーによるアカウントの検索のためにfindByPrimaryMember Id を追加 - サブスクリプションサービス: 請求のリポジトリを注入する; 規定コンプサブスクリプションの作成/アップサート メニュー サブスクリプションメンバー、および ACTIVE AccountLicense ターゲット組織のメンバー; approveOrder は COMP の支払い方法を呼び出します; 既存の APPROVED COMP 注文のレトロなプロビジョニングのための新しいアクティベートオーダー
· kamo-internal
アクションポップアップ+サイズコントロールでクリックして開きます
ヘックスヘッドをクリックすると、洗練されたガラス形態のポップアップが開きます ツールウィンドウをすぐに開く代わりにコンテキストアクション。 メンバー チャット ヘッドを公開:チャットを開き、アカウントを表示し、電子メールを表示し、ミーティングを招待します。 コール(両側に登録された VOIP 拡張子があるとき); ツールヘッド <toolName> を開きます。 サイズ サブメニューは、ユーザが小/中/小/小 その特定の頭部(新しいによってメンバーごとに主張される)のために大きい MemberUiPreference store と、すべての人に影響を与えるグローバルスケールスライダ このマシンの六角頭(ローカルストレージに分散)。 今すぐツールウィンドウ 部分的にオフを開くことができないので、ビューポートへの幅/高さをクランプ シュルンケンウィンドウでも画面を移動します.
· InitializerService
MEMBER UI PREFERENCESテーブル(注文60)を追加
ジェネリック・パー・メンバーの UI-preference ストア・バックイングのための Idempotent CREATE hex-head ポップアップサイズセレクターと、ユーザー毎のUI設定。 Schema は EmbRecordState 条約 (is active, date created ) をミラーリングします。 date updated は、データモデルの他の場所で使われます.
· SecurityService
Add MemberUiPreferenceController for per-member UI settings
Backs the new hex-head popover size selector and any future small per- member UI preference. Endpoints under /api/security/members/me/ui- preferences resolve the member from the OTK session and read/write JSON values keyed by an opaque prefKey string.
· kamo-shared-library
Add MemberUiPreference entity for per-member UI prefs
Generic per-member UI preference store (memberId, prefKey, JSONB value) for small persisted UI settings. First consumer is the hex-head popover size selector.
· kamo-internal
ワイヤー機能子供向けgatingのプラットフォームサブスクリプションを管理する
FeatureManager がレガシーを呼んだ ************************ 実際のプラットフォームサブスクリプションを読む代わりに、投げる(ウンティングフォールバック)。 今すぐコール ******************** ルートorg's をクエリする コールワーズ・クロス・オーガナイズ会員の取引購読注文。 いつか caller は root の org で APPROVED COMP 順序、すべての特徴のゲートがとして開きますあります コンパイルされた子-org 管理者のために期待されます.
