KOAssistant v0.17.1 Release Notes
This is a minor maintenance and bugfix release for v0.17.0. Release notes for v0.17.0 are preserved below.
Bug Fixes
- File browser chats not saving: Book chats started from the file browser (long-press menu) were not being saved — added fallback for document path and book metadata from configuration when
ui.documentis not available - "View Artifacts" button in file browser: Fixed button always showing generic "View Artifacts" instead of dynamic name (e.g., "View X-Ray") when only one artifact exists
- "Save to Note" in X-Ray chat: Fixed "Save to Note" button being incorrectly enabled in X-Ray browser's "Chat about this" sessions — stale selection data from prior highlight chats was leaking through
- "Book: Book:" duplication: Fixed doubled "Book:" prefix in chat viewer book context display
Improvements
Artifact Viewer Metadata
- Title bar now shows artifact type, coverage percentage, and book title (e.g., "X-Ray (42%) - Notes From the Underground") — model and date moved out of the cramped title
- Metadata info line displayed at top of content area showing artifact type, coverage, model, and date — always visible regardless of hide quote settings
- Book title now shown in file browser artifact viewers too (previously only available when book was open)
Book Metadata Display
- "Title:" label replaces "Book:" for book context shown at top of chat viewer
- Period-separated format: Metadata items (title, author, language, etc.) now separated by periods on a single line instead of newlines
- Multi-author separator: Multiple authors (stored as newline-separated by KOReader) now displayed as comma-separated (e.g., "Fyodor Dostoevsky, Jane Kentish")
- Chat history continuity: Book context correctly detected when continuing chats from history (no longer falls back to "Highlighted text:" label)
Full Changelog: v0.17.0...v0.17.1
KOAssistant v0.17.0 Release Notes
New Features
Browsable X-Ray
X-Ray results are now structured JSON with a full browsable menu UI, replacing the previous plain markdown output.
- Category menus: Characters, Locations, Themes, Lexicon, Story Arc (fiction) or Key Figures, Core Concepts, Arguments, Terminology, Current Position (non-fiction) — automatically detected
- Character details: AI-generated aliases, connections/relationships, and your highlights mentioning each character
- Chapter Characters: See which characters appear in your current chapter with mention counts
- Cross-category search: Find any entry by name, alias, or description
- Full View: Render the entire X-Ray as markdown in the chat viewer (with export)
- Chat about this: Tap any entry to launch a follow-up book chat about that character, theme, or concept — with irrelevant actions (book text, annotations, notebook) automatically filtered out
- Text selection: Dictionary lookup on 1-3 words, clipboard copy on 4+ (matches chat viewer behavior)
- Dynamic name truncation: Menu descriptions are truncated to fit available space, ensuring character names are always fully visible
- Emoji category icons (optional): Visual indicators per category when emoji icons are enabled
- Backward compatible: Legacy markdown caches fall back to text viewer automatically
One-Tap Auto-Update
Update KOAssistant directly from the release notes viewer — no manual file management needed. This will be usable from the next update.
- Update Now button appears in the release notes viewer when a new version is available
- Downloads the release zip, extracts to a staging directory, verifies the new version, and atomically swaps the plugin directory
- User files preserved automatically: API keys, configuration, custom actions, custom behaviors and domains — all restored after update
- Rollback on failure: If anything goes wrong during the swap, the backup is restored automatically
- Git-aware: Detects
.gitdirectory and disables auto-update for developer installs (previously blocked all desktop installs) - Works on Android and desktop KOReader
Data Access Indicators
See at a glance what sensitive data each action accesses, directly in the action name. See the README for how to enable Emoji UI Fonts in KOReader.
- Emoji suffixes: 📄 (document text/caches), 📝 (annotations), 📓 (notebook), 🌐 (web search)
- Shown in: Action Manager, Reading Features menu, Quick Actions, highlight/dictionary menus, file browser buttons
- Independent setting: Separate from Emoji Menu Icons — enable either or both (Settings → Display Settings → Emoji Data Access Indicators)
Chat Viewer for Notebooks
Notebooks now open in the chat viewer by default instead of KOReader's reader.
- Provides Copy, Export, MD/TXT toggle, Open in Reader, and Edit buttons in one place
- Setting under Notebooks → Viewer Mode to switch back to KOReader reader if preferred
Graceful Degradation for Text Extraction Actions
Actions that use document text now work meaningfully even when text extraction is disabled (the default).
- New conditional placeholder
{text_fallback_nudge}guides the AI to use its training knowledge of the work, with an honesty guard for unrecognized titles - Applied to 8 actions: Explain/Analyze in Context, Key Arguments, Discussion Questions, Generate Quiz, Analyze/Summarize Document, Extract Insights
- Invisible when document text is present — only activates as a fallback
- X-Ray and Recap keep their own specialized fallback behavior
Context Usage Warning
A one-time dismissable warning when a follow-up message exceeds ~50K estimated tokens, alerting that each reply resends the full conversation history. Helps avoid unexpectedly large API costs in long conversations.
Improvements
Text Extraction Defaults
- Default raised to 1M chars / 500 PDF pages (was 250K / 250) — covers full novels without truncation
- Maximum raised to 2M chars / 1,000 PDF pages (was 1M / 500)
- Previous defaults only covered ~40-60% of a typical novel; partial extractions produce worse results than letting the model's context window be the real limit
Actions & Prompts
- Explain/Analyze in Context switched to full document extraction (
{full_document_section}) for consistency with their Smart variants — only X-Ray and Recap remain spoiler-safe with position-limited extraction - Recap output token limit bumped to 8K (was 4K)
- Individual artifact buttons in Quick Actions: "View X-Ray" and "View Analysis" with progress percentage replace the generic "View Artifacts" button
- Export button added to X-Ray Full View (chat viewer simple_view mode)
Metadata
- Use KOReader's merged metadata (
ui.doc_props) instead of raw file metadata — respects user edits from the Book Info dialog, with automatic filename fallback
Links in Chat Viewer
- Delegate external link handling to KOReader's ReaderLink when a book is open — gives access to all registered plugin buttons (Wallabag, Wikipedia, etc.) instead of hardcoded options
Emoji Icons Expansion
- Conditional emoji icons extended to: settings menu top actions (💬 Chat, 📜 History, 📓 Notebooks, 📖 Reading Features), config items (🔗 Provider, 🤖 Model, 🔑 Keys), section submenus, chat history prefixes, chat viewer, and notebook browser
- Quick Settings: "Extended Thinking" renamed to "Anthropic/Gemini Reasoning"
Translation Fixes
(Smart)suffix and trailing spaces moved outside_()translation markers for correct localization
Bug Fixes
- X-Ray crash: Fixed crash when AI returns strings instead of arrays for fields like aliases, connections, or conflicts — new
ensure_array()helper normalizes values across 12 access points - X-Ray browser navigation: Replaced
close_callback(fired on every menu tap) withonCloseWidget(fires only on actual close), fixing broken back arrow navigation and stale menu state - Settings reset: Fixed missing
general_menu_actionsand_dismissed_general_menu_actionsin reset, and added 12 missing persistent feature keys to the preserve list — prevents losing user language preferences, trusted providers, and other choices during reset - View Artifacts button: Fixed multiple issues — stale
is_general_contextflag from previous sessions, incorrect file path lookup viabook_metadata.file(always nil after metadata reconstruction), and button placement now in its own dedicated bottom row - Metadata fallback: Fixed 9 locations using raw
document:getProps()instead of user-editeddoc_props - Link dialog: Fixed hardcoded Wallabag-only link handling — now delegates to KOReader's full plugin ecosystem
Testing
- 23 new unit tests for auto-update helper functions (verify, preserve, restore, backup path, zip URL extraction)
- 83 new prompt building tests covering text fallback nudge, context usage estimation, and template integration
- 27 new template tests for conditional placeholder behavior
Also in v0.16.x (if updating from v0.15.x):
v0.16.0/v0.16.1 added web search per-action controls (Anthropic/Gemini/OpenRouter), file browser action pinning, dictionary lookup on text selection in chat viewer, View Artifacts in action input dialog, new actions (ELI5, Key Arguments Smart, Generate Quiz, Fact Check, Current Context, Book Reviews), emoji icons setting, Open Last Chat, significant performance improvements (TCP warmup, deferred chat index, non-blocking update check), full-document prompt rewrites, and many bug fixes including the critical
replace_placeholder()infinite loop fix.See the full v0.16.0 release notes and v0.16.1 release notes for details.
Full Changelog: v0.16.1...v0.17.1