Skip to content

Releases: ldele/doc_assistant

Provenote 0.6.0

Choose a tag to compare

@ldele ldele released this 07 Sep 09:36

A local-first research assistant: ingest your PDFs, EPUBs, HTML, DOCX and Markdown, then ask
questions and get answers with inline page-level citations back to your own documents.

Built from the tagged commit and passed a clean-machine install gate before being published — see
How this was verified below, including the one caveat that travels with that verdict.

Install

Download Provenote_0.6.0_x64-setup.exe (Windows x64) and run it.

  • The installer is not code-signed, so Windows SmartScreen will warn you. That warning is
    accurate: it means nobody has paid a certificate authority to vouch for the binary. Choose
    More info → Run anyway if you are comfortable with that.
  • It is a 1.6 GB download (1,572 MiB) and installs to roughly the same size. The embedding and
    re-ranking models are bundled so the app works offline and never uploads your documents.
  • Upgrading from 0.5.1: install over it. Your library, settings and conversations live in a
    data folder the installer does not touch (%LOCALAPPDATA%\doc_assistant\data, separate from the
    app). The first time you open the Library every document is marked changed, because the way
    text is extracted changed in this release, and a re-index re-reads every file (about 15 seconds
    per paper, cached afterwards). New in 0.6.0, that re-read keeps a document's figures, keywords
    and corrected metadata attached — under 0.5.1 it would have cut them loose. The clean-machine
    gate below installs fresh; an in-place upgrade was not part of it.

What's new since 0.5.1

  • You can read a document beside its library entry. Open any PDF and its own pages appear in a
    pane next to it — the page as printed, not the text pulled out of it. Clicking a passage in
    Chunks, or Show the page on a citation in chat, opens the pane at the page that passage
    came from. Fit page or full width, zoom with Ctrl/Cmd + wheel (a sharper render, not a magnified
    blur), and drag the divider. A file that has moved, or sits on a drive that is not connected, says
    so and names the path.
  • A citation can show you where it came from, in place. Clicking a source in an answer offers
    In context: the cited passage highlighted inside a window of the surrounding text, with how far
    through the document it sits. A passage that cannot be placed says so rather than guessing.
  • You can add documents from inside the app. Drop files or a folder onto the window, or use
    Add documents…. A review sheet says what will happen to each file — added, already in your
    library, unsupported, unreadable — with the exceptions sorted to the top, and nothing is copied,
    registered or indexed until you confirm. Undo all is offered immediately afterwards.
  • Your documents no longer have to live in Provenote's own folder. Adding a file is a choice
    between copy it in and reference it where it is. A referenced file is never moved, altered or
    deleted by the app; removing it from your library removes only the app's record of it. When its
    folder cannot be reached — an external drive, a share that is offline — the app says the location
    is unavailable rather than showing a library full of missing documents.
  • You can import from Zotero. Point the app at a Zotero library and its attachments arrive in
    the same review sheet, with the same duplicate check and the same copy-or-reference choice.
    Zotero's own titles, authors and years are kept and not overwritten by what the app reads out of
    the PDF. Tested against a database built to Zotero's documented schema, not yet against a live
    Zotero install.
  • You can re-run one part of reading a document, instead of all of it. Metadata, figures,
    references and text can each be redone on their own, for one document or a selection, and each
    says what it will cost before it runs — they differ by four orders of magnitude.
  • The concept graph is back, and says how much of your library it covers — "30 of your 98
    documents", and why. A concept can be put on the graph from Manage keywords; that used to
    need a script the installed app does not ship, so a fresh install's graph stayed empty forever.
  • Improving how a document is read no longer disconnects everything attached to it. A document
    used to be identified by the text extracted from it, so any extraction fix gave it a new identity
    and orphaned its figure descriptions, keywords, folders and hand-corrected metadata — measured at
    4,123 rows on a 97-document library, 19 of them unrecoverable. A document is now identified by
    the file it came from.
  • A citation only becomes a link when the titles agree. Surname-plus-year alone was wrong 13
    times in 16 on the working library (one review of graph neural networks pointed at a paper on
    mouse whisker cortex). With title agreement required the links went from 16 to 41, the 12 false
    ones dropped and the rest checked by hand; your own numbers will differ.
  • Indexing can use more than one core, and you can say how many — off, light (the default,
    two), balanced or full, never the whole machine. It changes how long indexing takes, never what
    it produces. On the development machine two workers bought most of the achievable gain.
  • Benchmark numbers now say what produced them. Every eval run records the corpus, the model
    and the live retrieval settings, and a check reports, per metric, whether two runs measured the
    same thing — because a five-trial run in August looked like a 6% improvement and was a model
    swap. Documentation: evals/README.md.
  • Smaller changes. A corrected title now shows everywhere, not only in the Library list. EPUB
    files no longer read their own table of contents as body text. Settings is a set of categories
    rather than one long scroll. Native menus and dropdowns follow the app's theme.
  • Fixed. 723 of 881 figure images on the working library could not be shown and are back,
    re-rendered from the position already recorded; re-running the figure pass no longer discards
    descriptions that were paid for (552 of them). Two indexing faults that lost text: a cursor
    skipped overlapping passages, leaving 30-40% unable to say where they came from (now 100%). A
    short document is no longer reported as broken for being short, and the app names the tool that
    actually read each file. A heading ending in a colon ("Preprint of the paper:") is a lead-in, not
    a title.

