Releases: DonovanMontoya/OperaLibre
Release list
OperaLibre Nightly 0.4.15-nightly.20261005.65
What's changed
- feat: filter the shelf to books with read-along text (
c23ee4b) - fix: keep the page clear of the side tab bar beside another app (
a90ff35)
Full changelog: 0.4.15-nightly.20261004.64...0.4.15-nightly.20261005.65
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre Nightly 0.4.15-nightly.20261004.64
What's changed
- fix: remember accepted update-key rotations (
15a47fa) - fix: keep overlapping update checks from undoing a saved rotation (
eb1b7b5) - feat: give iPad separate Shelf and Reading tabs with a sliding transition (
41c2f3f) - feat: package an offline Alice readalong demo (
8deda84) - fix: play bundled demo audio without a media token (
49ee6a9) - fix: keep the iPad tab and shelf layout in step on every path (
92c886a) - fix: retint the iPad tab bar after a selection the page makes (
86e19dc) - feat: make the web reader a full-window reading room (
bfb7aa7) - fix: keep reader layouts usable across entry points (
4ba4772) - fix: preserve companion width on narrow screens (
5fc40ca) - docs: refresh setup, API, and deployment guidance (
527d499) - fix: modernize documentation styling (
c35389b) - fix: make nightly release scheduling more reliable (
d37a894) - fix: wait for idle releases before dispatching a nightly (
007ec62) - fix: prevent runtime diagnostic files from aborting Audible imports (
1cdae7c)
Full changelog: 0.4.13-nightly.20261003.61...0.4.15-nightly.20261004.64
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre 0.4.14
What's changed
- Fixed Audible imports failing when Libation’s runtime creates diagnostic sockets and pipes in the download folder.
- Improved nightly release scheduling, including waiting for active releases before starting a nightly.
- Refreshed documentation styling and setup, API, configuration, and deployment guidance.
Existing read-along maps remain current; no remapping is recommended for this release.
- docs: refresh setup, API, and deployment guidance (
527d499) - fix: modernize documentation styling (
c35389b) - fix: make nightly release scheduling more reliable (
d37a894) - fix: wait for idle releases before dispatching a nightly (
007ec62) - fix: prevent runtime diagnostic files from aborting Audible imports (
1cdae7c)
Full changelog: 0.4.13...0.4.14
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre 0.4.13
What's changed
Changes since 0.4.12:
- The browser reader now fills the window, with a contents column, reading controls, and a docked player offering playback speed, the sleep timer, and chapters. EPUBs, supplements, and image galleries stay usable across book details and Now Playing, including narrow screens.
- The iPad interface has separate Shelf and Reading tabs with a sliding transition. Tab selection, shelf layout, and tab-bar colors stay in step when opening a book through different entry points.
- Explore the on-device demo now includes a bundled Alice’s Adventures in Wonderland audio excerpt, EPUB, and sentence timings for offline listening and read-along. Sources, credits, and license information are available offline. Bundled demo audio also opens correctly in the iOS player.
- Server and macOS updaters remember accepted signing-key rotations and prevent overlapping update checks from undoing them. This release uses the existing trusted signing key; it does not introduce a key rotation.
Existing generated read-along maps remain valid; the mapping revision is unchanged and no remapping is recommended for this update.
Source changes since 0.4.12: https://github.com/DonovanMontoya/OperaLibre/compare/0.4.12..0.4.13
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre Nightly 0.4.13-nightly.20261003.61
What's changed
- feat: replace audiobook covers from Edit Info (
7df67e2) - fix: limit how many EPUB entries are decompressed at once (
e951887) - fix: fail an EPUB entry that is cut short or damaged at its last chunk (
d88a1bc) - fix: wait for sign-in navigation in web CI (
737b78a) - test: accept an EPUB transfer failure before headers (
870f63d) - fix: rebuild stale reader pages after stage resizing (
f63be37) - fix: preserve edited covers across offline and CarPlay use (
63c9054) - fix: limit concurrent companion analysis memory (
44f67ec) - fix: limit macOS update manifest downloads (
40e244d) - fix: block external requests from EPUB content (
3c7fc68) - fix: enforce storage budgets for Libation downloads (
4e72572) - EPUB trailing-image detection repeatedly rescans attacker-controlled markup (
fa76fa2) - fix: admit EPUBs to shared companion analysis by their text (
71f1f83) - fix: stop Libation's child processes on Windows when a download is cut off (
81b6405) - fix: keep one account from holding every EPUB entry slot (
84e6e85) - fix: strip connection hints from retained EPUB stylesheet links (
d406563) - fix: align the cover file picker (
8c55210) - fix: keep Duo layouts clear of active creases (
fb474e3) - fix: simplify metadata editor actions (
1b866f1) - docs: prepare iOS 1.3.0 changelog (
9d2d445) - fix: update brace expansion before release (
f68ef7f) - docs: include cover replacement in iOS 1.3.0 notes (
9b6a75f) - docs: clarify remapping for older iOS sync maps (
56136e9) - fix: own the Windows Libation job handle (
35e2ab4) - fix: align server test fixtures with their platforms (
922b348) - test: verify Windows job cleanup by child lifetime (
1a695cf)
Full changelog: 0.4.12-nightly.20261002.57...0.4.13-nightly.20261003.61
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre Nightly 0.4.13-nightly.20261002.60
What's changed
On-demand nightly built from commit 2c5773a07d46a3d670687f94e25cae7bf636ad89, the same source as stable 0.4.12. There are no source changes since 0.4.12.
No additional read-along remapping is recommended for this nightly. Existing maps remain usable.
This nightly publishes web/server packages only and must pass packaged upgrade, rollback and nightly-to-stable round-trip checks against 0.4.12. Native app and read-along runtime publication remains on the stable release path.
- feat: replace audiobook covers from Edit Info (
7df67e2) - fix: limit how many EPUB entries are decompressed at once (
e951887) - fix: fail an EPUB entry that is cut short or damaged at its last chunk (
d88a1bc) - fix: wait for sign-in navigation in web CI (
737b78a) - test: accept an EPUB transfer failure before headers (
870f63d) - fix: rebuild stale reader pages after stage resizing (
f63be37) - fix: preserve edited covers across offline and CarPlay use (
63c9054) - fix: limit concurrent companion analysis memory (
44f67ec) - fix: limit macOS update manifest downloads (
40e244d) - fix: block external requests from EPUB content (
3c7fc68) - fix: enforce storage budgets for Libation downloads (
4e72572) - EPUB trailing-image detection repeatedly rescans attacker-controlled markup (
fa76fa2) - fix: admit EPUBs to shared companion analysis by their text (
71f1f83) - fix: stop Libation's child processes on Windows when a download is cut off (
81b6405) - fix: keep one account from holding every EPUB entry slot (
84e6e85) - fix: strip connection hints from retained EPUB stylesheet links (
d406563) - fix: align the cover file picker (
8c55210) - fix: keep Duo layouts clear of active creases (
fb474e3) - fix: simplify metadata editor actions (
1b866f1) - docs: prepare iOS 1.3.0 changelog (
8bcf2f3) - fix: update brace expansion before release (
a60f82e) - docs: include cover replacement in iOS 1.3.0 notes (
7fd9f47) - docs: clarify remapping for older iOS sync maps (
eda1ed8) - fix: own the Windows Libation job handle (
7819ed9) - fix: align server test fixtures with their platforms (
1865f54) - test: verify Windows job cleanup by child lifetime (
41c5c35)
Full changelog: 0.4.12-nightly.20261002.57...0.4.13-nightly.20261002.60
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre 0.4.12
What's changed
- Playback and offline recovery preserve deliberate seeks across app restarts and reconnects, including CarPlay, and adopt the server position more reliably after conflicting progress updates. Completing or reopening a book preserves its listening dates.
- Each saved server address now has its own sign-in. Sign in once at each alias in Settings → Connection; automatic reconnect uses only addresses with an existing sign-in. An upgraded app that was using an alias returns to its original address until the alias is signed in.
- Owners and administrators can replace or restore audiobook covers in Edit Info using JPEG, PNG, or WebP files. Overrides survive scans, restarts, and metadata edits; artwork updates the offline shelf and CarPlay without rewriting original audio or losing playback state. Cover editing requires a writable library folder.
- Updated the pinned web development dependency to clear three brace-expansion denial-of-service advisories.
- EPUB pages cannot load external content. The server limits concurrent EPUB decompression and companion-analysis memory, isolates entry capacity per account, and bounds parsing work for malformed or unusually large documents.
- Libation downloads enforce storage budgets and clean up interrupted downloads and their child processes, including Windows job-object cleanup. Library scans ignore hidden files and recycle-bin entries while preserving existing book identities.
- Read-along queues survive restarts with their job IDs and restart interrupted books from the beginning. Sync activity can identify older generated maps and run limited nightly batches. Existing queue, schedule, and sweep settings are preserved.
- Continue Reading can open a book paused or start playback, according to a setting on this device. Downloaded books remain on the shelf when uploaded titles refresh, and full-screen reading leaves more room for the page.
- Improved iPad player controls, startup navigation, tab-bar gestures, and the phone launch animation. Duo layouts keep controls clear of active creases, and reader pages recover after viewport resizing.
- The updater preserves the server PID during handoff, and macOS bounds downloaded update manifests. Nightly builds are scheduled for 8:17 p.m. America/New_York, following daylight saving time.
Read-along remapping: no blanket regeneration is needed for this release. Mapping revision 1 now identifies older OperaLibre-generated maps as Outdated map; they remain usable and can be re-synced individually or in nightly batches. Current maps and external maps do not need regeneration.
This release publishes server/web packages and an unsigned Android APK (native Android version 0.2.6, build 14). The optional read-along sync runtime advances to 1.0.2 to update its dependency. The iOS 1.3.0 changelog is prepared separately; this workflow does not publish an iOS app or confirm TestFlight/App Store distribution.
Full changelog: 0.4.11...0.4.12
- fix: normalize version prefixes in release changelogs (
da17aa5) - fix: preserve server pid during update handoff (
b5da017) - test: wait for restarted server pid (
7a627ad) - feat: recover sync queues and remap outdated maps (
31a2bf6) - fix: persist full sync batches in one write (
da17a99) - fix: preserve deliberate seeks across offline restarts (
fc1819d) - fix: retain device books when refreshing uploaded titles (
ca102dd) - fix: update sync dependency to unblock nightly builds (
840f7ce) - fix: preserve listening dates on completion changes (
4463744) - fix: retain offline CarPlay seek intent after adoption (
c90dbf3) - fix: preserve playback and offline recovery across interruptions (
a660d0d) - fix: preserve legacy recovery and fresh seek boundaries (
8d5dfab) - fix: clear place controls from the full-screen reader (
65e610e) - fix: rebase queued edits after a normalized save (
b2139e0) - fix: keep iOS launch navigation stable (
a73de92) - fix: load startup test hooks without a Node 22.13 API (
c6a4fa8) - fix: ignore hidden and recycle-bin entries when scanning the library (
09fc9c3) - fix: adopt the server position when a rejected replay already healed the journal (
83bdd48) - chore: run the CarPlay resume test in CI (
c96d7e1) - chore: run the playback lifecycle spec in CI (
5c690d4) - fix: clear replay conflicts after canonical restore (
347ee26) - fix: preserve legacy identities during sidecar cleanup (
4d53ce6) - feat: make Continue Reading playback configurable (
079aab4) - fix: reconcile progress when playing a paused restore (
ddf9160) - test: buffer offline seek destinations before disconnecting (
54cad8f) - fix: make BookPlayer author URLs safe (
b1fcaf8) - chore: schedule nightly releases at 8:17pm Eastern (
2c4c6d9) - fix: enlarge iPad player controls (
5a92f73) - fix: tab bar ignores stray swipes (
b644236) - feat: animate the wordmark while the phone app opens (
3432202) - fix: preserve Duo viewport and reader rail layouts (
d105061) - fix: allow the Android app to connect to the server (
3451ff4) - fix: verify a saved address is the same server before reusing the sign-in (
142d81b) - feat: replace audiobook covers from Edit Info (
7df67e2) - fix: key the server proof with a value backups never contain (
4e40782) - fix: keep a separate sign-in for each saved server address (
9353c66) - fix: limit how many EPUB entries are decompressed at once (
e951887) - fix: fail an EPUB entry that is cut short or damaged at its last chunk (
d88a1bc) - fix: wait for sign-in navigation in web CI (
737b78a) - test: accept an EPUB transfer failure before headers (
870f63d) - fix: rebuild stale reader pages after stage resizing (
f63be37) - fix: preserve edited covers across offline and CarPlay use (
63c9054) - fix: limit concurrent companion analysis memory (
44f67ec) - fix: limit macOS update manifest downloads (
40e244d) - fix: block external requests from EPUB content (
3c7fc68) - fix: enforce storage budgets for Libation downloads (
4e72572) - EPUB trailing-image detection repeatedly rescans attacker-controlled markup (
fa76fa2) - fix: admit EPUBs to shared companion analysis by their text (
71f1f83) - fix: stop Libation's child processes on Windows when a download is cut off (
81b6405) - fix: keep one account from holding every EPUB entry slot (
84e6e85) - fix: strip connection hints from retained EPUB stylesheet links (
d406563) - fix: align the cover file picker (
8c55210) - fix: keep Duo layouts clear of active creases (
fb474e3) - fix: simplify metadata editor actions (
1b866f1) - docs: prepare iOS 1.3.0 changelog (
8bcf2f3) - fix: update brace expansion before release (
a60f82e) - docs: include cover replacement in iOS 1.3.0 notes (
7fd9f47) - docs: clarify remapping for older iOS sync maps (
eda1ed8) - fix: own the Windows Libation job handle (
7819ed9) - fix: align server test fixtures with their platforms (
1865f54) - test: verify Windows job cleanup by child lifetime (
41c5c35)
Full changelog: 0.4.11...0.4.12
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full [release installation guide](https:/...
OperaLibre Nightly 0.4.12-nightly.20261002.57
What's changed
- fix: preserve playback and offline recovery across interruptions (
a660d0d) - fix: preserve legacy recovery and fresh seek boundaries (
8d5dfab) - fix: clear place controls from the full-screen reader (
65e610e) - fix: rebase queued edits after a normalized save (
b2139e0) - fix: keep iOS launch navigation stable (
a73de92) - fix: load startup test hooks without a Node 22.13 API (
c6a4fa8) - fix: ignore hidden and recycle-bin entries when scanning the library (
09fc9c3) - fix: adopt the server position when a rejected replay already healed the journal (
83bdd48) - chore: run the CarPlay resume test in CI (
c96d7e1) - chore: run the playback lifecycle spec in CI (
5c690d4) - fix: clear replay conflicts after canonical restore (
347ee26) - fix: preserve legacy identities during sidecar cleanup (
4d53ce6) - feat: make Continue Reading playback configurable (
079aab4) - fix: reconcile progress when playing a paused restore (
ddf9160) - test: buffer offline seek destinations before disconnecting (
54cad8f) - fix: make BookPlayer author URLs safe (
b1fcaf8) - chore: schedule nightly releases at 8:17pm Eastern (
2c4c6d9) - fix: enlarge iPad player controls (
5a92f73) - fix: tab bar ignores stray swipes (
b644236) - feat: animate the wordmark while the phone app opens (
3432202) - fix: preserve Duo viewport and reader rail layouts (
d105061) - fix: allow the Android app to connect to the server (
3451ff4) - fix: verify a saved address is the same server before reusing the sign-in (
142d81b) - fix: key the server proof with a value backups never contain (
4e40782) - fix: keep a separate sign-in for each saved server address (
9353c66)
Full changelog: 0.4.12-nightly.20260930.56...0.4.12-nightly.20261002.57
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.
OperaLibre read-along sync add-on 1.0.2
Optional read-along sync add-on 1.0.2. OperaLibre servers install it from
Administration; you do not need to download these files yourself. It is
published separately from app releases because it changes much less often.
Inputs: sha256:ed27345ed52d1938c8f6295b8b548634a214644e54ea64512ccf8814afd32eed
OperaLibre Nightly 0.4.12-nightly.20260930.56
What's changed
- fix: preserve deliberate seeks across offline restarts (
fc1819d) - fix: retain device books when refreshing uploaded titles (
ca102dd) - fix: preserve listening dates on completion changes (
4463744) - fix: retain offline CarPlay seek intent after adoption (
c90dbf3)
Full changelog: 0.4.12-nightly.20260929.55...0.4.12-nightly.20260930.56
Downloads
The easy way (macOS and Linux)
One command downloads the right package for your computer, verifies its SHA-256 digest, walks you through setup, and starts the server — and updates an existing installation in place when run again:
curl -fsSL https://raw.githubusercontent.com/DonovanMontoya/OperaLibre/main/script/install.sh | sh
Add | sh -s -- --help to see its options, including --server-only for headless machines.
Which file should I download?
- Most people: download the
combinedpackage for your computer. It includes the server and web app, starts in the background, and opens in your browser without leaving a Terminal window open. - Server only: use the same
combinedpackage and setweb_dist_dir =(blank) in itsserver.config, then start it withstart.shorstart.cmd. The installer's--server-onlyoption does this for you. - Frontend only: download the file ending in
frontend.zipwhen you already have an OperaLibre or Jellyfin server and want to deploy only the static web app. - Android: the file ending in
android-unsigned.apkis an unsigned release build for developers or distributors to sign before installation. - Update manifest:
operalibre-manifest-v1.jsonis what installations read to update themselves; you do not need to download it. - Read-along sync add-on: the optional sync add-on is published in its own
readalong-sync-v…release, only when it changes. Install it from Administration; you do not need to download it yourself. - Deployment profiles: new installs start in
localmode. Chooselanfor a trusted LAN/VPN orproxybehind same-machine HTTPS; remote first-run setup uses a one-time server token. - Transfer limits: uploads, generated ZIP downloads, and simultaneous ZIP generation have configurable server-side limits. Existing configs automatically receive safe defaults.
Choose windows-x64 for a 64-bit Windows PC, linux-x64 for a typical Intel/AMD Linux server, linux-arm64 for a 64-bit ARM Linux server or Raspberry Pi, macos-arm64 for an Apple Silicon Mac, or macos-x64 for an Intel Mac.
Every user-facing installation package contains a START-HERE.txt file. The SHA256SUMS.txt attachment can be used to verify downloaded files.
Administrators are notified in the app when a newer release is available. On combined and server-only release installations, an owner can install the matching verified package from Administration — server-only installations update just the server and leave a custom frontend untouched; other custom deployments use the release link for a manual update.
New users can follow the full release installation guide for first launch, adding books, phone access, backups, and updates.