Thêm Array.isArray bảo vệ trên trả lời API để ngăn chặn lỗi.map
ARI có thể trả lại các đối tượng lỗi thay vì các dãy khi bảng hậu phương chưa tồn tại. Bảo vệ mọi hoạt động với kiểm tra Array.
Enable redirect following for MaxMind download
MaxMind returns 302 redirect to the actual file. HttpClient wasn't following it, causing the sync to fail with HTTP 302.
Add Support section to settings page
Adds Topics, Notifications, and Status & Response Times cards that link to /support?tab=settings.
Add SecurityConfig to permit daemon trigger and actuator endpoints
Spring Security defaults blocked all endpoints with 401. Added explicit config to permit /api/daemon/** and /actuator/** without authentication.
Allow 6 settings cards per row on xl screens and hide Club House nav item
Settings page grids now scale to 6 columns at xl breakpoint. Club House menu item commented out in NavPri.
Update ticket popup tool window to use light theme matching chatColors
Replace dark theme (dark backgrounds, white text, amber accents) with the light color scheme used by all other popup tool windows in the app.
Remove MANAGE_SUPPORT conditional from settings/analytics tabs, enable NavPri slide-out
All tabs now always visible. Removed disablePanel from NavPri Support entry so the slide-out panel works on hover.
Make description textarea fill remaining popup window height
Removed minRows/maxRows constraints and set flex layout on the input root so the textarea expands to fill all available vertical space.
Add manual job trigger controller with duplicate execution guard
POST /api/daemon/trigger/{jobName} triggers any Quartz job immediately. Returns 409 if the job is already executing. GET /api/daemon/trigger/status returns runn...
Temporarily set geolite sync cron to every 2 minutes for testing
Will revert to weekly Sunday 3 AM after confirming sync works.
Sửa MediaObjmg Download FK để sử dụng MediaObjIg UUID
Các cột FK tổng hợp (OBJ ID, IMG ID) được tham khảo không-PK gây ra một loại Không trùng (uuid vt). Thay đổi sang chỉ một FK trên OBJ IMG ID MediaObjImg.ID (UUI...
Xây dựng lại với thư viện chia sẻ cố định (hay yêu cầu thời gian giải quyết avg)
Dùng yêu cầu bản quyền để có thời gian giải quyết avg để tránh khả năng hạn chế khả năng sử dụng EBragnaT (EPOCH)
Chữ thường 6 không thể áp dụng được cho dấu trừ thời gian (Tiếng kéo dài thời gian) Đã chuyển sang một yêu cầu đáp ứng tự nhiên rằng CockroachDB xử lý bản xứ.
Remove old help system, add support nav items
Delete app/help/ and app/components/help/ directories. Add SupportButton to NavTop toolbar and Support menu item to NavPri sidebar navigation.
Add frontend types and API proxy routes
TypeScript interfaces for all support DTOs and 13 API proxy routes forwarding to MediaService for topics, tickets, and reporting endpoints.
Add support ticket services, REST controllers, and STOMP relay
Implements the MediaService backend for the support ticket system: - SupportTopicService: CRUD for org-scoped support topics - SupportAssignmentService: round-r...
Redesign AI processing toggle as labeled switch with Assistant icon
Replace icon button with a toggle switch using the MUI Assistant icon, labeled "Train AI With This Note". Moved to the left of the save button. Renamed "Create"...
Send session replay data to Kafka when available instead of direct ClickHouse insert
Add deep-linking support to notes page via query param
Support /notes?id={noteId} URL pattern so AI chat source links can navigate directly to a specific note. Opens the note in edit view when the page loads with an...
Include clickable source links in RAG context for AI chat
Update RagClient to embed markdown links in the context sent to the AI model. KB articles link to /kb/{guid}, notes link to /notes?id={noteId}. Instructs the mo...
Add AI processing toggle to notes UI
Add aiProcessingEnabled field to Note types and toggle button in NoteEditor toolbar. Members can enable/disable AI processing per note, which controls whether n...
Remove notes code, moved to KBService
Notes management (controller, service, encryption) has been relocated to KBService where it better aligns with knowledge and content management responsibilities...
Route /api/notes to KBService instead of SecurityService
Notes management has been moved from SecurityService to KBService.
Pass memberId to RAG for note-aware AI chat
Add extractMemberId to SessionHelper. Update RagClient to send memberId in search requests so RAG returns both org KB articles and the member's own AI-enabled n...
Add note embedding support to RAG pipeline
Add NoteEventConsumer for NOTE_EVENTS NATS stream and NoteEmbeddingPipelineService for processing notes. Update Qdrant to store sourceType, memberId, noteId. Se...
Add notes management with RAG integration
Move notes CRUD from SecurityService to KBService. Add note encryption, NATS event publishing for RAG pipeline, and AI processing toggle support. Notes with AI ...
Add AI processing column and note embedding records table
Add AI_PROCESSING_ENABLED column to notes table and create NOTE_EMBEDDING_RECORDS table for tracking note RAG vectorization.
Thêm hỗ trợ xử lý AI cho mô hình dữ liệu ghi chú
Thêm trường AiProcessingEnabled để ghi chú thực thể, DTOs và yêu cầu. Tạo thư mục ghi lưu và kho phần mềm để theo dõi lưu ý chuyển hướng trong ống dẫn RAG.
Add filter toggle button to notes header
The sidebar collapse button was hidden behind the app's left nav bar. Replaced it with a filter icon toggle in the NotesHeader that is always accessible regardl...
Transparent server-side encryption with stable master key
- Add permanent notes.master-encryption-key to ConfigMap (was generating a random key on each pod restart, making old notes undecryptable) - Always encrypt ...
Clear undecryptable note content and disable encryption flag
When server-side decryption fails (corrupted data or key mismatch), clear the content and set isEncrypted=false on the entity so the note stops showing cipherte...
Decrypt encrypted notes in getAllNotes and searchNotes responses
getAllNotes and searchNotes were returning raw encrypted content for notes with isEncrypted=true. Now decrypts content server-side before returning, matching th...
Use sized avatar variants — medium for profiles/emails, small for nav/lists
Add size parameter to fetchMemberAvatar (defaults to 'sm'). Email signatures, email sending, profile headers, posts, comments, and hex heads now request the med...
Extract plain text from Lexical JSON for note card previews
The note content is now Lexical JSON, not HTML. The preview function was falling back to stripHtml which dumped raw JSON as the preview. Now parses Lexical JSON...
Như những gì anh thấy vận chuyển?
Mỗi một bản cập nhật này đều được tự động cập nhật trong không gian làm việc của bạn. Bắt đầu tự do và xem nó lớn lên tuần này qua tuần khác.