Known limits

Stated because they are the things most likely to surprise you.

  • A cited passage is located on the page, but not marked on it. The pane opens at the right
    page; it does not yet highlight the passage within that page.
  • A page number can occasionally be one page early. For a small number of pages (0.2% across
    the development library, concentrated in one scanned book) the text recorded for a page is the
    previous page's, so a jump lands one page before the passage.
  • Citation links are worked out when a document is first read, and are not revisited. Adding
    the paper a reference points at will not turn that reference into a link on its own — the citing
    document has to be read again. A command-line pass can refresh them without re-reading anything;
    it is not yet a button.
  • Moving or renaming a file outside the app loses anything recorded against its old path. The
    document survives — its content is recognised, so it is not read or embedded again, and its
    figures, keywords and corrections stay attached — but an exclusion you set is recorded against
    the path, so it does not follow the file.
  • Scanned PDFs are only read if your system happens to have an OCR engine, and the installer does
    not include one.
    A PDF that is pure page images extracts to nothing and is marked broken. But
    if a tesseract binary is on your PATH, the PDF reader finds it by itself and reads the pages
    instead — and nothing in the app asks for this or reports it. The same scan produced 0 characters
    on one date and 34,600 on another, on the same machine, with nothing in the app changed. Two
    machines on the same version can therefore build different libraries from the same file, and the
    extraction cache keeps whichever result came first. A fresh install gets the 0-character
    behaviour. Deliberate, opt-in OCR whose output is marked as such is designed and not built.
    (The CHANGELOG.md at the tagged commit states this limit wrongly — it says an OCR tool on your
    machine makes no difference. The corrected text is on main and here.)
  • Citation coverage on a local model is a floor, not a bug. With a local Ollama model many
    claims come back uncited — measured at 36% sentence coverage for llama3.1:8b against 81% for a
    paid model, on the same 27 questions, corpus, prompt and retrieval; on some answers it cites
    nothing at all. When the app flags claims as uncited on a local model, the integrity layer is
    working, not failing. Configure a paid provider in Settings if you need consistent citation.
  • Keywords describe a document; they do not group your library. 97% of them appear on exactly
    one document — useful for finding a paper, not for slicing a collection into topics.
  • Windows only for now. The app runs from source on other platforms; only Windows has an
    installer.
  • Tables extract inconsistently.

How this was verified

Every number here is reproducible rather than a verdict, and the gate output is recorded in the
repository's development log.

  • Built from the tagged source. The installer was built on 2026-09-01 from the release commit;
    the tag sits five commits later and differs from it only in the Cargo.lock version line, the
    release-preflight script and that script's tests — nothing that ships. git diff v0.6.0..main -- src apps scripts tests is empty.
  • Clean-machine gate: installed on a fresh Windows Sandbox with no Python...
Read more

Provenote 0.5.1

Choose a tag to compare

@ldele ldele released this 15 Aug 11:38

