My very own WebOS
A week ago I released v2.0. Now here’s v3.0 “Synthwave Edition.”
A complete desktop OS simulation that runs in a single HTML file, built with vanilla JavaScript. No build step, no npm, no Webpack — just open it in your browser and it works.
What’s changed since v2.0?
The numbers speak for themselves:
13 apps → 30+ apps (Calendar, Weather, Music Player, Mail, Chat, Notes, System Monitor, Password Vault, Tetris, Pong, Breakout, + Doom-Like FPS)
3 themes → 6 phosphor themes (Pink, Purple, White, and more)
4 wallpapers → 10 animated wallpapers (Rain, Snow, Fire, VHS, Galaxy, 3D Grid…)
Added AES-GCM encryption (Web Crypto API) for the Password Vault
IndexedDB instead of localStorage’s 5MB limit (50MB+)
PWA — installable as a standalone app, works offline
Voice commands — “open terminal,” “shutdown,” “lock”…
Window snap zones (Windows-style drag to edge)
Favorite feature: Game Launcher
I also built in an Unreal Engine integration system. If you have a WebGL build of your game, drop in the .wasm + .js + .data files, and the launcher automatically handles highscores, system requirements, and the gallery.
The architecture
14 logical modules, all in one file:
Bus — Pub/sub event system
IDB — IndexedDB wrapper
Crypto — Web Crypto API
Kernel — Luna Service Bus IPC emulation
FS — Virtual filesystem (recycle bin, drag & drop)
OS — Orchestrator (boot, login, windows)
…and 8 more
~3,500 lines of code. ~85KB. 0 dependencies.
What I fixed
Six significant bugs found during the v2.0 review:
Settings Green option was always “selected” (typo in the code)
Browser app’s inline onclick=“navigator()” — this was calling the navigator Web API, not a function (classic mistake)
Music Player beat interval cleanup memory leak
Tetris piece null reference on game over
Voice listener leak through the Bus
60fps mousemove → throttled to 50ms (60% less CPU usage)
v3.1 roadmap
Multiplayer over WebRTC (Snake, Pong, Doom)
Real audio file playback in the Music Player
Drag-from-desktop to taskbar (pin apps)
Undo/redo in the text editor
Gamepad API support for all games
Plugin system for community apps
Try it out
mateszko090214.github.io/WebOS
Full code, docs, and roadmap are up on GitHub. If you like it, drop a star!
“Bringing the 80s back to your browser, one pixel at a time.”
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.