diff --git a/docz/docs/03-demos/01-frontend/02-vue.md b/docz/docs/03-demos/01-frontend/02-vue.md
index 1998599..6b224a3 100644
--- a/docz/docs/03-demos/01-frontend/02-vue.md
+++ b/docz/docs/03-demos/01-frontend/02-vue.md
@@ -133,8 +133,8 @@ function exportFile() {
 
 :::note
 
-This demo was last run on 2023 April 06 using `vue@3.2.47`.  When running
-`npm init`, the package `create-vue@3.6.1` was installed.
+This demo was last run on 2023 August 27 using `vue@3.3.4`.  When running
+`npm init`, the package `create-vue@3.7.3` was installed.
 
 :::
 
@@ -209,8 +209,8 @@ function exportFile() {
 
 :::note
 
-This demo was last run on 2023 April 06 using `vue@3.2.47`.  When running
-`npm init`, the package `create-vue@3.6.1` was installed.
+This demo was last run on 2023 August 27 using `vue@3.3.4`.  When running
+`npm init`, the package `create-vue@3.7.3` was installed.
 
 :::
 
@@ -283,4 +283,4 @@ There is a shared component [`SheetJS-vue.js`](pathname:///vue/SheetJS-vue.js)
 The entire demo is designed to run in Internet Explorer and does not reflect
 modern design patterns.
 
-:::
\ No newline at end of file
+:::
diff --git a/docz/docs/03-demos/01-frontend/04-svelte.md b/docz/docs/03-demos/01-frontend/04-svelte.md
index 8472f6c..db29f85 100644
--- a/docz/docs/03-demos/01-frontend/04-svelte.md
+++ b/docz/docs/03-demos/01-frontend/04-svelte.md
@@ -1,5 +1,7 @@
 ---
-title: Svelte
+title: Sheets in Svelte Sites
+sidebar_label: Svelte
+description: Build interactive websites with Svelte. Seamlessly integrate spreadsheets into your app using SheetJS. Bring Excel-powered workflows and data to the modern web.
 pagination_prev: demos/index
 pagination_next: demos/grid/index
 sidebar_position: 4
@@ -8,17 +10,25 @@ sidebar_position: 4
 import current from '/version.js';
 import CodeBlock from '@theme/CodeBlock';
 
-Svelte is a JS library for building user interfaces.
+[Svelte](https://svelte.dev/) is a JavaScript library for building user
+interfaces.
 
-This demo tries to cover common Svelte data flow ideas and strategies. Svelte
-familiarity is assumed.
+[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
+data from spreadsheets.
 
-Other demos cover general Svelte deployments, including:
+This demo uses Svelte and SheetJS to process and generate spreadsheets. We'll
+explore how to load SheetJS in a Svelte component and compare common state
+models and data flow strategies.
+
+:::note pass
+
+This demo focuses on Svelte concepts. Other demos cover general deployments:
 
 - [Static Site Generation powered by SvelteKit](/docs/demos/static/svelte)
 - [iOS applications powered by CapacitorJS](/docs/demos/mobile/capacitor)
 - [Desktop application powered by Wails](/docs/demos/desktop/wails)
 
+:::
 
 ## Installation
 
@@ -122,8 +132,8 @@ function exportFile() {
 
 :::note
 
-This demo was last run on 2023 March 08 using `svelte@3.55.1`.  When running
-`npm create`, the package `create-vite@4.1.0` was installed.
+This demo was last run on 2023 August 27 using `svelte@4.2.0`.  When running
+`npm create`, the package `create-vite@4.4.1` was installed.
 
 :::
 
@@ -200,8 +210,8 @@ function exportFile() {
 
 :::note
 
-This demo was last run on 2023 March 08 using `svelte@3.55.1`.  When running
-`npm create`, the package `create-vite@4.1.0` was installed.
+This demo was last run on 2023 August 27 using `svelte@4.2.0`.  When running
+`npm create`, the package `create-vite@4.4.1` was installed.
 
 :::
 
diff --git a/docz/docs/03-demos/01-frontend/07-angularjs.md b/docz/docs/03-demos/01-frontend/07-angularjs.md
index 168a2b5..99047df 100644
--- a/docz/docs/03-demos/01-frontend/07-angularjs.md
+++ b/docz/docs/03-demos/01-frontend/07-angularjs.md
@@ -8,7 +8,7 @@ sidebar_position: 7
 import current from '/version.js';
 import CodeBlock from '@theme/CodeBlock';
 
-:::warning
+:::warning pass
 
 This demo is for the legacy AngularJS framework (version 1).
 
@@ -23,7 +23,7 @@ This demo is for the legacy AngularJS framework (version 1).
 
 :::note
 
-This demo was last run on 2023 April 08 using AngularJS `1.5.0`
+This demo was last run on 2023 August 27 using AngularJS `1.8.2`
 
 :::
 
@@ -170,7 +170,7 @@ $scope.exportSheetJS = function() {
 
 
   SheetJS + AngularJS
-  
+  
   
   
 
@@ -269,8 +269,8 @@ The HTML table can be directly exported with `XLSX.utils.table_to_book`:
 
 
   SheetJS + AngularJS
-  
-  
+  
+  
   
   
 
diff --git a/docz/docs/03-demos/03-net/02-server.md b/docz/docs/03-demos/03-net/02-server.md
index f8d0134..edd8600 100644
--- a/docz/docs/03-demos/03-net/02-server.md
+++ b/docz/docs/03-demos/03-net/02-server.md
@@ -77,6 +77,13 @@ provides ["Worker Threads"](#worker-threads) for this exact use case.
 
 #### Express
 
+:::note
+
+This demo was verified on 2023 August 27 using `express-formidable@1.2.0` and
+ExpressJS `4.18.2`
+
+:::
+
 The `express-formidable` middleware is powered by the `formidable` parser.  It
 adds a `files` property to the request.
 
@@ -132,7 +139,7 @@ app.listen(+process.env.PORT||3000);
 1) Install dependencies:
 
 {`\
-npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz express express-formidable`}
+npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz express@4.18.2 express-formidable@1.2.0`}
 
 
 2) Start server (note: it will not print anything to console when running)
@@ -158,6 +165,12 @@ It should prompt to download `SheetJSExpress.xlsx`
 
 #### NestJS
 
+:::note
+
+This demo was verified on 2023 August 27 using NestJS `10.2.0` and Multer.
+
+:::
+
 [The NestJS docs](https://docs.nestjs.com/techniques/file-upload) have detailed
 instructions for file upload support. In the controller, the `path` property
 works with `XLSX.readFile`.
@@ -171,7 +184,7 @@ with a CSV output of the first sheet.  It will also respond to GET requests to
 ```ts title="src/sheetjs/sheetjs.controller.js"
 import { Controller, Get, Header, Post, StreamableFile, UploadedFile, UseInterceptors } from '@nestjs/common';
 import { FileInterceptor } from '@nestjs/platform-express';
-import { readFile, utils } from 'xlsx';
+import { readFile, utils, write } from 'xlsx';
 
 @Controller('sheetjs')
 export class SheetjsController {
@@ -220,7 +233,7 @@ npx @nestjs/cli generate controller sheetjs
 ```
 
 3) Add `multer` to the new module by editing `src/sheetjs/sheetjs.module.ts`.
-Changes are highlighted below:
+The highlighted lines should be added to the file:
 
 ```ts title="src/sheetjs/sheetjs.module.ts"
 import { Module } from '@nestjs/common';
@@ -269,7 +282,7 @@ It should prompt to download `SheetJSNest.xlsx`
 
 :::note
 
-This demo was verified on 2023 April 06 using `fastify@4.15.0`
+This demo was verified on 2023 August 27 using `fastify@4.22.0`
 
 :::
 
@@ -304,7 +317,7 @@ fastify.post('/', async(req, reply) => {
 });
 ```
 
-:::caution
+:::caution pass
 
 Out of the box, Fastify will return an error `FST_ERR_CTP_BODY_TOO_LARGE` when
 processing large spreadsheets (`statusCode 413`).  This is a Fastify issue.
@@ -420,7 +433,7 @@ the main server process. Body parsers like `formidable` will write uploaded
 files to the filesystem, and the file path should be passed to the worker (and
 the worker would be responsible for reading and cleaning up the files).
 
-:::note
+:::note pass
 
 The `child_process` module can also spawn [command-line tools](/docs/demos/cli).
 That approach is not explored in this demo.
@@ -431,9 +444,8 @@ That approach is not explored in this demo.
 
 :::note
 
-This demo was last tested on 2023 March 14.
-
-Versions: NodeJS 18.15.0 + ExpressJS 4.18.2 + Formidable 2.1.1
+This demo was last tested on 2023 August 27 with NodeJS 20.5.1 + ExpressJS
+4.18.2 + Formidable 2.1.1
 
 :::
 
diff --git a/docz/docs/03-demos/06-desktop/05-neutralino.md b/docz/docs/03-demos/06-desktop/05-neutralino.md
index eb3d17f..e173189 100644
--- a/docz/docs/03-demos/06-desktop/05-neutralino.md
+++ b/docz/docs/03-demos/06-desktop/05-neutralino.md
@@ -188,16 +188,16 @@ const save_button_callback = async() => {
 
 ## Complete Example
 
-:::note pass
+:::note
 
 This demo was tested in the following environments:
 
-| OS and Version | Arch | Server    | Client   | Date       |
-|:---------------|:-----|:----------|:---------|:-----------|
-| macOS 13.4.1   | x64  | `v4.10.0` | `v3.8.2` | 2023-06-28 |
-| macOS 13.4.1   | ARM  | `v4.10.0` | `v3.8.2` | 2023-06-28 |
-| Windows 10     | x64  | `v4.7.0`  | `v3.6.0` | 2023-03-19 |
-| Linux (HoloOS) | x64  | `v4.7.0`  | `v3.6.0` |            |
+| OS and Version | Arch | Server    | Client    | Date       |
+|:---------------|:-----|:----------|:----------|:-----------|
+| macOS 13.5.1   | x64  | `v4.13.0` | `v3.11.0` | 2023-08-26 |
+| macOS 13.4.1   | ARM  | `v4.10.0` | `v3.8.2`  | 2023-06-28 |
+| Windows 10     | x64  | `v4.13.0` | `v3.11.0` | 2023-08-26 |
+| Linux (HoloOS) | x64  | `v4.13.0` | `v3.11.0` | 2023-08-26 |
 
 :::
 
@@ -231,6 +231,13 @@ curl -L -o resources/js/xlsx.full.min.js https://cdn.sheetjs.com/xlsx-${current}
   ],
 ```
 
+:::note pass
+
+There may be multiple `nativeAllowList` blocks in the configuration file. The
+line must be added to the first block.
+
+:::
+
 4) Set up skeleton app and print version info:
 
 - Replace the contents of `resources/index.html` with the following code:
diff --git a/docz/docs/03-demos/06-desktop/09-cli.md b/docz/docs/03-demos/06-desktop/09-cli.md
index fb0ede9..8aa1d7f 100644
--- a/docz/docs/03-demos/06-desktop/09-cli.md
+++ b/docz/docs/03-demos/06-desktop/09-cli.md
@@ -62,6 +62,7 @@ This demo was tested in the following deployments:
 |:-------------|:--------|:------------|:-----------|
 | `darwin-x64` | `2.0.1` | `20.1.0`    | 2023-05-08 |
 | `darwin-arm` | `2.0.1` | `20.2.0`    | 2023-06-05 |
+| `win10-x64`  | `2.1.1` | `16.20.2`   | 2023-08-27 |
 | `linux-x64`  | `2.0.1` | `20.1.0`    | 2023-05-08 |
 
 
@@ -138,20 +139,76 @@ This generates `xlsx-cli-linux`, `xlsx-cli-macos`, and `xlsx-cli-win.exe` .
 
 Run `boxednode`:
 
+
+  
+
 ```bash
-npx boxednode@2.0.1 -s xlsx-cli.js -t xlsx-cli
+npx boxednode@2.1.1 -s xlsx-cli.js -t xlsx-cli
 ```
 
+  
+  
+
+```bash
+npx boxednode@2.1.1 -s xlsx-cli.js -t xlsx-cli.exe -n 16.20.2
+```
+
+:::info pass
+
+The Windows 10 build requires Visual Studio with "Desktop development with C++"
+workload, Python 3, and NASM[^1].
+
+:::
+
+:::caution pass
+
+When the demo was last tested on Windows, the build failed:
+
+```
+error MSB8020: The build tools for Visual Studio 2019 (Platform Toolset = 'v142') cannot be found. To build using the v142 build tools, please install Visual Studio 2019 build tools.
+```
+
+This error was fixed by installing the `v142` build tools through the Visual
+Studio installer.
+
+:::
+
+:::caution pass
+
+In the most recent Windows test against NodeJS `20.5.1`, the build failed due
+to an issue in the OpenSSL dependency:
+
+```
+...\node-v20.5.1\deps\openssl\openssl\crypto\info.c(176,16): error C2153: integer literals must have at least one digit [...\node-v20.5.1\deps\openssl\openssl.vcxproj]
+```
+
+SheetJS libraries are compatible with NodeJS versions dating back to `v0.8`. The
+workaround is to select NodeJS `v16.20.2` using the `-n` flag. This version was
+was chosen since NodeJS `v18` upgraded the OpenSSL dependency.
+
+:::
+
   
 
 
-4) Run the generated program, passing `pres.numbers` as the argument.  For
+
+
+  
+
+
+4) Run the generated program, passing `pres.numbers` as the argument. For
 example, `nexe` generates `xlsx-cli` in macOS so the command is:
 
 ```bash
 ./xlsx-cli pres.numbers
 ```
 
+`nexe` generates `xlsx-cli.exe` in Windows, so the command is:
+
+```powershell
+.\xlsx-cli.exe pres.numbers
+```
+
 ## V8
 
 The [V8](/docs/demos/engines/v8) demo covers standalone programs that embed the
@@ -288,3 +345,5 @@ The following demos for JS engines produce standalone programs:
 - [QuickJS](/docs/demos/engines/quickjs)
 - [Goja](/docs/demos/engines/goja)
 - [JavaScriptCore](/docs/demos/engines/jsc)
+
+[^1]: Downloads can be found [at the main NASM project website](https://www.nasm.us/)
\ No newline at end of file
diff --git a/docz/docs/03-demos/09-cloud/31-dropbox.mdx b/docz/docs/03-demos/09-cloud/31-dropbox.mdx
index 1b5f008..bd1cb76 100644
--- a/docz/docs/03-demos/09-cloud/31-dropbox.mdx
+++ b/docz/docs/03-demos/09-cloud/31-dropbox.mdx
@@ -1,5 +1,6 @@
 ---
-title: Dropbox
+title: Spreadsheets in Dropbox
+sidebar_label: Dropbox
 pagination_prev: demos/local/index
 pagination_next: demos/extensions/index
 ---
@@ -8,12 +9,27 @@ pagination_next: demos/extensions/index
   
 
 
-Dropbox is a file hosting service that offers APIs for programmatic file access.
+[Dropbox](https://www.dropbox.com/) is a file hosting service that offers APIs
+for programmatic file access.
+
+[SheetJS](https://sheetjs.com) is a JavaScript library for reading and writing
+data from spreadsheets.
+
+This demo uses SheetJS to read and write spreadsheets stored on Dropbox. We'll
+explore two Dropbox API workflows:
+
+- A "Chooser"[^1] application allows users to select files from their Dropbox
+accounts. This demo will fetch and parse the selected file.
+
+- A "Saver"[^2] application allows users to save a generated spreadsheet to
+their Dropbox account. This demo will generate a XLS workbook using SheetJS.
+
+## Integration Details
 
 "Dropbox Apps" are the standard way to interact with the service.  The
 ["Dropbox App"](#dropbox-app) section describes how this demo was configured.
 
-:::note
+:::info pass
 
 The Dropbox API script is loaded in this page with
 
@@ -29,23 +45,59 @@ The `data-app-key` used in this demo is a "Development" key associated with the
 
 The live demos require a Dropbox account.
 
-## Reading Files
+### Reading Files
 
 "Chooser" is a small library that lets users select a file from their account.
+`Dropbox.createChooseButton` is a function that accepts an options argument and
+returns a DOM element that should be added to the page:
 
-### Live Demo
+```js
+var button = Dropbox.createChooseButton({
+  /* ... options described below ... */
+});
+document.appendChild(button);
+```
 
-The button must have the following options:
+The following options must be set:
 
 - `multiselect: false` ensures only one file can be selected
 - `folderselect: false` limits selection to real files
 - `linkType: "direct"` ensures the link points to a raw file
+- `success` method is called when the user selects a file
 
-When a file is selected, the `success` callback will receive an array of files
-(even if `multiselect` is disabled).  Each file object has a `link` file which
-corresponds to a temporary URL that can be fetched.
+The following options are optional:
 
-:::caution
+- `extensions: ['.xlsx', '.xls']` limits the file types for selection
+
+#### Chooser Callback
+
+The `success` callback method receives an array of File objects even if only one
+file is selected. This file object has the following properties:
+
+- `name` is the name of the selected file
+- `link` is a temporary URL that can be fetched
+
+This demo fetches the link using the `fetch` API, parses the raw data using the
+SheetJS `read` function[^3] and generates a HTML table using `sheet_to_html`[^4]
+
+```js
+async(files) => {
+  /* get file entry -- note that dropbox API always passes an array */
+  var file = files[0];
+  console.log(`Selected ${file.name} ID=${file.id}`);
+
+  /* fetch file and parse */
+  var wb = XLSX.read(await (await fetch(file.link)).arrayBuffer());
+
+  /* convert first sheet to HTML table and add to page */
+  var html = XLSX.utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]]);
+  console.log(html);
+}
+```
+
+#### Chooser Live Demo
+
+:::caution pass
 
 If the live demo shows a message
 
@@ -93,9 +145,26 @@ function SheetJSChoisissez() {
 }
 ```
 
-## Writing Files
+### Writing Files
 
-:::caution
+"Saver" is a small library that lets users save files to their account.
+`Dropbox.createSaveButton` is a function that accepts three arguments and
+returns a DOM element that should be added to the page:
+
+```js
+var button = Dropbox.createSaveButton(url, filename, options);
+/* add button to page */
+btn.current.appendChild(button);
+```
+
+`filename` will be the recommended filename in the Save window.
+
+The options object supports two callbacks: `success` (if the save succeeded) and
+`cancel` (if the user cancels without saving).
+
+#### URL
+
+:::caution pass
 
 The Dropbox API was not designed for writing files that are created in the web
 browser.  The Data URI approach is a neat workaround but should not be used in
@@ -104,18 +173,49 @@ using NodeJS and generate a proper URL for Dropbox to fetch.
 
 :::
 
-"Saver" is a small library that lets users save files to their account.
+The Dropbox API is designed to fetch data from a user-specified URL. Files are
+not included in the request!
 
-### Live Demo
+The SheetJS workaround involves the Data URI scheme[^5]. The main steps are:
 
-The file must be written before the Save button is created. Unfortunately the
-API does not accept data in the POST body, so the workaround is to create a data
-URI by writing with the `base64` type and prepending the URI metadata.
+1) Write a workbook using the SheetJS `write`[^6] method. The `type: "base64"`
+option instructs the method to return a Base64-encoded string.
+
+```js
+/* write XLS workbook (Base64 string) */
+const b64 = XLSX.write(workbook, { type: "base64", bookType: "xls" });
+```
+
+2) Construct a Data URL by prepending the `data` header:
+
+```js
+/* create data URI */
+const url = "data:application/vnd.ms-excel;base64," + b64;
+```
+
+3) Create a button and add it to the page:
+
+```js
+/* create save button using the concise function call */
+var button = Dropbox.createSaveButton( url, "SheetJSDropbox.xls", {
+  success: () => setMsg("File saved successfully!"),
+  cancel: () => setMsg("User Canceled Selection!"),
+});
+document.appendChild(button);
+```
+
+:::info
+
+The file must be written before the Save button is created.
+
+:::
+
+#### Saver Live Demo
 
 This demo seeds data by fetching a file and writing to HTML table. The generated
 table is scraped to create a new workbook that is written to XLS.
 
-:::caution
+:::caution pass
 
 If the live demo shows a message
 
@@ -164,25 +264,36 @@ function SheetJSEnregistrez() {
 
 :::note
 
-This demo was last tested on 2023 February 28.
+This demo was last tested on 2023 August 26.
 
 :::
 
 This demo requires a "Dropbox app":
 
-0) Create a Dropbox app through the Developer tools.  For this demo:
+0) Create a Dropbox account and verify the associated email address. This demo
+has been tested with a free Dropbox Basic plan account. The app installation
+step can be safely skipped.
 
-- "Choose an APU": "Scoped access"
+1) Create a Dropbox app in the Developer panel.
+
+Click the `᎒᎒᎒` icon > App Center. In the next page, click "Build an App". In
+the next page, click "Create Apps".
+
+In the App creation wizard, select the following options:
+
+- "Choose an API": "Scoped access"
 - "Choose the type of access you need": "Full Dropbox"
 - "Name": (enter any name) "SheetJS Docs"
 
-:::caution
+:::caution pass
 
 The Dropbox API Terms and Conditions should be reviewed before acceptance.
 
 :::
 
-1) Configure the Dropbox app in the Developer tools.
+Click "Create App" to create the app.
+
+2) Configure the Dropbox app in the Developer tools.
 
 The following permissions should be selected in the "Permissions" tab
 
@@ -195,3 +306,14 @@ In the settings tab, under "Chooser / Saver / Embedder domains", the desired
 public domains should be added. `localhost` must also be added for development
 use (it is not automatically enabled).
 
+For public use, select "Enable Additional Users".
+
+3) Copy the "App key" and add it to the `data-app-key` attribute of the Dropbox
+integration script reference.
+
+[^1]: See ["Chooser"](https://www.dropbox.com/developers/chooser) in the Dropbox Developers Documentation
+[^2]: See ["Saver"](https://www.dropbox.com/developers/saver) in the Dropbox Developers Documentation
+[^3]: See [`read` in "Reading Files"](/docs/api/parse-options)
+[^4]: See [`sheet_to_html` in "Utilities"](/docs/api/utilities/html#html-table-output)
+[^5]: See ["Data URLs"](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) in the "MDN web docs"
+[^6]: See [`writeFile` in "Writing Files"](/docs/api/write-options)
\ No newline at end of file
diff --git a/docz/docs/03-demos/12-engines/02_v8.md b/docz/docs/03-demos/12-engines/02_v8.md
index f51bfe5..d58f58c 100644
--- a/docz/docs/03-demos/12-engines/02_v8.md
+++ b/docz/docs/03-demos/12-engines/02_v8.md
@@ -127,7 +127,7 @@ This demo was tested in the following deployments:
 | `11.8.82`     | `darwin-x64` | macOS 13.5.1 | `clang 14.0.3`   | 2023-08-26 |
 | `11.8.82`     | `darwin-arm` | macOS 13.5.1 | `clang 14.0.3`   | 2023-08-26 |
 | `11.8.82`     | `win10-x64`  | Windows 10   | `CL 19.37.32822` | 2023-08-26 |
-| `11.3.244.11` | `linux-x64`  | HoloOS 3.4.6 | `gcc 12.2.0`     | 2023-05-20 |
+| `11.8.82`     | `linux-x64`  | HoloOS 3.4.8 | `gcc 12.2.0`     | 2023-08-26 |
 
 :::
 
@@ -435,7 +435,7 @@ fatal: cannot set up tracking information; starting point 'refs/tags/11.8.82' is
 6) Build the static library.
 
 
-  
+  
 
 ```bash
 tools/dev/v8gen.py x64.release.sample
@@ -504,7 +504,7 @@ treat_warnings_as_errors = false
 7) Ensure the sample `hello-world` compiles and runs:
 
 
-  
+  
 
 ```bash
 g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
@@ -572,7 +572,7 @@ cp ~/dev/v8/v8/samples/hello-world.cc .
 10) Create symbolic links to the `include` headers and `obj` library folders:
 
 
-  
+  
 
 ```bash
 ln -s ~/dev/v8/v8/include
diff --git a/docz/docs/03-demos/12-engines/06_goja.md b/docz/docs/03-demos/12-engines/06_goja.md
index dc63d66..725dd9e 100644
--- a/docz/docs/03-demos/12-engines/06_goja.md
+++ b/docz/docs/03-demos/12-engines/06_goja.md
@@ -96,6 +96,8 @@ This demo was tested in the following deployments:
 |:-------------|:-----------|:-----------|:-----------|
 | `darwin-x64` | `28ee0ee`  | `1.19.3`   | 2023-06-05 |
 | `darwin-arm` | `28ee0ee`  | `1.20.4`   | 2023-06-05 |
+| `win10-x64`  | `81d7606`  | `1.20.2`   | 2023-08-27 |
+| `linux-x64`  | `81d7606`  | `1.21.0`   | 2023-08-27 |
 
 :::
 
diff --git a/docz/docs/03-demos/12-engines/07_nashorn.md b/docz/docs/03-demos/12-engines/07_nashorn.md
index 0fd59fc..5ca88b3 100644
--- a/docz/docs/03-demos/12-engines/07_nashorn.md
+++ b/docz/docs/03-demos/12-engines/07_nashorn.md
@@ -96,12 +96,13 @@ This demo was tested in the following deployments:
 
 | OpenJDK | Nashorn         | Date       |
 |:--------|:----------------|:-----------|
-| 20.0.1  | 15.4 standalone | 2023-05-21 |
-| 19.0.2  | 15.4 standalone | 2023-05-21 |
-| 17.0.6  | 15.4 standalone | 2023-05-21 |
-| 15.0.10 | 15.4 standalone | 2023-05-21 |
-| 11.0.19 | Built-in        | 2023-05-21 |
-| 1.8.0   | Built-in        | 2023-05-21 |
+| 21-rc34 | 15.4 standalone | 2023-08-28 |
+| 20.0.2  | 15.4 standalone | 2023-08-28 |
+| 19.0.2  | 15.4 standalone | 2023-08-28 |
+| 17.0.8  | 15.4 standalone | 2023-08-28 |
+| 15.0.10 | 15.4 standalone | 2023-08-28 |
+| 11.0.20 | Built-in        | 2023-08-28 |
+| 1.8.0   | Built-in        | 2023-08-28 |
 
 :::
 
diff --git a/docz/docs/03-demos/12-engines/08_quickjs.md b/docz/docs/03-demos/12-engines/08_quickjs.md
index 0edbdce..b63ba60 100644
--- a/docz/docs/03-demos/12-engines/08_quickjs.md
+++ b/docz/docs/03-demos/12-engines/08_quickjs.md
@@ -328,7 +328,7 @@ first worksheet name, and the contents of the first sheet as CSV rows.
 
 :::note
 
-This demo was last tested on 2023 March 11 against QuickJS commit `2788d71`.
+This demo was last tested on 2023 August 26 against QuickJS commit `2788d71`.
 
 :::
 
diff --git a/docz/docs/03-demos/12-engines/09_hermes.md b/docz/docs/03-demos/12-engines/09_hermes.md
index 26d4fab..fea4c9b 100644
--- a/docz/docs/03-demos/12-engines/09_hermes.md
+++ b/docz/docs/03-demos/12-engines/09_hermes.md
@@ -338,17 +338,32 @@ This demo was tested in the following deployments:
 
 | Architecture | Git Commit | Date       |
 |:-------------|:-----------|:-----------|
-| `darwin-x64` | `70af78b`  | 2023-08-02 |
+| `darwin-x64` | `70af78b`  | 2023-08-27 |
 | `darwin-arm` | `869312f`  | 2023-06-05 |
+| `linux-x64`  | `70af78b`  | 2023-08-27 |
 
 :::
 
-0) Install build dependencies:
+0) Install [dependencies](https://hermesengine.dev/docs/building-and-running/#dependencies)
+
+Installation Notes (click to show)
+
+The official guidance[^5] has been verified in macOS and HoloOS (Linux).
+
+On macOS:
 
 ```bash
 brew install icu4c cmake ninja
 ```
 
+On HoloOS (and other Arch Linux distros):
+
+```bash
+sudo pacman -Syu cmake git ninja icu python zip readline
+```
+
+