A local-first research assistant: ingest your PDFs, EPUBs, HTML, DOCX and Markdown, then ask
questions and get answers with inline page-level citations back to your own documents.

This is the first release with a binary attached. It was built from the tagged commit and
passed a clean-machine install gate before being published — see How this was verified below.

Install

Download Provenote_0.5.1_x64-setup.exe (Windows x64) and run it.

  • The installer is not code-signed, so Windows SmartScreen will warn you. That warning is
    accurate: it means nobody has paid a certificate authority to vouch for the binary. Choose
    More info → Run anyway if you are comfortable with that.
  • It is a ~1.5 GB download and installs to roughly the same size. The embedding and re-ranking
    models are bundled so the app works offline and never uploads your documents.

What's new since 0.5.0

  • Provenote can tell you when a newer version exists. Settings → Updates shows your version,
    checks GitHub for the latest release, and links you to it. It never downloads or installs
    anything — you decide what runs on your machine. Automatic checking is off by default; when
    you turn it on it runs at most once a day, and the Check now button works either way. Nothing
    about you or your documents is sent: the request asks for a version number and carries no query,
    title, or identifier.
  • Document keywords are about the document again. Four separate causes fixed — repeated page
    furniture (one paper spent 11 of its 15 keyword slots on a journal stamp), overlapping fragments
    of a single phrase, bibliographies contributing author surnames and citation debris, and a
    tokeniser that split on . and / and so stored 16p11.2 as 16p11 and GPT-3.5 as GPT-3.
    Measured over a 97-document library: overlapping fragments 27% → 0% of slots, documents with
    no keywords at all 15 → 1. Re-index from Settings to apply it to your own library.
  • Related papers are ranked, not scored. The panel used to show a similarity number that looked
    far more precise than the underlying data supports — whole-document similarity puts every paper
    in a field within a few hundredths of every other. It now shows position and says why.
  • The contested / superseded chips are labelled experimental, with the limitation stated in
    Settings. They remain off by default.
  • The Graph tab is hidden. The concept graph and gap list are unchanged underneath and nothing
    was removed — but the page is empty until the graph is built, and an empty page reads as a broken
    one. It returns when it has a home worth navigating to.

Known limits

Stated because they are the things most likely to surprise you.

  • Citation coverage on a local model is a floor, not a bug. With a local Ollama model many
    claims come back uncited — measured at 36% sentence coverage for llama3.1:8b against 81% for a
    paid model, on the same 27 questions, corpus, prompt and retrieval. When the app flags claims as
    uncited on a local model, the integrity layer is working, not failing. Configure a paid provider
    in Settings if you need consistent citation.
  • Keywords describe a document; they do not group your library. After the fix above they are
    accurate, but 97% still appear on exactly one document — useful for finding a paper, not for
    slicing a collection into topics.
  • Windows only for now. The app runs from source on other platforms; only Windows has an
    installer.
  • Scanned PDFs without a text layer need the optional OCR pass; tables extract inconsistently.

How this was verified

Every number here is reproducible rather than a verdict, and the gate output is recorded in the
repository's development log.

  • Built from the tagged commit — git diff v0.5.1..HEAD -- src apps scripts tests is empty, so the
    source that was tested is the source that is tagged.
  • Clean-machine gate: installed on a fresh, Python-free Windows box, indexed 3 PDFs into 322
    chunks, and produced a cited answer. That end-to-end path matters because a previous build
    started, served health checks and reported a healthy chunk count while being unable to read a
    single PDF — only a real install catches that.
  • Gates at release: 1,731 Python tests · 108 frontend tests · type-checks clean on both sides.

Provenote_0.5.1_x64-setup.exe
SHA-256 985331ff36a91b5d840a048b30e0f8c7d636479772473b2be18937a383cafd8c

[0.4.2]

[0.4.2] Pre-release
Pre-release

Choose a tag to compare

@ldele ldele released this 07 Aug 17:37

[0.4.2]

Pre-release, some of the features still require more testing.

Need to :

  • validate ingestion on all document types.
  • fresh install ingestion + ollama setup (frontend working, backend issues)
  • And more...

Future: improvements of all features planned (from RAG, Document Library Management, Epistemics, etc...)