Version 1.7.0
was released on 14 May 2021.
This release includes the following (notable) new features, improvements and bug fixes:
- Major refactor: database migration (SQLite3 / LevelDown) to Redux (JSON serialization). The DB backend will be completely removed in a future version (probably 1.8), which will complete the fix for large filesystem allocation
- Fixed LCP passphrase hint which was incorrectly escaped (URL slashes), and English grammar was incorrect
- Updated Chinese translation
- Added korean translation
- Added TTS synthetic speech voice selection (overrides engine default which selects based on language, so this forces user preference)
- Faster audio playback rate option (2 -> 3x)
- Fixed DAISY support, now allows opening files with .zip extension in addition to .daisy, allow subfolder(s) instead of just root .opf package, and allow opening OPF directly from not-zipped filesystem
- Fixed OPDS description display (HTML markup)
- Fixed MathML support regression bug, and updated to latest MathJax version, and now check for authored MathJax to avoid conflits
- Fix: the auto-generated EPUB for "about Thorium" is now force-refreshed at every app version update
- Fixed "all books" library view which was not reliable
- Cancellable downloads (LCP, OPDS)
- Fixed MacOS window manager issue
- Fixed OPDS search (XML UTF8 BOM), en|decodeURIComponent
- Fixed support for PDF files with unicode characters in filenames
- Fixed OPDS search input field and home state which was not reset during feed browsing
- Fixed OPDS authentication dialog cancel button
- Fixed HTTP streamer, workaround for publication resource URLs / relative paths with multiple consecutive slashes
- Fixed bookmark icon, and added progression + sorting in bookmark navigation list
- ... and many more smaller changes listed below.
(previous v1.6.0 changelog)
Git commit diff since v1.6.0
:
https://github.com/edrlab/thorium-reader/compare/v1.6.0...v1.7.0
=> 110 GitHub Pull Requests or high-level Git commits.
- (_) fix(DB): database migration, removed publications / OPDS feeds now marked but preserved to avoid re-absorbing in new Redux JSON state (PR #1452)
- (_) fix: UUID regression (bookmarks), imports now consistent
- (_) chore(NPM): package updates, notably r2-opds-js with HTML/plaintext description fixes (Fixes #1376 )
- (_) chore(NPM): NPM package updates
- (_) fix: disabled input colour and mouse cursor (Fixes #1459 PR #1462)
- (_) chore(NPM): package updates
- (_) fix(persistence): swap recovery mode from 2 to 3 (PR #1451)
- (_) Revert "Revert "fix(divina): remove divinaReadingMode from state""
- (_) Revert "feature (divina): new divina player (pr #1437)"
- (_) Revert "fix(divina) new build version (clean dist folder)"
- (_) Revert "fix(divina): Add an option to the Divina player setup (PR #1450)"
- (_) Revert "fix(divina): remove divinaReadingMode from state"
- (_) fix: the auto-generated EPUB for "about Thorium" is now force-refreshed at every app version update (PR #1458)
- (_) fix: "all books" library view was not reliable (PR #1454 Fixes #1453)
- (_) fix(l10n): Chinese translation update (PR #1457)
- (_) fix: publication removal from filesystem needed safeguard in case of non-existing UUID folder (scenario: DB migration into new JSON, but EPUB had been removed from new data format already)
- (_) fix(divina): remove divinaReadingMode from state
- (_) fix: rename JSON data config folder to ensure complete refresh on next launch (due to folder name mismatch, see previous commit)
- (_) fix: incorrect folder name in dev / continuous integration builds
- (_) chore(NPM): package updates
- (_) fix(persistence): new patch save process (PR #1448)
- (_) fix(divina): Add an option to the Divina player setup (PR #1450)
- (_) fix: bookmark ordering and percentage indicator
- (_) fix: removed ok() assertion which was generating false negatives in the console, return empty array instead (DB "find" functions)
- (_) fix: do not brutally remove publications from filesystem in case of error, but continue to prevent database corruption
- (_) fix: safeguard against crash when redux state is null/undefined + explicit object spread for code readability
- (_) fix: bookmark progress indicator percent Fixes #1413
- (_) feat: faster audio playback rate option (2 -> 3x)
- (_) lint: previous commit
- (_) fix(persistence): bookmarks
- (_) fix(divina) new build version (clean dist folder)
- (_) fix: removed debug() log of LCP hashes
- (_) fix: JSON persist init from DB for lazy OPDS auth, cookiejar, LSD devices, LCP passphrases
- (_) fix(persitence): stringify appendFile log
- (_) fix(persistence): undefined bookmarks array
- (_) fix(persistence): log persistence
- (_) fix(persistence): comment
- (_) fix: redux state absorb
- (_) fix: delete base64 publication and opds during clone absorb of DB
- (_) fix(persistence): withdraws the test of i18n key
- (_) fix(persistence): do not erase redux state when corrupted
- (_) fix(persistence): comment
- (_) fix(persistence): force recovery procedure
- (_) fix: dev vs. prod folder name for data config (JSON persistence)
- (_) fix(persistence): withdraws the opds key test
- (_) fix: JSON persist created from DB was containing Base64 LCP and LSD, as well as LSD events (causing huge data blobs)
- (_) refactor(LCP): LSD device manager JSON persist + data files in subfolder + added missing publication + LCP cache hydration (PR #1446)
- (_) fix: previous commit
- (_) fix(db): split json file with production and development
- (_) fix: opds and publication db repository redux subscribe in the save function
- (_) refactor(LCP): encrypted JSON persistence (PR #1445 Fixes #900 Fixes #888)
- (_) chore(NPM): package updates and full lockfile regen
- (_) refactor(downloader): stream pipeline cancellable (PR #1433)
- (_) refactor(persistence): main Redux state persistence (PR #1421)
- (_) refactor(publication): migration PouchDB repository to main Redux state (PR #1415)
- (_) chore(NPM): package updates, including fixed inversify
- (_) refactor(OPDS): migration PouchDB repository to main Redux state (PR #1420)
- (_) chore(NPM): package updates, inversify version upgrade is broken so stick to previous version
- (_) refactor: removal of DB resources, LCP and manifest cache (filesystem persist + memory cache) (PR #1443)
- (_) fix: safe removal of LCP license JSON cache in database resources (fetched from filesystem publication just-in-time, no need to persist)
- (_) fix: safe removal of LCP License Status Document (LSD) cache in database resources (fetched just-in-time, no need to persist)
- (_) chore(NPM): package updates (notably: MathJax)
- (_) chore(refactor): replace Base64 blobs with JSON, remove duplicate state data (reduce database overhead) (PR #1440)
- (_) __ feat(OPDS):__ auth crypto filesystem persistence (PR #1419)
- (_) feat: cookiejar crypto filesystem persistence (PR #1418)
- (_) chore(NPM): package updates
- (_) __Merge branch 'develop' of github.com:__readium/readium-desktop into develop
- (_) chore(NPM): package updates (minor change in the node-fetch Abort interface type definition)
- (_) feature (divina): new divina player (pr #1437)
- (_) fix(TTS): improved synthetic speech voice selector (follow-up to issue #1130 )
- (_) feat(DAISY): allow opening files with .zip extension in addition to .daisy, allow subfolder(s) instead of just root .opf package, and allow opening OPF directly from not-zipped filesystem (Fixes #1268 )
- (_) feat(l10n): korean translation (PR #1434 Fixes #1429)
- (_) fix(OPDS): support for feed description with HTML markup (PR #1435 Fixes #1376)
- (_) __Merge branch 'develop' of github.com:__readium/readium-desktop into develop
- (_) feat(TTS): added synthetic speech voice selection (overrides engine default which selects based on language, so this is a forced preference) (Fixes #1151 Fixes #1130 )
- (_) chore(dev): disable Electron remote module (deprecated)
- (_) chore(dev): disable Electron Devtron (unused, and problematic with more recent versions)
- (_) lint: missing comma in di.ts
- (_) fix : macos appActivate library window is undefined with HocusFocus application. fixes the race-condition. (Fixes #1388)
- (_) fix (opds): opds is not reset during browsing / navigation (fixes #1408)
- (_) fix (ui): bookmark button with page fit button linked (fixes #1422)
- (_) chore(NPM): package updates, notably classNames which broke the build, so took the opportunity to cleanup import statements (only exports.default works)
- (_) chore(NPM): package updates, notably i18next with new init config param
- (_) fix: check http response value undefined (HTTP ERROR) (Fixes #1425 PR #1425)
- (_) fix #1424: dismiss cookies error (PR #1426)
- (_) chore(NPM): package updates
- (_) refactor(db): migrate i18n config repository to the main process redux state with persistence (PR #1416)
- (_) fix: delete publication in redux main state win registry
- (_) fix: filter the reader redux state persisted in the win registry main state
- (_) chore(NPM): package updates (all minor)
- (_) refactor: getLastReadingLocaton moved to the publication view
- (_) refactor: readerMode synced with redux state to all readers
- (_) refactor: migrate bookmark locator repository to the reader redux state (PR #1411)
- (_) fix: OPDS search (XML UTF8 BOM), en|decodeURIComponent, PDF files with unicode filenames (PR #1385 Fixes #1382 Fixes #1383 Fixes #1381 )
- (_) fix(OPDS): search input field was not reset during feed browsing / navigation (PR #1389 Fixes #1384)
- (_) fix(OPDS): authentication dialog cancel button now works (Fixes #1405 )
- (_) fix(MathML): MathJax presence checked before injecting it from Thorium's own bundled library (Fixes #1407 )
- (_) chore(NPM): package updates (minor)
- (_) chore(NPM): package updates, notably Typescript 4.2 which requires significant update of "typed" Redux Saga, opportunity to cleanup codebase (PR #1403 )
- (_) chore(NPM): r2-streamer-js package update (notably: workaround for publication resource URLs / relative paths with multiple consecutive slashes)
- (_) chore(NPM): package updates, making sure to lock TypeScript to 4.1 as version 4.2 breaks typings in Redux Saga
- (_) fix(code): incorrect TS import [skip ci]
- (_) chore(NPM): package updates
- (_) fix(MathML): regression bug, MathJax URL from static host HTTP server was broken (Fixes #1390 )
- (_) fix(LCP): passphrase hint was incorrectly escaped (URL slashes), English grammar was incorrect (Fixes #1386 )
- (_) fix(UI): bookmark icon in navigation view was broken (Fixes #1380 )
- (_) chore(doc): changelog, 1.6 Windows installer code signing [skip ci]
- (_) chore(NPM): package updates
- (_) chore(release): post-1.6 version bump (1.6.1-alpha.1)
Developer Notes:
- The standard-changelog utility (
npx standard-changelog --first-release
) somehow only generates a limited number of commits, so we use a one-liner command line / shell script instead: git --no-pager log --decorate=short --pretty=oneline v1.6.0...v1.7.0 | cut -d " " -f 1- | sed -En '/^([0-9a-zA-Z]+)[[:space:]]([^:]+):(.+)$/!p;s//\1 __\2:__\3/p' | sed -En 's/^(.+)$/* \1/p' | sed -En '/PR[[:space:]]*#([0-9]+)/!p;s//PR [#\1](https:\/\/github.com\/edrlab\/thorium-reader\/pull\/\1)/gp' | sed -En '/\(#([0-9]+)/!p;s//(PR [#\1](https:\/\/github.com\/edrlab\/thorium-reader\/pull\/\1)/gp' | sed -En '/(Fixes|See|Fix|Fixed)[[:space:]]*#([0-9]+)/!p;s//\1 [#\2](https:\/\/github.com\/edrlab\/thorium-reader\/issues\/\2)/gp' | sed -En '/^.[[:space:]]([0-9a-zA-Z]+)[[:space:]]/!p;s//* [(_)](https:\/\/github.com\/edrlab\/thorium-reader\/commit\/\1) /p' | sed -En '/[[:space:]]#([0-9]+)/!p;s// [#\1](https:\/\/github.com\/edrlab\/thorium-reader\/issues\/\1)/gp'
- ...append
| pbcopy
on MacOS to copy the result into the clipboard. - ...append
| wc -l
to verify that the result actually matches the number of Git commits.