Skip to content

v1.5.14

Latest

Choose a tag to compare

@pancacake pancacake released this 19 Aug 09:36

DeepTutor v1.5.14 Release Notes

Release Date: 2026.08.19

v1.5.13 made a book something you read. This one puts the assistant next to what you are reading: a document opens beside the thread, and every claim comes back with the page it came from. Three other shifts sit around it — DeepTutor can configure itself from a chat turn, a Tencent IMA library becomes something you browse and write to rather than only search, and notebooks get a console of their own. Drop-in — no migrations, nothing to re-index.

What's New

Immersive Reading — the document open beside the thread

Pick Immersive Reading in the capability menu and open a PDF, a slide deck, or any document the knowledge base already accepts. The reader takes about two thirds of the workspace, the conversation keeps the rest, and the seam between them drags.

The assistant reads the same units you see — PDF pages, slides, or roughly page-sized sections for formats that have no pages of their own — so an answer cites [p.12] and the reader scrolls there and highlights the sentence behind the claim. Select a passage and ask about it, highlight as you go and attach notes, then take your marks with you: export a real annotated PDF that opens with the highlights intact in Preview or Acrobat, or Markdown to paste into your own notes.

Two decisions make it grounded rather than merely confident. A reading turn keeps the whole chat surface — web search, code execution, your other knowledge bases — because the five reading tools are added to it, never substituted for it. And before the model runs at all, DeepTutor runs your own question against the open document and hands it the top hits, so grounding happens even with models that would never have called a read tool on their own. It is a plain search, not a second LLM pass: no extra tokens, no latency before the first word.

Ask DeepTutor to configure itself

"Switch the interface to Chinese and use a better PDF parser" is now something you say rather than something you go and click. A turn can inspect the install, apply a setting, install a parsing engine or fetch its model weights — following the log live inside the single call instead of polling for it — and ask you for a credential.

Three rules keep that from being reckless. A new model or provider is probed before it is committed, against a candidate configuration that never reaches disk, so the assistant cannot switch itself onto something unreachable and cut off its own power supply mid-conversation. API keys never enter the model's context: it opens the matching form and your browser posts the key straight to the server. And every knob it can touch is one row in a single table carrying its own scope and effect, so you are told whether a change is instant, needs a restart, or invalidates your embeddings — instead of finding out later.

Tencent IMA: a library you browse and write to

An IMA library was searchable and nothing else. It now also answers "what is actually in here" — the knowledge-base file list reads the library's own browse API instead of reporting a connected base as non-enumerable, and a listing cut short by its request budget is labelled a lower bound rather than passed off as a total.

From a chat turn you can list the library, read a whole source rather than the retrieved fragments, search your notes by recency, add URLs for IMA to ingest, and write a note back. These tools are additive: rag still serves an IMA library, because it is genuinely searchable over HTTP, and attaching one no longer costs you web search or your other bases.

Connected knowledge bases are searchable again

v1.5.13 stopped Book from sweeping connected knowledge bases: the sweep returned nothing, and "nothing" was indistinguishable from a source with no relevant content. That fix was drawn too wide. Only an Obsidian vault (no index at all) and a connected subagent (not a document collection) are genuinely unreachable — a linked folder mounts an index built elsewhere, and LightRAG Server and IMA offload retrieval over HTTP. All three were being set aside, so every book quietly dropped them. Retrieval now asks whether a base can be retrieved from, not whether it is connected.

Notebooks get a console

Notebooks moved out of the Space document layout into their own full-height console at /notebook (the old link redirects, deep links included). Records can be copied or moved between notebooks, and a whole notebook exports as one Markdown document.

Three defects went with it. Concurrent saves could clobber one another; each notebook now has its own lock and every write is atomic, so a crash leaves the previous file rather than a truncated one. A notebook whose file is damaged is surfaced as a flagged row instead of vanishing from the list. And renaming a record used to clear its knowledge-base link, because the API forwarded every field whether or not you sent it.

Settings writes stop overwriting each other

Two writers shared interface.json and neither's lock covered the other. Measured before the fix, six preference saves racing six writes from a chat turn lost every one of the saves. Both now go through one lock and one atomic replace. Separately, the settings endpoints stopped writing back the defaults-merged view of your settings: changing your theme used to freeze that day's defaults into your file as explicit choices, so you silently stopped following later changes to any of them.

Assorted

  • The capability menu was regrouped. Chat, Quiz, Visualize, Mastery Path, and Immersive Reading are one click away; Research and Solve moved under More Capabilities. The grouping is now purely about menu order — it used to key off which engine a capability ran on, which meant the menu could not be reordered without lying about the engine.
  • write_note reports a failure it used to hide. A record id came back even when no notebook accepted the write, and that was read as success.
  • A damaged notebook no longer takes a chat turn down while resolving notebook references, and /notebook/health is reachable again — it was declared after /{notebook_id} and had been shadowed by it.

Upgrade Notes

pip install -U deeptutor; Docker users pull ghcr.io/hkuds/deeptutor:latest. No schema changes, no re-index, no migration.

  • Immersive Reading stores materials per user under a new reading workspace directory, created on first use. Nothing is written until you open a document.
  • The capability picker looks different. Research and Solve are now under More Capabilities; nothing was removed, and a session that was using either keeps working.
  • Reading needs no new Python dependency (PyMuPDF is already core), and the PDF viewer ships with the frontend bundle — source installs pick it up on the next npm install.
  • A scanned, image-only document is rejected with an explanation rather than opening as an empty reader. Run it through OCR first, or index it in a knowledge base with a parsing engine that does OCR.

Full Changelog: v1.5.13...v1.5.14