Releases: kiwix/kiwix-js
v4.1.0
What's changed
The most important new features in this version include:
- Display popover previews of links in articles by hovering over, long-pressing or tabbing into a link (Wikimedia / Wikipedia ZIMs only);
- The last opened ZIM will now automatically re-open when you launch the app in the latest Chromium browsers (if you grant persistent permissions when requested);
- The Security prompt on opening a dynamic ZIM for the first time now shows the ZIM metadata, to help you decide if it is trusted;
- The former "JQuery mode" is now renamed to "Restricted mode", as it better represents what this mode does.
There are many more updates and bugfixes. For a user-friendly changelog, see CHANGELOG, or look at the detailed log of PRs below.
Detailed log of pull requests:
- Fix errors enumerating ZIM archives in directory by @Jaifroid in #1219
- Reopen last selected archive with File System Access API by @Jaifroid in #1221
- changed jquery to safe mode in UI by @Greeshmanth1909 in #1215
- Do not display File Selectors before jumping to remote by @Jaifroid in #1224
- Fix typos in CONTRIBUTING.md by @dan-niles in #1223
- update regex to match PhET by @Greeshmanth1909 in #1227
- Rewrite README intro by @Jaifroid in #1226
- Fix duplicate credits in about section by @dan-niles in #1228
- Fix ESLint issues by @Jaifroid in #1232
- Remove remaining JQuery by @Jaifroid in #1225
- Bump follow-redirects from 1.15.4 to 1.15.6 by @dependabot in #1234
- Add option to turn off external link warning by @dan-niles in #1236
- Change method for patching gitignore by @Jaifroid in #1238
- Fix bug for empty search box on initial ZIM load by @dan-niles in #1237
- Bump vite from 4.5.2 to 4.5.3 by @dependabot in #1240
- Fix typos in About tab by @dan-niles in #1242
- Update the firefox add-ons download link by @M-AminAlizadeh in #1244
- Workaround for over-encoded URLs in zimit2 by @Jaifroid in #1230
- Non-file Dragging Bug Fix by @D3V-D in #1245
- Fix for #1248; moved returnToCurrentPage function to uiUtil.js by @D3V-D in #1249
- Added ZIM metadata to security dialogue box when opening ZIM for the first time by @D3V-D in #1250
- Backport popover code from Kiwix PWA by @Jaifroid in #1252
- Bump braces from 3.0.2 to 3.0.3 by @dependabot in #1261
- Bump ws from 7.5.9 to 7.5.10 by @dependabot in #1262
- Rename Safe mode to Restricted mode by @Jaifroid in #1265
- Add generic URI schema support when clicking ZIM links by @Jaifroid in #1264
- Decode overencoded external Zimit2 URLs by @Jaifroid in #1267
- Simplify active content warning by @Jaifroid in #1269
- Do not jump to first file when using FSA API by @Jaifroid in #1268
- Extend time between reloads for failed SW registration by @Jaifroid in #1272
- Add i189 for Chromium store entries by @Jaifroid in #1271
New Contributors
- @dan-niles made their first contribution in #1223
- @M-AminAlizadeh made their first contribution in #1244
- @D3V-D made their first contribution in #1245
Full Changelog: 4.0.0...4.1.0
v4.0.0 - Ten-year Anniversary Edition
What's changed
Version 4.0 is a major anniversary milestone for Kiwix JS! This release has major new features together with significant under-the-hood refactoring.
The most important new features include:
- High-fidelity reading of all Zimit archive types, from Zimit Classic to upcoming Zimit v2.0;
- Ability to read many Zimit-based archives in JQuery mode (for ZIMs with largely static content);
- Multi-ZIM support: you can now browse different ZIMs simultaneously in two different instances of the app;
- Security prompt on opening a dynamic ZIM for the first time, with fallback to Secure mode for untrusted sources.
Under the hood, a new architecture for the Service Worker supports multi-ZIM reading and boosts efficiency by allowing the browser to suspend and restart the Service Worker whenever needed.
And that's just the tip of the... iceberg: for the full user-friendly changelog, see CHANGELOG.
Detailed log of pull requests:
- Fix some anomalies in tests by @Jaifroid in #1165
- Fix zim file.name property when remote testing and improve test formatting by @Jaifroid in #1167
- Remove unnecessary initOrKeepAliveServiceWorker by @Jaifroid in #1164
- Update rollup to v4 by @Jaifroid in #1168
- Add rudimentary static Zimit support by @Jaifroid in #1163
- Avoid side effects when loading archive by @Jaifroid in #1169
- Fix anomalous boot loop when app is in jQuery mode and no SW is registered by @Jaifroid in #1170
- Work towards warc2zim reading by @Jaifroid in #1173
- Fix opening of new Zimit tabs to local articles and PDFs by @Jaifroid in #1176
- Update user info about Zimit compatitiblity by @Jaifroid in #1177
- Fix failure to handle PDFs in openzim archive types by @Jaifroid in #1179
- Fix missing webmanifest by @Jaifroid in #1180
- New libzim v0.6 release update by @Rishabhg71 in #1182
- Refactor zimit processing by @Jaifroid in #1181
- replaced localStorage with settingsStore method by @Greeshmanth1909 in #1185
- Bump follow-redirects from 1.15.2 to 1.15.4 by @dependabot in #1191
- Use libzim for reading ZIM contents by @Rishabhg71 in #1160
- Warn instead of throwing if
minorVersion
> 2 by @Jaifroid in #1196 - Bump vite from 4.3.9 to 4.5.2 by @dependabot in #1198
- Add a way to detect that an archive is zimit2 by @Jaifroid in #1200
- Open external links and PDFs outsde zimit sandbox by @Jaifroid in #1201
- Deal with zimit2 URL handling in jQuery mode by @Jaifroid in #1207
- Fix deprecated actions/checkout by @Jaifroid in #1208
- Add content warning for zimit2 in service worker local mode by @Jaifroid in #1209
- Added a feature that prompts a user when a new Zim file is opened. by @Greeshmanth1909 in #1192
- Bump ip from 1.1.8 to 1.1.9 by @dependabot in #1213
New Contributors
- @Greeshmanth1909 made their first contribution in #1185
Summary Changelog: https://github.com/kiwix/kiwix-js/blob/main/CHANGELOG.md
Full Changelog: 3.11.0...v4.0.0
v3.11.0
What's Changed
The headline features are the provision of an in-app download library based on library.kiwix.org (with fallback to download.kiwix.org for those browsers that cannot access the former), and the ability to remember picked files and folders between app launches using the File System Access API and related APIs. The header and footer of the app also now slide away on scroll down (and slide back on scroll up), to make more room for focusing on the article being read. This behaviour can be turned off in Configuration.
Detailed log
- Add missing i18n folder to dockerfile by @Jaifroid in #1110
- Completely exit local code on comms with remote by @Jaifroid in #1113
- Ensure packages contain i18n files by @Jaifroid in #1115
- Rename jsonp files to js so they can be accessed by extensions by @Jaifroid in #1117
- Start building Manifest V3 for Firefox by @Jaifroid in #1121
- Launch spinner as soon as possible by @Jaifroid in #1123
- Transition animation cleanup and page animation turned off by default by @Rishabhg71 in #1102
- Adding browser for zim library by @Rishabhg71 in #1127
- Add facility to extract and set ZIM metadata by @Jaifroid in #1133
- Update babel-core and fix vulnerabilities by @Jaifroid in #1135
- Add sanity checks to prevent runaway searches by @Jaifroid in #1137
- Slide away UI elements on scroll by @Jaifroid in #1140
- Slide away UI elements with swipe even on non-scrollable pages by @Jaifroid in #1142
- Make auto focus search bar depend on home key option by @Jaifroid in #1144
- [ADD] Native File System support to reload zim file by @Rishabhg71 in #1131
- Fix some UI spacing issues by @Jaifroid in #1148
- Complete translation of fxos UI elements by @Jaifroid in #1149
- Enable tab access to file, folder and library selectors by @Jaifroid in #1153
Summary Changelog: https://github.com/kiwix/kiwix-js/blob/main/CHANGELOG.md
Full Changelog: 3.10.0...3.11.0
v3.10.0 - 3.10.1
What's Changed
The headline feature is the internationalization of the app's UI with French and Spanish languages. Additionally, major under-the-hood development work has been undertaken to move the app to a modern bundling system and to provide a comprehensive suite of end-to-end tests on BrowserStack.
- Use native es6 modules instead of require js by @Jaifroid in #1025
- Mop up some issues with bundling system by @Jaifroid in #1028
- Improve distribution of Chromium extension outside the Stores by @Jaifroid in #1030
- Bump word-wrap from 1.2.3 to 1.2.4 by @dependabot in #1034
- Add end-to-end tests with Selenium by @Jaifroid in #1039
- Add more explicit tests for ServiceWorker compatibility by @Jaifroid in #1044
- Convert jQuery .on event listeners to their native JS equivalents by @RG7279805 in #1035
- Add documentation and licensing for e2e tests by @Jaifroid in #1046
- Set up e2e tests on BrowserStack by @Jaifroid in #1047
- Exempt BrowserStack tests for PRs from forked Repos by @Jaifroid in #1052
- Update documentation on tests for BrowserStack by @Jaifroid in #1054
- Attempt to force failure if one test fails with PowerShell in GitHub Actions by @Jaifroid in #1055
- Fix legacy test for IE mode by @Jaifroid in #1059
- Tests for non legacy zim files by @RG7279805 in #1049
- Folder structure redone for
tests
by @RG7279805 in #1064 - Add internationalization framework by @Jaifroid in #1061
- Translation cleanup and UI touches by @Jaifroid in #1067
- Moved configuration code to init.js by @Daksh119 in #1057
- Update codeql-analysis.yml to CodeQL v2 by @Jaifroid in #1075
- Trying to CI timeout issue by @RG7279805 in #1070
- Temporarily remove i18next but leave instructions to reactivate by @Jaifroid in #1080
- Update build scripts to use version from init.js by @Jaifroid in #1082
- Fix corrupt gitignore patch by @Jaifroid in #1084
- Review French translations and propagate changes to other languages by @Jaifroid in #1078
- Restore IE Mode e2e testing in Windows by @Jaifroid in #1089
- Launching the vite server will always open the app with appCache=false by @amitpanwar789 in #1086
- Fix file picking in latest Chromium browsers for Android by @Jaifroid in #1091
- Use faster & more compatible method to load lang object by @Jaifroid in #1092
- Documentation updates by @Jaifroid in #1093
- [REFACTOR]
tests/
cleanup 🧹 and Gutenberg tests on Browserstack by @RG7279805 in #1079 - Adding retries flag for windows test by @RG7279805 in #1097
- Ensure dockerfile serves jsonp with correct MIME type by @Jaifroid in #1100
- Fix active content warning for PhET ZIMs by @Jaifroid in #1106
New Contributors
Summary Changelog: https://github.com/kiwix/kiwix-js/blob/main/CHANGELOG.md
Full Changelog: 3.9.0...3.10.0
v3.9.0
What's Changed
The headline feature is the introduction of a Manifest V3 of the Chromium browser extension, together with the use of the PWA workaround to allow the Chromium extension to run inline JavaScript.
- Compile zstdec and xzdec as es6 modules by @Jaifroid in #998
- Add PWA ServiceWorker mode for Chromium extension by @Jaifroid in #1000
- Restore modal animation for alert dialogue boxes by @Jaifroid in #1001
- Add Promise queue to prevent overlapping dialogue boxes by @Jaifroid in #1002
- Add a warning colour when appCache is disabled by @Jaifroid in #1004
- Update jQuery to 3.7.0 by @Jaifroid in #1008
- Fix blocking ESLint issues by @Jaifroid in #1015
- Fix some ESLint issues in app.js by @Jaifroid in #1016
- Experiments with extension manifest v3 for Chromium by @Jaifroid in #984
- Fix issues identified by ESLint by @Jaifroid in #1018
- Update in-app documentation by @Jaifroid in #1022
- Change links and references from
moz-extension
tobrowser-extension
by @Jaifroid in #1024
Full Changelog: 3.8.0...3.9.0
v3.8.0
What's Changed
The headline feature is additional security by adding a sandbox to the app's iframe and a strengthened Content Security Policy. There is more robust handling of downloads (e.g. epubs and PDFs). There is also a new user-requested setting to disable drag-and-drop in case this UI causes any glitches.
For a summary version of the changes below, see CHANGELOG.md.
- Remove dev versions of libzim binaries in packaging script by @Jaifroid in #954
- Add PWA Origin to API Status Panel by @Jaifroid in #958
- Check for PWA update after startup by @Jaifroid in #959
- Use latest GitHub workflow actions by @kelson42 in #963
- Add option to disable drag-and-drop by @Jaifroid in #967
- Added
http-server
script by @ankur12-1610 in #971 - Add sandbox to iframe by @Jaifroid in #976
- Fix missing full text search cancellation by @danielzgtg in #978
- Removed usage of jquery while opening and closing bootstrap modals by @aritroCoder in #968
- Fall back to MIME type when downloading doc in jQuery mode by @Jaifroid in #989
New Contributors
- @danielzgtg made their first contribution in #978
Full Changelog: 3.7.0...3.8.0
v3.7.0
What's Changed
The headline feature is the introduction of Full-Text searching for ZIMs that have a Full-Text index, thanks to the openzim/javascript-libzim project. Currently, this only works in browsers that support Atomic Operations, which means recent versions of Chromium and Firefox. Title search is still available for older browsers.
For a summary version of the changes below, see CHANGELOG.md.
- Replace jQuery for hide and show statements selected by ID by @Jaifroid in #917
- Exempt more latex images from re-inversion in dark mode by @Jaifroid in #923
- Replace
.click()
,.focus()
and.attr()
jQuery functions with equivalent native JS by @dheerajdlalwani in #925 - Add fulltext directory listing to archive metadata by @Jaifroid in #932
- Converts jQuery statements to native JS and regularize quotation marks by @dheerajdlalwani in #927
- Bump engine.io and socket.io by @dependabot in #926
- Initialize the libzim worker by @Jaifroid in #934
- Removed most usage of innerHTML by @aritroCoder in #902
- Remove unused functions from util.js(#843) by @amitpanwar789 in #938
- Integrate full-text search results into title search results by @Jaifroid in #935
- Initiate full-text search earlier by @Jaifroid in #941
- Update documentation of full text search by @Jaifroid in #944
- Remove hard coding of WIP in build script by @Jaifroid in #949
- Handle setting version number explicitly in release workflow by @Jaifroid in #950
- Publish some installation packages to release by @Jaifroid in #951
New Contributors
- @dheerajdlalwani made their first contribution in #925
- @aritroCoder made their first contribution in #902
- @amitpanwar789 made their first contribution in #938
v3.6.0
- FEATURE: ServiceWorker Mode is now the default, and compatible clients upgrade automatically to this mode
- FEATURE: On first run after update, the user is informed of the ServiceWorker Mode upgrade status (upgraded or incompatible)
- NEW: A warning (with suggestions) is provided if user opens an incompatible Zimit (warc2zim) archive type
- COMPATIBILITY: Minimum Firefox version has been raised to >=52, due to lack of full Extension APIs in earlier versions
- UPDATE: Detection of active content updated for compatibility with more no-namespace ZIM archives
- UPDATE: Nightly packages on the download server now include the date in their filenames
- FIX: Kiwix icon now has an outline so that it is visible against dark OS backgrounds
v3.5.0
- FEATURE: The Enter key is now handled in Bootstrap dialogue boxes, triggering the default action
- FIX: Switch to ServiceWorker mode via PWA workaround was broken due to a behaviour change in Firefox 103
- FIX: Video seeking in ServiceWorker mode was not always working in some browser extensions
- FIX: In ServiceWorker mode, open external links in new tabs (instead of inside the iframe, which could fail), and warn the user
- FIX: Directory Entries were wrongly assumed to be no larger than 2048 bytes (this could lead to some infinite loop, with some very specific ZIM files)
- UPDATE: Update logo on Firefox and Windows stores
v3.4.0
- FEATURE: Provide automatic dark mode switching (based on the underlying OS theme) in browsers supporting theme detection
- FEATURE: Use bootstrap modal for alert and confirm dialogue boxes instead of native browser dialogues
- WORKAROUND: For WebP image conversion in older browsers that implement some specific canvas anti-fingerprinting techniques, like IceCat 60.7
- FIX: Partially remove dependency of backend on the User Interface
- FIX: Provide an alert if user selects random button when no ZIM is loaded
- FIX: Nightly builds are now uploaded to a new server (with sftp instead of ssh)
- FIX: Deploy PWA image on a k8s cluster
- FIX: PWA images are now uploaded to ghcr.io instead of Docker Hub. When a new image is uploaded, we also restart the pod to make it use the latest image
- UPDATE: Routine updates to dependencies: Karma, node-fetch, follow-redirects, minimist