KOAssistant v0.24.0 Release Notes
KOAssistant now asks before it sends your data, a Setup Wizard checks what each update changed, pictures are written from the book and kept in a gallery, X-Rays get presets and carried entries in their categories, and the documentation moved to the wiki. The plugin's code moved into one folder, so restart KOReader right after the update.
Highlights
- KOAssistant asks before it sends your data. Highlights, notes, notebook, book text, book list and reading habits are each Ask, Allow or Never, for all books, for trusted providers and per book. After the update every kind is on Ask.
- A Setup Wizard for new installs and for updates, and any KOReader gesture for the quick panels.
- Pictures that match the book. A prompt writer turns the passage, the X-Ray entries it names and your note into a picture in the style you pick, fitted to your screen; OpenRouter joins as an image provider, and a gallery keeps your pictures by book.
- The documentation moved to the wiki, and the README is the front door.
- X-Ray presets, carried entries in their categories, and Possible matches for names that changed between books.
- Updates find their place after a font change, a turned device or a synced sidecar, and moved books and folders keep their links.
- New models and defaults on Anthropic, Gemini, the OpenAI Subscription, Qwen, OpenCode Zen and NVIDIA, and new image models.
- The plugin's code moved into one folder: restart KOReader right after the update (on Android, close and reopen the app).
Privacy
- The question names the action, the provider and the amount, and offers Allow once, Allow for this book, Not for this book and More…; your book list and reading habits offer Always allow instead. A kind set to Never is refused with a button to its setting. After the update every switch reads Ask; per-book settings and trusted providers are kept.
- It is asked once per book, at the moment of need: when an action starts, on the source popup's Run button, at Send with a Scope range or the Tools chip on, and when you attach or chat about your notebook. Viewing and browsing never ask.
- One preset row: Default (Ask), Allow everything and Block everything, in Settings → Privacy & Data → Preset. A note lists what a pick changed.
- Book info moved to Settings → Privacy & Data, and None now means none: nothing names the book, and actions that need the title say so instead of running.
- Book Settings → Privacy & Data shows the book's values and the global ones on two tabs, and the Quick Settings tile of the same name opens it.
- Groups can hold privacy values for every member, in Group Settings → Privacy & Data. A group's Never works like a book's.
- Trusted providers have their own column of values, Allow by default, under Settings → Privacy & Data → What trusted providers may use.
- The text around what you tap is its own kind of data, allowed by default: the context of a highlight or a lookup, the current page, the text around an image's passage. Set to Never, it is now kept out everywhere.
- Automatic X-Ray asks once per book before it builds, and a build you start by hand asks once for all its checkpoints.
- Saved results follow what they were built from. Chatting about an artifact, attaching one, or the AI Wiki asks for those kinds, and is refused when one is Never for the book.
- AI merges ask once before their requests, and the free carry between a group's books works on Ask; only a book set to Never stays out.
- A chat remembers what it was given and checks it again when you continue it, or continue it with another provider.
- Delete Book Artifacts left the privacy screen. A book's artifacts are deleted from its Book Hub or the artifact browser.
- An X-Ray entry page lists your matching highlights whatever the highlights value, since they stay on the device until you chat about the entry.
- Rows and chips that need a kind on Ask are offered, not grayed out; only Never grays them.
- The note above an answer made without some data says why, in your language.
- Every privacy check judges the provider the request really goes to, a model picked by holding Send or by the Quick preset included, and an action on a closed book checks that book's own settings.
- Updating an artifact whose action does not use book text sends no new text.
- Attachments ride chats and plain actions only, never an action that saves a result, nor the dictionary and translate actions.
Actions and Menus
- The Setup Wizard has two faces. A fresh install gets the welcome chain: provider, privacy, language, icons and font, the (KOA) mark, gestures. After an update it checks only what the version changed, and Settings → Setup Wizard re-runs any step.
- Any KOReader gesture for the quick panels and gesture actions, from Settings → Gestures or the wizard. A gesture in use can be replaced.
- The emoji font installs from Settings (Display Settings → Emoji → Emoji Font), with a display test that turns the icons on.
- Run an action once without the book info, or with it, from its long-press menu. In a book chat, the gear menu's Send book info switches it for that chat.
- Quick is clearer. Each action's editor has a Takes the Quick preset box that decides whether Quick reaches it, the buttons that take Quick carry a ⚡ mark, and Quick's Book tools off reaches Explain in Context.
- The scope popup follows the chat's Spoiler chip for that run.
- The (🔍) mark shows whenever an action could search the book, not only with the book's text on Allow and the Tools chip on.
- +Vocab stores the word as KOReader does, and no longer says Added while the Vocabulary builder is off.
- "Compare with KOAssistant" shows in the file browser's selection menu in every language.
- The sample custom actions file loads again, and an action with an unknown context is skipped with a log line.
- The long-press menu no longer offers Duplicate for X-Ray.
- Placeholders: the surrounding-context placeholder in your own actions always brings the context, a placeholder with nothing behind it is dropped instead of sent as written, and a book action from the file browser can read your library list again.
Image Generation
- The image prompt writer. Your chat provider's fast model writes the prompt from the passage, the text around it, the X-Ray entries it names and your note. The privacy question names both providers, and Write the prompt with AI turns it off.
- A style for every picture: Book illustration, Watercolor, Ink drawing, Pencil sketch, Woodcut, Photographic, Comic, Map or diagram, or your own words.
- A note for one picture: long-press Generate Image for Generate with a note…, or type it in the highlight input dialog.
- One Shape and one Detail setting for every image provider. Shape fits your screen by default, and Detail starts at Draft, the fastest and cheapest.
- New image models: GPT Image 2.5 flare as OpenAI's default, Nano Banana 2.1 on Gemini, Grok Imagine Image 2.0 on xAI.
- OpenRouter makes images too: GPT Image 2.5 Flare, Nano Banana 2.1, FLUX 3, Seedream and Recraft, and its whole image catalog under More models….
- Generate Image shows whenever you have a key for an image provider, and the first tap asks which one draws when your chat provider cannot.
- A thumbnail gallery, by book. Long-press a picture to draw it again, edit its prompt or delete it.
- Image settings on the spot: long-press Generate Image, or a picture in the gallery. Regenerate draws in the style now in effect, and Regenerate and replace swaps the old picture.
- Gemini's Draft pictures come faster: about 9 seconds instead of 13 to 23.
- Image prompts follow chat's rules for Book info, Context Direction and spoiler protection.
- Clearer refusals and real file types: a refusal names the provider's reason, Gemini image requests follow Gemini Content Filter, and Gemini's and xAI's pictures are saved as .jpg.
- The image settings follow the provider that makes the images, and a slow picture gets three minutes.
X-Ray
- Presets for new X-Rays, from Characters only to Deep study, in the creation form, Book Settings, Group Settings and Settings.
- "Where things stand" can be turned off in the categories picker, which makes updates shorter.
- A clearer creation form: each button names its setting and pick, the form is wider and scrolls when it does not fit, and the categories picker is one checkbox per category.
- Illustrate an X-Ray entry from its More… menu, drawn through the image prompt writer.
- A saved result keeps its place as a position in the text, so an X-Ray or Recap update starts in the right spot whatever the page numbers are now. Merging section X-Rays into the main one needs the book open, unless the main X-Ray covers the whole book.
- Automatic building pauses after a stop that would repeat, such as a cut-off answer, a request too large or no credit, until you resume it.
- Renaming or linking an entry holds across checkpoint installs.
- The name index keeps four page layouts, so switching orientation or device no longer indexes the book again.
- Updates in a long series send less: only the carried names the new text mentions.
- Every artifact list opens the same way, with dates, and AI merge section X-Rays… where it applies.
- Another book's X-Ray stays that book's: its versions list acts on it, and an entry looked up from its chat does not list the open book's highlights.
- A book whose X-Ray was deleted with its versions kept shows Archived X-Ray Versions in its Book Hub.
Book Groups and Cross-Book X-Ray (#116)
- Carried entries inside the categories. In a series, entries carried from earlier books are also listed in Cast, World, Ideas and Lexicon, after the book's own. The Carried entries setting switches back to the separate list.
- The carried list opens by category, and Mentions lists carried names too.
- Possible matches finds names that changed between books, such as a first name here and the full name carried. Link joins a pair for free, Never suggest keeps it apart, and AI merge… covers what no rule matches.
- Every paid merge is called AI merge and says how many requests it sends, in one "Link and merge…" group that is the same in the X-Ray popup and the browser's menu.
- What an earlier book says about an entry this book already has is attached for free.
- The question before a new X-Ray in a series explains the free carry and the optional AI merge, and the earlier book's names go with the request whatever you answer.
- A group can set checkpoint spacing and where carried entries are listed, on its own X-Ray screen.
- Add one book to a group straight from the file browser. The Group Hub's add rows name their source.
- Moving a book or a folder in KOReader's file browser keeps its links: groups, chats, notebooks, pinned items, pictures, scan folders and the X-Ray links other books keep to it.
- "Add as a new entry" holds across checkpoint installs and rebuilds.
- A carried entry keeps what each book says about it, in a project too.
- The input dialog's Group button respects the series hold-back: a later volume asks before it opens.
- The Project description says it carries between all its books.
- Editing the carried list keeps your aliases in view, and a carried entry's page has a back button.
Chat Windows
- The Markdown view gives every paragraph its own direction, so a chat that mixes right-to-left and left-to-right text reads right block by block. Lists in left-to-right text are real lists again.
- A chat about a book that is not open belongs to that book: its title, settings and saved position. Artifacts made or regenerated from it are saved with that book.
- Selecting a Chinese, Japanese or Korean clause in a chat window opens the selection menu instead of a dictionary lookup.
- A long press on the window's X closes the dictionary windows and the highlight too.
- Chatting about your notebook tells the AI it is your own notes.
- Long highlights are measured in characters, not bytes.
- Stopping a request before its first word stops the waiting animation, which kept redrawing the screen.
- A reasoning block that starts mid-answer in a streamed reply goes into the reasoning.
AI Book Tools
- "Read Short Texts Whole" is a size: Off, Small, Medium (the default) or Large, settable per book from the Tools chip's long-press.
- A text read whole costs less in a long chat, and a model that cannot take it searches the book instead.
- With Book Tools Mode on Interactive, the last answer no longer fails on Claude's newest models.
Providers and Models
- Claude Haiku 5.5 replaces Haiku 4.5 as Anthropic's fast model.
- Gemini 4 Argon joins the Gemini and OpenRouter lists as Gemini's frontier pick.
- The OpenAI Subscription lists the GPT-6 models (#117). Its fast pick is gpt-6-luna, which every plan serves, and a model your plan refuses says why.
- Qwen works again: its default is qwen3.8-max after Alibaba retired qwen3-max, its reasoning can be turned off, and AI Book Tools work on Qwen, directly and through A2Agent, OpenCode Zen and OpenCode Go.
- OpenCode Zen works again on its default model, now deepseek-v4.1-flash. A new workspace serves only the newer models, and Fetch models from provider... lists yours.
- NVIDIA works again on its default model, now nemotron-3.5-super-vl, after NVIDIA stopped serving the old one.
- Shorter model lists: the default and the tier picks first, then one previous version per line. A model you picked keeps working, and one the provider stopped serving moves to its replacement wherever it is stored, with a note.
- SambaNova lists MiniMax-M3 in place of M2.7.
- Gemini 3 and Gemini 4 Argon requests no longer send a temperature.
- Claude Max and Team plans include monthly API credits that work in KOAssistant; the wiki says how to claim them.
- Test Connection tests the endpoint you use, caps its request at 512 tokens and keeps its result on screen until you tap it.
- Test provider's Reachability step reads the answer and fails with the reason when it cannot.
- A key saved as "your-key-here" is treated as the placeholder.
- A custom_models.lua prefix matches literally.
- Provider names read as the brands write them: OpenAI, DeepSeek, xAI.
Other Fixes
- A book without a title in its metadata is named to the AI as a file name, not as a title.
- Two books with the same author and title no longer share one notebook.
- A failed request stays on screen until you tap it.
- Errors on the device keep their HTTP status beside the provider's sentence.
{time_since_last_read}, used by Recap, reads KOReader's reading statistics, and says nothing without a record.- The recap reminder counts from the day you really last opened the book.
- Redoing a Recap or another saved result of a book you are not reading starts it over instead of reading the open book.
- Another book's artifacts and section pages are that book's, and Regenerate is offered only for the open book's own summary or analysis.
- A note saved from a chat records the right book's position and names the model that answered.
- Browse by type lists every kind of artifact, images, pins, section X-Rays and AI Wiki entries included.
- The Book Hub lists section quizzes under Quiz.
- Counterarguments shows up with the other saved results.
- A section's text is sent under the section's name, not "Full document:".
- Domains: Chat History's View by Domain names every domain, and Manage Domains has one Delete all custom row.
- A book's Background note keeps its first 2,000 characters in any script, and the editor says so.
- A general or library action beside an open book no longer takes that book's domain, background or research mode.
- Research mode: a DOI added to a book's metadata later is found, and general and library chats no longer get the research note.
- Updates:
auto_check_updates = falsein configuration.lua works whenever you add it, and the update checker's messages can be translated. - Backups: a restore in Replace mode keeps your API keys when the backup holds none, the confirmation says what a restore point holds, and a backup skips macOS
._files. - Fresh start offers the Setup Wizard when it is done.
- Custom reset's Behaviors & domains row clears the domains too.
- Quick Settings shows this book's own settings again, and the X-Ray marking popup's reset for this book works.
- Dictionary lookups keep spoiler protection's limit on the text after the word, from every entry point.
- A book chat with nothing typed asks you to type a message instead of sending an empty one.
- The source popup's grayed Use summary row gives its reason with every scope.
- In-app notices name today's menu rows, and two messages built from fragments can be translated whole.
- A long section X-Ray name keeps whole characters.
Under the Hood
- The plugin's code moved under
koassistant/; your own files stay at the root. If you update by hand, delete the old folder first, after copying your files out. - Saved results are written whole or not at all, so a power loss mid-write keeps the old file.
- Artifact lists open faster for books with many artifacts.
- Requests name this plugin's own version, even with another AI plugin installed.
- Artifacts, pinned answers and AI Wiki articles record the provider that made them and what they were built from.
How You Can Help
- Device reports.
- Translations: review passes on Weblate.
- Bug reports and feature requests.