---
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.
