Add BranchTitleResolution、resolutionEffectiveBranchTitles、updateBranchTitles
Add branch setup implementation plan
12-task sequential plan covering kamo-shared-library, SecurityService, and kamo-internal changes end-to-end.
Add branch setup design spec
Covers the full feature from kamo-shared-library schema changes through SecurityService session/endpoint changes to kamo-internal UI and API proxy.
DBメンバーによるメッセージの閲覧をスキップ
RedisからMemberIDを読み取るgetMemberIdFromRequest()を抽出する DBを打たずにセッション。 ではなく getMessages() で使う getCurrentMember() — メンバーのエンティティティティティティティティティティは、そこにヌルチェックされただけだった。 決して使...
Eliminate OTK Redis overhead and proxy log noise for message fetches
- Bypass OTK generation in the MediaService proxy route: forward the *** cookie directly instead of generating a one-time key, removing 4 Redis round-trips ...
オーバーヘッドと非同期TTLのリフレッシュをロギングする
- k8sコンフィグマップ(実際の生産コンフィグ):低セキュリティ/ヒカリ INFO/DEBUG から WARN へのロギング、HikariCP プールの設定 (最大 20) - KSessionService: ストリップ ~60 System.out.println は、火災した呼び出し 128-char セッショ...
ログノイズとトーン接続プールを削減
- TRACEからWARN、HikariCPへのスプリングセキュリティをDEBUGから下げる WARN — リクエストごとの同期ログ書き込みの数十を排除 - 明示的なHikariCPプールコンフィグ(最大20、ミニアイドル5)を追加して防止 同時負荷下での接続排気 - getCurrentMember() から 14 ...
応答N+1を除去する同じクエリで親メッセージをフェッチ
Alias m.msg と LEFT JOIN FETCH msg.parent ので、スレッド応答 メッセージには、初期クエリではなく親が読み込まれている 応答ごとに別のSELECTをトリガーする
チャットメッセージの読み込み性能を向上させる
- Cache getCurrentMemberId() は、繰り返された /api/user-info を避けるために ref の結果 すべてのWebSocketメッセージとタイピングインジケーターの呼び出し - Promise.all でメッセージ履歴 fetch と user-info fetch を並列化します...
チャットメッセージエンドポイントからメッセージロギングを一枚削除
System.out.println 呼び出しをメッセージストリームマップ内で削除 1回のメッセージ(1リクエストあたり100 I/Oの操作)と最終処理 すべてのメッセージを再びストリーミングして、ログインのためのメンバーIDを収集するログ
Fix N+1クエリとチャットメッセージの読み込みのためのコンポジットインデックスを追加
- LEFT JOIN FETCH m.msg をリポジトリのクエリの両方にEagerly load に追加する 同じクエリでMediaObjMsg、最大100個の追加のSQLクエリを排除 チャットウィンドウが開きます - カバーに合成インデックス(SESSION ID、IS REMOVED、DATE CREATED)...
外部のダークモードCSSを上書きするために光モードを強制する
- Tailwind darkMode を 'class' に設定して、OS の優先度がダークユーティリティをトリガーするのを防ぐ - 光モード変数をロックするためにglobals.cssで!importantオーバーライドを追加 - 外部CSSがDynamicMetaLoaderにロードした後、インラインスタイルを注...
Resolve horizontal overlap, follower blind spot, and timing bugs
- flyToHomeRow: compute per-follower actual dx extents to derive rightBuffer/leftBuffer independently, placing anchor correctly to prevent ring followers from...
OSカラースキームの設定に関係なく、強制光モード
削除されると、サイトは常にライトモードでレンダリングされるため、色調のダークメディアクエリが優先されます.
ビューボックスの作物を介してSVGに保存されたサイズのスライダーズーム
Avatar Creatorの内部スケール変換は、SVG内のアバターボディをズーム キャンバス、しかし効果は小さい表示サイズ(例えばaで含んでいます)で浸透性です 140x140 アバターコンポーネント プレビューは冗長CSSを使っていました 変換: scale() は zoom を表示していますが、CSS は決してそ...
アバタープレビューから冗長CSSスケール変換を削除します
Avatar Creatorのスケールオプションは、SVGグループとして既にスケール(N/100)を適用しています。 アバターボディを変形させます。 プレビューコンテナも適用されました CSS の変形: スケール(N/100)、効果(2.5 の × 2.5 = 6.25x の混合 250%). これは、プレビューは大幅...
MakeRoom およびポストドックの衝突の決断を実装して下さい
No-op の hexheads:makeRoom のリスナーを実際のハンドラで置き換えます 新しいツールウィンドウの DOM の rect の後に resolveCollisions を実行する 安定しています。 リスナーリークを修正(匿名で、クリーンアップしません)。 また、wrapperAroundDockの後に...
ノンサップの低下およびswaarmの後で衝突を解決して下さい
非スナップドロップで、ポジションを節約する前に、requireCollisionsを実行します。 右下隅にスタッキングを防止します。 Swarmの低下はまた resolveCollisions を実行し、正しく永続的な位置を持続させます.
FlyToHomeRowのグループウェアスロット幅
グループは現在、水平スロットをフォロワーに比例して保持 リング範囲(正しいフラットトップの軸式を使用して)、グループを防ぐ 隣接するアンカーのスペースを侵入するフォロワー。 また、 配置後の安全網として二重rAFの解決衝突は渡します.
解決を追加するCollisions useCallback
ヘッドツーヘッドとヘッドツーツールウィンドウの空間違反を検出 オフエンドヘッドを最も近い清潔な位置に動かして下さい スパイラルサーチ 読書を避けるために二重rAFによって呼ばれなければならない ミッドアニメーションモーションバリューポジション.
Add MIN GAP定数とスパイラル検索ヘルパー
5px の最小ギャップ invariant 定数とスパイラル検索を追加 最も近いコリジョンフリーピクセル位置を見つける機能 ヘッド・ツー・ヘッドおよびヘッド・ツー・ツール窓の整理を点検する六角頭.
Hexhead の衝突の修正の実装計画を加えて下さい
5-task プラン カバー: SpiralSearch ヘルパー、requireCollisions useCallback、 グループウェア FlyToHomeRow、onUp 非スナップ/スワーム配線、makeRoom/ wrapAroundDock イベントハンドラの修正.
Z-index DOM のソートを削除し、クリックイベントがフォーカスを落とすのを防ぐ
ToolDock の zIndex でウィンドウをソートすると、DOM ノードがすべてのノードで再配置されました。 フォーカスイベント(マウスダウン) ブラウザは、そのターゲット要素がクリックイベントをドロップする マウスダウンとマウスアップの間を移動し、2つ目のクリックでボタンをアクティブにします。 CSS z-in...
Add hexhead collision fixes design spec
Spec covers three hexhead UX bugs: horizontal bottom-row vertex overlap, bottom-right stacking when dropping without snap, and hexheads ending up behind tool wi...
Bake background color/gradient into saved Avatar Creator avatar SVG
Avatar Creator generates transparent-background SVGs by default. The background was only applied as a CSS wrapper on the preview container, so the stored MinIO ...
Dispatch member-panel-toggle via useEffect to avoid stale Framer Motion closure
onAnimationStart/Complete hold the last rendered props, so the exit animation always saw isOpen=true and windows never relayed to the right on close. Using a us...
Correct member-panel-toggle event property so tool windows respect panel offset
The event was dispatching `{ isOpen }` but ToolWindowsContext read `detail.open`, causing memberPanelOpenRef to always be falsy and the 500px panel offset to ne...
Eliminate hexhead spawn overlap by computing unique column positions
Each head now initialises its MotionValue at its own home-row column X and below the viewport (h + SIZE), then springs up to its final slot. Previously all head...
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.