v1.3.138
v1.3.138
Desktop
- Reasoning duration display + search button in chat header
- Edit & Resend button on user messages
- Endpoint limits (context_window, max_tokens) and Anthropic OAuth in settings
- Export conversation as markdown file
- Onboarding flow: session model restore, config hardening, UI improvements
- Custom LLM provider support in onboarding (TUI + Desktop)
- Keyboard shortcuts: Cmd+N, Cmd+Shift+S/T/F, Cmd+F in-conversation search
- Resizable sidebar with drag-to-resize
- Skeleton loading placeholders + multi-toast system
- GitHub-style diff code block highlighting
- Markdown enhancements: horizontal scroll for wide tables, hover-reveal timestamps, details/summary, kbd, mark styles, blockquote/list/link styling, print export
- Windows fix: dual title bar removed via Frameless mode
- Accessibility: reduced-motion support, focus-visible outline, link hover animation
- Performance: set data-highlighted attribute after highlight.js to prevent re-highlighting
IM (Instant Messaging)
- Image sending support for WhatsApp adapter
- Code-block-aware message splitting for Discord, Slack, and Mattermost
- Slack thread support for inbound and outbound messages
- DingTalk: convert markdown images to clickable links
- Matrix: markdown-aware splitting + Close() fix (was reconnecting after shutdown)
- Feishu: increase message limit from 4000 to 28000 chars
- Twitch: increase inter-message delay to 1500ms
- Telegram: add HTTP 429 rate-limit retry, 1s inter-message delay per API docs
- Nostr: hoist ECDH out of chunk loop, break on sign errors, context propagation
- WeCom/WeChat: byte-aware message splitting
- Slack mrkdwn: remove incorrect HTML entity escaping
- WhatsApp: convert markdown italic to italic, preserve URLs in links
- Platform limits: sync Slack (12000), Feishu (28000) with actual API docs
- WebSocket timeouts: 30s dial timeout added to DingTalk, Discord, QQ, PC relay, Mattermost, WeCom, tunnel relay
Agent Intelligence
- Error classifier (AgentDebug-inspired): 10 categories with type-specific guidance on first error
- Budget guard (BAGEN-inspired): dual-signal — per-step token cost trend + input token delta
- Context-fill-aware tool output guard: progressive truncation by fill %
- Parallel & speculative execution: throttled by context fill, skips memoized tools
- Compaction: preserve verbatim user requests in summary payload
- Cache-break-aware tool result clearing
TUI
- Onboarding: cyclic wrap-around navigation, correct back-navigation for non-linear steps
- Custom LLM provider support in onboarding
- Nil deref guards in /compact, /undo, inspector checkpoints, /files commands
- Stats panel: remove dead loop
Bug Fixes
- Data race in saveAdaptiveCaps reading lo/hi without cap.mu
- Cron scheduleJob race + IM SendInteractive lock-while-sending deadlock
- Negative maxRunes panic in util.Truncate
- VS16 emoji variation selectors removed from IM tool formatting
- Windows: CREATE_NO_WINDOW to prevent tool result leaking to terminal
- GOMEMLIMIT raised to 1GiB to prevent OOM kills in CI
- Ratchet rules: semantic duplicate detection in AddRule
- Context: preserve multi_file_read results when only partially superseded
- Reflection: track multi_file_edit, multi_file_write, notebook_edit in FilesEdited
Performance
- estimateTokens: use strings.Builder to avoid O(n^2) concat
- ANSI escape sequences stripped from command output at ingestion
- cmdpane: truncate stale log files to prevent unbounded disk growth
Infrastructure
- WebUI: remove dead WebSocket write methods
- A2A: mTLS client transport respects proxy env vars
- Knight: bound rejectFeedbackStore in-memory entries (500 cap)
- Cron persistence: use atomic writes
- Ratchet rules: use atomic writes
- HarmonyOS: Flutter for OpenHarmony scaffolding + conditional imports for scanner/wakelock
Full Slot Rotation Completed
All 5 review slots (0-4) completed since v1.3.137.