For part two of WebOS I wanted a few more actual features, not just more ways to annoy you, so there’s three new things, one being a lil guy.
First up, there’s a terminal now. It’s a proper little retro shell, and like everything else in RandOS it rerolls itself every time you open it: new prompt, new monospace font, new ink colour (sometimes that classic phosphor green, sometimes it borrows the desktop’s accent). It’s got the normal stuff, help and echo and whoami and fortune, but the fun part is it can actually drive the OS. you can type apps to see everything installed, open paint to launch it, windows to list what’s open, close all to nuke them and it keeps no secrets, everything’s right there in help. That includes the dumb stuff like matrix drops digital rain over the window, hack runs a fake “access granted” intrusion sequence, glitch shudders the whole thing, panic fakes a kernel panic with a red flash, party throws confetti. and boo. We don’t talk about boo…
The second thing is trophies. There’s an achievements system wired through the whole os now, backed by localStorage so they actually stick between visits, and a little toast slides in when you unlock one. there’s a trophies app to see what you’ve got and what you’re missing. you earn them by doing the things, surviving the backrooms, winning five quick-time events, opening every app, poking the gremlin, finding the secret terminal command. it quietly ties all the scattered easter eggs together into something you can actually see you found.
And then the gremlin. He started this round as a small critter that scurried in and shoved your desktop icons around. He makes little noises coming and going. and the main event: he poses a riddle. four choices, two tries and you cannot get rid of him any other way. Clicking him just gets you a hiss. No waiting him out either, he’ll stand there until you answer. Guess right and he shrieks and flees, misses both tries and he slinks off muttering. He also shows up a little more often than before, because of course he does..
Update time. I renamed it to Jurasasphere and made the globe actually look alive with real NASA earth texture, stars behind it, a glowing atmosphere. Before it was a black ball floating in a black void, not ideal.
Every fossil record fills itself in from Wikipedia now, so you get a real photo and a normal-English description. Added a button that says the dino’s name out loud (half of them are unpronounceable) plus a hand-drawn sketch of how big it was next to a 1.8m person.
The whole scene reskins to wherever you dug: jungle, desert, polar or plains. And each one actually moves. Snow drifts in the polar one, heat shimmers in the desert, grass sways on the plains. All of it shuts off if you’ve got reduced-motion on.
Also found one bug where the close button just wouldn’t close. Turned out an invisible scroll layer was sitting on top of it eating every click. Fixed it, and made Escape close the panel too.
New stuff to mess with: a surprise me button, shareable links (every record has its own URL), search autocomplete, a near me button that flies to your closest dig, a day/night toggle, and a time scrubber that rewinds the map to one moment in the Mesozoic.
I made Jurassphere, a website with a 3D globe you can spin to explore real dinosaur fossil sites, sort of like Google Earth but for dinosaurs.
For the globe I used a JavaScript library called globe.gl. Then I hooked it up to the Paleobiology Database, a real public science API, so the markers are actual dig sites. There are over 400 of them. Click one and a panel slides in with the dinosaur’s name, its time period, the coordinates, and where it was found.
I also added a backup list of 15 famous dinosaurs in case the API ever goes down, so the site never ends up empty.
I added a filter for the three main periods, a search box that flies the camera to whatever dinosaur you type, an intro animation, and background sound you can turn on or off.
It’s plain HTML, CSS, and JavaScript with no framework. I wrote tests for the data code, and it runs on GitHub Pages: https://hpeen.github.io/Jurassphere/
Back from vacation, and the app is finally usable! Better yet, there is a live demo now, so you can poke at the overlay in your browser without installing a thing. Quick runthrough of what changed.
You can add any game you want now. This is the big one, you can point Meister at whatever game you play. Add a game, hand it a name, a wiki address, and the game’s .exe, and the overlay switches to it the moment you launch. Under the hood every guide, chat, and setting got tagged with the game it belongs to, so nothing bleeds between them. Minecraft is still around as the founding test game, seeded on first run, but it is just one row in the ledger now instead of the whole world. I kicked the tires on the new path with Subnautica, and it took.
A game you just added has no offline guides, and making you download an entire wiki before your first question is a rude way to say hello. So Meister does not. Ask about a game it has nothing on and it grabs the relevant wiki pages right then and answers from those. The big download is now a thing you do for full offline coverage, not a toll you pay to get started.What if the guides are empty and the wiki does not have the page either? Last resort: a plain web search. Local guides first, then the live wiki, then the open web. I built it on Brave’s API, got it humming, then realized I had quietly made the app need an API key just to function… swapped Brave for DuckDuckGo, which needs no key. That one change settled the app’s whole character: it works online the second you open it, and earns an offline mode once you download guides.
Almost every game wiki lives on Fandom, and I had built the fetch path against minecraft.wiki, which has a tidy extension that hands you clean article text. Fandom does not have it. So for every Fandom game the fetch ran, reported success, and stored exactly zero articles. Subnautica came back empty every single time and nothing was failing, which is the worst kind of bug. The fix was to sniff whether a wiki has that extension and, when it does not, ask for the rendered page and yank the readable text out of the HTML myself. Subnautica started returning real articles. 👍
For three milestones “Meister Guide” meant a folder of Python you ran from a terminal. Now it is a single Windows .exe you double-click, fonts and database and all. But the .exe is Windows-only and asks you to trust a download, which is a lot for someone who just wants a look. So I built a browser version, the same walnut-and-brass overlay, a working wiki reader, the game switcher, and Ask Meister streaming pre-baked answers with their sources, all from one HTML file with no backend and no key. It ships with Minecraft and Subnautica so you can feel the game switch yourself.
Picking up from where we left off, I ended on a list of things I knew were broken or missing. Here is me crossing them off.💔🥀
Phase 1
I’d said “Wolf” and “Redstone” weren’t in the offline database and treated it like a search bug. It wasn’t. Those pages are redirects, signposts that say “you meant the Canine article,” and my scraper skipped every signpost. The content existed, I just never saved the names people type. Now it walks the redirects and folds those names into search, and plurals work too, so “creepers” finds “Creeper.”
Phase 2
Added Claude as an alternative to the local model.Cheap to do, because the chat code already streamed from “a model,” so I made it stop caring which one. Offline stayed the default, opt-in only.
Phase 3
The Settings tab had said “coming later” since the previous Phase 1 last log. Made it real: pick your backend, paste a Claude key, choose a model, rebind the hotkey. Change a setting, hit save, and it switches brains on the spot.
Phase 4
The reversal. I’d shipped local-as-default for privacy, then actually used it: the local answers were slow and the offline dump is shallow. So I flipped it. The default is now “Auto,” which reaches for Claude first if you’ve given it a key and stays fully local if you haven’t.
Phase 5
For ten phases Meister wore work clothes. I finally gave it the carpenter’s-journal face: a walnut panel and a leather spine with stitching and brass studs, painted in code so they stay sharp and tweakable. The window stopped floating and docks to a screen edge, drag it across and it snaps and mirrors so the spine faces your game. Three fonts, bundled for offline. A status pill that goes green when it spots your game, honest tab names, copy that tells the truth about local vs online. This was just the frame, the tab contents get their redesign next.
Next up I’m adding more games to the roster, trying to make the offline model better by filtering the articles better cause as it is now it’s pretty bad and a few more tweaks. I’m close to shipping I hope </3
One big devlog, because I kept meaning to post these and never did. Here is the whole thing.
I wanted a companion that floats over Minecraft like Steam’s overlay, but useful: the whole wiki offline, plus an assistant that answers from those guides without you ever tabbing out or going online. No account, no cloud, nothing leaving my machine. Windows, Python, PySide6, styled like a carpenter’s guild journal. Five phases, and every one had a moment where I was sure it worked and was wrong.
Phase 1 - the window
The hard part every tutorial skips: getting a window to sit on top of a fullscreen game without the OS slapping it down. Frameless plus always-on-top plus a translucent background did it. The hotkey was spicier, so I called the raw Windows RegisterHotKey through ctypes. It registers at the OS level, so even when a game hogs the keyboard, Alt+Insert still reaches me.
Phase 2 - a memory.
It forgot everything on close, bad for an app whose job is remembering. So: a SQLite database for games, guides, chat, settings. Then I taught it to detect when you are playing and hit the trap: the launcher keeps the process alive after you close the window, so it insisted you were mid-game forever.Fixed by watching the real game, and Java Minecraft hides as a generic javaw.exe,so I only count it when its command line mentions minecraft.
Phase 3 - the wiki.
Scraped all ~17,000 articles into a local search database.My first version would have taken five hours. The mistake was pausing a full second between requests, times sixteen thousand, that is an afternoon. I measured it, dropped the wasteful settings, used the API’s own politeness flag, and got it to forty minutes. Stores compressed plain text, resumes if interrupted.
Phase 4 - the voice.
The AI, running locally through Ollama. You ask, it finds the relevant guide passages, hands them to the model, and streams an answer with clickable sources. Private and grounded. Then a code review humbled me and caught three bugs: a leaking connection, half-finished answers being saved, and a crash-on-quit. Fixed all three.
Phase 5 - the aim.
The answers were dumb, and it was not the AI. I traced what the search fed it for “how do creepers work?”: three Bedrock beta changelogs. The real Creeper article lost. I was throwing the whole question into the keyword index, filler words and all, and changelogs repeat those words constantly. So now I strip the question to what matters, boost pages whose title matches, and bury the junk. I also made it pick the strongest model you have installed instead of the smallest. And the last humbling: pages like “Wolf” and “Redstone” are not in my database at all, because they are redirects my scraper skipped. Written down for next time.
Five phases. An overlay that floats over fullscreen Minecraft, a hotkey that survives the game stealing your keyboard, the whole wiki offline, and a private AI that finally points at the right shelf before it opens its mouth. Next up are the fixes I mentioned earlier, an UI overhaul and an overall bettering of the code as it’s pretty rough.
I’m going to sleep now gn o7
added some more apps! there are some basic ones like paint and notepad … just a little more chaotic :D
some other apps I added to be on theme are a random quote/joke generator, a sound board, a suggestion box and a wheel of names (pretty tuff).
to add to the CHAOS there are now quick-time events that close all your windows if you fail to complete them :P
P.S. don’t spam the shuffle button (might noclip)
spent some time on this, but I upped the UI. everything has random effects / themes, the wallpapers are full of movement and the cursor is a different sprite each shuffle.
also I added a boot animation with a jack in the box…neat. there’s a chaos shuffle event now that happens every ~3 mins. you get a 3 sec heads up and then EVERYTHING gets randomized, so gl trying to do something lol
next up: make the OS more interactive with more apps and quick-time events (kinda tuff). Also might want to add other basic apps… ;)
so my first stardust project is a webos, but making a normal one sounded boring so i made randos. the whole gimmick: everything is randomized. open the calculator and it looks one way, close it, open it again and it’s totally different colors, different font, different vibe. nothing looks the same twice.
right now it’s got the basics. windows you can drag around, a taskbar, and a handful of apps: a calculator that actually does math, a clock that’s sometimes digital, sometimes an analog dial, sometimes just spells the time out in words, a calendar, and a randomizer that flips coins, rolls dice, or spits out a number from 1 to 100. plus a shuffle button that re-rolls the entire desktop theme whenever you feel like it.
it’s pretty rough rn ngl. the ui is a little janky and the background is just a flat gradient. but it runs, it’s online, and there’s no login so anyone can poke at it
at https://hpeen.github.io/RandOS/.
next up: make it look less rough, give the background some actual patterns, and add a couple things i’ve been cooking (a lot more chaotic </3).