Repository navigation
Which file do I need?
The downloads are at the very bottom of this page, in the Assets list underneath all these notes. Scroll all the way down, and click Assets if the list is folded. You need exactly one file:
| Your computer | Download this ONE file |
|---|---|
| Windows 10/11 | HilbertRaum-0.1.64-portable.exe |
| macOS (Apple Silicon) | HilbertRaum-0.1.64-mac-arm64.app.zip |
| Linux | HilbertRaum-0.1.64.AppImage |
The other files are NOT the app: the llama-runtime-*.zip files carry the AI engine for offline/air-gapped installs only (normally the app offers that same download built in), SHA256SUMS.txt is for optional download verification, and the two Source code archives are the source for developers, not a runnable app.
This download is the app only — a working chat needs two more downloads, both offered on the AI Model screen inside the app: the AI engine (llama.cpp — the screen shows an install banner until it is present; without it, models run in demo mode with simulated answers) and an AI model of your choice. Two optional downloads are offered in the app only when you need them: the knowledge-pack tools, and the text-recognition (OCR) files for scanned PDFs and photos (German + English, about 4 MB; offered on the scan or photo in Documents and on the AI Model screen). Every download asks first and is SHA-256-verified. Offline installs: the llama-runtime-*.zip assets below hold the same verified engine build — unzip into the runtime/llama.cpp/ folder on the drive. Repo users can provision a drive up front instead (README step 2). Unsigned build: see the SmartScreen/Gatekeeper notes in docs/troubleshooting.md.
Changed
- The chat model gets the graphics card first. When you start or switch a chat model while
translation is on the graphics card, translation moves to the processor first; a document being
translated carries on there, redoing the passage that was in progress. Before, the chat model got
whatever translation had left and stayed slow until you restarted it (#473). - Translation uses the graphics card only when it fits there completely. Beside a chat model
that leaves too little room, it now runs on the processor, and the Translate screen says why.
Before, it squeezed onto the card and ran at about processor speed anyway (#473). - Answers look cleaner while they are being written. Streamdown, which lays out the
assistant's answers, moves to version 2.7.1. While an answer is still coming in, a<inside a
formula no longer hides the rest of the answer, a name likesnake__caseno longer leaves stray
underscores at the end, and code fenced with~~~or containing$$no longer shows stray
symbols. A link written as[guide][1], with its address on a line of its own, is a link while
the answer is still coming in, not only once it is finished. Long answers also take less work to
show as they stream, and lists on the Review screen and in translations are spaced as in chat
(#685, #709). - The app carries its formula typesetter once. KaTeX, which draws the formulas in answers, was
included twice. Formulas look the same, and the app loads about half a megabyte less code when
the first answer appears (#698).
Fixed
- A knowledge-pack article's title reads as the archive spells it. Since chemical formulas in
pack articles became readable (H_2O), an article whose title holds one was cited as
CO_2-Steuer, and the article viewer and a saved copy showed it the same way. The title is
CO2-Steueragain; the article's headings and text keep the readable form (#711). - A knowledge-pack file no longer waits in your workspace for the app to restart. When the
program that serves your knowledge packs, or the helper that reads a pack's details, did not stop
within its time limit, the app kept the file it had been given: a plain-text list of your packs'
titles and where they are stored. It stayed in the workspace, through locking and unlocking, until
the app was next started. The app now removes it as soon as it sees that program end (#713). - Formulas written with
$$ … $$show as formulas, while the answer is coming in and after.
While an answer was still being written, such a formula showed a red error box with its raw text
until it was complete. In a finished answer, a formula spread over several lines with the$$
on the same line as its first or last row (common for step-by-step derivations) stayed an error
box for good, a formula written on a single line came out small inside the text instead of
centred on its own line, and text on the same line as the opening$$could be dropped. A range
like[0, 1)inside a formula, a line break with extra space (\\[2pt]) and a formula inside a
list item no longer break the layout either (#701). - The Translate screen now says how much of translation really runs on the graphics card. It
said "runs on the graphics card" after every graphics-card start, even when the chat model had
left no room and translation actually ran at processor speed. The Performance screen now also
counts translation as being on the card when it is (#629). - Translation gets the graphics card's memory when it starts. A reranker sitting on the graphics
card now moves to the processor first, and returns to the card once translation is done. On a
computer with both a built-in and a separate graphics card, the faster draft mode of the largest
models is now judged by the separate card's free memory instead of the built-in one's (#473). - Figure captions in knowledge packs now read like the text around them. A caption showed
H2Oandm2where the article text showsH_2Oandm^2, and it kept citation numbers such
as[2]that the rest of the article leaves out (#488). - Knowledge packs made from ordinary websites leave out the site's own footer and menu, and code
keeps its indentation. A page from such an archive used to end in the site's footer line ("by …
| source | license" on every page of a Go tutorial), and a code example lost every leading space
in the article viewer and in a saved copy (#627). - Wikipedia knowledge packs no longer treat the license line and navigation boxes as article
text. Every Wikipedia article ended in its Creative Commons notice, which was read and searched
as part of the article's last section, and German articles carried their navigation boxes, long
lists of related article titles, so a question about one Windows version also matched the articles
about the others. The navigation boxes are left out now. The license line is shown below
the article in the viewer, and a saved copy ends with it in a section of its own, License (#662). - Knowledge packs made from ordinary websites show quotation marks and arrows as characters.
Text likewe’llor»appeared in answers, in the article viewer and in saved
copies, and a search for "we'll" did not find it. Typographic quotes, dashes, arrows, accented
letters and common symbols are now decoded (#663). - German Wikipedia knowledge packs leave out two more boxes and give authority data a section of
its own. The "Commons: … – Sammlung von Bildern, Videos und Audiodateien" links and the line
"Bitte den Hinweis zu Rechtsthemen beachten!" were read as part of the article; they are left out
now. The authority data (GND, LCCN and VIAF numbers) now has its own Normdaten section instead of
trailing the references. The article viewer also no longer cuts the first word off a paragraph
that starts with its section's name, such as "FAT16 ist ein Dateisystem" (#673). - Installing the AI engine again is no longer offered a second time when it did not help. On a
HilbertRaum AI Kit, when even the freshly installed engine would not start, the AI Model screen
still offered Install the AI engine again, because the Kit's CPU fallback build was refused
right after it. The banner now says, as intended, that the engine's files are probably not the
cause, and on Windows it points to the Microsoft Visual C++ Redistributable (#670). - Installing the AI engine again also repairs a Kit's CPU fallback build. On a HilbertRaum AI
Kit, when only the CPU fallback build was refused, Install the AI engine again downloaded the
main engine, left the fallback build as it was, and the same warning and offer came back after
every reinstall. It now replaces whichever build the operating system refused. The reinstall is
also no longer turned down with "can't be replaced while a model is running" just because
document indexing was using the engine, and Check again no longer reports the engine as
working for a moment before the warning returns (#678). - Imports work again as soon as the AI engine does. When the AI engine had been unable to
start and then started normally, the warning went away, but imports kept failing with "The AI
engine can't run on this computer" and the reranker stayed off until the app was restarted. On a
Kit, the warning, its simulated-replies note and the failing imports stayed even after the
engine was fixed. Everything that uses the engine now starts again with it, and a chat model
left giving simulated replies moves back to the real engine (#654, #655). - Dictation says so when Windows blocks the voice engine. When Windows refused to start the
voice engine outright, dictation said only that the recording could not be transcribed, and an
audio import failed with a general error. Both now say that the voice engine can't run on this
computer, and the AI Model screen says what to do (#658). - The Translate screen no longer says translation runs on the graphics card on a computer
without one. On a PC with no usable graphics card it said "runs on the graphics card (GPU,
49/49 layers)" while translation actually ran on the processor. The Performance screen also no
longer shows "49 of 49 layers on the card" for translation running on the processor, as it did
whenever translation did not fit on the graphics card (#671). - A model on the graphics card is no longer shown as running on the processor. When the check
that lists the graphics cards crashed (a graphics-driver fault), the app took that as "no
graphics card". For the rest of the session, the chat header, Diagnostics and the Performance
screen then said the model ran on the processor although it ran on the card. If the model then
crashed, it was restarted on the card and stopped at the next crash, instead of moving to
compatibility mode. The app now reads where the model runs from the model's own start, so a
computer without a graphics card whose check gives no answer is also no longer shown as using
one (#653). - A chat model crash is reported once. One crash could be reported twice, with two crash
notices. With the model on the processor, the second report also stopped the model as if it had
crashed again (#656). - Cancel on a Documents row stops that row's task. When the row's task was waiting behind
another one, such as the deep-index build of a document you had just imported or a file
translation on the Translate screen, Cancel stopped that other task and the row's own task ran
to the end. The chat's Cancel document task still stops whichever task is running (#689). - A Cancel on a Documents row is no longer undone. A Cancel clicked while the screen was
updating could be lost, so Cancel was offered again while the first one was still pending, and a
task the app had stopped when the workspace locked could reappear after unlocking. A slow update
could also leave a running task that the screen no longer followed. If a cancel fails, Cancel is
now offered again instead of staying on "Stopping if possible…" (#680). - A running skill no longer gets stuck showing only Cancel. When the app was slow to report on
a skill run, the run's row could stop updating until you reloaded or locked the workspace. It now
keeps updating until the run ends (#688).
Security
- Advisories cleared in the build and test tools. Vitest moves to 4.1.12, which closes two
advisories in its mocking module (GHSA-xp26-3454-mjgp, GHSA-qxg6-89mg-rqv8) (#710).undici
moves to 6.29.1 and 7.30.1 (three advisories) andfast-urito 3.1.9 (four advisories). None
of these packages is part of the app you run, so nothing changes in use. - The PDF reader is updated. PDF reading moves to pdf.js 6.4, which guards against more kinds
of crafted PDF, among them files built to keep the app busy for a long time. On the 52 PDFs we
compared, it read exactly the same text as before, and our test scans were still recognised word
for word (#685). - Electron 43.7.7 → 43.8.3, the browser engine the app runs on, with the Chromium security
fixes released since 43.7.7 and Node.js 24.22.0. Downloads of models, the AI engine and text
recognition now refuse certificates from the compromised eMudhra intermediates
(GHSA-jr5w-w6x2-84p9), as browsers do. On Linux it also fixes crashes under GTK and Wayland.
Workspaces open exactly as before, and the minimum operating systems are unchanged (#708).
Issues resolved
- #473 — App-wide VRAM arbitration between the chat model, the reranker and the translation sidecar
- #570 — Chat: a scanned PDF attached in a chat fails with no pointer to Make searchable (OCR)
- #607 — Embeddings: the e5 request timeout is cleared at the headers, so a stalled response body is never cut off
- #612 — Answers ended by the Stop button, or cut by lock or quit, look finished afterwards — no lasting marker, and evidence packs say nothing was cut
- #627 — Knowledge packs: a site footer marked by a class leaks into delivered text, and code blocks lose their indentation
- #629 — Translation's GPU use is never observed: the sidecar runs below the log level that prints its offload line
- #646 — Builds started from a lower-case drive letter (c:\…) bundle ~41 main modules twice; main-side messages then come out in English on a German system
- #653 — GPU: an empty device-probe answer labels a GPU start cpu for the whole session
- #654 — Engine: a healthy start clears the #530 verdict but leaves the embedder, reranker and translator latched
- #655 — Engine: a Kit's cpu/ refusal overwrites the verdict's program, so a healthy main-build start never clears it
- #656 — Runtime ladder + GPU: test-coverage gaps and one small defect found in the October test campaign
- #658 — Transcriber: a whisper-cli start that Windows refuses synchronously is never reported as "can't run"
- #659 — Sidecar services: test-coverage gaps and small defects found in the October sidecar-services test campaign
- #660 — Docs: stale statements about the sidecar services found in the October test campaign
- #662 — Knowledge packs: Wikipedia's license line and German navigation boxes are delivered as article text
- #663 — Knowledge packs: typographic named entities (’ “ » …) are delivered undecoded
- #670 — Engine: on a Kit, a cpu/ refusal after a reinstall drops #532's afterInstall, so the reinstall is offered again
- #671 — Translate screen: the device hint claims the graphics card on a PC without one (offload line is no GPU evidence)
- #673 — Knowledge packs: German Wikipedia's Normdaten, Rechtshinweis and Schwesterprojekte boxes are delivered as article text
- #678 — Engine: a damaged-files verdict only the cpu/ net reported offers a reinstall that never touches cpu/
- #680 — Doc-task store: a poll tick writes back the entry it read before its await, so a Cancel or a lock purge in between is undone
- #681 — Docs IPC: pickDocuments is the last picker that works while locked; previewDocumentPage accepts any page size
- #682 — Documents pipeline part 1: test-coverage gaps, and the test moves left for part 2, from the October doc-task test campaign
- #684 — Importing a drive root or a folder path with a trailing separator drops every file's folder label and relative path
- #685 — pdf.js 6.4.299 (Dependabot #666) landed without a review record; the manual PDF gates and the polyfill comments are out of date
- #687 — Documents pipeline part 2: test-coverage gaps, doc drift and deferred seams from the October ingestion + OCR test campaign
- #688 — Skill-run store: an overlapping poll can give up while a slow one is in flight, and the late success leaves a running row nothing polls
- #689 — Documents row Cancel sends an untargeted cancel: a task queued behind another screen's task cancels that task instead
- #698 — Renderer bundles KaTeX twice: four nested 0.16.47 copies in the lockfile, two of them imported
- #701 — Chat: a streamed
$$ …formula shows a KaTeX error box until it parses - #711 — Knowledge packs: archive titles carry the #488 sup/sub markers (
CO_2-Steuer) in citations, the viewer and admission - #713 — Knowledge packs: a transient file kept for an unconfirmed kiwix child survives every lock until the next app start (docs say: the next session start)
- #715 — Knowledge packs: test-coverage gaps found in the October ZIM test campaign
- #716 — Knowledge packs: on CPU the planner's 12 s PLAN_TIMEOUT_MS times out on qwen3.5-4b for 2 of 6 list questions
What's Changed
- test(runtime): prune and repair the runtime ladder + GPU placement test surface (test campaign) by @comilionas in #657
- test(sidecars): sidecar-backed services test campaign — embedder, reranker, vision, translation, whisper by @comilionas in #661
- #473: the graphics card shared between chat, translation and the reranker (Phase 0 + 1) by @comilionas in #631
- fix(zim): figure captions mark sup/sub and drop citation brackets (#488) by @comilionas in #628
- chore(zim): stage A of the acceptance read, a word check of the converter by @comilionas in #665
- fix(runtime): #656 — one crash reported once, the untested wiring covered, GPU suites host-independent by @comilionas in #668
- fix(engine): a refused engine that runs again heals what it latched; a sync whisper-cli refusal is "can't run" (#654, #655, #658) by @comilionas in #669
- fix(runtime): a start's own GPU buffers label it; a crashed GPU probe is unknown, not "no graphics card" (#653) by @comilionas in #672
- fix(zim): a crawled site's footer stays out of knowledge packs; code keeps its indentation (#627) by @comilionas in #664
- chore(deps-dev): Bump the development group with 2 updates by @dependabot[bot] in #667
- chore(deps): Bump the production group with 3 updates by @dependabot[bot] in #666
- fix(zim): knowledge packs decode HTML 4.01's named entities (#663) by @comilionas in #675
- fix(zim): Wikipedia's license line leaves the article text but stays visible; German navigation boxes are dropped (#662) by @comilionas in #674
- docs(sidecars): the sidecar docs and comments say what the code does; drop ingestion's unused embeddingModelId (#660, #659) by @comilionas in #676
- fix(runtime): a fresh engine copy refused as damaged keeps afterInstall when the cpu/ net reports next (#670) by @comilionas in #677
- fix(translation): a start's own GPU buffers say where it ran, never the offload line (#671) by @comilionas in #679
- test(doctasks): prune and repair the documents test surface (campaign part 1: doc tasks, whole-doc analysis, docs IPC, renderer) by @comilionas in #683
- test: documents pipeline part 2 test campaign — ingestion, parsers, stored copy, OCR engine/task, OCR install by @comilionas in #686
- fix(doctasks): a poll tick writes back the entry as it is after its round-trip (#680) by @comilionas in #690
- fix(ingestion): a drive root or a trailing-separator folder pick keeps its folder metadata (#684) by @comilionas in #691
- fix(docs-ipc): gate pickDocuments on an unlocked vault; cap the preview page size (#681) by @comilionas in #692
- fix(doctasks): the Documents row's Cancel stops the row's own task, by its id (#689) by @comilionas in #693
- fix(skills): one skill-run poll at a time, so a slow one cannot strand a running row (#688) by @comilionas in #695
- test(documents): close #682 and #687 — coverage gaps, moves, seams, and three honesty fixes by @comilionas in #694
- fix(deps): review Dependabot #666 (pdf.js 6.4, streamdown 2.7) — polyfill comments, packaged-posture PDF test, two markdown fixes (#685) by @comilionas in #696
- fix(deps): DEP-7, Dependabot alerts #124-#127: source-map-js 1.2.2; katex and sprintf-js triaged for dismissal by @comilionas in #699
- fix(engine): "Install the AI engine again" replaces what the OS refused, the cpu/ net included (#678) by @comilionas in #700
- fix(deps): the renderer bundles KaTeX once (#698) by @comilionas in #702
- fix(zim): German Wikipedia's sister links and legal notice leave the text; Normdaten gets its own segment (#673) by @comilionas in #703
- fix(chat): a streamed $$ formula typesets as it arrives; $$ display pairs keep their TeX (#701) by @comilionas in #704
- test(zim): campaign part 1 — process and client boundary; remove the test-only seams by @comilionas in #717
- test(zim): campaign part 2 — retrieval; timer tests drive the shipped bounds by @comilionas in #718
- test(zim): campaign part 3 — IPC and pack registry; retire zim-ipc.test.ts by @comilionas in #719
- test(zim): prune the converter, renderer and support test surface (ZIM test campaign, part 4 of 4) by @comilionas in #720
- chore(deps-dev): Bump the development group across 1 directory with 4 updates by @dependabot[bot] in #710
- chore(deps): Bump the production group across 1 directory with 2 updates by @dependabot[bot] in #709
- chore(deps-dev): Bump electron from 43.7.7 to 43.8.0 by @dependabot[bot] in #708
- fix(deps): Electron 43.8.0 -> 43.8.3, Dependabot alert 130 (DEP-8) by @comilionas in #721
- fix(deps): undici and fast-uri, Dependabot alerts 131-134, 138, 139 (DEP-8) by @comilionas in #722
- docs(deps): DEP-8 record covers all ten alerts; Electron 43.8.4 fixes the undici residual by @comilionas in #723
- fix(zim): a transient kept for an unconfirmed kiwix child goes when that child is seen to exit (#713) by @comilionas in #724
- test(zim): cover the knowledge-pack gaps the October test campaign listed (#715) by @comilionas in #726
- fix(zim): an article title keeps the archive's spelling, without sup/sub markers (#711) by @comilionas in #725
- docs(zim): the planner's 12 s bound on a processor, measured and kept; the smoke starts llama-server like the app (#716) by @comilionas in #727
- release: v0.1.64 — version bump by @comilionas in #728
Full Changelog: v0.1.63...v0.1.64