forked from mirrors/win98-web
Personal biography presented as a pixel-perfect recreation of a Windows 98 desktop.
https://maws.lol/bio
- JavaScript 88.2%
- HTML 6%
- CSS 5.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .jsdos | ||
| e2e | ||
| public | ||
| scripts | ||
| src | ||
| .gitignore | ||
| 404.html | ||
| AGENTS.md | ||
| bun.lock | ||
| CHANGELOG.md | ||
| CREDITS.md | ||
| index.html | ||
| LICENSE | ||
| package.json | ||
| playwright.config.js | ||
| README.md | ||
| vite.config.js | ||
win98-bio
Personal biography landing page. Fork of azayrahmad/win98-web, a vanilla-JS Windows 98 desktop recreation.
Behavior
Boots directly to the desktop and auto-opens a Bio window, centered, on load. The rest of the shell (windows, taskbar, Start menu, apps, games) is unmodified and usable underneath.
Changes from upstream
src/shell/bio/— Bio window app (name, title, interests, links), unconditionally auto-launched on boot bysrc/shell/desktop/desktop.js.- Removed apps: Agent/Clippy (called a third party's own resume-chat backend), Winamp/Webamp (plus an 11MB unused bundled music folder riding along with it), Buy Me a Coffee and Report a Bug (both solicited support/reports for the original author — Report a Bug also silently forwarded submissions to his backend), SimCity 2000 (never actually worked; no app class was ever wired up for it), and Network Neighborhood.
- Removed the full-screen "MS-DOS mode" boot option and its shutdown-dialog entry. The normal windowed MS-DOS Prompt app is unaffected.
- Internet Explorer's default home page no longer points at the original author's personal site. It's
msn.comnow — the real IE4/5 factory default — routed through the app's existing real-URL pipeline instead of a special-cased fake domain. - Removed the
/win98-web/<profile>URL routing system (it existed solely to serve the original author's own resume PDF at a magic URL) and the rootabout.htmlmarketing/SEO page (his contact info, his GitHub links). - Notepad dropped its bolted-on "Code" feature (language modes, live syntax highlighting, Prettier formatting, Markdown preview, "Copy with Formatting") — the real Windows 98 Notepad never had any of it, and it was the source of the invisible-textarea/highlight-overlay bugs below.
public/vendor/highlightjs/andpublic/vendor/prettier/(~1.2MB) removed along with it. - Bug fixes not present upstream:
- A missing game/asset request could recurse the entire desktop inside a small game iframe if the host's 404 fallback served the app itself back.
- Shortcuts to a removed app no longer linger as broken desktop icons across visits (ZenFS persists in IndexedDB, so stale shortcuts self-prune on boot now instead of requiring a storage wipe).
- Window drags now capture the pointer, so dragging a window across a game iframe no longer loses the drag halfway through.
- Paint's window-blur handler no longer aborts every other window's titlebar drag once Paint has been opened (it fired a synthetic global
pointerupunconditionally; now only when Paint itself is mid-stroke). - Paint's window can be minimized again (an app stylesheet had
display: flex !importanton the window root, which jQuery's hide/show couldn't override). - Boot no longer holds the desktop hostage behind a 2s "let the splash logo show for a minimum duration" timer. That delay let the boot log's
xtermterminal keep its hidden helper textarea focused, silently swallowing keystrokes (e.g. Backspace) meant for whatever the visitor had actually clicked into. - A failed
/C:IndexedDB mount (a real, if rare, browser storage error) used to abort every default desktop-icon/shortcut write for that boot, making the desktop look wiped. It now retries once, then falls back to a temporary in-memory drive so the desktop still populates. - Notepad no longer routes text through an invisible-textarea-behind-a-fake-highlight-overlay hack; it's a real, ordinary
<textarea>now, so drag-selection and Backspace behave normally. - Help > About in every app (Notepad, WordPad, App Maker, Image Viewer, Image Resizer, Media Player, PDF Viewer) opened a native browser
alert()instead of an in-universe window; all now use the same themed dialog as the rest of the shell.
- Removed the "Initializing Windows 98..." boot placeholder and the CRT "power-on" squash-then-expand screen animation — neither is authentic Win98 behavior, and if boot fails, it fails.
- No social-preview meta tags (
<meta name="description">/author, OG, Twitter) — deliberate, so Discord/etc. don't show an embed for this personal site. - All third-party libraries vendored under
public/vendor/instead of loaded from a CDN. - Vite
base: "./"— works at any path (domain root, reverse-proxy subpath), not tied to a GitHub Pages subpath. - Space Cadet Pinball rebuilt from a patched fork fixing a music-toggle bug in the upstream WASM build.
Development
bun install
bun run dev
Build
bun run build # outputs to dist/
bun run preview # serve dist/ locally
Static output. No server-side code.
Structure
src/system/— boot sequence, window manager, app manager, ZenFS virtual filesystem.src/shell/— desktop, taskbar, Start menu, Explorer,bio/.src/apps/— individual apps, auto-discovered byscripts/generate_registry.js.public/vendor/— vendored third-party libraries.public/games/— bundled game builds (mostly Emscripten ports).
See AGENTS.md for app registration, icon system, and theming details.
Applications
Games, media, productivity, and system apps inherited from upstream. Full list with versions and authors: CREDITS.md.
License
MIT. Windows artwork, icons, and sounds belong to Microsoft.
