Update to v1.80.

This commit is contained in:
bengarrett 2022-07-05 17:14:48 +10:00
parent 5e46d2f24b
commit 6d1bb7f102
14 changed files with 215 additions and 101 deletions

View File

@ -2,9 +2,33 @@
## Changes and updates
### v1.8.0
- Fixed DOSee incorrectly interpreting backslashes as new commands,
even though they're common DOS program arguments, ie, `EXAMPLE.EXE /?`.
- DOSee (`dosee:run:filename`) can handle chained DOS and DOSBox commands, these are separated by a Bash-style `&&` (AND) separator.
For example, `@ECHO Hello&&PAUSE&&CLS` would print Hello, prompt for any key press to continue and then clear the screen.
- Added a Update DOSee and the service worker button on the `index.html` running example.
Clicking this removes all stored DOSee files in the browser cache.
- Added apple-touch-icon meta link to examples.
- Renamed the internal drive letters to make their purpose clearer.
- Updated the content of the Utilities `U:` drive.
- - Renamed `ALIASES` dir to `ALIAS`
- - Renamed `TOOLS` dir to `FILEHACK`
- - Renamed `REPAIR` to `FIX`
- - Renamed `DF2DOS` to `UTIL`
- - Moved `FIX\TP-FIX` into `FILEHACK`
- - Added the dependency `CWSDPMI.EXE` to `UTIL`
- - Added an ANSI `WELCOME` help screen.
- - Removed the DOSzip commander tool `DZ.EXE` as it ran too slow.
- - Removed the unused `DRIVER` directory.
- - Replaced Open Cubic Player with the performant XTC-PLAY v0.47.
- - Replaced Acidview with Insane View v2.01b.
### v1.71
- Fixed yarn/npm build error caused by an invalid type used in `workbox-config.js`.
<br>`[InjectManifest.maximumFileSizeToCacheInBytes] 'maximumFileSizeToCacheInBytes' property type must be number.`
- Fixed yarn/npm build error caused by an invalid type used in `workbox-config.js`.
<br>`[InjectManifest.maximumFileSizeToCacheInBytes] 'maximumFileSizeToCacheInBytes' property type must be number.`
### v1.70

View File

@ -60,6 +60,7 @@ cd DOSee
# run the container (tap Ctrl-C to exit)
docker compose up
```
Point a web browser to http://localhost:8086
```bash
@ -85,7 +86,7 @@ If you edit the source files in `src/` you will need to rebuild the application.
cd DOSee
# re-build DOSee using your edits
yarn # npm run install
yarn run install # npm run install
# serve the modified DOSee over port 8086
yarn run serve # npm run serve
@ -93,16 +94,7 @@ yarn run serve # npm run serve
Point a web browser to http://localhost:8086
Due to a PWA offline caching feature, web browsers must clear the application storage and unregister the service workers to reflect changes to the application code.
- In Chrome/Edge bring up the browser Dev Tools in using <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>J</kbd>.<br>
Select the Application and Storage tab.<br>
Check the Application Unregister service workers checkbox.<br>
Press the Clear site data button.
- In Firefox bring up the browser Developer Tools in using <kbd>Ctrl</kbd> <kbd>Shift</kbd> <kbd>I</kbd>.<br>
Select the Application and Service Workers tab.<br>
Press the Unregister button.
Due to the PWA offline feature, web browsers need to unregister the service workers to reflect any changes to the application code. There is a red _Update DOSee and the service worker_ button on the index.html example that will do this and then reload the browser window. The eventListener code for this button can be found in the `src/js/dosee-sw.js` file.
### License

View File

