v1.3.139
v1.3.139
IM (Instant Messaging)
- Session-scoped binding ownership (
LastSessionID): each instance independently owns different adapters instead of workspace-level mutual exclusion. Mute/unmute/disable/enable all persist ownership changes. - Cross-process file lock for IM binding store (flock) to prevent concurrent write corruption
- Matrix image support via m.image events
- Signal text formatting (
*bold*,_italic_,~strike~,||spoiler||) - Slack markdown fixes: italic/strikethrough false positives, code block protection, media link preview suppression
- WhatsApp: protect code blocks from markdown conversion
- DingTalk: markdown-aware splitter, TriggerTyping via robot reaction API, markdown images to clickable links
- Feishu: increase message limit to 28000 chars
- Twitch: increase inter-message delay to 1500ms
- Mattermost: reactive ACK, code-block-aware splitting
Desktop
- Agent lifecycle fixes: Cancel() and Close() now cascade to sub-agents and swarm teammates
- Session ownership: adapters start after session ownership resolved (not before)
- Context-aware agent activity indicator with elapsed timer
- Response duration display on assistant messages
- Dynamic window title showing workspace, model, and activity
- Task completion title flash when window not focused
- New Session button in chat header
- Scroll position memory for session switching
- StatusBar: error state red dot, elapsed timer when agent working
- FileBrowser: lazy-load mermaid to fix code-splitting
- NavRail hover effects
MCP
- 403 fallback to OAuth DCR: insufficient permissions now triggers OAuth discovery (not just 401)
- Auth mode switch: OAuth success permanently removes API key header
- SSE notification handling: skip non-Response SSE events when parsing initialize response
LAN Chat
- 3-layer UDP fallback transport: TCP → UDP unicast (with ACK) → UDP multicast
- Gzip compression for all UDP payloads
- Fragmentation for messages >32KB after compression
- ACK-based retry for unicast, fragment reassembly with timeout
- Multicast DM filtering: only target node processes message
TUI
- Ctrl+L clear screen
- Shift+Tab permission mode cycling
- startOwnedAdapters: start session-owned adapters after ownership resolved
Agent Intelligence
- Non-blocking context compaction (background goroutine + deferred application)
Bug Fixes
- Desktop Cancel/Close not cascading to sub-agents and swarm teammates
- Daemon/Desktop RegisterInstance timing (deferred to after session available)
- claimUnclaimedBindings not syncing currentBindings after store write
- MuteBinding clearing LastSessionID (breaking multi-instance ownership)
- reloadBindingLocked prevMuted overriding session ownership
- Dead WebSocket write methods removed from WebUI server
Full Slot Rotation Completed
All 5 review slots (0-4) completed since v1.3.138.