Translate small components subdirs
24 files across **************** **************** hardcoded UI strings now use t() with keys grouped by directory under components.* namespace. SmsChatTab.tsx d...
Translate error/loading/not-found pages
Use t() for ERROR badge, headline, subtitle, action buttons, and support link on error.tsx; loading message on loading.tsx; random message and description array...
Translate hardcoded UI
commerce (10 files): applications, bookings, commitments, orders, procurement, requests, service, service-requests, signups, subscriptions detail pages. setting...
Tambahkan harga kotak surat @ kamocrm.com dan luar IMAP NodePort
- Surat Layanan Baru / dovebot-imap- eksternal (NodePort 30143 - > 143) jadi IMAP dapat dicapai dari luar cluster pada $NODE: 30143. - Harga benih @ kamocrm.com...
Publikasikan acara NAS CREATE setelah transaksi berkomitmen untuk memperbaiki perlombaan lampiran gambar
Pesan NATS diterbitkan di dalam tubuh @ Transaksional, yang berarti penerima dapat menerima acara CREATE dan meminta gambar melalui / imaging / proxy / {objImgI...
Serialize attachments in WS relay and message history; allow attachment-only sends
Three bugs fixed: 1. ChatSessionSubscriptionManager was building the STOMP messageMap manually and omitting attachments, sourceLanguageId, readMemberId, msg...
Add attachments and event fields to ChatMessageDto; ignore unknown fields
ChatMessageDto was missing `attachments`, `readMemberId`, `msgIdLastViewed`, `dateLastViewed`, `addedMemberId`, `objImgId`, `transitMemberId`, and `isJoin` fiel...
Fix NPE in getChatSessions from Map.of() rejecting null nextcoder
java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...
Defects C/D/E — title display name, toolbar layout, header lift
Defect C: Add GET proxy for /sessions/{guid}/members so ChatBox.loadMembers() can populate the SessionMember.name field. ChatTool already uses members[0].name f...
Add GET /sessions/{guid}/members endpoint with display-name priority
Returns member list with name resolved via usernameAlias → fullName → alias → username, matching the same priority as the chat sessions list. This feeds ChatBox...
Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)
Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...
Prefer usernameAlias over User.name in memberDisplayName
Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...
Derive and dispatch tool window title from session members
Adds onMembersChange callback to ChatBox; ChatTool derives the title (single name for 1-on-1, or '<name> (+N more)' for groups) and dispatches tool:title to upd...
Collapse toolbar, remove ChatHeader, add members intro row
- Delete ChatHeader row from embedded chat; move Add Member icon into unified toolbar - Toolbar: search input on left, VideoCall icon + PersonAdd icon + scroll-...
Lift search above tab strip, share query across Members and Chats tabs
Moves the search TextField from MemberList into NavTopPanel above the Tabs. Passes searchQuery as a prop to both MemberList and ChatsList so a single field filt...
Show upload error toast in Composer when attachments fail
Catches errors thrown by uploadAll() and renders an MUI Alert above the input row. Root cause of Defect 4 was the missing MinIO bucket (imaging-chat-attachments...
Empty Chats tab — frontend already expects {rows} paged shape (no change needed)
The ChatsList component already reads data.rows. Backend fix (shared-lib + MediaService) is the root cause: HAVING CAST(null AS TIMESTAMP) IS NULL did not work ...
Use split First/After queries for chat sessions paged endpoint
Addresses empty Chats tab by dispatching to ****************
Split findChatSessionsForMemberPaged into First/After to fix empty Chats tab
HAVING CAST(null AS TIMESTAMP) IS NULL did not evaluate as expected in CockroachDB,
Drop tombol header obrolan redundan; mengintegrasikan Anggota / Percakapan tab dengan desain panel
ChatHeader memiliki IconButons minimim / close tetapi jendela alat obrolan krom sudah menyediakan mereka affordansi - mereka duplikat ketika tertanam. ChatHeade...
Rebuilt against kamo- shared-library fc5ee35 (MediaObjTransit @ Maps Id)
Rebuilt against kamo- shared-library fc5ee35 (MediaObjTransit @ Maps Id)
Ganti MediaObjTransit ke pola identitas @ MapsId
@ IdClass dikombinasikan dengan @ Id @ OneToOne tidak dapat dipercaya didukung dalam Hibernasi 6 - JpaRepositori < MediaObjTransit, UUID > inisialisasi gagal de...
Drop tidak digunakan @ ts-expect-error di streaming fetch body
'as RequestInit' cast telah membungkam tipe error; direktif adalah redundan di bawah TS ketat mode dan istirahat produksi bangunan.
Trigger membangun kembali untuk mengambil kamo- shared-library 094e80d (MediaObjTransit @ IdClass)
Trigger membangun kembali untuk mengambil kamo- shared-library 094e80d (MediaObjTransit @ IdClass)
Trigger membangun kembali untuk mengambil kamo- shared-library 094e80d (MediaObjTransit @ IdClass)
Trigger membangun kembali untuk mengambil kamo- shared-library 094e80d (MediaObjTransit @ IdClass)
Tambahkan @ IdClass untuk MediaObjTransit sehingga Data Spring JPA dapat mengekspos ID yang berasal
Metamodel data musim semi membutuhkan @ IdClass untuk entitas yang merupakan kunci utama @ Id @ OneToOne identifier turunan. Tanpa itu, JpaRepositori < MediaObj...
Augment tidak dibaca disiarkan dengan muatan AKTIVITY untuk pencarian-daftar pemutakhiran
Langsung chats-list pemutakhiran melalui saluran NAS yang belum dibaca
Daftar percakapan dengan gulungan tak terbatas, dibuat secara virtual melalui IntersectionObserver
Header obrolan dengan avatar stack, judul popover, dan anggota picker
Komposer dengan drag-drop, chip lampiran yang tertunda, masukan multi-line
Seperti apa yang Anda lihat pengiriman?
Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.