チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· kamo-internal
エンタープライズマテリアルワークスペース(P0) — フォルダー、検索、一括、実際のプレビュー、共有メールコンポーサー
既存のイメージング上の完全な文書ワークスペースでフラット200-itemグリッドを置き換える バックエンド(すでにフォルダ、ゴミ、共有、履歴、MATERIALSのバルクをサポートしています): - フォルダサイドバー(create/rename/delete、ドラッグ・トゥ・フォルダ)+ 全/ゴミのビュー - 検索、ソート、グリッド<->list トグル、paginated 'load more' (200 キャップを削除します) - 一括選択+一括ダウンロード(ZIP)/メール/移動/削除 - 右手の細部の引出し:実質の下検分、インラインの名前+記述、移動に折目を移して下さい、 社内共有(メンバー、許可証、有効期限)、アクティビティ履歴 - 共有メッセージツールコンポーザーをグローバルツール:オープンイベントで再利用するメール (別注フォームではなく、CC/BCC、豊かなボディ、シグネチャ、ドラフト) - 新しいイメージングプロキシルート:フォルダー create/[id] rename+delete/move-doc, rename, 説明、復元、アクセスレベル - 重ねられた材料の Library を取除いて下さい;すべての Canva の特徴(create/import/autofill/) スケジュール) オーバー. imgIds は、すべての正確な文字列として扱われます.
· kamo-internal
オーバーホール /messages — iframe レンダリング、リストコンテキスト メニュー、スレッド、レース、a11y
/messagesページのエンドツーエンドの監査を実施します。 報告された問題: - 応答/Reply All/Forward ボタンはテキストラベルを表示します; より多くのアクションから削除 新規リストメニューが保持している間、ドロップダウン(隣接するボタン)。 - メッセージリストの行が共有されたアクションメニューを右クリックしてタッチで開きます ロングプレス メニュー 行の獲得 フォーカスリング(j/k)、選択チェックボックス(x)、スクロールイントビュー。 - インラインではなくサンドボックス自動高さiframe(srcdoc)でメールがレンダリングされます 危険なSetInnerHTML。 これは、電子メールCSS /レイアウトを分離します。 read-pane "bounce" とミッドドラッグテキスト選択損失、アプリ全体クローズ CSS-leak は、デフォルトの「外部画像ブロック」トラッキングピクセルゲートを追加します。 修正/バグ: - フルコンポーズの応答/Reply-Allは今In-Reply-to/References (unified DraftMessage)を置きました タイプ) 従って応答は通された滞在します; 速い層は参照+親ID、HTML-を通します 体をエスケープし、アクティブな共有/会員メールボックスから送信します。 - フォワードは元の添付ファイルを運びます;応答/フォワードは完全なメッセージを解決します (リスト・ロー・アクションのボディ取得) ではなく、開いているものを引用します。 - loadMessages/メッセージのレースガード(latest-wins)は/糸の負荷/ 会話ロード; もはやヤンクは、ページを張って 0 ページにユーザーを置きません; WS はフィルタリングをリロードします アクティブなフォルダーに、searchPage はクエリ変更時にリセットします。 - フォルダ+uid(クロスフォルダのコリジョン)によってキー化された状態を展開します。 マークRead 未読時のみ; 再試行は、フォルダプロップを使用します。 - 作曲: フラッシュ型-but-uncommitted の送信/ドラフト; 添付ファイル dedupe + 40MBの集約キャップ+機能更新;冗長クライアントOTKをドロップします。 - プロキシ: 転送範囲 + 添付/インラインストリーミング用のキャッシングバリデータ; 閉じる ガードされたプロビジョニングパスの乗用車庫アウト。 - 電子メールWebSocket:最高レトリス、指数関数的なバックオフ、安定した接続の後の実質の停止 再試行のリセット; 消費者再レンダリングを切断するメモ化されたコンテキスト値。 品質: 統一された******************************** a11y(アリアラベル) aria-pressed, キーボード操作可能な行/トグル); i18n (フォルダ名, リストの日付, Pagers、ICU複数);デッドコードとファントムキーボードショートカットエントリを削除.
· kamo-internal
器械のパネルの再設計 — アクセントの家族、マストヘッド、セクション索引 nav、統一されたガラス カード
2つの最も指示されたランディングを、権限型のオペレータのコンソールに再設計します。 財団について - 既に公開されているGeist Sans/Monoをオンにします(Arialフォールバックによって捨てられる)。 Geistを介してMUIタイポグラフィをルートします。 - 白色ラベルセーフ --accent-*モジュールファミリートークン、高度の梯子、ライトガラスのトップエッジ、オペレータラベル+ .tabularユーティリティ、および --ease-houseトークンを追加します。 修正 --gradient-primary-transparent (-color-primary から派生したハードコードされた青 → )。 共有機能カード(1つのコンポーネント、キーボード誤り) - 今度は実質のアンカー(NextLink):タブ/ Enter/middleの出版物の仕事および焦点見えないリングは最終的に火を始動できます。 使用を追加します。ReducedMotionガード、家の入り口を楽しませながら、家族向けライトチップ、注意カウントピップ、体重層、およびオンクリックパススルー。 レンダリングに捨てられたパーモジュールカラーの意図を復活させます。 フォークされたインラインホームカードを削除します。 ホーム > - マストヘッド(モンキーキー+時間/名前の挨拶+表のステータスストリップ)は、org専用のバナーを置き換えます。 oklab Backdropは、グレースケールマルチプライド透かしを置き換えます。 許可字型の2層ランチャーパッド(usage-orderedプライマリ+グループ化されたディレクトリ)は、「今日のNeeds you today」の注目ストリップと「Jump back in」(new useHomeRecent + Global LastRouteTracker); 適応スペース/emptyss = ステータスランドマーク)<1h></h>実際のランドマーク。 コンテンツ - レジストリ主導のレンダーは、18のコピーペーストされたCollapseブロックを置き換えます:スティッキーセクションインデックスレール+IntersectionObserverスクロールスパイ+ライブカウント、4つのスーパーグループ、プログレッシブディスク(パーソナルオープン、最近のマルウェア、最終セクションの復元、展開/崩壊すべて)、セクションヘッダーのインストゥルメント行、および固定クイックアクセス(正しいMAX RECENTスライス+相対時間+ここで開始)。 すべての許可/製品フラグゲートを正確に保存します。 クロスカット: skeleton + EmptyState, 好ましい-還元-透明性 + 減-motion パス, per-locale オペレータ-ラベルキャップのオプトアウト. 仲間のコミットでkamo-translation-dictionary (en) に新しい UI 文字列が上陸します.
· kamo-shared-library
******************** ターゲット更新
非同期変換(仮想スレッド)とスケジュールされたスワップは、分離された ImgDat を保持します。 save()/merge() カスケードを orphanRemoval=true イメージコレクションに変換し、投げる 'cascade=all-delete-orphan のコレクションは、所有によって参照されなかった 実体インスタンス。 ちょうどサムネイル列の一括更新は、エンティティティグラフを避けます すべてのスレッドから完全に安全です.
· kamo-internal
Add 応答 ペインとスレッドビューを読み込むメッセージのすべて
スタッフ 全てが広告(キーボードショートカットラベル+i18nキー)だったが、 ハンドラ。 ワイヤー それ アップ: 新しい computeReplyAllRecipients のヘルパーは送り装置を入れます Cc の他の元の受取人に対して、自己および重複を除く ケースを意識的に。 ボタン、 `a` ショートカット、コンテキストメニューエントリを追加 MessageBrowser では、TreadDetailView のメッセージごとのボタンを加えて下さい.
· InitializerService
パーローンごとに1つのアクティブクローズパッケージを強制するPartial-uniqueインデックス(eCloseのバックストップ)
クリエイト・ユニク・インデックス uk mlos closing pkg active loan オンmlos closing package (loan file uid) WHEREステータス <> 'CANCELLED' 後ろの耐久のバックストップ アセンバーのアプリ内出血ガード:重複アクティブな閉鎖パッケージは 独自のMERS登録+資金調達(ダブルクローズ)を実施 クローズパッケージ 非unique @Index エントリのみで共有lib に住んでいると表現できない JPAを介した部分的なunique制約なので、ここで手書きDDLです(KI Owns) スキーマ Idempotent は、次の KI の実行に適用されます.
· MediaService
Thumbnail のスケジュール生成された材料のプロセス
ヘッドレススイープは、コンバージョンサービスのOTKサムネイルパイプラインを駆動できないため、 エクスポート保存直後にimageIO経由でページ-0 PNGサムネイルを生成する — スケジュールされた材料は、必要に応じて埋め戻しは必要ありません.
· kamo-internal
再発生成スケジュール UI
ScheduleManager: 作成/リスト/削除のスケジュール(予定+毎日/週単位+) 時間/日+任意自動ポストのターゲット+キャプション);材料、ゲートから始まりました Canvaのオートフィル(エンタープライズ)機能。 + canvaApi + /api/canva/schedulesプロキシ.
· MediaService
スケジュールされた生成 — sweep は、アカデミーでレシピを実行します
- CanvaScheduleController: orgのスケジュールのCRUD (recipe + cadence + 1日 + オプションのソーシャルターゲット)、次の計算RunAt - キャンバス生成 サービス: ヘッドレス メニュー 素材(プロセス内イメージサービス、バックフィルまでサムネイルレス) - CanvaScheduleSweep:@Scheduledスイープ、原子ごとのスケジュール要求、発生および 最善のオートポストは、ターゲットの社会的つながりに結果をもたらします 署名されたパブリックURLシーム
· kamo-shared-library
CanvaSchedule 実体 + リポ (再発生成)
Org-scoped 再帰スケジュール (recipe + cadence + オプションのソーシャルターゲット) と 原子宣言クエリで、MediaService のスイープが各デューススケジュールを一度実行できるようにします.
· kamo-internal
ソフトフォンボイスメール+通話履歴行で展開可能なウィスパートランスクリプト
記録された行(ボイスメールと通話履歴)は、「Transcript」のトグルを取得します。 録音のウィスパーのトランスクリプトをオンデマンドで取得し、インラインに表示するので、 プレイヤーを開かずにメンバーを閲覧できます。 記録ごとのキャッシュ.
· kamo-internal
保存+自動充填レシピを再使用
TemplateAutofill:「保存されたレシピ」チップは、テンプレート+プレフィルドマッピングをロードします。 「レシピとして保存」は、現在のテンプレート+フィールドの値org-wideを主張します。 + canvaApi リスト/保存/削除 + /api/canva/recipes プロキシ.
· MediaService
保存されたオートフィルレシピCRUD(org-scoped)
CanvaRecipeController: GET/POST /api/media/canva/recipes + DELETE /{id} — save/list/soft-delete という名前のブランドテンプレート + フィールドマッピング、スコープ付き コールワーズ org.
· kamo-shared-library
CanvaAutofillRecipe 実体 + リポ (保存されたオートフィルのレシピ)
Org-shared は Canva ブランドのテンプレートのバインディングをフィールド値(Liteal)に命名しました。 テキストや材料のイメージ)ので、スチュワードは標準データマージを再実行できます.
· kamo-internal
フォーム、詳細ページ、およびインポートを作成するためにMaterial ID フィールドを追加します
リードタイプ、リードApi を経由して、無効なMaterialId (最大 40) をスレッド (作成+更新ワイヤ要求)、および共有リードフィールド 手動インポートウィザードとAPI/ベンダーの両方を駆動するリスト intake マッピング UI (さらに、ダウンロード可能な CSV テンプレート)。 入力を追加する /leads/new と、リード詳細ページにあるビュー/編集行、 リアルタイムペインフラッシュマップ。 lead.new.fields/リード.view.fields/ によるラベル Lead.view.rows(MaterialId).
· kamo-internal
エンタープライズオートフィルUI — データマージのブランドテンプレート
TemplateAutofill:Canvaのブランドのテンプレートを選び、各フィールドをリットルで埋めます テキスト、org/compliance トークン(NMLS #、Equal ハウジングの開示、org name/phone/ ウェブサイト/アドレス、メンバー名)、またはマテリアルイメージ。データマージを生成する 材料に設計し、輸入して下さい。 Canva `autofill` でゲート (エンタープライズ) 機能。 + canvaApi メソッドと /api/canva/{brand-templates, メニュー プロキシ.
· MediaService
エンタープライズオートフィル — データマージのブランドテンプレート
- CanvaApiClient:リストブランドテンプレート(dataset=non empty)、データセットを取得する アセット・アップ・ロードのジョブ、作成/ウィジェットの自動ジョブ - CanvaController: GET /brand-templates、GET /brand-templates/{id}/dataset、 POST /autofill — 参照された MATERIALS をアップロードすることでイメージフィールドを解決 アセットとして Canva に材料を、データマージします。新しい設計に投票します。 Canva 403 (オートフィル機能なし) は autofill not available として表します.
· SecurityService
手動輸入+ APIの取入口のPersistによってマッピングされる物質的なID
SetDirectFieldOnCreateRequest はデフォルトケースが不足しているため、 unmapped systemFieldPath はサイレントにドロップされます。 MaterialId ケースを追加 手動インポート (LeadImportController) とベンダー/ API インテーク (LeadIntakeController) ディスパッチャは、マッピングされたマテリアルIDの列/フィールドが実際に主張するので.
· kamo-shared-library
共有ライブラリにMaterial ID フィールドエンドツーエンドを追加
リードエンサー (MATERIAL ID) に nullable, max-40-char 素材Id を追加 VARCHAR(40))、LeadHistoryFieldRegistry(プロファイルカテゴリ)に登録 編集は監査され、 Create/Update/Read DTO を通してそれを通します。 LeadService create/update (trim + tuncate to 40, ミラーリング companyName), ベースで保存します<->mortgage リード変換.
· kamo-internal
ソーシャルアタッチ+メール素材+パブリックリンク
新規署名されたパブリックURLシーム上に構築されたマーケティング資料の配布。 - MaterialApi.publicLink(imgId)+ /api/materials/linkプロキシ - 資料:「コピー公開リンク」と「この資料をメール」(ファイルに添付) 既存のマルチパート/api/email/send を経由して、org 電子メールでゲートアウトバウンド送信) - MaterialPickerDialog(マテリアルのassoc上の再使用可能な格子) - SocialComposer: 一度無効なフォトボタンがピッカーを開き、添付します 公開URL(メタ/テレグラム/Discord)によるポストメディアとしての素材
· MediaService
マーケティングアセットの公開URLを短命署名
ソーシャルプロバイダー(Meta)とEメールがバインドされた特定の材料を受け取りましょう プライベートイメージング素材の Bucket を露出せずにウィンドウ。 - MaterialUrlSigner:HMAC-SHA256(platform.enc-key)トークン = imgId:orgId:exp、1h TTL ・MaterialController: POST /api/media/materials/link (auth → mint URL for a) オルガ所有のマテリアルズ画像 + GET ******************** (unauth) → 有効なトークンのバイト、org + の割り当てチェック) 既存のに乗る sessionless /api/media/** 転送 — APIService の変更は必要ありません.
· kamo-shared-library
一流の借り手自己送金移行****************************
DRAFT→APPLICATION TAKEN 借り手 (ローンパーティー、演算子ではなく、 LOS TAKE アプリケーション スコープ付き述語でtransition() を通したルート テイク・アプリケーションの権利とピントされたtoStatusIdだけを付与するので、借り手 提出は適切なパイプラインの移行になります — ステート・マシンの合法性、 hash-chained マイルストーン、ApplicationSubmission(INITIAL DISCLOSURE)、および afterCommit STATUS CHANGEイベント — サイレントローンファイルステータスポークの代わりに。 Loan-party会員は、電話機で確認されています.
· kamo-internal
削除 + プレビュー + インポートファイルからCanva
- 確認で材料(MANAGE MATERIALSでゲート)を削除 - サムネイルをクリックしてライトボックスにプレビューします - 「ファイルをインポート」は、PDF/PPTX/imageを編集可能なCanvaデザインに変換します (プロキシは、画像アップローダーのようなマルチパートボディを再構築)
· MediaService
Canvaにファイルを編集可能な設計としてインポートする
メニュー (バイナリ設計輸入) - CanvaController POST /imports (multipart) → create+poll インポートジョブ → エディタ correlation state とのディープリンク - CanvaOAuthController で Base64 のインポートを未使用に変更
· InitializerService
移行は、records.transcript TEXT カラムを追加します
· VOIPService
ソフトフォンプレーヤーのメタデータを録音するトランスクリプトを返す
· kamo-internal
ソフトフォンメディアプレーヤーでウィスパートランスクリプトを表示する
· ConversionService
共有 TranscriptionService + 汎用エンドポイント; VOIP 録画をトランク
- 再使用可能なトランスクリプションを抽出する(ffmpeg は → ウィスパー アサー を正規化します) 一般的な POST /api/conversion/transcribe エンドポイント、 meet 固有の置換 コントローラー。 TalkEnglishのオフライン版をダウンロードし、8000を超える音声ファイルと800ページを超えるレッスンで英語漬けになって、もっと速く英語を話せるように勉強しよう。そうすれば、インターネットに接続していなくても勉強ができ、MP3プレーヤーを使っていつでも音声ファイルを聞くことができます。 - RecordingProcessController: 最終化された VOIP 録画/ボイスメールをトランクアウト プロセス内(失敗時に非致命的)、記録にトランスクリプトを保存します.
· kamo-shared-library
記録+記録Metadata上のTranscriptカラム
TRANSCRIPT TEXT カラムをレコードのエンティティティに追加し、トランスクリプトをスレッド メニュー (後方コンパット付き) 既存の5~9argのコータが影響を受けないコンストラクタ。 ポップアップ Whisper によるレコーディング・フィナライズ・フロー。KI のマイグレーションによって作成される.
· MediaService
Return-nav JWT 署名を検証します。 tidy トークンが更新されます
- CanvaJwtVerifier: correlation jwt's Ed25519シグネチャをに対して確認する CanvaのJWKS(/connect/keys)、およびaud/exp/type;子供によってキャッシュされるキー。 チェックが失敗すると、手動のインポートに閉じられなかった。 - CanvaTokenService: 自己呼び出されるの無効な@Transactionalを落として下さい リフレッシュ/マークダウンヘルパー(スプリングデータのパーコールtx + 1人当たりロック) すでにトークンの回転を正しくします。コメントで明確にします.
