Split findChatSessionsForMemberPaged into First/After to fix empty Chats tab
HAVING CAST(null AS TIMESTAMP) IS NULL did not evaluate as expected in CockroachDB,
冗長チャットヘッダーボタンをドロップします。メンバー/チャットタブをパネルデザインと統合します
ChatHeader は、IconButtons の最小化/終了をしたが、チャット ツール ウィンドウ クロムは、すでにそれらの有価償を提供しています - 彼らはいつ複製されました 埋め込まれた。 ChatHeader は、アバタースタック、タイトルのポップアップだけを公開しています。 add-member アクション...
MediaObjTransit を @MapsId に切り替える
@IdClass と @Id @OneToOne との併用は、Hibernate 6 では確実にサポートされていません。 JpaRepository<MediaObjTransit, UUID> 初期化は "does not define" で失敗します 注釈を提示しても、IdClass」。 漢字JPAパターン 派生し...
ストリーミングフェッチボディで未使用の@ts-expect-errorをドロップ
`as RequestInit` は既に type エラーをサイレンスしている。ディレクティブは TSの厳密なモードの下の冗長性は生産の造りを壊します.
Kamo-shared-library 094e80d (MediaObjTransit @IdClass) を選択するためのトリガー再構築
MediaObjTransit に @IdClass を追加すると、 Spring Data JPA は、その派生 ID を公開することができます
Spring Data のメタモデルでは、主キーが主キーであるエンティティティティティティティティティティティティの @IdClass が必要です。 @Id @OneToOne によって得られる識別子。 それなしで、JpaRepository<MediaObjTransit、UID> 「IdClassを定義しない」で起...
プロキシは、検索または作成、メンバー、添付ファイル、イメージングプロキシ、ミュート、レボケのルートをルート
共有の抽出************************ヘルパーは、app/lib/mediaServiceUrl.ts.ts. プロキシ ルートを追加します。: 発見または作成, メンバー, 領収書, 添付ファイル (ストリーミング), ミュート, 見直し,
Paged chat list with previews, members, unread counts
that returns ChatListRowDto rows including last message preview, member summaries, per-session unread counts, and ownLastViewedAt.
Add countUnreadAfter(guid, memberId, since) to MediaObjRepository
Needed by paged chat-list endpoint to compute per-session unread counts when ownLastViewedAt is a LocalDateTime pointer rather than a message UUID.
Add @PrePersist to MediaObjImgDownload.dateCreated to satisfy NOT NULL on insert
Imaging proxy with HTTP Range support and per-member download tracking
Add MediaObjImgDownloadRepository with existsByObjImgIdAndMemberId
Required by ImagingProxyService (Task 10) to deduplicate per-member download tracking without a full table scan.
Add CHAT_ATTACHMENT assoc type with imaging-chat-attachments bucket
Skip creator in findOrCreateExactChatSession member loop (createChatSession already adds them)
Service methods for exact-match find/create, member add, mute, revoke, read
Probe timeout 10s and 2 gunicorn workers
LibreTranslate's /languages probe blocks on the gunicorn worker event loop. With a single worker translating a long chat message, the probe times out at the def...
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 puls...
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 pen...