Skip to content

Latest commit

 

History

History
145 lines (105 loc) · 13.1 KB

README.md

File metadata and controls

145 lines (105 loc) · 13.1 KB

Discord GitHub Repo stars

A web based Windows 98 desktop remake.

Includes:

Features:

  • Drop files onto the desktop, and they'll be stored in a virtual filesystem
  • Load Windows themes! Many are included in the Themes folder on the desktop.
  • Easter eggs (try a famous cheat code 😉)
  • Meticulous detail in many areas (although there's obviously lots "missing")
  • Help > Help Topics in Paint, Sound Recorder, Notepad, and Minesweeper
  • You can add the site to your homescreen on mobile

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 & 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

  • Install Git if you don't already have it.
  • Install Node.js if you don't already have it.
  • Clone the repository.
  • Open up a terminal / command prompt in the project directory, and run npm install to install dependencies.
  • Install one global dependency: npm i -g [email protected] (this will be simplified in the future; I'm using two different versions of BrowserFS for some reason)
  • Run npm start to start up a live-reloading development web server.

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