--- date: 2026-04-17 title: "Changelog — April 17, 2026" lang: en author: ZhenYi --- ## Messaging & Rooms - Message fetching now uses WebSocket (not HTTP), eliminating duplicate connections. - Reactions now work for cached messages via WebSocket-first fallback. - Reaction popover is now controlled — closes properly after selection. - Comment submissions fixed with correct reaction types and validation. - Model names now display instead of UUIDs in room settings panel. - IndexedDB cache loads instantly without waiting for WebSocket connection. - Batch reactions endpoint added for HTTP fallback. - Scroll performance improved with virtualizer overscan increase. ## AI & Model Sync - Model sync robustness improved with refined error handling. - AI conversation stream handling fixes — streaming now reliable. - Room AI table migration adds missing stream column. ## Git & Repositories - Redis-backed hook worker with per-repo distributed locking. - Default branch now uses refs/heads/* format consistently. - Multiple branch and upstream query bugs fixed. - Route order fixes prevent API shadowing (branches/refs/commits). - Hook pool refactored — sync execution is now direct and sequential. - Deployments updated with git-hook PVC mount and env configuration. ## Frontend - SPA assets can now be embedded into the app binary at compile time. - Mentions redesigned with AST-based processing for reliable rendering. - MentionPopover optimized with caching and stable refs. - Reconnection tries existing token before requesting new one. ## Performance - Scroll handler simplified, callback refs stabilized. - IndexedDB prioritized for instant message loads. - Overscan increased to 30 for smoother scrolling.