Home

Awesome

98.js

Discord GitHub Repo stars

A web based Windows 98 desktop remake.

Includes:

Features:

Try it out

ENTER  WINDOWS 98 体験へようこそ

License

Not yet licensed. This project is currently source-available / shared source, but not open source.

Related Projects

Apps that it would be nice to integrate:

Other online operating systems / web desktops:

Name & LinkVague DescriptionRepo & LicenseChat
 Rahul.ioanother Windows 98 remakerepo here - MIT license
 Windows 93a "fictional version of Windows"(not open source currently)Discord
🏡 ZineOSemojis everywhererepo here - MIT licenseDiscord
 EmuOSemulator-focused Win9X desktoprepo here - shared sourceDiscord
 OS.jsa more serious web desktoprepo here - simplified BSD licenseGitter
 Friendanother serious onerepo here - different licenses for different parts
 CloudDeskanother serious one(explicitly not open source)
 AaronOSinteresting aestheticrepo here - shared sourceDiscord
 Web DesktopWindows 10 like "startpage"
 SystemWindows 10 like thing
 WinXPWindows XPrepo here - MIT license
Windows 98 - Packard BelleWindows 98repo here - shared source
X-WebDesktop-VueWindows 7repo here - MIT license
 vue win3.1Windows 3.1repo here - shared source
 VirtualDesktopScreenshot flows, several OSes
GUIdebookScreenshots, several OSes

Plus many more web desktops on Wikipedia, awesome-web-desktops, and awesome-OS.

Libraries:

Also:

Contributing

See CONTRIBUTING

Development Setup

When pulling changes from git, run npm install again in case there are any new or updated dependencies. (If you know package-lock.json hasn't changed, you shouldn't need to do this.)

Some dependencies are versioned with npm, but pulled into the repo with npm run pull-libs

Quality Assurance

Tests are written with Playwright. Spell checking is done with Cspell.

npm test
npm run lint

Debug tests or run them when code changes using the Playwright UI:

npx playwright test --ui

Quickly add tests using the code generator:

# Note: this runs the server, and currently leaves it running when closing the browser.
# Could use `start-server-and-test` to fix this, or see if there's an option in `npm-run-all`'s `run-p` command.
# (There's no option in `playwright codegen --help` to run the server, even though it's configured in `playwright.config.js`)
npm run test-codegen

There are also VS Code extensions for Playwright and Cspell (Code Spell Checker).

Managing Subrepos

To update subrepos, or push changes to them, install git-subrepo. You don't need this tool to clone the project and get up and running, as subrepos are just normal subdirectories with a .gitrepo metadata file.

Note that the metadata file references specific commit hashes, including between repositories, so it's best to avoid rebasing when subrepo updates are involved, i.e. once you do a subrepo command, it makes a commit, and you should leave it (and earlier commits) alone, and you should leave commits in the subrepo alone, before and up to any commits referenced by the containing project.

When making changes to a subrepo within the containing project: I'd recommend phrasing commit messages to apply to the subrepo, primarily, rather than the containing project, so that when you push the changes to the subrepo, the commit message will be appropriate.

If you so much as edit the commit message for a git subrepo pushed commit, you'd have to update the .gitrepo metadata file manually in the containing project, OR you could drop the commit you pushed and the git subrepo push commit (which updates the metadata) and do git subrepo pull instead (which btw gives you an option to rename the commit; and I think renaming that commit would be safe after the fact anyways as long as it's the last commit and not pushed).

TODO

See TODO