Activity

jonas.gaden

I fully implemented the game and added a cosmetic missile indicator. Without spoiling too much, you’re mission is to prevent a nuclear war within a strict time limit of 5 minutes. You need to navigate the phone menu without getting distracted to save the world. To remind you whats on stake here, a clock starts ticking on 2 minutes left and becomes more intense once you reach 60 seconds.
The game feels viable and immersive through the inclusion of sound effects, wherever possible.

I recommend headphones for the best immersive experience of the game.

Changelog

Attachment
0
jonas.gaden

Attention spoiler: I sat down and designed the application flow how my app should work. Now, this was the easy part. I needed a way to model a branching phone menu system from a hand-drawn sketch, where the player navigates an automated hotline to ultimately launch an interception missile. The core abstraction i landed on was a directed graph: each GraphNode holds an audio key, a navigation mode, and a map of digit keypresses to successor node IDs. Two input modes drive all interaction — navigation, where a single keypress immediately routes to the next node, and code_entry, where digits buffer up and Space confirms, used for codes. A third mode, passthrough, handles dead-end informational nodes that auto-advance after their audio finishes with no player input required. Every node’s spoken text is defined in phoneGraphNodes.json with a stable audioKey that maps directly to an audio file, making it straightforward to record and swap voice lines independently of the graph logic.

Attachment
Attachment
0
jonas.gaden

I setup the project by creating my build chain (dyamic dev server via Bun runtime) and outlining a basic idea. Please note that the video below has been shortend in order to don’t spoil the story too much. I already implemented the Tutorial / Intro and title screen, including sound effects and animations for the intro. The game is intended to be fully immersive and lock you in for a couple of minutes. I will share more progress soon

0
jonas.gaden

Shipped this project!

I updated the replay mechanism, you can now press space to play again. In addition, some code clean up was done,

jonas.gaden

I updated the replay mechanism, you can now press space to play again. In addition, some code clean up was done, and i noticed that the time has been tracked in two different Hackatime project (opsi). Nevertheless, here is a better explanation why I switched to Ncurses (effectivly dropping Windows support):
In the initial C++ version, rendering was a manual battle against screen flicker. You had to calculate terminal dimensions using ioctl, manually position the cursor and manage color states with ANSI codes. To prevent the screen from strobing every frame, the code relied on a custom “line-diffing” algorithm that only updated lines that had actually changed. This worked, but it was brittle. If the terminal resized or if a single character was miscounted, the entire layout would shatter. That is completely gone with the new Ncurses version.

Attachment
0
jonas.gaden

Shipped this project!

Hours: 7.34
Cookies: 🍪 133
Multiplier: 18.11 cookies/hr

I launched the Settings app featuring custom background support powered by a newly integrated Pixabay API search function.
The drawing app received a layout overhaul alongside critical fixes for canvas resizing and boundary detection glitches.
I upgraded the dice roller to support five dice and added visual icons to the Games Hub selection window.
A new Home window now replaces the About Me section to provide deeper project documentation and direct GitHub access.
The Games Hub expanded to include Blackjack and Tic-tac-toe for a more robust built-in entertainment suite.
System-wide window management now supports maximizing and automatically adapts to your preferred light or dark color scheme.
Finally, the graphing utility was refined to be color-sensitive, ensuring it maintains a cohesive design language across QuackOS.

jonas.gaden

I added the Settings app and a much wanted feature: Finally you are able to load your own background images into QuackOS. Because just pasting an img URL would be way to easy, there is more: I integrated the Pixabay API (after searching for 10 minutes straight where on earth to get the needed api key) to implement a search function which provides useful meta data and has a higher rate limit than e.g. Unsplash. As another small QoL change, I introduced a new layout for the drawing app. Whilst i am not entirely happy how it turned out, its a great improvement compared to before. Especially a few bugs were resolved, such as the app crashing when minimizing or resizing (this was due to missing guardrails allowing the canvas size to go to 0 * 0) and some weird glitches when leaving the drawing area and then coming back in.

Attachment
0
jonas.gaden

In this latest update, I refined the dice roller by improving its layout and expanding its functionality to support up to five dice simultaneously. To enhance the visual navigation of the Games Hub, I integrated icons into the game selection window, creating a more polished experience. The most significant change involves replacing the original About Me window with a Home window, which serves as a information hub. This new interface provides users with a more detailed overview of the project, including direct access to Github and specific documentation/tutorial regarding the desktop, taskbar, and application architecture to ensure a more transparent and informative user experience when trying my project.

Attachment
0
jonas.gaden

A lot of small QoL changes and a few little gimmicks such as a Games Hub, which currently includes classic additions like Blackjack and Tic-tac-toe, alongside a functional dice roller. Beyond the new applications, I improved the core window management system to support maximizing windows and integrated the prefers-color-scheme media query, allowing the entire interface to adapt seamlessly to the user’s system-wide theme. To ensure visual harmony across the desktop, the graphing utility has been updated to be color-sensitive, ensuring its interface and visualizations better align with the overall color schema and maintain the cohesive design language established in previous updates.

