Move Live Preview label into email header bar, remove Copy HTML button
Live Preview title and icon now sit right-aligned inside the To/Subject header bar. Removed the Copy HTML button and all clipboard logic.
Move source selector into builder header, 2-col templates, wider preview
- Move Source dropdown from top card into the builder panel header bar (matching the Live Preview title position) - Remove Undo and Reset buttons entirely - C...
Add near/far background colors, margin/padding sliders, center email option
Design tab additions: - Near Background color (content area background, default white) - Far Background color (outer email area background, default white) - Mar...
Add image scale sliders, signature image type, and footer alignment
- Add three image source selectors: Header Image, Signature Image, Footer Image (each with None / Member Avatar / Logo Simple / Logo Full options) - Add scale...
Replace photo upload with Header/Footer image source selectors
Replace the drag-and-drop photo upload with two dropdown selectors: - Header Image: None | Member Avatar | Logo Simple | Logo Full - Footer Image: same options ...
Add Header tab with 29 header templates and rename UI labels
- Add "Header" tab with 29 email header templates (banner, accent, branded, decorative categories) plus "No Header" option - Rename "Template" tab to "Signatu...
Prevent live preview panel from overflowing right edge
Change builder and preview panels from fixed flex-basis (55%/45%) to shrinkable flex so the gap between them is properly accounted for.
Add 21 additional email signature templates
Add elegant-border, two-column-grid, banner-top, gradient-accent, card-style, left-aligned-clean, right-photo, centered-minimal, executive, creative-blocks, tec...
Use richTextExtension.configure() instead of RichTextExtension class
RichTextExtension class is not exported from the published @lexkit/editor package. Use the exported richTextExtension instance with .configure().
Remove duplicate ContentEditable — use RichTextExtension's plugin
The richTextExtension already renders its own ContentEditable via RichTextPlugin. Having a second manual ContentEditable created two editable areas. Remove the ...
Rebuild email signature manager with template-based visual builder
Replace the basic Quill rich text editor with a structured, form-driven signature builder featuring 8 professional templates, design customization controls (col...
Overhaul KB editor and article page layouts
Fix editor component: - Wrap in flex column container so toolbar stays fixed and content area scrolls independently - Use position:relative on content wrapper...
Add unpublish and delete buttons to KB article view
Add Unpublish button (visible on PUBLISHED articles) that reverts to DRAFT and removes from AI chat. Add Delete button with confirmation dialog. Add proxy route...
Handle unpublished events by removing vectors from Qdrant
When an article is unpublished, delete its vectors from Qdrant so the AI chat no longer references it.
Add unpublish endpoint for KB articles
Add POST /articles/{guid}/unpublish that sets status back to DRAFT and publishes a kb.article.unpublished NATS event so RAGService can remove the article from t...
Add search request/response logging to RagSearchController
Log orgId, query, result count, and full stack traces on error to diagnose 500 responses seen from AIService.
Add response body and request logging to RagClient for debugging
Log the RAG search request URL, orgId, query, and response body on error to diagnose 500 responses from RAGService.
Enable auto-truncate on embedding model to prevent 413 errors
Add --auto-truncate flag so inputs exceeding the 256 token limit are silently truncated instead of rejected with a validation error.
Reduce chunk size to fit all-MiniLM-L6-v2 token limit (256 max)
Chunk target was 2000 chars (~512 tokens) but the embedding model only accepts 256 tokens, causing 413 validation errors. Reduce to 800 chars (~200 tokens) with...
Load embedding model from local hostPath to prevent HuggingFace download failures
The embedding-model pod was in CrashLoopBackOff because it couldn't download the model from HuggingFace on startup (network/DNS issue). Mount the model from a h...
Use integer match filter for Qdrant searches instead of matchKeyword
The orgId and articleId payload fields are stored as integers via value(Long), but search and delete filters used matchKeyword() which only matches string/keywo...
Index KB articles for RAG on creation, not just when published
Previously the RAG pipeline only indexed PUBLISHED articles, requiring the full review/approval cycle before the AI chat could reference them. Now indexes all a...
Actualizare comentarii pagină pentru a potrivi câmpurile de răspuns backend îmbogățit
Utilizați uid ca cheie, articolGuid pentru navigare, articol Titlu pentru afișare, şi data Trimite pentru data. Se potrivește cu noul format de răspuns backend ...
Return article guid/title in pending reviews response
The KbArticleReview entity has @JsonIgnore on article, so the pending reviews endpoint was returning reviews without article details (guid, title). Now uses eag...
Adăugați o cerere dornică pentru recenzii în curs cu detalii articol
Adaugă ***************** cerere de aderare a FETCHES entitatea din articolul astfel încât să revizuiască listele poate include articol guid/titlu Fără LazyIniti...
Comment
Citește errData.error (counting backend JSON format) în loc de ErrData.mesaj. Fix proxy pentru a transmite erorile JSON direct în loc să le înfăşori într-un alt...
Add error handling to createArticle endpoint
Wrap createArticle call in try-catch to return proper JSON error responses instead of Spring Boot's default HTML error page.
Add missing richTextExtension to enable editor text input
The RichTextPlugin from richTextExtension is required for the Lexical is silently ignored.
Add ShadCN-inspired editor theme with visible table borders
Add a comprehensive CSS theme for the LexKit editor with styled typography, visible table cell borders, code block styling, blockquote formatting, and syntax hi...
Add shared KB layout with persistent tabs and fix reviews page error
Create app/kb/layout.tsx with KbNavBar tabs shared across Articles, Resources, and Pending Reviews pages. Remove duplicate outer shells and fixed positioning fr...
Replace Plate.js with LexKit editor and add KB resource management
Replace Plate.js editor with LexKit (Lexical-based) including custom Video, Audio, and MediaCard extensions. Add WordPress-style media browser with drag-and-dro...
Add org-level resource management and article-media linking APIs
Rewrite KbMediaService/Controller for org-level media CRUD with paginated listing, search, metadata update, and soft delete. Add article-media link/unlink/sync ...
Decuplează media KB de articole și adaugă sprijin pentru gestionarea resurselor
Decupl KbMedia de la KbArticle (eliminarea articolului FK), adăugați KbArticleMedia se unesc tabelul pentru mai multe-la-multe link-uri articol-media, se adaugă...
Update navtop email badge when message is marked as read
Dispatch email:folder-changed event after marking a message as read, so MailButton re-fetches the unread count immediately.
Revert email WebSocket URL to same-origin Next.js rewrite path
Use /email-ws on same origin, proxied by Next.js rewrites to EmailService via k8s internal DNS. SockJS HTTP fallbacks (xhr-streaming, xhr-polling) work through ...
Remove hardcoded WebSocket headers from email middleware
Traefik v3 handles WebSocket Upgrade/Connection headers natively. Hardcoding them broke SockJS fallback transports (xhr-streaming, xhr-polling). Now matches med...
Connect email WebSocket directly to email.{domain} subdomain
Next.js rewrites cannot upgrade HTTP connections to WebSocket, causing the STOMP connection to silently fail after 3 retries. Now uses the same direct subdomain...
Ca ceea ce vezi de transport maritim?
Fiecare dintre aceste actualizări aterizează automat în spațiul de lucru. Începe gratuit și urmăriți-l crească săptămână după săptămână.