Fixes
- Fix #38: Panic when truncating Chinese/multi-byte text —
cap_strwas slicing by byte index, causingbyte index is not a char boundarypanic with Chinese characters, emoji, or other multi-byte UTF-8 text - Fix #35: Improved error message for LLM failures — was showing "Invalid request format. This may be a bug" which confused users; now shows "Check your API key and model configuration in Settings"
- 13 additional UTF-8 boundary fixes across compactor, session_repair, loop_guard, image_gen, tool_runner, tts, and workspace_context — all string truncation sites now use safe char-boundary-aware slicing
- Added
safe_truncate_strutility with 7 unit tests for safe multi-byte string truncation