Thorium Reader v2.3.0
Summary
Version 2.3.0
was released on 03 August
2023.
This release includes the following (notable) new features,
improvements and bug fixes:
- New and updated translations: Bulgarian, Greek, Croatian, Korean,
Portuguese (Portugal).
- Reader / image zoom: major feature update from initial proof of
concept, better user experience (finger touch, trackpad gestures, mouse
wheel, keyboard), support for raster/bitmap images as well as SVG
markup.
- Reader / MathML: native rendering in Chromium (Electron v25),
Thorium 2.2.0 included a version of Chromium that did not support MathML
natively (MathJax was the only way to display MathML).
- Reader / MathML: MathJax dynamic aria-label (speech text) is
overridden by authored alt-text (if present), Thorium TTS readaloud
speaks it, screen readers do too but have the option to dig further /
deeper into the MathML structure (useful with screen reader specialised
plugins).
- Reader / navigation history: hyperlink activation now correctly sets
the landmark for previous/next navigation.
- Reader / text display: fixed left/right/justify text alignement
("start" can be left or right depending on document language),
"automatic" is now "default" with changed SVG icon to avoid
confusion.
- Reader / UX: finger swipe gesture can now be used to turn pages
(requires touch screen).
- Reader text selection: double-click now works (bookmarks label for
now, later in upcoming annotations feature).
- Reader / TTS: fixed aria-label support on img (alongside alt
attribute), epub:type pagebreak (and role doc- prefix), title/label
takes precedence over inner text, same with links. NOTE: this will need
future update to match W3C specifications for computation of accessible
label and description.
- Reader / TTS: fixed voice selection based on user choice + language
match (for example: fr-FR vs. fr-CA variants, en-US vs. en-UK, user wins
over authored lang).
- Reader / TTS: fixed paused / stopped state in playback
controls.
- Reader / TTS: fixed support for Japanese ruby, RT markup is now
ignored.
- Reader / TTS: captions / simplified view, initial text without
active word boundary was not escaped (ampersand character).
- Reader / Popup footnotes: fixed handling of SVG a@href links.
- Reader / HTML5 audio: fixed visible controls visibility.
- Reader / EPUB: navigator.epubReadingSystem object injection in
iframes (including SVG).
- Reader / EPUB: FXL fixed-layout rendition-prefixed
page-spread-left/center/right properties on spine item, was only parsing
non-prefixed variant.
- Reader / Media Overlays: fixed click on non-synchronised HTML
element which now preserves current playback location / timestamp (was
reseting to begining of document).
- Reader / UX: mouse middle-click was causing opening in external
Electron window.
- DAISY: fixed v2.02 and v3.0 import of ncc.html or *.opf, now works
when loading from non-zipped publications.
- OPDS: feed entry fallback cascade was too permissive (publication
info was incorrectly fetching borrow/buy links in some cases).
- OPDS: fixed "search" relative URLs in OPDS1(XML) and OPDS2(JSON),
fixed URI Templates curly brace escaping in URL path.
- OPDS: fixed publication title which was not displayed.
- OPDS: added display of accessibility metadata.
- GUI: fixed dark/night and sepia modes in audiobook playback rate
chooser and TTS + Media Overlays rate/voice choosers.
- GUI: fixed edge-case of auto-focus fail on default dialog button
(e.g. invoking the delete action from the popup menu was failing to
auto-focus the default ok button, whereas this worked when reaching the
same modal dialog prompt via the publication info sheet).
- GUI / accessibility: improved keyboard shortcuts editor usability,
for both screen reader and keyboard users
- GUI / UX: improved error message during file import, unsupported
extension / document type.
- TTS: now enabled by default on Linux (Electron command line
parameter "enable-speech-dispatcher").
(previous v2.2.0 changelog)
Full Change Log
Git commit diff since v2.2.0
: https://github.com/edrlab/thorium-reader/compare/v2.2.0...v2.3.0
=> 60 GitHub Git commits:
- (_)
fix(l10n): Portuguese Portugal pt-PT locale update (PR
#1966)
- (_)
fixes #1964:
fallback cascade too permissive on entryLink and catalogLinkView
- (_)
fix(l10n): Korean update, Hyun-Young Kim / BoinIT (PR
#1965)
- (_)
chore(NPM): package updates
- (_)
chore(NPM): updated packages, notably navigator
component with many fixes (TTS, image zoom, etc.)
- (_)
chore(NPM): updated packages, notably navigator
component which brings important TTS fixes
- (_)
chore(NPM): package updates
- (_)
chore(NPM): package updates, notably navigator with
updated SVG support
- (_)
chore(NPM): updated packages, notably navigator
component with improved SVG support for image zoom
- (_)
chore(doc): updated README with complete list of
locales / languages [skip ci]
- (_)
chore(NPM): package updates, notably navigator
component with image zoom feature and finger gesture swipe to turn
pages
- (_)
chore(l10n): remove unnecessary translated label by
reusing existing
- (_)
fix(GUI): dark/night and sepia modes HTML select/option
for audio book playback rate chooser (Fixes #1890
)
- (_)
fix(GUI): dark/night and sepia modes HTML select/option
for TTS and Media Overlays rate /voice choosers (Fixes #1890
)
- (_)
feat: force left or right text alignement in reader
(actually "start" which depends on document locale), "automatic" is now
"default" with change of SVG icon to avoid confusion (Fixes #1230
)
- (_)
chore(NPM): package updates
- (_)
fix: locator visibility can be called prematurily, must
fence function calling with try/catch promise rejection handler (async)
in case navigator webview not fully initialised yet
- (_)
feat(l10n): Croatian translation - HR hrvatski (PR #1956 -
original PR #1955
)
- (_)
chore(NPM): package updates, ESLINT + PRETTIER
- (_)
fix: Apple notarization TEAM ID [skip ci]
- (_)
chore(NPM): package updates, Electron 25
- (_)
Fix(TTS): Linux Electron command line parameter
enable-speech-dispatcher (also on Windows and Mac but with no
effect)
- (_)
fix(OPDS): search with relative URLs in OPDS1(XML) and
OPDS2(JSON), URI Templates curly brace escaping in URL path
- (_)
fix(OPDS): publication title was not displayed
- (_)
chore(NPM): package updates, fixes SVG a@href links
popup footnote handling
- (_)
chore(NPM): package updates (Electron 24)
- (_)
chore(NPM): TypeScript v5 package update
- (_)
chore(NPM): package updates
- (_)
chore(NPM): updated packages and fixed linting
(previous commit was error'ing on unused var)
- (_)
fix(dev): Chrome(ium) extensions, React Devtools and
Redux Devtools now work in Library and Reader windows
- (_)
fix: double-click to select text (annotations and
bookmarks) Fixes #1927
- (_)
fix(TTS): voice selection based on user choice +
language match (partial fr-FR vs. fr-CA handling, for example) Fixes #1921
- (_)
chore(NPM): package updates, minor TTS character
escaping fix and HTML5 audio controls fix
- (_)
fix: DAISY 2.02 and 3.0 import of ncc.html or *.opf now
works in Windows when loading from non-zipped publications (Fixes #1905
)
- (_)
fix(a11y): in some cases, auto-focus on HTML element
default button of dialog was failing due to React race condition (e.g.
invoking the delete action from the popup menu failed to auto-focus the
default ok button, whereas this worked when reaching the same modal
dialog prompt via the publication info sheet)
- (_)
fix: DAISY 2.02 ncc.html publication import from
non-zipped packages (Fixes #1924
)
- (_)
fix(a11y): OPDS accessibility metadata (Fixes #1899
)
- (_)
fix(a11y): keyboard shortcuts editor usability
improved, for both screen reader and keyboard users (Fixes #1913
)
- (_)
fix(l10n): typed JSON property keys were out of
date
- (_)
feat(l10n): Bulgarian translation (original PR #1914 PR
#1919
)
- (_)
feat(l10n): Greek translation (PR #1918
original PR #1909
)
- (_)
fix(l10n): updated pt-PT translation (PR #1900
Fixes #1849
)
- (_)
chore(NPM): package update (DOM purify)
- (_)
chore(NPM): package updates, major Electron version
upgrade, some breaking API changes in a few places (see code diff),
fixed console messages for import CLI
- (_)
chore(NPM): package updates, also fixed a yargs CLI
typing error
- (_)
fix: file import, unsupported extension / document
type, error message (Fixes #1903
)
- (_)
fix(ci): GitHub Action Ubuntu env var mapping
- (_)
chore(ci): Ubuntu 20.04 pin (see #1910)
and Node 18 + NPM 9 (updated checkout and setup-node actions to v3)
- (_)
fix: navigator.epubReadingSystem object injection in
iframes (SVG)
- (_)
fix: navigator.epubReadingSystem object injection in
iframes
- (_)
chore(NPM): package updates
- (_)
chore(NPM): package updates
- (_)
fix(build): @electron/notarize NPM package
renaming
- (_)
fix: WebSQL is deprecated, works in Electron
BrowserWindow but completely broken in embedded webview, so better
disable it (Fixes #1897
)
- (_)
chore(NPM): updated packages
- (_)
fix: MathJax dynamic aria-label (speech text) is
overridden by authored alt-text (if present), Thorium TTS readaloud
speaks it, screen readers do too but have the option to dig further /
deeper into the MathML structure (useful with screen reader specialised
plugins)
- (_)
chore(NPM): package updates, including Electron v22
(was v21)
- (_)
fix: EPUB FXL rendition-prefixed
page-spread-left/center/right properties on spine item (was only parsing
non-prefixed variant)
- (_)
chore(release): additional logo images with white solid
background, Microsoft Windows Store (PR #1891
)
- (_)
chore(release): v2.3.0-alpha.1 version bump for
continuous integration builds (master is release-tagged at v2.2.0)
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 v2.2.0...v2.3.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.