Attachment
Attachment
0
jonas.gaden

Shipped this project!

Hours: 7.46
Cookies: 🍪 142
Multiplier: 19.05 cookies/hr

QuackOS is a desktop-in-the-browser that turns a web page into a small operating system.
It includes a window manager, taskbar, and a set of built-in apps that run in draggable windows. The project is written in TypeScript and built with Bun, keeping the codebase fast and hackable. Apps are modular, so you can add new ones by creating an app module and registering it at startup.
The result is a fun, lightweight OS-like UI you can run locally or ship as a static site (as provided in the Demo).

jonas.gaden

I added a new app for graphing functions and unified the icons layout by creating app icons that fit my style guide. The grapher supports basic mathematical functions and provides a clean interface for visualization. Additionally, I standardized all desktop icons to follow consistent design patterns, making the overall UI feel more cohesive. The new icons were created using the Apple Icon Composer and Google Material Icons.

Changelog

Attachment
Attachment
0
jonas.gaden

I implemented new apps, such as a new Browser, Google Maps, a Calculator and a Paint app in additon to finishing the taskbar, which now features a smooth, macOS-inspired hover animation. I also built in window management logic so that clicking an app icon toggles the visibility of all associated windows, effectively hiding or showing them with a single action.
Regarding the architecture, while the Rick Roll and Google Maps features function as IframeWindows, the Calculator, Web Browser, and Paint applications are built with their own custom logic and unique internal structures (by extending BasicWindow). To ensure visual consistency, the styling is handled through an internal basic library. This allows the applications to remain fully responsive and look polished immediately, simply by organizing the underlying HTML code without the need for manual CSS overrides for every new feature.

Attachment
Attachment
Attachment
1

Comments

aloyak
aloyak 7 days ago

probably the last place i thought id get rickrolled

jonas.gaden

I am building a highly modular system where adding new apps is essentially just a matter of extending the base app class. The core logic is separated into three dedicated managers: DesktopManager, WindowManager, and TaskbarManager.

The DesktopManager is responsible for the desktop surface itself - it handles icon placement, desktop interactions, background rendering, and overall workspace coordination. It manages the representation of available applications and acts as the primary interface for launching and holding new app instances.

The WindowManager controls all window-related behavior, including creation and destruction, focus handling, z-index ordering, dragging, resizing, minimizing, maximizing, and state persistence. Each window represents a running application instance, and the WindowManager ensures correct lifecycle management as well as smooth user interaction.

The TaskbarManager manages the taskbar at the bottom of the screen, displaying running applications, enabling quick switching between them, providing visual feedback for active windows, and handling the dock-style launcher for pinned apps. It effectively serves as the central hub for fast access to both active and favorite applications.

Attachment
0
jonas.gaden

I switched to ncurses for overall better performance and visual layout (at the expense that the app does not longer work on Windows), but accidentally deleted my latest blogpost (no clue what i was doing)

Changelog

Attachment
Attachment
0
jonas.gaden

Shipped this project!

Hours: 17.09
Cookies: 🍪 322
Multiplier: 18.82 cookies/hr

Mars Inc. is a single-player strategy game centered on managing a company that aims to colonize Mars and establish interplanetary commerce. The game combines resource management, infrastructure development, and strategic planning as the player expands their operations across multiple locations in the solar system. The project is built using TypeScript and runs in the browser, utilizing IndexedDB for persistent game state storage.

jonas.gaden

I focused this update around rockets and finishing my basic idea of the app.
The game now tracks estimated travel time in minutes, which decrements as real time passes. Rockets can be configured to run automated sell routes, where they repeatedly travel between two locations, transporting goods for sale.
Exploration missions use rockets to establish colonies on new worlds. Once a rocket arrives at an unexplored location, a colony is automatically founded, opening that location for future operations.
Expansion to the Moon, Mars, and space stations unlocks access to location-specific production bonuses (and goods that can only be manufactured in those environments !!planned!!).

Attachment
0
jonas.gaden

I added another flavour (theme) to my Mars Inc. game, in addition to technical additions and improvments.

Notable changes include, but are not limited to:

  • When the stock is zero, the “Sell all”-button is now disabled
  • The build cost of modules now scales with the amount of the modules: U(n) = 50 * 10^(n/2)
  • Additional goods were added (Solar Panels, O2, …)
  • The ability to build rockets was added and is requiring a rocket lab module
  • A warehouse / storeroom module was added which increases the storage of the colony
Attachment
Attachment
0
jonas.gaden

Shipped this project!

Hours: 1.95
Cookies: 🍪 20
Multiplier: 10.36 cookies/hr

I improved the UI and added various QOL features. In addition a mobile mode was added in the latest version

jonas.gaden

