{"id":13402819,"url":"https://github.com/1j01/98","last_synced_at":"2025-05-16T05:00:28.498Z","repository":{"id":26545999,"uuid":"29999505","full_name":"1j01/98","owner":"1j01","description":"💿 Web-based Windows 98 desktop recreation █████▓█▓▓▒▓▒▒░▒░░░🗕︎🗗︎🗙︎","archived":false,"fork":false,"pushed_at":"2024-07-04T00:57:56.000Z","size":77216,"stargazers_count":1193,"open_issues_count":53,"forks_count":189,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-01-10T23:32:02.480Z","etag":null,"topics":["classic","desktop","emulator","html","javascript","operating-system","os","remake","retro","web-desktop","windows","windows-95","windows-98"],"latest_commit_sha":null,"homepage":"https://98.js.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1j01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-01-29T02:22:42.000Z","updated_at":"2025-01-10T00:35:59.000Z","dependencies_parsed_at":"2022-07-13T17:20:42.548Z","dependency_job_id":"a9596354-d1d8-430b-b3aa-e93e5f1319f9","html_url":"https://github.com/1j01/98","commit_stats":{"total_commits":852,"total_committers":2,"mean_commits":426.0,"dds":"0.0023474178403756207","last_synced_commit":"361bd759a6d9b71d0fad9e479840598dc0128bb6"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2F98","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2F98/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2F98/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2F98/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1j01","download_url":"https://codeload.github.com/1j01/98/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471028,"owners_count":22076582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classic","desktop","emulator","html","javascript","operating-system","os","remake","retro","web-desktop","windows","windows-95","windows-98"],"created_at":"2024-07-30T19:01:21.291Z","updated_at":"2025-05-16T05:00:28.424Z","avatar_url":"https://github.com/1j01.png","language":"JavaScript","readme":"\n# ![](images/icons/windows-update-32x32.png) [98.js](https://98.js.org)\n\n[![Discord](https://img.shields.io/discord/1141194608525713478)](https://discord.com/invite/SyFweYjTKx)\n[![GitHub Repo stars](https://img.shields.io/github/stars/1j01/98)](https://github.com/1j01/98/stargazers)\n\nA web based Windows 98 desktop remake.\n\nIncludes:\n* ![](images/icons/notepad-16x16.png) Notepad ([separate README](programs/notepad/README.md))\n* ![](images/icons/speaker-16x16.png) Sound Recorder ([separate README](programs/sound-recorder/README.md))\n* ![](images/icons/paint-16x16.png) Paint ([separate repository](https://github.com/1j01/jspaint))\n* ![](images/icons/calculator-16x16.png) Calculator ([separate README](programs/calculator/README.md))\n* ![](images/icons/pipes-16x16.png) 3D Pipes ([separate repository](https://github.com/1j01/pipes))\n* ![](images/icons/pipes-16x16.png) 3D FlowerBox ([original repository](https://github.com/kevin-shannon/3D-FlowerBox)) by [Kevin Shannon](https://github.com/kevin-shannon)\n* ![](images/icons/minesweeper-16x16.png) Minesweeper ([separate README](programs/minesweeper/README.md); [original repository](https://github.com/ziebelje/minesweeper)) by [Jon Ziebell](https://github.com/ziebelje/)\n* ![](images/icons/solitaire-16x16.png) Solitaire ([original repository](https://github.com/rjanjic/js-solitaire)) by [Radovan Janjic](https://github.com/rjanjic)\n* ![](images/icons/pinball-16x16.png) Pinball ([original repository](https://github.com/alula/SpaceCadetPinball)) ported by [Muzychenko Andrey](https://github.com/k4zmu2a) and [Alula](https://github.com/alula)\n* ![](images/icons/winamp2-16x16.png) Winamp 2.9 ([separate README](programs/winamp/README.md); [original repository](https://github.com/captbaritone/webamp)) by [Jordan Eldredge](https://jordaneldredge.com/)\n* ![](images/icons/folder-open-16x16.png) Windows Explorer / ![](images/icons/internet-explorer-16x16.png) Internet Explorer ([separate README](programs/explorer/README.md))\n* ![](images/icons/chm-16x16.png) Help Viewer\n* 📎 Clippy ([original repository](https://github.com/smore-inc/clippy.js))\n\nFeatures:\n* Drop files onto the desktop, and they'll be stored in a virtual filesystem\n* Load Windows themes! Many are included in the Themes folder on the desktop.\n* Easter eggs (try a famous cheat code 😉)\n* Meticulous detail in many areas (although there's obviously lots \"missing\")\n* **Help \u003e Help Topics** in Paint, Sound Recorder, Notepad, and Minesweeper\n* You can add the site to your homescreen on mobile\n\n## Try it out\n\n[ ＥＮＴＥＲ　![](images/icons/windows-update-16x16.png)　ＷＩＮＤＯＷＳ　９８　体験へようこそ](https://98.js.org/)\n\n[![](images/3d.jpg)](https://98.js.org/)\n\n## License\n\nNot yet licensed.\nThis project is currently [source-available / shared source](https://en.wikipedia.org/wiki/Source-available_software), but not [open source](https://en.wikipedia.org/wiki/Open-source_software).\n\n## Related Projects\n\nApps that it would be nice to integrate:\n* [![](images/icons/settings-16x16.png) Windows Classic theme designer](https://github.com/tpenguinltg/winclassic)\n* [![](images/icons/media-player-16x16.png) Win95 Media Player](https://benwiley4000.github.io/win95-media-player/)\n\nOther online operating systems / web desktops:\n\n| Name \u0026 Link                                                                                           | Vague Description                | Repo \u0026 License                                                                                                                                         | Chat                                    |\n|-------------------------------------------------------------------------------------------------------|----------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------|\n| [![](images/start.png)\u0026nbsp;Rahul.io](https://rahul.io/)                                              | another Windows 98 remake        | [repo here](https://github.com/lolstring/window98-html-css-js) - MIT license                                                                           |                                         |\n| [![](images/icons/windows-93-16x16.png)\u0026nbsp;Windows\u0026nbsp;93](https://www.windows93.net/)             | a \"fictional version of Windows\" | (not open source currently)                                                                                                                            | [Discord](https://discord.gg/vAmMu7q)   |\n| [🏡 ZineOS](https://whimsy.space/)                                                                     | emojis everywhere                | [repo here](https://github.com/STRd6/zine) - MIT license                                                                                               | [Discord](https://discord.gg/tUj4zYA)   |\n| [![](images/icons/emuos-16x16.png)\u0026nbsp;EmuOS](https://emupedia.net/beta/emuos/)                      | emulator-focused Win9X desktop   | [repo here](https://github.com/Emupedia/emupedia.github.io) - shared source                                                                            | [Discord](https://discord.gg/5u4VR9v)   |\n| [![](images/icons/os-js-16x16.png)\u0026nbsp;OS.js](https://www.os-js.org/)                                | a more serious web desktop       | [repo here](https://github.com/os-js/OS.js) - simplified BSD license                                                                                   | [Gitter](https://gitter.im/os-js/OS.js) |\n| [![](images/icons/friend-16x16.png)\u0026nbsp;Friend](https://friendup.cloud/)                             | another serious one              | [repo here](https://github.com/FriendUPCloud/friendup) - different licenses for different [parts](https://github.com/FriendUPCloud/friendup#licensing) |                                         |\n| [![](images/icons/clouddesk-16x16.png)\u0026nbsp;CloudDesk](http://altaica.altervista.org/)                | another serious one              | (explicitly not open source)                                                                                                                           |                                         |\n| [![](images/icons/aaronos-16x16.png)\u0026nbsp;AaronOS](https://aaronos.dev/AaronOS/aosBeta.php)           | interesting aesthetic            | [repo here](https://github.com/MineAndCraft12/AaronOS) - shared source                                                                                 | [Discord](https://discord.gg/eWDac7E)   |\n| [![](images/icons/webdesktop-16x16.png)\u0026nbsp;Web\u0026nbsp;Desktop](https://webdesktop.net/)               | Windows 10 like \"startpage\"      |                                                                                                                                                        |                                         |\n| [![](images/icons/system-16x16.png)\u0026nbsp;System](https://system-developer-beta.000webhostapp.com/)    | Windows 10 like thing            |                                                                                                                                                        |                                         |\n| [![](images/icons/winxp-doge-16x16.png)\u0026nbsp;WinXP](https://winxp.now.sh/)                            | Windows XP                       | [repo here](https://github.com/ShizukuIchi/winXP/) - MIT license                                                                                       |                                         |\n| [Windows 98 - Packard Belle](https://packard-belle.netlify.com/)                                      | Windows 98                       | [repo here](https://github.com/padraigfl/packard-belle-desktop) - shared source                                                                        |                                         |\n| [X-WebDesktop-Vue](http://47.93.49.248/X-WebDesktop-Vue/)                                             | Windows 7                        | [repo here](https://github.com/OXOYO/X-WebDesktop-Vue) - MIT license                                                                                   |                                         |\n| [![](images/icons/vue-win3.1-16x16.png)\u0026nbsp;vue win3.1](https://disjfa.github.io/vue-win-3.1/)       | Windows 3.1                      | [repo here](https://github.com/disjfa/vue-win-3.1) - shared source                                                                                     |                                         |\n| [![](images/icons/virtualdesktop.org-16x16.png)\u0026nbsp;VirtualDesktop](http://virtualdesktop.org/)      | Screenshot flows, several OSes   |                                                                                                                                                        |                                         |\n| [GUIdebook](https://guidebookgallery.org/guis/windows/)                                               | Screenshots, several OSes        |                                                                                                                                                        |                                         |\n\n\nPlus many more [web desktops on Wikipedia](https://en.wikipedia.org/wiki/Web_desktop),\n[awesome-web-desktops](https://github.com/syxanash/awesome-web-desktops),\nand [awesome-OS](https://github.com/zriyans/awesome-OS).\n\nLibraries:\n* [![](images/icons/task-16x16.png) OS-GUI](https://os-gui.js.org), which grew out of this project\n* ![](images/icons/task-16x16.png) [Packard Belle](https://github.com/padraigfl/packard-belle/),\n  [React95](https://github.com/React95/React95/),\n  and another one called [React95](https://github.com/arturbien/React95), with similar goals to OS-GUI\n* [![](images/icons/folder-16x16.png) BrowserFS](https://github.com/jvilk/BrowserFS), a filesystem abstraction library powering 98.js\n\nAlso:\n* [Awesome Atwood's Law](https://github.com/captbaritone/awesome-attwoods-law), a curated list of JavaScript reimplementations, similar to [/r/atwoodslaw/](https://www.reddit.com/r/atwoodslaw/)\n\n## Contributing\n\nSee [CONTRIBUTING](CONTRIBUTING.md)\n\n## Development Setup\n\n- Install [Git](https://git-scm.com/) if you don't already have it.\n- Install [Node.js](https://nodejs.org/) if you don't already have it.\n- [Clone the repository.](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository)\n- Open up a terminal / command prompt in the project directory, and run `npm install` to install dependencies.\n- Install one global dependency: `npm i -g browserfs@2.0.0` (this will be simplified in the future; I'm using two different versions of BrowserFS for some reason)\n- Run `npm start` to start up a live-reloading development web server.\n\nWhen pulling changes from git, run `npm install` again in case there are any new or updated dependencies.\n(If you know `package-lock.json` hasn't changed, you shouldn't need to do this.)\n\nSome dependencies are versioned with npm, but pulled into the repo with `npm run pull-libs`\n\n### Quality Assurance\n\nTests are written with Playwright. Spell checking is done with Cspell.\n\n```\nnpm test\nnpm run lint\n```\n\nDebug tests or run them when code changes using the Playwright UI:\n\n```\nnpx playwright test --ui\n```\n\nQuickly add tests using the code generator:\n\n```\n# Note: this runs the server, and currently leaves it running when closing the browser.\n# Could use `start-server-and-test` to fix this, or see if there's an option in `npm-run-all`'s `run-p` command.\n# (There's no option in `playwright codegen --help` to run the server, even though it's configured in `playwright.config.js`)\nnpm run test-codegen\n```\n\nThere are also VS Code extensions for Playwright and Cspell (Code Spell Checker).\n\n\n### Managing Subrepos\n\nTo update subrepos, or push changes to them, install [git-subrepo](https://github.com/ingydotnet/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.\n\nNote 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.\n\nWhen making changes to a subrepo within the containing project:\nI'd recommend phrasing commit messages to apply to the subrepo, primarily, rather than the containing project,\nso that when you push the changes to the subrepo, the commit message will be appropriate.\n\nIf you so much as edit the commit message for a `git subrepo push`ed commit, you'd have to update the `.gitrepo` metadata file manually in the containing project,\nOR 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).\n\n## TODO\n\nSee [TODO](TODO.md)\n","funding_links":[],"categories":["JavaScript","emulator","\u003cimg src=\"media/icons8-windows-11-48.png\" alt=\"logo\" width=\"36\"/\u003e  WINDOWS","windows","Operating Systems"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2F98","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1j01%2F98","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2F98/lists"}