@ -47,10 +47,12 @@ The meta _content_ attribute must be a relative path from the webroot and must p
### `<meta name="dosee:run:filename">`
The filename of the MS-DOS program DOSee should launch. The program file needs to exist in the ZIP archive provided to _dosee:zip:path_.
The filenames of the MS-DOS programs or DOSBox commands DOSee should launch. Any programs need to exist in the ZIP archive provided to _dosee:zip:path_.
DOS usually uses the following file extensions to identify a program: `.exe` `.com` `.bat`. Other than these, there is no standard file naming convention to identify which file should launch a piece of DOS software.
Multiple programs and commands can be chained together using an `&&` separator.
If the content is left blank or the filename doesn't exist in the archive, DOSee will launch into a DOS `C:` prompt.
@ -59,6 +61,12 @@ If the content is left blank or the filename doesn't exist in the archive, DOSee
<meta name="dosee:run:filename" content="game.exe" />
```
```html
<meta name="dosee:run:filename" content="CLS&&@ECHO Loading game&&game.exe" />
```
## Optional
### `<meta name="dosee:capture:filename">`
@ -157,7 +165,7 @@ The default and initial selection for the **Graphic adapter** hardware. Possible
The default and initial selection for the **Audio addon** hardware. Possible values are:
- `gus`<br>**Gravis Ultrasound** offers high quality 14 channel, 16-bit, 44 KHz digital playback.
- `gus`<br>**Gravis UltraSound** offers high quality 14 channel, 16-bit, 44 KHz digital playback.
- `covox`<br>**Covox** Covox Speech Accelerator is an external audio device and speaker with mono digital playback.
- `sb16`<br>**Sound Blaster 16** Creative Labs Sound Blaster 16 offers stereo, 16-bit, 44 KHz digital playback.
- `sb1`<br>**Sound Blaster 1.0** Creative Labs Sound Blaster v1.0 offers mono, 8-bit, 22 KHz digital playback.
@ -173,7 +181,7 @@ The default and initial selection for the **Audio addon** hardware. Possible val
#### `<meta name="dosee:audio:gus">`
When set to `true`, it tells DOSee to mount a collection of Gravis Ultrasound audio drivers and tools accessible from the `G:` drive. These drivers are always loaded by DOSee whenever the Gravis Ultrasound audio option is selected. So this should still be left to `false`.
When set to `true`, it tells DOSee to mount a collection of Gravis UltraSound audio drivers and tools accessible from the `G:` drive. These drivers are always loaded by DOSee whenever the Gravis UltraSound audio option is selected. So this should still be left to `false`.
#### Sample programs

View File

@ -23,8 +23,8 @@
},
"homepage": "https://github.com/bengarrett/DOSee",
"funding": {
"type" : "individual",
"url" : "https://www.buymeacoffee.com/4rtEGvUIY"
"type": "individual",
"url": "https://www.buymeacoffee.com/4rtEGvUIY"
},
"license": "GPL-3.0-or-later",
"name": "dosee",
@ -39,5 +39,6 @@
"serve": "npx http-server build -p 8086",
"test": "echo \"Error: no test specified\" && exit 1"
},
"version": "1.7.0"
"version": "1.8.0",
"packageManager": "yarn@3.2.0"
}

Binary file not shown.

Binary file not shown.

View File

@ -11,9 +11,10 @@
<!-- PWA configuration -->
<meta name="theme-color" content="#1524eb" />
<link rel="manifest" href="/manifest.json" />
<link rel="apple-touch-icon" href="/images/dosee-icon-192x192.png">
<!-- DOSee initialisation options -->
<meta name="dosee:zip:path" content="dos_programs/program_0/agi_demo_pack_1.zip" />
<meta name="dosee:zip:path" content="dos_programs/program_0/agi_demo_pack_1.zip" />
<meta name="dosee:run:filename" content="sierra.com" />
<meta name="dosee:capture:filename" content="screenshot.png" />
<meta name="dosee:utilities" content="false" />
@ -54,12 +55,13 @@
<div>
<h2>
DOSee
<small><a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a></small>
<small><em>A DOS era, PC emulator for the web</em>
<a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a>
</small>
</h2>
<hr />
<h2>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span>
<span id="doseeH2">Something</span></small>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span> <span id="doseeH2">something</span></small>
</h2>
<div class="row" id="doseeCrashed">
<div class="card fluid error">
@ -136,7 +138,7 @@
<legend>Audio addon</legend>
<label>
<input type="radio" name="dosaudio" id="dosaudio1" value="gus" />
Gravis Ultrasound
Gravis UltraSound
</label>
<label>
<input type="radio" name="dosaudio" id="dosaudio4" value="covox" />
@ -227,19 +229,30 @@
<p>Released: 1987</p>
<p>Uses 16 color Tandy or EGA graphics and enhanced, 3 channel Tandy audio</p>
<p>
<a href="?dosspeed=386&dosmachine=tandy&dosaudio=none">Reset to recommended hardware</a>
<a href="?dosspeed=auto&dosmachine=tandy&dosaudio=none">Reset to recommended hardware</a>
</p>
</div>
<div id="helpTabNA">
<p>No help available</p>
</div>
</form>
<hr>
<p>
Example programs: <a href="/">Tandy 1000</a> - <a href="/index_1.html">EGA plus AdLib</a> - <a href="/index_2.html">Gravis Ultrasound</a> - <a href="/index_3.html">VGA plus AdLib</a>
</p>
<div class="row">
<div class="col-sm-12">
<div class="card fluid">
<h5>Switch the example machines and programs,</h5>
<p><a href="/">1987, Tandy 1000</a><a href="/index_1.html">1990, EGA+AdLib</a><a
href="/index_2.html">1994, Gravis
UltraSound</a><a href="/index_3.html">1996, VGA+AdLib</a></p>
</div>
</div>
<div class="col-sm-12">
<div class="card fluid">
<input type="button" id="updateDOSeeSW" class="small secondary" value="Update DOSee and the service worker" />
</div>
</div>
</div>
<footer>
© 2021 - Ben Garrett |
© 2022 - Ben Garrett |
<a href="//github.com/bengarrett/DOSee" target="_blank" rel="noopener">GitHub</a> |
<a href="https://dosee.link" target="_blank" rel="nopener">DOSee online</a>
<p>

View File

@ -11,9 +11,10 @@
<!-- PWA configuration -->
<meta name="theme-color" content="#1524eb" />
<link rel="manifest" href="/manifest.json" />
<link rel="apple-touch-icon" href="/images/dosee-icon-192x192.png">
<!-- DOSee initialisation options -->
<meta name="dosee:zip:path" content="dos_programs/program_1/loom.zip" />
<meta name="dosee:zip:path" content="dos_programs/program_1/loom.zip" />
<meta name="dosee:run:filename" content="SAMPLER.EXE" />
<meta name="dosee:capture:filename" content="screenshot.png" />
<meta name="dosee:utilities" content="false" />
@ -54,12 +55,13 @@
<div>
<h2>
DOSee
<small><a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a></small>
<small><em>A DOS era, PC emulator for the web</em>
<a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a>
</small>
</h2>
<hr />
<h2>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span>
<span id="doseeH2">Something</span></small>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span> <span id="doseeH2">something</span></small>
</h2>
<div class="row" id="doseeCrashed">
<div class="card fluid error">
@ -136,7 +138,7 @@
<legend>Audio addon</legend>
<label>
<input type="radio" name="dosaudio" id="dosaudio1" value="gus" />
Gravis Ultrasound
Gravis UltraSound
</label>
<label>
<input type="radio" name="dosaudio" id="dosaudio4" value="covox" />
@ -234,12 +236,19 @@
<p>No help available</p>
</div>
</form>
<hr>
<p>
Example programs: <a href="/">Tandy 1000</a> - <a href="/index_1.html">EGA plus AdLib</a> - <a href="/index_2.html">Gravis Ultrasound</a> - <a href="/index_3.html">VGA plus AdLib</a>
</p>
<div class="row">
<div class="col-sm-12">
<div class="card fluid">
<h5>Switch the example machines and programs,</h5>
<p><a href="/">1987, Tandy 1000</a><a href="/index_1.html">1990, EGA+AdLib</a><a
href="/index_2.html">1994,
Gravis
UltraSound</a><a href="/index_3.html">1996, VGA+AdLib</a></p>
</div>
</div>
</div>
<footer>
© 2021 - Ben Garrett |
© 2022 - Ben Garrett |
<a href="//github.com/bengarrett/DOSee" target="_blank" rel="noopener">GitHub</a> |
<a href="https://dosee.link" target="_blank" rel="nopener">DOSee online</a>
<p>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<title>DOSee Gravis Ultrasound running example</title>
<title>DOSee Gravis UltraSound running example</title>
<meta name="description" content="Verses by Electromotive Force running in DOSee" />
<meta name="author" content="Ben Garrett" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
@ -11,9 +11,10 @@
<!-- PWA configuration -->
<meta name="theme-color" content="#1524eb" />
<link rel="manifest" href="/manifest.json" />
<link rel="apple-touch-icon" href="/images/dosee-icon-192x192.png">
<!-- DOSee initialisation options -->
<meta name="dosee:zip:path" content="dos_programs/program_2/emf_vrs2.zip" />
<meta name="dosee:zip:path" content="dos_programs/program_2/emf_vrs2.zip" />
<meta name="dosee:run:filename" content="VERSES.EXE" />
<meta name="dosee:capture:filename" content="screenshot.png" />
<meta name="dosee:utilities" content="false" />
@ -54,12 +55,13 @@
<div>
<h2>
DOSee
<small><a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a></small>
<small><em>A DOS era, PC emulator for the web</em>
<a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a>
</small>
</h2>
<hr />
<h2>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span>
<span id="doseeH2">Something</span></small>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span> <span id="doseeH2">something</span></small>
</h2>
<div class="row" id="doseeCrashed">
<div class="card fluid error">
@ -136,7 +138,7 @@
<legend>Audio addon</legend>
<label>
<input type="radio" name="dosaudio" id="dosaudio1" value="gus" />
Gravis Ultrasound
Gravis UltraSound
</label>
<label>
<input type="radio" name="dosaudio" id="dosaudio4" value="covox" />
@ -225,7 +227,7 @@
<div id="helpProgram_2" class="hide">
<h4>Verses by Electromotive Force</h4>
<p>Released: 1994</p>
<p>Uses Gravis Ultrasound and 256 color VGA graphics</p>
<p>Uses Gravis UltraSound and 256 color VGA graphics</p>
<p>
<a href="?dosspeed=max&dosmachine=vga&dosaudio=gus">Reset to recommended hardware</a>
</p>
@ -234,12 +236,19 @@
<p>No help available</p>
</div>
</form>
<hr>
<p>
Example programs: <a href="/">Tandy 1000</a> - <a href="/index_1.html">EGA plus AdLib</a> - <a href="/index_2.html">Gravis Ultrasound</a> - <a href="/index_3.html">VGA plus AdLib</a>
</p>
<div class="row">
<div class="col-sm-12">
<div class="card fluid">
<h5>Switch the example machines and programs,</h5>
<p><a href="/">1987, Tandy 1000</a><a href="/index_1.html">1990, EGA+AdLib</a><a
href="/index_2.html">1994,
Gravis
UltraSound</a><a href="/index_3.html">1996, VGA+AdLib</a></p>
</div>
</div>
</div>
<footer>
© 2021 - Ben Garrett |
© 2022 - Ben Garrett |
<a href="//github.com/bengarrett/DOSee" target="_blank" rel="noopener">GitHub</a> |
<a href="https://dosee.link" target="_blank" rel="nopener">DOSee online</a>
<p>

View File

@ -11,9 +11,10 @@
<!-- PWA configuration -->
<meta name="theme-color" content="#1524eb" />
<link rel="manifest" href="/manifest.json" />
<link rel="apple-touch-icon" href="/images/dosee-icon-192x192.png">
<!-- DOSee initialisation options -->
<meta name="dosee:zip:path" content="dos_programs/program_3/hyb605.zip" />
<meta name="dosee:zip:path" content="dos_programs/program_3/hyb605.zip" />
<meta name="dosee:run:filename" content="hyb605.exe" />
<meta name="dosee:capture:filename" content="screenshot.png" />
<meta name="dosee:utilities" content="false" />
@ -54,12 +55,13 @@
<div>
<h2>
DOSee
<small><a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a></small>
<small><em>A DOS era, PC emulator for the web</em>
<a href="#doseeTabs" id="doseeInstall" class="hidden">+Install</a>
</small>
</h2>
<hr />
<h2>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span>
<span id="doseeH2">Something</span></small>
<small>Emulating<span id="doseeOffline" class="hidden"> offline</span> <span id="doseeH2">something</span></small>
</h2>
<div class="row" id="doseeCrashed">
<div class="card fluid error">
@ -136,7 +138,7 @@
<legend>Audio addon</legend>
<label>
<input type="radio" name="dosaudio" id="dosaudio1" value="gus" />
Gravis Ultrasound
Gravis UltraSound
</label>
<label>
<input type="radio" name="dosaudio" id="dosaudio4" value="covox" />
@ -234,12 +236,19 @@
<p>No help available</p>
</div>
</form>
<hr>
<p>
Example programs: <a href="/">Tandy 1000</a> - <a href="/index_1.html">EGA plus AdLib</a> - <a href="/index_2.html">Gravis Ultrasound</a> - <a href="/index_3.html">VGA plus AdLib</a>
</p>
<div class="row">
<div class="col-sm-12">
<div class="card fluid">
<h5>Switch the example machines and programs,</h5>
<p><a href="/">1987, Tandy 1000</a><a href="/index_1.html">1990, EGA+AdLib</a><a
href="/index_2.html">1994,
Gravis
UltraSound</a><a href="/index_3.html">1996, VGA+AdLib</a></p>
</div>
</div>
</div>
<footer>
© 2021 - Ben Garrett |
© 2022 - Ben Garrett |
<a href="//github.com/bengarrett/DOSee" target="_blank" rel="noopener">GitHub</a> |
<a href="https://dosee.link" target="_blank" rel="nopener">DOSee online</a>
<p>

View File

@ -6,9 +6,9 @@
"use strict";
// Relative file paths to DOSee emulation dependencies
const paths = new Map()
.set(`driveG`, `/disk_drives/g_drive.zip`)
.set(`driveS`, `/disk_drives/s_drive.zip`)
.set(`driveU`, `/disk_drives/u_drive.zip`)
.set(`driveGUS`, `/disk_drives/g_drive.zip`)
.set(`driveConfigs`, `/disk_drives/s_drive.zip`)
.set(`driveUtils`, `/disk_drives/u_drive.zip`)
.set(`sync`, `/emulator/dosbox-sync.js`)
.set(`mem`, `/emulator/dosbox-sync.mem`)
.set(`core`, `/emulator/dosbox.js`)
@ -43,7 +43,7 @@
// Handle URL params special cases that need additional files to be loaded by DOSee
const specialCaseURLs = () => {
const urlParams = DOSee.newQueryString();
// Gravis Ultrasound Audio drivers (dosaudio=gus)
// Gravis UltraSound Audio drivers (dosaudio=gus)
const audio = urlParams.get(`dosaudio`);
if (
audio === `gus` ||
@ -66,8 +66,8 @@
return DoseeLoader.mountZip(
`g`,
DoseeLoader.fetchFile(
`gravis ultrasound drivers`,
`${paths.get(`driveG`)}`
`Gravis UltraSound (GUS) drivers`,
`${paths.get(`driveGUS`)}`
)
);
};
@ -98,9 +98,10 @@
// Load additional DOS tools and utilities
const utilities = (load) => {
if (load !== `true`) return null;
const driveLetter = `u`;
return DoseeLoader.mountZip(
`u`,
DoseeLoader.fetchFile(`dos utilities`, `${paths.get(`driveU`)}`)
driveLetter,
DoseeLoader.fetchFile(`DOSee utilities`, `${paths.get(`driveUtils`)}`)
);
};
@ -168,7 +169,7 @@
const wantsWASM = `WebAssembly` in window;
const driveC = `c`,
driveS = `s`,
driveConfigs = `s`,
init = new DoseeLoader(
DoseeLoader.emulatorJS(`${paths.get(wantsWASM ? `core` : `sync`)}`),
DoseeLoader.emulatorWASM(`${paths.get(`wasm`)}`),
@ -185,8 +186,11 @@
)
),
DoseeLoader.mountZip(
driveS,
DoseeLoader.fetchFile(`DOSee configurations`, `${paths.get(`driveS`)}`)
driveConfigs,
DoseeLoader.fetchFile(
`DOSee configurations`,
`${paths.get(`driveConfigs`)}`
)
),
gravisDriver(config.get(`gus`)),
utilities(config.get(`utils`)),

View File

@ -18,8 +18,8 @@ window.Module = null;
((Promise) => {
"use strict";
const version = new Map()
.set(`date`, new Date(`18,Jun,2021`))
.set(`minor`, `7`)
.set(`date`, new Date(`5,Jul,2022`))
.set(`minor`, `8`)
.set(`major`, `1`)
.set(`display`, ``);
@ -252,7 +252,7 @@ window.Module = null;
document.getElementById(`dosaudio2`).checked = true;
break;
case `gus`:
this.verbose += ` Gravis Ultrasound audio.`;
this.verbose += ` Gravis UltraSound audio.`;
this.commandLine.push(loadConfig, `/dos/g/gus.con`);
document.getElementById(`dosaudio1`).checked = true;
break;
@ -366,11 +366,11 @@ window.Module = null;
_automaticExecution(loadConfig = ``, urlParams = URLSearchParams) {
if (loadConfig === ``)
throw Error(`automaticExecution loadConfig argument cannot be empty`);
// to split backslash and forward slash use: .split(/\\|\//)
const backslash = /\\/,
path = this.executableFilename.split(backslash);
const runCommand = `-c`,
diskDriveC = `C:`,
path = this.executableFilename.split(/\\|\//);
diskDriveC = `C:`;
// dosbox mount points (dos drive letters)
for (const file of this.filesToMount) {
if (`drive` in file)
@ -379,11 +379,6 @@ window.Module = null;
`mount ${file.drive} /dos${file.mountpoint}`
);
}
// dosbox default drive letter
this.commandLine.push(
runCommand,
/^[a-zA-Z]:$/.test(path[0]) ? path.shift() : diskDriveC
);
// Load any operating system drivers that are not natively supplied by DOSBox.
// These must be loaded after the emulated drives are mounted.
// And after the environment PATH to the drivers have been set in the
@ -397,23 +392,45 @@ window.Module = null;
if (urlParams.get(`dosutils`) === `true`)
this.commandLine.push(loadConfig, `/dos/s/utils.con`);
// some programs don't run correctly unless the current active directory is root
// pop() removes the last element from path.
let executable = path.pop();
if (path && path.length) {
const newPath = path.toString().replace(`,`, `\\`);
console.log(`Execute path "${newPath}"`);
this.commandLine.push(runCommand, `CD ${newPath}`);
const suffix = -1;
let newPath = path.toString().replace(`,`, `\\`);
newPath = newPath.split(`\\`).slice(0, suffix).join(`\\`);
if (newPath !== ``) {
console.log(`Execute path "${newPath}"`);
this.commandLine.push(runCommand, `CD ${newPath}`);
}
}
// dosbox default drive letter
this.commandLine.push(
runCommand,
/^[a-zA-Z]:$/.test(path[0]) ? path.shift() : diskDriveC
);
// do not automatically run the program executable
if (
urlParams.get(`dosautorun`) === `false` ||
this.executableFilename === ``
) {
this.commandLine.push(runCommand, `U:\\ALIAS\\WELCOME.BAT`);
return;
}
// handle multiple commands (chained) using && separators
let command = path.pop();
const chainCmds = command.split(`&&`);
if (chainCmds.length > 1) {
for (const cmd of chainCmds) {
this.commandLine.push(runCommand, cmd);
}
return;
}
// automatically run the program executable
if (urlParams.get(`dosautorun`) === `false`) return;
// hack to implement program options
executable = executable.replace(` :`, ` /`);
this.verbose = `Will execute \`${executable}\` ${this.verbose}`;
this.commandLine.push(runCommand, executable);
if (executable.trim().length) {
command = command.replace(` :`, ` /`);
this.verbose = `Will execute \`${command}\` ${this.verbose}`;
this.commandLine.push(runCommand, command);
if (command.trim().length) {
// an exit comment to display after executable program is complete
const print = `@echo `,
exitComment = `${print}${executable} has finished.`;
exitComment = `${print}${command} has finished.`;
this.commandLine.push(runCommand, exitComment);
}
}
@ -1094,6 +1111,8 @@ window.Module = null;
img.classList.add(`dosee-crisp-render`);
img.setAttribute(`id`, `doseeSplashImg`);
img.setAttribute(`alt`, `DOSee logo`);
img.setAttribute(`width`, `180`);
img.setAttribute(`height`, `180`);
splash.splashElt.append(img);
};
const title = () => {

View File

@ -11,6 +11,33 @@ if (`serviceWorker` in navigator) {
.register(`/sw.js`)
.then((registration) => {
console.log(`DOSee service worker registered: ${registration.scope}`);
// optional, reload the service worker to destroy the browser cache
const update = document.getElementById(`updateDOSeeSW`);
if (update !== null) {
update.addEventListener(
`click`,
() => {
console.info(
`DOSee remove and reregister service worker`,
registration
);
registration
.unregister()
.then(() => {
const oneSec = 500;
setTimeout(() => {
location.reload();
}, oneSec);
})
.catch(function (error) {
console.log(
`DOSee could not unregister, the host server maybe offline?\n${error}`
);
});
},
false
);
}
})
.catch((err) => {
console.log(`DOSee service worker registration failed: ${err}`);

View File

@ -4,14 +4,13 @@ importScripts(`/js/workbox-sw.js`);
if (!workbox) {
console.warn(`Failed to load Workbox service worker library`);
} else {
console.log(`Loaded Workbox v5 service worker library`);
console.log(`Loaded Workbox v6 service worker library`);
workbox.precaching.precacheAndRoute(self.__WB_MANIFEST);
workbox.routing.registerRoute(/(.*)article(.*)\.html/, (args) => {
const notFound = 404;
return articleHandler.handle(args).then((response) => {
if (!response) return caches.match(`offline.html`);
if (response.status === 404) return caches.match(`404.html`);
if (response.status === notFound) return caches.match(`404.html`);
return response;
});
});