I focused this update on quality-of-life improvements, cleaning things up before moving on to the bigger systems. The Sol counter and progress bar are now fully integrated and update automatically as time advances, giving clearer feedback on progression. I also reworked the world market’s visual design to make it feel more distinct, with a layout that better communicates its role in the game.

On the usability side, I rearranged the action buttons and introduced category-specific icons, making it easier to scan and differentiate between goods at a glance. Behind the scenes, I refactored module placement to support infrastructure modules. That change doesn’t do much on the surface yet, but it lays the groundwork for more dynamic colony personalisation and deeper customization options in future updates.

Attachment
0
jonas.gaden

I built the project around small, focused classes that each handle one job. Entities manage colonies and modules, data classes keep track of stats and upgrades, and controller classes (like LevelManager and TickManager) orchestrate everything that happens. I kept the GUI completely separate, giving it its own module with clean, typed builders and formatters so the visual layer stays independent from the game’s brain.
For progression, I made the level system deterministic and data-driven. Each level holds its baseline stats, experience targets, and upgrade rules all in one place. The level manager handles transitions smoothly, applies upgrades to the numbers that matter, and gives the UI read-only snapshots to display. Numbers scale using custom letter notation for those massive late-game values (just like Idle Miner Tycoon [K, M, B, T, aa, ab, ac …]), and upgrade costs flow directly from the level parameters.
The tick system is the heartbeat of everything. It runs a controlled update loop that advances time, processes queued actions, and syncs state changes at a consistent rate. Each tick fires events that managers and the GUI listen to, batching their updates together.

Attachment
Attachment
0
jonas.gaden

I started by sketching a new layout - one that would make resource management and navigation more intuitive, while also giving the game a sleeker, more “Martian” feel.

I introduced a notification system, so players can see important events at a glance. The new hotbar and modal windows help keep the interface clean, letting players focus on what matters most. I also added crisp Material icons for actions like launching rockets, upgrading, and managing water or solar power, which really brought the UI to life.

Changelog

Attachment
0
jonas.gaden

Today I wrapped up some tweaks to the MiniMessage project:
I standardized the style tags in generateMiniMessage for better consistency. No more little inconsistencies popping up. Over in generatePreviewHTML, I added fallback colors to avoid weird defaults, and used nullish coalescing for smarter color handling. Feels more reliable now. Added a collapse button to toggle between individual lines and the full lore.
CSS got some updates too: scrollbar styling for a cleaner look, button adjustments for better usability. Added a snackbar for notifications with simple fade animations—nothing fancy, but it gets the job done without being intrusive.
In additon, i added the ability to drop a json project and its instantly being opened in a new tab. I added a mobile mode to make the app very good usable on mobile

Changelog

Attachment
Attachment
0
jonas.gaden

Shipped this project!

Hours: 1.64
Cookies: 🍪 18
Multiplier: 10.92 cookies/hr

Item Creator is a small, focused web app I built with Bun and TypeScript to make generating MiniMessage-formatted text for Minecraft servers quick and painless. I kept the setup intentionally simple, no heavy frameworks, just vanilla TypeScript and custom CSS - so it stays fast, lightweight, and easy to understand.

jonas.gaden

This is the first major version for my version. Item Creator is my lightweight web application built with Bun and TypeScript, designed to generate MiniMessage-formatted text for Minecraft servers. The architecture is refreshingly simple: no frameworks, just vanilla TypeScript with custom CSS styling.
The core logic resides in app.ts, handling UI interactions and state management for lines and text segments. minimessage.ts contains the formatting engine that converts styled segments into valid MiniMessage syntax, supporting gradients and text decorations. Type definitions in types.ts ensure type safety across the application.

You can try the app right now in this project

Attachment
Attachment
0
jonas.gaden

I improved a lot, first of all the UI and the web service were improved.

  • Added a racer page to view the stats of individual racers
  • Added a splash screen page (if used as streaming layout)
  • Added a load animation for the leaderboard

In addition, i ported the plugin to 1.21.10 / 1.21.11 which took quite some time. Some minor changes to the plugin were made, such as hidding log messages, if the waypoints are not shown.

a small demo (not from the current version) is attached below

There will be a devlog soon, which further explains how the plugin and server work

0
jonas.gaden

I added a GUI (which is experimental) to allow the dynamic mixing of Patterns, to create quite funny results

Attachment
Attachment
0
jonas.gaden

Version v0.1

  • Playable version
  • Full ANSI Color support
  • Work in progress version
Attachment
Attachment
1

Comments

GreemDev
GreemDev about 1 month ago

I want to try it! Is it compatible with Linux Ubuntu?

jonas.gaden

Continued working and adding new shapes and patterns

Attachment
0
jonas.gaden

First version: Using structs i implemented a Pattern type, which holds a boolean map of each pixel (on, off). Then I implemented logic operator overloading and visualised the results. Turned out quite funny

Attachment
0
jonas.gaden

I fixed a few errors, removed the lowercase handler in the Minecraft plugin and fixed some CSS. Small change after all

Attachment
0