Releases: hairbui76/RustlingPDF
Release list
RustlingPDF v0.1.9
What's new
Nothing you can use yet, and I would rather say that plainly than dress it up.
This release adds an optional PaddleOCR engine to the processing service — a second way to make a scanned PDF searchable, alongside the existing OCRmyPDF and Tesseract paths. It is not compiled into these builds. The desktop app and the Docker images below will tell you the feature is missing if you try to select it, and that is deliberate.
Two reasons. It has never once run against a real OCR model — everything proven about it so far is the machinery around the engine, not the engine reading text. And switching it on would pull two more numeric libraries into a backend binary that gets compiled three separate times per release, which works directly against the build times the last two releases were spent reducing. Neither cost is worth paying for something unproven.
So this is groundwork. The engine is written, reviewed, and tested; it needs a real model run before it earns a place in an installer.
Upgrading
Nothing to do. No configuration you already set changes meaning, and no API request or response shape changed.
One visible difference for desktop users: your settings.yml gains an inert ocr: block on first start after upgrading, with engine: auto — which is exactly the OCR behaviour you have now. Your existing values are carried across unchanged, as with any settings upgrade. You can ignore the new block entirely.
If you run OCR today through OCRmyPDF or Tesseract, nothing about it changed.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.9
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.9 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off, and has a button for asking on demand); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
The PaddleOCR engine ships in no artifact here. Running it means building the backend yourself with its feature enabled, and supplying your own ONNX Runtime, models, dictionary, and a font for the text layer — roughly 160 MB of files this project does not and will not bundle. Its remaining gaps are written down in docs/plans/active/paddle-ocr-backend.md: no model-backed run, no proof it handles Chinese, Japanese or Korean text, and no end-to-end test of page ordering.
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
Full Changelog: v0.1.8...v0.1.9
RustlingPDF v0.1.8
What's new
Nothing, for you. This release is the same application as v0.1.7 — no product code changed between the two, and the installers carry the same content with a different version string.
What it does carry is the build pipeline. The desktop legs now compile the backend sidecar and the app shell at the same time instead of one after the other, which took a release from 25 minutes to 19. Two Actions caches that no run could ever read — one written under release tags where nothing can restore them, one Docker layer cache that had never scored a hit — are gone.
If you are on v0.1.7, there is no reason to hurry. The audit behind this and the previous release is in the repository at docs/plans/active/build-speed-and-app-size.md, including the experiments that were measured and rejected.
Upgrading
Nothing to do. No configuration, settings file, or API request shape changed.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.8
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.8 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off, and has a button for asking on demand); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
Full Changelog: v0.1.7...v0.1.8
RustlingPDF v0.1.7
What's new
Every installer is half a megabyte smaller. setup.exe 43.1 MiB, MSI 49.6, deb 40.4 — down 0.5 MiB each from 0.1.6. Two things account for it: the frontend's icon set moved from Material Icons to the Material Symbols bundle the rest of the UI already used, which let three unreferenced UI libraries leave the build; and the PDF viewer now ships two Latin fallback faces instead of four.
That second change is the one you might notice. When a PDF references a font it did not embed, the viewer substitutes Noto Sans. It still has the regular and bold faces; it no longer has the italic ones, so italic text in such a document renders upright. Text in documents that embed their fonts — the great majority — is unaffected.
Icons look slightly different. Material Symbols and Material Icons draw the same glyphs with slightly different strokes. Nothing moved or changed meaning.
Sidebar file rows are inset from the rail's edges, so a selected row's card no longer touches the border.
Upgrading
Nothing to do. No configuration, settings file, or API request shape changed.
For contributors
cargo test on the processing crate now links 19 integration-test binaries instead of 91; the test set is unchanged. Test files live under rust/crates/rustling-processing/tests/cases/ as modules of six domain binaries; the thirteen that need a fresh process stay standalone at the top of tests/. The build-speed audit that drove this release and the previous one is in docs/plans/active/build-speed-and-app-size.md.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.7
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.7 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off, and has a button for asking on demand); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
Full Changelog: v0.1.6...v0.1.7
RustlingPDF v0.1.6
What's new
Nothing user-facing changed in this release. It carries the first batch of build-pipeline work from a measured audit of where release time and installer bytes go — the audit itself is in the repository at docs/plans/active/build-speed-and-app-size.md.
A smaller Windows setup.exe. 43.6 MiB, down from 44.6. The NSIS installer's LZMA dictionary was raised from the 8 MiB default to 64 MiB so it can see the code the app shell and the processing sidecar have in common. Installing needs about 64 MiB of RAM for decompression, which every supported Windows has.
Slightly larger MSI and deb. 50.1 and 40.9 MiB, up from 49.6 and 40.5. Both binaries now build with thin rather than fat link-time optimisation, which cuts the sidecar's build time by a third at a cost of about 0.2 MB per binary compressed. The MSI and deb have no dictionary lever to offset it, so they carry the cost.
Four unreferenced frontend packages are gone from the dependency manifest. They were never in the shipped bundle, so nothing you download changes.
Upgrading
Nothing to do. No configuration, settings file, or API request shape changed.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.6
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.6 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off, and has a button for asking on demand); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
Full Changelog: v0.1.5...v0.1.6
RustlingPDF v0.1.5
What's new
Sidebar collections look the way they should. The select-all checkbox introduced in 0.1.4 now trails the collection header, after the file count, instead of leading it. The hairline rail that ran down the left of a collection's files is gone; the indent that rail accompanied stays, and is enough on its own to keep a collection's files from reading as siblings of the unfiled ones below.
This also fixes a regression 0.1.4 shipped: the collection header was being indented along with the files under it, so PAPERS sat a step to the right of the FILES heading above it. It is back on the left edge.
Upgrading
Nothing to do. No configuration, settings file, or API request shape changed.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.5
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.5 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off, and has a button for asking on demand); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
Full Changelog: v0.1.4...v0.1.5
RustlingPDF v0.1.4
What's new
You can now ask for an update whenever you want. Settings → General has a refresh button beside Version. Until now the app looked for updates once per launch and never again, so asking a second time meant restarting it — and if you had turned the startup check off, there was no way to ask at all. Press the button and it tells you what it found: an offered version, with its own install button right there, or that nothing was offered.
That last answer is deliberately not phrased as "you are up to date". A deb or rpm install updates through your package manager and will never be offered anything here, and a machine that cannot reach GitHub learns nothing either — both look identical to being current, so the wording says what was actually observed.
Selecting a whole collection takes one click. Each collection header in the sidebar has a checkbox: tick it to put every file in that collection into the workspace, untick to take them all back out. A partly-open collection shows the mixed state. The files go in as one batch, so a collection with dozens of files opens without the stutter of adding them one at a time.
Upgrading
Nothing to do. No configuration, settings file, or API request shape changed.
This is also the first upgrade your app performs with the install retry from 0.1.3 already in place, so "Update and restart" should take one click rather than two. If it still takes two, the banner now names the underlying error — that text is what to report.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.4
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.4 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off, and the new refresh button is there too); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
The refresh button is a desktop-only control: the web and Docker builds have no updater to drive, and it does not appear there.
Full Changelog: v0.1.3...v0.1.4
RustlingPDF v0.1.3
What's new
"Update and restart" no longer needs two clicks. On Windows the first click could report "The update could not be installed" while a second click, with nothing else changed, installed it — the download crossing a cold CDN edge or a proxy, an antivirus scanner holding the freshly written installer, a resource handle that stopped resolving. One click is now worth two attempts, so a fault like that is absorbed instead of shown to you.
There is no risk of installing twice: on Windows the installer replaces the running process, so an attempt that got that far never comes back to be retried. Reaching the retry is itself proof that nothing was installed.
When an update genuinely cannot install, the banner now says why. The reason previously went only to a developer console that a packaged app gives you no way to open, which left "could not be installed" as the whole story.
Upgrading
One caveat worth knowing: the thing fixed in this release is the updater, and the updater that runs is the one in the version you are already on. Upgrading onto 0.1.3 may still take the two clicks it took before. Every upgrade after this one should take one.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.3
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.3 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand.
Full Changelog: v0.1.2...v0.1.3
RustlingPDF v0.1.2
What's new
The app now tells you which build it is running. The version sits under your account name in the bottom-left of the sidebar, and in Settings → General. Until now the sidebar had a slot for it but the backend never sent the value, so it silently rendered nothing — which is exactly the sort of thing you only notice when you are trying to describe a bug to someone. It reads the same version the release is tagged with, so a screenshot of the sidebar is enough to say what you are on.
Settings is shorter. The Legal group — legal documents plus the backend and frontend third-party licence tables — is gone. Settings now has Preferences (General, Keyboard Shortcuts) and Help (Tours), and nothing else. If you had bookmarked a ?section=legal link it will open Settings without a selection instead of erroring.
Dependency attribution itself has not changed: the licence data is still generated at build time, still shipped, and still served at /api/v1/ui-data/licenses. What is gone is the settings page that displayed it.
Upgrading
Nothing to do. No configuration, settings file, or API request shape changed, and no endpoint was added or removed. Existing settings.yml files are read exactly as before.
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.2
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.2 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Known limitations
No macOS build — that platform is still paused. No AppImage either: v0.1.0 shipped the last one, so an existing AppImage install cannot see this release through its update check and has to be replaced by hand if you want 0.1.2.
Also in this release
A Vietnamese manual QA checklist landed at docs/product/manual-test-checklist.vi.md — a per-tool, per-platform test sheet derived from the actual shipped routes and tools, for anyone wanting to exercise a build by hand before trusting it.
Full Changelog: v0.1.1...v0.1.2
RustlingPDF v0.1.1
Highlights
Linux packaging is consolidating on the .deb for now. The AppImage is paused ("coming soon", same status as macOS) — v0.1.0 was the last release to ship one. If you are running the AppImage today it keeps working, but it will not be offered updates while paused; when you want a newer version, grab the .deb (or check this page). Debian/Ubuntu users are unaffected.
Everything from v0.1.0 — Word document previews, the opt-in desktop shortcut, the 15%-smaller Windows installers — carries over unchanged.
Notes
- Windows installs (both
.msiand-setup.exe) and future.deb-to-.debupgrades are unaffected by the AppImage pause. - macOS remains paused ("coming soon").
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.1
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.1 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.deb; AppImage is paused — coming soon), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Full Changelog: v0.1.0...v0.1.1
RustlingPDF v0.1.0
Highlights
Word documents now show real previews. Drop a .docx (or .doc) into the workbench and its card shows the actual first page instead of a generic icon — converted once through the same engine the Convert tool uses, then cached, so it costs one conversion per document, not one per hover. If conversion is not possible (legacy .doc without LibreOffice installed, malformed file), the card quietly keeps its icon.
The desktop shortcut is now your choice. Both Windows installers ask instead of assuming: the MSI's install screen has an "Add desktop icon" checkbox and the setup.exe finish page has "Create desktop shortcut" — both unchecked by default. Your choice sticks: updating the app keeps a shortcut you opted into and never brings back one you declined. Unattended MSI deploys opt in with INSTALLDESKTOPSHORTCUT=1.
Notes
- Existing installs updating to this version keep their current desktop shortcut (the choice persists through upgrades from here on).
- macOS remains paused ("coming soon").
Container images
Published to GitHub Container Registry by this release run:
docker pull ghcr.io/hairbui76/rustlingpdf:v0.1.0
docker pull ghcr.io/hairbui76/rustlingpdf-ai-engine:v0.1.0 # optional AI sidecarBoth are also tagged latest. Run instructions: rust/RUNNING_WITH_RUST.md, section "Docker".
Desktop apps
Installers built and signed by this release run, attached below: Linux (.AppImage, .deb), Windows (-setup.exe — the smaller download — or .msi for msiexec/GPO deployment; pick one and stay on it, updates keep whichever you installed). Each signed bundle has a .sig file next to it so you can verify your download against the project's minisign public key.
At startup the desktop app asks this releases page once whether a newer version exists (Settings -> General turns that off); nothing else is ever sent anywhere. Updates install only when you ask, and every download is verified against the signing key first.
Full Changelog: v0.0.9...v0.1.0