Skip to content

Latest commit

 

History

History
161 lines (150 loc) · 27.5 KB

CHANGELOG-v2.0.0.md

File metadata and controls

161 lines (150 loc) · 27.5 KB

Thorium Reader v2.0.0

Summary

Version 2.0.0 was released on 30 May 2022.

This release includes the following (notable) new features, improvements and bug fixes:

  • Electron v19, Chromium v102
  • Updated locales: Swedish, Dutch, Spanish, Chinese, Japanese, Portugese
  • New translations: Basque, Galician, Catalan
  • New major bookshelf functionality: interactive "data grid", i.e. table graphical user interface that features filtered rows based on keyword search (instant for visual find-as-you-type, or deferred for screen reader usage with submit button + ARIA live assertive annoucement), paginated list of results, alphanumerical sortable columns (descending / ascending), basic vs. advanced choice of columns (e.g. title, author, publication format, publishing date, etc.), clickable cell contents to automatically search for selected text (includes support for user-provided tags), etc. etc.
  • Improved accessibility feature: alternative "where am I" for screen readers in speech mode only (i.e. assertive ARIA live region via toast notification) using the SHIFT-CTRL-K keyboard shortcut (this is equivalent to the existing "where am I" via SHIFT-CTRL-I popup modal dialog, with the advantage of not loosing focus in the publication HTML document)
  • Fixed a bug where publication HTML documents were reset to the first page when ALT-TAB between application windows.
  • Fixed issue with HTTP downloader, stream read/write pipe was causing invalid ZIP directory parsing (unwaited filesystem buffer flush), also improved request timeout handling.
  • EPUB metadata accessibility summary is exposed in publication info popup modal dialog, and several under-the-hood mechanics to pave the way to proper presentation of the full set of a11y metadata.
  • Several key improvements in user interface structure / semantics to ensure more confortable experience with screen readers.
  • Updated MathJax integration to support MathML alt text with special treatment of screen readers (specialised Math plugins offer structural exploration of Math markup), and separate treatment for Thorium's built-in TTS read aloud feature.
  • Fixed footnotes issue where the note contents inside "aside" HTML elements weren't hidden.
  • Fixed DAISY 2.02 support (NCC HTML file picker), and fixed XML/HTML parsing issues.
  • Fixed a Readium CSS bug where some publication document height was not fully extended Also fixed a performance issue with CSS columns.
  • Fixed night / dark mode GUI inconsistencies.
  • Improved visual rendering of Table Of Contents.
  • Thorium's internal database format changed from native LevelDown/SQLite3 modules to JSON serialisation.
  • Improved toast notifications placement to avoid obscuring critical GUI parts, added keyboard focus and mouse click handling, easier clipboard copy of message, and fixed the overflow text clipping.
  • LCP META-INF/license.lcpl now excluded from hash computation to eliminate duplicates during EPUB import.
  • Fixed a Windows bug where drive letters other than C: were not supported when opening publications directly from the file explorer.
  • New image zoom feature with SHIFT-click in publication HTML documents.
  • Fixed HTML5 audio controls mis-renderering due to CSS overrides.
  • Better, clearer presentation of "borrow" links and other publication acquisition details in the publication info modal popup dialog.
  • Fixed a PDF metadata bug related to date format parsing + timezone calculations.
  • Major update under the hood to support latest package dependencies, notably WebPack and associated build / development plugins, but also critical application components such as React, Router, etc. (Thorium remains on React 17 so that forks do not experience upgrade issues to React 18)

(previous v1.8.0 changelog)

Full Change Log

Git commit diff since v1.8.0: https://github.com/edrlab/thorium-reader/compare/v1.8.0...v2.0.0

