1j01 / 98

đŸ’ŋ Web-based Windows 98 desktop recreation █████▓█▓▓▒▓▒▒░▒░░░🗕ī¸ŽđŸ——ī¸ŽđŸ—™ī¸Ž
https://98.js.org
1.18k stars 190 forks source link
classic desktop emulator html javascript operating-system os remake retro web-desktop windows windows-95 windows-98

98.js

Discord GitHub Repo stars

A web based Windows 98 desktop remake.

Includes:

Features:

Try it out

īŧĨīŧŽīŧ´īŧĨīŧ˛ã€€ã€€īŧˇīŧŠīŧŽīŧ¤īŧ¯īŧˇīŧŗ īŧ™īŧ˜ã€€äŊ“験へようこそ

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 & Link Vague Description Repo & License Chat
 Rahul.io another Windows 98 remake repo here - MIT license
 Windows 93 a "fictional version of Windows" (not open source currently) Discord
🏡 ZineOS emojis everywhere repo here - MIT license Discord
 EmuOS emulator-focused Win9X desktop repo here - shared source Discord
 OS.js a more serious web desktop repo here - simplified BSD license Gitter
 Friend another serious one repo here - different licenses for different parts
 CloudDesk another serious one (explicitly not open source)
 AaronOS interesting aesthetic repo here - shared source Discord
 Web Desktop Windows 10 like "startpage"
 System Windows 10 like thing
 WinXP Windows XP repo here - MIT license
Windows 98 - Packard Belle Windows 98 repo here - shared source
X-WebDesktop-Vue Windows 7 repo here - MIT license
 vue win3.1 Windows 3.1 repo here - shared source
 VirtualDesktop Screenshot flows, several OSes
GUIdebook Screenshots, 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