You are browsing as a guest. Sign up (or log in) to start making projects!

ZtionixOS

  • 6 Devlogs
  • 5 Total hours

This is my very own OS that can be run in the web!

Ship #2

Fake desktop OS in the browser — boot, login, windows, dock, IndexedDB filesystem, and a pile of apps (Files, Terminal, Paint, ZMusic, ZVideo, Writer/Calc/Impress, Browser, Doom, Photo Booth, Task Manager, etc.). No React; apps return DOM and plug into a kernel.

**Proud of:** WebOS2 wave — real Doom (WASM + WAD sound lumps), office-ish apps without fake LibreOffice bookmarks, customizable dock (pin / unpin / drag reorder), and it still feels like *my* OS after the polish pass (VT323, rust accent, square chrome).

**Hard:** Doom’s WASM has no audio API, so SFX come from extracted `doom1.wad` samples on fire/use/menu — not full engine sound. Big media can hit IndexedDB quota. Real LibreOffice can’t run client-side; Writer/Calc/Impress are thin stand-ins.

**Try it:** [https://ztionix-os.vercel.app/](https://ztionix-os.vercel.app/) — boot, hit Enter (no password). Ctrl+K for launcher. Drag dock icons to reorder. Open Doom and click the canvas once for sound. Import a video into ZVideo or snap a Photo Booth pic into `/home/user/Photos`.

  • 2 devlogs
  • 2h
  • 14.70x multiplier
  • 28 Stardust
  • WebOS 2
Try project → See source code →
Open comments for this post

1h 4m 6s logged

Devlog #6 — WebOS2

Devlog #5 was polish and honesty. This one is the opposite problem: the OS felt finished as a demo, not as a place you hang out. So WebOS2 = more apps, denser desktop energy, still client-side, still no React.

Why another wave

After the polish pass, ZtionixOS looked like itself — but the app list was still “Files, Terminal, Paint, music, a snake.” Fine for a fake OS trailer. Not enough if someone actually sits in it for twenty minutes.

I wanted media that isn’t only audio, something office-shaped, a real game, a Task Manager so End Task feels like an OS bit, and a dock you can rearrange instead of hardcoding pinned: true on every new toy.

Also briefly considered Spotify / Jamendo in ZMusic. Spotify needs Premium + their SDK for full tracks. Jamendo’s public test client id is suspended. Dropped both. Local VFS imports stay.

New apps

ZVideo — same idea as ZMusic: import into the VFS, sidebar library, <video controls>. Double-click .mp4 / .webm routes here.

Writer / Calc / Impress — people ask for LibreOffice. Full LibreOffice does not run in a browser without a remote server. I’m not shipping Collabora. So three thin ZtionixOS apps that cover the same jobs: rich text → .html (plus Export .txt), spreadsheet with a formula bar (=SUM(A1:A5), AVERAGE/MIN/MAX/COUNT, =A1+B2), slides with a Present button → .json. Inspired by the LibreOffice suite, not a fake bookmark to libreoffice.org.

Task Manager — open windows as “processes,” fake CPU jitter that wobbles every second, End Task hits windowManager.close. Double-click focuses. Pure OS parody, actually useful when something’s stuck.

Doom — the real shareware game via doom.wasm (jacobenget, GPL-2), canvas blit + keyboard when focused. The WASM has zero audio imports. First pass: synth beeps. Then extracted doom1.wad out of the same binary and play classic lumps (DSPISTOL, DSITMBK, DSSWTCHN…) on fire / use / menu through Web Audio. Mute button in the window. Still not full engine-synced audio (monsters won’t scream from the WASM), but the samples are the real ones. License note under public/doom/.

Photo Booth — webcam, a few filters, countdown snap, mirrored PNG into /home/user/Photos. Tracks stop on window close so the camera LED dies like a grown-up app.

Scientific Calculator — same Calculator app, Scientific toggle: sin/cos/tan (+ inverses), ln/log, √, xʸ, π, e, factorial, DEG/RAD. 67 secret still works.

Dock that isn’t frozen

Pins live in localStorage (ztionixos-dock-pins). Settings → Dock has checkboxes. Right-click a dock icon → pin/unpin. Drag pinned icons to reorder. Running apps that aren’t pinned still show temporarily so you don’t lose the window. Default pin set is curated on purpose — if every new app marks itself pinned the dock becomes a junk drawer.

How it still plugs in

Same kernel pattern as day one: AppManifest, launch() returns DOM, register in kernel.ts, file opens through getAppForPath. No React. Cursor helped move faster on the new apps and the WAD sound glue; I still review and edit everything so it doesn’t read like a template dump.

Honest limits

  • Big videos / audio can hit IndexedDB quota (same as ZMusic always could).
  • Office apps are intentionally thin — not ODF, not Collabora.
  • Doom SFX are real WAD samples on player actions, not full Chocolate Doom audio.
  • Live Vercel won’t show WebOS2 until redeploy.

npm run build and npm test still pass.

What’s next (maybe)

Nothing locked. If I touch it again it’ll probably be small: more Calc formulas, or accepting that Doom sound will never be 1:1 without a different engine.

(photobooth works its just i dont wanna show my face)

0
0
4
Open comments for this post

51m 48s logged

Devlog #5 — polish pass, secrets, and being honest about AI

Got feedback that ZtionixOS wasn’t ready to vote yet. Fair. It still looked a bit too “AI desktop template” and the README felt copy-pasted. So this session was mostly cleanup and personality, not new architecture.

Making it feel less generated

Big CSS pass: dusty blue-gray palette, rust accent, VT323 font, square windows with — □ × controls. Removed Tailwind entirely. Added a dumb comment at the top of dark.css because I genuinely spent too long on colors. Left one Monster joke in there, trimmed the rest.

Went through shell/core files and made the code messier on purpose — for loops instead of .filter(), string concat mixed with templates, nested ifs. Added a few normal comments and a few funny ones.

README rewrite in my own voice, real screenshot (docs/screenshot.png), live demo link fixed to ztionix-os.vercel.app. Removed the chat app for good Redis on Vercel, felt bolted on, everything else is client-side now.

Secrets and dumb stuff

Stuff that was already in but got touched this session:

  • Konami code → party mode (rainbow shell + yellow countdown badge)
  • Triple-click logo → CRT scanlines
  • Ctrl+Shift+S → Snake
  • Terminal secret party / secret pet / snake mention
  • Desktop pet default off now (opt-in via terminal or right-click)

New one: type 67 in Calculator → plays 67.mp3, popup with the Bosnov gif. Tried embedding KLIPY in an iframe first. Zen said no X-Frame-Options. Switched to a local gif in public/gifs/ with a link to open KLIPY in a new tab. Sound works, meme works, no fighting Cloudflare.

Bugs fixed along the way

  • Browser iframe was blank because homepage CSS was covering it — fixed stacking with browser-view--hidden
  • Notes text was unreadable (light on gray) — fixed editor contrast
  • Window drag uses translate3d during move, commits position on mouseup — way smoother

npm run build and npm test still pass.

AI disclosure

Added an AI usage section to the README. Not gonna pretend this was 100% hand-typed Cursor helped on CSS, drag refactor, debugging. Core kernel, VFS, window manager, and most apps are mine. Rough guess ~25% AI-assisted by lines, mostly styling and extras. Reviewers can check git/WakaTime if they want.

0
0
2
Open comments for this post

50m 56s logged

Devlog #4 — Custom wallpapers and fixing light mode

polishing stuff before i submit. two things that were bugging me on the live build.

Custom wallpapers

got tired of only having the 5 preset gradients. added a full custom option in Settings → Desktop:

  • paste an image URL and hit apply
  • upload from your device (jpg, png, webp, gif)
  • gif wallpapers actually animate on the desktop and login screen which is kinda sick
  • custom card in the grid so you can switch back to it after picking a preset
  • remove custom button if you want to clear it

uploads cap at 3mb so localStorage doesnt explode. urls have to be http:// or https://.

Light mode was broken

switched to light theme and the top bar went white but the desktop stayed dark?? icon labels were basically invisible — dark text on a dark wallpaper.

fixed it properly:

  • light versions of every preset wallpaper (slate, dusk, fog, ember, void)
  • desktop icon text readable again
  • login/lock screen matches light theme now
  • dock tiles get pastel colors in light mode
  • noise overlay toned down so it doesnt look muddy

custom uploaded wallpapers still show your image in both themes. only the fallback behind them changes.

also updated the readme

cleaned up the feature list so it actually reflects everything — messages, zmusic, indexeddb vfs, custom wallpapers

pretty much ready to ship. live at https://ztionix-os.vercel.app/ — click enter, no password.

— ander / Ander507

0
0
2
Open comments for this post

35m 36s logged

Devlog #3 — 30 min of app polish

ok so i had like half an hour and instead of doing something smart i went through the apps that looked kinda rough in screenshots lol

Browser

it was opening hacker news on launch which felt weird. ripped that out. now it just shows a blank “ztionix browser” home screen until you actually type a url. added a home button too so you can get back without refreshing the whole window.

Calculator

small thing but it was bugging me. the 0 button text was sitting on the left side of the button and the display felt cramped. threw some padding on the grid and centered everything with flex. operators get a little gold highlight on hover now so it matches the rest of the os.

Music → ZMusic

renamed it and rebuilt the layout. sidebar for playlists (library + downloads), track list in the middle, player bar stuck to the bottom. volume slider lives in the bar now instead of floating in the middle of the screen. imported tracks dedupe so you dont get rick ross twice unless you really want that.

Paint

the eraser was leaving these ugly gray trails because it was using destination-out instead of just painting the actual canvas color (#1a1a1e). fixed that. also added rect/circle tools and made the brush size slider actually show the px value. feels way more usable now.

still need to get this hosted somewhere public but the apps themselves feel way less janky now. login is still just click enter, no password — so once its live anyone can hop straight in.

next up probably deployment + maybe terminal stuff. but honestly the os is in a good spot for submission now.

— ander

0
0
1

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…