=> 112 GitHub Git commits:

  • (_) chore(dev): temporarily disable unit tests, broken JEST (see #1697 )
  • (_) fix(l10n): sv Swedish locale (PR #1696 )
  • (_) chore(NPM): sha1-sha512 NPM checksum (lockfile) [skip ci]
  • (_) chore(NPM): updated packages, stricter TypeScript
  • (_) feat: where am I feature, but speak only (assertive ARIA live region via toast) with CTRL K keyboard shortcut (Fixes #1662 )
  • (_) fix: updated navigator package which address keyboard focus / page reset, as well as footnotes issues (Fixes #1690 Fixes #1675 )
  • (_) fix: LCP publications CRC excludes META-INF/license.lcpl (hash computation to detect duplicates during EPUB import)
  • (_) chore(lint): src/renderer/library/components/searchResult/AllPublicationPage.tsx
  • (_) fix: bugfix for CSS regression in Chromium v102 in Electron v19 (flex / flow-root reset breaking CSS columns layout)
  • (_) chore(NPM): updated dropzone package (major, but no breaking change in Thorium)
  • (_) fix: fetch-cookie doesn't require patching anymore (package.json exports default entry now corrected, see valeriangalliat/fetch-cookie#72 )
  • (_) fix: added missing file in previous commit
  • (_) chore(NPM): package updates, required patching incorrect package.json exports in node_modules + new Typescript error (incorrect spread use)
  • (_) fix(l10n): Dutch locale improvements, thank you Ted Van Der Togt from @KBNLresearch
  • (_) chore(NPM): updated packages
  • (_) fix: PDF publication date parsing was incorrect, months are zero-based in JS Date object (same in Moment), and the month/day was inverted, and the timezone was not taken into account.
  • (_) fix(GUI): bookshelf date display was incorrect (zero-based months, and wrong day)
  • (_) feat(GUI): added "last read" bookshelf data grid column (to sort by recent reads, see unread publications)
  • (_) feat(GUI): added "format" column in bookshelf data grid (EPUB, EPUB FXL, Divina, DAISY, Audio, PDF, etc.)
  • (_) fix(GUI): bookshelf with simple (default) vs. advanced mode / grid vs. list display views (number of columns) ( Fixes #1666 )
  • (_) fix(GUI): display of supported file extensions on welcome screen (first install / launc, empty bookshelf)
  • (_) doc: added missing DAISY mention in readme (Fixes #1616 )
  • (_) feat(l10n): Basque locale (eu) (follows PR #1670 , PR #1688)
  • (_) fix: ReadiumCSS height auto override, body position:relative, height:inherit, document height:100vh (Fixes #1677 Fixes #1658 )
  • (_) chore(dev): electron rebuild correct version (not needed anymore for SQL and LevelDown ... but need to make sure the versions are in sync nonetheless, for correctness)
  • (_) chore(NPM): package dependencies update, a few major version increments (and a couple of breaking changes)
  • (_) hotfix(l10n): ga language code is Gaelic, gl is Galician (follows #1673 (comment) )
  • (_) feat(l10n): Added Catalan locale (PR #1674 follows PR #1669)
  • (_) feat(l10n): Added Galician locale (PR #1673 follows PR #1671)
  • (_) fix(l10n): improved Spanish translation (PR #1668 )
  • (_) fix(l10n): improved Simplified Chinese translation (PR #1665 )
  • (_) fix(l10n): improved Japanese translation (PR #1661 )
  • (_) fix(l10n): updated Portugese pt-PT translation (PR #1672 )
  • (_) chore(NPM): package updates
  • (_) fix(UI): about publication dialog now with correct title (was publication title, duplicated)
  • (_) chore(NPM): package updates
  • (_) chore(NPM): updated packages
  • (_) chore(NPM): package updates, including electron-builder which was behind due to incorrect release tag
  • (_) chore(NPM): updated packages
  • (_) chore(NPM): package updates
  • (_) chore(NPM): package updates
  • (_) chore(NPM): minor package update
  • (_) fix(dev): eclint glob (Windows)
  • (_) fix(GUI): mouse hit regression on bookmark button
  • (_) fix(dev): eclint glob woes on Windows
  • (_) chore(NPM): package updates, including ReadiumCSS fix via r2-navigator-js (CSS columns perf with large DOMs) and Electron v18 upgrade
  • (_) chore(NPM): updated packages
  • (_) fix(a11y): MathML / MathJax special treatment of screen reader, to avoid clash with Thorium's built-in TTS read aloud feature (Fixes #1602 )
  • (_) fix(DAISY): ncc.html support in file browser chooser (Fixes #1629 )
  • (_) fix(a11y): accessible labels and keyboard navigation improved (Fixes #1583 )
  • (_) fix(CSS): yes/no ok/cancel etc. dialog footer buttons were too far apart (Fixes #1596 )
  • (_) fix(CSS): TTS voice selector and Media Overlays speech rate selector font color in night mode (Fixes #1115 )
  • (_) fix(CSS): night mode lower left corner text in reader window (Fixes #1135 )
  • (_) fix(CSS): TOC Table Of Contents visual improvements, also fixed search bar in reader window in night mode (Fixes #1656 )
  • (_) fix: local bookshelf data grid column-search vs. global search, controlled React components workaround
  • (_) chore(NPM): package updates
  • (_) chore(NPM): updated packages, including minor Electron release
  • (_) chore(NPM): updated packages
  • (_) fix(a11y): debounced search-as-you-type in individual columns, detection of screen reader for submit button + ARIA live assertive annoucement + fixed incorrect reader window query
  • (_) fix(a11y): ARIA live search button assertive notification, switch when screen reader is detected (added form submit button, not search-as-you-type)
  • (_) chore(NPM): package updates
  • (_) fix: added missing a11y metadata in data model, expose accessibility summary in bookshelf grid and publication info panel (alongside description). For now, do not display access mode/sufficient etc. (need localisable / translated strings and proper presentation strategy, but sorting / filtering in data grid worked (currently disabled))
  • (_) fix: bookshelf data grid, publication date display sorting and filtering (includes r2-shared-js parser fix too)
  • (_) fix(l10n): publication date to localised string, based on user language preference (Thorium GUI setting)
  • (_) chore(NPM): package updates [skip ci]
  • (_) chore(NPM): package updates
  • (_) chore(NPM): updated packages
  • (_) fix(l10n): updated Swedish translation (PR #1655 )
  • (_) chore(NPM): package updates
  • (_) fix(l10n): updated Spanish translation (PR #1652)
  • (_) fix(UI): bookshelf grid accessibility improvements, added clickable author and publisher for quick search, tags now search locally in table too
  • (_) chore(NPM): package updates
  • (_) feat: accessible bookshelf data grid, fuzzy text search (global and per-column), column sorting, pagination, compact / list mode (PR #1651)
  • (_) fix(OPDS): clickable tag with mouse pointer proactive feedback (UX)
  • (_) fix: HTTP downloader stream read/write pipe was prematurily triggering Redux Saga completion, resulting in invalid ZIP directory parsing (filesystem buffer flushing)
  • (_) chore(NPM): updated package dependencies
  • (_) chore(NPM): package updates, notably r2-shared-js with DAISY HTML/XML parser bugfix
  • (_) chore(NPM): package updates
  • (_) fix(UI): added keyboard focus and mouse click handling in toast notifications, clipboard copy of message, clipping of overflowing text, re-positioning in lower-left corner (Fixes #1644 )
  • (_) chore(NPM): updated packages
  • (_) fix: NPM package updates, notably r2-navigator-js which fixes #1535 (see #1535 (comment)
  • (_) chore(NPM): updated packages
  • (_) chore(NPM): package updates
  • (_) chore(NPM): updated packages, notably fetch-cookie which now handles HTTP redirects internally
  • (_) fix: improved HTTP fetch timeout detection (race condition with abort controller, single signal)
  • (_) chore(NPM): package updates
  • (_) fix(l10n): Swedish translation update (PR #1640)
  • (_) chore(CI): attempt to pin down a broken stylelint lib dependency to fix Windows crash (build only, not runtime)
  • (_) chore(NPM): package updates, hopefully fixes Windows CI (stylelint / css-functions-list regression, URL parsing crash)
  • (_) chore(NPM): updated packages
  • (_) chore(dev): Jest update
  • (_) fix: node-fetch v3 (Fixes #1628 Fixes #970 )
  • (_) fix: updated WebPack externals with better, cleaner script (tested in dev and prod, including release package ... LCP, PDF, etc.).
  • (_) chore(dev): migrated from ES6-2015 to ES8-2017 Readium2 packages + ES2020 TypeScript / WebPack config
  • (_) chore(NPM): i18next update
  • (_) chore(NPM): updated Yargs
  • (_) fix: updated WebPack and plugins, fixed console warnings with TypeScript type imports
  • (_) fix: updated WebPack CLI and DevServer (also fixed the i18n CJS/ESM interop import / require problems)
  • (_) fix: React 17
  • (_) fix: updated React Router to pave the way to further React and WebPack upgrades (PR #1638)
  • (_) chore(NPM): package updates
  • (_) chore(NPM): package updates, notably: Electron v17 (was 16)
  • (_) fix(OPDS): presentation of borrow links and other publication acquisition details (PR #1627 Fixes #1563 )
  • (_) fix: support for Windows drive letters other than C: when opening publications directly from the OS file explorer (PR #1626 Fixes #1620 )
  • (_) chore(NPM): package updates
  • (_) chore(NPM): package updates
  • (_) chore(NPM): package updates
  • (_) fix: removal of SQLite3 and LevelDown native database dependencies (PR #1622 Fixes #1619 )
  • (_) chore(NPM): package updates, notably R2 navigator component which fixes the Readium CSS audio width/height bug, and which introduces the image zoom feature (Fixes #1612 Fixes #1160 )
  • (_) chore(NPM): package updates, notable fixes in R2 modules where safeguard against callbacks that do not capture async / await thrown errors (exceptions do not automatically transit up the call chain) avoids UnhandledPromiseRejectionWarning
  • (_) fix(dev): hoisted the LCP LSD skip ENV var to preprocessor directive stage, for better control at build time [skip ci]
  • (_) chore(release): version bump to 1.9 alpha

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.8.0...v2.0.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.