You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Check build numbers of Electron JS (in package.json and NWJS (in package.json.nwjs), and decide if they need bumping to latest stable
You may update electron by running npm install electron@latest --save-dev, and do quick test with npm start
You will need to update the number or range of the NWJS version manually in package.json.nwjs. Do not install NWJS alongside Electron
Commit and push the changes you have made
Run the script ./scripts/Set-AppVersion in PowerShell (Windows or Linux), to touch all the files where updates are required)
Set the version number to the higher of the two release numbers (we'll temporarily set it to the lower when building the UWP app)
Above script runs npm install, but if you updated manually, be sure to run npm install, and npm audit fix if security updates are required. Do not use the force option to install breaking patches
Merge and push any changes to main, or via a separate PR - do not use the CHANGELOG PR
Run npm run build, note any build errors and fix if necessary
Do thorough manual tests:
Of the PWA, using the test implementation https://kiwix.github.io/kiwix-js-pwa and the bundled version https://kiwix.github.io/kiwix-js-pwa/dist/ or on localhost, testing both the unbundled app and the build app in ./dist/. Be sure to test in Restricted Mode as well as ServiceWorker Mode. Fix any issues arising
Of the Electron app by running npm install and then npm start in the root of the Repo (Windows or Linux). Ensure app self-updates to the version you're testing, or exit and restart the app once update is detected
Ensure the archives folder is empty or that it contains only any bundled demo archive (if so, you will need to ensure the archive is listed in the UWP manifests for both the Store and the GitHub releases: Set-AppVersion should do this for you if the packaged archive is properly referenced in init.js)
Build the UWP app locally on a Windows machine: this requires a local install of Visual Studio 2017, which is the last version of VS that supports the JS Project type. This version cannot be installed on GitHub servers, which is why this needs to be built and signed locally.
Temporarily set the app to the lower of the two release version numbers using the Set-AppVersion script. This is required, as we cannot publish two apps in the store with the same version number.
Run ./scripts/Create-DraftRelease -buildstorerelease -buildonly. In the interactive dialogue, do not set any E suffix, just build the plain app with the suggested release version.
Find the built .appxupload bundle in `.\dist\AppPackages", and move it to a top-level directory so it is not deleted when building the Electron version
Build the Electron UWP app locally for Store release. We build this locally as it is unsigned for the Store.
Increment the app version again to the higher of the two release numbers using Set-AppVersion
Run ./scripts/Create-DraftRelease -buildstorerelease -winonly appx -electronbuild local. When asked for the tagname, simply type E (for Electron). Build only (no draft release yet).
Find the .appxbundle that was built in .\Repos\kiwix-js-pwa\dist\bld\Electron\ and move it to a top-level directory, together with the previously build .appxupload.
Log in to the Microsoft Store account, create a new release, update the Store info with the user-facing changes you want to appear in the Store Entry, and upload the two packages
Submit the release to the MS Store
Create the Draft Release, and build the Electron and NWJS packages on GitHub
Run ./scripts/Create-DraftRelease -electronbuild cloud. When asked, enter +E+N at the tag version prompt (builds and signs the UWP, and builds Electron and NWJS versions on GitHub)
Do not accept the prompt to change the release tag until you have checked that the packages have all built correctly (below)
Wait for all release packages to build - check GitHub Actions tab for any failures. If failures in the actions, you can try re-running actions. Sometimes the best option is to delete the draft release and re-run Create-DraftRelease
If all packages built correctly, accept the prompt to revert the release name change
Create a new release (on GitHub for the supplementary release files for autoupdate (instructions to follow)
Download relevant archives and release yml files, and upload them to the supplementary release draft
Test a Linux release
Test a macOS release on MacInCloud account
Test the NWJS release on Windows 11
Test the NWJS release for XP on Windows XP Mode VM
Publish the main release
Publish the supplementary files
Check whether the PWA was updated when creating the draft release
If not, update with ./scripts/Publish-PWA. Choose docker as the target when asked, and set the release tag to the tag number, e.g. 3.8.6
Update winget package repository, either by accepting the prompt in the Create-DraftRelease script, or by re-running it with ./scripts/Create-DraftRelease -updatewinget
Publicize the new release:
Reddit
Mastodon
When release available on Microsoft Store and in winget repo, update the GitHub release to show that packages have been published
Create a new release issue with release details, following example of last release issue, which is pinned at the top of Issues
Unpin old release, and pin the new release issue
Update GitHub milestones and issues, closing any old milestone less than the current release version
The release flow is currently undocumented, so I'm going to document it here, and will add to the list as I complete the release.
www/index.html, merge when readypackage.jsonand NWJS (inpackage.json.nwjs), and decide if they need bumping to latest stablenpm install electron@latest --save-dev, and do quick test withnpm startpackage.json.nwjs. Do not install NWJS alongside Electron./scripts/Set-AppVersionin PowerShell (Windows or Linux), to touch all the files where updates are required)npm install, but if you updated manually, be sure to runnpm install, andnpm audit fixif security updates are required. Do not use theforceoption to install breaking patchesnpm run build, note any build errors and fix if necessary./dist/. Be sure to test in Restricted Mode as well as ServiceWorker Mode. Fix any issues arisingnpm installand thennpm startin the root of the Repo (Windows or Linux). Ensure app self-updates to the version you're testing, or exit and restart the app once update is detectedarchivesfolder is empty or that it contains only any bundled demo archive (if so, you will need to ensure the archive is listed in the UWP manifests for both the Store and the GitHub releases:Set-AppVersionshould do this for you if the packaged archive is properly referenced ininit.js)./scripts/Create-DraftRelease -buildstorerelease -buildonly. In the interactive dialogue, do not set any E suffix, just build the plain app with the suggested release version..appxuploadbundle in `.\dist\AppPackages", and move it to a top-level directory so it is not deleted when building the Electron versionSet-AppVersion./scripts/Create-DraftRelease -buildstorerelease -winonly appx -electronbuild local. When asked for the tagname, simply typeE(for Electron). Build only (no draft release yet)..appxbundlethat was built in.\Repos\kiwix-js-pwa\dist\bld\Electron\and move it to a top-level directory, together with the previously build.appxupload../scripts/Create-DraftRelease -electronbuild cloud. When asked, enter+E+Nat the tag version prompt (builds and signs the UWP, and builds Electron and NWJS versions on GitHub)Create-DraftRelease./scripts/Publish-PWA. Choosedockeras the target when asked, and set the release tag to the tag number, e.g.3.8.6Create-DraftReleasescript, or by re-running it with./scripts/Create-DraftRelease -updatewinget