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").
Download checksum / hash verification
Thorium-2.3.0.dmg
is code-signed by an official EDRLab certificate, and it is notarised by Apple servers. The SHA512 is:- HEX:
0d7d43b30eca1e27c4ef4a1f21d83467b6cfad2212b5157ecfa21042d4288f8f4ec8c3efa8dcdce6f288126480d6bb3de90b647ff3042a3e6846a665fc7b9ead
- BASE64:
DX1Dsw7KHifE70ofIdg0Z7bPrSIStRV+z6IQQtQoj49OyMPvqNzc5vKIEmSA1rs96Qtkf/MEKj5oRqZl/HuerQ==
- Verification: create a file named
Thorium-2.3.0.dmg.sha512
next to the downloaded fileThorium-2.3.0.dmg
, edit the new fileThorium-2.3.0.dmg.sha512
and write this exact line of text inside it:0d7d43b30eca1e27c4ef4a1f21d83467b6cfad2212b5157ecfa21042d4288f8f4ec8c3efa8dcdce6f288126480d6bb3de90b647ff3042a3e6846a665fc7b9ead Thorium-2.3.0.dmg
, then run the command lineshasum -a 512 -c Thorium-2.3.0.dmg.sha512
(=>Thorium-2.3.0.dmg: OK
)
- HEX:
Thorium.Setup.2.3.0.exe
is code-signed by an official EDRLab certificate (the version distributed via the Microsoft Store is also code-signed, albeit via EDRLab's Microsoft account). The SHA512 is:- HEX:
a19f9d860818de936884a4dc281ef28efe3c072bf467ce285647b24512d8153627e069f9cc2b33a9bba7b5e73eb62738387959877e059da5f6da491ca0ccde6b
- BASE64:
oZ+dhggY3pNohKTcKB7yjv48Byv0Z84oVkeyRRLYFTYn4Gn5zCszqbuntec+tic4OHlZh34FnaX22kkcoMzeaw==
- Command line:
certutil -hashfile Thorium.Setup.2.3.0.exe SHA512
- HEX:
Thorium-2.3.0.AppImage
is not code-signed. The SHA512 is:- HEX:
89659ec44f40b00fe58e7314602fb6866594b5fd5f5c4953b28aee07a16741ae00c42e5cb5bcbc6cc49d8217bffc8ddb465ba41afed5174e996a7198957ba78d
- BASE64:
iWWexE9AsA/ljnMUYC+2hmWUtf1fXElTsoruB6FnQa4AxC5ctby8bMSdghe//I3bRlukGv7VF06ZanGYlXunjQ==
- Command line:
sha512sum -c Thorium-2.3.0.AppImage.sha512
- HEX:
EDRLab.ThoriumReader_2.3.0_amd64.deb
is not code-signed. The SHA512 is:- HEX:
ffa7606d6d0e2e8ef44a2ab7106a593e076936123a386195718afefb01b2eb328b89b10f116637b4cb3412d88a2082e1a368f0007ad1a5da857132b6e046541f
- BASE64:
/6dgbW0OLo70Siq3EGpZPgdpNhI6OGGVcYr++wGy6zKLibEPEWY3tMs0EtiKIILho2jwAHrRpdqFcTK24EZUHw==
- Command line:
sha512sum -c EDRLab.ThoriumReader_2.3.0_amd64.deb.sha512
- HEX:
MacOS command line: node -e "const hash = require('crypto').createHash('sha512'); const stream = require('fs').createReadStream(process.argv[1]); stream.on('readable', () => { const data = stream.read(); if (data) { hash.update(data); } else { const hex = hash.digest('hex'); console.log(hex); console.log(Buffer.from(hex, 'hex').toString('base64')); } });" release/Thorium-2.3.0.dmg
(for Linux and Windows, replace the release/Thorium-2.3.0.dmg
relative path with the respective executables / binaries - release/Thorium-2.3.0.AppImage
, release/EDRLab.ThoriumReader_2.3.0_amd64.deb
, release/Thorium Setup 2.3.0.exe
)