|
23398
|
My very own WebOS by @ejo | Stardance
|
ejo
|
2
|
29.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T18:15:42Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "made a retro webos named ejoos , it was pretty fun took too much time tho", "repo": "https://github.com/ejojames/EJOos", "demo": "https://ej-oos.vercel.app/"}, {"ship_num": 2, "ts": "2026-09-01T17:27:05Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a retro-red themed os with basic functions like file explorer, photos , terminal , notepad , notepad was challenging", "repo": "https://github.com/ejojames/EJOos", "demo": "https://ej-oos.vercel.app/"}]...
|
[{"post_id": 77899, "ts": "202 [{"post_id": 77899, "ts": "2026-10-08T18:10:40Z", "hours": 2.7572, "text": "kinda done shipping it..added a simple chatbot, audio-music playback, retro cam, added many themes, sudoku, mine sweeper"}, {"post_id": 77624, "ts": "2026-10-07T17:49:44Z", "hours": 2.1158, "text": "a simple chatbott"}, {"post_id": 77347, "ts": "2026-10-06T17:00:19Z", "hours": 6.5375, "text": "made a browser..kind of"}, {"post_id": 76702, "ts": "2026-10-04T11:35:05Z", "hours": 6.1158, "text": "added many more.."}, {"post_id": 76093, "ts": "2026-10-02T09:45:47Z", "hours": 8.0325, "text": "added a calculator"}, {"post_id": 59719, "ts": "2026-09-01T17:21:21Z", "hours": 0.4019, "text": "kinda finished the os, shipping it."}, {"post_id": 59602, "ts": "2026-09-01T14:51:35Z", "hours": 0.5769, "text": "updated the layout"}, {"post_id": 59098, "ts": "2026-08-31T18:35:29Z", "hours": 2.0067, "text": "reached the first benchmark added at least 3 functions , i like the red retro look might change it later"}]...
|
Title: My very own WebOS by @ejo | Stardance
Devl Title: My very own WebOS by @ejo | Stardance
Devlogs:
reached the first benchmark added at least 3 functions , i like the red retro look might change it later
updated the layout
kinda finished the os, shipping it.
added a calculator
added many more..
made a browser..kind of
a simple chatbott
kinda done shipping it..added a simple chatbot, audio-music playback, retro cam, added many themes, sudoku, mine sweeper
Ships:
i made a retro-red themed os with basic functions like file explorer, photos , terminal , notepad , notepad was challenging
made a retro webos named ejoos , it was pretty fun took too much time tho...
|
1793008416.4999163
|
1793872416.4999163
|
|
23455
|
KingOS 95 by @Wirenux | Stardance
|
Wirenux
|
2
|
31.0
|
405
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T16:51:29Z", "hours": 10.0, "multiplier": 15.75, "payout": 163, "blessing": "neutral", "text": "KingOS 95 The C&A certified 32-bit workstation built for trapped souls ⎛⎝( ` ᢍ ´ )⎠⎞ᵐᵘʰᵃʰᵃ What did you make? For my second ship, I’ve massively expanded KingOS 95! If you missed the first one, it’s a web-based OS built entirely with vanilla HTML, CSS, and JS, inspired by Windows 95 and the lore of The Amazing Digital Circus (I recommend you to go see the 1st Ship). In this update, I’ve mainly add customization option. Here is what’s new: AMI-Like BIOS & Boot Sequence: The OS now actually “boots up.” You can interrupt the startup to enter a fully functional, keyboard-navigated BIOS screen before loading the desktop. Control Panel & Settings App: A centralized hub to manage the OS. Wallpaper: Added a Display Properties menu with hand-redrawn, classic tiled wallpapers (16x16, 32x32, etc.) and a live, perfectly scaled preview window. Accessibility (CRT Toggle): The CRT shader looks really good, but I added a global setting to turn it off so people with photosensitivity or eye strain can still play around safely. UI Polish: I’ve added new tools bar to the File Explorer and the CaineApp terminal. What was challenging? Without a heavy framework like React or Vue, global state management is hard ! When a user toggles the CRT effect or changes the wallpaper, that state needs to instantly update across the entire DOM and persist correctly. Also, building the live-preview monitor inside the Display Properties getting those tiny 16x16 pixel patterns to scale and tile exactly how they will look on the massive desktop required a lot of tricky CSS and JavaScript math. What are you proud of? I’m incredibly proud of the accessibility and the “feel” of the OS. Adding the CRT toggle means more people can explore the project comfortably. But mostly, I’m proud that I managed to add an entire BIOS environment and a global settings architecture while keeping the codebase 100% vanilla and very fast. What should people know so they can test your project? To fully test the workstation, use the official Digital Circus credentials to unlock the computer: Username: kinger Password: queenie123 (or leave it empty!) Things to try: Classic Scenario : Go to My Computer -> Characters -> AI -> CAINE, then spam your keys or Enter to trigger the animation loop! Open the Settings app from the Start Menu to change your wallpaper and toggle the CRT effect. Open the Start Menu, hit Shut Down, and reset the machine so you can catch the brand-new BIOS boot sequence! Explore the project ! ᕙ( •̀ ᗜ •́ )ᕗ", "repo": "https://github.com/wirenux/KingOS-95", "demo": "https://kingos-95.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-03T13:58:01Z", "hours": 21.0, "multiplier": 11.75, "payout": 242, "blessing": "neutral", "text": "What did you make? KingOS 95 is a web-based OS (webOS) that use the style of Windows 95/98 and is based on the universe of The Amazing Digital Circus. Built entirely with vanilla HTML,JS,CSS. Project features: Custom Vector Window Manager: A lightweight window manager supporting zIndex layering, minimizing, maximizing, dragging and resizing window Virtual JSON Filesystem: Dynamic folder and document structure using only a JSON file CRT Display Shader: Scanline and aesthetic from retro display. Overlays optimized for web performance Start Menu: Handles application spawns, external link, and direct OS state toggles (Log Off / Shut Down). Bespoke Circus Applications: Interactive apps matching the show’s lore, including CaineApp (a custom command terminal) and the PurgeAIProgram. What was challenging? The biggest problem came from trying to create a retro look on modern development tools: The Windowing Engine: Writing a fluid and stable window manager in pure vanilla JS without heavy UI frameworks is kinda hard and need building a good state architecture for tracking DOM coordinates, drag states, and layered sorting order on the fly. The Build Pipeline Battle: During deployment, Vite 8’s ultra-modern strict compiler (LightningCSS) repeatedly crashed over a legacy media query ( @media (not(hover))) hidden inside the 98.css stylesheet. What are you proud of? Building a fully responsive, visually complex webOS completely from scratch without leaning on bulky frontend frameworks. Achieving a high level of performance with native HTML, CSS, and JavaScript means the entire simulation loads instantly and stays incredibly responsive. What should people know so they can test your project? To fully use the workstation, testers need to know the official credentials (there are the same in the show !) to unlock the “computer” Username: kinger Password: quennie123", "repo": "https://github.com/wirenux/KingOS-95", "demo": "https://kingos-95.vercel.app/"}]...
|
[{"post_id": 26672, "ts": "202 [{"post_id": 26672, "ts": "2026-07-11T16:40:07Z", "hours": 0.5289, "text": "I guess i’ll make a Devlogs ! (other wise I’ll lost ✨31min✨) So here is the final readme for the 2nd ship"}, {"post_id": 26640, "ts": "2026-07-11T15:58:52Z", "hours": 0.2989, "text": "Yay the 30 Hours have been reached 🎉 Otherwise I’ve added a popup when you press ESC to confirm you want to exit."}, {"post_id": 26618, "ts": "2026-07-11T15:26:01Z", "hours": 0.6364, "text": "I’ve add a BUNCH of CSS & JS so right now i’ve this result ! (this can be use fully with the keyboard)"}, {"post_id": 26594, "ts": "2026-07-11T14:46:21Z", "hours": 1.15, "text": "I’m building the BIOS (when you press anythings on the boot menu)"}, {"post_id": 26502, "ts": "2026-07-11T10:33:08Z", "hours": 0.2706, "text": "I’ve drawn Caine but for a desktop icon !"}, {"post_id": 25858, "ts": "2026-07-10T10:40:14Z", "hours": 0.8136, "text": "I’ve done some invisible fix (like bugs etc…) AND draw every icon for the tools bar in the Caine App and add the tools bar itself !"}, {"post_id": 25271, "ts": "2026-07-09T13:11:55Z", "hours": 1.3239, "text": "I’ve draw all the icon for the toolbar in the File Explorer ! and put them in with some CSS and JS so when you press the Up folder button you go….. ✨UP✨"}, {"post_id": 25228, "ts": "2026-07-09T11:01:34Z", "hours": 0.5172, "text": "I’ve done various fixes and add the Netscape Logo Animation !"}, {"post_id": 24835, "ts": "2026-07-08T17:25:41Z", "hours": 0.2631, "text": "Now the CRT On/Off switch work ! (This was not that difficult, just add or remove an attribute to a div). The 1st screenshot is without and the 2nd is with the CRT effect"}, {"post_id": 24822, "ts": "2026-07-08T17:09:26Z", "hours": 2.0914, "text": "Wow it’s been 2hours 😶. There now is a lot of things who have change ! There now a full Display Properties app (1st screenshot). And when you select a wallpaper there is a preview who fit perfectly into the screen and there is the ability to change the real background (2st screen shot) I’ve also redraw every wallpaper (for the most is just 32x32, 128x128, 64x64 or 16x16 repeated through the whole screen)"}, {"post_id": 24686, "ts": "2026-07-08T13:12:26Z", "hours": 0.3128, "text": "I’ve finally finished the screen (the inside is blank so i could put so texture in it with some code)"}, {"post_id": 24675, "ts": "2026-07-08T12:53:05Z", "hours": 0.6431, "text": "I’m recreating the screen in Display Management in Aseprite because I can’t find any resource for this online. This is so loonnnnggg I’ve just done the frame :,) (Also I’m pixel perfect)"}, {"post_id": 24635, "ts": "2026-07-08T11:07:36Z", "hours": 1.6453, "text": "I’m adding the Control Panel with the Display Settings, because a review say to me : You should add a flashing warning and a settings to disable the CRT effect"}, {"post_id": 21481, "ts": "2026-07-03T13:36:07Z", "hours": 2.5628, "text": "Stardance said to me : \"You will lost 2h33 if you ship right now without a devlog\" so here is it. Yay the 20h bar have been reached !!! In the last 2h i’ve add a lot of things like: hosting the website on vercel, make the whole readme, update project detail on Stardance and add the C&A Favicon, (i’ve also fix some bugs). So now I’m ready to Ship ! Wish me luck !"}, {"post_id": 19995, "ts": "2026-07-01T13:58:10Z", "hours": 0.6561, "text": "It was hard but i now have resizable window ! With a window handle in the bottom right corner"}, {"post_id": 19967, "ts": "2026-07-01T13:02:33Z", "hours": 0.8253, "text": "There is now Netscape ! I’ve used my other project KlassicOS to implement Netscape in this one. Because i’ve already done the code ! I’ve also fix some bug related to button and CSS because on this project I use 98.css but on KlassicOS i was making every 3d effect on the button by hand"}, {"post_id": 19943, "ts": "2026-07-01T12:02:35Z", "hours": 0.7442, "text": "There now is a Window Error with custom error text"}, {"post_id": 19903, "ts": "2026-07-01T10:31:14Z", "hours": 0.4681, "text": "I’ve added the Recycle Bin window !"}, {"post_id": 19309, "ts": "2026-06-30T16:06:25Z", "hours": 0.2939, "text": "I’ve added boot sound and restart when Purge AI Program have finished"}, {"post_id": 19279, "ts": "2026-06-30T15:30:41Z", "hours": 0.6861, "text": "Now there is a Window 95 boot image"}, {"post_id": 19222, "ts": "2026-06-30T14:17:55Z", "hours": 0.445, "text": "The BIOS Loading screen is finished ! (+ i’ve fix the crt on effect on Safari / Chrome)"}, {"post_id": 19198, "ts": "2026-06-30T13:45:12Z", "hours": 0.2731, "text": "Just draw the little blue man (i don’t know his name)"}, {"post_id": 19181, "ts": "2026-06-30T13:24:40Z", "hours": 1.1983, "text": "There now is a BIOS boot animation !!"}, {"post_id": 18648, "ts": "2026-06-29T20:43:02Z", "hours": 0.8586, "text": "Now there is a New CRT effect (the boot one is so beautiful) https://www.youtube.com/watch?v=M90K87DTchw"}, {"post_id": 18498, "ts": "2026-06-29T17:44:42Z", "hours": 1.3147, "text": "Now there is some custom and responsive position for Bubble and CAINE’s heads & Bubble and CAINE’s heads can expand or contract depending on window size (i’ve also add a new C&A white icon)"}, {"post_id": 18426, "ts": "2026-06-29T16:07:54Z", "hours": 0.3283, "text": "CAINE & Bubble are now on screen !"}, {"post_id": 18415, "ts": "2026-06-29T15:44:32Z", "hours": 0.275, "text": "Just finished bubble and assemble CAINE + Animation"}, {"post_id": 18403, "ts": "2026-06-29T15:20:29Z", "hours": 0.5625, "text": "I’ve finished CAINE’s part : And start Bubble"}, {"post_id": 18371, "ts": "2026-06-29T14:33:19Z", "hours": 0.4225, "text": "I’ve just finished the lower part of his mouth"}, {"post_id": 18353, "ts": "2026-06-29T14:04:40Z", "hours": 0.3314, "text": "I’ve just draw the hat!"}, {"post_id": 18344, "ts": "2026-06-29T13:44:45Z", "hours": 0.3358, "text": "I’m drawing the eyes of CAINE ‘cause i’havent found the pixel art online"}, {"post_id": 18309, "ts": "2026-06-29T12:42:22Z", "hours": 0.4603, "text": "Add an invisible change but I now have a function to spawn window that I can use every where"}, {"post_id": 18272, "ts": "2026-06-29T11:17:41Z", "hours": 1.1169, "text": "I’ve just finished the CAINE App ! When you open the app You get the exact same text as in the episode. In the app you you type anythings (you can litteraly smash your keyboard) it will write the same input as in the episode ! Or you could just spam enter to get to the end ! (The text is from the fandom of The Amazing Digital Circus : https://tadc.fandom.com/wiki/Computer )"}, {"post_id": 17891, "ts": "2026-06-28T20:35:21Z", "hours": 0.3278, "text": "now have caine app"}, {"post_id": 17874, "ts": "2026-06-28T20:10:48Z", "hours": 0.2842, "text": "More files !!"}, {"post_id": 17850, "ts": "2026-06-28T19:52:17Z", "hours": 0.8342, "text": "There now is all the file like in the episode"}, {"post_id": 17745, "ts": "2026-06-28T17:41:27Z", "hours": 0.9056, "text": "Now have the File explorer with pseudo File System using JSON File :"}, {"post_id": 17693, "ts": "2026-06-28T16:27:02Z", "hours": 0.7456, "text": "Now able to create fully customizable windows, with custom icons, size, title, titlebar button"}, {"post_id": 17657, "ts": "2026-06-28T15:18:17Z", "hours": 0.7142, "text": "I now have clickable icon on the desktop !"}, {"post_id": 14617, "ts": "2026-06-23T19:57:31Z", "hours": 0.5364, "text": "Now have a proper Start Menu"}, {"post_id": 13227, "ts": "2026-06-21T17:38:44Z", "hours": 0.8644, "text": "Just add the clock (+ sound icon) and the start menu button"}, {"post_id": 13102, "ts": "2026-06-21T13:12:10Z", "hours": 0.4253, "text": "Finished the login phase"}, {"post_id": 13010, "ts": "2026-06-21T08:51:31Z", "hours": 1.0308, "text": "Hi ! I’m adding the login phase of the webOS"}]...
|
Title: KingOS 95 by @Wirenux | Stardance
Devlogs: Title: KingOS 95 by @Wirenux | Stardance
Devlogs:
Hi ! I’m adding the login phase of the webOS
Finished the login phase
Just add the clock (+ sound icon) and the start menu button
Now have a proper Start Menu
I now have clickable icon on the desktop !
Now able to create fully customizable windows, with custom icons, size, title, titlebar button
Now have the File explorer with pseudo File System using JSON File :
There now is all the file like in the episode
More files !!
now have caine app
I’ve just finished the CAINE App ! When you open the app You get the exact same text as in the episode. In the app you you type anythings (you can litteraly smash your keyboard) it will write the same input as in the episode ! Or you could just spam enter to get to the end ! (The text is from the fandom of The Amazing Digital Circus : https://tadc.fandom.com/wiki/Computer )
Add an invisible change but I now have a function to spawn window that I can use every where
I’m drawing the eyes of CAINE ‘cause i’havent found the pixel art online
I’ve just draw the hat!
I’ve just finished the lower part of his mouth
I’ve finished CAINE’s part : And start Bubble
Just finished bubble and assemble CAINE + Animation
CAINE & Bubble are now on screen !
Now there is some custom and responsive position for Bubble and CAINE’s heads & Bubble and CAINE’s heads can expand or contract depending on window size (i’ve also add a new C&A white icon)
Now there is a New CRT effect (the boot one is so beautiful) https://www.youtube.com/watch?v=M90K87DTchw
There now is a BIOS boot animation !!
Just draw the little blue man (i don’t know his name)
The BIOS Loading screen is finished ! (+ i’ve fix the crt on effect on Safari / Chrome)
Now there is a Window 95 boot image
I’ve added boot sound and restart when Purge AI Program have finished
I’ve added the Recycle Bin window !
There now is a Window Error with custom error text
There is now Netscape ! I’ve used my other project KlassicOS to implement Netscape in this one. Because i’ve already done the code ! I’ve also fix some bug related to button and CSS because on this project I use 98.css but on KlassicOS i was making every 3d effect on the button by hand
It was hard but i now have resizable window ! With a window handle in the bottom right corner
Stardance said to me : "You will lost 2h33 if you ship right now without a devlog" so here is it. Yay the 20h bar have been reached !!! In the last 2h i’ve add a lot of things like: hosting the website on vercel, make the whole readme, update project detail on Stardance and add the C&A Favicon, (i’ve also fix some bugs). So now I’m ready to Ship ! Wish me luck !
I’m adding the Control Panel with the Display Settings, because a review say to me : You should add a flashing warning and a settings to disable the CRT effect
I’m recreating the screen in Display Management in Aseprite because I can’t find any resource for this online. This is so loonnnnggg I’ve just done the frame :,) (Also I’m pixel perfect)
I’ve finally finished the screen (the inside is blank so i could put so texture in it with some code)
Wow it’s been 2hours 😶. There now is a lot of things who have change ! There now a full Display Properties app (1st screenshot). And when you select a wallpaper there is a preview who fit perfectly into the screen and there is the ability to change the real background (2st screen shot) I’ve also redraw every wallpaper (for the most is just 32x32, 128x128, 64x64 or 16x16 repeated through the whole screen)
Now the CRT On/Off switch work ! (This was not that difficult, just add or remove an attribute to a div). The 1st screenshot is without and the 2nd is with the CRT effect
I’ve done various fixes and add the Netscape Logo Animation !
I’ve draw all the icon for the toolbar in the File Explorer ! and put them in with some CSS and JS so when you press the Up folder button you go….. ✨UP✨
I’ve done some invisible fix (like bugs etc…) AND draw every icon for the tools bar in the Caine App and add the tools bar itself !
I’ve drawn Caine but for a desktop icon !
I’m building the BIOS (when you press anythings on the boot menu)
I’ve add a BUNCH of CSS & JS so right now i’ve this result ! (this can be use fully with the keyboard)
Yay the 30 Hours have been reached 🎉 Otherwise I’ve added a popup when you press ESC to confirm you want to exit.
I guess i’ll make a Devlogs ! (other wise I’ll lost ✨31min✨) So here is the final readme for the 2nd ship
Ships:
What did you make? KingOS 95 is a web-based OS (webOS) that use the style of Windows 95/98 and is based on the universe of The Amazing Digital Circus. Built entirely with vanilla HTML,JS,CSS. Project features: Custom Vector Window Manager: A lightweight window manager supporting zIndex layering, minimizing, maximizing, dragging and resizing window Virtual JSON Filesystem: Dynamic folder and document structure using only a JSON file CRT Display Shader: Scanline and aesthetic from retro display. Overlays optimized for web performance Start Menu: Handles application spawns, external link, and direct OS state toggles (Log Off / Shut Down). Bespoke Circus Applications: Interactive apps matching the show’s lore, including CaineApp (a custom command terminal) and the PurgeAIProgram. What was challenging? The biggest problem came from trying to create a retro look on modern development tools: The Windowing Engine: Writing a fluid and stable window manager in pure vanilla JS without heavy UI frameworks is kinda hard and need building a good state architecture for tracking DOM coordinates, drag states, and layered sorting order on the fly. The Build Pipeline Battle: During deployment, Vite 8’s ultra-modern strict compiler (LightningCSS) repeatedly crashed over a legacy media query ( @media (not(hover))) hidden inside the 98.css stylesheet. What are you proud of? Building a fully responsive, visually complex webOS completely from scratch without leaning on bulky frontend frameworks. Achieving a high level of performance with native HTML, CSS, and JavaScript means the entire simulation loads instantly and stays incredibly responsive. What should people know so they can test your project? To fully use the workstation, testers need to know the official credentials (there are the same in the show !) to unlock the “computer” Username: kinger Password: quennie123
KingOS 95 The C&A certified 32-bit workstation built for trapped souls ⎛⎝( ` ᢍ ´ )⎠⎞ᵐᵘʰᵃʰᵃ What did you make? For my second ship, I’ve massively expanded KingOS 95! If you missed the first one, it’s a web-based OS built entirely with vanilla HTML, CSS, and JS, inspired by Windows 95 and the lore of The Amazing Digital Circus (I recommend you to go see the 1st Ship). In this update, I’ve mainly add customization option. Here is what’s new: AMI-Like BIOS & Boot Sequence: The OS now actually “boots up.” You can interrupt the startup to enter a fully functional, keyboard-navigated BIOS screen before loading the desktop. Control Panel & Settings App: A centralized hub to manage the OS. Wallpaper: Added a Display Properties menu with hand-redrawn, classic tiled wallpapers (16x16, 32x32, etc.) and a live, perfectly scaled preview window. Accessibility (CRT Toggle): The CRT shader looks really good, but I added a global setting to turn it off so people with photosensitivity or eye strain can still play around safely. UI Polish: I’ve added new tools bar to the File Explorer and the CaineApp terminal. What was challenging? Without a heavy framework like React or Vue, global state management is hard ! When a user toggles the CRT effect or changes the wallpaper, that state needs to instantly update across the entire DOM and persist correctly. Also, building the live-preview monitor inside the Display Properties getting those tiny 16x16 pixel patterns to scale and tile exactly how they will look on the massive desktop required a lot of tricky CSS and JavaScript math. What are you proud of? I’m incredibly proud of the accessibility and the “feel” of the OS. Adding the CRT toggle means more people can explore the project comfortably. But mostly, I’m proud that I managed to add an entire BIOS environment and a global settings architecture while keeping the codebase 100% vanilla and very fast. What should people know so they can test your project? To fully test the workstation, use the official Digital Circus credentials to unlock the computer: Username: kinger Password: queenie123 (or leave it empty!) Things to try: Classic Scenario : Go to My Computer -> Characters -> AI -> CAINE, then spam your keys or Enter to trigger the animation loop! Open the Settings app from the Start Menu to change your wallpaper and toggle the CRT effect. Open the Start Menu, hit Shut Down, and reset the machine so you can catch the brand-new BIOS boot sequence! Explore the project ! ᕙ( •̀ ᗜ •́ )ᕗ...
|
1793112504.039396
|
1793198904.039396
|
|
23464
|
Amalgam by @martin_chen_au | Stardance
|
martin_chen_au
|
2
|
7.0
|
112
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T05:03:07Z", "hours": 2.0, "multiplier": 14.92, "payout": 26, "blessing": "neutral", "text": "I continued with this tool, fixing bugs, increasing compatibility for various platforms and python versions, and fixing issues like underdeveloped flags.", "repo": "https://github.com/BitPeppr/Amalgam", "demo": "https://pypi.org/project/amalgam-panel/0.1.2/"}, {"ship_num": 2, "ts": "2026-06-22T02:42:15Z", "hours": 5.0, "multiplier": 16.14, "payout": 86, "blessing": "neutral", "text": "I’m quite happy with this project. It wasn’t the longest thing ever, and for a few hours, I think I’ve solved lots of problems: Cluttered multi-terminal juggling of windows Performance degradation of multiple background agents Manual copy-pasting between models I used the tool to check itself, and it worked great! Hope you like it. Maybe in the future, I’ll extend it to accept more apis and perhaps specific models, or even multi-api queries, but for now it more than achieves my goals.", "repo": "https://github.com/BitPeppr/Amalgam", "demo": "https://pypi.org/project/amalgam-panel/0.1.2/"}]...
|
[{"post_id": 51989, "ts": "202 [{"post_id": 51989, "ts": "2026-08-22T00:16:31Z", "hours": 0.6233, "text": "More errors; my shipwright ran the project from system home (something I hadn’t anticipated; I was expecting it to be a repo-level tool), and so the tool took ages gobbling up his configs and binaries, much of which it couldn’t read. So now I’ve made it so context is not default on; one must pass –context flag for it to activate (otherwise we’ll have too many llms getting gigabytes of random stuff!). Hope this helps."}, {"post_id": 48608, "ts": "2026-08-17T02:19:02Z", "hours": 0.6147, "text": "The ship came back with an error — I don’t have slack notifications and I found out weeks late! — and I scrambled to fix it. Turns out there was a subtle f-string syntax nuance that python flags as an error in pre-3.12 versions, but is accepted in post-3.12 versions, and so my 3.14 venv accepted it, while maybe the shipwright’s didn’t. I fixed the formatting, but pushed min version up to 3.12 just to be safe (I feel like 3.12 is a very stable version, shouldn’t be too aggressive a version). And then when I was testing I found out that multi-model flag inputs didn’t work for some reason! So I fixed that, which was surprisingly easy. Then a few checks, updates, and pushes later, and I was done!"}, {"post_id": 14088, "ts": "2026-06-23T02:22:45Z", "hours": 0.4811, "text": "You can now use endpoints apart from opencode zen and custom models, defined with cli flags! You can now get a result back in under 5 seconds with diffusion gemma on nvidia nim!"}, {"post_id": 13485, "ts": "2026-06-22T02:38:12Z", "hours": 0.7483, "text": "I uploaded it to pypi! Everytime I try to upload to pypi, I always forget the format (src/…) and the commands with twine and build, but I’m getting there. I keep making minor errors (e.g. local imports can be absolute, but packaged version must use relative), and so I’m already up to 0.1.2 (two more updates to get it to a working state). You can not install with pip install amalgam-panel! (Amalgam was taken already by a wrapper :<)"}, {"post_id": 13451, "ts": "2026-06-22T01:03:25Z", "hours": 0.6233, "text": "Added conversation / follow-up questions! The cli saves past prompts and responses, attaching to new messages as context, and allows for a more chat-interface style interaction. I ran into lots of trouble with the ordering of messages and context structuring, but in the end it seems to work fine. Hope it’s a good change!"}, {"post_id": 13419, "ts": "2026-06-21T23:38:52Z", "hours": 0.8128, "text": "Added a context summarisation flag! You can now pass in –summarise-context for it to query free llms and summarise large repositories (any text-based files), saving tokens before the panel starts its work. Hopefully helpful for larger, unfeasibly large codebases, though rather dependent on the context-summarisation model (currently big-pickle, seemingly the most reliably-always-free model with respectable and reliable performance, with little errors or json issues)."}, {"post_id": 13053, "ts": "2026-06-21T10:43:20Z", "hours": 3.1233, "text": "While I was finishing up my Trisolaris project, along with polishing calculations for a fluid simulation project, I found myself asking multiple llms to check for errors or potential issues. This resulted in up to seven opencode instances in separate windows, and after getting their responses, I would then pass them to a reliable llm I trusted — often mimo v2.5 — to merge into a single cross-referenced response. While this was great, helping me to catch potential edge cases or give me some general advice on potential improvements, it was very messy and time-costly, and for my rather humble laptop, performance-draining. And so I thought I would use the opencode zen api and make a python tool to automate the process! Amalgam is a python cli that accepts a variety of flags (to customise every aspect of it, from temperatures, number of responses, to timeout, and other parameters) and a prompt, presenting prompt and context to a ‘panel’ of llms (quite literally every free model available on the zen api, auto-detected with key validation), collecting numerous responses to be merged into a single unified, comprehensive response. This maintains the advantage of having multiple llms with different strengths, while keeping it overall time-efficient by automating many of the cross copy-pasting required normally, along with presenting all context (though this may be token-costly for larger repos, this could be improved in the future). I’m quite happy with what I’ve got. It’s been a short project so far, but for my purposes, it’s practically done. I will work on it, potentially adding follow-up question features and context summarisation for larger repos, but it largely fulfills its purpose! The below two screenshots show the before and after, from multi-window clusters to a singular, clean and unified report. If anyone has suggestions or feature ideas, I would love to implement them! I feel like this is a perhaps common idea, but I haven’t find a solution for my needs (completely free auto-discovered model panel, with customisability yet simplicity); hope you like it!"}]...
|
Title: Amalgam by @martin_chen_au | Stardance
Dev Title: Amalgam by @martin_chen_au | Stardance
Devlogs:
While I was finishing up my Trisolaris project, along with polishing calculations for a fluid simulation project, I found myself asking multiple llms to check for errors or potential issues. This resulted in up to seven opencode instances in separate windows, and after getting their responses, I would then pass them to a reliable llm I trusted — often mimo v2.5 — to merge into a single cross-referenced response. While this was great, helping me to catch potential edge cases or give me some general advice on potential improvements, it was very messy and time-costly, and for my rather humble laptop, performance-draining. And so I thought I would use the opencode zen api and make a python tool to automate the process! Amalgam is a python cli that accepts a variety of flags (to customise every aspect of it, from temperatures, number of responses, to timeout, and other parameters) and a prompt, presenting prompt and context to a ‘panel’ of llms (quite literally every free model available on the zen api, auto-detected with key validation), collecting numerous responses to be merged into a single unified, comprehensive response. This maintains the advantage of having multiple llms with different strengths, while keeping it overall time-efficient by automating many of the cross copy-pasting required normally, along with presenting all context (though this may be token-costly for larger repos, this could be improved in the future). I’m quite happy with what I’ve got. It’s been a short project so far, but for my purposes, it’s practically done. I will work on it, potentially adding follow-up question features and context summarisation for larger repos, but it largely fulfills its purpose! The below two screenshots show the before and after, from multi-window clusters to a singular, clean and unified report. If anyone has suggestions or feature ideas, I would love to implement them! I feel like this is a perhaps common idea, but I haven’t find a solution for my needs (completely free auto-discovered model panel, with customisability yet simplicity); hope you like it!
Added a context summarisation flag! You can now pass in –summarise-context for it to query free llms and summarise large repositories (any text-based files), saving tokens before the panel starts its work. Hopefully helpful for larger, unfeasibly large codebases, though rather dependent on the context-summarisation model (currently big-pickle, seemingly the most reliably-always-free model with respectable and reliable performance, with little errors or json issues).
Added conversation / follow-up questions! The cli saves past prompts and responses, attaching to new messages as context, and allows for a more chat-interface style interaction. I ran into lots of trouble with the ordering of messages and context structuring, but in the end it seems to work fine. Hope it’s a good change!
I uploaded it to pypi! Everytime I try to upload to pypi, I always forget the format (src/…) and the commands with twine and build, but I’m getting there. I keep making minor errors (e.g. local imports can be absolute, but packaged version must use relative), and so I’m already up to 0.1.2 (two more updates to get it to a working state). You can not install with pip install amalgam-panel! (Amalgam was taken already by a wrapper :<)
You can now use endpoints apart from opencode zen and custom models, defined with cli flags! You can now get a result back in under 5 seconds with diffusion gemma on nvidia nim!
The ship came back with an error — I don’t have slack notifications and I found out weeks late! — and I scrambled to fix it. Turns out there was a subtle f-string syntax nuance that python flags as an error in pre-3.12 versions, but is accepted in post-3.12 versions, and so my 3.14 venv accepted it, while maybe the shipwright’s didn’t. I fixed the formatting, but pushed min version up to 3.12 just to be safe (I feel like 3.12 is a very stable version, shouldn’t be too aggressive a version). And then when I was testing I found out that multi-model flag inputs didn’t work for some reason! So I fixed that, which was surprisingly easy. Then a few checks, updates, and pushes later, and I was done!
More errors; my shipwright ran the project from system home (something I hadn’t anticipated; I was expecting it to be a repo-level tool), and so the tool took ages gobbling up his configs and binaries, much of which it couldn’t read. So now I’ve made it so context is not default on; one must pass –context flag for it to activate (otherwise we’ll have too many llms getting gigabytes of random stuff!). Hope this helps.
Ships:
I’m quite happy with this project. It wasn’t the longest thing ever, and for a few hours, I think I’ve solved lots of problems: Cluttered multi-terminal juggling of windows Performance degradation of multiple background agents Manual copy-pasting between models I used the tool to check itself, and it worked great! Hope you like it. Maybe in the future, I’ll extend it to accept more apis and perhaps specific models, or even multi-api queries, but for now it more than achieves my goals.
I continued with this tool, fixing bugs, increasing compatibility for various platforms and python versions, and fixing issues like underdeveloped flags....
|
1792878611.3367767
|
1793742611.3367767
|
|
23478
|
SPACE OS by @shubhdalmia8 | Stardance
|
shubhdalmia8
|
2
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T12:47:23Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built SPACE OS, an interactive browser-based desktop operating system using HTML, CSS, and JavaScript. It features a Mission Explorer, Solar System Explorer, Space Facts generator, persistent Notes app, wallpaper customization, draggable windows, a dock, and desktop shortcuts, all designed to make learning about space more engaging. The biggest challenge was handling all the interactions between different parts of the project. Implementing draggable windows, managing which window stays on top, saving notes with Local Storage, building the wallpaper system, and making every application work together without breaking existing features involved a lot of debugging and iteration. I’m most proud of how much I learned while building this project. I started with a simple idea and gradually added more functionality, from custom window management to persistent storage and desktop interactions. Seeing all the individual pieces come together into one polished project was really satisfying. Click Start System to enter SPACE OS. Open apps from the dock, drag windows around the desktop, right-click to access desktop options, change wallpapers through Settings, explore the Mission and Solar System apps, and try the Notes app. Notes save automatically, and you can also press Ctrl + S to save them manually.", "repo": "https://github.com/ShubhDalmia9/Shubh-Hacktime", "demo": "https://shubhdalmia9.github.io/SPACE-OS/"}, {"ship_num": 2, "ts": "2026-06-24T08:41:35Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I Made: I created SPACE OS, a browser-based operating system inspired by space exploration. Users can interact with different applications on the desktop, including a Space Missions database and a Space Facts generator. What Was Challenging : The most challenging part was implementing the window system. I had to figure out how to make windows open, close, and be draggable around the screen. Managing multiple applications and making the desktop behave like a real operating system also took a lot of trial and error. I spent a significant amount of time debugging JavaScript and improving the overall user experience. What I’m Proud Of: I’m most proud of turning a basic personalOS project into something with a clear theme and purpose. Instead of creating random applications, I built an operating system centered around space exploration. I also enjoyed improving the visual design, creating a custom desktop environment, and making the applications interactive rather than static pages. How to Test SPACE OS Open the Welcome window to learn about the project. Click the Space Missions icon to explore major milestones in space exploration. Click the Space Facts icon and use the button to generate random facts about space. Drag application windows around the desktop. Close and reopen applications using the desktop icons and window controls.", "repo": "https://github.com/ShubhDalmia9/Shubh-Hacktime", "demo": "https://shubhdalmia9.github.io/SPACE-OS/"}]...
|
[{"post_id": 16248, "ts": "202 [{"post_id": 16248, "ts": "2026-06-26T12:04:44Z", "hours": 4.0, "text": "Devlog 5 – UI Overhaul & System Polish I made Space OS feel like a real desktop operating system instead of just a collection of windows. Rather than adding more apps, I focused on improving the user experience and polishing the entire interface. What’s New Redesigned the dock with a modern glassmorphism look, smoother hover animations, and active app indicators. Standardized the design of every application by giving all windows a consistent header, borders, colors, buttons, and typography. Added a fully functional Settings application with wallpaper customization and system information. Implemented a custom right-click context menu for quick desktop actions such as opening Settings, creating a new note, and changing the wallpaper. Improved the desktop boot sequence with a startup screen and smoother transitions. Added support for multiple wallpapers that can be changed directly from inside the operating system. Upgraded the Notes app with automatic saving using local storage, so notes remain even after refreshing or reopening the OS. Added Ctrl + S support inside the Notes app along with a “Notes Saved” notification for a more desktop-like experience. Improved window management with proper dragging, window focus, and layering so active windows always stay on top. Polish & Improvements Unified the color palette across every application. Refined the overall desktop layout and spacing. Improved button styling, inputs, and window appearance. Fixed numerous UI inconsistencies throughout the operating system. Continued optimizing the codebase while preparing the remaining apps for final polish."}, {"post_id": 16121, "ts": "2026-06-26T06:37:04Z", "hours": 2.0, "text": "Devlog #5 Today I focused on adding more features to make SPACE OS feel more like a real desktop environment. I added a new Notes application where users can create and save their own notes while using the OS. It was a fun feature to build and makes the project much more useful.I also fixed the Space Missions application and cleaned up a few issues to make it work more smoothly. Another thing I changed was the desktop itself—I removed page scrolling so the screen behaves more like a real operating system.One of the biggest additions was a dock at the bottom of the screen. All of the applications can now be launched directly from the dock, making the desktop much easier to navigate.I also added a right-click context menu. Users can now right-click anywhere on the desktop to refresh the page, open the settings, or change the wallpaper, making the desktop feel much more interactive.Finally, I started working on a startup sequence. There is now a startup button that users can click to boot into SPACE OS, giving the project a more realistic operating system experience right from the beginning."}, {"post_id": 14940, "ts": "2026-06-24T08:38:32Z", "hours": 0.0, "text": "Devlog #4I spent this final stretch polishing SPACE OS and making sure everything felt complete. Most of the major features were already working, so my focus was on improving the experience and fixing small issues that I noticed while testing.I refined the desktop layout, cleaned up the application windows, and made sure everything opened, moved, and closed properly. I also expanded the content inside the applications. The Space Missions Database now includes several important missions from different countries and organizations, and the Space Facts application provides random facts that make the OS more interactive and fun to explore.A lot of the work during this stage was testing. I kept opening applications, dragging windows around, and checking that everything behaved as expected. There were a few bugs and layout issues along the way, but after some adjustments I was able to get everything working smoothly.With the Welcome Window, Space Missions Database, and Space Facts applications all finished, SPACE OS now feels like a complete project. It’s been really cool seeing it grow from a simple webpage into a small browser-based operating system centered around space exploration."}, {"post_id": 14932, "ts": "2026-06-24T07:55:28Z", "hours": 2.0, "text": "Devlog #3 - I decided to completely change the OS and make it fully space-themed. Instead of being focused on a variety of interests, the project now revolves around space exploration and astronomy. I updated the design, content, and overall feel of the dashboard to match this new theme.I also added new applications to make the project more interactive. One application lets users explore important moments in space history, while another generates interesting space facts. A lot of my time was spent improving the user experience. Windows can now be moved around the screen, and users can close applications when they are finished with them. These changes make the project feel much more like a real desktop environment.At this point, I’m mostly finishing things up, fixing small issues, and making sure everything works smoothly. The space theme is now the default theme of the project, and I’m really happy with how the whole dashboard has come together."}, {"post_id": 14418, "ts": "2026-06-23T15:22:48Z", "hours": 1.0, "text": "Devlog #2 - I spent a lot of time working today. At first, I was having trouble getting some parts of the project to work the way I wanted, and I ended up changing quite a few things. I updated the UI, cleaned up the layout, and made the whole dashboard feel more polished.One of the biggest changes was moving my code into separate HTML, CSS, and JavaScript files. It took some time to reorganize everything, but it made the project much cleaner and easier to work with. I also continued improving the live clock and made several small adjustments to the design.There were definitely moments where things broke and I had to go back and fix them, but after a lot of testing and tweaking, I finally got everything working properly. The project now looks much better than it did before, and I’m happy with how it’s coming together."}, {"post_id": 14213, "ts": "2026-06-23T06:39:53Z", "hours": 1.0, "text": "Devlog #1 – Building My Personal Operating System What I worked on today:Started building my personal OS by following an OS development tutorial.Added a live time and date display.Added Michael Scott quotes to make the OS more fun and personal.Added a section about my interests and hobbies.Added images related to each interest.Added links below each interest that open webpages with more information, biographies, or Wikipedia articles.Added a black hole GIF as the background.Worked on organizing the layout and improving the design."}]...
|
Title: SPACE OS by @shubhdalmia8 | Stardance
Devl Title: SPACE OS by @shubhdalmia8 | Stardance
Devlogs:
Devlog #1 – Building My Personal Operating System What I worked on today:Started building my personal OS by following an OS development tutorial.Added a live time and date display.Added Michael Scott quotes to make the OS more fun and personal.Added a section about my interests and hobbies.Added images related to each interest.Added links below each interest that open webpages with more information, biographies, or Wikipedia articles.Added a black hole GIF as the background.Worked on organizing the layout and improving the design.
Devlog #2 - I spent a lot of time working today. At first, I was having trouble getting some parts of the project to work the way I wanted, and I ended up changing quite a few things. I updated the UI, cleaned up the layout, and made the whole dashboard feel more polished.One of the biggest changes was moving my code into separate HTML, CSS, and JavaScript files. It took some time to reorganize everything, but it made the project much cleaner and easier to work with. I also continued improving the live clock and made several small adjustments to the design.There were definitely moments where things broke and I had to go back and fix them, but after a lot of testing and tweaking, I finally got everything working properly. The project now looks much better than it did before, and I’m happy with how it’s coming together.
Devlog #3 - I decided to completely change the OS and make it fully space-themed. Instead of being focused on a variety of interests, the project now revolves around space exploration and astronomy. I updated the design, content, and overall feel of the dashboard to match this new theme.I also added new applications to make the project more interactive. One application lets users explore important moments in space history, while another generates interesting space facts. A lot of my time was spent improving the user experience. Windows can now be moved around the screen, and users can close applications when they are finished with them. These changes make the project feel much more like a real desktop environment.At this point, I’m mostly finishing things up, fixing small issues, and making sure everything works smoothly. The space theme is now the default theme of the project, and I’m really happy with how the whole dashboard has come together.
Devlog #4I spent this final stretch polishing SPACE OS and making sure everything felt complete. Most of the major features were already working, so my focus was on improving the experience and fixing small issues that I noticed while testing.I refined the desktop layout, cleaned up the application windows, and made sure everything opened, moved, and closed properly. I also expanded the content inside the applications. The Space Missions Database now includes several important missions from different countries and organizations, and the Space Facts application provides random facts that make the OS more interactive and fun to explore.A lot of the work during this stage was testing. I kept opening applications, dragging windows around, and checking that everything behaved as expected. There were a few bugs and layout issues along the way, but after some adjustments I was able to get everything working smoothly.With the Welcome Window, Space Missions Database, and Space Facts applications all finished, SPACE OS now feels like a complete project. It’s been really cool seeing it grow from a simple webpage into a small browser-based operating system centered around space exploration.
Devlog #5 Today I focused on adding more features to make SPACE OS feel more like a real desktop environment. I added a new Notes application where users can create and save their own notes while using the OS. It was a fun feature to build and makes the project much more useful.I also fixed the Space Missions application and cleaned up a few issues to make it work more smoothly. Another thing I changed was the desktop itself—I removed page scrolling so the screen behaves more like a real operating system.One of the biggest additions was a dock at the bottom of the screen. All of the applications can now be launched directly from the dock, making the desktop much easier to navigate.I also added a right-click context menu. Users can now right-click anywhere on the desktop to refresh the page, open the settings, or change the wallpaper, making the desktop feel much more interactive.Finally, I started working on a startup sequence. There is now a startup button that users can click to boot into SPACE OS, giving the project a more realistic operating system experience right from the beginning.
Devlog 5 – UI Overhaul & System Polish I made Space OS feel like a real desktop operating system instead of just a collection of windows. Rather than adding more apps, I focused on improving the user experience and polishing the entire interface. What’s New Redesigned the dock with a modern glassmorphism look, smoother hover animations, and active app indicators. Standardized the design of every application by giving all windows a consistent header, borders, colors, buttons, and typography. Added a fully functional Settings application with wallpaper customization and system information. Implemented a custom right-click context menu for quick desktop actions such as opening Settings, creating a new note, and changing the wallpaper. Improved the desktop boot sequence with a startup screen and smoother transitions. Added support for multiple wallpapers that can be changed directly from inside the operating system. Upgraded the Notes app with automatic saving using local storage, so notes remain even after refreshing or reopening the OS. Added Ctrl + S support inside the Notes app along with a “Notes Saved” notification for a more desktop-like experience. Improved window management with proper dragging, window focus, and layering so active windows always stay on top. Polish & Improvements Unified the color palette across every application. Refined the overall desktop layout and spacing. Improved button styling, inputs, and window appearance. Fixed numerous UI inconsistencies throughout the operating system. Continued optimizing the codebase while preparing the remaining apps for final polish.
Ships:
What I Made: I created SPACE OS, a browser-based operating system inspired by space exploration. Users can interact with different applications on the desktop, including a Space Missions database and a Space Facts generator. What Was Challenging : The most challenging part was implementing the window system. I had to figure out how to make windows open, close, and be draggable around the screen. Managing multiple applications and making the desktop behave like a real operating system also took a lot of trial and error. I spent a significant amount of time debugging JavaScript and improving the overall user experience. What I’m Proud Of: I’m most proud of turning a basic personalOS project into something with a clear theme and purpose. Instead of creating random applications, I built an operating system centered around space exploration. I also enjoyed improving the visual design, creating a custom desktop environment, and making the applications interactive rather than static pages. How to Test SPACE OS Open the Welcome window to learn about the project. Click the Space Missions icon to explore major milestones in space exploration. Click the Space Facts icon and use the button to generate random facts about space. Drag application windows around the desktop. Close and reopen applications using the desktop icons and window controls.
I built SPACE OS, an interactive browser-based desktop operating system using HTML, CSS, and JavaScript. It features a Mission Explorer, Solar System Explorer, Space Facts generator, persistent Notes app, wallpaper customization, draggable windows, a dock, and desktop shortcuts, all designed to make learning about space more engaging. The biggest challenge was handling all the interactions between different parts of the project. Implementing draggable windows, managing which window stays on top, saving notes with Local Storage, building the wallpaper system, and making every application work together without breaking existing features involved a lot of debugging and iteration. I’m most proud of how much I learned while building this project. I started with a simple idea and gradually added more functionality, from custom window management to persistent storage and desktop interactions. Seeing all the individual pieces come together into one polished project was really satisfying. Click Start System to enter SPACE OS. Open apps from the dock, drag windows around the desktop, right-click to access desktop options, change wallpapers through Settings, explore the Mission and Solar System apps, and try the Notes app. Notes save automatically, and you can also press Ctrl + S to save them manually....
|
1792878493.692562
|
1793742493.692562
|
|
23505
|
Meteor Dance by @floren_duerinck | Stardance
|
floren_duerinck
|
2
|
8.0
|
89
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-12T10:11:13Z", "hours": 2.0, "multiplier": 12.9, "payout": 21, "blessing": "neutral", "text": "I made Meteor Dance, a space arcade game where you dodge a meteor shower using star warnings. The stars light up before a meteor falls. I’m most proud of how the difficulty scaling feels — it starts calm and slowly builds into chaos as more and more meteors rain down. This is my second ship for Stardance, and I feel like I’ve learned a lot as this was my first game. I also tried to get the game running in the browser via HTML5 export, but ran into some technical issues with GameMaker’s HTML5 target, so for now it’s Windows only!", "repo": "https://github.com/Fooofooojooo/Stardance", "demo": "https://fooofooojooo.itch.io/meteor-dance"}, {"ship_num": 2, "ts": "2026-06-25T20:33:41Z", "hours": 6.0, "multiplier": 10.69, "payout": 68, "blessing": "neutral", "text": "Meteor Dance is a space arcade game, inspired by ‘‘stardance’’, where a meteor shower is approaching your spacecraft. Stars light up to warn you where the next meteor will fall , follow their rhythm to survive! Built in GameMaker from scratch over 5 devlogs. The trickiest part was getting the warning system working so the detector and meteor follow the exact same path since i’m new to coding. I’m most proud of the difficulty scaling and ice physics which make dodging feel really satisfying. Download it on itch.io for Windows!", "repo": "https://github.com/Fooofooojooo/Stardance", "demo": "https://fooofooojooo.itch.io/meteor-dance"}]...
|
[{"post_id": 24821, "ts": "202 [{"post_id": 24821, "ts": "2026-07-08T17:08:55Z", "hours": 0.8333, "text": "7: Particles & Scripts! I wrote my first standalone script in GameMaker, separate from any object event. I used it to handle particle effects for the player’s engine trail, which trails behind the ship as you move. Writing reusable scripts is a big step up from putting everything in object events, and it took some figuring out to get the particle system set up correctly. Really happy with how the engine trail turned out!"}, {"post_id": 23561, "ts": "2026-07-06T16:29:26Z", "hours": 0.8333, "text": "6: Transitions & Textures! Small but satisfying session today. I added smooth fade transitions between rooms, giving Meteor Dance a much more polished feel when moving between the title screen, game and game over screen. I also went back and tweaked some textures. Sometimes it’s the little things that make a game feel finished. I’m so happy that I’m almost done with my first game!"}, {"post_id": 15656, "ts": "2026-06-25T13:44:22Z", "hours": 0.8867, "text": "5: Polish & Sounds! LAST DEVLOG BEFORE SHIP I added a theme song that loops throughout the game, giving Meteor Dance a proper atmosphere. I also went back and polished all the sprites, the player and stars all look a lot cleaner now. On the sound side I added sound effects to bring the game to life, every meteor and star interaction now has audio feedback which makes the whole thing feel much more satisfying to play. Finally I added a bunch of quality of life improvements to smooth out the experience."}, {"post_id": 14958, "ts": "2026-06-24T09:16:18Z", "hours": 1.5806, "text": "4: Game & Over! This session I tried giving Meteor Dance a proper game loop. I started with a title screen to give the game a real entry point, then tackled difficulty scaling, the plan was to spawn more meteor spawners as the score increases, hitting thresholds at 10, 30, 50 and beyond. It took a while to get working, and after a lot of head scratching I realised I’d simply forgotten to add the difficulty object to the room. Classic. I also built out a full game over screen that shows your final score and tracks your all time high score using a save file, so there’s now a real reason to keep playing and push for a better run."}, {"post_id": 13883, "ts": "2026-06-22T19:08:13Z", "hours": 1.7089, "text": "3: Textures and Fonts! This session was all about making Meteor Dance feel alive. I added sprites for the player, meteors and stars, giving everything a proper look instead of a placeholder. The player got an animation too, which makes movement feel a lot more dynamic. I also added a score system that ticks up every time a meteor passes, simple but it works. On the visual side, all the background stars now pulse gently in and out, which not only looks great but adds a subtle challenge: it’s harder to spot which stars are lighting up to warn you of incoming meteors. A small detail that makes the core mechanic more interesting. Finally I brought in a proper font to make the UI feel polished. Starting to look like a real game"}, {"post_id": 13613, "ts": "2026-06-22T09:52:10Z", "hours": 1.5936, "text": "2: Stars and Bugs! Fixed a bug where a spawner spawned a meteor and a detector (I forgot to remove old code). There are now stars that spawn randomly! There’s 5 different sprites for the stars and every one has a bright and a base mode. The textures are placeholders. Added randomly sized meteors and increased their speed. And I had to choose between making the detectors the sames size as the meteors (more stars light up) or keeping them all the same size. Chose the latter because it adds a litle suprise when a big meteor falls. Stars light up when they collide with a detector and the meteors follow the path of the detectors."}, {"post_id": 13124, "ts": "2026-06-21T13:48:35Z", "hours": 0.5694, "text": "1: Movement and Meteors! This is the first devlog of my project “Meteor Dance”! The concept is that you are a spaceship traveling through a meteor storm. To know what space to avoid in order to not get hit by a meteor, the stars will twinkle where they will pass. I added objects that spawn meteors and warnings, the warnings will tell the stars when to light up and the meteors are obstacles you have to avoid. I also made player movement, but I accidentally deleted that timelapse… For now there are no stars, but I added little circles that show where a meteor will fall."}]...
|
Title: Meteor Dance by @floren_duerinck | Stardanc Title: Meteor Dance by @floren_duerinck | Stardance
Devlogs:
1: Movement and Meteors! This is the first devlog of my project “Meteor Dance”! The concept is that you are a spaceship traveling through a meteor storm. To know what space to avoid in order to not get hit by a meteor, the stars will twinkle where they will pass. I added objects that spawn meteors and warnings, the warnings will tell the stars when to light up and the meteors are obstacles you have to avoid. I also made player movement, but I accidentally deleted that timelapse… For now there are no stars, but I added little circles that show where a meteor will fall.
2: Stars and Bugs! Fixed a bug where a spawner spawned a meteor and a detector (I forgot to remove old code). There are now stars that spawn randomly! There’s 5 different sprites for the stars and every one has a bright and a base mode. The textures are placeholders. Added randomly sized meteors and increased their speed. And I had to choose between making the detectors the sames size as the meteors (more stars light up) or keeping them all the same size. Chose the latter because it adds a litle suprise when a big meteor falls. Stars light up when they collide with a detector and the meteors follow the path of the detectors.
3: Textures and Fonts! This session was all about making Meteor Dance feel alive. I added sprites for the player, meteors and stars, giving everything a proper look instead of a placeholder. The player got an animation too, which makes movement feel a lot more dynamic. I also added a score system that ticks up every time a meteor passes, simple but it works. On the visual side, all the background stars now pulse gently in and out, which not only looks great but adds a subtle challenge: it’s harder to spot which stars are lighting up to warn you of incoming meteors. A small detail that makes the core mechanic more interesting. Finally I brought in a proper font to make the UI feel polished. Starting to look like a real game
4: Game & Over! This session I tried giving Meteor Dance a proper game loop. I started with a title screen to give the game a real entry point, then tackled difficulty scaling, the plan was to spawn more meteor spawners as the score increases, hitting thresholds at 10, 30, 50 and beyond. It took a while to get working, and after a lot of head scratching I realised I’d simply forgotten to add the difficulty object to the room. Classic. I also built out a full game over screen that shows your final score and tracks your all time high score using a save file, so there’s now a real reason to keep playing and push for a better run.
5: Polish & Sounds! LAST DEVLOG BEFORE SHIP I added a theme song that loops throughout the game, giving Meteor Dance a proper atmosphere. I also went back and polished all the sprites, the player and stars all look a lot cleaner now. On the sound side I added sound effects to bring the game to life, every meteor and star interaction now has audio feedback which makes the whole thing feel much more satisfying to play. Finally I added a bunch of quality of life improvements to smooth out the experience.
6: Transitions & Textures! Small but satisfying session today. I added smooth fade transitions between rooms, giving Meteor Dance a much more polished feel when moving between the title screen, game and game over screen. I also went back and tweaked some textures. Sometimes it’s the little things that make a game feel finished. I’m so happy that I’m almost done with my first game!
7: Particles & Scripts! I wrote my first standalone script in GameMaker, separate from any object event. I used it to handle particle effects for the player’s engine trail, which trails behind the ship as you move. Writing reusable scripts is a big step up from putting everything in object events, and it took some figuring out to get the particle system set up correctly. Really happy with how the engine trail turned out!
Ships:
Meteor Dance is a space arcade game, inspired by ‘‘stardance’’, where a meteor shower is approaching your spacecraft. Stars light up to warn you where the next meteor will fall , follow their rhythm to survive! Built in GameMaker from scratch over 5 devlogs. The trickiest part was getting the warning system working so the detector and meteor follow the exact same path since i’m new to coding. I’m most proud of the difficulty scaling and ice physics which make dodging feel really satisfying. Download it on itch.io for Windows!
I made Meteor Dance, a space arcade game where you dodge a meteor shower using star warnings. The stars light up before a meteor falls. I’m most proud of how the difficulty scaling feels — it starts calm and slowly builds into chaos as more and more meteors rain down. This is my second ship for Stardance, and I feel like I’ve learned a lot as this was my first game. I also tried to get the game running in the browser via HTML5 export, but ran into some technical issues with GameMaker’s HTML5 target, so for now it’s Windows only!...
|
1793065991.6630445
|
1793152391.6630445
|
|
23560
|
Arcium OS by @DanngDev | Stardance
|
DanngDev
|
2
|
7.63
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T12:59:07Z", "hours": 0.0, "multiplier": 3.9, "payout": 1, "blessing": "neutral", "text": "Re-Ship This is a re-ship as the old one is not getting reviewed and it lets me for some reason", "repo": "https://github.com/Volcar144/arcium-os", "demo": "https://arcium-os.vercel.app"}, {"ship_num": 2, "ts": "2026-06-30T11:44:20Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I Re-Made the tutorial by making it in nextjs and tailwind, so I had to do most of the guide from scratch. I am happy with the windows system and overall, think that v1 is done!", "repo": "https://github.com/Volcar144/arcium-os", "demo": "https://arcium-os.vercel.app"}]...
|
[{"post_id": 21003, "ts": "202 [{"post_id": 21003, "ts": "2026-07-02T19:09:10Z", "hours": 0.63, "text": "Just made a whole chat UI for my ai window… Only to realise it was already a shadcn/ui component"}, {"post_id": 19469, "ts": "2026-06-30T19:58:33Z", "hours": 0.3039, "text": "Update README"}, {"post_id": 18553, "ts": "2026-06-29T18:57:29Z", "hours": 3.5514, "text": "Added SO MANY THINGS First, i finished off the window system as i had to modify the z-index stuff from the code for typescript, though I admit the dragging stuff was much easier, I also added clickable icons with hover bg’s and a notes app ( With MD formatting ) that saves to local storage. If you feel like anything’s missing, suggest it in the comments and I will probably add it"}, {"post_id": 15540, "ts": "2026-06-25T08:16:07Z", "hours": 3.0408, "text": "Added bg, closeable windows and made the windows draggable on the top bar"}, {"post_id": 14328, "ts": "2026-06-23T12:44:33Z", "hours": 0.765, "text": "Reset After working on plain html for a while, I got frustrate d enough with css that I have swapped to a next.js project so i can use tailwind. :sigh:"}]...
|
Title: Arcium OS by @DanngDev | Stardance
Devlogs Title: Arcium OS by @DanngDev | Stardance
Devlogs:
Reset After working on plain html for a while, I got frustrate d enough with css that I have swapped to a next.js project so i can use tailwind. :sigh:
Added bg, closeable windows and made the windows draggable on the top bar
Added SO MANY THINGS First, i finished off the window system as i had to modify the z-index stuff from the code for typescript, though I admit the dragging stuff was much easier, I also added clickable icons with hover bg’s and a notes app ( With MD formatting ) that saves to local storage. If you feel like anything’s missing, suggest it in the comments and I will probably add it
Update README
Just made a whole chat UI for my ai window… Only to realise it was already a shadcn/ui component
Ships:
I Re-Made the tutorial by making it in nextjs and tailwind, so I had to do most of the guide from scratch. I am happy with the windows system and overall, think that v1 is done!
Re-Ship This is a re-ship as the old one is not getting reviewed and it lets me for some reason...
|
1792993790.119707
|
1793080190.119707
|
|
23593
|
My very own WebOS by @tryingmybest | Stardance
|
tryingmybest
|
2
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T14:25:48Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Added on new features for my F1OS, faced challenges mainly related to time management to get the work done due to schools starting. Other than that faced a lot of bugs in making the F1 wiki but the process was definitely fun. When your testing or using this, just have F-un (pun intended - un means one in french)", "repo": "https://github.com/MasterClassmate3004/cricket-os-main", "demo": "https://formula-one-os.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-30T08:26:42Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a WebOS themed on Formula 1. The idea was to connect to engineering marvels together, the computer and the F1 car, and so giving the WebOS a f1 touch was extremely fun. I had fun working on this and yeah added different features related to f1, more coming soon in the next ship", "repo": "https://github.com/MasterClassmate3004/cricket-os-main", "demo": "https://formula-one-os.vercel.app/"}]...
|
[{"post_id": 58920, "ts": "202 [{"post_id": 58920, "ts": "2026-08-31T14:18:32Z", "hours": 6.1047, "text": "Added the last set of features and fixed some other bugs: NEW wiki app that contains information about all your favourite drivers and teams new settings app to mimic controls like a F1 car (it’s more like a place holder) the apps are now draggable on the home screen changed a bit of app icons, updated the F1 calendar with winners and other changes that took place"}, {"post_id": 38090, "ts": "2026-07-31T09:41:36Z", "hours": 1.135, "text": "Calculator app addition Added a new f1-themed calculator application for our web based operating system, includes an easter egg where entering the driver’s number shows its name later…"}, {"post_id": 21786, "ts": "2026-07-03T22:00:26Z", "hours": 0.5364, "text": "more bugs and fixes for the webOS, trying to add more features now"}, {"post_id": 19072, "ts": "2026-06-30T08:24:36Z", "hours": 0.6017, "text": "F1-WebOS We are back people! With more refinements and bug fixes this time, we have a proper driver lineup, all the 11 constructor teams to choose from, easter eggs and much more! I dont know how to describe it! just try it out people, and share more ideas of what more features we can add “Simply lovely”"}, {"post_id": 18384, "ts": "2026-06-29T14:57:10Z", "hours": 0.8458, "text": "After landing page shared in devlog 1, completed creating my own WebOS related to formula 1, added timings, 3 applications related to f1 for now, one shows information about the constructor’s team you have selected, the other is telemetry info with lap times of different drivers and the 3rd one is the f1 calendar ofc. check it out and tell me whats your favourite f1 team"}, {"post_id": 14244, "ts": "2026-06-23T08:10:09Z", "hours": 1.2378, "text": "Working on creating the ultimate F1 Operating System! Imagine turning ur laptop into the F1 car and F1-like theme with all the telemetry data, fast rebooting and the F1 styled apps. Worked on the landing page for the F1 app, current v1-2, will need more refinement as and when continued. Pls share feedback and I hope yall like it!"}]...
|
Title: My very own WebOS by @tryingmybest | Starda Title: My very own WebOS by @tryingmybest | Stardance
Devlogs:
Working on creating the ultimate F1 Operating System! Imagine turning ur laptop into the F1 car and F1-like theme with all the telemetry data, fast rebooting and the F1 styled apps. Worked on the landing page for the F1 app, current v1-2, will need more refinement as and when continued. Pls share feedback and I hope yall like it!
After landing page shared in devlog 1, completed creating my own WebOS related to formula 1, added timings, 3 applications related to f1 for now, one shows information about the constructor’s team you have selected, the other is telemetry info with lap times of different drivers and the 3rd one is the f1 calendar ofc. check it out and tell me whats your favourite f1 team
F1-WebOS We are back people! With more refinements and bug fixes this time, we have a proper driver lineup, all the 11 constructor teams to choose from, easter eggs and much more! I dont know how to describe it! just try it out people, and share more ideas of what more features we can add “Simply lovely”
more bugs and fixes for the webOS, trying to add more features now
Calculator app addition Added a new f1-themed calculator application for our web based operating system, includes an easter egg where entering the driver’s number shows its name later…
Added the last set of features and fixed some other bugs: NEW wiki app that contains information about all your favourite drivers and teams new settings app to mimic controls like a F1 car (it’s more like a place holder) the apps are now draggable on the home screen changed a bit of app icons, updated the F1 calendar with winners and other changes that took place
Ships:
I have made a WebOS themed on Formula 1. The idea was to connect to engineering marvels together, the computer and the F1 car, and so giving the WebOS a f1 touch was extremely fun. I had fun working on this and yeah added different features related to f1, more coming soon in the next ship
Added on new features for my F1OS, faced challenges mainly related to time management to get the work done due to schools starting. Other than that faced a lot of bugs in making the F1 wiki but the process was definitely fun. When your testing or using this, just have F-un (pun intended - un means one in french)...
|
1792990560.727555
|
1793076960.727555
|
|
23703
|
Corranzo by @joedesmos | Stardance
|
joedesmos
|
2
|
360.75
|
326
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T18:08:59Z", "hours": 19.0, "multiplier": 16.55, "payout": 217, "blessing": "neutral", "text": "NEW FEATURES ADDED - Added OMR so that you can just upload a pdf and it will automatically made the midi and mxl/xml file for you! This saves lots of time and allows you to just upload any sheet music you want without the worries of extra steps. Also added a tutorial of how to use the app as well as simplified some the the UI. Lastly, overall just improved the user experience and made things easier to use as well as fixed some bugs. This is Ship #2 as the first ship was more of an MVP while this is a working product now. Website: Corranzo.com", "repo": "https://github.com/joedesmos-co/Corranzo", "demo": "https://corranzo.com"}, {"ship_num": 2, "ts": "2026-06-24T16:42:18Z", "hours": 7.0, "multiplier": 15.92, "payout": 109, "blessing": "neutral", "text": "I made a music app called Corranzo. You can import YOUR OWN sheet music which you can annotate on. This all saves locally to the browser so you can comeback anytime. But, what makes Corranzo be different and stand out is its wait for you mode. You can plug in a midi keyboard or just use the mic on your laptop, phone, etc. and it will help you to learn the piece you want to learn by waiting for you to play the next note(s) in the piece. To activate this you need to upload the sheet music, the mxl/xml, and a midi file of the piece. Along with this, there is also playback mode where you can hear and see your piece in action. Thank you for testing my project!!", "repo": "https://github.com/joedesmos-co/Corranzo", "demo": "https://corranzo.com"}]...
|
[{"post_id": 83079, "ts": "202 [{"post_id": 83079, "ts": "2026-10-26T20:13:44Z", "hours": 9.1431, "text": "NEW FEATURE ALERT :0 So this new feature is called audio vision. Now. What is audio vision you may ask? well basically all you gotta do is upload a mp3 and the website will automatically make you a playable tab for guitar or sheet music for piano! So yeah its not like super accurate or anything yet its a work in progress but we are getting there slowly but surely."}, {"post_id": 82280, "ts": "2026-10-24T13:28:34Z", "hours": 14.1422, "text": "lowk tryna make the guitar omr better cuz its really bad right now its goin well."}, {"post_id": 80805, "ts": "2026-10-18T20:43:23Z", "hours": 48.3214, "text": "working on fixing bugs"}, {"post_id": 78523, "ts": "2026-10-11T02:44:14Z", "hours": 12.3525, "text": "continued to work on a NEW FEATURE super super cool i will talk all about it in the next log. the pictures are kinda boring my bad. idk what else to put"}, {"post_id": 78154, "ts": "2026-10-09T20:12:04Z", "hours": 22.7408, "text": "more behind the scenes stuff. wait for you mode was kinda messed up so fixing that"}, {"post_id": 77556, "ts": "2026-10-07T12:58:16Z", "hours": 23.2825, "text": "new ui fixes and other behind the scenes stuff"}, {"post_id": 75015, "ts": "2026-09-28T21:16:51Z", "hours": 9.2719, "text": "New ui finally done after forever"}, {"post_id": 72161, "ts": "2026-09-22T10:50:41Z", "hours": 20.0517, "text": "More UI stuff and just waiting for the ai to finish training it takes a while"}, {"post_id": 69374, "ts": "2026-09-16T22:31:30Z", "hours": 49.67, "text": "I have been training the ai for 50 hours. it is still not done. I think I need to optimize this thing more lol also working on ui updates and making it look nice while the ai is cooking :)"}, {"post_id": 63373, "ts": "2026-09-07T04:59:38Z", "hours": 9.6072, "text": "Training the AI on 50 ish thousand different scores. Currently making a database of all the scores and turning them into training data then when it is done (soon as you can see in the pic) I will use the dataset to train the AI"}, {"post_id": 61041, "ts": "2026-09-03T19:04:35Z", "hours": 74.1122, "text": "It has been a while but I have been working a long time. So basically I have continued to work on omr and have also worked on some ui things. Omr has now gotta a full ai that looks at scores to generate the practice scene. Also, the visual practice area is now transformed to match the score exactly instead of guessing where the notes are."}, {"post_id": 36674, "ts": "2026-07-28T21:44:52Z", "hours": 10.7281, "text": "MAJOR OMR UPGRADES and a lot of bug fixes and also some ui / ux improvements and just made the app look a lil nicer. Also I realized that I never said what OMR was so basically OMR is short for optical music recognition. So in Corranzo you need to upload a pdf, midi file, and mxl / xml file. The mxl / xml file and midi allow the song to be heard and also the scorefollow and the wait for you mode to work. What OMR does is it allows you to just have a pdf and the OMR will recognize symbols, notation, measures, beats, etc. and make the mxl / xml and midi file for you so all you need is a pdf. It is very challenging to get right and a lot of times it is plain wrong so right now what ive just been doing for around 20 - 30 ish hours of this time is just improving the OMR because its kind of what makes this product real."}, {"post_id": 30319, "ts": "2026-07-17T19:33:59Z", "hours": 10.2422, "text": "I am working on improving OMR and Mic quality I have successfully improved mic quality for checking if you play the correct notes but OMR is proving to be very difficult."}, {"post_id": 24457, "ts": "2026-07-08T01:08:29Z", "hours": 3.2911, "text": "Improved Chord recognition and issues with playing more than 1 note at a time using mic detection."}, {"post_id": 23135, "ts": "2026-07-05T22:15:29Z", "hours": 0.8031, "text": "Added a practice library that includes some songs you can play."}, {"post_id": 23099, "ts": "2026-07-05T20:53:43Z", "hours": 16.9911, "text": "Added guitar to the app. So you can now practice guitar and also practice piano. Also added a visual practice mode now so you can see the notes closer up and it just makes it a lot easier to practice. Also improved the omr and the mic detection for wait for you mode."}, {"post_id": 20143, "ts": "2026-07-01T18:05:59Z", "hours": 15.6933, "text": "NEW FEATURES - Added OMR so that you can just upload a pdf and it will automatically made the midi and mxl/xml file for you! This saves lots of time and allows you to just upload any sheet music you want without the worries of extra steps. Also added a tutorial of how to use the app as well as simplified some the the UI. Lastly, overall just improved the user experience and made things easier to use as well as fixed some bugs. Website: Corranzo.com"}, {"post_id": 16346, "ts": "2026-06-26T16:23:32Z", "hours": 3.0986, "text": "Majorly updated the ui and also improved some of the engines and added a debug feature. Along with this your music if it is rotated or weridly shaped / moved it will auto rotate and fix itself."}, {"post_id": 15138, "ts": "2026-06-24T16:25:08Z", "hours": 6.8275, "text": "I released Corranzo v0.1 as it is now ready for public beta. I have been working on polishing the app and making sure that the score follow works well as before it was a little inaccurate. I would really appreciate people testing it and giving me feedback thank you! Website: https://corranzo.com"}]...
|
Title: Corranzo by @joedesmos | Stardance
Devlogs Title: Corranzo by @joedesmos | Stardance
Devlogs:
I released Corranzo v0.1 as it is now ready for public beta. I have been working on polishing the app and making sure that the score follow works well as before it was a little inaccurate. I would really appreciate people testing it and giving me feedback thank you! Website: https://corranzo.com
Majorly updated the ui and also improved some of the engines and added a debug feature. Along with this your music if it is rotated or weridly shaped / moved it will auto rotate and fix itself.
NEW FEATURES - Added OMR so that you can just upload a pdf and it will automatically made the midi and mxl/xml file for you! This saves lots of time and allows you to just upload any sheet music you want without the worries of extra steps. Also added a tutorial of how to use the app as well as simplified some the the UI. Lastly, overall just improved the user experience and made things easier to use as well as fixed some bugs. Website: Corranzo.com
Added guitar to the app. So you can now practice guitar and also practice piano. Also added a visual practice mode now so you can see the notes closer up and it just makes it a lot easier to practice. Also improved the omr and the mic detection for wait for you mode.
Added a practice library that includes some songs you can play.
Improved Chord recognition and issues with playing more than 1 note at a time using mic detection.
I am working on improving OMR and Mic quality I have successfully improved mic quality for checking if you play the correct notes but OMR is proving to be very difficult.
MAJOR OMR UPGRADES and a lot of bug fixes and also some ui / ux improvements and just made the app look a lil nicer. Also I realized that I never said what OMR was so basically OMR is short for optical music recognition. So in Corranzo you need to upload a pdf, midi file, and mxl / xml file. The mxl / xml file and midi allow the song to be heard and also the scorefollow and the wait for you mode to work. What OMR does is it allows you to just have a pdf and the OMR will recognize symbols, notation, measures, beats, etc. and make the mxl / xml and midi file for you so all you need is a pdf. It is very challenging to get right and a lot of times it is plain wrong so right now what ive just been doing for around 20 - 30 ish hours of this time is just improving the OMR because its kind of what makes this product real.
It has been a while but I have been working a long time. So basically I have continued to work on omr and have also worked on some ui things. Omr has now gotta a full ai that looks at scores to generate the practice scene. Also, the visual practice area is now transformed to match the score exactly instead of guessing where the notes are.
Training the AI on 50 ish thousand different scores. Currently making a database of all the scores and turning them into training data then when it is done (soon as you can see in the pic) I will use the dataset to train the AI
I have been training the ai for 50 hours. it is still not done. I think I need to optimize this thing more lol also working on ui updates and making it look nice while the ai is cooking :)
More UI stuff and just waiting for the ai to finish training it takes a while
New ui finally done after forever
new ui fixes and other behind the scenes stuff
more behind the scenes stuff. wait for you mode was kinda messed up so fixing that
continued to work on a NEW FEATURE super super cool i will talk all about it in the next log. the pictures are kinda boring my bad. idk what else to put
working on fixing bugs
lowk tryna make the guitar omr better cuz its really bad right now its goin well.
NEW FEATURE ALERT :0 So this new feature is called audio vision. Now. What is audio vision you may ask? well basically all you gotta do is upload a mp3 and the website will automatically make you a playable tab for guitar or sheet music for piano! So yeah its not like super accurate or anything yet its a work in progress but we are getting there slowly but surely.
Ships:
I made a music app called Corranzo. You can import YOUR OWN sheet music which you can annotate on. This all saves locally to the browser so you can comeback anytime. But, what makes Corranzo be different and stand out is its wait for you mode. You can plug in a midi keyboard or just use the mic on your laptop, phone, etc. and it will help you to learn the piece you want to learn by waiting for you to play the next note(s) in the piece. To activate this you need to upload the sheet music, the mxl/xml, and a midi file of the piece. Along with this, there is also playback mode where you can hear and see your piece in action. Thank you for testing my project!!
NEW FEATURES ADDED - Added OMR so that you can just upload a pdf and it will automatically made the midi and mxl/xml file for you! This saves lots of time and allows you to just upload any sheet music you want without the worries of extra steps. Also added a tutorial of how to use the app as well as simplified some the the UI. Lastly, overall just improved the user experience and made things easier to use as well as fixed some bugs. This is Ship #2 as the first ship was more of an MVP while this is a working product now. Website: Corranzo.com...
|
1793051614.5651968
|
1793138014.5651968
|
|
23764
|
Onlinja by @DoMax | Stardance
|
DoMax
|
2
|
55.02
|
946
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T20:31:45Z", "hours": 23.0, "multiplier": 17.29, "payout": 394, "blessing": "neutral", "text": "This is Onlinja, and it’s probably one of the best “easy to understand, hard to master” board games you will ever play. It’s built as a passion project, taking the game Linja as inspiration, but adapting it to be accessible anytime, anywhere! This is the second ship and it focuses entirely on making the most out of this app as possible, without making it feel janky. New additions are heavily impacted by community’s own responses to what should be improved, such as clearer indication of turns, tutorial progress saving, and a bit of my own additions, such as the Settings tab and Post-Game Statistics. While the game itself was kept true to its original core look and feel, the codebase underneath was heavily redefined! With new architecture decisions and SoC (separation of concerns) implementations, now it’s not only easy to expand the code, but easy to use in-person too! I really hope you will like this project and show much support for it. Let’s grow a beautiful and open source world together!", "repo": "https://github.com/domasles/onlinja", "demo": "https://onlinja.domax.lt"}, {"ship_num": 2, "ts": "2026-06-28T21:08:16Z", "hours": 29.0, "multiplier": 19.24, "payout": 552, "blessing": "neutral", "text": "After gifting Linja game to my dad on father’s day, I fell in love with it. And I thought to myself - what if there was a digital version? There was none when I started working on the project, so I decided to give it a shot myself. Just imagine - two players face off across eight parallel lanes, calculating every shift in momentum, where one misstep can cause the opponent to leap past. A game, where you need to balance your positions and plan your moves. And, of course, have fun! Inspired by the classic board game Linja, Onlinja brings minimalist, tactical warfare straight to your pocket. Onlinja features Aggressive (one piece moves twice) and Strategic (two different pieces move) gameplay modes, smart UI, bots, and a lightweight mono-repository utilizing React Native/Expo for the frontend, plus a way to both learn the game and play with your friends, not only against highly competitive bots. This game is very portable, as it was designed to be responsive to your screen size. You can try out the Live Demo instantly at https://onlinja.domax.lt Happy playing! I hope you enjoy this game and become a fan of Onlinja yourself!", "repo": "https://github.com/domasles/onlinja", "demo": "https://onlinja.domax.lt"}]...
|
[{"post_id": 81846, "ts": "202 [{"post_id": 81846, "ts": "2026-10-22T18:23:23Z", "hours": 3.0192, "text": "Quality of life improvements I’m happy to report work on Onlinja took one more step further! Before Stardance closes… After contacting Steffen Spiele directly and telling them about Onlinja, a love letter to one of their games, we settled on a mutual opinion of lack of attribution. Luckily, I managed to implement a distinct “credits” tab without casualties :) And, I am happy to present improvements for both developers and users!! 1. User-end improvements Taking a better look at your newest suggestions, I noticed 2 issues: Unclear tutorial Bland highlight colors I tried tackling both. While I couldn’t shorten the tutorial (as I’m not willing to update the rule spec), a new “Try it out” button was added to notify the player about an action block. The colors were boosted to have better distinction compared to standard lanes :) A spinning loader wheel now indicates when the app is ready to use. 2. Dev-end improvements To make Onlinja’s source also feel welcoming for developers, naming conventions, redundant code and skills were upgraded. Imports were refactored for code that’s easier to read and navigate, SoC is a priority while developing (to not make a mess). Expo 57 makes it easier for anyone to develop and test Onlinja, as newer Expo Go versions expect strict Expo 57+ compatibility. Centralized animation and other systems help when making consistent changes :) Conclusion This devlog (likely the last) demonstrates the most mature version of Onlinja singleplayer. As virtually no time is left before Stardance closes, and I won’t be able to implement multiplayer services, I want to conclude this project by saying a big Thank You to every supported and tester, and I hope I can see a big community grow when multiplayer eventually releases :P"}, {"post_id": 21718, "ts": "2026-07-03T20:12:55Z", "hours": 8.8967, "text": "You want it, I got it! How feedback from the community helped me improve Onlinja When I shipped Onlinja, I did not think about much. I had plans, and I still do, but the most important direction this project went to, I think, is the direction real users wanted the project to evolve in. I am super glad that the community’s notes are actually reported back to the developers. And, to my surprise, many opinions were highly similar. This shows 2 aspects: I am doing something well, when most of the personalized reviews say they love the same features. I missed some crucial points, when the same reviews point out similar improvements to be made, even without knowing what others pointed out. Happily, I wasn’t lazy and I read through the opinions. Not only did they make my heart warmer, but also shown that I was not moving forward with the right features. What exactly did I improve? Although the UI/UX experience was regarded as one of THE best by some, it lacked one thing - clarity when playing. Whose turn was it? No clear indication when a turn changed if you didn’t notice small text changing in the header when staring down to a monitor for minutes straight. This is now fixed. Also, a very simple addition included a “save and resume” feature within the tutorial. Now, even if you refresh the tab or browser crashes, you can’t lose tutorial progress! What won’t likely be implemented and why that makes me sad All of the things I said seem great - feedback-based improvements, better clarity and quality-of-life updates that make a project be worth the time spent creating it. But the 2 features I wish I could’ve added were: BotLabs (custom bot maker) Post-game analysis (like in Chess.com ) First feature was impossible to make the way I wanted due to how the game’s layout is constructed. I sacrificed this feature for a better overall coding experience. It’s not as vital for the project to live, but sad that I could not implement it. The second feature was entirely possible, but very difficult to plan out. What should be the data flow? What controls what? That led to me making a compromise - post-game statistics, that tell you these things: How many moves each player took? How many extra turns each player got? How many pieces ran all the way to the opponent’s base? And I think it’s a fair update :) In conclusion I am very pleased with the reviews and Stardance in general. I get to create what I love and share it with people who might love it as well. I am happy that the feedback made me grow stronger and I am thankful for every single person that helped me improve this project anyhow, opening my eyes on what were the real issues. This project is one of my most ambitious yet, and if you want to check it out, the latest version is out at Onlinja’s official site ! If you can, also follow me and star the project on GitHub !"}, {"post_id": 20305, "ts": "2026-07-01T21:21:25Z", "hours": 8.6608, "text": "Control and power - that’s all that I’m after! This devlog brings new ways to control your experience with Onlinja not only as a user, but also a developer. Great news all along! With the latest update in Onlinja, new systems have launched: Settings System: A system where you can tweak your settings and default preferences for when you launch the app (also, replay the tutorial, as the old dedicated tab is now gone). Tab System: More important for developers, but now the development of Onlinja can speed up significantly because of a convenient tab making system. Major Architecture Overhaul: By working on the imports and general structure, the codebase can feel free of 400-lined files that choked the app. New Animations: Although it’s a side effect of that new Tab System, it makes the tab animations feel consistent, and the UX undoubtedly better. Mobile app issues fixed: Even when a dedicated app is not Onlinja’s primary choice for delivery, I will not abandon it as that’s why I picked React Native instead of normal React (this, and animation issues with normal React). So, now the mobile port functions almost exactly as intended, but if you want to have the designed experience, and are a fan of dedicated apps, you can always click “Add to home screen” in your browser! That sounds great! What about BotLabs? BotLabs are currently in the works. I am still thinking about how to make the architecture right and the UX smooth, but they’re soon to be implemented, letting users customize bots and make Bot vs Bot matches or have personalized bots to play against. A playable demo is live with latest changes! Check out Onlinja’s official site !"}, {"post_id": 18292, "ts": "2026-06-29T12:06:12Z", "hours": 5.2406, "text": "PWA and updated experience That’s right, now you can enjoy Onlinja as a pseudo-standalone app! By finally implementing PWA (Progressive Web Application) support to Onlinja, you can simply install it from any mobile browser. Updated experience? What’s it about? This update features several enhancements: The tutorial was revamped to be easier to follow for anyone. This means no more confusing terms and big text chunks where unnecessary. The app is now excluded from any dark mode settings (possible that some rare instances might change the color scheme, but popular plugins and systems should not alter any styling). Slight performance and UX tweaks to make the game feel smoother. Any more updates planned? Yes! I want to implement an analysis tool to every match or “Bot Labs” where everyone can tweak bot parameters and experiment with the algorithms freely. A second ship should be issued when these are implemented. Online crossplay isn’t in any of my near-future plans. A huge thank you for everyone that supports, tests and anyhow helps me build this project!"}, {"post_id": 17273, "ts": "2026-06-28T00:12:42Z", "hours": 9.8469, "text": "How to play this game?? Great news! No more wondering of how this game works! Today I implemented a fully working tutorial system to Onlinja, and it tells everyone about any aspect of the game you could think of. Onboarding will be really easy now! What do I see there? A ship? Correct! Only a good README, logos and deployment left until a ship can be made. The rest of time will be dedicated just for that. What about standalone, non-web builds? This is React Native! Well, I have some good news and some bad news. Good news is that when I tested it, the standalone app build succeeded. Bad news is that it’s full of visual bugs and inconsistencies with the web build. So web builds will be the primary target of this app before I dedicate a separate week just for transformation to a unified solution. But I see no priority for this as web builds work wonderfully!"}, {"post_id": 15995, "ts": "2026-06-25T23:41:51Z", "hours": 7.2086, "text": "A very friendly update! Want to play Onlinja with your friends? No problem, not anymore! Today I finalized implementing the Pass & Play mode, together with some UI and bot logic enhancements. Gameplay is smoother than ever, offering a very pleasing experience! UI upgrades? Finally! After many thoughts of making the game not feel like a slideshow with very static-feeling updates, this devlog’s changes also include a whole new animation overhaul! With fade transitions and more movement the app finally feels responsive. Anything more? Yes! An architectural refactor and a bot logic upgrade was issued. This makes the game both easier to develop and the bot less prone to errors. Previously, if the second move of a turn was illegal, the bot (and the whole game) had no way of knowing and would just freeze. Today it’s been fixed! So, when’s the ship? Soon. Only thing left is a tutorial before playing to easily onboard everyone. As expected, I can’t dedicate myself fully towards this project and the first ship won’t include any networking code. But it might include an analysis tool inspired by chess.com , so stay tuned!"}, {"post_id": 15302, "ts": "2026-06-24T21:03:43Z", "hours": 3.1514, "text": "A bot-tacular evening! What’s new in today’s devlog Finally I have implemented a working bot within Onlinja - it’s configurable, and damn it plays well! The reason it can be so competitive is because it uses a deep-search minimax algorithm, always assuming you make the best move and making the best move itself (with some randomness sparkled on top). Also, it reacts to awards, where more benefit created for itself through several moves, even if 2 distinct move sequences create same amount of value in points, is valued higher for the bot. This helps create insane accuracy, exploitation of game features and more! Note: there’s an easter egg hidden somewhere in plain sight, try to find it! Next steps Aside from the bot, I made the game capable of receiving different controller settings. A controller is the setting of who controls your opponent, current available settings being HUMAN, BOT and SERVER (for future implementation). As the next step I’m planning to make a local one-phone mode to share like a physical board across 2 people. Also, a pre-game tutorial awaits. I’d very much love to implement more whacky gamemodes, that would include powerups, more configuration, different piece setups and more. But I am not sure how much time that would cost me. Conclusion With the first ship of Onlinja coming closer everyday, I am trying to make the user experience as polished as can be. I really hope everyone playing will enjoy this game as much as I do!"}, {"post_id": 14373, "ts": "2026-06-23T14:11:23Z", "hours": 5.3936, "text": "User interface has been implemented! The good After long hours of development, countless design choices gone through and many thoughts of how to structure the project, its base has been laid and it finally features a working UI with an easy to understand UX. The bad It wasn’t easy to set correct boundaries and enginner instructions for AI in a way that it doesn’t have too much freedom hallucinating. After many iterations of edits within AGENTS.md file I hope it won’t eat as much time ever again (but I don’t know). Even though everything seems fine so far, nothing is promised this early in development, and the instruction document may change. What does the current code offer? In the current version of Onlinja players can’t do much - only play with themselves. This was done just to show off how the game will look. Next devlog will most likely include the full bot implementation. What are my further plans? The first ship most likely won’t have any networking code (unless I can learn websockets within the next 5 days), but will offer a human-like bot. Subsequent ships will offer enhanced online capabilities, accounts, leveling, and friend systems, as well as an anonymous mode. I want to make the game similar in mechanics to chess.com - a fully fledged Linja-inspired game, with an online hub!"}, {"post_id": 13415, "ts": "2026-06-21T23:28:57Z", "hours": 3.195, "text": "Today I started working on my project Onlinja! Storytime When I was searching gift ideas for father’s day I suddenly thought of board games. He loves them! And was learning chess at that time too. Having no exact ideas in mind, I went searching. Many games were too complex for me to teach, and I wanted that game to be 3D-printable. I stumbled upon Linja - an abstract and simple strategy game for 2 players. It’s no too popular, but I fell in love with it, made 3D files myself and printed it out! After gifting it, I feel like it’s very much underrated, so I got an idea! The idea The idea is simple - making a local bot and online application that lets anyone enjoy a Linja-inspired game from their phones and browsers! The plan The plan is to take React Native and target web, Android and iOS builds of the app, code a server architecture and a bot algorithm. Why’s it a great project? Not only will I be able to develop my skills in agent harness engineering, testing, web deelopment and websockets (things I haven’t touched yet), but the completed project will be fully functional and entertaining! I have nothing to show off yet, as only the initialization stage is being completed, but I will update you all as soon as I finish doing something!"}]...
|
Title: Onlinja by @DoMax | Stardance
Devlogs:
Tod Title: Onlinja by @DoMax | Stardance
Devlogs:
Today I started working on my project Onlinja! Storytime When I was searching gift ideas for father’s day I suddenly thought of board games. He loves them! And was learning chess at that time too. Having no exact ideas in mind, I went searching. Many games were too complex for me to teach, and I wanted that game to be 3D-printable. I stumbled upon Linja - an abstract and simple strategy game for 2 players. It’s no too popular, but I fell in love with it, made 3D files myself and printed it out! After gifting it, I feel like it’s very much underrated, so I got an idea! The idea The idea is simple - making a local bot and online application that lets anyone enjoy a Linja-inspired game from their phones and browsers! The plan The plan is to take React Native and target web, Android and iOS builds of the app, code a server architecture and a bot algorithm. Why’s it a great project? Not only will I be able to develop my skills in agent harness engineering, testing, web deelopment and websockets (things I haven’t touched yet), but the completed project will be fully functional and entertaining! I have nothing to show off yet, as only the initialization stage is being completed, but I will update you all as soon as I finish doing something!
User interface has been implemented! The good After long hours of development, countless design choices gone through and many thoughts of how to structure the project, its base has been laid and it finally features a working UI with an easy to understand UX. The bad It wasn’t easy to set correct boundaries and enginner instructions for AI in a way that it doesn’t have too much freedom hallucinating. After many iterations of edits within AGENTS.md file I hope it won’t eat as much time ever again (but I don’t know). Even though everything seems fine so far, nothing is promised this early in development, and the instruction document may change. What does the current code offer? In the current version of Onlinja players can’t do much - only play with themselves. This was done just to show off how the game will look. Next devlog will most likely include the full bot implementation. What are my further plans? The first ship most likely won’t have any networking code (unless I can learn websockets within the next 5 days), but will offer a human-like bot. Subsequent ships will offer enhanced online capabilities, accounts, leveling, and friend systems, as well as an anonymous mode. I want to make the game similar in mechanics to chess.com - a fully fledged Linja-inspired game, with an online hub!
A bot-tacular evening! What’s new in today’s devlog Finally I have implemented a working bot within Onlinja - it’s configurable, and damn it plays well! The reason it can be so competitive is because it uses a deep-search minimax algorithm, always assuming you make the best move and making the best move itself (with some randomness sparkled on top). Also, it reacts to awards, where more benefit created for itself through several moves, even if 2 distinct move sequences create same amount of value in points, is valued higher for the bot. This helps create insane accuracy, exploitation of game features and more! Note: there’s an easter egg hidden somewhere in plain sight, try to find it! Next steps Aside from the bot, I made the game capable of receiving different controller settings. A controller is the setting of who controls your opponent, current available settings being HUMAN, BOT and SERVER (for future implementation). As the next step I’m planning to make a local one-phone mode to share like a physical board across 2 people. Also, a pre-game tutorial awaits. I’d very much love to implement more whacky gamemodes, that would include powerups, more configuration, different piece setups and more. But I am not sure how much time that would cost me. Conclusion With the first ship of Onlinja coming closer everyday, I am trying to make the user experience as polished as can be. I really hope everyone playing will enjoy this game as much as I do!
A very friendly update! Want to play Onlinja with your friends? No problem, not anymore! Today I finalized implementing the Pass & Play mode, together with some UI and bot logic enhancements. Gameplay is smoother than ever, offering a very pleasing experience! UI upgrades? Finally! After many thoughts of making the game not feel like a slideshow with very static-feeling updates, this devlog’s changes also include a whole new animation overhaul! With fade transitions and more movement the app finally feels responsive. Anything more? Yes! An architectural refactor and a bot logic upgrade was issued. This makes the game both easier to develop and the bot less prone to errors. Previously, if the second move of a turn was illegal, the bot (and the whole game) had no way of knowing and would just freeze. Today it’s been fixed! So, when’s the ship? Soon. Only thing left is a tutorial before playing to easily onboard everyone. As expected, I can’t dedicate myself fully towards this project and the first ship won’t include any networking code. But it might include an analysis tool inspired by chess.com , so stay tuned!
How to play this game?? Great news! No more wondering of how this game works! Today I implemented a fully working tutorial system to Onlinja, and it tells everyone about any aspect of the game you could think of. Onboarding will be really easy now! What do I see there? A ship? Correct! Only a good README, logos and deployment left until a ship can be made. The rest of time will be dedicated just for that. What about standalone, non-web builds? This is React Native! Well, I have some good news and some bad news. Good news is that when I tested it, the standalone app build succeeded. Bad news is that it’s full of visual bugs and inconsistencies with the web build. So web builds will be the primary target of this app before I dedicate a separate week just for transformation to a unified solution. But I see no priority for this as web builds work wonderfully!
PWA and updated experience That’s right, now you can enjoy Onlinja as a pseudo-standalone app! By finally implementing PWA (Progressive Web Application) support to Onlinja, you can simply install it from any mobile browser. Updated experience? What’s it about? This update features several enhancements: The tutorial was revamped to be easier to follow for anyone. This means no more confusing terms and big text chunks where unnecessary. The app is now excluded from any dark mode settings (possible that some rare instances might change the color scheme, but popular plugins and systems should not alter any styling). Slight performance and UX tweaks to make the game feel smoother. Any more updates planned? Yes! I want to implement an analysis tool to every match or “Bot Labs” where everyone can tweak bot parameters and experiment with the algorithms freely. A second ship should be issued when these are implemented. Online crossplay isn’t in any of my near-future plans. A huge thank you for everyone that supports, tests and anyhow helps me build this project!
Control and power - that’s all that I’m after! This devlog brings new ways to control your experience with Onlinja not only as a user, but also a developer. Great news all along! With the latest update in Onlinja, new systems have launched: Settings System: A system where you can tweak your settings and default preferences for when you launch the app (also, replay the tutorial, as the old dedicated tab is now gone). Tab System: More important for developers, but now the development of Onlinja can speed up significantly because of a convenient tab making system. Major Architecture Overhaul: By working on the imports and general structure, the codebase can feel free of 400-lined files that choked the app. New Animations: Although it’s a side effect of that new Tab System, it makes the tab animations feel consistent, and the UX undoubtedly better. Mobile app issues fixed: Even when a dedicated app is not Onlinja’s primary choice for delivery, I will not abandon it as that’s why I picked React Native instead of normal React (this, and animation issues with normal React). So, now the mobile port functions almost exactly as intended, but if you want to have the designed experience, and are a fan of dedicated apps, you can always click “Add to home screen” in your browser! That sounds great! What about BotLabs? BotLabs are currently in the works. I am still thinking about how to make the architecture right and the UX smooth, but they’re soon to be implemented, letting users customize bots and make Bot vs Bot matches or have personalized bots to play against. A playable demo is live with latest changes! Check out Onlinja’s official site !
You want it, I got it! How feedback from the community helped me improve Onlinja When I shipped Onlinja, I did not think about much. I had plans, and I still do, but the most important direction this project went to, I think, is the direction real users wanted the project to evolve in. I am super glad that the community’s notes are actually reported back to the developers. And, to my surprise, many opinions were highly similar. This shows 2 aspects: I am doing something well, when most of the personalized reviews say they love the same features. I missed some crucial points, when the same reviews point out similar improvements to be made, even without knowing what others pointed out. Happily, I wasn’t lazy and I read through the opinions. Not only did they make my heart warmer, but also shown that I was not moving forward with the right features. What exactly did I improve? Although the UI/UX experience was regarded as one of THE best by some, it lacked one thing - clarity when playing. Whose turn was it? No clear indication when a turn changed if you didn’t notice small text changing in the header when staring down to a monitor for minutes straight. This is now fixed. Also, a very simple addition included a “save and resume” feature within the tutorial. Now, even if you refresh the tab or browser crashes, you can’t lose tutorial progress! What won’t likely be implemented and why that makes me sad All of the things I said seem great - feedback-based improvements, better clarity and quality-of-life updates that make a project be worth the time spent creating it. But the 2 features I wish I could’ve added were: BotLabs (custom bot maker) Post-game analysis (like in Chess.com ) First feature was impossible to make the way I wanted due to how the game’s layout is constructed. I sacrificed this feature for a better overall coding experience. It’s not as vital for the project to live, but sad that I could not implement it. The second feature was entirely possible, but very difficult to plan out. What should be the data flow? What controls what? That led to me making a compromise - post-game statistics, that tell you these things: How many moves each player took? How many extra turns each player got? How many pieces ran all the way to the opponent’s base? And I think it’s a fair update :) In conclusion I am very pleased with the reviews and Stardance in general. I get to create what I love and share it with people who might love it as well. I am happy that the feedback made me grow stronger and I am thankful for every single person that helped me improve this project anyhow, opening my eyes on what were the real issues. This project is one of my most ambitious yet, and if you want to check it out, the latest version is out at Onlinja’s official site ! If you can, also follow me and star the project on GitHub !
Quality of life improvements I’m happy to report work on Onlinja took one more step further! Before Stardance closes… After contacting Steffen Spiele directly and telling them about Onlinja, a love letter to one of their games, we settled on a mutual opinion of lack of attribution. Luckily, I managed to implement a distinct “credits” tab without casualties :) And, I am happy to present improvements for both developers and users!! 1. User-end improvements Taking a better look at your newest suggestions, I noticed 2 issues: Unclear tutorial Bland highlight colors I tried tackling both. While I couldn’t shorten the tutorial (as I’m not willing to update the rule spec), a new “Try it out” button was added to notify the player about an action block. The colors were boosted to have better distinction compared to standard lanes :) A spinning loader wheel now indicates when the app is ready to use. 2. Dev-end improvements To make Onlinja’s source also feel welcoming for developers, naming conventions, redundant code and skills were upgraded. Imports were refactored for code that’s easier to read and navigate, SoC is a priority while developing (to not make a mess). Expo 57 makes it easier for anyone to develop and test Onlinja, as newer Expo Go versions expect strict Expo 57+ compatibility. Centralized animation and other systems help when making consistent changes :) Conclusion This devlog (likely the last) demonstrates the most mature version of Onlinja singleplayer. As virtually no time is left before Stardance closes, and I won’t be able to implement multiplayer services, I want to conclude this project by saying a big Thank You to every supported and tester, and I hope I can see a big community grow when multiplayer eventually releases :P
Ships:
After gifting Linja game to my dad on father’s day, I fell in love with it. And I thought to myself - what if there was a digital version? There was none when I started working on the project, so I decided to give it a shot myself. Just imagine - two players face off across eight parallel lanes, calculating every shift in momentum, where one misstep can cause the opponent to leap past. A game, where you need to balance your positions and plan your moves. And, of course, have fun! Inspired by the classic board game Linja, Onlinja brings minimalist, tactical warfare straight to your pocket. Onlinja features Aggressive (one piece moves twice) and Strategic (two different pieces move) gameplay modes, smart UI, bots, and a lightweight mono-repository utilizing React Native/Expo for the frontend, plus a way to both learn the game and play with your friends, not only against highly competitive bots. This game is very portable, as it was designed to be responsive to your screen size. You can try out the Live Demo instantly at https://onlinja.domax.lt Happy playing! I hope you enjoy this game and become a fan of Onlinja yourself!
This is Onlinja, and it’s probably one of the best “easy to understand, hard to master” board games you will ever play. It’s built as a passion project, taking the game Linja as inspiration, but adapting it to be accessible anytime, anywhere! This is the second ship and it focuses entirely on making the most out of this app as possible, without making it feel janky. New additions are heavily impacted by community’s own responses to what should be improved, such as clearer indication of turns, tutorial progress saving, and a bit of my own additions, such as the Settings tab and Post-Game Statistics. While the game itself was kept true to its original core look and feel, the codebase underneath was heavily redefined! With new architecture decisions and SoC (separation of concerns) implementations, now it’s not only easy to expand the code, but easy to use in-person too! I really hope you will like this project and show much support for it. Let’s grow a beautiful and open source world together!...
|
1792997410.4637108
|
1793083810.4637108
|
|
23786
|
chicagOS by @isadora_M | Stardance
|
isadora_M
|
2
|
64.87
|
478
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T03:31:35Z", "hours": 51.0, "multiplier": 9.34, "payout": 478, "blessing": "neutral", "text": "chicagOS has finally reached completion! I have spent over a month working on this project, and I am really proud of what I have accomplished. While I enjoyed working on all aspects of this project, I had the most fun playing around with CSS and creating fun animated features for the OS. I am no expert in JS or CSS, so there were many learning curves associated with this project. The biggest challenge I faced was converting my file system from localStorage to indexedDB I made this change due to the limitations of localStorage, but indexedDB uses a very different framework, so I ended up needing to completely redo the code for some of my apps. I am really excited about all the new things I learned in this process, and happy to create a fun project themed around my hometown of Chicago!", "repo": "https://github.com/IsaJM111/chicagOS", "demo": "https://isajm111.github.io/chicagOS/"}, {"ship_num": 2, "ts": "2026-07-06T01:01:19Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the Chicago-themed web OS I made for the WebOS 1 mission. I learned a lot about JS, HTML, and CSS. I have some experience with JS and HTML, but it is my first time using non-inline CSS, which has been fun. I had a great time designing the website and creating all of the features and apps. Some challenges included dealing with importing images, which took a very long time, and making certain UI elements look good.", "repo": "https://github.com/IsaJM111/chicagOS", "demo": "https://isajm111.github.io/chicagOS/"}]...
|
[{"post_id": 80052, "ts": "202 [{"post_id": 80052, "ts": "2026-10-16T02:36:27Z", "hours": 1.7725, "text": "chicagOS Devlog #20 - I have added the option to hide the taskbar, and I have also created a setting to toggle the taskbar from being on the bottom to being on the top. There are now 4 different options for the wallpaper, which I think makes the webpage even more fun! I changed some small things with the CSS, but soon I hope to add more fun small features that will make this OS even more useful."}, {"post_id": 78464, "ts": "2026-10-10T21:02:05Z", "hours": 1.0956, "text": "ChicagOS Devlog #19 - I’m reviving this project! I kept thinking of new things I could add to this project, so I will be starting work on this again after 2 months! The only real thing I did today was add new options for wallpapers, including this fun nighttime scene. Soon the first order of business will be getting better app icons, as currently they are just emojis, and adding a taskbar minimize."}, {"post_id": 49340, "ts": "2026-08-18T03:24:34Z", "hours": 1.0381, "text": "chicagOS Devlog #18 - Final devlog before shipping! Not many visual changes, as I have spent a lot of time cleaning up the code, removing unused classes from CSS, deleting temporary console.log() , removing unnecessary comments, etc. I cleaned up some animations in CSS, but other than that, none of the code has really changed. I’ve really enjoyed working on this OS project, but I’m definitely excited to start something new."}, {"post_id": 47842, "ts": "2026-08-16T02:02:58Z", "hours": 6.7161, "text": "chicagOS Devlog #17 - Lots of changes! I’m wrapping up this project soon, so I am putting some final touches on the UI and making some backend changes. The file system now runs entirely using indexedDB instead of localStorage which means all file types can be saved now. The music app and gallery app have been connected to the file system. I also added a small calendar popup when you click on the time element. My biggest visual change was adding a startup screen. It was made almost entirely in CSS, and a single function in JS. I’m not sure if I’m going to add any more features before shipping, so if anyone has any suggestions lmk,"}, {"post_id": 44975, "ts": "2026-08-11T02:54:46Z", "hours": 1.4706, "text": "chicagOS Devlog #16 - I am still being indecisive about possibly adding a new app, so I decided to spruce up one of my simplest apps so far, Gallery. I mainly wanted to change how the photos were displayed, which wasn’t too difficult. The only real new feature I added was the ability to add custom photos, which was pretty easy because I used direct input from the computer. I also added the ability for grid view. At first I tried rebuilding the HTML for grid view, but I decided it would be easier to just have an invisible <div> that contained the grid layout. I don’t have any ideas for other apps to update, so if anyone has new app ideas, lmk cause I ran out days ago."}, {"post_id": 42816, "ts": "2026-08-07T18:48:02Z", "hours": 4.9344, "text": "chicagOS Devlog #15 - I have created the Music player app! You can upload any audio file from your computer and queue it in the playlist on the right. There is volume control, a time slider, play/pause, and skip/reverse. It will automatically load the name of the song, artist, and cover art if it is known. I originally planned on integrating this app with the existing file system, but it turns out audio files cannot be stored in localStorage so I had to scrap that idea. Currently, the playlist is just an array, which means it unfortunately does not save once the page is reloaded. But trust me, I’m going to update the file system so it can store all file types soon! I don’t really know what apps I’m going to add next, so I guess we will see where the wind takes me."}, {"post_id": 38597, "ts": "2026-08-01T02:30:53Z", "hours": 4.5422, "text": "chicagOS- Devlog 14 I’ve added a lot more functionality to the file system. Now you can add new folders, delete folders, and rename folders. You can also drag to reorder the folders in the sidebar. I also added a custom alert/notification center, so alerts such as “cannot delete system folders,” etc will be displayed, along with any other possible notification features I might add. Next, I plan on making a music app."}, {"post_id": 37322, "ts": "2026-07-29T22:57:39Z", "hours": 4.6961, "text": "chicagOS Devlog 13- I have created the file explorer app, and built the new file system. Now, instead of each app being connected directly to localStorage, they all use the same newFile() and getFile() functions from a central file system. Each app has a dedicated folder within the system. Next up, I hope to make a music player app, with the ability to add audio files."}, {"post_id": 35563, "ts": "2026-07-27T02:55:29Z", "hours": 4.02, "text": "chicagOS #Devlog 12- Terminal app is pretty much done! Obviously, I will add new commands as the OS gets more features, but I have some basic commands done! I also added a switch to toggle the quotes visibility in the settings app. Next, I plan on adding a file explorer which will connect all the apps into a single file system!"}, {"post_id": 33291, "ts": "2026-07-23T02:33:15Z", "hours": 4.455, "text": "chicagOS Devlog 11- The Header has been turned into a dock! I tried to reuse my existing code to open apps, but I couldn’t get it to work, so I had to end up redoing it twice. I also added some JS so that when you click on an open window it is put into focus. This is what the dynamic background is looking like so far, hopefully I can improve it more. Next I plan on adding some more apps, possibly including a terminal and a file explorer."}, {"post_id": 30993, "ts": "2026-07-19T00:40:37Z", "hours": 3.1639, "text": "chicagOS Devlog 10- Dynamic wallpaper is done! (kinda) I’ve been having issues trying to use images that have the background removed, so if anyone knows how that works, please lmk! I created a settings app to choose between the classic wallpaper (non-animated) and the dynamic wallpaper (many animated parts). The dynamic wallpaper will probably change once I can figure out the images I’m using. Next up, I am planning on turning the header into a dock! I will probably move the quotes to a widget."}, {"post_id": 28973, "ts": "2026-07-15T16:21:10Z", "hours": 3.5811, "text": "chicagOS Devlog 9- The Mind Map app is finally working! all of the nodes are draggable, and you can zoom in and out. Turns out the issue was that new nodes coordinates were being calculated from the root node instead of their parent node, so the line drawing function couldn’t find the new nodes. Also, I expanded the notes app! Before you could not save notes, but now you can! I added a side bar to display the saved notes, and also added the ability to remove saved notes. Next I plan to make some more UI improvements, maybe even a dynamic background?"}, {"post_id": 27808, "ts": "2026-07-13T18:07:26Z", "hours": 3.3197, "text": "chicagOS Devlog #8 - Browser app is completed! I used i-frame to display the browser window. The search bar takes web addresses, and if what is entered is not a valid web address, it automatically inputs it as a Google search prompt instead. I also added some bookmarked web pages, and forward and backward buttons that work by storing the web history. Next, I want to add more functionality to the notes app, including the ability to save and delete notes."}, {"post_id": 26810, "ts": "2026-07-11T20:20:04Z", "hours": 4.0203, "text": "chicagOS Devlog 7- The Paint app is mostly done! I added functionality to the save and load paintings button. I also updated the UI of the toolbar. I created the UI for the browser app, which currently doesn’t have any functionality. I plan to use an iframe to display webpages and also provide some bookmarked websites."}, {"post_id": 25020, "ts": "2026-07-08T23:01:48Z", "hours": 5.1878, "text": "chicagOS Devlog 6- A lot of progress has been made! I’ve been waiting for my ship to be approved for WebOS1, which it just was! Yay! But in the last 4 days, I have made a lot of changes, so prepare yourselves. #1 - The UI has had major improvements! I went down the W3Schools rabbit hole and added a bunch of things to make the UI look cleaner, including the first animated element of the UI! #2- Paint app! - I added the paint app, and it currently has pretty basic functionality. You can draw, change colors, change brush size, erase, and clear the canvas. I plan to add a save feature soon. (The button currently doesn’t do anything.) #3- I WILL FIGURE OUT THIS MIND MAP APP! I fixed a few things, but some things still aren’t working. Currently, lines don’t get drawn past the root node, and I think it has something to do with the ID hierarchy? We will see. #4- I added a feature of the desktop header that rotates through quotes about Chicago! It has the same animated background as the welcome window. That’s it for now; hopefully I can continue to improve the UI and the paint app!"}, {"post_id": 22565, "ts": "2026-07-05T02:36:53Z", "hours": 0.5222, "text": "chicagOS Devlog #5- Getting ready to complete the guide for WebOS 1! I cleaned up a few things with the UI, and I have decided that the Mind Map app will not be included in this first ship :( But trust, when I get smarter it will be coming back!"}, {"post_id": 16634, "ts": "2026-06-27T01:52:28Z", "hours": 3.0778, "text": "chicagOS devlog #4- Not that much progress recently! Turns out working with images is very frustrating. I created the gallery app, which had its surprising challenges. I figured that the JS logic for cycling between the photos and looping back to the first image would be easy, but I was severely mistaken. I spent at least an hours trying to stop the images from taking up the whole window, repeating, stretching, somehow being mirrored, just about every issue you can imagine. All of these had very simple fixes, but I couldn’t figure out what I should put in the CSS file, and which needed to be in-line (spoiler alert- pretty much none of it). But either way, the images act like normal images now! Yay! More functionality in the notes app is what I have planned next."}, {"post_id": 15389, "ts": "2026-06-25T00:52:48Z", "hours": 3.4053, "text": "chicagOS devlog #3 - Alright so I have changed a few things recently. #1 - I rethemed the whole OS, but later I might add a way to choose a theme in a setting app? idk I haven’t decided yet. // #2, I started working on the Mind Map App, but I quickly realized that its actually more complicated than I originally thought, and since I’m not that good at this I decided that I will come back to that app later. // #3 I made a calculator app, which is fully functioning and (as far as i’m aware) doesn’t have any bugs. // #4 I finished the notes app, but I might add more functionality later. // Thats it in terms of new features, my future plans include possibly some sort of settings app, finishing the Mind Map App, and I would like to add some sort of photo gallery app, which is what I plan to work on next."}, {"post_id": 14041, "ts": "2026-06-23T00:46:53Z", "hours": 2.2753, "text": "chicagOS log 2 - I have since added the actual window for the notes app, and basic functionality including adding notes and writing in them. I plan to add a save feature, and the ability to have multiple notes open at the same time. While working through the guide, it told me to make a “mind map” using paper for brainstorming. I thought about how I didn’t want to get up to grab a piece of paper, and I knew what my next app would be: a Mind Map app! now I will never have to get up again. I haven’t added any functionality to this app yet, but it should be relatively simple. (currently the app icons are placeholders from google, I promise they will be better eventually!)"}, {"post_id": 13747, "ts": "2026-06-22T15:12:35Z", "hours": 1.2672, "text": "The basics of the webOS are done! It is Chicago themed, and all the apps will be useful to someone who lives/is visiting Chicago. I actually sent more time on this project but I couldn’t figure out hackatime :( Regardless, I finished the background, top bar, and welcome screen that is draggable and able to be opened and closed. I plan to work on the first app soon, which will likely be a notes type app."}]...
|
Title: chicagOS by @isadora_M | Stardance
Devlogs Title: chicagOS by @isadora_M | Stardance
Devlogs:
The basics of the webOS are done! It is Chicago themed, and all the apps will be useful to someone who lives/is visiting Chicago. I actually sent more time on this project but I couldn’t figure out hackatime :( Regardless, I finished the background, top bar, and welcome screen that is draggable and able to be opened and closed. I plan to work on the first app soon, which will likely be a notes type app.
chicagOS log 2 - I have since added the actual window for the notes app, and basic functionality including adding notes and writing in them. I plan to add a save feature, and the ability to have multiple notes open at the same time. While working through the guide, it told me to make a “mind map” using paper for brainstorming. I thought about how I didn’t want to get up to grab a piece of paper, and I knew what my next app would be: a Mind Map app! now I will never have to get up again. I haven’t added any functionality to this app yet, but it should be relatively simple. (currently the app icons are placeholders from google, I promise they will be better eventually!)
chicagOS devlog #3 - Alright so I have changed a few things recently. #1 - I rethemed the whole OS, but later I might add a way to choose a theme in a setting app? idk I haven’t decided yet. // #2, I started working on the Mind Map App, but I quickly realized that its actually more complicated than I originally thought, and since I’m not that good at this I decided that I will come back to that app later. // #3 I made a calculator app, which is fully functioning and (as far as i’m aware) doesn’t have any bugs. // #4 I finished the notes app, but I might add more functionality later. // Thats it in terms of new features, my future plans include possibly some sort of settings app, finishing the Mind Map App, and I would like to add some sort of photo gallery app, which is what I plan to work on next.
chicagOS devlog #4- Not that much progress recently! Turns out working with images is very frustrating. I created the gallery app, which had its surprising challenges. I figured that the JS logic for cycling between the photos and looping back to the first image would be easy, but I was severely mistaken. I spent at least an hours trying to stop the images from taking up the whole window, repeating, stretching, somehow being mirrored, just about every issue you can imagine. All of these had very simple fixes, but I couldn’t figure out what I should put in the CSS file, and which needed to be in-line (spoiler alert- pretty much none of it). But either way, the images act like normal images now! Yay! More functionality in the notes app is what I have planned next.
chicagOS Devlog #5- Getting ready to complete the guide for WebOS 1! I cleaned up a few things with the UI, and I have decided that the Mind Map app will not be included in this first ship :( But trust, when I get smarter it will be coming back!
chicagOS Devlog 6- A lot of progress has been made! I’ve been waiting for my ship to be approved for WebOS1, which it just was! Yay! But in the last 4 days, I have made a lot of changes, so prepare yourselves. #1 - The UI has had major improvements! I went down the W3Schools rabbit hole and added a bunch of things to make the UI look cleaner, including the first animated element of the UI! #2- Paint app! - I added the paint app, and it currently has pretty basic functionality. You can draw, change colors, change brush size, erase, and clear the canvas. I plan to add a save feature soon. (The button currently doesn’t do anything.) #3- I WILL FIGURE OUT THIS MIND MAP APP! I fixed a few things, but some things still aren’t working. Currently, lines don’t get drawn past the root node, and I think it has something to do with the ID hierarchy? We will see. #4- I added a feature of the desktop header that rotates through quotes about Chicago! It has the same animated background as the welcome window. That’s it for now; hopefully I can continue to improve the UI and the paint app!
chicagOS Devlog 7- The Paint app is mostly done! I added functionality to the save and load paintings button. I also updated the UI of the toolbar. I created the UI for the browser app, which currently doesn’t have any functionality. I plan to use an iframe to display webpages and also provide some bookmarked websites.
chicagOS Devlog #8 - Browser app is completed! I used i-frame to display the browser window. The search bar takes web addresses, and if what is entered is not a valid web address, it automatically inputs it as a Google search prompt instead. I also added some bookmarked web pages, and forward and backward buttons that work by storing the web history. Next, I want to add more functionality to the notes app, including the ability to save and delete notes.
chicagOS Devlog 9- The Mind Map app is finally working! all of the nodes are draggable, and you can zoom in and out. Turns out the issue was that new nodes coordinates were being calculated from the root node instead of their parent node, so the line drawing function couldn’t find the new nodes. Also, I expanded the notes app! Before you could not save notes, but now you can! I added a side bar to display the saved notes, and also added the ability to remove saved notes. Next I plan to make some more UI improvements, maybe even a dynamic background?
chicagOS Devlog 10- Dynamic wallpaper is done! (kinda) I’ve been having issues trying to use images that have the background removed, so if anyone knows how that works, please lmk! I created a settings app to choose between the classic wallpaper (non-animated) and the dynamic wallpaper (many animated parts). The dynamic wallpaper will probably change once I can figure out the images I’m using. Next up, I am planning on turning the header into a dock! I will probably move the quotes to a widget.
chicagOS Devlog 11- The Header has been turned into a dock! I tried to reuse my existing code to open apps, but I couldn’t get it to work, so I had to end up redoing it twice. I also added some JS so that when you click on an open window it is put into focus. This is what the dynamic background is looking like so far, hopefully I can improve it more. Next I plan on adding some more apps, possibly including a terminal and a file explorer.
chicagOS #Devlog 12- Terminal app is pretty much done! Obviously, I will add new commands as the OS gets more features, but I have some basic commands done! I also added a switch to toggle the quotes visibility in the settings app. Next, I plan on adding a file explorer which will connect all the apps into a single file system!
chicagOS Devlog 13- I have created the file explorer app, and built the new file system. Now, instead of each app being connected directly to localStorage, they all use the same newFile() and getFile() functions from a central file system. Each app has a dedicated folder within the system. Next up, I hope to make a music player app, with the ability to add audio files.
chicagOS- Devlog 14 I’ve added a lot more functionality to the file system. Now you can add new folders, delete folders, and rename folders. You can also drag to reorder the folders in the sidebar. I also added a custom alert/notification center, so alerts such as “cannot delete system folders,” etc will be displayed, along with any other possible notification features I might add. Next, I plan on making a music app.
chicagOS Devlog #15 - I have created the Music player app! You can upload any audio file from your computer and queue it in the playlist on the right. There is volume control, a time slider, play/pause, and skip/reverse. It will automatically load the name of the song, artist, and cover art if it is known. I originally planned on integrating this app with the existing file system, but it turns out audio files cannot be stored in localStorage so I had to scrap that idea. Currently, the playlist is just an array, which means it unfortunately does not save once the page is reloaded. But trust me, I’m going to update the file system so it can store all file types soon! I don’t really know what apps I’m going to add next, so I guess we will see where the wind takes me.
chicagOS Devlog #16 - I am still being indecisive about possibly adding a new app, so I decided to spruce up one of my simplest apps so far, Gallery. I mainly wanted to change how the photos were displayed, which wasn’t too difficult. The only real new feature I added was the ability to add custom photos, which was pretty easy because I used direct input from the computer. I also added the ability for grid view. At first I tried rebuilding the HTML for grid view, but I decided it would be easier to just have an invisible <div> that contained the grid layout. I don’t have any ideas for other apps to update, so if anyone has new app ideas, lmk cause I ran out days ago.
chicagOS Devlog #17 - Lots of changes! I’m wrapping up this project soon, so I am putting some final touches on the UI and making some backend changes. The file system now runs entirely using indexedDB instead of localStorage which means all file types can be saved now. The music app and gallery app have been connected to the file system. I also added a small calendar popup when you click on the time element. My biggest visual change was adding a startup screen. It was made almost entirely in CSS, and a single function in JS. I’m not sure if I’m going to add any more features before shipping, so if anyone has any suggestions lmk,
chicagOS Devlog #18 - Final devlog before shipping! Not many visual changes, as I have spent a lot of time cleaning up the code, removing unused classes from CSS, deleting temporary console.log() , removing unnecessary comments, etc. I cleaned up some animations in CSS, but other than that, none of the code has really changed. I’ve really enjoyed working on this OS project, but I’m definitely excited to start something new.
ChicagOS Devlog #19 - I’m reviving this project! I kept thinking of new things I could add to this project, so I will be starting work on this again after 2 months! The only real thing I did today was add new options for wallpapers, including this fun nighttime scene. Soon the first order of business will be getting better app icons, as currently they are just emojis, and adding a taskbar minimize.
chicagOS Devlog #20 - I have added the option to hide the taskbar, and I have also created a setting to toggle the taskbar from being on the bottom to being on the top. There are now 4 different options for the wallpaper, which I think makes the webpage even more fun! I changed some small things with the CSS, but soon I hope to add more fun small features that will make this OS even more useful.
Ships:
This is the Chicago-themed web OS I made for the WebOS 1 mission. I learned a lot about JS, HTML, and CSS. I have some experience with JS and HTML, but it is my first time using non-inline CSS, which has been fun. I had a great time designing the website and creating all of the features and apps. Some challenges included dealing with importing images, which took a very long time, and making certain UI elements look good.
chicagOS has finally reached completion! I have spent over a month working on this project, and I am really proud of what I have accomplished. While I enjoyed working on all aspects of this project, I had the most fun playing around with CSS and creating fun animated features for the OS. I am no expert in JS or CSS, so there were many learning curves associated with this project. The biggest challenge I faced was converting my file system from localStorage to indexedDB I made this change due to the limitations of localStorage, but indexedDB uses a very different framework, so I ended up needing to completely redo the code for some of my apps. I am really excited about all the new things I learned in this process, and happy to create a fun project themed around my hometown of Chicago!...
|
1792997544.4451518
|
1793083944.4451518
|
|
23804
|
My First Slack Bot! by @Gayathri | Stardance
|
Gayathri
|
2
|
3.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-03T00:33:26Z", "hours": 2.0, "multiplier": 1.01, "payout": 2, "blessing": "neutral", "text": "I made a slack bot that is online and can respond to slash commands ( /roll-a-dice, /flip-a-coin, and /magic-8-ball). You can try out @Dice-Roller in #bot-spam, Hack Club Slack.", "repo": "https://github.com/J052915804351520/crispy-disco", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}, {"ship_num": 2, "ts": "2026-07-15T03:35:54Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot to roll dice, flip a coin, and magic 8 ball.", "repo": "https://github.com/J052915804351520/crispy-disco", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 34259, "ts": "202 [{"post_id": 34259, "ts": "2026-07-24T20:13:44Z", "hours": 1.9064, "text": "@Dice-roller , a online 24/7 Slack bot that responds to slash commands such as /roll-a-dice /flip-a-coin and /magic-8-ball. You can try it out on #bot-spam in Slack Hack Club"}, {"post_id": 28426, "ts": "2026-07-14T17:39:26Z", "hours": 0.7, "text": "hi i made a slack bot"}]...
|
Title: My First Slack Bot! by @Gayathri | Stardanc Title: My First Slack Bot! by @Gayathri | Stardance
Devlogs:
hi i made a slack bot
@Dice-roller , a online 24/7 Slack bot that responds to slash commands such as /roll-a-dice /flip-a-coin and /magic-8-ball. You can try it out on #bot-spam in Slack Hack Club
Ships:
I made a slack bot to roll dice, flip a coin, and magic 8 ball.
I made a slack bot that is online and can respond to slash commands ( /roll-a-dice, /flip-a-coin, and /magic-8-ball). You can try out @Dice-Roller in #bot-spam, Hack Club Slack....
|
1793091190.229147
|
1793177590.229147
|
|
23829
|
My very own WebOS by @shayan1 | Stardance
|
shayan1
|
2
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-22T13:05:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a os that runs in browser and named it Avenix os.", "repo": "https://github.com/shayan155/shayanos", "demo": "https://shayanos.netlify.app/"}, {"ship_num": 2, "ts": "2026-06-22T02:30:02Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am creating a webos, The most challenging part is making the base, most of its app is demo", "repo": "https://github.com/shayan155/shayanos", "demo": "https://shayanos.netlify.app/"}]...
|
[{"post_id": 13676, "ts": "202 [{"post_id": 13676, "ts": "2026-06-22T13:04:24Z", "hours": 0.7253, "text": "i am working on a browser based os called Avenixos"}, {"post_id": 13480, "ts": "2026-06-22T02:22:15Z", "hours": 0.6161, "text": "I am working on Webos project"}]...
|
Title: My very own WebOS by @shayan1 | Stardance
Title: My very own WebOS by @shayan1 | Stardance
Devlogs:
I am working on Webos project
i am working on a browser based os called Avenixos
Ships:
I am creating a webos, The most challenging part is making the base, most of its app is demo
i made a os that runs in browser and named it Avenix os....
|
1793087764.6631162
|
1793174164.6631162
|
|
24184
|
Ferris's Game of Life by @polycarbohydrate | S Ferris's Game of Life by @polycarbohydrate | Stardance...
|
polycarbohydrate
|
2
|
21.0
|
298
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T18:39:10Z", "hours": 11.0, "multiplier": 15.5, "payout": 196, "blessing": "neutral", "text": "The next major release of Ferris’s Game of Life is here! The CLI user experience has been greatly improved! Thanks to the reviewers of the first ship, I took their advice and added lots of new features! New features include: CLI display improvements -Text formatting -More standardization in code and printed output -5 preset options so you users don’t need any experience to play/watch. (plus simplier setup) -More customization for custom setup. -Settings for custom setup are all optional so do not feel obligated to fill them all out (unlike v0.1.0). Feedback from the first ship was used, so feel free to give feedback!", "repo": "https://github.com/Polycarbohydrate/FGOL", "demo": "https://github.com/Polycarbohydrate/FGOL/releases/tag/v0.2.0"}, {"ship_num": 2, "ts": "2026-06-28T14:33:11Z", "hours": 10.0, "multiplier": 10.53, "payout": 102, "blessing": "neutral", "text": "Ferris’s Game of Life (FGOL) is Conway’s Game of Life written in Rust. The alive cells are indicated by the crab emoji, a nod to Ferris who is the Rust Langauge’s non-official mascot. I decided on this project because I wanted to build something real for the first time. This project allows me to implement many different features and opens up many pathways to expand on in the future. Currently the project only has a CLI version but I am planning to do a TUI, then progress to a native app UI and then a web UI.", "repo": "https://github.com/Polycarbohydrate/FGOL", "demo": "https://github.com/Polycarbohydrate/FGOL/releases/tag/v0.2.0"}]...
|
[{"post_id": 24265, "ts": "202 [{"post_id": 24265, "ts": "2026-07-07T18:35:56Z", "hours": 7.9539, "text": "Devlog 11 Ferris’s Game of Life (FGOL) v0.2.0 is now released! Check it out here: https://github.com/Polycarbohydrate/FGOL/releases/tag/v0.2.0 What is new? First of all, Ferris, is now in banners that surround text in the CLI! These banners surround important pieces of messages or menus. Text that is used for input will be displayed regularly. Taking into account many of the suggestions from the first ship, I added presets! There are 5 presets with this ship, and I plan to add more, which you can select to skip the hassle of setting up the simulation. These 5 were ones I found interesting and were fun to watch on the CLI. Additionally, you may notice that there are more menus now. In order to accomodate the many changes while keeping the user experience friendly, I decided to use menus instead of forcing you to follow a setup process. You are able to customize the simulation however you want! You are now able to add, remove, and view existing cells before you start the simulation! You can still edit the speed of the simulation, and choose the grid size you want. New settings include choosing when to stop the simulation (if you have an infinite loop) and stopping the simulation once cells move off of the screen. Technical changes: To make the code readable and better to edit (i don’t think a 1000 line file with repetitive text is good), I added banners.rs, which holds all of the banner/text content. Other files use the content by calling functions within banner.rs. This makes it so I can see more logic than text, which is more important with debugging. I added the type SettingsExport to hold all of the information I import into cli_display.rs . This was a suggestion from cargo clippy . As always, all code is linted using cargo clippy and formatted using cargo-fmt . All files besides core.rs were modified to accomodate changes. input.rs was changed the most. All platform binaries are still a modest file size (~100kb) Before releasing, I tested for formatting, bad input, and tried to fix everything. I something doesn’t look right, or you encounter a bug/error. Create an issue on the GitHub so I can quickly fix it. Future plans: Ship this release. Work on more features Transition to web-version. Video demo:"}, {"post_id": 21903, "ts": "2026-07-04T02:24:55Z", "hours": 0.7803, "text": "Devlog 10 Minor changes today I didn’t spend much time today working on this project becuase I have some real world stuff to work on. Changes: I added 2 more presets to the code for a total of 5 presets. Added some additional code comments for better code understanding I did some research on a pause feature that I saw in one of the reviewer’s feedback. It is hard to implement an easy to use pause, as I want to keep the CLI std lib only - no external creates. I may drop that feature or implement it stupidly in the future. Ill do some more research on it in the future. I added 2 additional issues for future features I want in the CLI. Both have to do with detecting a simulation loop. I have also decided that the CLI should remain independent with no external crates."}, {"post_id": 21209, "ts": "2026-07-03T00:55:16Z", "hours": 1.7814, "text": "Devlog 9 Made some improvemets/additions to the CLI today based on some of my own discoveries and feedback from the first ship. Thank you to everyone who voted on my first ship ever! I looked throught the feedback and appreciate the support. I also appreciate the constructive feedback. I took it into consideration and applied changes. Major Changes Biggest change was the addition of preset templates. You can now choose between inputting your own cells through coordinates, or by just selecting a preset template which has hardcoded values for cells and everything else. This was done by adding presets.rs which is mainly for the hardcoded values to be fetched and stored. Additionally inputs.rs was updated and overhauled with more functions to be more readable and easier to edit. main.rs was changed to accomodate the changes in input.rs and presets.rs core.rs and cli_display.rs were not changed Bug fixes Inputting a negative number in the first step of the custom setup process would not have proper program execution. I fixed by checking for negative numbers Personal changes The program now has a dedicated exit and loops after a generation dies so you can keep on testing! Phrasing in one of the prompts in inputs.rs was changed to be more clear. Additional thoughts: I will fix up the CLI a bit more and add a few more features before moving on to TUI development. The release of the TUI will be my second ship. Eventually I plan to have this project with a GUI, TUI, CLI, and a web version. Since I am planning for the CLI to be used on low-end devices, I am going to limit the file size to 1 MB. That is 1 MB across all platform binaries. Someone suggested adding a pause feature. I am currently looking into implementing that. Tldr: I will continue fixing up the CLI and adding features. Have a wonderful day."}, {"post_id": 17138, "ts": "2026-06-27T20:22:18Z", "hours": 1.1733, "text": "Devlog 8 This will likely be the last devlog before my first ship. File changes: cli_display.rs: Removed hardcoded grid constants and added new input parameters for grid size. Experimented with different grid spacing but settled on a dot and space to one emoji (”. “). inputs.rs: Added a new section for grid size selection. There are four choices for selection: Small, Medium, Large, and Custom. I had a little bug with Custom not properly working but that was quickly fixed. main.rs: modified to accomodate variable and parameter changes of the 2 files above. I checked error handling and the spacing of text as well. Everything should be properly handled cargo-fmt & cargo clippy ran. Fixed the old bug of inverted y cells; the problem was because of the way I collected line renders (I rendered the bottom of the grid up, but my string concatenation pushed the bottom lines to the top). To solve I just reversed the loop for the rows (y-value). Plenty of comments In the video attached, at 200ms per frame there is no screen stutter. The new way of displaying frames seems to be good. Future: After this I will update my project GitHub ReadMe and add binaries for Windows, Linux, and MacOS. Then I will add the playable link here. After shipping, if the project passes, I will clean up the code and make the game replayable after all cell dies. Next major modification would to progress to a TUI then a GUI with additional features. Lots of ideas for this one! Other: Self contained Rust, no external crates. Q: Why not GUI? A: I see lots of people on this platform have a GUI. However they are using an easy to use game engine, web render, and/or easy to use applications. Rust is mainly for backend and using Rust for frontend is a pain in the butt. I would have to learn eframe/egui and how to work with web-assembly and convert my code to be compiled that way. A TUI would be my next step. If the TUI works, I may consider an infinite grid project milestone and/or then proceed to do a Rust-based GUI. Attached is the cell pattern known as “diehard”. It contains 7 initial starting cells and goes all the way to generation 129 before dying exacting on generation 130. Feedback is welcome!"}, {"post_id": 16606, "ts": "2026-06-27T00:40:42Z", "hours": 0.6336, "text": "Devlog 7 I didn’t change much during this time. However, I redid the printing to that it prints the frame at once instead of one line at a time so there is less stuttering and screen movement. I spent the majority of the time trying to use eframe and wasm but I had a hard time figuring it out. Additionally to just compile and test my code I had to compile 225+ packages every time which took a long time and if I decided to use wasm, it would be even more packages… Next step is to see if I need to fix the location of the delay (speed) and then ship. After ship, I will use an external crate for the TUI. then if the tui goes well maybe an online thing as well. Majority of projects here are using a framework that is high level for frontend development. Using Rust for frontend is a pain :( I added another video with the famous 7-cell 120+ generation ‘diehard’ to show the cli. I think there is less stutter now (i think the stutter at the end would be reduced if my terminal was not as big). Feedback is welcome!"}, {"post_id": 16468, "ts": "2026-06-26T20:17:55Z", "hours": 1.3767, "text": "Devlog 6 File changes (additions, removals, modification) modification: tui.rs/cli_display.rs -> renamed tui.rs to cli_display.rs to be more accurate since I am not building a TUI-based display/application Non-code changes In Cargo.toml, I changed the package name to FGOL instead of the generic testing name I had before. This will now reflect on compilation. Code changes main.rs: I refactored usage of tui.rs to the new file name. I also added a stop to the program that checks if the cells HashSet is empty. If it is, then the program prints the last empty grid frame and notifies the user before stopping. core.rs: No changes. inputs.rs: Major modification to the code in here. Made the input process look nicer, tested the display spacing (including after error messages), overhauled to ask the number of cells that way it is less repetitive if a user wants to add more cells. Added a seperate function to clean the file up a bit (still have some work to do; I don’t think its very readable). Added the crab emoji as the banner for Ferris. cli_display.rs: Changed the cell char to the crab emoji as the banner for Ferris 🦀. Other Everything is formatted to cargo-fmt & cargo clippy No errors or warnings during compilation. Error handling was tested and the printed lines have spacing to look nice. No external crates or packages; it is entirely self-contained. Future I may ship like this (as a binary) to see what feedback I may get. If my ship passes I will continue and make a GUI and learn an external crates for that. For testing and playing, I think a web UI is the best. A binary application is not the best (and unnecessary). I will see what my time looks like and maybe I will convert to an actual UI on the web before shipping or find another solution. Otherwise I will compile the .exe myself and host on the GitHub. Feedback is welcome! GH: https://github.com/Polycarbohydrate/ferris-s-game-of-life"}, {"post_id": 15369, "ts": "2026-06-25T00:01:49Z", "hours": 1.9031, "text": "Devlog 5 Big changes were made today! main.rs completed core.rs completed input.rs completed tui.rs completed By completed I mean that the program is functional (albeit, not pretty). Program is formatted to cargo-fmt and only one cargo clippy warning is left for me to address. The next step is for me to fix a bug that causes the points to be inverted when plotted (positive y becomes negative y). I also have to figure out the clippy warning which is stumping me (warning on an if-then-else statement). This should not take long. The output is stretched due to the uneven spacing of chars in the terminal. THis will have to be addressed in the future by redesign or switching to a GUI framework (likely eframe/egui). I also need to streamline the user input section and make it easier. I will upload to GitHub soon. I also applied for access to hackclub.app to host it for testing. One thing I will note is that the code currently has no outside crates/dependencies and is entirely self-contained. I have attached a video of the program running. The low quality is from it being cropped from my VSCode terminal…sorry :( Suggestions/feedback is welcome!"}, {"post_id": 15238, "ts": "2026-06-24T18:58:30Z", "hours": 1.4261, "text": "Devlog 4 Big improvements today! I finished the core algorithm and completed the first version of the inputs that a user can provide. I restructured the project with: main.rs (the file that brings everything together) inputs.rs (user input stored and returned to main.rs) core.rs (takes info from inputs.rs to calculate the next generation of cells) tui.rs (im progress; probably the hardest part. I am thinking of doing a gui using egui/eframe. If I don’t I will likely implement a grid in the terminal using a limited space (probably 100 x 100 cells for the initial version) Very good progress so far. Only thing I need to do that is important is display the cells."}, {"post_id": 15074, "ts": "2026-06-24T14:19:25Z", "hours": 1.1589, "text": "Today I had an insight to switch the initial state to a simple vertical 3 cell stack. This was to make it easier to debug since the next generations are periodic and my code should show alternating points. The simplified conditions allowed me to figure out the proper algorithm structure: Find dead cells. Calculate new alive cells. Remove the original dead cells. Generation complete Previously I was checking AND removing dead cells before finding the next generation’s alive cells. The next step is to reorganize my code, verify the results, and then convert to a GUI or TUI."}, {"post_id": 14619, "ts": "2026-06-23T20:00:45Z", "hours": 1.0856, "text": "Decided on data type usage (HashSet mainly for storage of cells, and HashMap to convert dead cells to alive cells.) I am sure it is very unoptimized right now. There is a big bug which I will have to fix later."}, {"post_id": 13926, "ts": "2026-06-22T20:47:31Z", "hours": 1.0264, "text": "Today I started working on a simple game of Conway’s Game of Life. I started coding in Rust. It will be my first ever project/game of this sort and hopefully it will be fun!"}]...
|
Title: Ferris's Game of Life by @polycarbohydr Title: Ferris's Game of Life by @polycarbohydrate | Stardance
Devlogs:
Today I started working on a simple game of Conway’s Game of Life. I started coding in Rust. It will be my first ever project/game of this sort and hopefully it will be fun!
Decided on data type usage (HashSet mainly for storage of cells, and HashMap to convert dead cells to alive cells.) I am sure it is very unoptimized right now. There is a big bug which I will have to fix later.
Today I had an insight to switch the initial state to a simple vertical 3 cell stack. This was to make it easier to debug since the next generations are periodic and my code should show alternating points. The simplified conditions allowed me to figure out the proper algorithm structure: Find dead cells. Calculate new alive cells. Remove the original dead cells. Generation complete Previously I was checking AND removing dead cells before finding the next generation’s alive cells. The next step is to reorganize my code, verify the results, and then convert to a GUI or TUI.
Devlog 4 Big improvements today! I finished the core algorithm and completed the first version of the inputs that a user can provide. I restructured the project with: main.rs (the file that brings everything together) inputs.rs (user input stored and returned to main.rs) core.rs (takes info from inputs.rs to calculate the next generation of cells) tui.rs (im progress; probably the hardest part. I am thinking of doing a gui using egui/eframe. If I don’t I will likely implement a grid in the terminal using a limited space (probably 100 x 100 cells for the initial version) Very good progress so far. Only thing I need to do that is important is display the cells.
Devlog 5 Big changes were made today! main.rs completed core.rs completed input.rs completed tui.rs completed By completed I mean that the program is functional (albeit, not pretty). Program is formatted to cargo-fmt and only one cargo clippy warning is left for me to address. The next step is for me to fix a bug that causes the points to be inverted when plotted (positive y becomes negative y). I also have to figure out the clippy warning which is stumping me (warning on an if-then-else statement). This should not take long. The output is stretched due to the uneven spacing of chars in the terminal. THis will have to be addressed in the future by redesign or switching to a GUI framework (likely eframe/egui). I also need to streamline the user input section and make it easier. I will upload to GitHub soon. I also applied for access to hackclub.app to host it for testing. One thing I will note is that the code currently has no outside crates/dependencies and is entirely self-contained. I have attached a video of the program running. The low quality is from it being cropped from my VSCode terminal…sorry :( Suggestions/feedback is welcome!
Devlog 6 File changes (additions, removals, modification) modification: tui.rs/cli_display.rs -> renamed tui.rs to cli_display.rs to be more accurate since I am not building a TUI-based display/application Non-code changes In Cargo.toml, I changed the package name to FGOL instead of the generic testing name I had before. This will now reflect on compilation. Code changes main.rs: I refactored usage of tui.rs to the new file name. I also added a stop to the program that checks if the cells HashSet is empty. If it is, then the program prints the last empty grid frame and notifies the user before stopping. core.rs: No changes. inputs.rs: Major modification to the code in here. Made the input process look nicer, tested the display spacing (including after error messages), overhauled to ask the number of cells that way it is less repetitive if a user wants to add more cells. Added a seperate function to clean the file up a bit (still have some work to do; I don’t think its very readable). Added the crab emoji as the banner for Ferris. cli_display.rs: Changed the cell char to the crab emoji as the banner for Ferris 🦀. Other Everything is formatted to cargo-fmt & cargo clippy No errors or warnings during compilation. Error handling was tested and the printed lines have spacing to look nice. No external crates or packages; it is entirely self-contained. Future I may ship like this (as a binary) to see what feedback I may get. If my ship passes I will continue and make a GUI and learn an external crates for that. For testing and playing, I think a web UI is the best. A binary application is not the best (and unnecessary). I will see what my time looks like and maybe I will convert to an actual UI on the web before shipping or find another solution. Otherwise I will compile the .exe myself and host on the GitHub. Feedback is welcome! GH: https://github.com/Polycarbohydrate/ferris-s-game-of-life
Devlog 7 I didn’t change much during this time. However, I redid the printing to that it prints the frame at once instead of one line at a time so there is less stuttering and screen movement. I spent the majority of the time trying to use eframe and wasm but I had a hard time figuring it out. Additionally to just compile and test my code I had to compile 225+ packages every time which took a long time and if I decided to use wasm, it would be even more packages… Next step is to see if I need to fix the location of the delay (speed) and then ship. After ship, I will use an external crate for the TUI. then if the tui goes well maybe an online thing as well. Majority of projects here are using a framework that is high level for frontend development. Using Rust for frontend is a pain :( I added another video with the famous 7-cell 120+ generation ‘diehard’ to show the cli. I think there is less stutter now (i think the stutter at the end would be reduced if my terminal was not as big). Feedback is welcome!
Devlog 8 This will likely be the last devlog before my first ship. File changes: cli_display.rs: Removed hardcoded grid constants and added new input parameters for grid size. Experimented with different grid spacing but settled on a dot and space to one emoji (”. “). inputs.rs: Added a new section for grid size selection. There are four choices for selection: Small, Medium, Large, and Custom. I had a little bug with Custom not properly working but that was quickly fixed. main.rs: modified to accomodate variable and parameter changes of the 2 files above. I checked error handling and the spacing of text as well. Everything should be properly handled cargo-fmt & cargo clippy ran. Fixed the old bug of inverted y cells; the problem was because of the way I collected line renders (I rendered the bottom of the grid up, but my string concatenation pushed the bottom lines to the top). To solve I just reversed the loop for the rows (y-value). Plenty of comments In the video attached, at 200ms per frame there is no screen stutter. The new way of displaying frames seems to be good. Future: After this I will update my project GitHub ReadMe and add binaries for Windows, Linux, and MacOS. Then I will add the playable link here. After shipping, if the project passes, I will clean up the code and make the game replayable after all cell dies. Next major modification would to progress to a TUI then a GUI with additional features. Lots of ideas for this one! Other: Self contained Rust, no external crates. Q: Why not GUI? A: I see lots of people on this platform have a GUI. However they are using an easy to use game engine, web render, and/or easy to use applications. Rust is mainly for backend and using Rust for frontend is a pain in the butt. I would have to learn eframe/egui and how to work with web-assembly and convert my code to be compiled that way. A TUI would be my next step. If the TUI works, I may consider an infinite grid project milestone and/or then proceed to do a Rust-based GUI. Attached is the cell pattern known as “diehard”. It contains 7 initial starting cells and goes all the way to generation 129 before dying exacting on generation 130. Feedback is welcome!
Devlog 9 Made some improvemets/additions to the CLI today based on some of my own discoveries and feedback from the first ship. Thank you to everyone who voted on my first ship ever! I looked throught the feedback and appreciate the support. I also appreciate the constructive feedback. I took it into consideration and applied changes. Major Changes Biggest change was the addition of preset templates. You can now choose between inputting your own cells through coordinates, or by just selecting a preset template which has hardcoded values for cells and everything else. This was done by adding presets.rs which is mainly for the hardcoded values to be fetched and stored. Additionally inputs.rs was updated and overhauled with more functions to be more readable and easier to edit. main.rs was changed to accomodate the changes in input.rs and presets.rs core.rs and cli_display.rs were not changed Bug fixes Inputting a negative number in the first step of the custom setup process would not have proper program execution. I fixed by checking for negative numbers Personal changes The program now has a dedicated exit and loops after a generation dies so you can keep on testing! Phrasing in one of the prompts in inputs.rs was changed to be more clear. Additional thoughts: I will fix up the CLI a bit more and add a few more features before moving on to TUI development. The release of the TUI will be my second ship. Eventually I plan to have this project with a GUI, TUI, CLI, and a web version. Since I am planning for the CLI to be used on low-end devices, I am going to limit the file size to 1 MB. That is 1 MB across all platform binaries. Someone suggested adding a pause feature. I am currently looking into implementing that. Tldr: I will continue fixing up the CLI and adding features. Have a wonderful day.
Devlog 10 Minor changes today I didn’t spend much time today working on this project becuase I have some real world stuff to work on. Changes: I added 2 more presets to the code for a total of 5 presets. Added some additional code comments for better code understanding I did some research on a pause feature that I saw in one of the reviewer’s feedback. It is hard to implement an easy to use pause, as I want to keep the CLI std lib only - no external creates. I may drop that feature or implement it stupidly in the future. Ill do some more research on it in the future. I added 2 additional issues for future features I want in the CLI. Both have to do with detecting a simulation loop. I have also decided that the CLI should remain independent with no external crates.
Devlog 11 Ferris’s Game of Life (FGOL) v0.2.0 is now released! Check it out here: https://github.com/Polycarbohydrate/FGOL/releases/tag/v0.2.0 What is new? First of all, Ferris, is now in banners that surround text in the CLI! These banners surround important pieces of messages or menus. Text that is used for input will be displayed regularly. Taking into account many of the suggestions from the first ship, I added presets! There are 5 presets with this ship, and I plan to add more, which you can select to skip the hassle of setting up the simulation. These 5 were ones I found interesting and were fun to watch on the CLI. Additionally, you may notice that there are more menus now. In order to accomodate the many changes while keeping the user experience friendly, I decided to use menus instead of forcing you to follow a setup process. You are able to customize the simulation however you want! You are now able to add, remove, and view existing cells before you start the simulation! You can still edit the speed of the simulation, and choose the grid size you want. New settings include choosing when to stop the simulation (if you have an infinite loop) and stopping the simulation once cells move off of the screen. Technical changes: To make the code readable and better to edit (i don’t think a 1000 line file with repetitive text is good), I added banners.rs, which holds all of the banner/text content. Other files use the content by calling functions within banner.rs. This makes it so I can see more logic than text, which is more important with debugging. I added the type SettingsExport to hold all of the information I import into cli_display.rs . This was a suggestion from cargo clippy . As always, all code is linted using cargo clippy and formatted using cargo-fmt . All files besides core.rs were modified to accomodate changes. input.rs was changed the most. All platform binaries are still a modest file size (~100kb) Before releasing, I tested for formatting, bad input, and tried to fix everything. I something doesn’t look right, or you encounter a bug/error. Create an issue on the GitHub so I can quickly fix it. Future plans: Ship this release. Work on more features Transition to web-version. Video demo:
Ships:
Ferris’s Game of Life (FGOL) is Conway’s Game of Life written in Rust. The alive cells are indicated by the crab emoji, a nod to Ferris who is the Rust Langauge’s non-official mascot. I decided on this project because I wanted to build something real for the first time. This project allows me to implement many different features and opens up many pathways to expand on in the future. Currently the project only has a CLI version but I am planning to do a TUI, then progress to a native app UI and then a web UI.
The next major release of Ferris’s Game of Life is here! The CLI user experience has been greatly improved! Thanks to the reviewers of the first ship, I took their advice and added lots of new features! New features include: CLI display improvements -Text formatting -More standardization in code and printed output -5 preset options so you users don’t need any experience to play/watch. (plus simplier setup) -More customization for custom setup. -Settings for custom setup are all optional so do not feel obligated to fill them all out (unlike v0.1.0). Feedback from the first ship was used, so feel free to give feedback!...
|
1792997761.7650774
|
1793084161.7650774
|
|
24211
|
Personal Project by @Spaceccandy | Stardance
|
Spaceccandy
|
2
|
15.0
|
59
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T02:25:06Z", "hours": 4.0, "multiplier": 13.91, "payout": 59, "blessing": "neutral", "text": "So I’ve finally finished the rework of my personal portfolio website!!! It came out better then I expected, and it was not as hard as I though it’s be. Most of my challenges came with CSS, getting the formatting of the elements right, padding, margin, ect. But it was a fun learning experience yet again. Now the website is more descriptive in the project section, and the event section is much more interesting. I want to update it every time I make a new project or when I participate in a new fun activity", "repo": "https://github.com/SpaceCCandy/My-Portfolio", "demo": "https://spaceccandy.github.io/My-Portfolio/"}, {"ship_num": 2, "ts": "2026-08-01T19:56:53Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So I’ve created my own personal portfolio website where I can display projects I’ve made, and things to know about me that I can share with others! I really like how it came out. This was a great opportunity to learn about how HTML, CSS, and JavaScript comes together to create the websites we see and interact with every day. I’ll be adding more and updating this website as I create more!", "repo": "https://github.com/SpaceCCandy/My-Portfolio", "demo": "https://spaceccandy.github.io/My-Portfolio/"}]...
|
[{"post_id": 61899, "ts": "202 [{"post_id": 61899, "ts": "2026-09-05T02:21:53Z", "hours": 1.4886, "text": "Dev log #7 Events Section Rework of my website is done! I’ve added more information about what I do on the events page. Instead of just using a timeline, now I just have a scrolling panel that shows all the different organizations I’ve been apart of. Updates Added a scrolling panel of blocks (Title, image, description) I filled out all the section with words and images!"}, {"post_id": 61267, "ts": "2026-09-04T03:43:17Z", "hours": 0.8947, "text": "Dev log #6 Updates I filled out all the sections for my portfolio site project page I added a block around the section headers to make the page more visually interesting. What’s next? Reworking the Events section on the main page!"}, {"post_id": 58640, "ts": "2026-08-31T03:57:31Z", "hours": 1.8411, "text": "Dev log #5 Project page Before, when you pressed learn more for the project blocks it just takes you to a Github link which is boring, and not informative on the projects I will make. So I added a whole other html page for that. Updates New html page Sections Problem, How I built it, Challenges I had, and What I learned. Filled out the problem section, and how I built it section. Learned how to make a cool tilted picture and added that What’s next Filling out the rest of the sections Doing something else with the event section because the timeline didn’t feel right."}, {"post_id": 39089, "ts": "2026-08-01T19:47:59Z", "hours": 0.6497, "text": "Dev log #4 I’m doneeee!!! I’m so glad I finished my own portfolio site. It’s just what I wanted to make. I finished filling out basic about me, events, and projects! I’ll be back and add more projects as time goes by, but this was fun."}, {"post_id": 39055, "ts": "2026-08-01T18:50:45Z", "hours": 2.23, "text": "Dev log #3 I made the layout for the events/ activities section to show (time - activity name - description). I also added a contacts sections because I think that’s important. So, almost everything is done, I just have to actually put down information about me now! Updates Event/ Activities layout system New section header decorations Contacts section What’s next Filling out the information and ship!!!"}, {"post_id": 38539, "ts": "2026-08-01T00:16:16Z", "hours": 1.2528, "text": "Dev log #2 I got the project display system down basically. I can put images, titles, and a description for each project. When I click into it, I can make another page with more info! I also added a sticky nav bar on top, so it’s still easy to navigate to different sections. Updates Project blocks (Thumbnail, title, description + learn more button) Sticky navigation bar on top, only when the island navigation is out of sight Text sizing, making sure the website looks normal on all window sizes. What’s next Working out the event base/ layout Actually filling out the about me"}, {"post_id": 38155, "ts": "2026-07-31T12:20:23Z", "hours": 3.6225, "text": "Dev log #2 I’ve finished the 3d models for the page navigation! And I finished the navigation system. Now I can click my icons to navigate to that section of the page. Also shout out to @Max_ , my layout was inspired by them 👍 Updates Modeled navigation button icons Hover to highlight, and scale up a bit Press to navigate to the corresponding section What’s next Creating the project by project system for the project section. Creating a mini navigation bar on the side too, so you can easily navigate to that section while already being down the page."}, {"post_id": 37896, "ts": "2026-07-30T21:43:44Z", "hours": 3.1847, "text": "Dev log #1 I’ve wanted to make my own personal portfolio site for a while now, and I never got to finish it. Now I’m coming back to this project, and using new knowledge I’ve learned to create a new, cooler site! Update Today I did some planning, and created a layout of what I wanted to build. I also started on the 3d model of the home page interactions. Home Big letters of my name, 3 buildings that act as the buttons to navigate to that part of the page(I plan to 3d model it and turn it into pngs) Projects Quick overview of the project, title, and click it for a deeper dive? About me My hobbies, inspirations, ect. Activites/Events Things I’ve evolved myself in, or I’m currently taking part in like Robotics. What’s next Finishing up my home button interaction pngs Start coding, and creating my portfolio site!"}]...
|
Title: Personal Project by @Spaceccandy | Stardanc Title: Personal Project by @Spaceccandy | Stardance
Devlogs:
Dev log #1 I’ve wanted to make my own personal portfolio site for a while now, and I never got to finish it. Now I’m coming back to this project, and using new knowledge I’ve learned to create a new, cooler site! Update Today I did some planning, and created a layout of what I wanted to build. I also started on the 3d model of the home page interactions. Home Big letters of my name, 3 buildings that act as the buttons to navigate to that part of the page(I plan to 3d model it and turn it into pngs) Projects Quick overview of the project, title, and click it for a deeper dive? About me My hobbies, inspirations, ect. Activites/Events Things I’ve evolved myself in, or I’m currently taking part in like Robotics. What’s next Finishing up my home button interaction pngs Start coding, and creating my portfolio site!
Dev log #2 I’ve finished the 3d models for the page navigation! And I finished the navigation system. Now I can click my icons to navigate to that section of the page. Also shout out to @Max_ , my layout was inspired by them 👍 Updates Modeled navigation button icons Hover to highlight, and scale up a bit Press to navigate to the corresponding section What’s next Creating the project by project system for the project section. Creating a mini navigation bar on the side too, so you can easily navigate to that section while already being down the page.
Dev log #2 I got the project display system down basically. I can put images, titles, and a description for each project. When I click into it, I can make another page with more info! I also added a sticky nav bar on top, so it’s still easy to navigate to different sections. Updates Project blocks (Thumbnail, title, description + learn more button) Sticky navigation bar on top, only when the island navigation is out of sight Text sizing, making sure the website looks normal on all window sizes. What’s next Working out the event base/ layout Actually filling out the about me
Dev log #3 I made the layout for the events/ activities section to show (time - activity name - description). I also added a contacts sections because I think that’s important. So, almost everything is done, I just have to actually put down information about me now! Updates Event/ Activities layout system New section header decorations Contacts section What’s next Filling out the information and ship!!!
Dev log #4 I’m doneeee!!! I’m so glad I finished my own portfolio site. It’s just what I wanted to make. I finished filling out basic about me, events, and projects! I’ll be back and add more projects as time goes by, but this was fun.
Dev log #5 Project page Before, when you pressed learn more for the project blocks it just takes you to a Github link which is boring, and not informative on the projects I will make. So I added a whole other html page for that. Updates New html page Sections Problem, How I built it, Challenges I had, and What I learned. Filled out the problem section, and how I built it section. Learned how to make a cool tilted picture and added that What’s next Filling out the rest of the sections Doing something else with the event section because the timeline didn’t feel right.
Dev log #6 Updates I filled out all the sections for my portfolio site project page I added a block around the section headers to make the page more visually interesting. What’s next? Reworking the Events section on the main page!
Dev log #7 Events Section Rework of my website is done! I’ve added more information about what I do on the events page. Instead of just using a timeline, now I just have a scrolling panel that shows all the different organizations I’ve been apart of. Updates Added a scrolling panel of blocks (Title, image, description) I filled out all the section with words and images!
Ships:
So I’ve created my own personal portfolio website where I can display projects I’ve made, and things to know about me that I can share with others! I really like how it came out. This was a great opportunity to learn about how HTML, CSS, and JavaScript comes together to create the websites we see and interact with every day. I’ll be adding more and updating this website as I create more!
So I’ve finally finished the rework of my personal portfolio website!!! It came out better then I expected, and it was not as hard as I though it’s be. Most of my challenges came with CSS, getting the formatting of the elements right, padding, margin, ect. But it was a fun learning experience yet again. Now the website is more descriptive in the project section, and the event section is much more interesting. I want to update it every time I make a new project or when I participate in a new fun activity...
|
1793109345.4110503
|
1793195745.4110503
|
|
24214
|
Artifact Forge by @InvalidJoker | Stardance
|
InvalidJoker
|
2
|
15.0
|
96
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T12:51:37Z", "hours": 7.0, "multiplier": 4.93, "payout": 37, "blessing": "neutral", "text": "Artifact Registry v1 Now that we support more artifact types and have sorted out most of the initial bugs and quirks, it’s time to release the first version under the new name Artifact Registry. New Features / Changes Mirroring npm package support Docker image support Admin UI improvements How to use For a quick look, just visit the hosted repo at: https://repo.koder.wtf/ (it’s read-only, as it’s only a UI demo, for the admin UI and pushing artifacts you need to self-host your own repo) Self-host it via the instructions in the README: https://github.com/InvalidJoker/artifact-forge", "repo": "https://github.com/InvalidJoker/artifact-forge", "demo": "https://repo.koder.wtf/"}, {"ship_num": 2, "ts": "2026-07-04T15:50:24Z", "hours": 8.0, "multiplier": 7.85, "payout": 59, "blessing": "neutral", "text": "Today I’m shipping v0 of the Maven repository! I think it’s stable enough for an initial release. Just visit the hosted repo at: https://repo.koder.wtf/ Or selfhost it via the instructions in the readme ( https://github.com/InvalidJoker/maven-repo )", "repo": "https://github.com/InvalidJoker/artifact-forge", "demo": "https://repo.koder.wtf/"}]...
|
[{"post_id": 44570, "ts": "202 [{"post_id": 44570, "ts": "2026-08-10T12:39:02Z", "hours": 1.2525, "text": "Artifact Mirroring You can now mirror artifacts from other registries. Why? Better reliability — builds are less affected by external registry outages or network issues. More control — keep the artifacts you depend on available within your own infrastructure. Next steps QoL fixes More artifact types, such as Cargo crates"}, {"post_id": 42523, "ts": "2026-08-07T10:07:25Z", "hours": 5.7067, "text": "maven-repo is now Artifact Forge maven-repo did one thing well: simple, self-hosted Maven hosting. But self-hosted registries aren’t just a Java problem. Docker images need a home too, and running a separate service just for that never made sense. So I merged both into one tool. The old name didn’t fit anymore. maven-repo is now Artifact Forge . What’s new NPM package support — same reliability as before Docker build support — push and pull images through the same system One registry for more artifact types — less infrastructure to manage What’s next More artifact types Mirroring public repos"}, {"post_id": 26224, "ts": "2026-07-10T21:46:17Z", "hours": 0.4725, "text": "Documenting the Maven Repo Just a quick devlog on the changes I made since attempting the first ship: I added the ability to set a custom admin password when requesting a reset Added docs for usage and good setup docs"}, {"post_id": 22206, "ts": "2026-07-04T15:46:29Z", "hours": 0.8794, "text": "Initial Release Today I’m shipping v0 of the Maven repository! I think it’s stable enough for an initial release. For future releases, I plan to add support for Docker images and other artifact types, but that’ll come later. You can check out the public instance here: https://repo.koder.wtf/ If you’d rather host it yourself, it’s easy to do with Docker, just follow the instructions in the readme."}, {"post_id": 21454, "ts": "2026-07-03T12:37:08Z", "hours": 2.1386, "text": "UI Refresh In my last Dev Log, I mentioned that I had finished the first prototype with all the core features in place. Over the past week, I’ve focused on completely refreshing the frontend. The interface has been redesigned to be cleaner, more modern, and much more enjoyable to use. I also introduced Instance Settings, allowing you to fully customize your Maven repository. Since the project is self-host-first, it should feel like your repository. You can now personalize the instance name, logo, and color scheme to match your style. As you can see, the application now features a brand-new green and black color palette."}, {"post_id": 16259, "ts": "2026-06-26T13:07:18Z", "hours": 2.5775, "text": "Basic Prototype Complete The basic prototype is now complete, and the core features are already in place. Current features include: Customizable repository name/icon Full Gradle and Maven authentication support Personal access tokens with configurable read and write permissions Read-only tokens for development environments, allowing dependencies to be installed without the risk of accidentally publishing artifacts Support for both public and private repositories, making it easy to host open-source packages while keeping private artifacts secure Next up: Improve and polish the frontend Add support for additional artifact types The core functionality is now in place, so the focus can shift towards improving the user experience and expanding support for more package ecosystems."}, {"post_id": 15626, "ts": "2026-06-25T12:39:43Z", "hours": 1.9461, "text": "I started working on an initial protype of our maven repo It currently has: basic maven repo authentication basic admin area (creating/deleting repos) Later it will support: custom docker registry oauth full featured admin repo Focus is on selfhosted first and dx"}]...
|
Title: Artifact Forge by @InvalidJoker | Stardance Title: Artifact Forge by @InvalidJoker | Stardance
Devlogs:
I started working on an initial protype of our maven repo It currently has: basic maven repo authentication basic admin area (creating/deleting repos) Later it will support: custom docker registry oauth full featured admin repo Focus is on selfhosted first and dx
Basic Prototype Complete The basic prototype is now complete, and the core features are already in place. Current features include: Customizable repository name/icon Full Gradle and Maven authentication support Personal access tokens with configurable read and write permissions Read-only tokens for development environments, allowing dependencies to be installed without the risk of accidentally publishing artifacts Support for both public and private repositories, making it easy to host open-source packages while keeping private artifacts secure Next up: Improve and polish the frontend Add support for additional artifact types The core functionality is now in place, so the focus can shift towards improving the user experience and expanding support for more package ecosystems.
UI Refresh In my last Dev Log, I mentioned that I had finished the first prototype with all the core features in place. Over the past week, I’ve focused on completely refreshing the frontend. The interface has been redesigned to be cleaner, more modern, and much more enjoyable to use. I also introduced Instance Settings, allowing you to fully customize your Maven repository. Since the project is self-host-first, it should feel like your repository. You can now personalize the instance name, logo, and color scheme to match your style. As you can see, the application now features a brand-new green and black color palette.
Initial Release Today I’m shipping v0 of the Maven repository! I think it’s stable enough for an initial release. For future releases, I plan to add support for Docker images and other artifact types, but that’ll come later. You can check out the public instance here: https://repo.koder.wtf/ If you’d rather host it yourself, it’s easy to do with Docker, just follow the instructions in the readme.
Documenting the Maven Repo Just a quick devlog on the changes I made since attempting the first ship: I added the ability to set a custom admin password when requesting a reset Added docs for usage and good setup docs
maven-repo is now Artifact Forge maven-repo did one thing well: simple, self-hosted Maven hosting. But self-hosted registries aren’t just a Java problem. Docker images need a home too, and running a separate service just for that never made sense. So I merged both into one tool. The old name didn’t fit anymore. maven-repo is now Artifact Forge . What’s new NPM package support — same reliability as before Docker build support — push and pull images through the same system One registry for more artifact types — less infrastructure to manage What’s next More artifact types Mirroring public repos
Artifact Mirroring You can now mirror artifacts from other registries. Why? Better reliability — builds are less affected by external registry outages or network issues. More control — keep the artifacts you depend on available within your own infrastructure. Next steps QoL fixes More artifact types, such as Cargo crates
Ships:
Today I’m shipping v0 of the Maven repository! I think it’s stable enough for an initial release. Just visit the hosted repo at: https://repo.koder.wtf/ Or selfhost it via the instructions in the readme ( https://github.com/InvalidJoker/maven-repo )
Artifact Registry v1 Now that we support more artifact types and have sorted out most of the initial bugs and quirks, it’s time to release the first version under the new name Artifact Registry. New Features / Changes Mirroring npm package support Docker image support Admin UI improvements How to use For a quick look, just visit the hosted repo at: https://repo.koder.wtf/ (it’s read-only, as it’s only a UI demo, for the admin UI and pushing artifacts you need to self-host your own repo) Self-host it via the instructions in the README: https://github.com/InvalidJoker/artifact-forge...
|
1793116381.649477
|
1793202781.649477
|
|
24246
|
Pineapple Chess GUI by @Theenash | Stardance
|
Theenash
|
2
|
28.0
|
448
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T01:40:27Z", "hours": 6.0, "multiplier": 8.66, "payout": 64, "blessing": "neutral", "text": "I made a chess software called Pineapple Chess, this is my second ship on this project, this ship is the major change of porting it to the web. The summary will stay mostly the same for any newcomers to the second ship. — SUMMARY — So basically it’s like any other chess software but it is pineapple themed(don’t worry if you don’t like the way it looks you can switch themes)! With 3 themes: Light, Dark, and Pineapple! There is a 2 player mode, if you have 2 people in front of a computer, you can play against each other on 1 computer! With an optional board flip feature! You can play against bots, powered by Stockfish, you can play against bots with different difficulties. And this time built with Javascript. Basically the original version was made in Java, but in the last ship, I got a lot of feedback saying I should port this to the web, so I did! — LINKS — To Play on web: Play now: https://shadowtech1234.github.io/pineapplechess/ — CHALLENGES — Here are some challenges I faced. When I first started porting this, I had to learn another brand new language that I had never used, which is JavaScript(last time was Java), so it took me a while to get used to it and progress was very slow at the start. Like a lot of hours I spent on the project was not really captured by Hackatime because I was on documentation and troubleshooting a lot. A very, very big task was efficiency. JavaScript is very, very fragile. I had a lot of problems where it would always freeze and stop, which lead to phantom moves in chess and broke it a lot. Learning to code in JavaScript with this efficiency was a bit hard because I had to make sure everything was perfect and there was no holes in it. Like for example in Java, I just coded in whatever way works, and there probably was holes and leaks in that but it wouldn’t be noticeable, in JavaScript it was the complete opposite. (This is what I noticed when I coded, I don’t know if this is factual that JavaScript is very hard when coding to make sure it’s efficient, it might just be me) Another problem was when I tried putting this on GitHub Pages, because the source for it had to be like in one folder I had to rearrange my code and rewrite some parts to make it work on GitHub Pages, The last challenge I faced was stopping. This is the same as last time. I have a lot of ideas to add to this, but I realized that if I did all of it, it would be a waste of time. This includes adding a evaluation bar, game export and import, game analysis, and maybe multiplayer. Working on this is a fun side project but I don’t have the time to work on it as much right now as I have a lot of work from school, and Stardance is ending soon anyways, so I wanted to get it as polished as possible and ship it. That’s basically it. I had a lot of fun making this, it’s not much but I will add features in the future, maybe in the next Hack Club event. Thank you!", "repo": "https://github.com/Shadowtech1234/pineapplechess", "demo": "https://shadowtech1234.github.io/pineapplechess/"}, {"ship_num": 2, "ts": "2026-08-03T00:03:27Z", "hours": 22.0, "multiplier": 14.56, "payout": 384, "blessing": "neutral", "text": "I made a chess software called Pineapple Chess. — SUMMARY — So basically it’s like any other chess software but it is pineapple themed(don’t worry if you don’t like the way it looks you can switch themes)! With 3 themes: Light, Dark, and Pineapple! There is a 2 player mode, if you have 2 people in front of a computer, you can play against each other on 1 computer! With an optional board flip feature! You can play against bots, powered by Stockfish, you can play against bots with different difficulties. And built with Java. — LINKS — Github: https://github.com/Shadowtech1234/pineapplechess/ If you want to download, simply go to the Github repo, and go to the releases tab and download it! For more detailed instructions, it is on the Github readme. — SHOWCASE VIDEO — Showcase video is available on the very top of the readme in the Github repo. (I wasn’t able to attach the video to this Ship post) — CHALLENGES — Here are some challenges I faced. When I first started, I had to learn a brand new language that I had never used, which is Java, so it took me a while to get used to it and progress was very slow at the start. Like a lot of hours I spent on the project was not really captured by Hackatime because I was on documentation and troubleshooting a lot. A very, very big task was app resizing. What I mean is when you resize the app, for example make it fit the entire screen, the app has to make every component scale up, or scale down with a ratio to make it look good. This took me so long to implement and it works, there is just one problem, you have to click the app after you change the window for the resize to apply, so it looks weird when you resize, but you just need to click on the app to refresh it. Hopefully I can fix that in the next update of my app. Another problem was when I tried building my app to an installer to make it as easy as possible for the user. It just never worked for a while. Like every time I tried to build it would give me a problem, and after I fixed it it just gave me another. This went on 7 times. Of the times I had to rewrite a couple major parts of my app including image loading of the pieces, it worked well in developer mode(which is just clicking the run button in VS Code), but Java kind works differently when compiled into a finished product, so the images didn’t load in a couple builds. But now it works and has a user-friendly installer. The last challenge I faced was stopping. I have a lot of ideas to add to this, but I realized that if I did all of it, it would be a waste of time. This includes multi-platform support over MacOS and Linux, not only Windows. Working on this is a fun side project but I want to do something more meaningful. So I am shipping this project right now and trying to make it as clean as possible with the current features of the app, and moving on to the next project. I will still be working on this project, but I will probably come back to it after summer ends or ever later. That’s basically it. I had a lot of fun making the app, it’s not much but I will add features in the future. Thank you!", "repo": "https://github.com/Shadowtech1234/pineapplechess", "demo": "https://shadowtech1234.github.io/pineapplechess/"}]...
|
[{"post_id": 71505, "ts": "202 [{"post_id": 71505, "ts": "2026-09-20T23:20:37Z", "hours": 6.0689, "text": "JavaScript Port After finishing Pineapple Chess in Java , which meant you need to download my app, which is Windows only, I started getting a lot of people asking if I could port this to the web. So I did, yay. From Java to JavaScript The original version of Pineapple Chess was built entirely in Java, and after finishing it, I figured porting it to JavaScript would be a pretty interesting challenge. The reason why I have to use JavaScript for anyone curious is because that is one of the best for web development. The goal was to recreate the game in JavaScript while keeping the same basic gameplay and features from the original version. This meant going through the original code and rebuilding a lot of the game’s logic in a completely different language. Rebuilding the Game One of the biggest parts of the process was getting the chess logic working again. I had to recreate things like: Piece movement Check and checkmate Special chess moves Turn switching Selecting and moving pieces Detecting when the game ends Since I already had the Java version working, I wasn’t starting completely from scratch. I could use the original game as a reference for how everything was supposed to work, which made the process a lot easier. Why JavaScript? The main reason for making the JavaScript version was accessibility. The original Java version worked, but having a JavaScript version makes it much easier to run and share. Instead of needing to set up the Java version first, the JavaScript version can be used in a much more web-friendly environment. Basically, Pineapple Chess is now significantly easier to get running. And That’s a Wrap! This is actually going to be my last devlog for this event. With the event ending in about two weeks, I wanted to squeeze in one last piece of work before it wraps up, and porting Pineapple Chess to JavaScript felt like the perfect way to finish things off. I know this devlog isn’t much of a change, and there are a lot of features in Pineapple Chess that I would love to add, it’s just I don’t have the time as I have a lot of work in school, and Stardance is ending soon, I will be working on this in the future though. It’s pretty cool seeing a project that I originally made in Java now running in JavaScript. The original version isn’t going anywhere, but now Pineapple Chess has a new form too. I will be shipping this soon, stay tuned! And also, thank you to everyone who followed along with my devlogs, gave feedback, played Pineapple Chess, or suggested things for me to work on. All of the feedback and support throughout the event has genuinely been really helpful and made working on this project a lot more fun. It’s been awesome being able to work on Pineapple Chess throughout this event, it’s not a big project like what other people make but it was a passion project for me for fun. One last update before the event ends. 🍍❤️ Thanks for reading, and I’ll see you around the next Hack Club event!"}, {"post_id": 38375, "ts": "2026-07-31T18:34:51Z", "hours": 1.9519, "text": "I WAS SANE BEFORE TODAY😭😭😭. I have done it, I have finished my app. That part was so easy. But compiling it into a downloadable installer has cost me so much I might as well have sold my soul. I had to build the stupid thing 7 TIMES. I had to mess around with the dependencies for so long, this took like 8 hours but most of it was just trying to fix dependencies and working in the terminal trying to debug why my installer wont work. My installer now works never the less. It is very easy to install in a user’s perspective and it automatically makes a shortcut in the desktop. Sadly this installer is only for windows, sorry Mac and Linux. I will be shipping this project soon. As you can see in the pictures attached, it created the shortcut! And it works!🎉🎉🎉"}, {"post_id": 37946, "ts": "2026-07-31T00:05:38Z", "hours": 4.3528, "text": "This for some reason genuinely took the life out of me. I have finally added the whole point of this chess app, PINEAPPLES! NEW BOARD COLOR, NEW UI THEME, NEW CHESS PEICES. Don’t worry, if you or any other user doesn’t like it, I have added the ability in settings to be able to switch between Light, Dark, and Pineapple Mode. But why would you not want to play with this beauty! The addition of the theme was easy, it was the settings that your able to switch themes that was the hard part. On top of that since I added new chess pieces, the entirety of the image load system in my code and organization of the resources in the source code had to be completely redone, the re-organizing for the file management was not tracked by hackatime but that took way too long. But yea, yay🎉🎉🎉"}, {"post_id": 30885, "ts": "2026-07-18T21:08:29Z", "hours": 4.2989, "text": "I have successfully added Stockfish, an chess engine that is extremely powerful to my app. Took a bit of work, but now you can play against a bot! I have added setting to customize the game against Stockfish if you click it so there’s difficulty selection and the side chooser which lets you choose which side you want to play on. Hardest part was getting the code to work with Stockfish as Stockfish communicates via the Universal Chess Interface (UCI) protocol. The chess engine itself is basically a command line and you can put in the current position and it will spit out the best move in the command line. Its not very user friendly which is why chess GUI’s come in to play like mine, my code translates it from he UI to the command line and vice versa. UCI lets me to be able to use any chess engine I want as long as it uses the UCI protocol, meaning in the future if I decide to make my own chess engine, I can implement it to my app, but for now it will remain as Stockfish."}, {"post_id": 25560, "ts": "2026-07-09T21:44:03Z", "hours": 3.5764, "text": "A LOT OF NEW STUFF. Easiest part was dark mode yay. but what took me 3 hours and was so hard to do was reseizing, what I mean is you can resize the app how ever way and it works with any screen and it always sets the board at the center, I don’t know why it took this long but I did it yay. I have attached a example of it centering it self on multiple aspect ratios."}, {"post_id": 15990, "ts": "2026-06-25T23:28:19Z", "hours": 1.3036, "text": "for a very small feature, this should not have taken this long. i added 2 features, the side bar in the left for future stuff, the play button on he left allows to choose the game mode when i add the feature to be able to play bots, i want to be able to choose what I want to be able to do, either play 2 player or bots, so basically the sidebar is the foundation for future features. Then is the feature that should have taken like 10 minutes, but it took me a hour and a half. It is the feature that flips the board after every turn in 2 player mode because 2 player means 2 people are using one computer to play so the board should flip. Like it used to flip the peices were upside down, liekt he images were, and i tried to add code to make it flip but it didnt work, so then I added a seperate folder with the peices edited to be flipped, but then after implemeting that, id id some stuff it swithc the pictures to that folder only when the baord is flipped, BUT THEN IT STILL REMAINED FLIPPED. So i tried so much to finally figure out I did somehtign that amde the peices flip by themselves without editing and using the different stuff, but when i tired to remove the folder andf only use one folder wiht the peices IT STOPPED WORKING, so now I have 2 folder wiht the exact same pictures of the peices and it works😭. sry if I yapped too much but I needed to vent, In the picture attached it shows the baord flipped and the sidebar as well if you wanna see the final product of the work ive done so far. but im gieunly tweaking rn😭"}, {"post_id": 15336, "ts": "2026-06-24T22:21:00Z", "hours": 0.63, "text": "added a new popup system where instead of it opening a new separate window with the popup, it is more cleaner and in the app, my next step is to add a sidebar to the left and have like a bunch of different stuff there 😄"}, {"post_id": 15119, "ts": "2026-06-24T15:53:12Z", "hours": 1.2217, "text": "BIG PROGRESS, fixed possible move highlights. added a move history to the side, and added draw detection for all possible draws. Next job is hopefully being able to export and import PGN."}, {"post_id": 14788, "ts": "2026-06-24T00:56:39Z", "hours": 1.1747, "text": "A lot of progress has been done, I have put in all the special moves like castling, en passant, and pawn promotion. And I have also added check and checkmate detection. Also I have added UI popups that appear when you promote so you can choose what piece you want as well as the game over pop up when you checkmate and a rematch button which resets the board. So foundation of my chess game GUI is complete, I have recreated the game, I just have some small tweaks that i can do later like when you click a piece while you are in check, it still shows the viable options that don’t protect your king, but it wont let you move there but it still shows it. On top of that I also want to make the pop ups happen in game without opening a new window. But my main next step is add a move history, draw detection, which can only be done with a move history because 2 ways a draw can happen is when 50 moves have passed and a piece has not been captured, or the same position has been repeated 3 times."}, {"post_id": 14609, "ts": "2026-06-23T19:40:15Z", "hours": 1.9833, "text": "I have made my chess board render pieces, show viable moves, make moves, and only allow legal moves. Not all special moves have been added like castling, en passant, pawn promotion, stalemate, or even checkmate(you can take the opponent’s king and the opponent can still move😭)."}, {"post_id": 14437, "ts": "2026-06-23T15:52:11Z", "hours": 0.7981, "text": "I made the Chess Board"}, {"post_id": 14362, "ts": "2026-06-23T13:55:21Z", "hours": 0.6683, "text": "I have started my project, most of my time was taken switching my GUI from Java Swing to JavaFX. This is just a simple window so far but we are going somewhere. This isn’t a lot but I am learning Java, so its just slow and steady progress."}]...
|
Title: Pineapple Chess GUI by @Theenash | Stardanc Title: Pineapple Chess GUI by @Theenash | Stardance
Devlogs:
I have started my project, most of my time was taken switching my GUI from Java Swing to JavaFX. This is just a simple window so far but we are going somewhere. This isn’t a lot but I am learning Java, so its just slow and steady progress.
I made the Chess Board
I have made my chess board render pieces, show viable moves, make moves, and only allow legal moves. Not all special moves have been added like castling, en passant, pawn promotion, stalemate, or even checkmate(you can take the opponent’s king and the opponent can still move😭).
A lot of progress has been done, I have put in all the special moves like castling, en passant, and pawn promotion. And I have also added check and checkmate detection. Also I have added UI popups that appear when you promote so you can choose what piece you want as well as the game over pop up when you checkmate and a rematch button which resets the board. So foundation of my chess game GUI is complete, I have recreated the game, I just have some small tweaks that i can do later like when you click a piece while you are in check, it still shows the viable options that don’t protect your king, but it wont let you move there but it still shows it. On top of that I also want to make the pop ups happen in game without opening a new window. But my main next step is add a move history, draw detection, which can only be done with a move history because 2 ways a draw can happen is when 50 moves have passed and a piece has not been captured, or the same position has been repeated 3 times.
BIG PROGRESS, fixed possible move highlights. added a move history to the side, and added draw detection for all possible draws. Next job is hopefully being able to export and import PGN.
added a new popup system where instead of it opening a new separate window with the popup, it is more cleaner and in the app, my next step is to add a sidebar to the left and have like a bunch of different stuff there 😄
for a very small feature, this should not have taken this long. i added 2 features, the side bar in the left for future stuff, the play button on he left allows to choose the game mode when i add the feature to be able to play bots, i want to be able to choose what I want to be able to do, either play 2 player or bots, so basically the sidebar is the foundation for future features. Then is the feature that should have taken like 10 minutes, but it took me a hour and a half. It is the feature that flips the board after every turn in 2 player mode because 2 player means 2 people are using one computer to play so the board should flip. Like it used to flip the peices were upside down, liekt he images were, and i tried to add code to make it flip but it didnt work, so then I added a seperate folder with the peices edited to be flipped, but then after implemeting that, id id some stuff it swithc the pictures to that folder only when the baord is flipped, BUT THEN IT STILL REMAINED FLIPPED. So i tried so much to finally figure out I did somehtign that amde the peices flip by themselves without editing and using the different stuff, but when i tired to remove the folder andf only use one folder wiht the peices IT STOPPED WORKING, so now I have 2 folder wiht the exact same pictures of the peices and it works😭. sry if I yapped too much but I needed to vent, In the picture attached it shows the baord flipped and the sidebar as well if you wanna see the final product of the work ive done so far. but im gieunly tweaking rn😭
A LOT OF NEW STUFF. Easiest part was dark mode yay. but what took me 3 hours and was so hard to do was reseizing, what I mean is you can resize the app how ever way and it works with any screen and it always sets the board at the center, I don’t know why it took this long but I did it yay. I have attached a example of it centering it self on multiple aspect ratios.
I have successfully added Stockfish, an chess engine that is extremely powerful to my app. Took a bit of work, but now you can play against a bot! I have added setting to customize the game against Stockfish if you click it so there’s difficulty selection and the side chooser which lets you choose which side you want to play on. Hardest part was getting the code to work with Stockfish as Stockfish communicates via the Universal Chess Interface (UCI) protocol. The chess engine itself is basically a command line and you can put in the current position and it will spit out the best move in the command line. Its not very user friendly which is why chess GUI’s come in to play like mine, my code translates it from he UI to the command line and vice versa. UCI lets me to be able to use any chess engine I want as long as it uses the UCI protocol, meaning in the future if I decide to make my own chess engine, I can implement it to my app, but for now it will remain as Stockfish.
This for some reason genuinely took the life out of me. I have finally added the whole point of this chess app, PINEAPPLES! NEW BOARD COLOR, NEW UI THEME, NEW CHESS PEICES. Don’t worry, if you or any other user doesn’t like it, I have added the ability in settings to be able to switch between Light, Dark, and Pineapple Mode. But why would you not want to play with this beauty! The addition of the theme was easy, it was the settings that your able to switch themes that was the hard part. On top of that since I added new chess pieces, the entirety of the image load system in my code and organization of the resources in the source code had to be completely redone, the re-organizing for the file management was not tracked by hackatime but that took way too long. But yea, yay🎉🎉🎉
I WAS SANE BEFORE TODAY😭😭😭. I have done it, I have finished my app. That part was so easy. But compiling it into a downloadable installer has cost me so much I might as well have sold my soul. I had to build the stupid thing 7 TIMES. I had to mess around with the dependencies for so long, this took like 8 hours but most of it was just trying to fix dependencies and working in the terminal trying to debug why my installer wont work. My installer now works never the less. It is very easy to install in a user’s perspective and it automatically makes a shortcut in the desktop. Sadly this installer is only for windows, sorry Mac and Linux. I will be shipping this project soon. As you can see in the pictures attached, it created the shortcut! And it works!🎉🎉🎉
JavaScript Port After finishing Pineapple Chess in Java , which meant you need to download my app, which is Windows only, I started getting a lot of people asking if I could port this to the web. So I did, yay. From Java to JavaScript The original version of Pineapple Chess was built entirely in Java, and after finishing it, I figured porting it to JavaScript would be a pretty interesting challenge. The reason why I have to use JavaScript for anyone curious is because that is one of the best for web development. The goal was to recreate the game in JavaScript while keeping the same basic gameplay and features from the original version. This meant going through the original code and rebuilding a lot of the game’s logic in a completely different language. Rebuilding the Game One of the biggest parts of the process was getting the chess logic working again. I had to recreate things like: Piece movement Check and checkmate Special chess moves Turn switching Selecting and moving pieces Detecting when the game ends Since I already had the Java version working, I wasn’t starting completely from scratch. I could use the original game as a reference for how everything was supposed to work, which made the process a lot easier. Why JavaScript? The main reason for making the JavaScript version was accessibility. The original Java version worked, but having a JavaScript version makes it much easier to run and share. Instead of needing to set up the Java version first, the JavaScript version can be used in a much more web-friendly environment. Basically, Pineapple Chess is now significantly easier to get running. And That’s a Wrap! This is actually going to be my last devlog for this event. With the event ending in about two weeks, I wanted to squeeze in one last piece of work before it wraps up, and porting Pineapple Chess to JavaScript felt like the perfect way to finish things off. I know this devlog isn’t much of a change, and there are a lot of features in Pineapple Chess that I would love to add, it’s just I don’t have the time as I have a lot of work in school, and Stardance is ending soon, I will be working on this in the future though. It’s pretty cool seeing a project that I originally made in Java now running in JavaScript. The original version isn’t going anywhere, but now Pineapple Chess has a new form too. I will be shipping this soon, stay tuned! And also, thank you to everyone who followed along with my devlogs, gave feedback, played Pineapple Chess, or suggested things for me to work on. All of the feedback and support throughout the event has genuinely been really helpful and made working on this project a lot more fun. It’s been awesome being able to work on Pineapple Chess throughout this event, it’s not a big project like what other people make but it was a passion project for me for fun. One last update before the event ends. 🍍❤️ Thanks for reading, and I’ll see you around the next Hack Club event!
Ships:
I made a chess software called Pineapple Chess. — SUMMARY — So basically it’s like any other chess software but it is pineapple themed(don’t worry if you don’t like the way it looks you can switch themes)! With 3 themes: Light, Dark, and Pineapple! There is a 2 player mode, if you have 2 people in front of a computer, you can play against each other on 1 computer! With an optional board flip feature! You can play against bots, powered by Stockfish, you can play against bots with different difficulties. And built with Java. — LINKS — Github: https://github.com/Shadowtech1234/pineapplechess/ If you want to download, simply go to the Github repo, and go to the releases tab and download it! For more detailed instructions, it is on the Github readme. — SHOWCASE VIDEO — Showcase video is available on the very top of the readme in the Github repo. (I wasn’t able to attach the video to this Ship post) — CHALLENGES — Here are some challenges I faced. When I first started, I had to learn a brand new language that I had never used, which is Java, so it took me a while to get used to it and progress was very slow at the start. Like a lot of hours I spent on the project was not really captured by Hackatime because I was on documentation and troubleshooting a lot. A very, very big task was app resizing. What I mean is when you resize the app, for example make it fit the entire screen, the app has to make every component scale up, or scale down with a ratio to make it look good. This took me so long to implement and it works, there is just one problem, you have to click the app after you change the window for the resize to apply, so it looks weird when you resize, but you just need to click on the app to refresh it. Hopefully I can fix that in the next update of my app. Another problem was when I tried building my app to an installer to make it as easy as possible for the user. It just never worked for a while. Like every time I tried to build it would give me a problem, and after I fixed it it just gave me another. This went on 7 times. Of the times I had to rewrite a couple major parts of my app including image loading of the pieces, it worked well in developer mode(which is just clicking the run button in VS Code), but Java kind works differently when compiled into a finished product, so the images didn’t load in a couple builds. But now it works and has a user-friendly installer. The last challenge I faced was stopping. I have a lot of ideas to add to this, but I realized that if I did all of it, it would be a waste of time. This includes multi-platform support over MacOS and Linux, not only Windows. Working on this is a fun side project but I want to do something more meaningful. So I am shipping this project right now and trying to make it as clean as possible with the current features of the app, and moving on to the next project. I will still be working on this project, but I will probably come back to it after summer ends or ever later. That’s basically it. I had a lot of fun making the app, it’s not much but I will add features in the future. Thank you!
I made a chess software called Pineapple Chess, this is my second ship on this project, this ship is the major change of porting it to the web. The summary will stay mostly the same for any newcomers to the second ship. — SUMMARY — So basically it’s like any other chess software but it is pineapple themed(don’t worry if you don’t like the way it looks you can switch themes)! With 3 themes: Light, Dark, and Pineapple! There is a 2 player mode, if you have 2 people in front of a computer, you can play against each other on 1 computer! With an optional board flip feature! You can play against bots, powered by Stockfish, you can play against bots with different difficulties. And this time built with Javascript. Basically the original version was made in Java, but in the last ship, I got a lot of feedback saying I should port this to the web, so I did! — LINKS — To Play on web: Play now: https://shadowtech1234.github.io/pineapplechess/ — CHALLENGES — Here are some challenges I faced. When I first started porting this, I had to learn another brand new language that I had never used, which is JavaScript(last time was Java), so it took me a while to get used to it and progress was very slow at the start. Like a lot of hours I spent on the project was not really captured by Hackatime because I was on documentation and troubleshooting a lot. A very, very big task was efficiency. JavaScript is very, very fragile. I had a lot of problems where it would always freeze and stop, which lead to phantom moves in chess and broke it a lot. Learning to code in JavaScript with this efficiency was a bit hard because I had to make sure everything was perfect and there was no holes in it. Like for example in Java, I just coded in whatever way works, and there probably was holes and leaks in that but it wouldn’t be noticeable, in JavaScript it was the complete opposite. (This is what I noticed when I coded, I don’t know if this is factual that JavaScript is very hard when coding to make sure it’s efficient, it might just be me) Another problem was when I tried putting this on GitHub Pages, because the source for it had to be like in one folder I had to rearrange my code and rewrite some parts to make it work on GitHub Pages, The last challenge I faced was stopping. This is the same as last time. I have a lot of ideas to add to this, but I realized that if I did all of it, it would be a waste of time. This includes adding a evaluation bar, game export and import, game analysis, and maybe multiplayer. Working on this is a fun side project but I don’t have the time to work on it as much right now as I have a lot of work from school, and Stardance is ending soon anyways, so I wanted to get it as polished as possible and ship it. That’s basically it. I had a lot of fun making this, it’s not much but I will add features in the future, maybe in the next Hack Club event. Thank you!...
|
1793108866.148974
|
1793195266.148974
|
|
24385
|
My personal Portfolio! by @Kaorii | Stardance
|
Kaorii
|
2
|
11.0
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T09:39:20Z", "hours": 1.0, "multiplier": 12.69, "payout": 8, "blessing": "neutral", "text": "dark, minimal, 3D, actually interactive - built to show real work, not just talk about it. proof section leads with QBoard, a macropad I designed from scratch in KiCad (XIAO RP2040 + QMK) — repo: github.com/kaorii-ako/QBoard — alongside Axon OS and F1 in Schools CFD work. ( https://kao-portfolio.vercel.app/ )", "repo": "https://github.com/kaorii-ako/Portfolio", "demo": "https://kao-portfolio.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-30T13:41:50Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Portfolio Website — kaorii-ako.vercel.app Built a personal portfolio from scratch with Next.js 14, Three.js, and Framer Motion. Key features: 3D Hero - Interactive Three.js icosahedron GitHub Dashboard Project Custom Design — Syne + Manrope fonts, glass morphism, film grain texture, scroll animations Stack: TypeScript, Tailwind CSS, Three.js ( @react-three /fiber), Framer Motion, Lucide icons. Deployed on Vercel. AI used for debugging ONLY Theres also some secret features if you press ctrl+ `", "repo": "https://github.com/kaorii-ako/Portfolio", "demo": "https://kao-portfolio.vercel.app/"}]...
|
[{"post_id": 34518, "ts": "202 [{"post_id": 34518, "ts": "2026-07-25T09:37:13Z", "hours": 0.5997, "text": "shipped the portfolio. dark, minimal, 3D, actually interactive — not another cream-background-serif template. four pages: home, projects, about, contact. proof section leads with QBoard (macropad, XIAO RP2040, QMK, KiCad — repo: github.com/kaorii-ako/QBoard), alongside axon OS and the F1 CFD work. near-black background, off-white text, one accent color, space grotesk for headers, jetbrains mono for code/labels. checked it on desktop and mobile, fixed the spacing/overflow stuff that broke on smaller screens. live now."}, {"post_id": 18961, "ts": "2026-06-30T04:16:42Z", "hours": 10.2494, "text": "Portfolio Website — kaorii-ako.vercel.app Built a personal portfolio from scratch with Next.js 14, Three.js, and Framer Motion. Key features: 3D Hero - Interactive Three.js icosahedron GitHub Dashboard Project Custom Design — Syne + Manrope fonts, glass morphism, film grain texture, scroll animations Stack: TypeScript, Tailwind CSS, Three.js ( @react-three /fiber), Framer Motion, Lucide icons. Deployed on Vercel. Theres also some secret features if you press ctrl+ `"}]...
|
Title: My personal Portfolio! by @Kaorii | Stardan Title: My personal Portfolio! by @Kaorii | Stardance
Devlogs:
Portfolio Website — kaorii-ako.vercel.app Built a personal portfolio from scratch with Next.js 14, Three.js, and Framer Motion. Key features: 3D Hero - Interactive Three.js icosahedron GitHub Dashboard Project Custom Design — Syne + Manrope fonts, glass morphism, film grain texture, scroll animations Stack: TypeScript, Tailwind CSS, Three.js ( @react-three /fiber), Framer Motion, Lucide icons. Deployed on Vercel. Theres also some secret features if you press ctrl+ `
shipped the portfolio. dark, minimal, 3D, actually interactive — not another cream-background-serif template. four pages: home, projects, about, contact. proof section leads with QBoard (macropad, XIAO RP2040, QMK, KiCad — repo: github.com/kaorii-ako/QBoard), alongside axon OS and the F1 CFD work. near-black background, off-white text, one accent color, space grotesk for headers, jetbrains mono for code/labels. checked it on desktop and mobile, fixed the spacing/overflow stuff that broke on smaller screens. live now.
Ships:
Portfolio Website — kaorii-ako.vercel.app Built a personal portfolio from scratch with Next.js 14, Three.js, and Framer Motion. Key features: 3D Hero - Interactive Three.js icosahedron GitHub Dashboard Project Custom Design — Syne + Manrope fonts, glass morphism, film grain texture, scroll animations Stack: TypeScript, Tailwind CSS, Three.js ( @react-three /fiber), Framer Motion, Lucide icons. Deployed on Vercel. AI used for debugging ONLY Theres also some secret features if you press ctrl+ `
dark, minimal, 3D, actually interactive - built to show real work, not just talk about it. proof section leads with QBoard, a macropad I designed from scratch in KiCad (XIAO RP2040 + QMK) — repo: github.com/kaorii-ako/QBoard — alongside Axon OS and F1 in Schools CFD work. ( https://kao-portfolio.vercel.app/ )...
|
1793087541.9427683
|
1793173941.9427683
|
|
24516
|
Return By Death by @codecraft07 | Stardance
|
codecraft07
|
2
|
5.0
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T21:07:19Z", "hours": 5.0, "multiplier": 5.7, "payout": 30, "blessing": "neutral", "text": "Added Sound Effects ,Patched some bugs , such as if I logout just before checkpoint save, the save will be courrupted.", "repo": "https://github.com/CodeCraftPlugin/ReturnByDeath", "demo": "https://modrinth.com/mod/return-by-death-codecraft"}, {"ship_num": 2, "ts": "2026-06-23T15:06:57Z", "hours": 0.0, "multiplier": 10.69, "payout": 18, "blessing": "neutral", "text": "This is a minecraft Mod , that adds return by death ablity from rezero to minecraft. Every 10 minutes a new check point is saved , every time you die you restart from this checkpoint. each restart resets all the stats, advancement, changes made on the world such as ore mined, blocks placed , mob slain , playtime , and even stats", "repo": "https://github.com/CodeCraftPlugin/ReturnByDeath", "demo": "https://modrinth.com/mod/return-by-death-codecraft"}]...
|
[{"post_id": 23106, "ts": "202 [{"post_id": 23106, "ts": "2026-07-05T21:01:22Z", "hours": 0.3356, "text": "Added a good Demo video to the Readme Rant (kinda) Turns out once I ship a project, devlogs after it are not recorded at all, even if they ask me to fix something. but the ship will show the second devlogs time to you only. I wasn’t plaing to become the spifing brit , but glitches and exploting things are in my nature. Demo Story And I should have added the time it took for me to edit this demo, which is around 1,30 , of this 1 hour of it was consumed in learning resolve. And the rest 30 mins in doing this bare bones editing. Blender Render for the Icon the render that I have attached took me 2 hours to make but my pc can’t run chrome and blender at the same time so another shame. ( IK blender) Links Modrinth Link Demo"}, {"post_id": 16371, "ts": "2026-06-26T17:15:14Z", "hours": 4.9786, "text": "Made some changes to how the mod works Now the mod has two modes if you want instant return then you have to enable immediate_respawn game rule or else you will get the death screen telling you to return by death there are now sfx added to the mod ////Rant tell me why the hell does minecraft have 2 distinct playsound methods one in server and one in client??? only the client one playes the sound, the server one seemed to nothig and there is no java docs suggesting to use the one over the other and when to use what I spent 1 hour 30 mins trying to figure this out and then had to resort to asking in the fabric server for help luckly the community was extreamly helpfull and I fixed the issue as for the reason why its done this way: the server method is actually the main method but it does not play the sound for the sender, since its assuemed that the sender could be code or a thing that can’t hear sound the same method in serverlevel which you get by senderPlayer.level().playSound( @nullable except entity, source entity, SoundEvent, soundevent, SoundCategory soundCategory); calles two method, one for the sender since we know its the player ( this is a client method in LocalPlayer which extends the AbstractClientPlayer ) and the normal server method which runs for everyone except the sender this is all fine but tell me why is this not documented well now it is"}, {"post_id": 14255, "ts": "2026-06-23T08:53:15Z", "hours": 0.1578, "text": "The biggest thing was creating the time loop, fortunatly someone had something similar done so, all I had to do was understand their code and then implement it. With that done, it was only a matter of some if statement that checked a timer. the second problem was that if the timer had’nt ended but the player left the world (ie quits the game) the timer will restart again This was easy to solve as well, since Minecraft also likes to keep track of playtime and by using mojangs logic I created a custom stat that counted the loop timer. The Most time was taking by making logo below, 2 hours to be exact but I was’nt able to record it cuz I forgot. The logo represent the moibus strip : and that death is not the end but start of a new loop. This was inspired by outer wilds with moibus studios"}]...
|
Title: Return By Death by @codecraft07 | Stardance Title: Return By Death by @codecraft07 | Stardance
Devlogs:
The biggest thing was creating the time loop, fortunatly someone had something similar done so, all I had to do was understand their code and then implement it. With that done, it was only a matter of some if statement that checked a timer. the second problem was that if the timer had’nt ended but the player left the world (ie quits the game) the timer will restart again This was easy to solve as well, since Minecraft also likes to keep track of playtime and by using mojangs logic I created a custom stat that counted the loop timer. The Most time was taking by making logo below, 2 hours to be exact but I was’nt able to record it cuz I forgot. The logo represent the moibus strip : and that death is not the end but start of a new loop. This was inspired by outer wilds with moibus studios
Made some changes to how the mod works Now the mod has two modes if you want instant return then you have to enable immediate_respawn game rule or else you will get the death screen telling you to return by death there are now sfx added to the mod ////Rant tell me why the hell does minecraft have 2 distinct playsound methods one in server and one in client??? only the client one playes the sound, the server one seemed to nothig and there is no java docs suggesting to use the one over the other and when to use what I spent 1 hour 30 mins trying to figure this out and then had to resort to asking in the fabric server for help luckly the community was extreamly helpfull and I fixed the issue as for the reason why its done this way: the server method is actually the main method but it does not play the sound for the sender, since its assuemed that the sender could be code or a thing that can’t hear sound the same method in serverlevel which you get by senderPlayer.level().playSound( @nullable except entity, source entity, SoundEvent, soundevent, SoundCategory soundCategory); calles two method, one for the sender since we know its the player ( this is a client method in LocalPlayer which extends the AbstractClientPlayer ) and the normal server method which runs for everyone except the sender this is all fine but tell me why is this not documented well now it is
Added a good Demo video to the Readme Rant (kinda) Turns out once I ship a project, devlogs after it are not recorded at all, even if they ask me to fix something. but the ship will show the second devlogs time to you only. I wasn’t plaing to become the spifing brit , but glitches and exploting things are in my nature. Demo Story And I should have added the time it took for me to edit this demo, which is around 1,30 , of this 1 hour of it was consumed in learning resolve. And the rest 30 mins in doing this bare bones editing. Blender Render for the Icon the render that I have attached took me 2 hours to make but my pc can’t run chrome and blender at the same time so another shame. ( IK blender) Links Modrinth Link Demo
Ships:
This is a minecraft Mod , that adds return by death ablity from rezero to minecraft. Every 10 minutes a new check point is saved , every time you die you restart from this checkpoint. each restart resets all the stats, advancement, changes made on the world such as ore mined, blocks placed , mob slain , playtime , and even stats
Added Sound Effects ,Patched some bugs , such as if I logout just before checkpoint save, the save will be courrupted....
|
1792990334.7562864
|
1793076734.7562864
|
|
24530
|
Scientific Calculator by @naman0410 | Stardance
|
naman0410
|
2
|
3.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T17:14:58Z", "hours": 1.0, "multiplier": 1.69, "payout": 2, "blessing": "neutral", "text": "I built this Advanced Scientific Calculator to go beyond the basic calculator you find on most websites. Along with standard arithmetic operations, it includes a wide range of scientific functions, memory operations, calculation history, theme switching, and a live currency converter.", "repo": "https://github.com/modinaman099/Scientific-Calculator-", "demo": "https://thunderous-kheer-a7432c.netlify.app/"}, {"ship_num": 2, "ts": "2026-06-23T22:24:06Z", "hours": 2.0, "multiplier": 1.19, "payout": 3, "blessing": "neutral", "text": "I have designed a scientific calculator with all the necessary functions . It has an option to switch between scientific (advnaced) calculator and normal calculator . It can change themes . It also has a history page that can store calculations and you on your own can clear it to .", "repo": "https://github.com/modinaman099/Scientific-Calculator-", "demo": "https://thunderous-kheer-a7432c.netlify.app/"}]...
|
[{"post_id": 18191, "ts": "202 [{"post_id": 18191, "ts": "2026-06-29T08:02:26Z", "hours": 0.0, "text": "I have now added a currency converter to my calculator to give the calculator a bit of my touch . It also tells the current rate of each currency as compared to Indian rupees . I have reworked the css , java part of the code . I have also added a few colours to the calculator so that it doesnt looks dull and colourless ."}, {"post_id": 14659, "ts": "2026-06-23T21:01:16Z", "hours": 0.0, "text": "I have added all the scientific values and working on the UI Interface of the calculator that how will its functions appear"}, {"post_id": 14593, "ts": "2026-06-23T19:15:19Z", "hours": 1.0, "text": "i have added the scientific values that are to be added in the calculator"}, {"post_id": 14538, "ts": "2026-06-23T18:00:17Z", "hours": 0.0, "text": "im working on a scientific calculator with all the functions in a proper calculator"}]...
|
Title: Scientific Calculator by @naman0410 | Stard Title: Scientific Calculator by @naman0410 | Stardance
Devlogs:
im working on a scientific calculator with all the functions in a proper calculator
i have added the scientific values that are to be added in the calculator
I have added all the scientific values and working on the UI Interface of the calculator that how will its functions appear
I have now added a currency converter to my calculator to give the calculator a bit of my touch . It also tells the current rate of each currency as compared to Indian rupees . I have reworked the css , java part of the code . I have also added a few colours to the calculator so that it doesnt looks dull and colourless .
Ships:
I have designed a scientific calculator with all the necessary functions . It has an option to switch between scientific (advnaced) calculator and normal calculator . It can change themes . It also has a history page that can store calculations and you on your own can clear it to .
I built this Advanced Scientific Calculator to go beyond the basic calculator you find on most websites. Along with standard arithmetic operations, it includes a wide range of scientific functions, memory operations, calculation history, theme switching, and a live currency converter....
|
1792878800.3247478
|
1793742800.3247478
|
|
24622
|
My very own WebOS by @Antara | Stardance
|
Antara
|
2
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T06:17:47Z", "hours": 0.0, "multiplier": 3.46, "payout": 1, "blessing": "neutral", "text": "After receiving feedback, I focused on polishing the experience and improving usability. Added a complete README, fixed application icons so every app opens correctly, introduced the Crime Map application, improved window layouts with card-based designs, and added scrolling support for better navigation. Current applications include Case Files, Evidence Locker, Suspect Database, and Crime Map, all accessible through draggable desktop windows inside the detective-themed operating system. DetectiveOS is now more complete, better documented, and much closer to the vision of a full investigation platform. The Game Is Afoot.", "repo": "https://github.com/Rare21ism/coldcase-WebOS", "demo": "https://coldcase-web-os.vercel.app"}, {"ship_num": 2, "ts": "2026-06-23T17:10:28Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "DetectiveOS 🕵️ I built DetectiveOS , a detective-themed web operating system with multiple draggable windows and investigation tools. Features Welcome screen and detective login flow Live desktop clock Case Files app Evidence Locker app Crime Map app Draggable application windows Dark detective-themed interface Challenges The biggest challenge was making the windows draggable while keeping the interface organized and responsive. I also spent time designing a consistent detective-style UI across all applications. What I’m Proud Of I’m proud that the project evolved from a simple webpage into a functional WebOS with multiple applications and its own unique theme. How To Test Open the website. Enter the DetectiveOS desktop. Open the Case Files, Evidence Locker, and Crime Map apps. Drag windows around the desktop and explore the interface. The project includes several custom features beyond the guide and has no password requirement for testing.", "repo": "https://github.com/Rare21ism/coldcase-WebOS", "demo": "https://coldcase-web-os.vercel.app"}]...
|
[{"post_id": 14902, "ts": "202 [{"post_id": 14902, "ts": "2026-06-24T06:14:27Z", "hours": 0.29, "text": "Devlog 4 - DetectiveOS Received feedback on my previous submission and worked on improving the overall project experience. Changes Made Added a complete README documenting all features and applications Fixed desktop applications so every icon opens correctly Added the Crime Map application Improved consistency across all application windows Converted application content to card-based layouts Added scrolling support for windows Refined the dark detective-themed interface Improved navigation and usability Current Applications Case Files Evidence Locker Suspect Database Crime Map Progress Welcome Screen Detective Login Desktop Environment Live Clock Draggable Windows Case Files Evidence Locker Suspect Database Crime Map README Documentation DetectiveOS is now more polished, better documented, and all desktop applications are fully accessible from the main desktop environment. The Game Is Afoot."}, {"post_id": 14491, "ts": "2026-06-23T17:03:19Z", "hours": 0.7828, "text": "Devlog 3 - DetectiveOS 🕵️ Today I expanded DetectiveOS with new investigation tools and improved the overall user experience. Progress Added the Crime Map application Improved the UI across all application windows Added scrollable windows for better usability Redesigned app content using card-based layouts Refined the detective-themed dark interface Continued improving the desktop environment DetectiveOS is starting to feel like a complete investigation platform rather than just a collection of windows. The game is afoot. 🔍"}, {"post_id": 14425, "ts": "2026-06-23T15:29:58Z", "hours": 0.6858, "text": "Devlog 2 - DetectiveOS 🕵️ I made DetectiveOS feel more like a real operating system. Progress Added a welcome screen and detective login flow Built the desktop environment with a live clock Created the Case Files and Evidence Locker apps Added draggable windows and app interactions DetectiveOS is slowly evolving from a simple webpage into a detective-themed WebOS. The game is afoot. 🔍"}, {"post_id": 14360, "ts": "2026-06-23T13:51:49Z", "hours": 0.2875, "text": "Devlog 1 - DetectiveOS 🕵️ Started building DetectiveOS , a web-based operating system with a detective theme. What I completed Created the project structure Set up index.html , style.css , and script.js Built the welcome screen Added a live clock using JavaScript Planned the main applications Planned Apps Case Files Evidence Locker Suspect Database Crime Map Audio Analyzer Surveillance Center Next Steps Build the desktop interface Create application windows Add interactive features Every file is a clue. Every app helps solve the case. 🔍"}]...
|
Title: My very own WebOS by @Antara | Stardance
D Title: My very own WebOS by @Antara | Stardance
Devlogs:
Devlog 1 - DetectiveOS 🕵️ Started building DetectiveOS , a web-based operating system with a detective theme. What I completed Created the project structure Set up index.html , style.css , and script.js Built the welcome screen Added a live clock using JavaScript Planned the main applications Planned Apps Case Files Evidence Locker Suspect Database Crime Map Audio Analyzer Surveillance Center Next Steps Build the desktop interface Create application windows Add interactive features Every file is a clue. Every app helps solve the case. 🔍
Devlog 2 - DetectiveOS 🕵️ I made DetectiveOS feel more like a real operating system. Progress Added a welcome screen and detective login flow Built the desktop environment with a live clock Created the Case Files and Evidence Locker apps Added draggable windows and app interactions DetectiveOS is slowly evolving from a simple webpage into a detective-themed WebOS. The game is afoot. 🔍
Devlog 3 - DetectiveOS 🕵️ Today I expanded DetectiveOS with new investigation tools and improved the overall user experience. Progress Added the Crime Map application Improved the UI across all application windows Added scrollable windows for better usability Redesigned app content using card-based layouts Refined the detective-themed dark interface Continued improving the desktop environment DetectiveOS is starting to feel like a complete investigation platform rather than just a collection of windows. The game is afoot. 🔍
Devlog 4 - DetectiveOS Received feedback on my previous submission and worked on improving the overall project experience. Changes Made Added a complete README documenting all features and applications Fixed desktop applications so every icon opens correctly Added the Crime Map application Improved consistency across all application windows Converted application content to card-based layouts Added scrolling support for windows Refined the dark detective-themed interface Improved navigation and usability Current Applications Case Files Evidence Locker Suspect Database Crime Map Progress Welcome Screen Detective Login Desktop Environment Live Clock Draggable Windows Case Files Evidence Locker Suspect Database Crime Map README Documentation DetectiveOS is now more polished, better documented, and all desktop applications are fully accessible from the main desktop environment. The Game Is Afoot.
Ships:
DetectiveOS 🕵️ I built DetectiveOS , a detective-themed web operating system with multiple draggable windows and investigation tools. Features Welcome screen and detective login flow Live desktop clock Case Files app Evidence Locker app Crime Map app Draggable application windows Dark detective-themed interface Challenges The biggest challenge was making the windows draggable while keeping the interface organized and responsive. I also spent time designing a consistent detective-style UI across all applications. What I’m Proud Of I’m proud that the project evolved from a simple webpage into a functional WebOS with multiple applications and its own unique theme. How To Test Open the website. Enter the DetectiveOS desktop. Open the Case Files, Evidence Locker, and Crime Map apps. Drag windows around the desktop and explore the interface. The project includes several custom features beyond the guide and has no password requirement for testing.
After receiving feedback, I focused on polishing the experience and improving usability. Added a complete README, fixed application icons so every app opens correctly, introduced the Crime Map application, improved window layouts with card-based designs, and added scrolling support for better navigation. Current applications include Case Files, Evidence Locker, Suspect Database, and Crime Map, all accessible through draggable desktop windows inside the detective-themed operating system. DetectiveOS is now more complete, better documented, and much closer to the vision of a full investigation platform. The Game Is Afoot....
|
1793090981.5846326
|
1793177381.5846326
|
|
24681
|
My very own WebOS by @shrija | Stardance
|
shrija
|
2
|
11.45
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T20:18:49Z", "hours": 3.0, "multiplier": 3.33, "payout": 8, "blessing": "neutral", "text": "I built YAP OS, a browser-based operating system that delivers a modern desktop experience with a customizable interface, animated wallpapers, and a live clock and date. My goal was to create something that feels like a real OS while running entirely in the browser. The biggest challenge was combining functionality with a clean, responsive design and making the desktop feel smooth and interactive. I’m proud of building it from scratch and seeing the idea come to life. To test the project, simply explore the desktop, interact with the interface, and try the available features. This is an ongoing project, and many more apps and features are planned in future updates.", "repo": "https://github.com/shrijasehrawat/YapOs", "demo": "https://shrijasehrawat.github.io/YapOs/"}, {"ship_num": 2, "ts": "2026-06-29T12:53:31Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built YAP OS, a browser-based operating system that delivers a modern desktop experience with a customizable interface, animated wallpapers, and a live clock and date. My goal was to create something that feels like a real OS while running entirely in the browser. The biggest challenge was combining functionality with a clean, responsive design and making the desktop feel smooth and interactive. I’m proud of building it from scratch and seeing the idea come to life. To test the project, simply explore the desktop, interact with the interface, and try the available features. This is an ongoing project, and many more apps and features are planned in future updates.", "repo": "https://github.com/shrijasehrawat/YapOs", "demo": "https://shrijasehrawat.github.io/YapOs/"}]...
|
[{"post_id": 18679, "ts": "202 [{"post_id": 18679, "ts": "2026-06-29T21:21:58Z", "hours": 0.4472, "text": "update! just added a boot screen to make my OS look more attractive"}, {"post_id": 18616, "ts": "2026-06-29T20:17:47Z", "hours": 2.5081, "text": "DevLog #5 added some apps ;)"}, {"post_id": 18314, "ts": "2026-06-29T12:48:52Z", "hours": 4.2906, "text": "DevLog #4 working on my apps!"}, {"post_id": 16292, "ts": "2026-06-26T14:32:39Z", "hours": 1.5178, "text": "update…! we’ve made our card draggable now also added the close, minimizing and maximizing buttons. will update you guys soon with next part, till then stay tuned… ;)"}, {"post_id": 15787, "ts": "2026-06-25T17:40:36Z", "hours": 0.5094, "text": "UPDATE! Devlog #2 after a surprisingly intense battle against the laws of time itself, I’ve finally figured out how to make the clock and date update automatically in my project. What seemed like a simple “just show the time” feature quickly turned into me questioning my life choices, JavaScript, and occasionally the concept of time itself. 😅The good news: the clock now ticks in real time and the date updates correctly without requiring a system reboot, a sacrifice to the coding gods, or manual intervention. It’s a small feature, but it makes the OS feel much more alive and responsive. On to the next challenge! Progress: Dynamic Time & Date ✅Status: Winning the fight against time (for now…)"}, {"post_id": 15671, "ts": "2026-06-25T14:09:16Z", "hours": 1.8181, "text": "Yap OS – DevLog #1 I Started This Project Yap OS began as a personal challenge to deepen my understanding of operating system design, user interface development, and software architecture. I wanted to explore what it takes to build an operating system experience from the ground up. I have focused on establishing the foundation of the operating system. Completed Desktop environment, visual identity Wallpaper, theme concepts, layout Live clock and date . I have also improved my understanding of HTML, CSS, and JavaScript by applying them to a larger projects. The next development milestone includes: Finalizing the desktop interface Improving system performance Adding additional built-in applications Enhancing visual effects and animations Expanding customization options Closing Thoughts. Yap OS is still in active development, but the project has already become an excellent learning experience. Each feature brings new technical challenges and opportunities to improve both the system and my development skills. I look forward to sharing future updates ."}]...
|
Title: My very own WebOS by @shrija | Stardance
D Title: My very own WebOS by @shrija | Stardance
Devlogs:
Yap OS – DevLog #1 I Started This Project Yap OS began as a personal challenge to deepen my understanding of operating system design, user interface development, and software architecture. I wanted to explore what it takes to build an operating system experience from the ground up. I have focused on establishing the foundation of the operating system. Completed Desktop environment, visual identity Wallpaper, theme concepts, layout Live clock and date . I have also improved my understanding of HTML, CSS, and JavaScript by applying them to a larger projects. The next development milestone includes: Finalizing the desktop interface Improving system performance Adding additional built-in applications Enhancing visual effects and animations Expanding customization options Closing Thoughts. Yap OS is still in active development, but the project has already become an excellent learning experience. Each feature brings new technical challenges and opportunities to improve both the system and my development skills. I look forward to sharing future updates .
UPDATE! Devlog #2 after a surprisingly intense battle against the laws of time itself, I’ve finally figured out how to make the clock and date update automatically in my project. What seemed like a simple “just show the time” feature quickly turned into me questioning my life choices, JavaScript, and occasionally the concept of time itself. 😅The good news: the clock now ticks in real time and the date updates correctly without requiring a system reboot, a sacrifice to the coding gods, or manual intervention. It’s a small feature, but it makes the OS feel much more alive and responsive. On to the next challenge! Progress: Dynamic Time & Date ✅Status: Winning the fight against time (for now…)
update…! we’ve made our card draggable now also added the close, minimizing and maximizing buttons. will update you guys soon with next part, till then stay tuned… ;)
DevLog #4 working on my apps!
DevLog #5 added some apps ;)
update! just added a boot screen to make my OS look more attractive
Ships:
I built YAP OS, a browser-based operating system that delivers a modern desktop experience with a customizable interface, animated wallpapers, and a live clock and date. My goal was to create something that feels like a real OS while running entirely in the browser. The biggest challenge was combining functionality with a clean, responsive design and making the desktop feel smooth and interactive. I’m proud of building it from scratch and seeing the idea come to life. To test the project, simply explore the desktop, interact with the interface, and try the available features. This is an ongoing project, and many more apps and features are planned in future updates.
I built YAP OS, a browser-based operating system that delivers a modern desktop experience with a customizable interface, animated wallpapers, and a live clock and date. My goal was to create something that feels like a real OS while running entirely in the browser. The biggest challenge was combining functionality with a clean, responsive design and making the desktop feel smooth and interactive. I’m proud of building it from scratch and seeing the idea come to life. To test the project, simply explore the desktop, interact with the interface, and try the available features. This is an ongoing project, and many more apps and features are planned in future updates....
|
1792990270.8628838
|
1793076670.8628838
|
|
24706
|
ColemanOS by @rushurov | Stardance
|
rushurov
|
2
|
5.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-19T00:49:03Z", "hours": 1.0, "multiplier": 5.76, "payout": 7, "blessing": "neutral", "text": "ColemanOS WebOS 2 Update! Keon Coleman-themed WebOS This WebOS features a notes/news article app with 3 articles about Keon Coleman. The last article is from https://www.buffalorumblings.com/authors/anthony-marino . It also features a live Weather app for the weather in Buffalo, NY. It uses the API from Open-Meteo. Finally, it has a cool quote generator with most of his popular quotes! WebOS 2 Features: I added 3 apps: Settings app, change color of top bar and background Macy’s Store app, browse through Macy’s coat deals Cookie Clicker, because Keon loooooves cookies DISCLAIMER: AI WAS USED! I used Gemini to explain the guide when it got confusing, explain errors in my code, and explain how to use an API in JavaScript. This was made to publish as a project in Stardance for Hack Club, but it serves as a fun, goofy project.", "repo": "https://github.com/rushurov074/ColemanOS", "demo": "https://rushurov.me/ColemanOS/"}, {"ship_num": 2, "ts": "2026-06-24T05:09:31Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first project in Hack Club!!! My version of WebOS is a Keon Coleman-themed one. Keon Coleman has been basically my favorite NFL player since he was drafted. Even through all the hate he gets, I still buy his jerseys. This WebOS has a little welcome page with a description of who he is, then an article app with a real news post, a weather app that I had to use AI to learn how to implement an API into Javascript that shows the live weather in Buffalo, NY, and finally a little quote generator that randomly shows you his most popular quotes. Honestly, the hardest part was following along with the guide because half the time it would say something and then it would feel like something just was created out of nowhere and it got confusing. I ended up using AI to analyze the guide and walk me through it because the directions were losing me lol. Ultimately, this was super fun and I can’t wait to keep making more projects here!", "repo": "https://github.com/rushurov074/ColemanOS", "demo": "https://rushurov.me/ColemanOS/"}]...
|
[{"post_id": 49991, "ts": "202 [{"post_id": 49991, "ts": "2026-08-19T00:48:17Z", "hours": 1.2686, "text": "This is my WebOS 2 Devlog! I added 3 new apps. Settings app, change color of top bar and background Macy’s Store app, browse through Macy’s coat deals Cookie Clicker, because Keon loooooves cookies! I also changed some of the app icons to make them a little more unique. Please be generous rating it 🙏"}, {"post_id": 14883, "ts": "2026-06-24T05:04:43Z", "hours": 0.2539, "text": "I forgot to add the feature that isn’t in the guide, so I made an app called Keon Quotesman. It’s exactly what it sounds like, it just randomly generates most of his most popular quotes."}, {"post_id": 14874, "ts": "2026-06-24T04:37:43Z", "hours": 0.2997, "text": "Finished WebOS1, I added a Weather app, moved the icons, and used the Open-Meteo API for the weather app. I did have to ask AI how to use an API, and the new news report in the colemanotes app is a real post from https://www.buffalorumblings.com/authors/anthony-marino . Gotta give credit where its due"}, {"post_id": 14869, "ts": "2026-06-24T04:19:31Z", "hours": 0.8375, "text": "Finished Part 4 of WebOS1. I added a new app, Colemanotes, where news reports and articles about Keon Coleman are made. I used a very formal picture of Keon Coleman for the icon so people know that this is very serious."}, {"post_id": 14795, "ts": "2026-06-24T01:06:52Z", "hours": 0.9686, "text": "Finished Part 3 of WebOS1. After looking up a tutorial on YouTube on how to make things look Apple-themed in CSS, I changed the box to look kinda like the new liquid glass. Here is also where the window is draggable and closable."}, {"post_id": 14767, "ts": "2026-06-24T00:00:43Z", "hours": 1.2114, "text": "Finished Part 2 of WebOS1. Here I finally added some more Keon Coleman theme, and found out how to use the thick border from W3 Schools and their CSS tags page. I also created a top bar with a pill shaped gif in the center to match the Dynamic Island on the iPhone."}, {"post_id": 14493, "ts": "2026-06-23T17:06:05Z", "hours": 0.6592, "text": "Finished Part 1 of WebOS1. This is my first attempt at actually writing HTML in a very long time, so its super basic and matches Buffalo Bills colors!"}]...
|
Title: ColemanOS by @rushurov | Stardance
Devlogs Title: ColemanOS by @rushurov | Stardance
Devlogs:
Finished Part 1 of WebOS1. This is my first attempt at actually writing HTML in a very long time, so its super basic and matches Buffalo Bills colors!
Finished Part 2 of WebOS1. Here I finally added some more Keon Coleman theme, and found out how to use the thick border from W3 Schools and their CSS tags page. I also created a top bar with a pill shaped gif in the center to match the Dynamic Island on the iPhone.
Finished Part 3 of WebOS1. After looking up a tutorial on YouTube on how to make things look Apple-themed in CSS, I changed the box to look kinda like the new liquid glass. Here is also where the window is draggable and closable.
Finished Part 4 of WebOS1. I added a new app, Colemanotes, where news reports and articles about Keon Coleman are made. I used a very formal picture of Keon Coleman for the icon so people know that this is very serious.
Finished WebOS1, I added a Weather app, moved the icons, and used the Open-Meteo API for the weather app. I did have to ask AI how to use an API, and the new news report in the colemanotes app is a real post from https://www.buffalorumblings.com/authors/anthony-marino . Gotta give credit where its due
I forgot to add the feature that isn’t in the guide, so I made an app called Keon Quotesman. It’s exactly what it sounds like, it just randomly generates most of his most popular quotes.
This is my WebOS 2 Devlog! I added 3 new apps. Settings app, change color of top bar and background Macy’s Store app, browse through Macy’s coat deals Cookie Clicker, because Keon loooooves cookies! I also changed some of the app icons to make them a little more unique. Please be generous rating it 🙏
Ships:
I made my first project in Hack Club!!! My version of WebOS is a Keon Coleman-themed one. Keon Coleman has been basically my favorite NFL player since he was drafted. Even through all the hate he gets, I still buy his jerseys. This WebOS has a little welcome page with a description of who he is, then an article app with a real news post, a weather app that I had to use AI to learn how to implement an API into Javascript that shows the live weather in Buffalo, NY, and finally a little quote generator that randomly shows you his most popular quotes. Honestly, the hardest part was following along with the guide because half the time it would say something and then it would feel like something just was created out of nowhere and it got confusing. I ended up using AI to analyze the guide and walk me through it because the directions were losing me lol. Ultimately, this was super fun and I can’t wait to keep making more projects here!
ColemanOS WebOS 2 Update! Keon Coleman-themed WebOS This WebOS features a notes/news article app with 3 articles about Keon Coleman. The last article is from https://www.buffalorumblings.com/authors/anthony-marino . It also features a live Weather app for the weather in Buffalo, NY. It uses the API from Open-Meteo. Finally, it has a cool quote generator with most of his popular quotes! WebOS 2 Features: I added 3 apps: Settings app, change color of top bar and background Macy’s Store app, browse through Macy’s coat deals Cookie Clicker, because Keon loooooves cookies DISCLAIMER: AI WAS USED! I used Gemini to explain the guide when it got confusing, explain errors in my code, and explain how to use an API in JavaScript. This was made to publish as a project in Stardance for Hack Club, but it serves as a fun, goofy project....
|
1793102024.6934028
|
1793188424.6934028
|
|
24723
|
Nidofy v2 by @NiDo | Stardance
|
NiDo
|
2
|
10.0
|
97
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T16:24:01Z", "hours": 0.0, "multiplier": 3.14, "payout": 1, "blessing": "neutral", "text": "I rewrote my portfolio in React, while also learning React! The website serves both as my portfolio as well as a place where I can upload poems I wrote. The website is self hosted and live. It also hides an easter egg I encourage people to hunt for ;) Hint for the easter egg- Check the routes in App.jsx", "repo": "https://github.com/ElectroBoy404NotFound/nidofy-vite", "demo": "https://nido.dino.icu:3031/"}, {"ship_num": 2, "ts": "2026-06-28T16:59:58Z", "hours": 10.0, "multiplier": 9.45, "payout": 96, "blessing": "neutral", "text": "I rewrote my portfolio in React, while also learning React! The website serves both as my portfolio as well as a place where I can upload poems I wrote. The website is self hosted and live. It also hides an easter egg I encourage people to hunt for ;)", "repo": "https://github.com/ElectroBoy404NotFound/nidofy-vite", "demo": "https://nido.dino.icu:3031/"}]...
|
[{"post_id": 22230, "ts": "202 [{"post_id": 22230, "ts": "2026-07-04T16:21:41Z", "hours": 0.4025, "text": "So as the suggestions said, I made the cards dark. While I was at it, I also added a footer."}, {"post_id": 17699, "ts": "2026-06-28T16:48:24Z", "hours": 0.6333, "text": "I added an easter egg! I won’t reveal the link. It’s a challenge for y’all to find but ya. I’ll ship it now."}, {"post_id": 17606, "ts": "2026-06-28T14:04:34Z", "hours": 0.6261, "text": "So copy works! I was planning to have a copy all poems buttons but currently the backend doesn’t implement a proper get all poems with content endpoint, so the frontend would have to loop through how many ever poems are there (currently 48) requesting the content for each one… that’s definatly not a good idea unless the goal is to make the backend cry. Anyways, I’ll just deploy it to my self-hosted server and ship it!"}, {"post_id": 17490, "ts": "2026-06-28T09:17:36Z", "hours": 0.3719, "text": "I’ve finished implementing the poem skeleton! I’ll just add a copy button like the old version of the site had and with that I can ship this project!!"}, {"post_id": 17425, "ts": "2026-06-28T06:21:06Z", "hours": 2.2181, "text": "I’m almost done, I’ve finished the my poems page and the poem page. I think I’m going to skip the projects and admin page of my old site for now as I’m fine with the old admin dashboard and I’m not really adding stuff to the projects pages anyways. So for now, I’ll just add the skeleton UI for the poem page (the other pages already have their own skeleton UIs) and I’ll push it to my server. Self-hosted btw The current version of it is already live. I’m still thinking of what next should I add. But before all of that, I should probably push everything to a github repo."}, {"post_id": 14486, "ts": "2026-06-23T16:58:40Z", "hours": 6.3414, "text": "Okie so I’m currently working on the home page. I’m using React with MIUI, Framer Motion, SwiperJS, React Icons and also Tailwind CSS. It’s coming together pretty well not gonna lie"}]...
|
Title: Nidofy v2 by @NiDo | Stardance
Devlogs:
Ok Title: Nidofy v2 by @NiDo | Stardance
Devlogs:
Okie so I’m currently working on the home page. I’m using React with MIUI, Framer Motion, SwiperJS, React Icons and also Tailwind CSS. It’s coming together pretty well not gonna lie
I’m almost done, I’ve finished the my poems page and the poem page. I think I’m going to skip the projects and admin page of my old site for now as I’m fine with the old admin dashboard and I’m not really adding stuff to the projects pages anyways. So for now, I’ll just add the skeleton UI for the poem page (the other pages already have their own skeleton UIs) and I’ll push it to my server. Self-hosted btw The current version of it is already live. I’m still thinking of what next should I add. But before all of that, I should probably push everything to a github repo.
I’ve finished implementing the poem skeleton! I’ll just add a copy button like the old version of the site had and with that I can ship this project!!
So copy works! I was planning to have a copy all poems buttons but currently the backend doesn’t implement a proper get all poems with content endpoint, so the frontend would have to loop through how many ever poems are there (currently 48) requesting the content for each one… that’s definatly not a good idea unless the goal is to make the backend cry. Anyways, I’ll just deploy it to my self-hosted server and ship it!
I added an easter egg! I won’t reveal the link. It’s a challenge for y’all to find but ya. I’ll ship it now.
So as the suggestions said, I made the cards dark. While I was at it, I also added a footer.
Ships:
I rewrote my portfolio in React, while also learning React! The website serves both as my portfolio as well as a place where I can upload poems I wrote. The website is self hosted and live. It also hides an easter egg I encourage people to hunt for ;)
I rewrote my portfolio in React, while also learning React! The website serves both as my portfolio as well as a place where I can upload poems I wrote. The website is self hosted and live. It also hides an easter egg I encourage people to hunt for ;) Hint for the easter egg- Check the routes in App.jsx...
|
1793000947.0241816
|
1793087347.0241816
|
|
24731
|
Ocelot by @Leftie | Stardance
|
Leftie
|
2
|
29.0
|
503
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T02:42:20Z", "hours": 10.0, "multiplier": 16.41, "payout": 159, "blessing": "neutral", "text": "I made a chess engine without any dependencies. The hardest part were the small bugs that could have been avoided by just being more careful in the moment. I’m proudest of its UCI implementation–it can communicate with most chess GUIs via the Universal Chess Interface protocol. To test the project, you need Cargo to download and install the crate. You need to use the CLI (pictured) to test it if you don’t want to download a 3rd-party interface.", "repo": "https://github.com/left-alert-chaos/ocelot", "demo": "https://crates.io/crates/ocelot-chess/"}, {"ship_num": 2, "ts": "2026-06-28T19:43:37Z", "hours": 19.0, "multiplier": 17.93, "payout": 344, "blessing": "neutral", "text": "I made a chess engine from scratch. The board representation was the hardest part. While it wasn’t too challenging, there were some simple bugs that took more time than I’d like to admit to fix. I’m proudest of the engine’s speed–on my laptop’s performance mode, most moves take around 3.5 seconds. The engine is written in Rust, and needs Cargo in order to download and run.", "repo": "https://github.com/left-alert-chaos/ocelot", "demo": "https://crates.io/crates/ocelot-chess/"}]...
|
[{"post_id": 29908, "ts": "202 [{"post_id": 29908, "ts": "2026-07-17T02:34:01Z", "hours": 0.8, "text": "Devlog 9: The unnecessary one Stardance doesn’t want me to ship again without logging my 48 minutes, so here’s a brief summary: I removed some old code, changed the pawns_in_center heuristic to be more drastic, and made the TUI display how much time the engine took to move."}, {"post_id": 29727, "ts": "2026-07-16T20:21:32Z", "hours": 3.6853, "text": "Devlog 8: the procrastination is the hard part I’m going to try not to sound like a cringey motivational speaker, so bear with me. I’ve been procrastinating for a while now on one final part of the UCI implementation: the go command. It’s really complicated and I just didn’t want to write a parser for it, so since it was created, the engine hasn’t been able to change its search time based on how much time it has left. This is a problem, because it couldn’t reliably play with non-infinite time controls. Anyway, after I waited for the willpower to write the parser I just sat down and did it , and it wasn’t actually that hard! The one issue is that it seems to be weaker than it was before the time controls. That’s definitely not a huge problem I’ll have to fix later!"}, {"post_id": 21777, "ts": "2026-07-03T21:38:30Z", "hours": 2.9394, "text": "Devlog 7: Better luck this time? I’ve been doing some work on less crucial parts of the engine, but mostly trying to entertain myself while I waited for my ship to be reviewed. Today, I can proudly say that it was! However, it was send back because the player could make illegal moves in the TUI. This wasn’t too hard to fix, but there were a few things that I hadn’t known were wrong that work properly now. I didn’t realize it, but if the player tried to castle when they couldn’t, it would tell them it was illegal… after switching the color of the piece the king was going to replace. I did some sleuthing, and it turns out that it’s because the castle wasn’t being parsed as a castle, but as a move. This move was then being performed and undone. When moves are performed, they record the type of piece they capture so that the pieces can be restored when the moves are undone. Here, though, it was recording that it was capturing a knight but replacing it with a black knight because white can’t legally capture its own pieces. Anyway, that’s fixed now, so I’ll request another review and keep you posted!"}, {"post_id": 18622, "ts": "2026-06-29T20:25:24Z", "hours": 2.2492, "text": "Devlog 6: A need for speed! After my first (still pending) ship, I needed something else to focus my energy on other than the fundamentals. I landed on time management: I can make the engine more efficient with its time. And I’ve kind of done that, in a way. Firstly, I made the search algorithm track its time, so if it was iterating on a node while it surpassed its allowed time, it would just return the value it already had. I played around with the time value, and it seemed to work! When I set it to 1, the engine played moves in around 1.1 seconds. When I set it to 15, it played moves in exactly 15 seconds! It doesn’t dynamically adjust depth yet, but this is a good start!"}, {"post_id": 17803, "ts": "2026-06-28T18:53:15Z", "hours": 1.2617, "text": "Devlog 5: Final touches I’d already done most of the work–I just needed a few more minor things done before I could ship. These were: Make the TUI exit gracefully instead of just disappearing Add multi-threading Publish to crates.io I’m proud to say that I’ve done all of those! Making the search tree dispatch threads was much easier than I thought it would be, especially considering I’m still pretty new to Rust. The TUI was simply adding a struct field of whether to exit. Publishing was a breeze, and I’ve now published 2 different versions. All I need to do before I ship now is finish my README, which is just add a section about installing the project."}, {"post_id": 17288, "ts": "2026-06-28T00:31:04Z", "hours": 3.73, "text": "Devlog 4: I added a TUI After finishing most of the engine, I play tested it for a bit. As discussed in my last post, I fixed 3 big bugs. I was getting closer than ever to shipping a finished product! However, there was one problem: the engine wasn’t really usable on its own. Sure, it played decently, but it still needed the GUI to display the board. This is unfeasible for shipping–I can’t make people download someone else’s GUI just so my engine is playable. Therefore, I needed some sort of inbuilt user interface. My highest-priority design goal was to have no dependencies, so making a GUI wasn’t really an option. That left TUIs. I couldn’t use a library, so that left me 2 options: I could do the easy thing and hard-code the interface, or I could (and I know this sounds absurd) build a miniature TUI framework from the ground up just to make a simple screen. I picked the latter, because why not? I already had a decent prototype written in Python for another project, so I could just port that to Rust and life would be easy. Right? Well, kind of. I spent some time on it, but before I added yet another mandatory argument to a trait method, I stopped and asked myself if this was really worth it. It wasn’t going to be easy or practical, so why do it in the first place? And after coming to that realization, I quickly threw together a decent interface using hard-coded methods. No, it’s not extensible. But why would it need to be? It works, and that’s what matters. And it’s pretty nice, too!"}, {"post_id": 16583, "ts": "2026-06-26T23:34:04Z", "hours": 0.2664, "text": "Devlog 3 A couple bug fixes. This one’s more minor, so I’ll keep it short. There were 3 bugs: A crash (caused by calling unwrap() ) Moving an opponent’s piece (caused by not changing Board::turn ) Late en passant (caused by setting the en passant turn one too high) To solve them, I did 3 fixes: Add pattern matching Change the player to move when castling Change a turn number I also played the first legal game with this engine! I used CuteChess to make it play itself, and 35 rounds later the game ended by stalemate. No illegal moves were made and no crashes happened. I’ve attached a screenshot of the end of the game. I’m going to take this as a good sign and try to target Monday (6/29/2026) for my first ship."}, {"post_id": 16493, "ts": "2026-06-26T20:47:25Z", "hours": 1.3897, "text": "Devlog 2 I did UCI! The engine now is UCI-compatible, so it can play with GUIs like CuteChess. When I first connected it to CuteChess, it crashed on the first move. After enabling debugging, I realized it was because I hadn’t added the moves clause to the position command. I added it and… It still crashed. It crashed when it was time to make a move over and over and over again. After many ultimately useless println! statements, I finally realized why: I had been applying the user’s move before resetting the entire board, thus overwriting the move. After fixing this, I turned it on again and played for exactly one move before it crashed again. Why now? Once again, I hadn’t properly implemented the position command. It only accepted one move, but needed to take as many as were supplied. This was pretty easy - just a for loop. After fixing that, I was able to play an almost-complete game with it before it crashed yet again. After some more testing, it seems to crash when it doesn’t have any legal king moves. My next step is to fix this and a few other minor bugs, and then we should be off to the races!"}, {"post_id": 16381, "ts": "2026-06-26T17:38:02Z", "hours": 8.3358, "text": "Devlog 1 I’ve written a FEN parser. FEN (Forsyth-Edwards Notation) is a way of representing a chess board in one line of ASCII characters. It was intimidating, and I procrastinated a lot before biting the bullet. However, after a couple hours of work, I can successfully generate a board from a string and cargo test is green again!"}, {"post_id": 15274, "ts": "2026-06-24T20:11:03Z", "hours": 4.1747, "text": "Devlog 0 - renaming and joining First, some background. I’ve been working on a chess engine for a couple months now - first in Python, then in Rust. The Python implementation had a few problems. It made illegal moves and was buggy in general. But it had one problem that couldn’t be solved by more loss of sleep: It was written in Python. This made it incredibly slow, and you can’t do much about the language you’re writing in. I tried for a couple days to port the code base over to Codon, a compiled implementation of Python, but I had used dynamic typing so much that it wouldn’t have been feasible. So I came to a crossroads. I could keep working on the Python project, with the limitations of either an incredibly slow environment or an unpopular one, or I could leave my comfort zone, learn something, rewrite it in Rust . I’m now about 2000 lines into the Rust version, and it’s faster and more accurate than the old one could ever dream of being. Joining Stardance I joined Hack Club a couple days ago, and I didn’t know what to expect. I’ve had fun talking to other like-minded “hackers”. I was reading about Stardance, and it seemed like the thing to do. I was even told that I could bring an existing project! I renamed my engine (“Sophisticate”) to Ocelot, and joined."}]...
|
Title: Ocelot by @Leftie | Stardance
Devlogs:
Dev Title: Ocelot by @Leftie | Stardance
Devlogs:
Devlog 0 - renaming and joining First, some background. I’ve been working on a chess engine for a couple months now - first in Python, then in Rust. The Python implementation had a few problems. It made illegal moves and was buggy in general. But it had one problem that couldn’t be solved by more loss of sleep: It was written in Python. This made it incredibly slow, and you can’t do much about the language you’re writing in. I tried for a couple days to port the code base over to Codon, a compiled implementation of Python, but I had used dynamic typing so much that it wouldn’t have been feasible. So I came to a crossroads. I could keep working on the Python project, with the limitations of either an incredibly slow environment or an unpopular one, or I could leave my comfort zone, learn something, rewrite it in Rust . I’m now about 2000 lines into the Rust version, and it’s faster and more accurate than the old one could ever dream of being. Joining Stardance I joined Hack Club a couple days ago, and I didn’t know what to expect. I’ve had fun talking to other like-minded “hackers”. I was reading about Stardance, and it seemed like the thing to do. I was even told that I could bring an existing project! I renamed my engine (“Sophisticate”) to Ocelot, and joined.
Devlog 1 I’ve written a FEN parser. FEN (Forsyth-Edwards Notation) is a way of representing a chess board in one line of ASCII characters. It was intimidating, and I procrastinated a lot before biting the bullet. However, after a couple hours of work, I can successfully generate a board from a string and cargo test is green again!
Devlog 2 I did UCI! The engine now is UCI-compatible, so it can play with GUIs like CuteChess. When I first connected it to CuteChess, it crashed on the first move. After enabling debugging, I realized it was because I hadn’t added the moves clause to the position command. I added it and… It still crashed. It crashed when it was time to make a move over and over and over again. After many ultimately useless println! statements, I finally realized why: I had been applying the user’s move before resetting the entire board, thus overwriting the move. After fixing this, I turned it on again and played for exactly one move before it crashed again. Why now? Once again, I hadn’t properly implemented the position command. It only accepted one move, but needed to take as many as were supplied. This was pretty easy - just a for loop. After fixing that, I was able to play an almost-complete game with it before it crashed yet again. After some more testing, it seems to crash when it doesn’t have any legal king moves. My next step is to fix this and a few other minor bugs, and then we should be off to the races!
Devlog 3 A couple bug fixes. This one’s more minor, so I’ll keep it short. There were 3 bugs: A crash (caused by calling unwrap() ) Moving an opponent’s piece (caused by not changing Board::turn ) Late en passant (caused by setting the en passant turn one too high) To solve them, I did 3 fixes: Add pattern matching Change the player to move when castling Change a turn number I also played the first legal game with this engine! I used CuteChess to make it play itself, and 35 rounds later the game ended by stalemate. No illegal moves were made and no crashes happened. I’ve attached a screenshot of the end of the game. I’m going to take this as a good sign and try to target Monday (6/29/2026) for my first ship.
Devlog 4: I added a TUI After finishing most of the engine, I play tested it for a bit. As discussed in my last post, I fixed 3 big bugs. I was getting closer than ever to shipping a finished product! However, there was one problem: the engine wasn’t really usable on its own. Sure, it played decently, but it still needed the GUI to display the board. This is unfeasible for shipping–I can’t make people download someone else’s GUI just so my engine is playable. Therefore, I needed some sort of inbuilt user interface. My highest-priority design goal was to have no dependencies, so making a GUI wasn’t really an option. That left TUIs. I couldn’t use a library, so that left me 2 options: I could do the easy thing and hard-code the interface, or I could (and I know this sounds absurd) build a miniature TUI framework from the ground up just to make a simple screen. I picked the latter, because why not? I already had a decent prototype written in Python for another project, so I could just port that to Rust and life would be easy. Right? Well, kind of. I spent some time on it, but before I added yet another mandatory argument to a trait method, I stopped and asked myself if this was really worth it. It wasn’t going to be easy or practical, so why do it in the first place? And after coming to that realization, I quickly threw together a decent interface using hard-coded methods. No, it’s not extensible. But why would it need to be? It works, and that’s what matters. And it’s pretty nice, too!
Devlog 5: Final touches I’d already done most of the work–I just needed a few more minor things done before I could ship. These were: Make the TUI exit gracefully instead of just disappearing Add multi-threading Publish to crates.io I’m proud to say that I’ve done all of those! Making the search tree dispatch threads was much easier than I thought it would be, especially considering I’m still pretty new to Rust. The TUI was simply adding a struct field of whether to exit. Publishing was a breeze, and I’ve now published 2 different versions. All I need to do before I ship now is finish my README, which is just add a section about installing the project.
Devlog 6: A need for speed! After my first (still pending) ship, I needed something else to focus my energy on other than the fundamentals. I landed on time management: I can make the engine more efficient with its time. And I’ve kind of done that, in a way. Firstly, I made the search algorithm track its time, so if it was iterating on a node while it surpassed its allowed time, it would just return the value it already had. I played around with the time value, and it seemed to work! When I set it to 1, the engine played moves in around 1.1 seconds. When I set it to 15, it played moves in exactly 15 seconds! It doesn’t dynamically adjust depth yet, but this is a good start!
Devlog 7: Better luck this time? I’ve been doing some work on less crucial parts of the engine, but mostly trying to entertain myself while I waited for my ship to be reviewed. Today, I can proudly say that it was! However, it was send back because the player could make illegal moves in the TUI. This wasn’t too hard to fix, but there were a few things that I hadn’t known were wrong that work properly now. I didn’t realize it, but if the player tried to castle when they couldn’t, it would tell them it was illegal… after switching the color of the piece the king was going to replace. I did some sleuthing, and it turns out that it’s because the castle wasn’t being parsed as a castle, but as a move. This move was then being performed and undone. When moves are performed, they record the type of piece they capture so that the pieces can be restored when the moves are undone. Here, though, it was recording that it was capturing a knight but replacing it with a black knight because white can’t legally capture its own pieces. Anyway, that’s fixed now, so I’ll request another review and keep you posted!
Devlog 8: the procrastination is the hard part I’m going to try not to sound like a cringey motivational speaker, so bear with me. I’ve been procrastinating for a while now on one final part of the UCI implementation: the go command. It’s really complicated and I just didn’t want to write a parser for it, so since it was created, the engine hasn’t been able to change its search time based on how much time it has left. This is a problem, because it couldn’t reliably play with non-infinite time controls. Anyway, after I waited for the willpower to write the parser I just sat down and did it , and it wasn’t actually that hard! The one issue is that it seems to be weaker than it was before the time controls. That’s definitely not a huge problem I’ll have to fix later!
Devlog 9: The unnecessary one Stardance doesn’t want me to ship again without logging my 48 minutes, so here’s a brief summary: I removed some old code, changed the pawns_in_center heuristic to be more drastic, and made the TUI display how much time the engine took to move.
Ships:
I made a chess engine from scratch. The board representation was the hardest part. While it wasn’t too challenging, there were some simple bugs that took more time than I’d like to admit to fix. I’m proudest of the engine’s speed–on my laptop’s performance mode, most moves take around 3.5 seconds. The engine is written in Rust, and needs Cargo in order to download and run.
I made a chess engine without any dependencies. The hardest part were the small bugs that could have been avoided by just being more careful in the moment. I’m proudest of its UCI implementation–it can communicate with most chess GUIs via the Universal Chess Interface protocol. To test the project, you need Cargo to download and install the crate. You need to use the CLI (pictured) to test it if you don’t want to download a 3rd-party interface....
|
1792997268.6565228
|
1793083668.6565228
|
|
24732
|
CapyOS by @viivi | Stardance
|
viivi
|
2
|
11.0
|
24
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T18:51:40Z", "hours": 4.0, "multiplier": 5.52, "payout": 24, "blessing": "neutral", "text": "CapyOS This is just a silly project made just for fun! CapyOS is a capybara-themed web operating system. I followed WebOS 1 mission to build core features and for WebOS 2 I added 2 new apps, fixed full screen mode and made app menu scrollable. I also did some polishing for the UI and added “clear windows” -button. This was my first time building a website with pure html, javascript and css for a long time. I had a lot of fun designing while adding all those capybaras you will find when you test it! I accidentally used over 7hr with mission 1 because I had so much fun and I love to adjust small things little bit better. Also because this project was made just for fun, I didn’t have much pressure to make this “good” or “serious”. It’s still 100% (hopefully) working. Have fun while testing! More details in readme.", "repo": "https://github.com/ViLP357/WebOS-Stardance", "demo": "https://vilp357.github.io/WebOS-Stardance/"}, {"ship_num": 2, "ts": "2026-07-05T15:43:20Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Here is my project for WebOS 1: CapyOS. A capybara themed WebOs using HTML, JavaScript and CSS. Capybaras are cute chill guys. So why not to make a capybara themed WebOS? This isn’t supposed to be a very serious project. I took the right to make it kinda silly. But at the same time it’s an actual web app and you could go to play around with it right now (link: https://vilp357.github.io/WebOS-Stardance/ )! It’n not very complex yet, but I’ve planned to continue to WebOS 2 mission to finish what I’ve started (nothing is stopping me, hahaa). My own features: scrollable app menu (when it has more icons it’s actually scrollable). I don’t like my desktop being covered in icons, so this way icons will stay on the left side forever. fullscreen button. This one works best when there is only one window. Otherwise it might work, let’s say, in a different way. Before starting this project I was already familiar with HTML and CSS, but I wasn’t that familiar with plain JavaScript. I think that I learned most about coding webpages with JavaScript and I feel confident continuing to WebOS 2.", "repo": "https://github.com/ViLP357/WebOS-Stardance", "demo": "https://vilp357.github.io/WebOS-Stardance/"}]...
|
[{"post_id": 53271, "ts": "202 [{"post_id": 53271, "ts": "2026-08-23T18:38:17Z", "hours": 1.8197, "text": "#7 devlog Probably the last devlog for this project. CapyOS is now ready for shipping. Sorry for last devlog, I just wan’t to get these hours logged. The last feature I added was a timer. Its icon is, of course, caybara-themed."}, {"post_id": 43341, "ts": "2026-08-08T15:17:31Z", "hours": 2.4578, "text": "#6 devlog, webOS 2 Some updates A new app: a gallery for viewing cute capybara photos Full screen button works now, it aligns the window perfectly every time now. (It required actually only 2 new lines in to script!) A new scrollbar in the app menu with a green theme. I added extra icons so that the scrollbar can be tested"}, {"post_id": 22903, "ts": "2026-07-05T15:23:00Z", "hours": 0.4181, "text": "#5 devlog The final site (after webos 1). I’m going to ship it now!"}, {"post_id": 22275, "ts": "2026-07-04T17:36:45Z", "hours": 3.9961, "text": "#4 devlog I think I’ve completed part 5 now. I still have to finish readme and deploy this and the ship. This will actually be my first ship!! I’ve already planned things to do in WebOS 2 (and I actually started doing them). The new app I created in part 5 is link app because I often forget important websites and the app is a place to store links for those sites."}, {"post_id": 17881, "ts": "2026-06-28T20:22:06Z", "hours": 1.4325, "text": "#3 devlog Working on my WebOS. Today I completed part 3 which means that the welcome window is closeable and openable. I hope to finish WebOS 1 soon. Looking forward to make a new app next time :)"}, {"post_id": 16462, "ts": "2026-06-26T20:07:23Z", "hours": 1.0678, "text": "#2 devlog Part 2 done. I decided that my WebOS will be CapyOS so more of capybaras coming. I’m very happy with the navbar I made and I’ll update it later. I think it already looks really cool."}, {"post_id": 14528, "ts": "2026-06-23T17:50:38Z", "hours": 0.4672, "text": "#1 devlog Today I started making my own WebOS using the tutorial. There was nothing new to me but had fun with playing the elements. I don’t have any special plans for this project but hopefully I end making something (at least little bit) useful."}]...
|
Title: CapyOS by @viivi | Stardance
Devlogs:
#1 d Title: CapyOS by @viivi | Stardance
Devlogs:
#1 devlog Today I started making my own WebOS using the tutorial. There was nothing new to me but had fun with playing the elements. I don’t have any special plans for this project but hopefully I end making something (at least little bit) useful.
#2 devlog Part 2 done. I decided that my WebOS will be CapyOS so more of capybaras coming. I’m very happy with the navbar I made and I’ll update it later. I think it already looks really cool.
#3 devlog Working on my WebOS. Today I completed part 3 which means that the welcome window is closeable and openable. I hope to finish WebOS 1 soon. Looking forward to make a new app next time :)
#4 devlog I think I’ve completed part 5 now. I still have to finish readme and deploy this and the ship. This will actually be my first ship!! I’ve already planned things to do in WebOS 2 (and I actually started doing them). The new app I created in part 5 is link app because I often forget important websites and the app is a place to store links for those sites.
#5 devlog The final site (after webos 1). I’m going to ship it now!
#6 devlog, webOS 2 Some updates A new app: a gallery for viewing cute capybara photos Full screen button works now, it aligns the window perfectly every time now. (It required actually only 2 new lines in to script!) A new scrollbar in the app menu with a green theme. I added extra icons so that the scrollbar can be tested
#7 devlog Probably the last devlog for this project. CapyOS is now ready for shipping. Sorry for last devlog, I just wan’t to get these hours logged. The last feature I added was a timer. Its icon is, of course, caybara-themed.
Ships:
Here is my project for WebOS 1: CapyOS. A capybara themed WebOs using HTML, JavaScript and CSS. Capybaras are cute chill guys. So why not to make a capybara themed WebOS? This isn’t supposed to be a very serious project. I took the right to make it kinda silly. But at the same time it’s an actual web app and you could go to play around with it right now (link: https://vilp357.github.io/WebOS-Stardance/ )! It’n not very complex yet, but I’ve planned to continue to WebOS 2 mission to finish what I’ve started (nothing is stopping me, hahaa). My own features: scrollable app menu (when it has more icons it’s actually scrollable). I don’t like my desktop being covered in icons, so this way icons will stay on the left side forever. fullscreen button. This one works best when there is only one window. Otherwise it might work, let’s say, in a different way. Before starting this project I was already familiar with HTML and CSS, but I wasn’t that familiar with plain JavaScript. I think that I learned most about coding webpages with JavaScript and I feel confident continuing to WebOS 2.
CapyOS This is just a silly project made just for fun! CapyOS is a capybara-themed web operating system. I followed WebOS 1 mission to build core features and for WebOS 2 I added 2 new apps, fixed full screen mode and made app menu scrollable. I also did some polishing for the UI and added “clear windows” -button. This was my first time building a website with pure html, javascript and css for a long time. I had a lot of fun designing while adding all those capybaras you will find when you test it! I accidentally used over 7hr with mission 1 because I had so much fun and I love to adjust small things little bit better. Also because this project was made just for fun, I didn’t have much pressure to make this “good” or “serious”. It’s still 100% (hopefully) working. Have fun while testing! More details in readme....
|
1792993898.8058002
|
1793080298.8058002
|
|
24796
|
Soulful by @Alafandri | Stardance
|
Alafandri
|
2
|
49.0
|
409
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T00:23:16Z", "hours": 3.0, "multiplier": 12.86, "payout": 43, "blessing": "neutral", "text": "I made an update to my game called ‘Soulful’. It’s a game about a soul sent to earth to defeat a corrupted soul who is trying to take over the world. This update mainly features bug fixes and big improvements to the game. The most challenging part was to get the systems to feel right. I am most proud of the outcome of everything and very happy about doing these fixes. People who plan on playing it should know that in the end there is also a cutscene when you finish the game. Also note that the game bosses are quite wonky and being able to save inside the arena and also heal is a feature ;). Anyways have fun!", "repo": "https://github.com/Alafandri/Soulful", "demo": "https://alafandri.itch.io/soulful"}, {"ship_num": 2, "ts": "2026-08-07T17:40:13Z", "hours": 46.0, "multiplier": 15.91, "payout": 366, "blessing": "neutral", "text": "I made a pixel art style platformer game that includes enemies, bosses, abilities, platformer challenges a story and much more. This project might be by far my biggest game project I have ever made! And I am really proud of the results. The most challenging thing with making this game was programming. I ran into a bunch of problems, had really weird bugs but I somehow managed to outcome them. I am really proud of the art for this game. That is because I haven’t really ever made pixel art before until this project. This project really forced me to step out of my comfort zone. People who are planning on playing this should know that don’t expect anything insane. This game doesn’t take very long to complete. I would say around 5-10 min, depending on the person. Anyways, enjoy!", "repo": "https://github.com/Alafandri/Soulful", "demo": "https://alafandri.itch.io/soulful"}]...
|
[{"post_id": 57733, "ts": "202 [{"post_id": 57733, "ts": "2026-08-30T00:10:36Z", "hours": 3.3725, "text": "Devlog #8: overhaul Hello guys! So I have come back to the game after some time cause I wanted to do some improvements that I just had to get out of my head. Everything new: 🔥 More settings options Improved lighting Platforming improvements Sound fixes Bug fixes Buttons and menu overhaul And a few small other things like tweaking particle amounts and a few settings So after reading everyones feedback to the game I realized that some parts of the game really needed to be improved. So I got to work and thats what I did. Also tysm to everyones feedback on the game and those amazing words❤️. Anyways that is it for now! Will probably return to this project in the future or will work on the game but without the devlog thing anymore. Anyways enjoy!🥰"}, {"post_id": 42771, "ts": "2026-08-07T17:29:49Z", "hours": 1.8014, "text": "Game is ready for release!"}, {"post_id": 42605, "ts": "2026-08-07T12:52:46Z", "hours": 8.5772, "text": "Devlog #8: Sound 🎵 Hi guys! So the game is basically done but it is missing alot of sfx and there is no music yet in the game. But other than that I have gotten everything else done! Everything new: 🔥 Ending Credits Tutorial Menu Settings Some sfx and ambience All I am doing currently with the game pretty much is just finishing off areas, adding final touches and adding in sfx. The music will be probably the hardest part but we will see. I am so proud of the game and I cannot wait to make it public for everyone. The game is about to come out any day now. Maybe even today if I lock in. We will see. Byeeeee❤️"}, {"post_id": 41600, "ts": "2026-08-05T21:58:58Z", "hours": 4.7264, "text": "Devlog #7: The game 😍 Yo wsp everyone!!! The game is so so close to being done. I decided to make a final long form devlog on this project. I will probably do another small one later when I am really close to release. Everything new: 2 bosses new enemy a bunch of areas And bunch other stuff you will find out about when you play the game Okay. so I have added actually a lot of stuff since last devlog. All of the areas are basically finished, they just need a little touch of love. I currently am working on the final boss of the game which I am proud of. This game isn’t anything big. You will probs finish it in a few minutes. It’s nothing special, but I am proud of it since so much work went into this and the results so far are more than I ever thought I was capable of. Until starting this project I hadn’t basically really ever done pixel art. I have tried before and watched tutorials for it but it always seemed too hard for me. While making this game I have improved so much in making pixel art and I will definitely in the future continue making pixel art cause it is alot of fun. This project has definitely been a challenge but but it has also been alot of fun. I like writing this devlogs and sharing updates with everyone, even though my post barely get any attention. Anyways, I should get back to work. Basically the game is almost done and I don’t have much left to do. Byeee!!!!"}, {"post_id": 40389, "ts": "2026-08-03T21:10:15Z", "hours": 1.4594, "text": "Another update: All of the areas are finished! All that is needed to be worked on is the final boss, adding detail, end cutscene. When this game comes out you will have option to either download it or just to play it on your browser. Also heres a little sneak peek of a tileset for a area in the game"}, {"post_id": 40054, "ts": "2026-08-03T12:35:58Z", "hours": 4.0144, "text": "Little update: So much work is being done! I just finished one of the areas for the game. I got 3 more to go and final boss to be implemented to the game. The boss is fully drawn but it’s not in the game yet. The game will be out very very soon!"}, {"post_id": 38830, "ts": "2026-08-01T12:08:20Z", "hours": 8.0881, "text": "Devlog #6: World building 😆 Hey everyone! This devlog will be short and without a current progress video like usually. That is because I have started to build the games world. I have finished the starting area and got a rough layout for the next one. I have written out the game lore and how the game should progress so I know what keep in mind while building the map. Most of the current time is spent drawing cause so much art is needed for the game but the progress is overall really good! Also check out this cool tree I made. It wont have any purpose in the game but It does help with the world feel. See you soon!"}, {"post_id": 36380, "ts": "2026-07-28T13:38:19Z", "hours": 5.6547, "text": "Devlog #5: Npc, new art, health and bug fixes 😆 Hey guys! I haven’t posted in a while and I wasn’t able to work much on the game in the time but now I’m back and working on the game again! 🥳 Even though I haven’t worked on the game much then I still have got quite a few new things to show you guys for this devlog. Everything new: 🔥 Npc New enemy sprites, death particles and few fixes Ball Player improvements(bug fixes. few tweaks and hit invincibility indicator!) New decorational flower sprites Health bar And some other things that I’m not going to bore you with… So that’s quite a lot of stuff I would say, It might not seem like it to you but It does for me. Seeing the game coming slowly together really motivates me to work on it even more. SO so much needs to be still done until it can be finally shipped and you to be able to play it, but eventually we will get there! Next I’m planning on working on the abilities, then I will try to make 2 bosses for the game. Wait lemme just make a roadmap for the game real quick… ROADMAP: 🗺️ other 2 Abilities Breakable walls Attacking enemies 2 Bosses Save/load system Ending/s? map 2 Areas Parkour sections Boss rooms Some other stuff I can’t think of rn Currently my plan is to make the basic things for the game before I can start building it out. I want save the map for the last cause I want it to feel nice and logical to explore. But thats all for this devlog! See you next time!!!!👋"}, {"post_id": 19188, "ts": "2026-06-30T13:35:01Z", "hours": 3.0072, "text": "Devlog #4: Player, enemies and visuals ✨ Hello everyone once again! I am back with a nother devlog. This time I will be talking about the new visuals for the game and player and enemy interactions. Everything new: 🔥 Parallax background Enemy ai Enemy damage player Player health Added player attack function Visual improvements I have been having so much fun making this game. I love going back to look at the old footage I have filmed of the game and see how much has changed. With every devlog I’m getting closer to shipping the game. Even though a lot needs still to be done to get to that point I’m still very happy with what I have made so far. I’ve had a lot of problems before getting the parallax background to work properly but somehow I got it to work! One of the things I have been wanting to add was a enemy which finally is here now. Currently I only got one enemy who doesn’t do much but still it’s at least something for now and I will be definitely adding more in the future. A lot of things still need to be added like player health ui and sprites need to be made for the enemy and hopefully I will have those things for the next devlog! In the next devlog you can hopefully expect: 😁 Expand world Dialogue system New art Player death respawn fix probs more stuff idk Oki, that’s it for this devlog! See you soon!!!! 🤑"}, {"post_id": 17896, "ts": "2026-06-28T20:42:11Z", "hours": 5.2508, "text": "Devlog #3: Character and the world 🔥 Hey everyone! I haven’t posted for a few days but that’s because I have been doing a lot of work on the game. So far everything is coming along very nicely. Everything new: Grass wind shader Character attack Checkpoints Particles Menu screen Tweaked character settings Changed some sprites Visual changes(particles and etc) So as you can see I have added quite a few things but there is still a lot for me left to do until it’s an actual game where you have something to do. Probably the biggest things that I have added are the player attack, checkpoints and menu. Other are just visual changes and some tiny value and number changes here and there. I also changed the grass sprite cause I wanted to add a wind shader on the grass but I ran into a problem that when the grass has an outline then it disappears sometimes to who knows where or there are suddenly more black pixels than there should be. So I decided that I will just remake the texture and replace the old ones. I have also added wind particles which I had already made earlier but it didn’t look very good before so I had to tweak the settings around here and there until it looked right. I think that it still could be a little better but for now it will do just fine. I also have already written some lore for the game and what that game is going to be about which I will start working once I have all of the main systems that I would need to start building the game. I will hopefully be working next on: Enemies Parallax background Expand world Dialogue system Character death animations some sfx respawn Abilities? Keep in mind that I won’t probably have added all of those things by the next devlog but definitely some. Anyways, thank you so much for reading my devlog! I hope to see you in the next one!!!🥰"}, {"post_id": 15270, "ts": "2026-06-24T20:02:18Z", "hours": 2.6256, "text": "Devlog #2: Art and particles ✨ Hey everyone! In this devlog I have made mostly **visual **changes.😆 All changes: Added particles Also made wind particles but that needs to be worked on and isn’t shown in the video Player sprites and animations Grass sprites Player movement improvements Tilemap ground sprites Grass sprites to make stuff more lively Modified background color I have done actually quite a lot since the last devlog and piece by piece eventually I will have a full functioning game. But to get there there is so much still to do. Anyways the biggest thing I worked on in this devlog is obviously the visual side of things. I wanted to game to look a bit more pleasing on the eye when developing the game. The character design might not be final but I am very proud of myself for this result since I don’t usually do pixel art at all and I thought it might be a nice challange and an opportunity to learn something new while making this game. So far I’m loving making art for this game cause it’s so fun but also hard for me since one wrongly placed pixel can ruin the effect so easily and look wrong overall. I’ve still got to do some work on the grass since it might look a bit tall next to the player cause I’m going for a pixel perfect game and using 16x16 for both the player and grass sprites. I’m also working on a wind shader to give the grass some movement. But yeah that’s all, and I’ve got a lot to do so.. see you in the next devlog. Byeee 🥰 !!!"}, {"post_id": 14662, "ts": "2026-06-23T21:02:37Z", "hours": 0.8072, "text": "DEVLOG #1: Setup Yayyyy a new godot project!!😆😆😆 There is nothing more exciting than starting a new game development project and opening up the fresh new project window. What I have done so far: Made the godot project and setup github page Added keybinds to godots input map Made a character controller Changed window settings Made a basic platform Configured games gravitational settings I’m trying to make a pixel perfect system something like in Celeste so that the game would look extra clean😁 . It doesn’t look that great rn but I’m going to start making art soon when I have the basic stuff setup. That’s all for this devlog but see you very very soon in the next one!!! byeeeee🥰 !!!!!!!!"}]...
|
Title: Soulful by @Alafandri | Stardance
Devlogs: Title: Soulful by @Alafandri | Stardance
Devlogs:
DEVLOG #1: Setup Yayyyy a new godot project!!😆😆😆 There is nothing more exciting than starting a new game development project and opening up the fresh new project window. What I have done so far: Made the godot project and setup github page Added keybinds to godots input map Made a character controller Changed window settings Made a basic platform Configured games gravitational settings I’m trying to make a pixel perfect system something like in Celeste so that the game would look extra clean😁 . It doesn’t look that great rn but I’m going to start making art soon when I have the basic stuff setup. That’s all for this devlog but see you very very soon in the next one!!! byeeeee🥰 !!!!!!!!
Devlog #2: Art and particles ✨ Hey everyone! In this devlog I have made mostly **visual **changes.😆 All changes: Added particles Also made wind particles but that needs to be worked on and isn’t shown in the video Player sprites and animations Grass sprites Player movement improvements Tilemap ground sprites Grass sprites to make stuff more lively Modified background color I have done actually quite a lot since the last devlog and piece by piece eventually I will have a full functioning game. But to get there there is so much still to do. Anyways the biggest thing I worked on in this devlog is obviously the visual side of things. I wanted to game to look a bit more pleasing on the eye when developing the game. The character design might not be final but I am very proud of myself for this result since I don’t usually do pixel art at all and I thought it might be a nice challange and an opportunity to learn something new while making this game. So far I’m loving making art for this game cause it’s so fun but also hard for me since one wrongly placed pixel can ruin the effect so easily and look wrong overall. I’ve still got to do some work on the grass since it might look a bit tall next to the player cause I’m going for a pixel perfect game and using 16x16 for both the player and grass sprites. I’m also working on a wind shader to give the grass some movement. But yeah that’s all, and I’ve got a lot to do so.. see you in the next devlog. Byeee 🥰 !!!
Devlog #3: Character and the world 🔥 Hey everyone! I haven’t posted for a few days but that’s because I have been doing a lot of work on the game. So far everything is coming along very nicely. Everything new: Grass wind shader Character attack Checkpoints Particles Menu screen Tweaked character settings Changed some sprites Visual changes(particles and etc) So as you can see I have added quite a few things but there is still a lot for me left to do until it’s an actual game where you have something to do. Probably the biggest things that I have added are the player attack, checkpoints and menu. Other are just visual changes and some tiny value and number changes here and there. I also changed the grass sprite cause I wanted to add a wind shader on the grass but I ran into a problem that when the grass has an outline then it disappears sometimes to who knows where or there are suddenly more black pixels than there should be. So I decided that I will just remake the texture and replace the old ones. I have also added wind particles which I had already made earlier but it didn’t look very good before so I had to tweak the settings around here and there until it looked right. I think that it still could be a little better but for now it will do just fine. I also have already written some lore for the game and what that game is going to be about which I will start working once I have all of the main systems that I would need to start building the game. I will hopefully be working next on: Enemies Parallax background Expand world Dialogue system Character death animations some sfx respawn Abilities? Keep in mind that I won’t probably have added all of those things by the next devlog but definitely some. Anyways, thank you so much for reading my devlog! I hope to see you in the next one!!!🥰
Devlog #4: Player, enemies and visuals ✨ Hello everyone once again! I am back with a nother devlog. This time I will be talking about the new visuals for the game and player and enemy interactions. Everything new: 🔥 Parallax background Enemy ai Enemy damage player Player health Added player attack function Visual improvements I have been having so much fun making this game. I love going back to look at the old footage I have filmed of the game and see how much has changed. With every devlog I’m getting closer to shipping the game. Even though a lot needs still to be done to get to that point I’m still very happy with what I have made so far. I’ve had a lot of problems before getting the parallax background to work properly but somehow I got it to work! One of the things I have been wanting to add was a enemy which finally is here now. Currently I only got one enemy who doesn’t do much but still it’s at least something for now and I will be definitely adding more in the future. A lot of things still need to be added like player health ui and sprites need to be made for the enemy and hopefully I will have those things for the next devlog! In the next devlog you can hopefully expect: 😁 Expand world Dialogue system New art Player death respawn fix probs more stuff idk Oki, that’s it for this devlog! See you soon!!!! 🤑
Devlog #5: Npc, new art, health and bug fixes 😆 Hey guys! I haven’t posted in a while and I wasn’t able to work much on the game in the time but now I’m back and working on the game again! 🥳 Even though I haven’t worked on the game much then I still have got quite a few new things to show you guys for this devlog. Everything new: 🔥 Npc New enemy sprites, death particles and few fixes Ball Player improvements(bug fixes. few tweaks and hit invincibility indicator!) New decorational flower sprites Health bar And some other things that I’m not going to bore you with… So that’s quite a lot of stuff I would say, It might not seem like it to you but It does for me. Seeing the game coming slowly together really motivates me to work on it even more. SO so much needs to be still done until it can be finally shipped and you to be able to play it, but eventually we will get there! Next I’m planning on working on the abilities, then I will try to make 2 bosses for the game. Wait lemme just make a roadmap for the game real quick… ROADMAP: 🗺️ other 2 Abilities Breakable walls Attacking enemies 2 Bosses Save/load system Ending/s? map 2 Areas Parkour sections Boss rooms Some other stuff I can’t think of rn Currently my plan is to make the basic things for the game before I can start building it out. I want save the map for the last cause I want it to feel nice and logical to explore. But thats all for this devlog! See you next time!!!!👋
Devlog #6: World building 😆 Hey everyone! This devlog will be short and without a current progress video like usually. That is because I have started to build the games world. I have finished the starting area and got a rough layout for the next one. I have written out the game lore and how the game should progress so I know what keep in mind while building the map. Most of the current time is spent drawing cause so much art is needed for the game but the progress is overall really good! Also check out this cool tree I made. It wont have any purpose in the game but It does help with the world feel. See you soon!
Little update: So much work is being done! I just finished one of the areas for the game. I got 3 more to go and final boss to be implemented to the game. The boss is fully drawn but it’s not in the game yet. The game will be out very very soon!
Another update: All of the areas are finished! All that is needed to be worked on is the final boss, adding detail, end cutscene. When this game comes out you will have option to either download it or just to play it on your browser. Also heres a little sneak peek of a tileset for a area in the game
Devlog #7: The game 😍 Yo wsp everyone!!! The game is so so close to being done. I decided to make a final long form devlog on this project. I will probably do another small one later when I am really close to release. Everything new: 2 bosses new enemy a bunch of areas And bunch other stuff you will find out about when you play the game Okay. so I have added actually a lot of stuff since last devlog. All of the areas are basically finished, they just need a little touch of love. I currently am working on the final boss of the game which I am proud of. This game isn’t anything big. You will probs finish it in a few minutes. It’s nothing special, but I am proud of it since so much work went into this and the results so far are more than I ever thought I was capable of. Until starting this project I hadn’t basically really ever done pixel art. I have tried before and watched tutorials for it but it always seemed too hard for me. While making this game I have improved so much in making pixel art and I will definitely in the future continue making pixel art cause it is alot of fun. This project has definitely been a challenge but but it has also been alot of fun. I like writing this devlogs and sharing updates with everyone, even though my post barely get any attention. Anyways, I should get back to work. Basically the game is almost done and I don’t have much left to do. Byeee!!!!
Devlog #8: Sound 🎵 Hi guys! So the game is basically done but it is missing alot of sfx and there is no music yet in the game. But other than that I have gotten everything else done! Everything new: 🔥 Ending Credits Tutorial Menu Settings Some sfx and ambience All I am doing currently with the game pretty much is just finishing off areas, adding final touches and adding in sfx. The music will be probably the hardest part but we will see. I am so proud of the game and I cannot wait to make it public for everyone. The game is about to come out any day now. Maybe even today if I lock in. We will see. Byeeeee❤️
Game is ready for release!
Devlog #8: overhaul Hello guys! So I have come back to the game after some time cause I wanted to do some improvements that I just had to get out of my head. Everything new: 🔥 More settings options Improved lighting Platforming improvements Sound fixes Bug fixes Buttons and menu overhaul And a few small other things like tweaking particle amounts and a few settings So after reading everyones feedback to the game I realized that some parts of the game really needed to be improved. So I got to work and thats what I did. Also tysm to everyones feedback on the game and those amazing words❤️. Anyways that is it for now! Will probably return to this project in the future or will work on the game but without the devlog thing anymore. Anyways enjoy!🥰
Ships:
I made a pixel art style platformer game that includes enemies, bosses, abilities, platformer challenges a story and much more. This project might be by far my biggest game project I have ever made! And I am really proud of the results. The most challenging thing with making this game was programming. I ran into a bunch of problems, had really weird bugs but I somehow managed to outcome them. I am really proud of the art for this game. That is because I haven’t really ever made pixel art before until this project. This project really forced me to step out of my comfort zone. People who are planning on playing this should know that don’t expect anything insane. This game doesn’t take very long to complete. I would say around 5-10 min, depending on the person. Anyways, enjoy!
I made an update to my game called ‘Soulful’. It’s a game about a soul sent to earth to defeat a corrupted soul who is trying to take over the world. This update mainly features bug fixes and big improvements to the game. The most challenging part was to get the systems to feel right. I am most proud of the outcome of everything and very happy about doing these fixes. People who plan on playing it should know that in the end there is also a cutscene when you finish the game. Also note that the game bosses are quite wonky and being able to save inside the arena and also heal is a feature ;). Anyways have fun!...
|
1793094885.7099712
|
1793181285.7099712
|
|
24990
|
Fortress Fighter by @codingfreak234 | Stardance
|
codingfreak234
|
2
|
12.0
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T01:39:15Z", "hours": 0.0, "multiplier": 3.46, "payout": 2, "blessing": "neutral", "text": "I made some mistakes. Mainly, I wrote a terrible readme(oops), and completely forgot to tell anyone how to play the game. Also, I had it named as a RPG, which it is not. And now, after fixing these, I’m ready to re-release. To avoid a repeat: Use WASD to move Use L to launch a long range blast in the direction of travel Use K to launch a short range blast in the direction of travel I really hope I didn’t miss anything that needed to be fixed. Have Fun!", "repo": "https://github.com/CodingFreak234/Fortress-Fighter-Sprig-game", "demo": "https://sprig.hackclub.com/share/IgY4OhjZCEx4bOdCrc6c"}, {"ship_num": 2, "ts": "2026-09-08T02:26:07Z", "hours": 12.0, "multiplier": 2.33, "payout": 28, "blessing": "neutral", "text": "I made a basic RPG in sprig! It was really hard, especially since, this was my first real JavaScript project. I think the game turned out great, and I hope you enjoy it.", "repo": "https://github.com/CodingFreak234/Fortress-Fighter-Sprig-game", "demo": "https://sprig.hackclub.com/share/IgY4OhjZCEx4bOdCrc6c"}]...
|
[{"post_id": 72821, "ts": "202 [{"post_id": 72821, "ts": "2026-09-23T20:09:39Z", "hours": 0.4758, "text": "Mistakes were made… specifically the one were I forgot to tell anyone how to play my game. So here it is, and I will also include it in the second ship as well. Oh, and I added it to the read me as well. Plus, I changed the name, because it really isn’t an rpg. I updated the placement of the health and score displays as well because I needed time to make a devlog so I can ship again. controls are wasd to move/rotate. Use L to attack the bugs with long range blasts, and K to hit them with short range ones."}, {"post_id": 63981, "ts": "2026-09-08T02:23:44Z", "hours": 1.2344, "text": "I’M DONE!!! I finished the modifications, made a repository for the project, and I’m going to ship it. (This took me way too long…)"}, {"post_id": 56183, "ts": "2026-08-27T20:24:33Z", "hours": 1.89, "text": "Over the past week or so, I reworked the controls. I did this so I could add some sort of long range weapon. the long range weapon would be able to hit more enemies with longer range, but would also do less damage. It was a lot of trial and error, and I’m still not done. I need to add the script where the enemies get damaged, but only part way. I also need to make it so that the long range blasts get removed from the screen after a second."}, {"post_id": 38577, "ts": "2026-08-01T01:51:24Z", "hours": 1.0628, "text": "Today I fixed a bug where the enemies in my game weren’t spawning at the very top of the playing field, they were spawning a little below it. After that I fixed a potential bug about being able to move the character out of bounds, and a very real bug about the program trying to spawn an attack sprite out of bounds. In fixing that, I also restrained the player a little more, making it harder to farm the enemies. Finally, I tried to add a theme song, but either something with the software didn’t work, or I have just failed to see the exit button for three or four days strait. The problem is likely that second option."}, {"post_id": 26324, "ts": "2026-07-11T01:50:56Z", "hours": 2.5386, "text": "I worked a lot on my Sprig RPG today, and got a lot of work done. I also got the project done. For those of you who are familiar with sprig, the game will be released there soon (hopefully tommorrow). However, lets go through what I did today. First off, I updated the player character from a large blue block to a blue circle with an orange outline. second, I added a castle for the player to defend. I also made it fairly difficult for players to puppy gaurd one segment of the castle. Finnally, I made it so that the game gets progressively harder. That’s what I did today. Enjoy!"}, {"post_id": 25588, "ts": "2026-07-09T22:45:30Z", "hours": 0.5617, "text": "Today I did a lot of debugging and solved all known problems with the game. I (finally) fixed the health counter and made the blasts disappear shortly after they are fired. finally, I regulated the numbers of enemies to make them more manageable. Next time I’m going to do the final graphic design and then add some sort of castle for the player to defend. Enjoy!"}, {"post_id": 24469, "ts": "2026-07-08T01:24:56Z", "hours": 1.4217, "text": "I worked on debugging for both yesterday and today. I had one particular problem where the player could attack the enemies in the game, but the attack would do nothing to the enemy. I fixed that, and now I only have a few more bugs to fix. Right now, I still have to fix the health counter, and then I have to figure out how to make the blasts disappear about a half-second after the player brings them into existence. Enjoy!"}, {"post_id": 18862, "ts": "2026-06-30T01:59:26Z", "hours": 0.8964, "text": "I worked on fighting mechanics today for my sprig RPG. I have it so that you can blast the enemy sprites with the IJKL buttons, and then move around with the WASD buttons. There was a lot of tweaking in the code today, but it works. I haven’t fixed the health counter yet, but I think I know what’s wrong, and I plan to fix it soon. Enjoy!"}, {"post_id": 16059, "ts": "2026-06-26T02:54:05Z", "hours": 1.4053, "text": "I continued to work on the Sprig RPG today. Initially, I had planned for there to be some kind of wall building mechanic in the game, but I realized that might be a little over my head, so I put that on the shelf for now. I created an initial game loop today, and it’s working okay. The one problem I’ve run into is the health counter. In the game, you start at 10 health I tried to make it so that after every hit you go down by one, but after the first hit you go up to 90, and then it counts down by ten after that. I’m going to try and figure that out next week. Enjoy!"}, {"post_id": 14812, "ts": "2026-06-24T01:40:09Z", "hours": 0.9139, "text": "I started on a basic RPG in sprig. To start off I did preliminary graphic design, and then I coded the wasd controls."}]...
|
Title: Fortress Fighter by @codingfreak234 | Stard Title: Fortress Fighter by @codingfreak234 | Stardance
Devlogs:
I started on a basic RPG in sprig. To start off I did preliminary graphic design, and then I coded the wasd controls.
I continued to work on the Sprig RPG today. Initially, I had planned for there to be some kind of wall building mechanic in the game, but I realized that might be a little over my head, so I put that on the shelf for now. I created an initial game loop today, and it’s working okay. The one problem I’ve run into is the health counter. In the game, you start at 10 health I tried to make it so that after every hit you go down by one, but after the first hit you go up to 90, and then it counts down by ten after that. I’m going to try and figure that out next week. Enjoy!
I worked on fighting mechanics today for my sprig RPG. I have it so that you can blast the enemy sprites with the IJKL buttons, and then move around with the WASD buttons. There was a lot of tweaking in the code today, but it works. I haven’t fixed the health counter yet, but I think I know what’s wrong, and I plan to fix it soon. Enjoy!
I worked on debugging for both yesterday and today. I had one particular problem where the player could attack the enemies in the game, but the attack would do nothing to the enemy. I fixed that, and now I only have a few more bugs to fix. Right now, I still have to fix the health counter, and then I have to figure out how to make the blasts disappear about a half-second after the player brings them into existence. Enjoy!
Today I did a lot of debugging and solved all known problems with the game. I (finally) fixed the health counter and made the blasts disappear shortly after they are fired. finally, I regulated the numbers of enemies to make them more manageable. Next time I’m going to do the final graphic design and then add some sort of castle for the player to defend. Enjoy!
I worked a lot on my Sprig RPG today, and got a lot of work done. I also got the project done. For those of you who are familiar with sprig, the game will be released there soon (hopefully tommorrow). However, lets go through what I did today. First off, I updated the player character from a large blue block to a blue circle with an orange outline. second, I added a castle for the player to defend. I also made it fairly difficult for players to puppy gaurd one segment of the castle. Finnally, I made it so that the game gets progressively harder. That’s what I did today. Enjoy!
Today I fixed a bug where the enemies in my game weren’t spawning at the very top of the playing field, they were spawning a little below it. After that I fixed a potential bug about being able to move the character out of bounds, and a very real bug about the program trying to spawn an attack sprite out of bounds. In fixing that, I also restrained the player a little more, making it harder to farm the enemies. Finally, I tried to add a theme song, but either something with the software didn’t work, or I have just failed to see the exit button for three or four days strait. The problem is likely that second option.
Over the past week or so, I reworked the controls. I did this so I could add some sort of long range weapon. the long range weapon would be able to hit more enemies with longer range, but would also do less damage. It was a lot of trial and error, and I’m still not done. I need to add the script where the enemies get damaged, but only part way. I also need to make it so that the long range blasts get removed from the screen after a second.
I’M DONE!!! I finished the modifications, made a repository for the project, and I’m going to ship it. (This took me way too long…)
Mistakes were made… specifically the one were I forgot to tell anyone how to play my game. So here it is, and I will also include it in the second ship as well. Oh, and I added it to the read me as well. Plus, I changed the name, because it really isn’t an rpg. I updated the placement of the health and score displays as well because I needed time to make a devlog so I can ship again. controls are wasd to move/rotate. Use L to attack the bugs with long range blasts, and K to hit them with short range ones.
Ships:
I made a basic RPG in sprig! It was really hard, especially since, this was my first real JavaScript project. I think the game turned out great, and I hope you enjoy it.
I made some mistakes. Mainly, I wrote a terrible readme(oops), and completely forgot to tell anyone how to play the game. Also, I had it named as a RPG, which it is not. And now, after fixing these, I’m ready to re-release. To avoid a repeat: Use WASD to move Use L to launch a long range blast in the direction of travel Use K to launch a short range blast in the direction of travel I really hope I didn’t miss anything that needed to be fixed. Have Fun!...
|
1793001160.2607045
|
1793087560.2607045
|
|
25209
|
Partner Compatibility Evaluator by @naman0410 | St Partner Compatibility Evaluator by @naman0410 | Stardance...
|
naman0410
|
2
|
7.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-05T01:36:42Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project is a fun Love Compatibility Calculator that estimates how compatible two people are by combining different factors instead of relying on a single random score. It considers multiple aspects to generate a result that feels more engaging and personalized. While building it, one of the biggest challenges was deciding how to balance different calculations so that the results remained interesting without feeling completely unrealistic. I also spent time improving the user interface, making it simpler to use, and updating the songs and preferences based on user feedback to create a better overall experience. Another challenge was ensuring that all the calculations worked together smoothly and produced consistent results. The goal is for people to use this project as a light-hearted and entertaining experience rather than a serious prediction of relationships. I hope users enjoy comparing results with friends, exploring different matches, and having fun while interacting with the application.", "repo": "https://github.com/modinaman099/Love-compatibility-Calculator-", "demo": "https://agent-6a3d0091dfe7cb239d1e0--dapper-genie-1ea83f.netlify.app/"}, {"ship_num": 2, "ts": "2026-06-25T16:46:04Z", "hours": 5.0, "multiplier": 4.73, "payout": 23, "blessing": "neutral", "text": "First of all, this project is not only for you and your girlfriend, but also you and your bros . If you don’t have a girlfriend, you feel me. Now let’s talk about work, I have made this calculator based on the theory that people with same taste, personality and interest tend to have good time together. Through this project, you can analyze with whom do you suit the best, because this includes songs, real-life experiences and food. Aspects like date of birth and difference between the ages of the people also matters in this calculator because this defines the gap of generations that can create problems in the relationship. I hope you like my work and use it with your bros (or girlfriend, if you have one 😜)", "repo": "https://github.com/modinaman099/Love-compatibility-Calculator-", "demo": "https://agent-6a3d0091dfe7cb239d1e0--dapper-genie-1ea83f.netlify.app/"}]...
|
[{"post_id": 41086, "ts": "202 [{"post_id": 41086, "ts": "2026-08-05T01:33:52Z", "hours": 2.0, "text": "This time, I focused on improving the overall user experience based on the feedback I received. I updated the UI to make it cleaner, more intuitive, and visually appealing. I also changed the song preferences to include tracks that are more popular and recognizable to people around the world, making the project feel more inclusive. These changes were made to ensure the application is easier to use and better suited for a global audience."}, {"post_id": 15734, "ts": "2026-06-25T16:31:02Z", "hours": 3.0, "text": "I just have to make some changes in the UI of the website . Also i have to clean up my code from unwanted comments"}, {"post_id": 15567, "ts": "2026-06-25T09:47:30Z", "hours": 1.0, "text": "Most the things to be asked from the both are inputed . The UI design and debugging is left"}, {"post_id": 15235, "ts": "2026-06-24T18:56:03Z", "hours": 0.0, "text": "I have decided the factors that will be taken for the relationship compatibility predictor"}]...
|
Title: Partner Compatibility Evaluator by @naman04 Title: Partner Compatibility Evaluator by @naman0410 | Stardance
Devlogs:
I have decided the factors that will be taken for the relationship compatibility predictor
Most the things to be asked from the both are inputed . The UI design and debugging is left
I just have to make some changes in the UI of the website . Also i have to clean up my code from unwanted comments
This time, I focused on improving the overall user experience based on the feedback I received. I updated the UI to make it cleaner, more intuitive, and visually appealing. I also changed the song preferences to include tracks that are more popular and recognizable to people around the world, making the project feel more inclusive. These changes were made to ensure the application is easier to use and better suited for a global audience.
Ships:
First of all, this project is not only for you and your girlfriend, but also you and your bros . If you don’t have a girlfriend, you feel me. Now let’s talk about work, I have made this calculator based on the theory that people with same taste, personality and interest tend to have good time together. Through this project, you can analyze with whom do you suit the best, because this includes songs, real-life experiences and food. Aspects like date of birth and difference between the ages of the people also matters in this calculator because this defines the gap of generations that can create problems in the relationship. I hope you like my work and use it with your bros (or girlfriend, if you have one 😜)
This project is a fun Love Compatibility Calculator that estimates how compatible two people are by combining different factors instead of relying on a single random score. It considers multiple aspects to generate a result that feels more engaging and personalized. While building it, one of the biggest challenges was deciding how to balance different calculations so that the results remained interesting without feeling completely unrealistic. I also spent time improving the user interface, making it simpler to use, and updating the songs and preferences based on user feedback to create a better overall experience. Another challenge was ensuring that all the calculations worked together smoothly and produced consistent results. The goal is for people to use this project as a light-hearted and entertaining experience rather than a serious prediction of relationships. I hope users enjoy comparing results with friends, exploring different matches, and having fun while interacting with the application....
|
1792878799.499168
|
1793742799.499168
|
|
25275
|
tuxiclick by @Tuxilio | Stardance
|
Tuxilio
|
2
|
8.0
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T07:45:00Z", "hours": 2.0, "multiplier": 8.04, "payout": 12, "blessing": "neutral", "text": "I made a penguin-themed cookie clicker! It is really basic for now, but I think it is quite nice :) I am really proud of the penguin animation which I have done by myself. You can buy “git commit” to save your state using cookies ;) I think the shopitems are now more equally distributed. Thanks for the feedback! If you have bought the console, you can set the var count to anything you want, for example count = 10000 . It’s just a javascript console. Don’t forget to sync the UI by clicking the penguin or running the function sync() :)", "repo": "https://codeberg.org/Tuxilio/tuxiclick", "demo": "https://tuxilio.codeberg.page/tuxiclick"}, {"ship_num": 2, "ts": "2026-06-28T21:22:09Z", "hours": 6.0, "multiplier": 4.57, "payout": 14, "blessing": "neutral", "text": "I made a penguin-themed cookie clicker! It is really basic for now, but I think it is quite nice :) I am really proud of the penguin animation which I have done by myself. If you have bought the console, you can set the var count to anything you want, for example count = 1000 . It’s just a javascript console. Don’t forget to sync the UI by clicking the penguin or running the function sync() :)", "repo": "https://codeberg.org/Tuxilio/tuxiclick", "demo": "https://tuxilio.codeberg.page/tuxiclick"}]...
|
[{"post_id": 23982, "ts": "202 [{"post_id": 23982, "ts": "2026-07-07T07:42:32Z", "hours": 0.5797, "text": "I added the new shopitems CI/CD Pipeline, Code Optimizer and API Integration and Git Commit and also fixed the rm-rf shopitem. I also added a multiplier when you rm -rf everything 🎉"}, {"post_id": 23379, "ts": "2026-07-06T09:39:14Z", "hours": 0.4186, "text": "I added a function to save the current count and owned items in a cookie so your game gets restored when reloading :)"}, {"post_id": 23366, "ts": "2026-07-06T09:10:21Z", "hours": 0.5197, "text": "I added a better readme and a new shopitem: a confetti animation when you click 🎉"}, {"post_id": 17921, "ts": "2026-06-28T21:15:24Z", "hours": 2.3664, "text": "I created a terminal you can drag around, a panel with your owned items and nice new shop items :)"}, {"post_id": 16282, "ts": "2026-06-26T14:05:59Z", "hours": 2.035, "text": "I added a shop! It isn’t really done yet, but it is built modular so I can just specify what action to run when you buy it, how many of these you can buy, and I added a mobile view!"}, {"post_id": 15232, "ts": "2026-06-24T18:49:26Z", "hours": 0.6347, "text": "I added an image to click on with a nice selfmade click animation (based on an svg) 🎉 🎉 🎉"}, {"post_id": 15179, "ts": "2026-06-24T17:38:23Z", "hours": 0.8894, "text": "I’m working on a funny clicker game written in javascript with some html and css. I finished the basic page with just a simple button and counter. The whole thing is deployed on Codeberg Pages: https://tuxilio.codeberg.page/tuxiclick/"}]...
|
Title: tuxiclick by @Tuxilio | Stardance
Devlogs: Title: tuxiclick by @Tuxilio | Stardance
Devlogs:
I’m working on a funny clicker game written in javascript with some html and css. I finished the basic page with just a simple button and counter. The whole thing is deployed on Codeberg Pages: https://tuxilio.codeberg.page/tuxiclick/
I added an image to click on with a nice selfmade click animation (based on an svg) 🎉 🎉 🎉
I added a shop! It isn’t really done yet, but it is built modular so I can just specify what action to run when you buy it, how many of these you can buy, and I added a mobile view!
I created a terminal you can drag around, a panel with your owned items and nice new shop items :)
I added a better readme and a new shopitem: a confetti animation when you click 🎉
I added a function to save the current count and owned items in a cookie so your game gets restored when reloading :)
I added the new shopitems CI/CD Pipeline, Code Optimizer and API Integration and Git Commit and also fixed the rm-rf shopitem. I also added a multiplier when you rm -rf everything 🎉
Ships:
I made a penguin-themed cookie clicker! It is really basic for now, but I think it is quite nice :) I am really proud of the penguin animation which I have done by myself. If you have bought the console, you can set the var count to anything you want, for example count = 1000 . It’s just a javascript console. Don’t forget to sync the UI by clicking the penguin or running the function sync() :)
I made a penguin-themed cookie clicker! It is really basic for now, but I think it is quite nice :) I am really proud of the penguin animation which I have done by myself. You can buy “git commit” to save your state using cookies ;) I think the shopitems are now more equally distributed. Thanks for the feedback! If you have bought the console, you can set the var count to anything you want, for example count = 10000 . It’s just a javascript console. Don’t forget to sync the UI by clicking the penguin or running the function sync() :)...
|
1793087571.6677036
|
1793173971.6677036
|
|
25302
|
Fantasy Football Draft Assistant by @atharva02 | S Fantasy Football Draft Assistant by @atharva02 | Stardance...
|
atharva02
|
2
|
11.0
|
94
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-01T02:31:11Z", "hours": 6.0, "multiplier": 7.4, "payout": 40, "blessing": "neutral", "text": "My project is Fantasy Football draft assistant which will give you pick suggestions during your Fantasy Draft. The purpose of this second ship is because Sleeper draft integration is here! Following the usage instructions from my GitHub README, you can try out this new feature yourself. The hardest about this new feature was figuring out why it took so long to sync and finding a way to minimize this lag. However, I am proud that, despite a small lag, it still works and is able to quickly gather your Sleeper draft info. One thing to note when using this feature, my app only supports certain positions so adding unique FLEX positions that isn’t the standard WR/RB/TE, will not work. Another thing to note is that this is unfortunately not mobile friendly, but let me know through reviews if this is a wanted feature. Enjoy!", "repo": "https://github.com/atharva-277/Fantasy-Football-Drafter", "demo": "https://ffdrafter.atharva02.hackclub.app/"}, {"ship_num": 2, "ts": "2026-07-20T20:05:36Z", "hours": 5.0, "multiplier": 11.38, "payout": 54, "blessing": "neutral", "text": "My project is a fantasy football draft assistant which gives you suggestions on who to draft based on the current state of the draft and the players themselves. The most challenging part of this was finding the right medium within the calculation algorithm. It was difficult figuring out how to suggest great players at a position you’ve already drafted but I think I’ve found the right medium now. I’m most proud of the fact that I was able to power through that exact struggle and be able to ship now that the right algorithm is, hopefully, in place. The link is live being hosted through Render. One thing to note with Render is that if there is slight inactivity, you may have to wait 40-60 seconds for it to load for the first time, but after it loads, there shouldn’t be any other hiccups. Enjoy!", "repo": "https://github.com/atharva-277/Fantasy-Football-Drafter", "demo": "https://ffdrafter.atharva02.hackclub.app/"}]...
|
[{"post_id": 37857, "ts": "202 [{"post_id": 37857, "ts": "2026-07-30T20:39:50Z", "hours": 1.9783, "text": "Devlog #7 Sleeper API integration is finally here! This took a while to get out, but I’m so happy that it’s finally here! The main limitation is that it’s based on draft ID, so it might be a hassle to find. However, I can’t control that as Sleeper is read-only API, which means I can’t allow for people to sign in and then access leagues and mock drafts that way. Regardless, it works really great based on my tests with the caveat that if you update the draft settings, you may need to refresh once or twice to ensure they’re updated on ffdrafter. Once you’re in the draft, the main thing you do is simply check back in and view suggestions on the side panel, manually logging picks is disabled since you’re doing that on Sleeper anyway! Another unfortunate caveat is that syncs do take a little bit(5-7 seconds) when others are auto-drafting and when the draft first starts. These are unfortunate side effects, but again they aren’t in my control as I don’t know how often Sleeper updates and sends drafts responses back. Yet, the feature still works even if it does take a small amount of time, so hope it works for anyone who uses it. Attaches is the UI for how the user inputs the Sleeper Draft ID."}, {"post_id": 35362, "ts": "2026-07-26T18:21:34Z", "hours": 2.5111, "text": "Devlog #6 A few more style updates have occurred since my last log. First, the font has changes to be a little more fancy, if that’s what you want to call it, but I think it looks nice for the site itself. Along with that depending on if you’re searching, seeing suggestions, or viewing top talent, different info appears when you click on the player. The commonality is showing the team logo and their tier. But when searching it only shows the top reason, when seeing suggestions it gives age and top 2 reasons, and viewing top talent also shows age along with position(jersey number). Other than that it’s still basically the same since functionality wise, nothing really changed. I hope to start implement the direct Sleeper API integration along with other sites if possible including ESPN and Yahoo Fantasy."}, {"post_id": 32644, "ts": "2026-07-21T22:39:38Z", "hours": 1.0361, "text": "Devlog #5 So I was recently about to ship but it got recalled because I used Claude to do the whole UI and never touched up on it again, which is my fault completely. However, since then I have actually updated the entire UI by adding modular sections and more color by position points. It has the same dark tone as before, but there’s a new purple accent now to make it less generic. Along with that, every position is basically customized by it’s own unique color as well, providing a connection beyond text. Other than that, text was made bigger, and font colors were made lighter to make them pop out more against the dark background. Attached is how the starting page looks like now."}, {"post_id": 31971, "ts": "2026-07-20T20:00:14Z", "hours": 0.3911, "text": "Devlog #4 This devlog is the last before the first ship as the site is now officially live! The only change made between this log and the last is that you can choose whether you have a snake or linear draft. Other than that, hosting is being done through Render(hopefully an accepted hosting platform) and the link is officially live at: https://fantasy-football-drafter.onrender.com/ . Attached is how the menu looks now that you can choose draft type."}, {"post_id": 31578, "ts": "2026-07-20T02:48:36Z", "hours": 1.6669, "text": "Devlog #3 So unfortunately, I wasn’t able to connect to Sleeper API, because I was busy updating the value algorithm to make it sure it worked well. Earlier, it was favoring positions too much and wasn’t realizing that starters matter more than bench. I think I’ve found the perfect medium between balancing both maximizing starting talent and a decent bench lineup. I expect to ship within the next few days once I upload a live link and maybe add a feature to differentiate between snake and linear draft along with adding more position customization perhaps. Other than that, this project will probably ship with just a manual mode at first, and then have another ship with Sleeper API connected to it. Attached is a sample of how the UI looks when updating draft picks based on what’s going on in."}, {"post_id": 29229, "ts": "2026-07-16T00:26:55Z", "hours": 1.6556, "text": "Devlog #2 Well, the initial part of the project is completed. There is now a value calculation algorithm in place that ranks each player based on a number of metrics: current draft pick, player ranking, bye week, and roster needs. After that, it gives 8 suggested players in the menu, ranked by points, and also gives warnings about possible reaches and the current pick, but also symbols that could signify a steal at the current pick. Additional testing will be conducted in regards to how well the system seems to be working by simulating a separate mock draft with online resources. My next plan after this, if the system is working correctly, is to connect it seamlessly with Sleeper, as stated in Devlog #1. Attached is how the user interface currently looks after starting the draft."}, {"post_id": 27491, "ts": "2026-07-13T03:09:04Z", "hours": 1.0464, "text": "Devlog #1 This is the start of a fantasy football draft assistant project I’m working on. Currently, it doesn’t do much as most of the time was spent on gathering data for the three main scoring types: PPR, Half-PPR, and Standard, along with the player database from Sleeper. The plan is to eventually find an algorithm to calculate expected value for each player based on different data points: your draft position, current draft pick, player data in general, along with other external factors such as current roster. Also I’m only working on the manual mode right now where all picks have to be manually put in but since Sleeper has a free API(used for player data), I hope to eventually add a seamless integration where it can directly link to a Sleeper League. Provided below is the starter UI menu but will be changed over time as more features are added."}]...
|
Title: Fantasy Football Draft Assistant by @atharv Title: Fantasy Football Draft Assistant by @atharva02 | Stardance
Devlogs:
Devlog #1 This is the start of a fantasy football draft assistant project I’m working on. Currently, it doesn’t do much as most of the time was spent on gathering data for the three main scoring types: PPR, Half-PPR, and Standard, along with the player database from Sleeper. The plan is to eventually find an algorithm to calculate expected value for each player based on different data points: your draft position, current draft pick, player data in general, along with other external factors such as current roster. Also I’m only working on the manual mode right now where all picks have to be manually put in but since Sleeper has a free API(used for player data), I hope to eventually add a seamless integration where it can directly link to a Sleeper League. Provided below is the starter UI menu but will be changed over time as more features are added.
Devlog #2 Well, the initial part of the project is completed. There is now a value calculation algorithm in place that ranks each player based on a number of metrics: current draft pick, player ranking, bye week, and roster needs. After that, it gives 8 suggested players in the menu, ranked by points, and also gives warnings about possible reaches and the current pick, but also symbols that could signify a steal at the current pick. Additional testing will be conducted in regards to how well the system seems to be working by simulating a separate mock draft with online resources. My next plan after this, if the system is working correctly, is to connect it seamlessly with Sleeper, as stated in Devlog #1. Attached is how the user interface currently looks after starting the draft.
Devlog #3 So unfortunately, I wasn’t able to connect to Sleeper API, because I was busy updating the value algorithm to make it sure it worked well. Earlier, it was favoring positions too much and wasn’t realizing that starters matter more than bench. I think I’ve found the perfect medium between balancing both maximizing starting talent and a decent bench lineup. I expect to ship within the next few days once I upload a live link and maybe add a feature to differentiate between snake and linear draft along with adding more position customization perhaps. Other than that, this project will probably ship with just a manual mode at first, and then have another ship with Sleeper API connected to it. Attached is a sample of how the UI looks when updating draft picks based on what’s going on in.
Devlog #4 This devlog is the last before the first ship as the site is now officially live! The only change made between this log and the last is that you can choose whether you have a snake or linear draft. Other than that, hosting is being done through Render(hopefully an accepted hosting platform) and the link is officially live at: https://fantasy-football-drafter.onrender.com/ . Attached is how the menu looks now that you can choose draft type.
Devlog #5 So I was recently about to ship but it got recalled because I used Claude to do the whole UI and never touched up on it again, which is my fault completely. However, since then I have actually updated the entire UI by adding modular sections and more color by position points. It has the same dark tone as before, but there’s a new purple accent now to make it less generic. Along with that, every position is basically customized by it’s own unique color as well, providing a connection beyond text. Other than that, text was made bigger, and font colors were made lighter to make them pop out more against the dark background. Attached is how the starting page looks like now.
Devlog #6 A few more style updates have occurred since my last log. First, the font has changes to be a little more fancy, if that’s what you want to call it, but I think it looks nice for the site itself. Along with that depending on if you’re searching, seeing suggestions, or viewing top talent, different info appears when you click on the player. The commonality is showing the team logo and their tier. But when searching it only shows the top reason, when seeing suggestions it gives age and top 2 reasons, and viewing top talent also shows age along with position(jersey number). Other than that it’s still basically the same since functionality wise, nothing really changed. I hope to start implement the direct Sleeper API integration along with other sites if possible including ESPN and Yahoo Fantasy.
Devlog #7 Sleeper API integration is finally here! This took a while to get out, but I’m so happy that it’s finally here! The main limitation is that it’s based on draft ID, so it might be a hassle to find. However, I can’t control that as Sleeper is read-only API, which means I can’t allow for people to sign in and then access leagues and mock drafts that way. Regardless, it works really great based on my tests with the caveat that if you update the draft settings, you may need to refresh once or twice to ensure they’re updated on ffdrafter. Once you’re in the draft, the main thing you do is simply check back in and view suggestions on the side panel, manually logging picks is disabled since you’re doing that on Sleeper anyway! Another unfortunate caveat is that syncs do take a little bit(5-7 seconds) when others are auto-drafting and when the draft first starts. These are unfortunate side effects, but again they aren’t in my control as I don’t know how often Sleeper updates and sends drafts responses back. Yet, the feature still works even if it does take a small amount of time, so hope it works for anyone who uses it. Attaches is the UI for how the user inputs the Sleeper Draft ID.
Ships:
My project is a fantasy football draft assistant which gives you suggestions on who to draft based on the current state of the draft and the players themselves. The most challenging part of this was finding the right medium within the calculation algorithm. It was difficult figuring out how to suggest great players at a position you’ve already drafted but I think I’ve found the right medium now. I’m most proud of the fact that I was able to power through that exact struggle and be able to ship now that the right algorithm is, hopefully, in place. The link is live being hosted through Render. One thing to note with Render is that if there is slight inactivity, you may have to wait 40-60 seconds for it to load for the first time, but after it loads, there shouldn’t be any other hiccups. Enjoy!
My project is Fantasy Football draft assistant which will give you pick suggestions during your Fantasy Draft. The purpose of this second ship is because Sleeper draft integration is here! Following the usage instructions from my GitHub README, you can try out this new feature yourself. The hardest about this new feature was figuring out why it took so long to sync and finding a way to minimize this lag. However, I am proud that, despite a small lag, it still works and is able to quickly gather your Sleeper draft info. One thing to note when using this feature, my app only supports certain positions so adding unique FLEX positions that isn’t the standard WR/RB/TE, will not work. Another thing to note is that this is unfortunately not mobile friendly, but let me know through reviews if this is a wanted feature. Enjoy!...
|
1792878511.5076895
|
1793742511.5076895
|
|
25359
|
SkyOS by @samraat-756 | Stardance
|
samraat-756
|
2
|
12.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T06:55:26Z", "hours": 2.0, "multiplier": 5.59, "payout": 12, "blessing": "neutral", "text": "As a follow up to WebOS 1, I have added 3 more features to SkyOS, aswell as refined and simplified some redundant logic that runs the foundation of this web Operating System. The features added were: 1 - A desktop switcher for multi-tasking up to 5 different workspaces 2 - A weather widget in the top right corner displaying the current weather in the area 3 - A flight radar widget in the bottom right corner displaying the number of aircraft in your area, aswell as the details of the closest aircraft to you I also re worked the script.js logic to keep each app local to its designated workspace, so that even if you switch to another workspace, that app doesn’t close, and stays running in the background.", "repo": "https://github.com/samraatpchauhan-eng/SkyOS", "demo": "https://samraatpchauhan-eng.github.io/SkyOS/"}, {"ship_num": 2, "ts": "2026-06-28T18:54:19Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is SkyOS. An aviation themed Web Operating System, to turn your desktop into a virtual cockpit! For the asthetics I went with a clean frosted glass look, with aviation themed backgrounds and a grey color scheme. The most challenging part of this project was getting the formatting of the windows to line up with each other, and making the logic for each app. This was my first time working with html, so WebOS 1 was a learning experience for me. Overall I am pretty impressed with how SkyOS came out though.", "repo": "https://github.com/samraatpchauhan-eng/SkyOS", "demo": "https://samraatpchauhan-eng.github.io/SkyOS/"}]...
|
[{"post_id": 57117, "ts": "202 [{"post_id": 57117, "ts": "2026-08-29T06:49:33Z", "hours": 0.8039, "text": "My 3rd feature added to SkyOS is a nice little flight radar widget found at the bottom right corner of the desktop. I utilized the OpenSky API to display the number of aircraft in your area, and the callsign and altitude of the closest plane to your location. I will say the visual aspects of this feature was pretty easy to create, however is was the logic behind this that took some time to understand. Overall, I’m pretty happy about this feature! The only gripe I have is the limited amount of times you can call data from it, so I had to set the refresh rate to 60 seconds, which is a little slow."}, {"post_id": 46077, "ts": "2026-08-13T01:07:08Z", "hours": 0.7839, "text": "After a little bit of playing around with js and getting some help from online tutorials, I was able to create a workspace system, similarly found on most operating systems like Windows 11 or most Linux distros. You can use this for multitasking and can have up to 5 workspaces open at once with different apps opened in each one, without fear of them closing when switching desktops!"}, {"post_id": 46049, "ts": "2026-08-12T23:54:15Z", "hours": 0.5789, "text": "I have added a new feature for SkyOS! Using Meteomatic’s Open Meteo API, I was able to implement a weather widget in the top right corner of the desktop workspace, so you can see the current temperature in the area you are currently in."}, {"post_id": 17297, "ts": "2026-06-28T00:50:23Z", "hours": 0.6519, "text": "I have finally finished making the ACP (Audio Control Panel) app for SkyOS! It features 3 songs from msfs2020 and fsx, and features a song time display, and controls to skip and go back a track, and a play/pause button ofc."}, {"post_id": 17087, "ts": "2026-06-27T19:01:42Z", "hours": 0.9669, "text": "Finished creating the wallpapers app, to switch the background to 3 different images, a Boeing 777, Airbus a350, or F-22."}, {"post_id": 16778, "ts": "2026-06-27T07:44:41Z", "hours": 0.7544, "text": "At the time of making this devlog it is 12:14am. I am lwk exhausted, but just finished building my second, and so far most complicated app for SkyOS (in terms of the logic). It is a simple but functional Stopwatch cleverly called “Chrono”. I also want to mention ~1 hour out of the 3 hours logged in the second devlog, was spent building the chrono app"}, {"post_id": 16755, "ts": "2026-06-27T06:37:46Z", "hours": 3.9269, "text": "After a bit of struggle getting the formatting of the elements of SkyOS to work properly, I have finally finished my first app! I call it FlightLog, which is a place to type anything you want, and save it. It works similar to Windows 11’s NotePad application, but simpler."}, {"post_id": 15957, "ts": "2026-06-25T22:26:57Z", "hours": 3.4564, "text": "Finally got a hang of html, and JS! Curently was able to build the basic framework of the onboarding window, and the top bar of SkyOS. I also put a stock image of a Soutwest 737-800 as the background, as it appropriately fits the theme of SkyOS."}]...
|
Title: SkyOS by @samraat-756 | Stardance
Devlogs: Title: SkyOS by @samraat-756 | Stardance
Devlogs:
Finally got a hang of html, and JS! Curently was able to build the basic framework of the onboarding window, and the top bar of SkyOS. I also put a stock image of a Soutwest 737-800 as the background, as it appropriately fits the theme of SkyOS.
After a bit of struggle getting the formatting of the elements of SkyOS to work properly, I have finally finished my first app! I call it FlightLog, which is a place to type anything you want, and save it. It works similar to Windows 11’s NotePad application, but simpler.
At the time of making this devlog it is 12:14am. I am lwk exhausted, but just finished building my second, and so far most complicated app for SkyOS (in terms of the logic). It is a simple but functional Stopwatch cleverly called “Chrono”. I also want to mention ~1 hour out of the 3 hours logged in the second devlog, was spent building the chrono app
Finished creating the wallpapers app, to switch the background to 3 different images, a Boeing 777, Airbus a350, or F-22.
I have finally finished making the ACP (Audio Control Panel) app for SkyOS! It features 3 songs from msfs2020 and fsx, and features a song time display, and controls to skip and go back a track, and a play/pause button ofc.
I have added a new feature for SkyOS! Using Meteomatic’s Open Meteo API, I was able to implement a weather widget in the top right corner of the desktop workspace, so you can see the current temperature in the area you are currently in.
After a little bit of playing around with js and getting some help from online tutorials, I was able to create a workspace system, similarly found on most operating systems like Windows 11 or most Linux distros. You can use this for multitasking and can have up to 5 workspaces open at once with different apps opened in each one, without fear of them closing when switching desktops!
My 3rd feature added to SkyOS is a nice little flight radar widget found at the bottom right corner of the desktop. I utilized the OpenSky API to display the number of aircraft in your area, and the callsign and altitude of the closest plane to your location. I will say the visual aspects of this feature was pretty easy to create, however is was the logic behind this that took some time to understand. Overall, I’m pretty happy about this feature! The only gripe I have is the limited amount of times you can call data from it, so I had to set the refresh rate to 60 seconds, which is a little slow.
Ships:
This is SkyOS. An aviation themed Web Operating System, to turn your desktop into a virtual cockpit! For the asthetics I went with a clean frosted glass look, with aviation themed backgrounds and a grey color scheme. The most challenging part of this project was getting the formatting of the windows to line up with each other, and making the logic for each app. This was my first time working with html, so WebOS 1 was a learning experience for me. Overall I am pretty impressed with how SkyOS came out though.
As a follow up to WebOS 1, I have added 3 more features to SkyOS, aswell as refined and simplified some redundant logic that runs the foundation of this web Operating System. The features added were: 1 - A desktop switcher for multi-tasking up to 5 different workspaces 2 - A weather widget in the top right corner displaying the current weather in the area 3 - A flight radar widget in the bottom right corner displaying the number of aircraft in your area, aswell as the details of the closest aircraft to you I also re worked the script.js logic to keep each app local to its designated workspace, so that even if you switch to another workspace, that app doesn’t close, and stays running in the background....
|
1793105617.2732987
|
1793192017.2732987
|
|
25390
|
WarioWare Godot by @GeorgeSun | Stardance
|
GeorgeSun
|
2
|
17.0
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-09T15:11:22Z", "hours": 3.0, "multiplier": 6.02, "payout": 14, "blessing": "neutral", "text": "I made a WarioWare themed game with 9 minigames in total. You have to beat as many minigames as possible before running out of lives. What I found was challenging was designing and creating my own minigames. What I am most proud of is how polished the game feels especially how animated the menus feel. The controls are intuitive and easy to learn as in most of the minigames, you only use the mouse. I also added onto the second version of the project local multiplayer so that you can play with your friends. Player 1 takes WASD and Player 2 takes the arrow keys. You can play the game right now by clicking the try project button below!", "repo": "https://github.com/Geofoods/Wario-Ware-Game-Version-2", "demo": "https://georgecodes.itch.io/warioware-godot"}, {"ship_num": 2, "ts": "2026-06-27T23:08:53Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WarioWare themed game with 9 minigames in total. You have to beat as many minigames as possible before running out of lives. What I found was challenging was designing and creating my own minigames. What I am most proud of is how polished the game feels especially how animated the menus feel. The controls are intuitive and easy to learn as in most of the minigames, you only use the mouse.", "repo": "https://github.com/Geofoods/Wario-Ware-Game-Version-2", "demo": "https://georgecodes.itch.io/warioware-godot"}]...
|
[{"post_id": 44025, "ts": "202 [{"post_id": 44025, "ts": "2026-08-09T15:07:58Z", "hours": 2.9356, "text": "I made a two player gamemode which includes two player versions of all of the minigames. After one of the player wins the best out of 10, it shows it in the new multiplayer end screen"}, {"post_id": 17175, "ts": "2026-06-27T21:36:58Z", "hours": 1.0933, "text": "Added three more minigames: rock breaking, geometry dash, and quick math"}, {"post_id": 17029, "ts": "2026-06-27T17:16:14Z", "hours": 1.0986, "text": "Finished and polished my game by adding audio and sprucing up the menus with animations. You can try the demo now! https://georgecodes.itch.io/warioware-godot"}, {"post_id": 16641, "ts": "2026-06-27T02:05:06Z", "hours": 2.5589, "text": "Made ui look a lot better, added settings menu, game over menu, added find luigi minigame, space invaders minigame, and pong minigame. Replaced platformer minigame with doodle jump minigame"}, {"post_id": 15977, "ts": "2026-06-25T22:57:07Z", "hours": 1.4875, "text": "Created clicker and flappy bird game, also created a scrolling background on all levels"}, {"post_id": 15277, "ts": "2026-06-24T20:18:07Z", "hours": 7.7194, "text": "Finished Making the Main Menu and Level Scene"}]...
|
Title: WarioWare Godot by @GeorgeSun | Stardance
Title: WarioWare Godot by @GeorgeSun | Stardance
Devlogs:
Finished Making the Main Menu and Level Scene
Created clicker and flappy bird game, also created a scrolling background on all levels
Made ui look a lot better, added settings menu, game over menu, added find luigi minigame, space invaders minigame, and pong minigame. Replaced platformer minigame with doodle jump minigame
Finished and polished my game by adding audio and sprucing up the menus with animations. You can try the demo now! https://georgecodes.itch.io/warioware-godot
Added three more minigames: rock breaking, geometry dash, and quick math
I made a two player gamemode which includes two player versions of all of the minigames. After one of the player wins the best out of 10, it shows it in the new multiplayer end screen
Ships:
I made a WarioWare themed game with 9 minigames in total. You have to beat as many minigames as possible before running out of lives. What I found was challenging was designing and creating my own minigames. What I am most proud of is how polished the game feels especially how animated the menus feel. The controls are intuitive and easy to learn as in most of the minigames, you only use the mouse.
I made a WarioWare themed game with 9 minigames in total. You have to beat as many minigames as possible before running out of lives. What I found was challenging was designing and creating my own minigames. What I am most proud of is how polished the game feels especially how animated the menus feel. The controls are intuitive and easy to learn as in most of the minigames, you only use the mouse. I also added onto the second version of the project local multiplayer so that you can play with your friends. Player 1 takes WASD and Player 2 takes the arrow keys. You can play the game right now by clicking the try project button below!...
|
1792990066.1011558
|
1793076466.1011558
|
|
25605
|
My very own WebOS by @AwesomeFreshDay | Stardance
|
AwesomeFreshDay
|
2
|
10.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T22:27:16Z", "hours": 3.0, "multiplier": 1.17, "payout": 4, "blessing": "neutral", "text": "Created an embed game of the game I created during the Warioware mission to put into an app that is playable thanks to Itch.io features. Created background/wallpaper changer app, and a simple 3 seocnd laoding screen when entering the OS. What was challenging was coming upw ith new ideas to expand on the WebOS 1 when I started and having to work around my messy code. I had to use AI help with parts of debugging because the code was all over the place it is like 100 something lines that could be turned into probably less than half but point is I was able to proceed and work around it.", "repo": "https://github.com/AdamT2529/My-very-own-WebOS", "demo": "https://awesomefreshday.github.io/My-very-own-WebOS/"}, {"ship_num": 2, "ts": "2026-07-02T04:25:33Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "a website about cars. Understanding classes learning html css and making the desktop icons, and draggable windows were challenging. Classes especially were challenging.", "repo": "https://github.com/AdamT2529/My-very-own-WebOS", "demo": "https://awesomefreshday.github.io/My-very-own-WebOS/"}]...
|
[{"post_id": 39751, "ts": "202 [{"post_id": 39751, "ts": "2026-08-02T22:23:36Z", "hours": 0.6586, "text": "Created my wariogame app and included a playable game embed link into the OS luckily Itch io included embed links hwne you go to distribute in the options"}, {"post_id": 39301, "ts": "2026-08-02T05:55:29Z", "hours": 2.4083, "text": "Fixed/organized many parts of code by changing into classes. Worked on and added 2 new features which are a loading screen and background changer app"}, {"post_id": 20517, "ts": "2026-07-02T04:08:19Z", "hours": 0.2808, "text": "finally finished it the one new feature is a restart btuton which is just reshign the page but anyways lesson of the story i learned is to find the thin you are itnerested in because i didnt like this very much and it took a while consdiering that hte time for this mission woudl take around 2 hours 30 mins and i spent like 7 but i hope to find soemthign related to here on here that is something i would be passionate baout but hey the final projduct isnt that bad and i hope things going forward will be mroe smooth sialign since this is pretty much my first real projekzs tjcreated in hthos platforkm so i hope to find that thign i am interested in on here to continue pursuing and others should see what they would like on here to focus on anyways good luck to evyerhting and everyone"}, {"post_id": 20509, "ts": "2026-07-02T03:43:03Z", "hours": 6.0328, "text": "did some stuff but i accidently did the guide wrong so i am stuck in a rabbit hole following through the guide and having tot ake alternate path because i messed up on soemthing about the welcome screen i didnt knwo the author made some new one so i tried to use the welcome screen i already made in the introductiona nd then they started using div classes but it was hard tof ollow because one part they showed normal code and then the next was a bunch of new stuff and then they remvoed it to put in styles.css idk y it wasnt stated but maybe i follwoed hte guide wrong"}, {"post_id": 16657, "ts": "2026-06-27T02:35:34Z", "hours": 1.1081, "text": "I am beginner to coding and this is my barebones OS so far"}]...
|
Title: My very own WebOS by @AwesomeFreshDay | Sta Title: My very own WebOS by @AwesomeFreshDay | Stardance
Devlogs:
I am beginner to coding and this is my barebones OS so far
did some stuff but i accidently did the guide wrong so i am stuck in a rabbit hole following through the guide and having tot ake alternate path because i messed up on soemthing about the welcome screen i didnt knwo the author made some new one so i tried to use the welcome screen i already made in the introductiona nd then they started using div classes but it was hard tof ollow because one part they showed normal code and then the next was a bunch of new stuff and then they remvoed it to put in styles.css idk y it wasnt stated but maybe i follwoed hte guide wrong
finally finished it the one new feature is a restart btuton which is just reshign the page but anyways lesson of the story i learned is to find the thin you are itnerested in because i didnt like this very much and it took a while consdiering that hte time for this mission woudl take around 2 hours 30 mins and i spent like 7 but i hope to find soemthign related to here on here that is something i would be passionate baout but hey the final projduct isnt that bad and i hope things going forward will be mroe smooth sialign since this is pretty much my first real projekzs tjcreated in hthos platforkm so i hope to find that thign i am interested in on here to continue pursuing and others should see what they would like on here to focus on anyways good luck to evyerhting and everyone
Fixed/organized many parts of code by changing into classes. Worked on and added 2 new features which are a loading screen and background changer app
Created my wariogame app and included a playable game embed link into the OS luckily Itch io included embed links hwne you go to distribute in the options
Ships:
a website about cars. Understanding classes learning html css and making the desktop icons, and draggable windows were challenging. Classes especially were challenging.
Created an embed game of the game I created during the Warioware mission to put into an app that is playable thanks to Itch.io features. Created background/wallpaper changer app, and a simple 3 seocnd laoding screen when entering the OS. What was challenging was coming upw ith new ideas to expand on the WebOS 1 when I started and having to work around my messy code. I had to use AI help with parts of debugging because the code was all over the place it is like 100 something lines that could be turned into probably less than half but point is I was able to proceed and work around it....
|
1793094742.1233032
|
1793181142.1233032
|
|
25808
|
Goose Games by @Gabl | Stardance
|
Gabl
|
2
|
19.0
|
143
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T15:04:43Z", "hours": 13.0, "multiplier": 11.17, "payout": 143, "blessing": "neutral", "text": "Goose Games ship 2 This is a fairly simple WarioWare game, where you have to manage to beat 5 minigames to win. The Game currently features 7 Minigames: Platformer - eat the 3 Breads as fast as possible Clicker - eat all of the 6 Breads in time Click-Smasher - Honk at the human enough times in the timeframe Flappy-Goose - Reach a random score of points Don’t-Click - you don’t. Honk-Correctly - Hit the green area to honk correctly Jump - jump over a random amount of obstacles I added so much to the game since last ship, but here are some things I remember off the top of my head: WarioWare Music and SFX Settings Screen actually working lol 4 new minigames randomisation - for example in minigames but also in which order you get minigames Popup Text at the beginning of the minigame tons of bug fixes prob more Thanks for playing, hope you have fun!", "repo": "https://github.com/gabl18/WarioWare", "demo": "https://gabl18.itch.io/goose-games"}, {"ship_num": 2, "ts": "2026-06-28T20:07:08Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Goose Games You are a simple Goose that has a big appetite for Bread and annoying people. A simple WarioWare like game with fast paced minigames. Controls: WASD or Arrows to Move Space to jump Mouseclick The Game currently features 3 Minigames: Platformer - eat the 3 Breads as fast as possible Clicker - eat all of the 6 Breads in time Click-Smasher - Honk at the human enough times in the timeframe All art assets have been created by me - yes, even the font. I still have many plans to extend the games size, polish everthing, add more randomness and make more art. Created for Stardance Hackclub - Make a WarioWare Game. Thanks for playing, hope you have fun!", "repo": "https://github.com/gabl18/WarioWare", "demo": "https://gabl18.itch.io/goose-games"}]...
|
[{"post_id": 71248, "ts": "202 [{"post_id": 71248, "ts": "2026-09-20T14:59:28Z", "hours": 0.5531, "text": "Last Devlog before ship!Fixed some errors and bugs, such as the faulty hitbox for the 7th minigame and the intervention screen always showing the wrong level lol.Then also updated the readme and everything regarding the itch page."}, {"post_id": 70288, "ts": "2026-09-18T21:33:21Z", "hours": 2.8886, "text": "Fixing Stuff and more! Since last time I firstly added some sound effects to better indicate if you failed or not- for example if you fail the HONK CORRECTLY! Minigame its a different honk to when you win, or same for the new minigame I added- yes I added a new minigame: JUMP! : Here you must jump over some items I drew, had a lot of fun to draw these again, also drew some new Backgrounds and so on. I also added the actual controls and code for the settings to actually work, and also added credits there haha. Lastly I fixed a really annoying bug, that was driving me insane - the music wouldn’t Always work in the browser for whatever reason. After some digging the solution was surprisingly easy, just had to change the Default Playback type for audio in the project settings. I am glad that works now. Not much to go untill the second ship, Maybe I’ll add another minigame, or just ship it in the next devlog - we’ll see."}, {"post_id": 69548, "ts": "2026-09-17T08:53:27Z", "hours": 1.3675, "text": "Yippie, added another game- HONK CORRECTLY! In this game you just need to honk at the right moment to win. Seems pretty simple, but took me some time to get done."}, {"post_id": 69070, "ts": "2026-09-16T10:03:53Z", "hours": 0.3117, "text": "Last Devlog bugged I don’t know why but the last devlog bugged out and I sent it off before I finished writing it. Now I have made some really minor fixes to make this devlog but am still wondering how to fix others. But here are new features I added since the actual last devlog: Music: implemented actual warioware music, which did fit perfectly. It works perfect in godot, but I don’t know why, it doesn’t in the browser all the time - I have no idea how to fix that. Randomisation: Minigames now come in a random order and some minigames have variation - such as don’t press (length), annoy the human (click amount) and flappy goose (points amount). Oh, and you can’t get the same minigame back to back. Better Organisation: Changed the organisation of folders, scenes, etc. to be better bc it was a full nightmare before. Took longer than expected because it messed all the dependencies up - but I think it works now. New Minigame: Don’t Click - or else…. Also made some new art for this minigame which turned out great once again imo! Thanks for checking this devlog out, idk why that before happened but well yeah."}, {"post_id": 69054, "ts": "2026-09-16T09:36:39Z", "hours": 2.2619, "text": "More randomisation!"}, {"post_id": 67228, "ts": "2026-09-13T08:59:38Z", "hours": 3.22, "text": "Finally continued working on the game!! Made a flappy bird-like game - which took me way too long because I had many difficulties spawning in the chimneys. And also drawing the sprites took quite some time but I think it was definitely worth it - I am really happy with them"}, {"post_id": 20844, "ts": "2026-07-02T15:39:25Z", "hours": 2.1719, "text": "Made a lil explanation Text pop up before each minigame starting wich gave me a huge headache and still doesn’t really work like intended, also I have no idea why the quality is so bad or why I can’t adjust the size and its just bigger in some scenes and smaller in others. But I am waay too dumb to figure anything out it seems, have definitely wasted too much time on this text popup, might actually quit this, bc I am hella down cause nothing seems to work right I am trying to do ):"}, {"post_id": 17866, "ts": "2026-06-28T20:05:30Z", "hours": 1.8047, "text": "Added a new Game - “Annoy a human”: Just spam the goose enough times in the timeframe! Aditionally created tons of art and different Geese - lol, had much fun drawing these."}, {"post_id": 16200, "ts": "2026-06-26T10:13:25Z", "hours": 3.7047, "text": "Have pretty much finished the guide and implemented some of my own art already - not without its issues, had a bit of difficulties following the guide since I didn’t always know what it wanted me to do lol. But got everything done in the end. Before shipping for the first time I still gotta decide what theme this game should have, what the protagonist should be and add one or two more minigames. - should play some warioware for inspiration haha."}]...
|
Title: Goose Games by @Gabl | Stardance
Devlogs:
Title: Goose Games by @Gabl | Stardance
Devlogs:
Have pretty much finished the guide and implemented some of my own art already - not without its issues, had a bit of difficulties following the guide since I didn’t always know what it wanted me to do lol. But got everything done in the end. Before shipping for the first time I still gotta decide what theme this game should have, what the protagonist should be and add one or two more minigames. - should play some warioware for inspiration haha.
Added a new Game - “Annoy a human”: Just spam the goose enough times in the timeframe! Aditionally created tons of art and different Geese - lol, had much fun drawing these.
Made a lil explanation Text pop up before each minigame starting wich gave me a huge headache and still doesn’t really work like intended, also I have no idea why the quality is so bad or why I can’t adjust the size and its just bigger in some scenes and smaller in others. But I am waay too dumb to figure anything out it seems, have definitely wasted too much time on this text popup, might actually quit this, bc I am hella down cause nothing seems to work right I am trying to do ):
Finally continued working on the game!! Made a flappy bird-like game - which took me way too long because I had many difficulties spawning in the chimneys. And also drawing the sprites took quite some time but I think it was definitely worth it - I am really happy with them
More randomisation!
Last Devlog bugged I don’t know why but the last devlog bugged out and I sent it off before I finished writing it. Now I have made some really minor fixes to make this devlog but am still wondering how to fix others. But here are new features I added since the actual last devlog: Music: implemented actual warioware music, which did fit perfectly. It works perfect in godot, but I don’t know why, it doesn’t in the browser all the time - I have no idea how to fix that. Randomisation: Minigames now come in a random order and some minigames have variation - such as don’t press (length), annoy the human (click amount) and flappy goose (points amount). Oh, and you can’t get the same minigame back to back. Better Organisation: Changed the organisation of folders, scenes, etc. to be better bc it was a full nightmare before. Took longer than expected because it messed all the dependencies up - but I think it works now. New Minigame: Don’t Click - or else…. Also made some new art for this minigame which turned out great once again imo! Thanks for checking this devlog out, idk why that before happened but well yeah.
Yippie, added another game- HONK CORRECTLY! In this game you just need to honk at the right moment to win. Seems pretty simple, but took me some time to get done.
Fixing Stuff and more! Since last time I firstly added some sound effects to better indicate if you failed or not- for example if you fail the HONK CORRECTLY! Minigame its a different honk to when you win, or same for the new minigame I added- yes I added a new minigame: JUMP! : Here you must jump over some items I drew, had a lot of fun to draw these again, also drew some new Backgrounds and so on. I also added the actual controls and code for the settings to actually work, and also added credits there haha. Lastly I fixed a really annoying bug, that was driving me insane - the music wouldn’t Always work in the browser for whatever reason. After some digging the solution was surprisingly easy, just had to change the Default Playback type for audio in the project settings. I am glad that works now. Not much to go untill the second ship, Maybe I’ll add another minigame, or just ship it in the next devlog - we’ll see.
Last Devlog before ship!Fixed some errors and bugs, such as the faulty hitbox for the 7th minigame and the intervention screen always showing the wrong level lol.Then also updated the readme and everything regarding the itch page.
Ships:
Goose Games You are a simple Goose that has a big appetite for Bread and annoying people. A simple WarioWare like game with fast paced minigames. Controls: WASD or Arrows to Move Space to jump Mouseclick The Game currently features 3 Minigames: Platformer - eat the 3 Breads as fast as possible Clicker - eat all of the 6 Breads in time Click-Smasher - Honk at the human enough times in the timeframe All art assets have been created by me - yes, even the font. I still have many plans to extend the games size, polish everthing, add more randomness and make more art. Created for Stardance Hackclub - Make a WarioWare Game. Thanks for playing, hope you have fun!
Goose Games ship 2 This is a fairly simple WarioWare game, where you have to manage to beat 5 minigames to win. The Game currently features 7 Minigames: Platformer - eat the 3 Breads as fast as possible Clicker - eat all of the 6 Breads in time Click-Smasher - Honk at the human enough times in the timeframe Flappy-Goose - Reach a random score of points Don’t-Click - you don’t. Honk-Correctly - Hit the green area to honk correctly Jump - jump over a random amount of obstacles I added so much to the game since last ship, but here are some things I remember off the top of my head: WarioWare Music and SFX Settings Screen actually working lol 4 new minigames randomisation - for example in minigames but also in which order you get minigames Popup Text at the beginning of the minigame tons of bug fixes prob more Thanks for playing, hope you have fun!...
|
1793108971.157398
|
1793195371.157398
|
|
25986
|
Katnip by @b1j2754 | Stardance
|
b1j2754
|
2
|
80.41
|
1182
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T09:31:56Z", "hours": 37.0, "multiplier": 19.83, "payout": 741, "blessing": "neutral", "text": "Katnip. For real this time. From text -> blocks. It now exists. Fully type-checked. Powerful enums. Function returns. And it all compiles into scratch. Over the past 36 hours I have worked on making the IR and Codegen layers come to life. From working with stacks, and other more complex algorithms, hoisting, scopes, and everything in between, It now compiles. Katnip is a language designed to not just be a surragate for scratch syntax, its supposed to fix it, and offer a scripting alternative. Gone are the days of wrong data types, debugging random lines, Katnip can do that for you. Types and bugs are well defined, and easy to find. To use this project, I currently do not have a website, but install it through NPM: https://www.npmjs.com/package/@katnip-org/compiler npm i @katnip-org/compiler Happy coding :P", "repo": "https://github.com/Katnip-org/Katnip/", "demo": "https://www.npmjs.com/package/@katnip-org/compiler"}, {"ship_num": 2, "ts": "2026-07-06T22:46:43Z", "hours": 25.0, "multiplier": 19.56, "payout": 441, "blessing": "neutral", "text": "I made the semantic analysis portion to a custom coding language for scratch. It aims to bridge the gap for kids between code blocks and real scripting. It has full type safety, and a variety of different language components, creating a rich and immersive transition from scratch into the real world of programming. It has both simple syntax but also allows a high skill ceiling with more complex syntax. I struggled a lot, spending hours on end chatting with programmers I am friends with, crafting a lot of these language decisions in late night chats. Every single step has been deliberately taken. I am proud of the consistency and quality of the code I wrote. I feel proud to have made this section, and hope that by shipping (and hopefully the community receiving it well) I will be able to continue forwards to finishing the IR and code gen. Since there isn’t a best way to use a programming language, I suggest both installing the npm package and the vscode extension (search ‘Katnip’ in the store). This will give you in-editor syntax highlighting and typechecking. Feel free to use the cli for lexing, parsing, and type checking.", "repo": "https://github.com/Katnip-org/Katnip/", "demo": "https://www.npmjs.com/package/@katnip-org/compiler"}]...
|
[{"post_id": 63302, "ts": "202 [{"post_id": 63302, "ts": "2026-09-07T01:41:07Z", "hours": 4.3019, "text": "Sigma Peak Editor Frfr The editor is turning out beautifully . Like I love it so far. Tons and tons of improvements to mainly the editor, but a few pivotal improvements to the compiler itself. Website / GUI Improvements File uploads — no longer are your costumes handwritten svgs :P AND you can import .knip files! QOL improvements — draggable files, auto-focus editor on openning of website Terminal prettification STAGE BUTTONS! — start / pause / stop + TurboMode Flag functionality rework click => compile + run shift+click => run without compiling Settings file actually does something Compiler improvements Costumes implementation (new syntax!) Forever block + more math blocks! Zip compression level compiler flag"}, {"post_id": 62117, "ts": "2026-09-05T11:32:11Z", "hours": 5.4575, "text": "Costumes + Sounds! Finally, after a long time of putting this off, Katnip finally has syntax to import sounds and assets to use for your projects! stage { costume \"./sky.svg\"; events.onFlag() { looks.switchBackdrop(\"sky\"); } } sprite Cat { costume \"./cat.svg\" as idle; costume \"./cat-blink.svg\" as blink; sound \"./meow.wav\"; events.onFlag() { motion.goTo(-100, 0); looks.switchCostume(\"idle\"); looks.say(\"costumes + sounds work\", 2); forever { wait(0.5); looks.nextCostume(); } } } Changelog Compiler changes Added costume and sound keywords Added stage keyword for stage override (previously auto-gen’d) Added forever keyword (cuz I forgot to add it somehow) Website changes Added upload icon for uploading files Added support for the new costume and sound required fs callbacks Added “rename” in dropdown right-click context Notes Not sure how the forever block and rename button took this long to add, both seem like something I could’ve adressed earlier, but—better late than never :P"}, {"post_id": 55346, "ts": "2026-08-27T03:01:18Z", "hours": 4.2003, "text": "Fleshing out the GUI Finally got a working prototype! Check it out at https://katnip.org Components added: Stage This was honestly a pretty hard part of the process. I am using tw-scaffolding, the core vm from TurboWarp. But it has no types, no docs, and the docs that exist are outdated. So I resorted to having Claude make a .d.ts file for me so I could fuzz my way through instead. This process wasn’t that bad once the functions were clear, and I hooked it up to my compiler—intentionally designed to output Uint8Array. Toolbar This was fun since I don’t know svelte yet that well. I had a state originally stored in my state.svelte.ts, but I figure out I could refactor and not need it. Then I just did some vm tomfoolery to ensure the threads stay open on pausing, and it was good to go. Terminal This is a super rudamentry approach. I plan to have an input method at some point, but we will see. Hopefully I implement a better technique, currently I just have a string array storing the logs. Makes it easy to make it stateful in svelte ig"}, {"post_id": 53486, "ts": "2026-08-24T01:41:19Z", "hours": 4.4464, "text": "Katnip GUI!!! Ahhhh im so excited. I’m building the gui for Katnip right now—built off a small foundation done by a friend. Currently repo is private, but I’ll open it once my computer’s not about to die and I’m on stable internet. Worked on the following things: Re-binding TextMate grammar tokens File editor popup TurboWarp scaffolding library for the running Pulling in my compiler through npm for compilation"}, {"post_id": 44833, "ts": "2026-08-10T21:09:24Z", "hours": 3.1028, "text": "Yikes. So this is a step I didn’t really want to take. I had to take away a part of the language that I always wanted to exist. The existence of the temp keyword. I mean this thing was literally covering my demos and other scripts in the docs and whatnot. But alas, it was not properly implemented, and I have no forseeable good solution to working it out. So its removed for the time being. Brighter note On the flipside, I did finalize and fully implement zip , enumerate , and range ! These functions now properly parse the list arguments and let tuple unpacking do its amazing goodness."}, {"post_id": 44242, "ts": "2026-08-09T21:24:44Z", "hours": 4.6969, "text": "Cooking up straight peak Great new features. Genuinely super cool. This new bout of progress that led to end-to-end compilation has given me so much motivation. Enums So, this already existed. But I realized that they are so much more than just a way to create states to check against, or store values in. Ever since I allowed scalar values to be the represenation of enum members, this has become more powerful than I realized. The key was implementing the type interpretation of an enum. I already was kind of doing this, but when you have an input param for a function, you can assign a type of enum FlowerType for instance. So the input only accepts FlowerType.x where x is the type. But thats long. Look at a function call: sniff(FlowerType.DAFFODIL, backup = FlowerType.ROSE); Instead, I like what typescript does with its discriminant types, allowing a type to represent a set of possible values. So, it was born. sniff(\"daffodil\", backup = \"rose\"); In order to use this, just assign values to your enum: enum FlowerType { DAFFODIL = \"daffodil\", ROSE = \"rose\", ... } STDLib improvements Prior, a lot of stuff including type casting was a mess. I just recently got this up and running, so it was hard to even try to think about this. Scratch only has a few types: round and angled and block. Thats it. And types really only apply to round/angled. So I implemented small blocks that allow scratch’s oddities and allow you to tell the compiler to “shut up”. Want to get the string of a bool? No problem. looks.say( Str(var == 2) + \"apple\") And many many other use cases. Made some marginal improvements to the CLI to allow parsing Made some commands to run with command pallete for the vscode ext"}, {"post_id": 43872, "ts": "2026-08-09T10:04:26Z", "hours": 8.3239, "text": "Holy Guacamole I’m So Excited Insane progress over the past few days has occurred, in large part due to my travels on train, and my apparent ability to lock in when I start seeing things. Codegen Probably the most recognizable part of the project, Katnip can now generate scratch code. Blocks are being made, and complex patterns written in the IR are finally revealing themselves. It is so important that you look at the pictures, as the improvements made here are hard to put into words. Writing this part was arguably the most fun part of the entire project. This part was more scratch-like than any other part so far (“well duh, its the closest stage” you might be saying. And you’d be right.) IR Writing a majority did not come without its need for the IR to step up its game. I was quite fed up with 0 visual progress, so I jumped to codegen to boost my morale for the improvements made to the IR. This includes dict and list slicing, and a proper handling of booleans. I’m so excited"}, {"post_id": 41989, "ts": "2026-08-06T15:08:47Z", "hours": 9.1267, "text": "The light I can see it… (what is it?) … the light at the end of the tunnel… (what are you talking about?) .. its almost here Yea no it ain’t Though the project isn’t done, I will admit I am nearing the closing moments of the IR stage, with only 1 last hurdle to overcome before I can transpile projects beginning -> end . Here’s a small overview of what’s been done in the last two weeks (nah who am I kidding its all last night, I haven’t touched this in a bit) Procedures Katnip is scratch. Kinda. It transpiles to scratch. So it needs procedures. I took a giant bite out of the huge problem that is procedures. It is very complex to try and emulate a return system in a program that just doesn’t support it. Having taken a DSA class, this was a problem that I took to paper, and got the following solution: Stacks are beautiful. Let me elaborate. A stack is a structure that follows FiLo , or first-in, last-out . This is super important for returning from procedures, when considering the fact that a single variable will not be enough for systems when/if the function recurses. So this way, you push and pop on the stack to keep the order, and all return values are kept track of nicely! Mangled vars. Scope is a really hard concept to grasp, but even harder to emulate in a non-scoped language. For the most part, I want to keep Scratch’s inherent scope-less design, in the sense that variables can exist in similar ways. But I do want scopes. So I take back the before-last sentence. To do this, I mangle vars, allowing scopes to exist, multiple instances of the same code to run, and to have variables not collide. For loops A smaller sections, but still cool. A for loop in scratch is a hidden–but supported–block. You can only iterate a variable, lets call it x , from 1..y inclusive, where y is the max range. So for lists, this means lowering this: for (x, myList) { looks.say(x); } into this: for (x, listLength(myList)) { x = myList[x]; looks.say(x); } Additionally, if doing a range function like this: for (x, range(4, 10, 2)) { looks.say(x); } it lowers into this: for (x, 3) { x = x * 2 + 4; looks.say(x); }"}, {"post_id": 32049, "ts": "2026-07-20T22:44:57Z", "hours": 6.3789, "text": "Project depth increase Retrospectively, this probably should’ve been multiple seperate posts. But I forgot. Again. Return statements For compiling to scratch, a variety of different appracohes have been done. Personally, these fall under a few distinct approaches: variable and list. Variable is simply setting a variable to the output, whereas a list is just a stack following LiFo rules. A variable should be used for single value, non-recursive functions. It’s pretty naive actually. The better alternative way is to use a stack, in which you push and pop from it. This way, you know the exact offset that correlates to the return value in recursive functions. The stack also allows for easy nesting of functions next to each other, like foo(1, 2) + foo(3, 4) , which is only possible in variable form with temporary vars. Vscode Autocomplete Less said here, but this was actually pretty simple. I just ran some regex to get all the identifiers, and then seperated them by type. Pretty rudamentry, but nice. Scratch Defs This was a huge first step in the IR design. Basically, I need a good way of storing metadata. Inventing whole new katnip syntax for this would: a. Look bad, but also b. Be horrible to implement So I wrote a typescript file that takes care of the json metadata, allowing only rudamentry tags and opcode to be stored in Katnip portion. Imports This was a fun portion to tackle. Because I am targeting 3 deployments: vsc, cli, and web, I need a design that covers all 3. A friend suggested callbacks. This allows me to assume the user will define a function that allows filesystem interactions, without me touching a thing. So all I did was bring in the code from the imported file, and ran compilation over it too. I pulled it in during the semantic analysis phase as that was the correct timing; after verifying the import statement; before the codegen. Structs Lots of deliberation occured here. It was very crucial to implement this, personally, because I use this type of feature (self-implemented, each time) in scratch. It always felt like a thing that I needed. I was torn between strided and parallel list storage for the pieces of it. Strided was cool, and was more efficient with space and project list bloat, but in the end parallel lists were just SO much cleaner."}, {"post_id": 29545, "ts": "2026-07-16T15:27:53Z", "hours": 5.7258, "text": "Bugfixes + webprep This will be a shorter devlog, because, though there is a lot of time logged, much of this was just troubleshooting the few things I was adding. Bugfixes: In the lexer, there existed some issues with my fsm, and the way I processed escaped characters Added some protections in the parser instead of semantic analysis so enforcement was throurough and non-manual Webprep: Removed external dependencies that only npm could run. This enabled the beginning of development of a web editor gui by my friend in Svelte Rewrote dependencies and npm-specific stuff to my npm-agnostic, using my own implementations (mostly just pico-colors tbh) The photo attached is it showing how another runtime (in this example, bun) can run the project that originally only worked with npm."}, {"post_id": 23783, "ts": "2026-07-06T22:36:35Z", "hours": 1.3239, "text": "Getting ready! Getting ready to ship the semantic analysis. General config stuff, npm registry, vsc ext, open vsx, all those fun things. https://www.npmjs.com/package/@katnip-org/compiler https://marketplace.visualstudio.com/items?itemName=Katnip-org.katnip-vscode https://open-vsx.org/extension/Katnip-org/katnip-vscode"}, {"post_id": 23347, "ts": "2026-07-06T07:47:42Z", "hours": 11.2783, "text": "Phase 2 complete (plus a lil extra) Phase 2 Function overloads This was an interesting task to take on. I had to first figure out how to match a function’s signiture to its call. I couldn’t simply check if a signiture existed or not, I had to check which variation it satisfied. This involved reworking the way I stored signitures, and allowed a single object to hold them all for a certain function name. This way, it was a lot cleaner and put together. STDLIB After working through the project, I realized that I needed a way to define the primitive blocks used in Scratch. I didn’t think adding them in as a Typescript object was elegant, and it definently wasn’t extendable. Instead, I opted to expand the language syntax to allow generics, and therefore enable modular and clean code in the form of a katnip-defined STDLib. Katnip LSP This section is less in depth, because the setup wasn’t as hard. I look up some docs, and most of it was drag and drop. There exists a single file for defining the regex expressions with which to color the words on the page, and then I connected my error reporter to the lsp’s standard error reporter to further enhance the experience. Every 300ms or so, it updates, and tells the user where the errors are, just like any other language supported in text editors."}, {"post_id": 18873, "ts": "2026-06-30T02:11:27Z", "hours": 4.7678, "text": "Almost completed phase 2 of the Semantic Analysis Today I built a wide variety of things. But 3 specific features. visit(node: StatementNode): void This function parses all of my nodes. It covers variable assignment, sprite declaration, etc etc. It has many jobs, including entering scopes, declaring bodies, and following each AST-node stack recursively. Some are left stubbed out, as I spent most of my time on #2: inferType(expression: ExpressionNode): InternalType This function is ~200loc. It covers a wide variety of cases, all pertaining to the type inference of an expression AST. It not only infers the type, but recursively builds an internal model of what the user has written. So a type of list<dict<num, str>> becomes the stored internal representation of: { kind : \" list \" , element : { kind : \" dict \" , key : { kind : \" primitive \" , name : \" num \" }, value : { kind : \" primitive \" , name : \" str \" } } } Though it is a lot more complex than that, that’s what it boils down to. And lots and lots and lots of error statements. InternalTypes itself I built a system that stores the type state, with a few extra helper functions: isAssignable and typeToString. The former recursively traces both types and ensures total match. This means that a variable of type to could be assigned to a value of type from . The latter is just a pretty-print function for pretty errors to see what types were being looked at/expected at certain parts of the code."}, {"post_id": 17300, "ts": "2026-06-28T00:56:35Z", "hours": 3.6656, "text": "Finished phase 1 of the Semantic Analysis Implemented Scope-Analysis checks. It can correctly identify and point out issues with scopes. It understands a variety of different scopes, from for-loops to functions to Sprites. Also added support for switch-statements. Importantly, I chose to force only 1 default, and force it to be only at the end. I also implemented true and false as a new Boolean primitive type, alongside a true return statement"}, {"post_id": 16732, "ts": "2026-06-27T05:49:23Z", "hours": 2.8311, "text": "2. Building Semantic Analysis This will be shorter, since most of what I say is better just written in code. The main idea is two passes: Hoist Bring procedures to the top to allow forward references. I explain why I did so above. Visit Acctually go through and validate. This is the main core bit of the semantic analysis portion. I am a little stuck at a desgin fork. Should I allow scripts inside no ‘Sprite’ Scope to be there? Or should I force them into the Stage. Or do I error? Scratch-like behaviors tell me that it should go to stage, but that feels tacky and wrong. Can functions be public? I think so. Can’t be temp. Need to make start and end possibly null Make function be able to be public/private. Assumed private Everything at the root of a file should be invalidated. The space should be reserved for imports, functions, global stuff. Overall, I worked on building semantic analysis, at least the basic parts. I added variable decleration handling in scopes, and all of expressionstatement parsing."}, {"post_id": 16096, "ts": "2026-06-26T05:23:16Z", "hours": 1.1658, "text": "Semantic Analysis Planning Currently trying to think about how best to implement semantic analysis. I can’t lie, I am just getting back into this project, so I am rediscovering what I had previously written.I guess I have to start at the beginning. What is semantic analysis? Type Checking Operations need to be with compatible data types One note to myself here is that I have reserved functions because it’s Scratch, so those need to have a designed store for their types2. Scope Resolution Make sure variables and functions are designed in the right parts of code I think this will cover imports too, but its worth thinking about Undeclared and redeclared variable checks Function Call Validation I’ll have to go back and check if I accidentally covered that in the parser, but I believe this should go here Flow Control Switch case validations, make sure fall through keywords and default cases etc. are all in valid places5. Reserved Keyword Check if variable and functions defined are conflicting with Katnip’s First I’m going to do symbol collection and scope resolution. One important nuance I discovered was whether or not to enforce scope declaration. Should there be an inferred scope? In Scratch, this inferred scope is mostly ‘Public’, as variables are shared across sprites. However, I think I am going to flip this, as it feels wrong to teach the user that variables work across sprites. Thought dump: ‘Private’ kward can’t be used at root level (stage). Can’t be used as modifier for sprite either, tho neither should any modifier. Scope-less definitions are okay. Scratch does this, just opposite of me. I am going to raise function declarations so that they can be referenced before making. Requires 2 passes, but seems simpler and more intuitive in my opinion. I am going to allow function overloading. It seems useful, and I like the way Java does it."}]...
|
Title: Katnip by @b1j2754 | Stardance
Devlogs:
Se Title: Katnip by @b1j2754 | Stardance
Devlogs:
Semantic Analysis Planning Currently trying to think about how best to implement semantic analysis. I can’t lie, I am just getting back into this project, so I am rediscovering what I had previously written.I guess I have to start at the beginning. What is semantic analysis? Type Checking Operations need to be with compatible data types One note to myself here is that I have reserved functions because it’s Scratch, so those need to have a designed store for their types2. Scope Resolution Make sure variables and functions are designed in the right parts of code I think this will cover imports too, but its worth thinking about Undeclared and redeclared variable checks Function Call Validation I’ll have to go back and check if I accidentally covered that in the parser, but I believe this should go here Flow Control Switch case validations, make sure fall through keywords and default cases etc. are all in valid places5. Reserved Keyword Check if variable and functions defined are conflicting with Katnip’s First I’m going to do symbol collection and scope resolution. One important nuance I discovered was whether or not to enforce scope declaration. Should there be an inferred scope? In Scratch, this inferred scope is mostly ‘Public’, as variables are shared across sprites. However, I think I am going to flip this, as it feels wrong to teach the user that variables work across sprites. Thought dump: ‘Private’ kward can’t be used at root level (stage). Can’t be used as modifier for sprite either, tho neither should any modifier. Scope-less definitions are okay. Scratch does this, just opposite of me. I am going to raise function declarations so that they can be referenced before making. Requires 2 passes, but seems simpler and more intuitive in my opinion. I am going to allow function overloading. It seems useful, and I like the way Java does it.
2. Building Semantic Analysis This will be shorter, since most of what I say is better just written in code. The main idea is two passes: Hoist Bring procedures to the top to allow forward references. I explain why I did so above. Visit Acctually go through and validate. This is the main core bit of the semantic analysis portion. I am a little stuck at a desgin fork. Should I allow scripts inside no ‘Sprite’ Scope to be there? Or should I force them into the Stage. Or do I error? Scratch-like behaviors tell me that it should go to stage, but that feels tacky and wrong. Can functions be public? I think so. Can’t be temp. Need to make start and end possibly null Make function be able to be public/private. Assumed private Everything at the root of a file should be invalidated. The space should be reserved for imports, functions, global stuff. Overall, I worked on building semantic analysis, at least the basic parts. I added variable decleration handling in scopes, and all of expressionstatement parsing.
Finished phase 1 of the Semantic Analysis Implemented Scope-Analysis checks. It can correctly identify and point out issues with scopes. It understands a variety of different scopes, from for-loops to functions to Sprites. Also added support for switch-statements. Importantly, I chose to force only 1 default, and force it to be only at the end. I also implemented true and false as a new Boolean primitive type, alongside a true return statement
Almost completed phase 2 of the Semantic Analysis Today I built a wide variety of things. But 3 specific features. visit(node: StatementNode): void This function parses all of my nodes. It covers variable assignment, sprite declaration, etc etc. It has many jobs, including entering scopes, declaring bodies, and following each AST-node stack recursively. Some are left stubbed out, as I spent most of my time on #2: inferType(expression: ExpressionNode): InternalType This function is ~200loc. It covers a wide variety of cases, all pertaining to the type inference of an expression AST. It not only infers the type, but recursively builds an internal model of what the user has written. So a type of list<dict<num, str>> becomes the stored internal representation of: { kind : " list " , element : { kind : " dict " , key : { kind : " primitive " , name : " num " }, value : { kind : " primitive " , name : " str " } } } Though it is a lot more complex than that, that’s what it boils down to. And lots and lots and lots of error statements. InternalTypes itself I built a system that stores the type state, with a few extra helper functions: isAssignable and typeToString. The former recursively traces both types and ensures total match. This means that a variable of type to could be assigned to a value of type from . The latter is just a pretty-print function for pretty errors to see what types were being looked at/expected at certain parts of the code.
Phase 2 complete (plus a lil extra) Phase 2 Function overloads This was an interesting task to take on. I had to first figure out how to match a function’s signiture to its call. I couldn’t simply check if a signiture existed or not, I had to check which variation it satisfied. This involved reworking the way I stored signitures, and allowed a single object to hold them all for a certain function name. This way, it was a lot cleaner and put together. STDLIB After working through the project, I realized that I needed a way to define the primitive blocks used in Scratch. I didn’t think adding them in as a Typescript object was elegant, and it definently wasn’t extendable. Instead, I opted to expand the language syntax to allow generics, and therefore enable modular and clean code in the form of a katnip-defined STDLib. Katnip LSP This section is less in depth, because the setup wasn’t as hard. I look up some docs, and most of it was drag and drop. There exists a single file for defining the regex expressions with which to color the words on the page, and then I connected my error reporter to the lsp’s standard error reporter to further enhance the experience. Every 300ms or so, it updates, and tells the user where the errors are, just like any other language supported in text editors.
Getting ready! Getting ready to ship the semantic analysis. General config stuff, npm registry, vsc ext, open vsx, all those fun things. https://www.npmjs.com/package/@katnip-org/compiler https://marketplace.visualstudio.com/items?itemName=Katnip-org.katnip-vscode https://open-vsx.org/extension/Katnip-org/katnip-vscode
Bugfixes + webprep This will be a shorter devlog, because, though there is a lot of time logged, much of this was just troubleshooting the few things I was adding. Bugfixes: In the lexer, there existed some issues with my fsm, and the way I processed escaped characters Added some protections in the parser instead of semantic analysis so enforcement was throurough and non-manual Webprep: Removed external dependencies that only npm could run. This enabled the beginning of development of a web editor gui by my friend in Svelte Rewrote dependencies and npm-specific stuff to my npm-agnostic, using my own implementations (mostly just pico-colors tbh) The photo attached is it showing how another runtime (in this example, bun) can run the project that originally only worked with npm.
Project depth increase Retrospectively, this probably should’ve been multiple seperate posts. But I forgot. Again. Return statements For compiling to scratch, a variety of different appracohes have been done. Personally, these fall under a few distinct approaches: variable and list. Variable is simply setting a variable to the output, whereas a list is just a stack following LiFo rules. A variable should be used for single value, non-recursive functions. It’s pretty naive actually. The better alternative way is to use a stack, in which you push and pop from it. This way, you know the exact offset that correlates to the return value in recursive functions. The stack also allows for easy nesting of functions next to each other, like foo(1, 2) + foo(3, 4) , which is only possible in variable form with temporary vars. Vscode Autocomplete Less said here, but this was actually pretty simple. I just ran some regex to get all the identifiers, and then seperated them by type. Pretty rudamentry, but nice. Scratch Defs This was a huge first step in the IR design. Basically, I need a good way of storing metadata. Inventing whole new katnip syntax for this would: a. Look bad, but also b. Be horrible to implement So I wrote a typescript file that takes care of the json metadata, allowing only rudamentry tags and opcode to be stored in Katnip portion. Imports This was a fun portion to tackle. Because I am targeting 3 deployments: vsc, cli, and web, I need a design that covers all 3. A friend suggested callbacks. This allows me to assume the user will define a function that allows filesystem interactions, without me touching a thing. So all I did was bring in the code from the imported file, and ran compilation over it too. I pulled it in during the semantic analysis phase as that was the correct timing; after verifying the import statement; before the codegen. Structs Lots of deliberation occured here. It was very crucial to implement this, personally, because I use this type of feature (self-implemented, each time) in scratch. It always felt like a thing that I needed. I was torn between strided and parallel list storage for the pieces of it. Strided was cool, and was more efficient with space and project list bloat, but in the end parallel lists were just SO much cleaner.
The light I can see it… (what is it?) … the light at the end of the tunnel… (what are you talking about?) .. its almost here Yea no it ain’t Though the project isn’t done, I will admit I am nearing the closing moments of the IR stage, with only 1 last hurdle to overcome before I can transpile projects beginning -> end . Here’s a small overview of what’s been done in the last two weeks (nah who am I kidding its all last night, I haven’t touched this in a bit) Procedures Katnip is scratch. Kinda. It transpiles to scratch. So it needs procedures. I took a giant bite out of the huge problem that is procedures. It is very complex to try and emulate a return system in a program that just doesn’t support it. Having taken a DSA class, this was a problem that I took to paper, and got the following solution: Stacks are beautiful. Let me elaborate. A stack is a structure that follows FiLo , or first-in, last-out . This is super important for returning from procedures, when considering the fact that a single variable will not be enough for systems when/if the function recurses. So this way, you push and pop on the stack to keep the order, and all return values are kept track of nicely! Mangled vars. Scope is a really hard concept to grasp, but even harder to emulate in a non-scoped language. For the most part, I want to keep Scratch’s inherent scope-less design, in the sense that variables can exist in similar ways. But I do want scopes. So I take back the before-last sentence. To do this, I mangle vars, allowing scopes to exist, multiple instances of the same code to run, and to have variables not collide. For loops A smaller sections, but still cool. A for loop in scratch is a hidden–but supported–block. You can only iterate a variable, lets call it x , from 1..y inclusive, where y is the max range. So for lists, this means lowering this: for (x, myList) { looks.say(x); } into this: for (x, listLength(myList)) { x = myList[x]; looks.say(x); } Additionally, if doing a range function like this: for (x, range(4, 10, 2)) { looks.say(x); } it lowers into this: for (x, 3) { x = x * 2 + 4; looks.say(x); }
Holy Guacamole I’m So Excited Insane progress over the past few days has occurred, in large part due to my travels on train, and my apparent ability to lock in when I start seeing things. Codegen Probably the most recognizable part of the project, Katnip can now generate scratch code. Blocks are being made, and complex patterns written in the IR are finally revealing themselves. It is so important that you look at the pictures, as the improvements made here are hard to put into words. Writing this part was arguably the most fun part of the entire project. This part was more scratch-like than any other part so far (“well duh, its the closest stage” you might be saying. And you’d be right.) IR Writing a majority did not come without its need for the IR to step up its game. I was quite fed up with 0 visual progress, so I jumped to codegen to boost my morale for the improvements made to the IR. This includes dict and list slicing, and a proper handling of booleans. I’m so excited
Cooking up straight peak Great new features. Genuinely super cool. This new bout of progress that led to end-to-end compilation has given me so much motivation. Enums So, this already existed. But I realized that they are so much more than just a way to create states to check against, or store values in. Ever since I allowed scalar values to be the represenation of enum members, this has become more powerful than I realized. The key was implementing the type interpretation of an enum. I already was kind of doing this, but when you have an input param for a function, you can assign a type of enum FlowerType for instance. So the input only accepts FlowerType.x where x is the type. But thats long. Look at a function call: sniff(FlowerType.DAFFODIL, backup = FlowerType.ROSE); Instead, I like what typescript does with its discriminant types, allowing a type to represent a set of possible values. So, it was born. sniff("daffodil", backup = "rose"); In order to use this, just assign values to your enum: enum FlowerType { DAFFODIL = "daffodil", ROSE = "rose", ... } STDLib improvements Prior, a lot of stuff including type casting was a mess. I just recently got this up and running, so it was hard to even try to think about this. Scratch only has a few types: round and angled and block. Thats it. And types really only apply to round/angled. So I implemented small blocks that allow scratch’s oddities and allow you to tell the compiler to “shut up”. Want to get the string of a bool? No problem. looks.say( Str(var == 2) + "apple") And many many other use cases. Made some marginal improvements to the CLI to allow parsing Made some commands to run with command pallete for the vscode ext
Yikes. So this is a step I didn’t really want to take. I had to take away a part of the language that I always wanted to exist. The existence of the temp keyword. I mean this thing was literally covering my demos and other scripts in the docs and whatnot. But alas, it was not properly implemented, and I have no forseeable good solution to working it out. So its removed for the time being. Brighter note On the flipside, I did finalize and fully implement zip , enumerate , and range ! These functions now properly parse the list arguments and let tuple unpacking do its amazing goodness.
Katnip GUI!!! Ahhhh im so excited. I’m building the gui for Katnip right now—built off a small foundation done by a friend. Currently repo is private, but I’ll open it once my computer’s not about to die and I’m on stable internet. Worked on the following things: Re-binding TextMate grammar tokens File editor popup TurboWarp scaffolding library for the running Pulling in my compiler through npm for compilation
Fleshing out the GUI Finally got a working prototype! Check it out at https://katnip.org Components added: Stage This was honestly a pretty hard part of the process. I am using tw-scaffolding, the core vm from TurboWarp. But it has no types, no docs, and the docs that exist are outdated. So I resorted to having Claude make a .d.ts file for me so I could fuzz my way through instead. This process wasn’t that bad once the functions were clear, and I hooked it up to my compiler—intentionally designed to output Uint8Array. Toolbar This was fun since I don’t know svelte yet that well. I had a state originally stored in my state.svelte.ts, but I figure out I could refactor and not need it. Then I just did some vm tomfoolery to ensure the threads stay open on pausing, and it was good to go. Terminal This is a super rudamentry approach. I plan to have an input method at some point, but we will see. Hopefully I implement a better technique, currently I just have a string array storing the logs. Makes it easy to make it stateful in svelte ig
Costumes + Sounds! Finally, after a long time of putting this off, Katnip finally has syntax to import sounds and assets to use for your projects! stage { costume "./sky.svg"; events.onFlag() { looks.switchBackdrop("sky"); } } sprite Cat { costume "./cat.svg" as idle; costume "./cat-blink.svg" as blink; sound "./meow.wav"; events.onFlag() { motion.goTo(-100, 0); looks.switchCostume("idle"); looks.say("costumes + sounds work", 2); forever { wait(0.5); looks.nextCostume(); } } } Changelog Compiler changes Added costume and sound keywords Added stage keyword for stage override (previously auto-gen’d) Added forever keyword (cuz I forgot to add it somehow) Website changes Added upload icon for uploading files Added support for the new costume and sound required fs callbacks Added “rename” in dropdown right-click context Notes Not sure how the forever block and rename button took this long to add, both seem like something I could’ve adressed earlier, but—better late than never :P
Sigma Peak Editor Frfr The editor is turning out beautifully . Like I love it so far. Tons and tons of improvements to mainly the editor, but a few pivotal improvements to the compiler itself. Website / GUI Improvements File uploads — no longer are your costumes handwritten svgs :P AND you can import .knip files! QOL improvements — draggable files, auto-focus editor on openning of website Terminal prettification STAGE BUTTONS! — start / pause / stop + TurboMode Flag functionality rework click => compile + run shift+click => run without compiling Settings file actually does something Compiler improvements Costumes implementation (new syntax!) Forever block + more math blocks! Zip compression level compiler flag
Ships:
I made the semantic analysis portion to a custom coding language for scratch. It aims to bridge the gap for kids between code blocks and real scripting. It has full type safety, and a variety of different language components, creating a rich and immersive transition from scratch into the real world of programming. It has both simple syntax but also allows a high skill ceiling with more complex syntax. I struggled a lot, spending hours on end chatting with programmers I am friends with, crafting a lot of these language decisions in late night chats. Every single step has been deliberately taken. I am proud of the consistency and quality of the code I wrote. I feel proud to have made this section, and hope that by shipping (and hopefully the community receiving it well) I will be able to continue forwards to finishing the IR and code gen. Since there isn’t a best way to use a programming language, I suggest both installing the npm package and the vscode extension (search ‘Katnip’ in the store). This will give you in-editor syntax highlighting and typechecking. Feel free to use the cli for lexing, parsing, and type checking.
Katnip. For real this time. From text -> blocks. It now exists. Fully type-checked. Powerful enums. Function returns. And it all compiles into scratch. Over the past 36 hours I have worked on making the IR and Codegen layers come to life. From working with stacks, and other more complex algorithms, hoisting, scopes, and everything in between, It now compiles. Katnip is a language designed to not just be a surragate for scratch syntax, its supposed to fix it, and offer a scripting alternative. Gone are the days of wrong data types, debugging random lines, Katnip can do that for you. Types and bugs are well defined, and easy to find. To use this project, I currently do not have a website, but install it through NPM: https://www.npmjs.com/package/@katnip-org/compiler npm i @katnip-org/compiler Happy coding :P...
|
1792993913.4194849
|
1793080313.4194849
|
|
26037
|
Geomatrix by @muntean_andrew | Stardance
|
muntean_andrew
|
2
|
91.0
|
1037
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T09:44:15Z", "hours": 29.0, "multiplier": 13.05, "payout": 462, "blessing": "neutral", "text": "What did you make? What was challenging? What are you proud of? I updated my multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging trying to stay consistent and not get overwhelmed by the loads of things I could add to the game as my time is limited and I easily ended up in a rabbit-hole about AI models that could play my game, which I didn’t end up making. I am proud that even though I wouldn’t say this is the most sophisticated piece of software, I would say it’s pretty rudimentary compared to other games but I’ve come to expect reliability and modularity from it, which really came in handy when adding the maps and shapes. Even though there were some minor bugs here and there with the new maps and shapes at the beginning, it all ended up working with very small tweaks. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client.", "repo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars", "demo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars/releases/tag/Pre-alpha"}, {"ship_num": 2, "ts": "2026-07-08T15:02:01Z", "hours": 62.0, "multiplier": 10.25, "payout": 575, "blessing": "neutral", "text": "What did you make? What was challenging? What are you proud of? I made a multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging getting the client to render and interpolate the packets sent from the server because without taking into account the time difference the players might overshoot, and because the projectiles didn’t have an id at the time, they would flicker in positions where they shouldn’t have been. I am very proud of my server and the client-server communication because were the most reliable and straightforward things during the development of this project, even though I firstly started to build the server, the collision simulation, aiming, map and shape changes were very intuitive which proved to be extremely reliable. This reliability of the server really did come in handy when debugging the numerous bugs of the client, but most of the bugs that I found in the client are now fixed, but if someone finds more, I wouldn’t be surprised and you can contact me and describe the issue. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client. It is only on Windows at the moment, but in a future update it will be cross platform, even on mobile.", "repo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars", "demo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars/releases/tag/Pre-alpha"}]...
|
[{"post_id": 49424, "ts": "202 [{"post_id": 49424, "ts": "2026-08-18T08:07:01Z", "hours": 2.0125, "text": "I added 2 new shapes that will fight for supremacy in the math world. They are the Astroid and the Reuleaux Triangle. The Astroid is more of a sniper with long range and lots of damage, but smaller ammo. The Reuleaux Triangle is more of a tank with a shorter range and smaller speed but tons of ammo and damage and also loads of health. Also I added 2 new maps, one is a team mode map and another is a PVE map in which each shape has to fight to be the only one standing at the end of the match."}, {"post_id": 49068, "ts": "2026-08-17T17:43:39Z", "hours": 1.975, "text": "I added the aiming line overlay to make it easier for players to see where they are aiming. It was actually a little bit of spaghetti code involved in the making of this as I use a function to draw the match and another function calculates the last point of the line and returns it but I made it work and it does so beautifully and reliably. I am thinking of maybe adding 1 or 2 more shapes and 1 or 2 new maps and I’d say the project is ready for another ship!"}, {"post_id": 45690, "ts": "2026-08-12T10:43:13Z", "hours": 3.9244, "text": "After a bit of a pause on this project because I wanted to clear my mind a little and do the Hackpad hardware project I returned and made the Game Over screen a bit nicer and so everything is beginning to tie together. I wrote Reals and Quanta so that new users will know what those icons mean. In addition I redesigned the map selection screen to show a preview of the map before selecting it. I am also thinking of adding an aim overview and the players just hold the arrow keys or move the right joystick on the controller."}, {"post_id": 35801, "ts": "2026-07-27T13:53:01Z", "hours": 4.3969, "text": "These past days I am trying to figure out how to implement the IPC (inter process communication) between Python (where the AI model will be made) and the C++ “megaclient” that acts as 10 clients that connect to the game server. From what I’ve seen one of the easiest ways to implement it is through binary standard streams because I’ll have to move 14KB of data per frame, and because I will unlock the speed of the server physics simulation, it will be like thousands of frames per second, which will add up pretty fast. But the problem isn’t the actual size of data, but the latency, if I would just save it into a txt file my SSD will be hit with thousands of requests every second, so keeping everything in the RAM is why I chose to try and implement the IPC through binary standard streams. But I didn’t yet get it working and my brain hurts a little cause for the first time since the beginning of this project I have absolutely no idea what to do or how to actually solve this issue and I kinda feel lost and a bit demotivated, that’s why this week I managed a bit over 1hr of coding per day. But at the same time I’ve been watching more and more videos about how to build AI models and for the first version I’ll build a standard Backprop model as I’ve read in a paper that Predictive Coding approximates Backprop. The problem is this will have to come after the IPC is implemented successfully, which currently it is not. If anyone sees and reads this I would happily accept any suggestions on how to implement the IPC between Python and C++."}, {"post_id": 31456, "ts": "2026-07-19T20:32:11Z", "hours": 3.9214, "text": "I’m starting the development of an Predictive Coding AI model that would play my game as a bot. I’ll make it in Python so I can learn a new language and as it is the standard language used in AI development. Currently I’m building a kind of “mega client” which acts as 10 client that connect to the server and it displays the whole map on the screen with all the players. After this I will link the Python project with the “Mega Client” through standard streams as ENet on Python isn’t really a modern supported thing and this will cut down network bandwidth and I think will decrease the CPU overhead while the model trains. When the link between the Python and C++ program is finished then I’ll start the development of the actual AI model, which will involve reading through some scientific papers on the topic. Right now I have 2 of them bookmarked, but you never know when something new may pop up."}, {"post_id": 30359, "ts": "2026-07-17T20:44:31Z", "hours": 3.7181, "text": "I designed kinda a rough sketch of how the icons for the game currencies could look like. The sine waves are drawn in Raylib and they are static, as well as the circle and the border. The “R” and “i” in the reals and imaginaries’ icon are font characters. Initially I thought about drawing everything, but then I saw a video about game optimization and that it’s very inefficient for the GPU to render small triangles, which eliminated the drawing in Raylib option, and also it would have been a hassle and a half. So this left 2 choices, load the R and i as a font or an image. I chose to load them as fonts because this allows better scalability, as a font isn’t made of pixels. But I didn’t know how much time I will spend making the font implementation to work. First I had to find the fonts that had my desired characters, which was a little tedious having to download or scroll through the list of characters for each font. For this I had to install Font Forge so I could view every character in the font. After that I had to create a new font and to replace the i and R characters of the font with my special characters and then hook it up to Raylib. After loading up my special font I had to tell Raylib whicch characters to import, and I had to measure the characters visual height so I could align them properly in the icon. Each icon is drawn using their specific function, but I am thinking of combining them into one function in the future."}, {"post_id": 29455, "ts": "2026-07-16T12:35:42Z", "hours": 7.1175, "text": "Currently I’m focusing on UI refinement, currency introduction and “trophy” road implementation. I introduced to the game: Reals - the basic currency of the game (kinda like coins in any other game), you win them after a match and they can be used to buy shapes and upgrades. If it wasn’t obvious, the name comes from the set of real numbers. Imaginaries - they are the “premium” currency in the game which can be used to buy reals. At the moment the game doesn’t really use them or display them.😅 It’s a work in progress so yeah. Quanta - these are the equivalent of trophies, they would determine the skill of the player. You gain then winning matches and also lose them losing matches. At the end of the match (or when the player is eliminated) the server transmits a packet in which is specified the amount of reals and quanta received by the player. At the moment the amount of currency a player has is stored in a txt file in the game directory for simplicity. In the future I think that maybe it could be encrypted somehow with a key given by the server so the player won’t just be able to modify it. In addition to this, I changed the UI for the main screen, the shape selection screen and introduces the ability to see the shape, it’s level, stats, and to upgrade it. I’ll be honest that I took a bit of “inspiration” from the Brawl Stars layout, but tried to change some things, and my UI is still not in it’s final form. Everything is done in Raylib, I still don’t use any PNG textures because I want everything to be vectors cause they are not limited by resolution (which maybe is worse for optimisation) and frankly because I don’t know how and I’m a little afraid to try. 😅 The settings and map selection menu still remained the same, maybe I’ll work on the map selection menu but idk about the settings menu cause it technically works and as the saying goes “if it works, don’t touch it”, and I’m a little afraid of touching it. Also I’m thinking of introducing a scale variable for text, like the UI elements are defined by the width and height of the window, but the font size of the text is it plain pixels, so I’m thinking of making the text scale based on how it looks at 1080p and if the resolution is lower or higher the font size will multiply with the scale that will be the players resolution height divided by 1080. After the UI layout is “done”, which hopefully will happen till the end of the week, I’m starting the development and training of the Predictive Coding AI model that will play my game as a bot. P.S.: I’m trying to make longer devlogs as that was suggested numerous times in the reviews of the first ship."}, {"post_id": 25822, "ts": "2026-07-10T09:05:29Z", "hours": 2.4131, "text": "Added Linux support!!!"}, {"post_id": 24592, "ts": "2026-07-08T09:25:14Z", "hours": 1.1092, "text": "Finally got the settings to work, but the user has to press Enter twice for the change to happen, but hey, it’s not a bug, it’s a feature. 😅 I’m getting ready to ship this first alpha version of Geomatrix. It has been such a journey managing UDP packet types, the server physics simulations, the client interpolation and the Raylib rendering pipeline. But at the end of the day, it was fun, and I learned a ton about client-server communication and the massive optimizations you can unlock when you find the right architectural abstractions."}, {"post_id": 24359, "ts": "2026-07-07T21:27:49Z", "hours": 4.04, "text": "Trying to get the settings menu to work. Firstly I made a general menu class, then I added to it a submenu vector, and I got it to work when I was only focused on getting the resolution to change. But then I tried to implement the frame rate setting and so the class had to be redesigned and now, let’s say it’s halfway there. PS: the total time across the 2 Hackatime projects (server and client) linked to this Stardance project is 71hrs."}, {"post_id": 23794, "ts": "2026-07-06T22:53:58Z", "hours": 4.8689, "text": "Implemented settings and a save file. Now whenever the user reopens the game it remembers their last used shape and map so they don’t have to reselect them. The settings UI is only partially made. P.S.: Hackatime shows the 2 linked project times to be 31hrs 55min and 35hrs 8 min respectively, but the total somehow is 57hrs 19 min."}, {"post_id": 23073, "ts": "2026-07-05T20:13:55Z", "hours": 6.6294, "text": "Added support for new shapes and levels. Different shapes have different stats and some of them can be upgraded with a leveling up system. Also added a sine wave animation to a tile."}, {"post_id": 22465, "ts": "2026-07-04T22:45:53Z", "hours": 4.1553, "text": "Introduced a new tech inspired design into the game. Now players that are in a “bush” get invisible. Made the game modular and added support for multiple maps on the server side. P.S.: In Hackatime I have 54 hours logged on this project, 8 more than Stardance logged, this discrepancy appeared 2-3 devlogs ago and I asked on the stardance-help chat about it, but I got no response."}, {"post_id": 21790, "ts": "2026-07-03T22:04:37Z", "hours": 5.9508, "text": "Added a title screen, lobby waiting screen and a game over screen"}, {"post_id": 21117, "ts": "2026-07-02T22:17:01Z", "hours": 1.6061, "text": "Now users can resize the window and the game scales perfectly. There is now a main menu and a game over screen is in the works."}, {"post_id": 20365, "ts": "2026-07-01T22:57:07Z", "hours": 10.1514, "text": "I’ve implemented a “fog of war” so the server only sends to the player the data about the other players that they can actually see. I made the camera follow the current player. The game now uses interpolation to smooth out the data packets coming from the server, so players can enjoy smoother gameplay. Also the tick rate was increased to 69Hz. The network packets are now dynamic, they do not have a fixed size, this saves network bandwidth. What I wanna do next: create some basic UI; create a basic game over screen; introduce new shapes as playable “characters”; maybe introduce a trophy system"}, {"post_id": 18320, "ts": "2026-06-29T12:56:54Z", "hours": 16.1739, "text": "I’ve implemented shooting and health in the game. Next I have to add a reload and ammo count. After that I could start to focus onto implementing some interpolation in the player and bullet’s movement to make it move at 144FPS not at the 30Hz tick rate of the server."}, {"post_id": 15942, "ts": "2026-06-25T22:02:49Z", "hours": 7.7833, "text": "Test the server side movement functionality"}]...
|
Title: Geomatrix by @muntean_andrew | Stardance
D Title: Geomatrix by @muntean_andrew | Stardance
Devlogs:
Test the server side movement functionality
I’ve implemented shooting and health in the game. Next I have to add a reload and ammo count. After that I could start to focus onto implementing some interpolation in the player and bullet’s movement to make it move at 144FPS not at the 30Hz tick rate of the server.
I’ve implemented a “fog of war” so the server only sends to the player the data about the other players that they can actually see. I made the camera follow the current player. The game now uses interpolation to smooth out the data packets coming from the server, so players can enjoy smoother gameplay. Also the tick rate was increased to 69Hz. The network packets are now dynamic, they do not have a fixed size, this saves network bandwidth. What I wanna do next: create some basic UI; create a basic game over screen; introduce new shapes as playable “characters”; maybe introduce a trophy system
Now users can resize the window and the game scales perfectly. There is now a main menu and a game over screen is in the works.
Added a title screen, lobby waiting screen and a game over screen
Introduced a new tech inspired design into the game. Now players that are in a “bush” get invisible. Made the game modular and added support for multiple maps on the server side. P.S.: In Hackatime I have 54 hours logged on this project, 8 more than Stardance logged, this discrepancy appeared 2-3 devlogs ago and I asked on the stardance-help chat about it, but I got no response.
Added support for new shapes and levels. Different shapes have different stats and some of them can be upgraded with a leveling up system. Also added a sine wave animation to a tile.
Implemented settings and a save file. Now whenever the user reopens the game it remembers their last used shape and map so they don’t have to reselect them. The settings UI is only partially made. P.S.: Hackatime shows the 2 linked project times to be 31hrs 55min and 35hrs 8 min respectively, but the total somehow is 57hrs 19 min.
Trying to get the settings menu to work. Firstly I made a general menu class, then I added to it a submenu vector, and I got it to work when I was only focused on getting the resolution to change. But then I tried to implement the frame rate setting and so the class had to be redesigned and now, let’s say it’s halfway there. PS: the total time across the 2 Hackatime projects (server and client) linked to this Stardance project is 71hrs.
Finally got the settings to work, but the user has to press Enter twice for the change to happen, but hey, it’s not a bug, it’s a feature. 😅 I’m getting ready to ship this first alpha version of Geomatrix. It has been such a journey managing UDP packet types, the server physics simulations, the client interpolation and the Raylib rendering pipeline. But at the end of the day, it was fun, and I learned a ton about client-server communication and the massive optimizations you can unlock when you find the right architectural abstractions.
Added Linux support!!!
Currently I’m focusing on UI refinement, currency introduction and “trophy” road implementation. I introduced to the game: Reals - the basic currency of the game (kinda like coins in any other game), you win them after a match and they can be used to buy shapes and upgrades. If it wasn’t obvious, the name comes from the set of real numbers. Imaginaries - they are the “premium” currency in the game which can be used to buy reals. At the moment the game doesn’t really use them or display them.😅 It’s a work in progress so yeah. Quanta - these are the equivalent of trophies, they would determine the skill of the player. You gain then winning matches and also lose them losing matches. At the end of the match (or when the player is eliminated) the server transmits a packet in which is specified the amount of reals and quanta received by the player. At the moment the amount of currency a player has is stored in a txt file in the game directory for simplicity. In the future I think that maybe it could be encrypted somehow with a key given by the server so the player won’t just be able to modify it. In addition to this, I changed the UI for the main screen, the shape selection screen and introduces the ability to see the shape, it’s level, stats, and to upgrade it. I’ll be honest that I took a bit of “inspiration” from the Brawl Stars layout, but tried to change some things, and my UI is still not in it’s final form. Everything is done in Raylib, I still don’t use any PNG textures because I want everything to be vectors cause they are not limited by resolution (which maybe is worse for optimisation) and frankly because I don’t know how and I’m a little afraid to try. 😅 The settings and map selection menu still remained the same, maybe I’ll work on the map selection menu but idk about the settings menu cause it technically works and as the saying goes “if it works, don’t touch it”, and I’m a little afraid of touching it. Also I’m thinking of introducing a scale variable for text, like the UI elements are defined by the width and height of the window, but the font size of the text is it plain pixels, so I’m thinking of making the text scale based on how it looks at 1080p and if the resolution is lower or higher the font size will multiply with the scale that will be the players resolution height divided by 1080. After the UI layout is “done”, which hopefully will happen till the end of the week, I’m starting the development and training of the Predictive Coding AI model that will play my game as a bot. P.S.: I’m trying to make longer devlogs as that was suggested numerous times in the reviews of the first ship.
I designed kinda a rough sketch of how the icons for the game currencies could look like. The sine waves are drawn in Raylib and they are static, as well as the circle and the border. The “R” and “i” in the reals and imaginaries’ icon are font characters. Initially I thought about drawing everything, but then I saw a video about game optimization and that it’s very inefficient for the GPU to render small triangles, which eliminated the drawing in Raylib option, and also it would have been a hassle and a half. So this left 2 choices, load the R and i as a font or an image. I chose to load them as fonts because this allows better scalability, as a font isn’t made of pixels. But I didn’t know how much time I will spend making the font implementation to work. First I had to find the fonts that had my desired characters, which was a little tedious having to download or scroll through the list of characters for each font. For this I had to install Font Forge so I could view every character in the font. After that I had to create a new font and to replace the i and R characters of the font with my special characters and then hook it up to Raylib. After loading up my special font I had to tell Raylib whicch characters to import, and I had to measure the characters visual height so I could align them properly in the icon. Each icon is drawn using their specific function, but I am thinking of combining them into one function in the future.
I’m starting the development of an Predictive Coding AI model that would play my game as a bot. I’ll make it in Python so I can learn a new language and as it is the standard language used in AI development. Currently I’m building a kind of “mega client” which acts as 10 client that connect to the server and it displays the whole map on the screen with all the players. After this I will link the Python project with the “Mega Client” through standard streams as ENet on Python isn’t really a modern supported thing and this will cut down network bandwidth and I think will decrease the CPU overhead while the model trains. When the link between the Python and C++ program is finished then I’ll start the development of the actual AI model, which will involve reading through some scientific papers on the topic. Right now I have 2 of them bookmarked, but you never know when something new may pop up.
These past days I am trying to figure out how to implement the IPC (inter process communication) between Python (where the AI model will be made) and the C++ “megaclient” that acts as 10 clients that connect to the game server. From what I’ve seen one of the easiest ways to implement it is through binary standard streams because I’ll have to move 14KB of data per frame, and because I will unlock the speed of the server physics simulation, it will be like thousands of frames per second, which will add up pretty fast. But the problem isn’t the actual size of data, but the latency, if I would just save it into a txt file my SSD will be hit with thousands of requests every second, so keeping everything in the RAM is why I chose to try and implement the IPC through binary standard streams. But I didn’t yet get it working and my brain hurts a little cause for the first time since the beginning of this project I have absolutely no idea what to do or how to actually solve this issue and I kinda feel lost and a bit demotivated, that’s why this week I managed a bit over 1hr of coding per day. But at the same time I’ve been watching more and more videos about how to build AI models and for the first version I’ll build a standard Backprop model as I’ve read in a paper that Predictive Coding approximates Backprop. The problem is this will have to come after the IPC is implemented successfully, which currently it is not. If anyone sees and reads this I would happily accept any suggestions on how to implement the IPC between Python and C++.
After a bit of a pause on this project because I wanted to clear my mind a little and do the Hackpad hardware project I returned and made the Game Over screen a bit nicer and so everything is beginning to tie together. I wrote Reals and Quanta so that new users will know what those icons mean. In addition I redesigned the map selection screen to show a preview of the map before selecting it. I am also thinking of adding an aim overview and the players just hold the arrow keys or move the right joystick on the controller.
I added the aiming line overlay to make it easier for players to see where they are aiming. It was actually a little bit of spaghetti code involved in the making of this as I use a function to draw the match and another function calculates the last point of the line and returns it but I made it work and it does so beautifully and reliably. I am thinking of maybe adding 1 or 2 more shapes and 1 or 2 new maps and I’d say the project is ready for another ship!
I added 2 new shapes that will fight for supremacy in the math world. They are the Astroid and the Reuleaux Triangle. The Astroid is more of a sniper with long range and lots of damage, but smaller ammo. The Reuleaux Triangle is more of a tank with a shorter range and smaller speed but tons of ammo and damage and also loads of health. Also I added 2 new maps, one is a team mode map and another is a PVE map in which each shape has to fight to be the only one standing at the end of the match.
Ships:
What did you make? What was challenging? What are you proud of? I made a multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging getting the client to render and interpolate the packets sent from the server because without taking into account the time difference the players might overshoot, and because the projectiles didn’t have an id at the time, they would flicker in positions where they shouldn’t have been. I am very proud of my server and the client-server communication because were the most reliable and straightforward things during the development of this project, even though I firstly started to build the server, the collision simulation, aiming, map and shape changes were very intuitive which proved to be extremely reliable. This reliability of the server really did come in handy when debugging the numerous bugs of the client, but most of the bugs that I found in the client are now fixed, but if someone finds more, I wouldn’t be surprised and you can contact me and describe the issue. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client. It is only on Windows at the moment, but in a future update it will be cross platform, even on mobile.
What did you make? What was challenging? What are you proud of? I updated my multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging trying to stay consistent and not get overwhelmed by the loads of things I could add to the game as my time is limited and I easily ended up in a rabbit-hole about AI models that could play my game, which I didn’t end up making. I am proud that even though I wouldn’t say this is the most sophisticated piece of software, I would say it’s pretty rudimentary compared to other games but I’ve come to expect reliability and modularity from it, which really came in handy when adding the maps and shapes. Even though there were some minor bugs here and there with the new maps and shapes at the beginning, it all ended up working with very small tweaks. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client....
|
1793087791.5333245
|
1793174191.5333245
|
|
26068
|
Crunchyroll Audio Helper Extension by @AndyNoob | Crunchyroll Audio Helper Extension by @AndyNoob | Stardance...
|
AndyNoob
|
2
|
15.0
|
99
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T00:45:52Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Crunchy Audio Helper v0.3.0 ship - In this ship, I fixed a extension error with Crunchyroll’s latest update, and also re-introduced compatibility with the Croptix extension! - Crunchy update Previously, the extension relies on calling/accessing obfuscated keys on Crunchyroll webpage internals. Since those keys are subject change whenever the compiler feels like it, I had to switch to a scanning based system to search for the key name rather than hard coding them. - Croptix V2 Recently, Croptix released version 2.0. Unfortunately, the author decided to force the video player to use the Shaka media engine instead of the default Bitmovin on vanilla Crunchy, which means it broke my extension. (And then the author left my PR to revert that hanging for like a week, only to close it) - Well, unfortunately, that meant I had to dig into the webpacked code once again. The thing with Shaka is that their developers decided to obfuscated the living hell out of their code… So I couldn’t just swap the API calls that the extension had been using…….. - Welp, it is what it is… at least it’s compatible once more.", "repo": "https://github.com/AndyNoob/crunchyroll-audio-helper", "demo": "https://chromewebstore.google.com/detail/crunchyroll-audio-extensi/mnojgeohmdbfmlaejggmknkoijbaeaif"}, {"ship_num": 2, "ts": "2026-07-06T05:10:04Z", "hours": 10.0, "multiplier": 9.56, "payout": 99, "blessing": "neutral", "text": "Well, it has been a fun 10 hours of reverse engineering Crunchyroll, but the extension/userscript is (probably) ready! I supposed the most annoying part is figuring out how to reliably inject code onto the page. Afterwards, it was the matter of changing the offset on the raw audio data. If you want to try this out, it’s available on Chrome and as a userscript for Tampermonkey 🥳. Otherwise, GIF and screenshots are available.", "repo": "https://github.com/AndyNoob/crunchyroll-audio-helper", "demo": "https://chromewebstore.google.com/detail/crunchyroll-audio-extensi/mnojgeohmdbfmlaejggmknkoijbaeaif"}]...
|
[{"post_id": 81670, "ts": "202 [{"post_id": 81670, "ts": "2026-10-22T00:36:05Z", "hours": 1.6256, "text": "It’s freaking instant now haha! Applying an offset will reload the player. - Had to do some bs trickery to get Shaka to do my bidding though. Reference: code report on Shaka generated by deepseek-v3-flash , which managed to catch a very specific pattern in the engine. - The engine, upon seeking, will check its copies of DOM’s SourceBuffer for its loaded range. By hijacking that value, one can make Shaka reload the buffer entirely, with the new offset applied. - That’s the gist of it. I pray that Crunchy doesn’t update Shaka anytime soon or I will cry…"}, {"post_id": 81492, "ts": "2026-10-21T14:15:58Z", "hours": 1.2264, "text": "Contrary to the last devlog, I was not, in fact, that close. - Anyways I actually did it now. It turned out to be slightly easier than I thought since I could just access the native SourceBuffer directly. - Still has an issue of needing the buffers to run out before the offset is actually applied, unfortunately"}, {"post_id": 81351, "ts": "2026-10-20T22:30:43Z", "hours": 0.7364, "text": "js got rated limited by crunchy while trying to fix compat with the croptix extension. - for context croptix’s latest recode to v2 switched the default media engine from bitmovin to shaka, which broke this extension (and dropped my user count by 20). the author of croptix isn’t responding to my PR to switch back to bitmovin so i guess i just gotta add shaka support. - unfortunately that is not going so well……….. AHHHHHHHHHHHHHH i was so close too"}, {"post_id": 79414, "ts": "2026-10-13T21:19:47Z", "hours": 1.8683, "text": "AHHHHHHHHHHHHH CRUNCHYROLL WHYY - I really need a better workflow… it’s annoying to switch between Webstorm, then extension refresh tab, then Crunchyroll every time I make a change : - Anyways, since crunchy wants to update their player for no reason, the extension… BROKE. So, I decided to stop hardcoding the obfuscated variables and instead search for them like I do with the modules. - Now, this relies on the unobfuscated names being stable/consistent. If that breaks, I will cry. - Also I literally could not find a interesting thing to take a screenshot of. The workflow is actually so boring…"}, {"post_id": 23290, "ts": "2026-07-06T04:54:25Z", "hours": 1.6928, "text": "Did some cleanup on the code to make it look like I know what I am doing 😆. Not much to show so I’ll just do a screenshot of the tampermonkey script header?"}, {"post_id": 21121, "ts": "2026-07-02T22:27:37Z", "hours": 1.8378, "text": "Alrighty! The audio offset application is actually instant now! Unfortunately, I had to enlist some help from Claude to get the CMAF media data parsing/editing to get it to work : . But, it works like a charm now. Yay. Essentially, now the extension stores the buffered audio, and when offset changes, directly edits the time offset value in the cloned raw audio data (which is in the CMAF format), clears the old buffer, and then adds our cloned version. This also means I have to rewrite the README and re-record the DEMO 🫠. (also, the Jetbrains README editor is lowk goated)"}, {"post_id": 19480, "ts": "2026-06-30T20:11:45Z", "hours": 0.4333, "text": "Made the icon and added some build scripts to automatically export as PNG from the source photoshop file (which I made with Photopea). Took a minute to refine it. It looks a bit weird zoomed out and being so pixelated, but you can tell it’s my extension at least"}, {"post_id": 18085, "ts": "2026-06-29T02:32:45Z", "hours": 2.7017, "text": "Well, I got the extension loaded as a userscript in Tampermonkey. But I can’t seem to figure out why it wouldn’t auto install my script from the Github raw user content page"}, {"post_id": 16467, "ts": "2026-06-26T20:15:11Z", "hours": 1.2333, "text": "Ok. Dug into Crunchyroll’s code a bit more and maybe found a way to apply the offset faster instead of waiting for the previous buffers to run out. The video doesn’t really make it clear (recording freezes because DRM protection), but the audio updated when the timeline jumped. The delay was about a few seconds. Gonna go test tis on Chrome now 🙏."}, {"post_id": 16060, "ts": "2026-06-26T03:01:38Z", "hours": 1.0486, "text": "Managed to style this thing. Actually works pretty well! I wanted to get rid of those ugly up/down arrows, but it’s really annoying to get rid of for some reason… Whatever. Probably will upload this both as an extension and as a Tampermonkey user script."}, {"post_id": 15999, "ts": "2026-06-25T23:50:32Z", "hours": 1.4539, "text": "First devlog! In the past 4 hours or so (poking the website doesn’t count towards Hackatime unfortunately), I managed to monkey patch Crunchyroll’s web packed audio buffering code. After that, I figured out how to force the video player to error out so that it reloads itself. So, the main functionality of the helper extension is done (I think)! Other than that, I managed to inject a little button into the video player :). Credits to Google Material Icons. Gonna go make this button work now… yay."}]...
|
Title: Crunchyroll Audio Helper Extension by @Andy Title: Crunchyroll Audio Helper Extension by @AndyNoob | Stardance
Devlogs:
First devlog! In the past 4 hours or so (poking the website doesn’t count towards Hackatime unfortunately), I managed to monkey patch Crunchyroll’s web packed audio buffering code. After that, I figured out how to force the video player to error out so that it reloads itself. So, the main functionality of the helper extension is done (I think)! Other than that, I managed to inject a little button into the video player :). Credits to Google Material Icons. Gonna go make this button work now… yay.
Managed to style this thing. Actually works pretty well! I wanted to get rid of those ugly up/down arrows, but it’s really annoying to get rid of for some reason… Whatever. Probably will upload this both as an extension and as a Tampermonkey user script.
Ok. Dug into Crunchyroll’s code a bit more and maybe found a way to apply the offset faster instead of waiting for the previous buffers to run out. The video doesn’t really make it clear (recording freezes because DRM protection), but the audio updated when the timeline jumped. The delay was about a few seconds. Gonna go test tis on Chrome now 🙏.
Well, I got the extension loaded as a userscript in Tampermonkey. But I can’t seem to figure out why it wouldn’t auto install my script from the Github raw user content page
Made the icon and added some build scripts to automatically export as PNG from the source photoshop file (which I made with Photopea). Took a minute to refine it. It looks a bit weird zoomed out and being so pixelated, but you can tell it’s my extension at least
Alrighty! The audio offset application is actually instant now! Unfortunately, I had to enlist some help from Claude to get the CMAF media data parsing/editing to get it to work : . But, it works like a charm now. Yay. Essentially, now the extension stores the buffered audio, and when offset changes, directly edits the time offset value in the cloned raw audio data (which is in the CMAF format), clears the old buffer, and then adds our cloned version. This also means I have to rewrite the README and re-record the DEMO 🫠. (also, the Jetbrains README editor is lowk goated)
Did some cleanup on the code to make it look like I know what I am doing 😆. Not much to show so I’ll just do a screenshot of the tampermonkey script header?
AHHHHHHHHHHHHH CRUNCHYROLL WHYY - I really need a better workflow… it’s annoying to switch between Webstorm, then extension refresh tab, then Crunchyroll every time I make a change : - Anyways, since crunchy wants to update their player for no reason, the extension… BROKE. So, I decided to stop hardcoding the obfuscated variables and instead search for them like I do with the modules. - Now, this relies on the unobfuscated names being stable/consistent. If that breaks, I will cry. - Also I literally could not find a interesting thing to take a screenshot of. The workflow is actually so boring…
js got rated limited by crunchy while trying to fix compat with the croptix extension. - for context croptix’s latest recode to v2 switched the default media engine from bitmovin to shaka, which broke this extension (and dropped my user count by 20). the author of croptix isn’t responding to my PR to switch back to bitmovin so i guess i just gotta add shaka support. - unfortunately that is not going so well……….. AHHHHHHHHHHHHHH i was so close too
Contrary to the last devlog, I was not, in fact, that close. - Anyways I actually did it now. It turned out to be slightly easier than I thought since I could just access the native SourceBuffer directly. - Still has an issue of needing the buffers to run out before the offset is actually applied, unfortunately
It’s freaking instant now haha! Applying an offset will reload the player. - Had to do some bs trickery to get Shaka to do my bidding though. Reference: code report on Shaka generated by deepseek-v3-flash , which managed to catch a very specific pattern in the engine. - The engine, upon seeking, will check its copies of DOM’s SourceBuffer for its loaded range. By hijacking that value, one can make Shaka reload the buffer entirely, with the new offset applied. - That’s the gist of it. I pray that Crunchy doesn’t update Shaka anytime soon or I will cry…
Ships:
Well, it has been a fun 10 hours of reverse engineering Crunchyroll, but the extension/userscript is (probably) ready! I supposed the most annoying part is figuring out how to reliably inject code onto the page. Afterwards, it was the matter of changing the offset on the raw audio data. If you want to try this out, it’s available on Chrome and as a userscript for Tampermonkey 🥳. Otherwise, GIF and screenshots are available.
Crunchy Audio Helper v0.3.0 ship - In this ship, I fixed a extension error with Crunchyroll’s latest update, and also re-introduced compatibility with the Croptix extension! - Crunchy update Previously, the extension relies on calling/accessing obfuscated keys on Crunchyroll webpage internals. Since those keys are subject change whenever the compiler feels like it, I had to switch to a scanning based system to search for the key name rather than hard coding them. - Croptix V2 Recently, Croptix released version 2.0. Unfortunately, the author decided to force the video player to use the Shaka media engine instead of the default Bitmovin on vanilla Crunchy, which means it broke my extension. (And then the author left my PR to revert that hanging for like a week, only to close it) - Well, unfortunately, that meant I had to dig into the webpacked code once again. The thing with Shaka is that their developers decided to obfuscated the living hell out of their code… So I couldn’t just swap the API calls that the extension had been using…….. - Welp, it is what it is… at least it’s compatible once more....
|
1793101850.5809581
|
1793188250.5809581
|
|
26084
|
MagnOS by @ABN | Stardance
|
ABN
|
2
|
15.0
|
71
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T00:52:53Z", "hours": 10.0, "multiplier": 7.34, "payout": 71, "blessing": "neutral", "text": "I made a magnet themed OS called MagnOS. This OS’s standout feature is the ability to flip the polarity of the windows to make them either attract or repel each other. The goal is to let people be able to organize related windows and put them where they want to. I added a switch which toggles window outlines between red and blue, and linked windows can be dragged together. Along with this feature, I also added a scientific calculator, a music player, and a search app. Windows are also scalable now by dragging the corners, allowing even more freedom to the user. So altogether, 5 new features. The most challenging part was getting the magnetism feature working; I couldn’t find any references online, and even after the core function was working, there were a bunch of number tweaks to be made. Generally speaking, I’m proud of making an HTML site that goes above and beyond, expanding on my previous ship for the more limited mission. I’m also proud of some of the intentional choices I made, like adding feedback to windows snapping and creating gradients on the magnetism switches. For anyone who wants to test my project, just head to the demo URL, since it is just a web page you can run in your browser. The magnetism stuff should be pretty intuitive to use, but it can be a bit janky if you spawn many windows on top of each other. Thanks for reading!", "repo": "https://github.com/abn3000/magnos", "demo": "https://abn3000.github.io/magnos/"}, {"ship_num": 2, "ts": "2026-07-06T01:19:48Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a magnet-themed OS, with a red and blue design. I added a welcome window and a notes app, both of which can be dragged around. For some bonus features, I added the ability to drag the app icon, as well as an editable taskbar “To Do” item. The most challenging part of designing this was getting the icon for the app to be draggable without having the app open when dragged. I am proud of this OS, since I have limited experience with HTML, and almost no experience in combining it with JavaScript. To test it out, just head to the attached link (it’s hosted using Github pages).", "repo": "https://github.com/abn3000/magnos", "demo": "https://abn3000.github.io/magnos/"}]...
|
[{"post_id": 73366, "ts": "202 [{"post_id": 73366, "ts": "2026-09-25T00:23:22Z", "hours": 6.8256, "text": "Final Update Scalable Windows It wouldn’t really be useful for productivity if you couldn’t shrink the apps that can stay off to the side, so now they can be shrunk and still attached to other windows! This was definitely the hardest part, and I’m not 100% sure it works in all cases when windows are already magnetized. Snapping Design Previously, I was able to make the windows’ edges change to white when connected. After doing some more Googling, I was able to make a sort of pulse that acts as feedback when the super snaps the windows together (I’m very proud of this). If that’s not enough, it also plays a snap sound now. Search Fix I noticed that some OS’s make their search app replace the current tab, which makes the OS tab go away. I fixed mine to have it open a new tab with your query. End of the Line This will be the final devlog for MagnOS, at least before my first WebOS 2 ship. I’ve added 3 new apps and a big new feature, which I hope Stardancers will enjoy."}, {"post_id": 67028, "ts": "2026-09-13T02:09:47Z", "hours": 2.1383, "text": "Big Update Magnetism Features Click a switch on a window to swap it between red mode and blue mode. Opposites attract, while like poles repel. The main feature of this OS. Calculator Not just a four-function one, but scientific with all the bells and whistles! Music Player Comes with all the basic features you’d expect (except maybe more than one song, but I feel like the song choice is self-explanatory). Next Time I have a search feature that I want to properly flesh out so that it’s actually usable. Also, I want to make scalable windows, but I’ve been having a lot of trouble getting that to be separate from the dragging functionality."}, {"post_id": 25046, "ts": "2026-07-09T00:17:57Z", "hours": 0.7333, "text": "Looks pretty sketchy… Introducing the MagSketch app, which comes with different colours, pen sizes, and even a colour picker (I’m pretty proud of that one). Getting the canvas to work was pretty challenging, but there are plenty of guides online that really helped speed things up."}, {"post_id": 22198, "ts": "2026-07-04T15:35:53Z", "hours": 3.1514, "text": "What a drag… I’ve updated quite a bit since the last devlog, so the windows are now draggable, closable, openable, all that jazz. We also have some editability: the MagNotes app is up and working as a simple notepad, and the to-do list in the taskbar can be updated. One app is a little boring, though, so I think we can step things up in the coming days. The end of WebOS 1 is in sight!"}, {"post_id": 17962, "ts": "2026-06-28T22:28:49Z", "hours": 1.3928, "text": "Are we sure we’re on task right now? The bottom bar is ready, except for that to-do button in the centre. That can be made inputtable and working once I get a bit more in-depth on my JavaScript. Right now, we have a window of content, the taskbar, and a nice screensaver background (this might be a placeholder, but I kind of like it). Moving on to some clickability!"}, {"post_id": 17361, "ts": "2026-06-28T03:37:48Z", "hours": 0.9319, "text": "Welcome! I’ve made the welcome page for MagnOS, including the basics on what it does, and a little introduction to how magnets work. That’s the basic HTML and CSS, but JavaScript (a.k.a. the hard stuff) is yet to come. If this pans out how I hope, I think the OS can really be a cool thing to mess around with, and I might even use the code for my personal productivity!"}]...
|
Title: MagnOS by @ABN | Stardance
Devlogs:
Welcom Title: MagnOS by @ABN | Stardance
Devlogs:
Welcome! I’ve made the welcome page for MagnOS, including the basics on what it does, and a little introduction to how magnets work. That’s the basic HTML and CSS, but JavaScript (a.k.a. the hard stuff) is yet to come. If this pans out how I hope, I think the OS can really be a cool thing to mess around with, and I might even use the code for my personal productivity!
Are we sure we’re on task right now? The bottom bar is ready, except for that to-do button in the centre. That can be made inputtable and working once I get a bit more in-depth on my JavaScript. Right now, we have a window of content, the taskbar, and a nice screensaver background (this might be a placeholder, but I kind of like it). Moving on to some clickability!
What a drag… I’ve updated quite a bit since the last devlog, so the windows are now draggable, closable, openable, all that jazz. We also have some editability: the MagNotes app is up and working as a simple notepad, and the to-do list in the taskbar can be updated. One app is a little boring, though, so I think we can step things up in the coming days. The end of WebOS 1 is in sight!
Looks pretty sketchy… Introducing the MagSketch app, which comes with different colours, pen sizes, and even a colour picker (I’m pretty proud of that one). Getting the canvas to work was pretty challenging, but there are plenty of guides online that really helped speed things up.
Big Update Magnetism Features Click a switch on a window to swap it between red mode and blue mode. Opposites attract, while like poles repel. The main feature of this OS. Calculator Not just a four-function one, but scientific with all the bells and whistles! Music Player Comes with all the basic features you’d expect (except maybe more than one song, but I feel like the song choice is self-explanatory). Next Time I have a search feature that I want to properly flesh out so that it’s actually usable. Also, I want to make scalable windows, but I’ve been having a lot of trouble getting that to be separate from the dragging functionality.
Final Update Scalable Windows It wouldn’t really be useful for productivity if you couldn’t shrink the apps that can stay off to the side, so now they can be shrunk and still attached to other windows! This was definitely the hardest part, and I’m not 100% sure it works in all cases when windows are already magnetized. Snapping Design Previously, I was able to make the windows’ edges change to white when connected. After doing some more Googling, I was able to make a sort of pulse that acts as feedback when the super snaps the windows together (I’m very proud of this). If that’s not enough, it also plays a snap sound now. Search Fix I noticed that some OS’s make their search app replace the current tab, which makes the OS tab go away. I fixed mine to have it open a new tab with your query. End of the Line This will be the final devlog for MagnOS, at least before my first WebOS 2 ship. I’ve added 3 new apps and a big new feature, which I hope Stardancers will enjoy.
Ships:
I made a magnet-themed OS, with a red and blue design. I added a welcome window and a notes app, both of which can be dragged around. For some bonus features, I added the ability to drag the app icon, as well as an editable taskbar “To Do” item. The most challenging part of designing this was getting the icon for the app to be draggable without having the app open when dragged. I am proud of this OS, since I have limited experience with HTML, and almost no experience in combining it with JavaScript. To test it out, just head to the attached link (it’s hosted using Github pages).
I made a magnet themed OS called MagnOS. This OS’s standout feature is the ability to flip the polarity of the windows to make them either attract or repel each other. The goal is to let people be able to organize related windows and put them where they want to. I added a switch which toggles window outlines between red and blue, and linked windows can be dragged together. Along with this feature, I also added a scientific calculator, a music player, and a search app. Windows are also scalable now by dragging the corners, allowing even more freedom to the user. So altogether, 5 new features. The most challenging part was getting the magnetism feature working; I couldn’t find any references online, and even after the core function was working, there were a bunch of number tweaks to be made. Generally speaking, I’m proud of making an HTML site that goes above and beyond, expanding on my previous ship for the more limited mission. I’m also proud of some of the intentional choices I made, like adding feedback to windows snapping and creating gradients on the magnetism switches. For anyone who wants to test my project, just head to the demo URL, since it is just a web page you can run in your browser. The magnetism stuff should be pretty intuitive to use, but it can be a bit janky if you spawn many windows on top of each other. Thanks for reading!...
|
1792993987.5820916
|
1793080387.5820916
|
|
26175
|
PURFORATE by @yashasvib | Stardance
|
yashasvib
|
2
|
16.0
|
66
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-03T10:33:19Z", "hours": 6.0, "multiplier": 8.49, "payout": 47, "blessing": "neutral", "text": "PURFORATE HI EVERYBODY , WELCOME TO YET ANOTHER PROJECT OF MINE !! this is purforate , a simple game hub - where you will find that all the games are created by me , myself and I . i had quite a story behind it , i wanted to learn to make all types of simple, complex,easy,hard,oneshot,1000000shot games and i thought why not collect them and make a full game hub . definately i was going to build 15-20 games and i think i’ll add 15-20 more making it a full game hub of approx. 30-40 games . this number can hugely vary cuz you know i’m one of the most laziest persons alive . so lets talk about what all i actually use Languages used for devlopment of this application so i used 1-HTML 2-CSS 3-JS (these 3 are my go to favorite languages i personally think they are easy and do most of the work easily plus i learn them in my school as on opptional subject so that’s a plus point ) AI Usage declaration so i’d like to come straight to the list i cretaed to make sure i dont miss anything 1- it is used for debugging and solving unexpected guest - ERROR!! 2-some content has been created by AI (a seprate README section dedicated to that ) 3-ideas for some games has been taken by AI (such as i asked for a list of 100 games and i selected some game from it ) THINGS THAT HAS BEEN CREATED BY AI things that has been created by AI is mentioned in the big bold letters in the webs only …! 1- the introduction video in the RUNNER GAME (ghost version)has been created by AI and also has been mentioned in the video itself 2-the tutorials i used to learn these games are partial AI and partial youtube this project id still ongoing and i had to ship it cuz my other project was ready and this was anyways gonna time so i shipped it so that i can ship that project . i have a lot of things planned for this like i want to make a major game like inspired by The Apothecary Diaries . so i just need to remove this outta way for that project for a while . <3 love you all ! i hope that’s all i will try keep things updated bye !!", "repo": "https://github.com/yashasvi-2012-star/VIPER-VIPER", "demo": "https://viper-viperyuqi.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-16T06:34:46Z", "hours": 10.0, "multiplier": 2.0, "payout": 19, "blessing": "neutral", "text": "HEY !! this is a simple game of snake . I wanted to learn to make new games and master them completely so I started with the basics !! this game is so simple most of you have once or twice ever seen , and I don’t have much to explain much bout it and this is one of the most simplest project that didn’t bring much of sleepless nights like my other projects did !!", "repo": "https://github.com/yashasvi-2012-star/VIPER-VIPER", "demo": "https://viper-viperyuqi.vercel.app/"}]...
|
[{"post_id": 38769, "ts": "202 [{"post_id": 38769, "ts": "2026-08-01T10:25:39Z", "hours": 0.9089, "text": "hi guys !! i did add some more features to the game such as smooth control and dual controls (it was quite easy than i expected ) and connected and polished my webs . i also made the search bar functional so that you all can search game (they are only three !!) i planned to add 20-30 games but i am gonna ship it at 3 games only cuz this is absolutely gonna take time and my other project is also ready to ship ! so that’s all bye !! SECRET : I HAVE SEVERAL ELEMENTS FOR A SECRET UPCOMING GAME !!"}, {"post_id": 38095, "ts": "2026-07-31T09:46:06Z", "hours": 4.6458, "text": "hi !! GUYSS !! I thought if I am learning to make games why not make a game hub !??!! so that is what here is I upgraded this project from a simple game to a big game hub (tho it only contain like 3 games ). AND I EVEN ADDED MY FAVORITE GROUP AS BACKGROUND ! .I made a simple search bar which will search within the games name and show ‘not found ’ if nothing matches . I made three games which are - a simple snake game , a Tetris cute version and a ghost inspired runner game .(this game uses a AI introduction Video ! ) I will be adding more 100 games because my goal is to learn top 100 games to make !! hope my goal is archeived! so that’s all meet u in the next vlog !! bye !!"}, {"post_id": 29281, "ts": "2026-07-16T02:58:22Z", "hours": 0.2769, "text": "HI !! THIUS TIME I WORKED ON spawn particle which means -’the red dot which the snake eats appear when ’ this is also gonna be a short update and I even did some UI changes like making the colour pallet more symphanized !! bye !!"}, {"post_id": 29268, "ts": "2026-07-16T02:31:36Z", "hours": 0.2678, "text": "HI !! THIS IS GONNA BE SHORT CUZ I WROTE ONLY THE README TODAY ! BYE !"}, {"post_id": 29261, "ts": "2026-07-16T02:11:05Z", "hours": 8.9964, "text": "HEY !! I made this game to learn making / coding different - different types of game this doesn’t have many things to understand and this is easy and thus doesn’t have anything to share in devlogs that complicates. so my devlogs readme and everything else is just gonna talk bout different stages of this game and different updates and all thank you !!"}]...
|
Title: PURFORATE by @yashasvib | Stardance
Devlog Title: PURFORATE by @yashasvib | Stardance
Devlogs:
HEY !! I made this game to learn making / coding different - different types of game this doesn’t have many things to understand and this is easy and thus doesn’t have anything to share in devlogs that complicates. so my devlogs readme and everything else is just gonna talk bout different stages of this game and different updates and all thank you !!
HI !! THIS IS GONNA BE SHORT CUZ I WROTE ONLY THE README TODAY ! BYE !
HI !! THIUS TIME I WORKED ON spawn particle which means -’the red dot which the snake eats appear when ’ this is also gonna be a short update and I even did some UI changes like making the colour pallet more symphanized !! bye !!
hi !! GUYSS !! I thought if I am learning to make games why not make a game hub !??!! so that is what here is I upgraded this project from a simple game to a big game hub (tho it only contain like 3 games ). AND I EVEN ADDED MY FAVORITE GROUP AS BACKGROUND ! .I made a simple search bar which will search within the games name and show ‘not found ’ if nothing matches . I made three games which are - a simple snake game , a Tetris cute version and a ghost inspired runner game .(this game uses a AI introduction Video ! ) I will be adding more 100 games because my goal is to learn top 100 games to make !! hope my goal is archeived! so that’s all meet u in the next vlog !! bye !!
hi guys !! i did add some more features to the game such as smooth control and dual controls (it was quite easy than i expected ) and connected and polished my webs . i also made the search bar functional so that you all can search game (they are only three !!) i planned to add 20-30 games but i am gonna ship it at 3 games only cuz this is absolutely gonna take time and my other project is also ready to ship ! so that’s all bye !! SECRET : I HAVE SEVERAL ELEMENTS FOR A SECRET UPCOMING GAME !!
Ships:
HEY !! this is a simple game of snake . I wanted to learn to make new games and master them completely so I started with the basics !! this game is so simple most of you have once or twice ever seen , and I don’t have much to explain much bout it and this is one of the most simplest project that didn’t bring much of sleepless nights like my other projects did !!
PURFORATE HI EVERYBODY , WELCOME TO YET ANOTHER PROJECT OF MINE !! this is purforate , a simple game hub - where you will find that all the games are created by me , myself and I . i had quite a story behind it , i wanted to learn to make all types of simple, complex,easy,hard,oneshot,1000000shot games and i thought why not collect them and make a full game hub . definately i was going to build 15-20 games and i think i’ll add 15-20 more making it a full game hub of approx. 30-40 games . this number can hugely vary cuz you know i’m one of the most laziest persons alive . so lets talk about what all i actually use Languages used for devlopment of this application so i used 1-HTML 2-CSS 3-JS (these 3 are my go to favorite languages i personally think they are easy and do most of the work easily plus i learn them in my school as on opptional subject so that’s a plus point ) AI Usage declaration so i’d like to come straight to the list i cretaed to make sure i dont miss anything 1- it is used for debugging and solving unexpected guest - ERROR!! 2-some content has been created by AI (a seprate README section dedicated to that ) 3-ideas for some games has been taken by AI (such as i asked for a list of 100 games and i selected some game from it ) THINGS THAT HAS BEEN CREATED BY AI things that has been created by AI is mentioned in the big bold letters in the webs only …! 1- the introduction video in the RUNNER GAME (ghost version)has been created by AI and also has been mentioned in the video itself 2-the tutorials i used to learn these games are partial AI and partial youtube this project id still ongoing and i had to ship it cuz my other project was ready and this was anyways gonna time so i shipped it so that i can ship that project . i have a lot of things planned for this like i want to make a major game like inspired by The Apothecary Diaries . so i just need to remove this outta way for that project for a while . <3 love you all ! i hope that’s all i will try keep things updated bye !!...
|
1792993703.4157171
|
1793080103.4157171
|
|
26237
|
WebOS Air by @Charlie_Coder | Stardance
|
Charlie_Coder
|
2
|
5.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T06:56:04Z", "hours": 2.0, "multiplier": 4.46, "payout": 6, "blessing": "neutral", "text": "I have made a WebOS for those who have an interest in aviation. I am going to continue to add more features, but so far there is the following: Welcome Screen Cool aircraft background Aviation Photos Notepad that saves to localstorage Weather Aviation Facts Iframe to flight tracking map Flight tracker uses lazy loading Moveable and close-able windows that change the one on top to most recently accessed Settings page with 12/24 hour time I have made this project as a part of missions WebOS 1 and WebOS 2. I hope you like this, and feel free to use this OS yourself for aviation-based needs!", "repo": "https://github.com/CharlieLindsay/webosair", "demo": "https://webosair.charleilei.dpdns.org"}, {"ship_num": 2, "ts": "2026-06-30T04:46:47Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made an WebOS for those who have an interest in aviation. I am going to continue to add more features, but so far there is the following: Welcome Screen Cool background Aviation Photos Notepad that saves to localstorage Aviation Facts Moveable and close-able windows that change the one on top to most recently accessed I am really proud of all of this, especially when I managed to get my first window to work. I went with the guide a lot of the way, but made my own changes and additions.", "repo": "https://github.com/CharlieLindsay/webosair", "demo": "https://webosair.charleilei.dpdns.org"}]...
|
[{"post_id": 27547, "ts": "202 [{"post_id": 27547, "ts": "2026-07-13T06:50:10Z", "hours": 0.4033, "text": "I got a flight tracking map going! I found a free flight map service that provides iframe code straight for sites, so I have used that for this step. I am going to do some more touchups, and then I will be ready to ship!"}, {"post_id": 27516, "ts": "2026-07-13T04:32:43Z", "hours": 0.3319, "text": "I got the settings page working! I have plans to add more settings (possibly), but I am just happy to have a 12 hour vs 24 hour toggle working. I am not very good with JavaScript, so I am proud of this."}, {"post_id": 27072, "ts": "2026-07-12T09:22:47Z", "hours": 0.4181, "text": "Got the weather window working!"}, {"post_id": 27009, "ts": "2026-07-12T04:35:48Z", "hours": 0.3803, "text": "I am starting the WebOS 2 mission now My addition plans Live Data Window Settings Window Weather"}, {"post_id": 18977, "ts": "2026-06-30T04:41:22Z", "hours": 0.8575, "text": "I have added a lot more, including photos, facts, a notepad that saves to local storage, and windows layering on top. I am very proud and am ready to ship!"}, {"post_id": 18096, "ts": "2026-06-29T03:08:16Z", "hours": 0.3875, "text": "I started adding more windows that can be dragged and closed."}, {"post_id": 17477, "ts": "2026-06-28T08:46:08Z", "hours": 1.0664, "text": "Time added, and the window can now be closed and opened using the bar at the bottom, and the red button on the window. It can be dragged around the screen using the handle bar at the top of the window."}, {"post_id": 16811, "ts": "2026-06-27T09:23:30Z", "hours": 0.4061, "text": "I’m actually really proud of this. I have got the top bar started, changed some styling and adjusted some stuff behind the scenes (and as per the guide) to help ensure everything will work still as I add more to the operating system."}, {"post_id": 16789, "ts": "2026-06-27T08:03:27Z", "hours": 0.3781, "text": "I started the guide, and made the site so you can’t scroll when the background isn’t just right. The background I found doesn’t require attribution. I also made the tag for the welcome 50% opaque."}]...
|
Title: WebOS Air by @Charlie_Coder | Stardance
De Title: WebOS Air by @Charlie_Coder | Stardance
Devlogs:
I started the guide, and made the site so you can’t scroll when the background isn’t just right. The background I found doesn’t require attribution. I also made the tag for the welcome 50% opaque.
I’m actually really proud of this. I have got the top bar started, changed some styling and adjusted some stuff behind the scenes (and as per the guide) to help ensure everything will work still as I add more to the operating system.
Time added, and the window can now be closed and opened using the bar at the bottom, and the red button on the window. It can be dragged around the screen using the handle bar at the top of the window.
I started adding more windows that can be dragged and closed.
I have added a lot more, including photos, facts, a notepad that saves to local storage, and windows layering on top. I am very proud and am ready to ship!
I am starting the WebOS 2 mission now My addition plans Live Data Window Settings Window Weather
Got the weather window working!
I got the settings page working! I have plans to add more settings (possibly), but I am just happy to have a 12 hour vs 24 hour toggle working. I am not very good with JavaScript, so I am proud of this.
I got a flight tracking map going! I found a free flight map service that provides iframe code straight for sites, so I have used that for this step. I am going to do some more touchups, and then I will be ready to ship!
Ships:
I have made an WebOS for those who have an interest in aviation. I am going to continue to add more features, but so far there is the following: Welcome Screen Cool background Aviation Photos Notepad that saves to localstorage Aviation Facts Moveable and close-able windows that change the one on top to most recently accessed I am really proud of all of this, especially when I managed to get my first window to work. I went with the guide a lot of the way, but made my own changes and additions.
I have made a WebOS for those who have an interest in aviation. I am going to continue to add more features, but so far there is the following: Welcome Screen Cool aircraft background Aviation Photos Notepad that saves to localstorage Weather Aviation Facts Iframe to flight tracking map Flight tracker uses lazy loading Moveable and close-able windows that change the one on top to most recently accessed Settings page with 12/24 hour time I have made this project as a part of missions WebOS 1 and WebOS 2. I hope you like this, and feel free to use this OS yourself for aviation-based needs!...
|
1793087696.2090118
|
1793174096.2090118
|
|
26256
|
aeroOS by @arman | Stardance
|
arman
|
2
|
10.0
|
145
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T19:05:41Z", "hours": 8.0, "multiplier": 17.82, "payout": 145, "blessing": "neutral", "text": "What did I make? Picked up where ship #1 left off and turned AeroOS into an actual usable desktop. Added a full boot sequence (shutdown > boot > lock screen > desktop), a top menu bar with working flyouts for battery, wifi, volume, and calendar, and a functional Start menu with search. Four new apps: Settings (wallpaper, sound, network, accounts), File Explorer, Media Player, and a Games Explorer with 5 playable embedded games. Also added a custom right-click context menu and a Browser app. What was challenging? Keeping everything visually consistent as the app count grew. Every new flyout, window, and panel needed the same treatment as the original apps, so I ended up building shared pieces instead of copy pasting styles everywhere. Wiring the boot > lock > desktop flow through session state without it feeling janky took a few tries too. What am I proud of? The flyouts. Getting battery, wifi, volume, and the calendar to all feel like they belong to the same OS. The same borders, same shadows, same footer links was fiddly but it’s the difference between “a pile of components” and “a coherent system.” How to test it? Start on the shutdown screen, hit power, and let it boot through to the lock screen. Click “Log on” to reach the desktop. Try the Start menu (bottom-left) and search for an app by name. Open File Explorer, double-click an audio/video/image file: it’ll launch in Media Player. Check the top-right flyouts (wifi, volume, battery, calendar). Right click the desktop for the context menu.", "repo": "https://github.com/armansinghh/WebOS2", "demo": "https://aero-os.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-01T17:25:00Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did I make? I built AeroOS! It’s a fully functional, browser based desktop OS that’s basically a love letter to the “Frutiger Aero” the popular aesthetic of mid 2000s (think Windows Vista, Windows 7, and early Mac OS X). I built a custom window manager so you can drag and minimize windows, added a 3D glass dock with that classic magnification effect on hover, and threw in a bunch of skeuomorphic apps. right now, it has a Notepad, a detailed mechanical analog clock, a live weather dashboard, and a Welcome app. What was challenging? Honestly, nailing the aesthetic was the hardest part. It is surprisingly difficult to recreate authentic 2000s glass UI using modern CSS. If you aren’t careful, it just ends up looking like modern Apple glassmorphism. Getting that true Frutiger Aero vibe meant stacking crazy complex box shadows, using sharp 50% split linear gradients to get those harsh glass cuts, and layering inner white borders so the UI actually looks like thick, physical acrylic glass. What am I proud of? As a person who loves designing as much as I love web dev, I’m proud of how I was able to blend those two together. I’m really proud of the details, like the vista pearl CSS orb, the red counterweight on the analog clock’s second hand, and the custom Vista style cyan loading ring. Seeing all those tedious, tiny CSS tweaks finally come together into a desktop that actually feels like a real machine from 2007 is just incredibly satisfying. How to test it? Just head over to https://aero-os.vercel.app/ and you’ll be on the desktop. Have fun!", "repo": "https://github.com/armansinghh/WebOS2", "demo": "https://aero-os.vercel.app/"}]...
|
[{"post_id": 29084, "ts": "202 [{"post_id": 29084, "ts": "2026-07-15T18:54:31Z", "hours": 2.2086, "text": "Finally finished polishing up! what I did: Flyouts now have consistent styling. Updated welcome app. Start button became more functional. Created new custom svg icons. Updated settings app to display system, network and user settings. Made a new browser app Made custom hook for volume to sync it across different components. what we do next: ship"}, {"post_id": 28842, "ts": "2026-07-15T11:20:29Z", "hours": 5.9203, "text": "Did so many changes in AeroOS! heres explained in detail: Added boot sequence. shutdownScreen > bootScreen > lockScreen > desktop Updated top menu bar with flyouts (system tray, battery, volume, wifi and calendar) Added more apps. (settings, file explorer, media player and games) Moved wallpaper changing logic to settings File manager content like audio, video and image opens through media viewer. Games Explorer currently supports 5 games, all embedded through <iframe> Added custom right click context menu. Added windows like start button. note: several minor issues, such as unconnected links between the Start menu and applications, are currently known and will be resolved in future. what we do next: polish"}, {"post_id": 20095, "ts": "2026-07-01T16:45:18Z", "hours": 0.7717, "text": "Built 2 more apps for aeroOS! notpad: the notes persist and added bold, italic and underline text formatting too weather: the app supports realtime search using geocoding api and providing weather results using open meteo api other updates: added top menu bar, showing the focused app name on left and icons, time on right. updated dock, removed the time and moved it to top menu bar. wallpaper switcher now supports links, also the wallpapers persist on reload. what we do next? polish and ship"}, {"post_id": 18999, "ts": "2026-06-30T05:03:34Z", "hours": 0.8886, "text": "Added a bunch of new features to aeroOS! a mini dock (temp right now) on bottom left to change wallpapers improved dock design and animation built window component and window manager built 2 simple apps - clock and welcome what we do next? build advance apps"}, {"post_id": 17561, "ts": "2026-06-28T12:06:32Z", "hours": 0.4719, "text": "Js started working on aeroOS! based on frutiger aero design aesthetic, which was really popular during the time i was born anyways tech stack: next js with tailwind what we do next? improve the desktop then we move to apps"}]...
|
Title: aeroOS by @arman | Stardance
Devlogs:
Js s Title: aeroOS by @arman | Stardance
Devlogs:
Js started working on aeroOS! based on frutiger aero design aesthetic, which was really popular during the time i was born anyways tech stack: next js with tailwind what we do next? improve the desktop then we move to apps
Added a bunch of new features to aeroOS! a mini dock (temp right now) on bottom left to change wallpapers improved dock design and animation built window component and window manager built 2 simple apps - clock and welcome what we do next? build advance apps
Built 2 more apps for aeroOS! notpad: the notes persist and added bold, italic and underline text formatting too weather: the app supports realtime search using geocoding api and providing weather results using open meteo api other updates: added top menu bar, showing the focused app name on left and icons, time on right. updated dock, removed the time and moved it to top menu bar. wallpaper switcher now supports links, also the wallpapers persist on reload. what we do next? polish and ship
Did so many changes in AeroOS! heres explained in detail: Added boot sequence. shutdownScreen > bootScreen > lockScreen > desktop Updated top menu bar with flyouts (system tray, battery, volume, wifi and calendar) Added more apps. (settings, file explorer, media player and games) Moved wallpaper changing logic to settings File manager content like audio, video and image opens through media viewer. Games Explorer currently supports 5 games, all embedded through <iframe> Added custom right click context menu. Added windows like start button. note: several minor issues, such as unconnected links between the Start menu and applications, are currently known and will be resolved in future. what we do next: polish
Finally finished polishing up! what I did: Flyouts now have consistent styling. Updated welcome app. Start button became more functional. Created new custom svg icons. Updated settings app to display system, network and user settings. Made a new browser app Made custom hook for volume to sync it across different components. what we do next: ship
Ships:
What did I make? I built AeroOS! It’s a fully functional, browser based desktop OS that’s basically a love letter to the “Frutiger Aero” the popular aesthetic of mid 2000s (think Windows Vista, Windows 7, and early Mac OS X). I built a custom window manager so you can drag and minimize windows, added a 3D glass dock with that classic magnification effect on hover, and threw in a bunch of skeuomorphic apps. right now, it has a Notepad, a detailed mechanical analog clock, a live weather dashboard, and a Welcome app. What was challenging? Honestly, nailing the aesthetic was the hardest part. It is surprisingly difficult to recreate authentic 2000s glass UI using modern CSS. If you aren’t careful, it just ends up looking like modern Apple glassmorphism. Getting that true Frutiger Aero vibe meant stacking crazy complex box shadows, using sharp 50% split linear gradients to get those harsh glass cuts, and layering inner white borders so the UI actually looks like thick, physical acrylic glass. What am I proud of? As a person who loves designing as much as I love web dev, I’m proud of how I was able to blend those two together. I’m really proud of the details, like the vista pearl CSS orb, the red counterweight on the analog clock’s second hand, and the custom Vista style cyan loading ring. Seeing all those tedious, tiny CSS tweaks finally come together into a desktop that actually feels like a real machine from 2007 is just incredibly satisfying. How to test it? Just head over to https://aero-os.vercel.app/ and you’ll be on the desktop. Have fun!
What did I make? Picked up where ship #1 left off and turned AeroOS into an actual usable desktop. Added a full boot sequence (shutdown > boot > lock screen > desktop), a top menu bar with working flyouts for battery, wifi, volume, and calendar, and a functional Start menu with search. Four new apps: Settings (wallpaper, sound, network, accounts), File Explorer, Media Player, and a Games Explorer with 5 playable embedded games. Also added a custom right-click context menu and a Browser app. What was challenging? Keeping everything visually consistent as the app count grew. Every new flyout, window, and panel needed the same treatment as the original apps, so I ended up building shared pieces instead of copy pasting styles everywhere. Wiring the boot > lock > desktop flow through session state without it feeling janky took a few tries too. What am I proud of? The flyouts. Getting battery, wifi, volume, and the calendar to all feel like they belong to the same OS. The same borders, same shadows, same footer links was fiddly but it’s the difference between “a pile of components” and “a coherent system.” How to test it? Start on the shutdown screen, hit power, and let it boot through to the lock screen. Click “Log on” to reach the desktop. Try the Start menu (bottom-left) and search for an app by name. Open File Explorer, double-click an audio/video/image file: it’ll launch in Media Player. Check the top-right flyouts (wifi, volume, battery, calendar). Right click the desktop for the context menu....
|
1793054885.2681262
|
1793141285.2681262
|
|
26398
|
200 MPH Drone RTOS by @Guagyyy | Stardance
|
Guagyyy
|
2
|
139.02
|
2267
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T00:49:05Z", "hours": 106.0, "multiplier": 19.18, "payout": 2024, "blessing": "neutral", "text": "200 MPH Drone RTOS: How it went Simulation to Silicon! When I published the first major update for this project at the 15-hour mark, I essentially had a proof-of-concept. I had managed to write a custom hybrid cooperative/preemptive scheduler and get an ARM Cortex-M7 (on the STM32f756VGTx) assembly context switcher functioning inside the Renode simulator. Although this looked like a massive leap, the project had barely started. Over 100 hours of development have gone into this project since then. The transition from a simulated kernel to a bare-metal flight controller capable of keeping a 200 MPH drone in the air required stripping the system down to its bare components, rewriting the memory architecture, and debugging some of the most frustrating hardware faults I have ever encountered-especially whenever the project just crashed, leaving me no traces as to what went wrong. Software Limitations The biggest turning point was realizing that software simulation can only take you so far. Renode is an amazing tool, but it hid a massive amount of race conditions and timing flaws that only exposed themselves when I finally flashed the code to physical STM32F756 Nucleo board. Sometimes, the MCU would have to reboot every 2 seconds. I spent dozens of hours tracking down massive architectural bugs. One of the worst was a context-switching fault where floating-point math was corrupting the return address in the CPU registers, causing the processor to execute raw garbage data. To fix this, I had to completely restructure the boot sequence and overhaul the memory management. I moved away from static arrays to a dynamic per-task stack allocation system, and implemented a dual-guard memory system. Arguably, this was the most important change as it allowed me to debug tasks way quicker as I instantly could know when the canary values were corrupted. Overhauling the Data Pipelines In order to avoid the 10ms delay of my original blocking pipline (for data transfer), I entirely rewrote the hardware data pipelines multiple times to use a semi-blocking, circular Direct Memory Access (DMA) architecture. Instead of the processor handling the data transfer, the hardware itself moves the bytes from the sensors directly into memory in the background. The DMA streams now trigger precise interrupts at the halfway and full-transfer points, allowing the RTOS to safely parse incoming radio packets and sensor reads without ever risking data overwrites or blocking the main flight loop. Building a Flight Controller I integrated Betaflight’s Actual Rates algorithm with custom expo curves, ensuring that physical stick inputs map perfectly to target velocities. I built a custom SPI driver to pull 24-bit raw pressure and temperature data from a BMP390 barometer, passing it through hypsometric formulas to calculate altitude. For video and telemetry, I moved away from raw UART strings and implemented native MSP DisplayPort communication (for true digital Walksnail Avatar connection). I also built an interactive USB command-line interface. Instead of having to recompile and re-flash the firmware every time a PID value needs to be adjusted, I can plug into the board, pull up a terminal, and manually tune gains, remap CRSF radio channels, or adjust IMU orientation offsets in real time. Final Version The last few weeks have been about refinement and consistency, removing race conditions and overall polishing the code. Now that the RTOS is fully functional, the only things to add are extra features, like a permanent + more expanded CLI, as well as finishing the external RM and linking the ESC drivers. As these are pretty insignificant, I have linked the source of this shipment to the Github project rather than a specific release so that I can update these during review!", "repo": "https://github.com/Guag914/200-MPH-Drone-RTOS/", "demo": "https://github.com/Guag914/200-MPH-Drone-RTOS#interactive--simulation-demo"}, {"ship_num": 2, "ts": "2026-07-15T04:02:12Z", "hours": 15.0, "multiplier": 16.44, "payout": 243, "blessing": "neutral", "text": "Phase 1 (The Custom RTOS Kernel) I am building a custom FPV drone from scratch with my friend in an attempt to achieve 200 mph . At those speeds, standard super loops are far too slow, as a single microsecond of lag means the drone travels feet before making a PID correction. To solve this, I built a custom, hybrid cooperative/preemptive Real-Time Operating System (RTOS) from scratch for the ARM Cortex-M7 (STM32F7)! What Was Challenging? The absolute hardest part of this phase was writing the low-level assembly context switcher ( PendSV_Handler.S ). Hacking the ARM Cortex-M7 registers to physically hot-swap stack pointers ( PSP ) mid-execution without crashing the CPU or corrupting the program state was a massive headache. I had to ensure that when an asynchronous preemption event fires, the assembly code perfectly preserves the execution registers ( R4-R11 plus the hardware-stacked registers), jumps to the high-priority task, and then seamlessly restores the background task right where it left off. Getting the compiler-enforced task overloading working so the kernel cleanly separates periodic tasks from raw interrupts was another huge hurdle, but it makes the whole codebase infinitely more robust. Want to Test It or Write Your Own Tasks? You don’t need physical hardware to watch this run! I’ve packaged the entire project with a Renode simulation script. You can run the interactive emulator with a single command to see the preemption scheduler hijack our counter task live, or you can jump into the user sandbox file and write your own custom tasks. Check out the GitHub Repository to Run the Demo! The README has a quick 5-minute setup guide to get you compiling and simulating your own code in no time.", "repo": "https://github.com/Guag914/200-MPH-Drone-RTOS/", "demo": "https://github.com/Guag914/200-MPH-Drone-RTOS#interactive--simulation-demo"}]...
|
[{"post_id": 82549, "ts": "202 [{"post_id": 82549, "ts": "2026-10-25T06:23:47Z", "hours": 9.7414, "text": "I spent the past week fixing timing issues on the hardware and getting the simulation environment back into a usable state. Although it isn’t 100% yet, I managed to fix a lot of underlying bugs causing the program to fail on actual hardware. Serial Communication and DMA The biggest issue was that manual USART transfers were completely blocking the system. Printing alone was taking around 95 percent of the total execution time. This was destroying the preempt speed and causing weird timing bugs across the board. I rewrote the USART printing logic to offload everything to a background circular DMA task instead. While I was working on the serial connections, I also fixed the UART mapping bugs and moved all logging over to UART4 so it stops fighting with the GPS module on USART3. I also went through stm32f7xx_it.c and fixed the rest of the extern “C” methods. They were previously commented out, which was silently causing their respective DMA HALs to fail. Moving them to the correct user code sections fixed the issue entirely. Simulation Environment and Tooling On the software side, the simulation startup in the HAL was broken and preventing the virtual boards from properly configuring and running. I fixed the initialization sequence so the simulations actually boot correctly now. To make starting the environment even easier for new users, I updated both the run.sh and run.bat scripts with installers that automatically download Renode. This skips the manual installation step completely and gets the simulation running much faster."}, {"post_id": 78931, "ts": "2026-10-12T02:34:08Z", "hours": 8.2783, "text": "Although I haven’t been able to make much progress on the project due to school over the past weeks I did manage to make some substantial project mostly with the scheduler, allowing for fairly good performance on my STM Nucleo boards, rather than it just crashing instantly. 1. Issues with the Old Design The flight controller’s RTOS scheduler wasn’t working under real hardware timing because global variables like currTaskIndex, topOfStack, and excReturn were being modified from multiple entry points simultaneously. Yield calls, interrupt handlers, and the main task-selection logic were all making independent writes to the same shared task control blocks. Whenever a hardware interrupt fired mid-write, stack pointers and exception return values were saved into the wrong taskControlBlocks slot. This created edge cases where preempted tasks were silently double-queued, state tracking completely desynchronized, and time-critical hardware events were dropped during flight. 2. Centralizing Context Switches in PendSV To eliminate these race conditions, all state-selection decisions were moved out of individual execution contexts and consolidated into decideNextTask(), which now runs exclusively inside the PendSV assembly handler. Functions like yieldCurrentTask(), decideNextInterruptTask(), and decideNextScheduledTask() no longer touch global scheduler state or choose which task runs next; they simply update local status flags like TaskState::BLOCKED or TaskState::READY inside brief __disable_irq() critical sections and trigger PendSV using SCB_ICSR_PENDSVSET_Msk. When PendSV fires, decideNextTask() saves outgoingSP and outgoingExcReturn to the active block, sets RUNNING tasks to READY, and runs a two-pass check over taskControlBlocks[]—evaluating high-priority TaskType::INTERRUPT tasks first, then TaskType::SCHEDULED tasks, and falling back to index 0 for idle. Since PendSV is the only place allowed to modify currTaskIndex, concurrent state corruption is structurally impossible."}, {"post_id": 71997, "ts": "2026-09-21T23:26:43Z", "hours": 7.2761, "text": "For the past couple weeks I have been mostly refining small bugs, which were originally rendering the RTOS usless, as well as refactoring the code for simplicity rather than elegancy. 1. Transition to Actual Hardware Renode is great for simulation, but it ended up hiding a bunch of race conditions in the population methods and the main scheduler that led to no code actually running during the IRQ handler calls. I spent a lot of time securing those resources and finally got the scheduler mostly finished up. Also, I decided to just take out the double preempts entirely since they were adding way too much complexity for absolutely zero speed benefits in practice (plus they were creating detrimental but rare race conditions). 2. Code Refactor To make things run a bit more consistent, I restructured how the control loops operate. I ended up merging the dShotGeneration task with the parent IMU control loop, so now everything from reading the sensors to pushing motor commands happens in one clean sequence (rather than including an unnecessary preempt). I also built out a brand new CRSF control loop to handle all the radio parsing and state machine updates in its own dedicated space (just for consistency). Lastly, while doing a final pass on the code, I realized that in my dShotGeneration helper, I had forgot to scale the values by a factor of 1/2000, as the inputs require the value to be between 0 and 1 (not 0 and 2000). 3. Final DMA Iteration The biggest relief was finally getting rid of the old blocking USART system. I finally transitioned away from manually handling the streaming by polling flags in a loop, which was tying up the processor way more than it should have. Everything has been converted over to a blocking DMA system, so the hardware can just handle all the memory transfers in the background while the CPU focuses on actually keeping the drone in the air. Overall, I think that this will be the final iteration of the RTOS DMA pipeline, as now that it is solid and works with all the edge cases, theres no need to change it. 4. Timeline With almost all the major bugs fixed, I am going to ship the project! While it is not 100% done, it will likely be as close as it will get during the timeframe of the Stardance hackathon, and with it so close, theres no reason not to ship. Anyway, I will keep the source as the main project rather than a release, so if I do end up fixing any major bugs, they will get patched either before or during project review (besides most of these bugs are only detectable on actual hardware). I will most likely finish the RTOS in the next couple weeks (by the end of October), and will finish the drivers for the ESC and RM by latest end of November (for more timing refer to the README). Thanks to everyone who supported me throughout this project (hopefully me and my friend can get this drone flying in another Hack Club Hackathon!)."}, {"post_id": 63202, "ts": "2026-09-06T21:25:57Z", "hours": 9.6606, "text": "1. Scheduler Hardening and Task Discovery Spent part of this session making the RTOS scheduler itself more robust. I added a findTaskByName() function so interrupt-driven task lookups happen dynamically instead of relying on hardcoded task indices, which was a fragile setup just waiting to break the moment task registration order changed. Alongside that, I wrapped every one of those lookups with lambdas that throw a proper warning if a task can’t be found, so a missing task fails loudly instead of silently dereferencing a null pointer somewhere downstream. 2. Blocking vs Non-Blocking Scheduled Tasks After a lot of painful debugging, I traced a string of issues (including interrupt tasks silently failing to fire and scheduled tasks stepping on each other) back to non-blocking statements I’d introduced inside scheduled tasks in the previous devlog. I ended up taking those out and reverting scheduled tasks fully back to blocking, which is genuinely what the scheduled zone was designed for in the first place: tasks that don’t need to run in polynomial time and can safely block without putting the drone at risk of crashing. Once that was sorted, I converted the raw USART byte-pushing into a blocking DMA system instead, so streaming is handled by DMA hardware rather than manually pushed byte-by-byte over USART. 3. Flight Loop Refactor and VTX Communication On the flight logic side, I refactored flightLoop() to use lambdas and a state machine so I would never have to yield in the middle of my tasks (which was used previousely for zeroing motor outputs). I also converted the error handling into a proper state machine, so different types of warnings can be caught and handled distinctly instead of lumping every issue into one path, and turned on full debug printing whenever the system is running. Last but not least, I built out a dedicated injector for respondToVTX so I can properly test and simulate VTX communication going forward. 4. Real Hardware Testing Since, I am almost 100% done with the RTOS I bought two NUCLEO-F756ZG’s which will serve as testing the 100% production code rather than the simulation version. I bought two so that one of the boards will be running the real RTOS code, testing DMA reading from USART, SPI, and emitting real motor signals, while the second will be emulating all of my peripherals. When the boards come, if the code does work, it will also mean that the real PCB’s will also work when my friend finishes with them. 5. Next Steps As of now there are a few issues with the double preempt system (for the interrupt tasks) I designed a while back, so I will need to debug that before they arrive. Right now before the boards arrive, I will be finishing up the RTOS blocking DMA pipelines (stripping out IRQ, removing NVIC etc. for scheduled tasks), and performing a bunch of baseline testing in order to prove that the RTOS is capable of flying an actual drone!"}, {"post_id": 52761, "ts": "2026-08-23T03:11:04Z", "hours": 9.6356, "text": "1. CLI Upgrades and Channel Mapping Over the past 5 days, I knocked out some major quality-of-life upgrades for the flight controller. I added customizable channel mapping for CRSF directly through the CLI. By utilizing a combination of references and pointers, I was able to point a volatile alias to certain channel mappings, allowing for completely customizable CRSF channels. While I was in the CLI logic, I also added the ability to configure custom IMU orientations around the z-axis, making it way easier to mount the board in different directions without having to recompile the firmware. 2. DMA Pipeline Fixes and Baro Optimization A big chunk of this session went into debugging and refactoring the hardware data pipelines. I adjusted the ADC population pipeline in order to fix some stream parsing issues, and gave the barometer a massive overhaul. The baro now uses a non-blocking, non-circular DMA setup that relies on a semi-interrupt-driven task call rather than a continuous loop. This enabled me to yield in the middle of the function, and call back later as soon as DMA is finished transferring. I also fixed a massive bug in the DMA setup: the DMA_SxCR_HTIE and DMA_SxCR_TCIE flags were accidentally enabled for the GPS and OSD ring buffers, which would have crashed the whole RTOS by firing unhandled interrupts, causing default HAL and IRQ handlers to run. 3. Walksnail Two-Way Communication Finally, I built out the respondToVTX task to get the drone properly communicating with the Walksnail VTX. Instead of just blindly sending video data out, this sets up true two-way communication over asynchronous UART. By writing a persistent byte-by-byte state machine, the flight controller can now safely parse incoming requests from the VTX without dropping half-packets, allowing me to send back live stick positions and armed status for the OSD menus. The only thing left to do now is handle persistent CLI storage, the logToBlackBox task, integrating the semi-interrupt pipeline with telemetryTX and the OSD, and a few other system tweaks. After that the RTOS will be 100% ready to fly the actual drone."}, {"post_id": 49360, "ts": "2026-08-18T04:16:35Z", "hours": 4.0211, "text": "Complete RTOS Overhaul, Circular DMA Pipelines, and CPU Abort Fixes This update focuses on fine-tuning the RTOS, organizing the scheduler, and rewriting microcontroller memory handling. Renode’s simulated DMA restrictions make software-only pipeline testing nearly impossible, so I plan to buy a physical dev board and Raspberry Pi to validate on silicon. While the Git diff might not look massive, the architecture has evolved from a blocking system to a true preemptive RTOS with precise polynomial timing. 1. Reworking DMA Flow & Standardizing Ring Buffers Sensor and receiver data pipelines are now driven by circular DMA, enabling non-blocking, high-frequency transfers with response times as fast as 0.3 ms (without printToUSART enabled). Everything now relies on ring buffers. Instead of generating complete packets instantly, mock injectors stream bytes directly into the buffers while updating the simulated NDTR register to mirror hardware behavior. if ( byteIdx >= frameLen ) { byteIdx = 0 ; } crsfRingBuffer [ head ] = frameBuf [ byteIdx ++ ]; head = ( head + 1 ) % CRSF_RING_BUFFER_SIZE ; currentBoardConfig . crsf_dma_stream -> NDTR = CRSF_RING_BUFFER_SIZE - head ; Feeding bytes incrementally moves the write head gradually, ensuring the simulation mimics a physical UART and allowing population functions to safely pull data within interrupt locks. 2. DMA Interrupts for Safe Parsing To prevent data overwrites, DMA streams trigger interrupts at the halfway (HTIE) and full-transfer (TCIE) points to queue tasks. Because registers like LISR are read-only in hardware, I implemented a software mock flag system (mock_LISR) for simulation: extern \"C\" void DMA1_Stream0_IRQHandler ( void ) { #ifdef SIMULATION uint32_t flags = mock_LISR ; mock_LISR = 0 ; #else uint32_t flags = DMA1 -> LISR ; #endif if ( flags & DMA_LISR_HTIF0 ) { DMA1 -> LIFCR = DMA_LIFCR_CHTIF0 ; decideNextInterruptTask ( & taskControlBlocks [ 1 ]); } } Functions safely extract data with interrupts disabled, ensuring the CPU never blocks waiting for peripheral transfers. 3. Assembly Bugs & CPU Aborts Debugging nested hardware interrupts exposed massive faults: The context-switching bug: FPU usage or large stack frames corrupted the return address, causing the CPU to execute BX LR with garbage data. Fixed in PendSV_Handler.S by explicitly storing excReturn inside the TaskControlBlock rather than relying on stacked registers. Second, a 0x00000000 Null Return Crash: Scheduled tasks attempted to return natively, popping 0x00000000 from the zero-initialized Link Register and causing a fetch fault. Every task now runs inside an infinite while(true) loop calling yieldCurrentTask() . 4. Clock PLLs & Hardware Re-routing After configuring the STM32CubeMX PLL for a 25 MHz HSE clock, the MCU runs at its full 216 MHz. I added a standardized initSystemGPIOClocks() function to enable peripheral clocks consistently. I also moved motor 3 from TIM1 to TIM4, synchronizing it with the 216MHz clock and freeing up a TIM1 DMA stream exclusively for the upcoming BlackBox logging. Future Updates With the core RTOS stabilized, development shifts to flight-facing systems: hooking the SPI pipeline to the video overlay for live OSD goggle telemetry, adding permanent flash storage for PID tunes/configs, exposing MCU controls via CLI, supporting programmable transmitter bind buttons, building a desktop GUI, and using the freed TIM1 DMA for BlackBox logging. Below, I have attached a screenshot of every single task working, and outputting values in the simulation, something that wasn’t possible for the interrupt tasks until now."}, {"post_id": 48647, "ts": "2026-08-17T03:57:01Z", "hours": 9.6761, "text": "1. Reworking the DMA Flow for Speed So, a lot has been going on lately, starting with a massive rework of the entire DMA flow. The functions are now entirely populated by circular DMA, which is a huge upgrade for the system’s overall performance. This architectural change allows for completely non-blocking, high-frequency calls, hitting response times as fast as 0.03 milliseconds. It basically means the whole data pipeline is significantly faster, and much more responsive than it was in previous versions. 2. Standardizing Ring Buffers and Mock Injectors To make everything more reliable, the DMA now follows a very specific and predictable pattern for both scheduled and interrupt tasks. Everything relies on ring buffers now, whether they are being injected by actual hardware (or simulated) DMA or by my custom simulation scripts. I also reworked the mock injectors so they no longer just return a pre-formatted packet. Instead, they write directly into the ring buffer, which lets me test the exact same parsing pipeline in software, simulating the hardware flow almost exactly like Renode (if only they would ever fix that USART DMA bug…). 3. Assembly BX LR Bug + STMCubeMX Clock PLL I also finally solved the long term BX LR return bug that I literally spent over 20 hours trying to find. Whenever tasks used the FPU or had slightly larger stacks, the return address in the r0 register would just get completely corrupted by the extra data. I fixed this by storing the return address in a dedicated uint value instead of blindly trusting the registers to hold it. That fix alone allowed me to safely re-add telemetryTX and make a bunch of other function logic much more robust. On top of that, I went into STM32CubeMX and reworked the clock PLL manually (it took over 3 hours to solve by hand). By feeding in a 25 MHz HSE clock, I managed to unlock the MCU’s internal clocks to run at their full 216 MHz.I also took some time to clean up the codebase to improve overall readability and commenting. 4. DMA Interrupts for Safe Parsing Another feature is that DMA now triggers interrupts when the ring buffers hit exactly halfway and when they are fully populated. This gives me the time to parse all the incoming values safely without having the risk about data getting overwritten by the next DMA pass before I am done reading it. I set up the IRQ handlers in the code to call the interrupt methods automatically, which ensures the CPU stays completely unblocked and free to handle other flight control tasks almost all the time (overall decreasing headroom). 5. Current Status: NVIC Bug Sadly, the code is actually not functional right now because the NVIC and IRQ pipeline is malfunctioning and just refusing to call the interrupts for reasons I cannot figure out yet. Because of this, I am holding off on pushing the code until I can track down the bug, give everything a final polish, and run some benchmark testing (since I don’t want to commit broken code). Also, sorry for promising a commit a day or two after my last devlog. I got super busy, especially with vacation, but I will try my best to get this sorted. Depending on how long it takes to figure out this NVIC issue, the next commit might drop anywhere from tomorrow to a few weeks from now."}, {"post_id": 41654, "ts": "2026-08-06T00:44:12Z", "hours": 9.5336, "text": "This week was heavily focused on the fine tuning and organization of the RTOS. I spent numerous hours of research and untangling environment setups. I originally tried to build out a complete framework for the drone code without relying on any simulation code, but Renode’s restrictions, specifically with its ability to perform DMA requests, quickly made it clear that path was impossible. To fix this I’m looking into picking up a dev board and a Raspberry Pi so I can test and debug everything on an actual MCU before finally moving the codebase over to the drone. Even though the git won’t look a whole lot different and not a lot of actual code changed, getting these configs finalized (especially in STM32CubeMX) in was a huge step forward for the project. I expect to commit the next version of the code either today or tomorrow, with improvements specifically in TelemetryTX, BlackBoxLogging, and a few other minor changes!"}, {"post_id": 37983, "ts": "2026-07-31T02:30:16Z", "hours": 8.6756, "text": "Major Architecture Upgrade : OSD, Betaflight Rates & Build System Refactor 1. OSD, DMA + SYS First off on the hardware side, I added native MSP-based OSD support for Walksnail video transmitters, built the SPI barometer driver for altitude tracking, and spun up a low-level health task that constantly monitors MPU registers and stack usage in the background. On top of that, I finally fixed the DMA stream conflicts (mainly in STMCubeMX) between TIM1 DShot motor outputs , ADC1, and SPI peripherals, so everything runs without collisions now. 2. SYS Health + Debugging I also implemented a few other low level tasks, allowing me to monitor system health, based upon ram usage and storage used. This task prints out the amount at which each tasks stack is being used, allowing me to effectively debug whether a task was actually overflowing, vs an unrestricted read/write. Furthermore, the original canary values that I used, were completely replaced as they in fact were causing some of the “stack overflow” bugs (via unrestricted reads/write every 1 ms in SysTick_Handler ). 3. Betaflight Rates + CLI Update For flight feel, I implemented Betaflight’s Actual Rates algorithm with custom expo curves, so stick inputs map to target angular velocities with center-stick precision. I also completely separated serial communications by moving the interactive CLI to USART1 (accessible via nc -C localhost 1234 in terminal) and pushing system logs to USART3. Additionally, I removed the old telemetryTX task because its unauthorized reads/writes were completely breaking the RTOS scheduler, and expanded the CLI with a ton of commands for live sensor readings and more PID tuning. Speaking of which, I am planning to create a persistent file in /bin/ , allowing for rates to be stored between runs, rather than being reset each during runtime, and having to be manually configured through the CLI. 4. Overhauled Building Workflow Finally, I overhauled the whole developer workflow and build automation setup. The build.sh and build.bat scripts now auto-configure custom CMake profiles and generate a full disassembly file in /bin/ after every build for fast low-level debugging, while run.sh and run.bat automatically launch the right terminal windows on launch. 5. Future Additions: I’m planning to build a closed-loop Renode simulation matrix to stream hardware data into every peripheral externally, letting me run 100% real production code during SIL testing! For this, I will utilize the currently blank simulate.py as well as certain commands in simulate.resc to create properly formatted dynamic buffers(which are not directly injected into the code), allowing me to properly test the DMA drivers, and many of the memory management helpers."}, {"post_id": 35605, "ts": "2026-07-27T04:22:30Z", "hours": 9.44, "text": "Over the last few days, I wrapped up two major tasks for the flight controller’s core sensor and telemetry stack: the on-screen display (OSD) renderer and the BMP390 barometer subsystem. The OSD engine is now fully hooked up to the state system, giving real-time visual downlinks for critical metrics like flight battery voltage, active flight modes, and height statistics over UART. To keep the execution completely non-blocking, all frame updates are dispatched asynchronously, preventing rendering delays from hindering the performance of the high-frequency control loops. On the barometer side, I implemented altitude tracking using Bosch’s BMP390 sensor over SPI with non-blocking DMA burst transfers. In the 50Hz task loop, incoming 24-bit raw pressure and temperature bytes are assembled and passed through the hypsometric formula to calculate smooth, relative height above ground level (AGL). Although the barometer task is a bit flawed due to floating point register stack errors with the header and end canary values, they don’t seem to be affecting the system in anyway (nor is any data being corrupted). I will find a way to fix these issues before the next commit, as well as the race condition in the interrupt tasks in the next Github commit. After that, it is just system polish and extensive testing before the RTOS will be complete!"}, {"post_id": 33865, "ts": "2026-07-24T04:03:21Z", "hours": 7.1808, "text": "1. Fixing the Stack Overflows at Boot After an entire 25-hour debugging period across 4 days, the RTOS kernel is finally done (for the scheduled tasks). I tracked down a silent bug where several critical scheduled tasks—like powerManagement , lowLevelFailSafe , and telemetryTX —were crashing the MCU on boot. The issue came down to a boot-time dependency lock: tasks were trying to poll hardware registers (like UART TX flags) and read shared drone state variables before the peripherals or producer tasks had time to initialize on Tick 0. By adding an initial yieldCurrentTask() right at the top of these methods, Task Phase Alignment was officially added. This gives the hardware a full cycle to stabilize, preventing buffer overflows and eliminating the cascading task state corruptions that were locking up the scheduler. 2. Custom Stack Sizing & Real-Time Guard Checks Alongside the scheduler fix, I pushed major upgrades to memory safety and task management. Instead of assigning a static stack array to every task, I transitioned to dynamic per-task stack allocations during initialization ( new (std::nothrow) ). Heavy string-parsing and math tasks get larger stacks, while simple toggle tasks stay lightweight. To catch memory issues before they corrupt the heap, I implemented a custom dual guarding system: 0xDEADBEEF is appended at the bottom of the stack to catch standard stack overflows, while a new 0xBEEFCAFE canary value is written to the very top index ( stackSizeWords ) to instantly flag memory breaches in the SysTick_Handler . Furthermore, I refactored powerManagement to use ADC2 in Circular DMA Mode, writing battery telemetry directly to RAM in the background for zero CPU overhead. 3. Transitioning to Walksnail Avatar HD Looking ahead, my and my friend are officially transitioning our existing analog video setup over to a fully integrated Walksnail Avatar HD digital ecosystem. Rather than keeping my custom telemetry task ( telemetryTX ) with heavy string formatting over raw UART, Walksnail allows me to stream standard MSP (MultiWii Serial Protocol) DisplayPort frames straight to the VTX. The Walksnail system will serve as our primary onboard logging source, giving us full OSD telemetry, high-framerate HD video, and precise blackbox data logging. With the RTOS core now stable and non-blocking, our next focus shifts toward “premium” flight controller features, e.g. including custom RC stick expo curves, an expanded USB CLI, and an integrated simulator interface."}, {"post_id": 32665, "ts": "2026-07-21T23:24:15Z", "hours": 9.0794, "text": "I just finished expanding the RTOS architecture, filling out all of the scheduled background tasks to handle real-time flight telemetry, peripheral hardware, and terminal configuration. On the telemetry side, I built out telemetryTX to package battery, status, and GPS data into standard CRSF frames over UART, alongside an NMEA gpsParser that decodes $GNGGA and $GNRMC sentences for live location fixes. I also made powerManagement into its own standalone task so ADC voltage and current metrics can feed into the failsafe logic and telemetry concurrently. To make bench testing and tuning significantly easier, I added usbCLI over USART1, giving me a full interactive shell to tweak PID gains (Kp, Ki, Kd), dump raw IMU data, and inspect hardware states on the fly without needing to reflash firmware. To keep the physical quad safe and responsive during flight, I added updatePeripherals for LED status patterns and buzzer warnings, along with a dedicated Independent Watchdog (IWDG) task running as a low-priority fail-safe to trigger hardware MCU resets if the scheduler ever freezes. On the project structure side, CMake now routes all output binaries straight into a clean ./bin/ directory so nobody has to compile the source manually just to run the .elf target in Renode. I also introduced a -DENABLE_DEBUG flag, allowing me to cleanly toggle between complete USART log prints across every loop or a blank terminal environment meant purely for the CLI shell. While all the background subsystems and scheduled task priorities are fully mapped out, I’m currently figuring out a few lingering RTOS bugs—specifically around stack allocation, causing stack overflow flags on certain scheduled tasks, along with scheduling starvation where context switching isn’t releasing task blocks properly. Because I want to ensure the scheduler kernel is 100% complete before pushing broken stack frames to the main branch, the GitHub repository will be updated with the complete, bug-fixed code later today. Everything is moving in the right direction, and getting these background tasks finalized brings me one step closer to full flight hardware deployment!"}, {"post_id": 31067, "ts": "2026-07-19T04:58:26Z", "hours": 2.5139, "text": "I’ve spent the last 20 hours of coding basically staring at bare-metal memory allocations and tracking down why the drone’s context switcher was triggering CPU drops under the Renode simulation environment. Moving away from manual Python injection scripts to a cleaner C++ conditional compilation framework using CMake was supposed to simplify the testing layout, but instead, it exposed structural design flaws in how the scheduler kernel boots up. Running a multi-sample sensorCalibration() routine at cold boot was forcing hidden task yields before the OS kernel was fully mapped out, which was throwing unmapped register address errors and wiping out index-0 entries. To solve this, I decoupled the entire state machine sequence so that hardware allocations, peripheral registers, and core tracking counters now clear before any operational loops drop into the registry. I also added a critical rtosStarted gatekeeper flag to yieldCurrentTask() so calibration math runs cleanly in sequence without triggering early PendSV handler switches. On top of that, the task stack pointers are completely realigned. The assembly context swapper now maps a precise 32-word boundary allocation utilizing 0xFFFFFFFD as a basic exception return code, which completely eliminates the data corruption that was misaligning our Process Stack Pointer. With the fundamental kernel stabilized, I shifted entirely into clean architecture organization. The massive, cluttered code blocks have been split up into independent tracking files (BufferPopulation.cpp, Tasks.cpp, and SimInjector.cpp). High-speed SPI reads for the IMU, UART ring buffers for decoding CRSF radio channel frames, battery ADC sampling, and DShot600 motor output mixers are now fully broken out and functional. There is still a nagging preemption lockout issue inside the simulator where a single interrupt task attempts to starve out the other concurrent loops during a millisecond window, but the baseline operating system is locked in, meaning I can confidently verify the PID flight mixing tables and safety code blocks safely before the code ever touches a physical quadcopter. If you would like to run your own tasks, I also added support in the .bat and .sh files to build code for the simulation (flag=sim), user task code (flag=user), and actual drone upload code (no flags). Example MacOS Commands: ./build.sh sim ./build.sh user ./build.sh This makes it so that I don’t have to constantly modify code to run either the user tasks or simulation code, instead using a flag. Overall, this RTOS is not done yet, however, I plan to add the rest of the scheduled tasks later today, and fixing the sole bug keeping this simulation back! I expect a full ship to be comming out in the next week or so, along with all ESC, RM, and TM code complete!"}, {"post_id": 30963, "ts": "2026-07-18T23:42:07Z", "hours": 9.2461, "text": "I’ve been doing a lot of debugging for the RTOS scheduler inside the simulation environment, and it’s been very difficult for me to identify many bugs in teh core architecture of my tasks. Moving away from Python scripts to a cleaner C++ conditional compilation framework using CMake was supposed to simplify things, but instead, it exposed some nasty architectural bugs in how tasks and context switching interact. There has also been a massive priority inversion and preemption lockup where the CRSF parsing loop completely starves out the lower-priority threads. Also, running a raw sensor calibration loop at boot was forcing thread switches before the OS kernel was even fully initialized, completely corrupting task indexes, throwing null pointer warnings, and leaving half of my PID calculations at zero. Still working on many fixes, but it has been a lot of work (9 hours), but I hope to get the full RTOS with at least bare minimum flight tasks out by tomorrow! The GitHub repo still won’t be fully up-to-date until these structural bugs are figured out, but I plan to push the corrected scheduler files and mock drivers very soon. The screenshot below shows an image of the CRSF task completely dominating, without any processes interrupting it."}, {"post_id": 30245, "ts": "2026-07-17T17:45:35Z", "hours": 9.5911, "text": "I just wrapped up the core architecture of the drone’s flight controller, including mapping out all 7 interrupt methods into a far more optimized RTOS scheduler. The updated version makes use of a FIFO stack, to keep track of nested interrupts. I also protected the main code from data corruption during pendSV switches by enabling and disabling irq in certain areas of vulnerable code. Other small changes to the assembly to save floating point registers as well as better memory allocation was also done in this update. From high-speed IMU sensor integration and state estimation calculations to CRSF packet decoding and DShot motor generation, the essential tasks are fully written and compiled. I’ve officially shifted gears into the testing phase, working on simulated environments to debug DMA transfers, registers, and the flight state machine’s arming sequences. As of now, I am writing python scripts by hand, in order to inject “dummy” values into the GPIO, SPI, and USART registers in order to populate the buffers, and simulate the calculations. As the code is becoming longer and longer, I will try to refactor a lot of the files into smaller more organized portions, to increase readability (often I have a hard time traversing everything). Note: The current code pushed to GitHub isn’t quite the latest since I’m in the middle of troubleshooting a few simulation-specific register bugs, but I wanted to get this update out to meet the 10-hour devlog requirement on Stardance. Everything is moving in the right direction, and having a virtual environment all working means I can safely verify the PID mixer and safety flags before this code ever touches a physical quad. This officially marks the end of both phases 2 and 3, and now its a matter of finishing extra scheduled telemetry tasks (e.g. OSD and EdgeTX logging), but I estimate that the flight controller portion of the code (around 60% of all logic in the drone) will be done between now and Sunday, July 19th! I will also post a much more in depth devlog about how the methods work, as well as an updated README.md on Github ASAP."}, {"post_id": 28703, "ts": "2026-07-15T03:44:43Z", "hours": 1.4603, "text": "To make my hybrid RTOS accessible and easy to test, I designed a modular sandbox task registry system that isolates the core kernel from custom user code. Developers can write standard non-returning tasks in an isolated file ( User_Tasks/user_tasks.cpp ), while the kernel exposes a registration hook that allocates a dedicated 1024-word stack space. This decoupling means anyone can plug in their own cooperative or preemptive tasks, set execution periods or trigger bounds, and run them instantly on our virtual STM32F7 without risking memory corruption or touching the underlying context-switching assembly. For more information on how to make your own tasks refer to the README.md ."}, {"post_id": 28651, "ts": "2026-07-15T01:05:47Z", "hours": 1.0922, "text": "I just updated a few build files and restructured the project, so code and simulation separation would be better. I also added a few executable files (build.sh, run.bat, and run.sh) to easily compile and run the project."}, {"post_id": 28615, "ts": "2026-07-14T23:38:20Z", "hours": 5.5942, "text": "I finally reached a massive milestone with the kernel architecture and got the scheduler firing exactly how it needs to. Even though I thought the RTOS portion was completely wrapped up a bit ago, now it is officially done. I ended up doing a massive revamp on how scheduled tasks execute, routing them through PendSV so that the background worker states get completely backed up and saved by my assembly code just like the preemptive ones. I also cleaned up the initialization API by throwing in an overloaded function to separate timed loops from raw hardware events (the interrupt tasks). Overall most of the testing logic is now gone, and now the system is being more and more focused on the actual drone tasks. On the hardware side of things, I built out the actual drone tasks and the underlying SPI and UART DMA drivers that populate my local data packets. Even though they are not in use right now as all the tasks (which are not fully completed) require the support of each other for full testing. With the core OS completely checked off, the focus is shifting entirely over to the actual flight control logic. Over the next couple of days, I’m going to wrap up the final flight controller tasks, and get the core stabilization algorithms running. Once the flight controller application layer is fully put together, I’m moving straight onto building out complete simulations for the receiver, transmitter, and finally the ESC modules to get the whole drone network interacting together!"}, {"post_id": 27365, "ts": "2026-07-12T21:17:48Z", "hours": 3.8289, "text": "I finally finished the most difficult part of the project so far and got a hybrid cooperative/preemptive scheduler running from scratch. After a ton of debugging with the assembly memory layout, the core RTOS kernel shell is officially stable, verified inside the Renode simulator, and completely ready to handle flight data. The architecture divides the CPU’s brain into two execution pathways to maximize calculation speeds while keeping latency near zero. Standard background tasks, like handling low-priority peripheral updates, run sequentially inside a cooperative loop based on their relative priority. They execute and then drop out without wasting an overhead time. But for high-priority hardware event such as a critical radio packet arriving over UART or raw sensor data from the IMU, the system completely bypasses the standard queue. It pulls a physical hardware lever (PendSV) that forces an instant stack swap. When an interrupt task fires through PendSV, the CPU pauses the background scheduled loop, and my assembly code packs up the core registers, saves that exact memory address to RAM, and hot-swaps the Process Stack Pointer to launch the interrupt task. Right now, there is just a dummy delay loop inside the interrupt task to visually show the execution break in the console logs. Once it finishes printing, it hits a yield function that throws the assembly switch backward, pops the background registers, and hands control straight back to the flight loop. The repository currenly has a lot of diagnostic test code because I needed to prove the pointer indirection and stack-faking logic worked without blowing up the memory alignment. Now that the plumbing is completely verified, the next step is to strip out the test code and start writing the actual flight infrastructure. I am moving straight into coding the PID control loops, signal mixers, Kalman filters, and live motor generation."}, {"post_id": 26996, "ts": "2026-07-12T03:54:25Z", "hours": 2.8228, "text": "I finally added minimum task scheduling for the RTOS. I had originally designed a simple kernel to create a buffer of scheduled tasks in QEMU, but after learning that the simulation didn’t actually support the specific MCU that my friend and I are using for the real drone, I had to pivot. I switched over to using STM32CubeMX for the actual bare-metal configuration and Renode to handle running the emulation. Right now, the kernel just executes a task based on a basic timing loop and priority, waits for it to completely finish, and then moves on to the next task. To be honest, it isn’t super useful yet because it only covers tasks in what I call the “scheduled zone” of the drone. This includes background stuff like blackbox flight data management, but it leaves out the most critical parts like the PID control loops and streaming real-time UART data from the IMU. Those features need to fire their own asynchronous interrupt signals at the highest possible hardware priority so they can instantly pause the optional background tasks and execute the critical code that actually keeps the drone stable and flying. Next up, I need to write a short piece of assembly to handle saving the current CPU state and registers of whatever task is currently running when an interrupt hits. It shouldn’t be too bad since it will only take about 30 lines of code. I know I haven’t been posting devlogs for the past couple of weeks even though I’ve been grinding on this, but that’s mostly because we spent a ton of time initially planning out the architecture of the drone. We wanted to map out the software boundaries early so my friend and I could go our separate ways working on different systems without having massive merge conflicts later on."}]...
|
Title: 200 MPH Drone RTOS by @Guagyyy | Stardance
Title: 200 MPH Drone RTOS by @Guagyyy | Stardance
Devlogs:
I finally added minimum task scheduling for the RTOS. I had originally designed a simple kernel to create a buffer of scheduled tasks in QEMU, but after learning that the simulation didn’t actually support the specific MCU that my friend and I are using for the real drone, I had to pivot. I switched over to using STM32CubeMX for the actual bare-metal configuration and Renode to handle running the emulation. Right now, the kernel just executes a task based on a basic timing loop and priority, waits for it to completely finish, and then moves on to the next task. To be honest, it isn’t super useful yet because it only covers tasks in what I call the “scheduled zone” of the drone. This includes background stuff like blackbox flight data management, but it leaves out the most critical parts like the PID control loops and streaming real-time UART data from the IMU. Those features need to fire their own asynchronous interrupt signals at the highest possible hardware priority so they can instantly pause the optional background tasks and execute the critical code that actually keeps the drone stable and flying. Next up, I need to write a short piece of assembly to handle saving the current CPU state and registers of whatever task is currently running when an interrupt hits. It shouldn’t be too bad since it will only take about 30 lines of code. I know I haven’t been posting devlogs for the past couple of weeks even though I’ve been grinding on this, but that’s mostly because we spent a ton of time initially planning out the architecture of the drone. We wanted to map out the software boundaries early so my friend and I could go our separate ways working on different systems without having massive merge conflicts later on.
I finally finished the most difficult part of the project so far and got a hybrid cooperative/preemptive scheduler running from scratch. After a ton of debugging with the assembly memory layout, the core RTOS kernel shell is officially stable, verified inside the Renode simulator, and completely ready to handle flight data. The architecture divides the CPU’s brain into two execution pathways to maximize calculation speeds while keeping latency near zero. Standard background tasks, like handling low-priority peripheral updates, run sequentially inside a cooperative loop based on their relative priority. They execute and then drop out without wasting an overhead time. But for high-priority hardware event such as a critical radio packet arriving over UART or raw sensor data from the IMU, the system completely bypasses the standard queue. It pulls a physical hardware lever (PendSV) that forces an instant stack swap. When an interrupt task fires through PendSV, the CPU pauses the background scheduled loop, and my assembly code packs up the core registers, saves that exact memory address to RAM, and hot-swaps the Process Stack Pointer to launch the interrupt task. Right now, there is just a dummy delay loop inside the interrupt task to visually show the execution break in the console logs. Once it finishes printing, it hits a yield function that throws the assembly switch backward, pops the background registers, and hands control straight back to the flight loop. The repository currenly has a lot of diagnostic test code because I needed to prove the pointer indirection and stack-faking logic worked without blowing up the memory alignment. Now that the plumbing is completely verified, the next step is to strip out the test code and start writing the actual flight infrastructure. I am moving straight into coding the PID control loops, signal mixers, Kalman filters, and live motor generation.
I finally reached a massive milestone with the kernel architecture and got the scheduler firing exactly how it needs to. Even though I thought the RTOS portion was completely wrapped up a bit ago, now it is officially done. I ended up doing a massive revamp on how scheduled tasks execute, routing them through PendSV so that the background worker states get completely backed up and saved by my assembly code just like the preemptive ones. I also cleaned up the initialization API by throwing in an overloaded function to separate timed loops from raw hardware events (the interrupt tasks). Overall most of the testing logic is now gone, and now the system is being more and more focused on the actual drone tasks. On the hardware side of things, I built out the actual drone tasks and the underlying SPI and UART DMA drivers that populate my local data packets. Even though they are not in use right now as all the tasks (which are not fully completed) require the support of each other for full testing. With the core OS completely checked off, the focus is shifting entirely over to the actual flight control logic. Over the next couple of days, I’m going to wrap up the final flight controller tasks, and get the core stabilization algorithms running. Once the flight controller application layer is fully put together, I’m moving straight onto building out complete simulations for the receiver, transmitter, and finally the ESC modules to get the whole drone network interacting together!
I just updated a few build files and restructured the project, so code and simulation separation would be better. I also added a few executable files (build.sh, run.bat, and run.sh) to easily compile and run the project.
To make my hybrid RTOS accessible and easy to test, I designed a modular sandbox task registry system that isolates the core kernel from custom user code. Developers can write standard non-returning tasks in an isolated file ( User_Tasks/user_tasks.cpp ), while the kernel exposes a registration hook that allocates a dedicated 1024-word stack space. This decoupling means anyone can plug in their own cooperative or preemptive tasks, set execution periods or trigger bounds, and run them instantly on our virtual STM32F7 without risking memory corruption or touching the underlying context-switching assembly. For more information on how to make your own tasks refer to the README.md .
I just wrapped up the core architecture of the drone’s flight controller, including mapping out all 7 interrupt methods into a far more optimized RTOS scheduler. The updated version makes use of a FIFO stack, to keep track of nested interrupts. I also protected the main code from data corruption during pendSV switches by enabling and disabling irq in certain areas of vulnerable code. Other small changes to the assembly to save floating point registers as well as better memory allocation was also done in this update. From high-speed IMU sensor integration and state estimation calculations to CRSF packet decoding and DShot motor generation, the essential tasks are fully written and compiled. I’ve officially shifted gears into the testing phase, working on simulated environments to debug DMA transfers, registers, and the flight state machine’s arming sequences. As of now, I am writing python scripts by hand, in order to inject “dummy” values into the GPIO, SPI, and USART registers in order to populate the buffers, and simulate the calculations. As the code is becoming longer and longer, I will try to refactor a lot of the files into smaller more organized portions, to increase readability (often I have a hard time traversing everything). Note: The current code pushed to GitHub isn’t quite the latest since I’m in the middle of troubleshooting a few simulation-specific register bugs, but I wanted to get this update out to meet the 10-hour devlog requirement on Stardance. Everything is moving in the right direction, and having a virtual environment all working means I can safely verify the PID mixer and safety flags before this code ever touches a physical quad. This officially marks the end of both phases 2 and 3, and now its a matter of finishing extra scheduled telemetry tasks (e.g. OSD and EdgeTX logging), but I estimate that the flight controller portion of the code (around 60% of all logic in the drone) will be done between now and Sunday, July 19th! I will also post a much more in depth devlog about how the methods work, as well as an updated README.md on Github ASAP.
I’ve been doing a lot of debugging for the RTOS scheduler inside the simulation environment, and it’s been very difficult for me to identify many bugs in teh core architecture of my tasks. Moving away from Python scripts to a cleaner C++ conditional compilation framework using CMake was supposed to simplify things, but instead, it exposed some nasty architectural bugs in how tasks and context switching interact. There has also been a massive priority inversion and preemption lockup where the CRSF parsing loop completely starves out the lower-priority threads. Also, running a raw sensor calibration loop at boot was forcing thread switches before the OS kernel was even fully initialized, completely corrupting task indexes, throwing null pointer warnings, and leaving half of my PID calculations at zero. Still working on many fixes, but it has been a lot of work (9 hours), but I hope to get the full RTOS with at least bare minimum flight tasks out by tomorrow! The GitHub repo still won’t be fully up-to-date until these structural bugs are figured out, but I plan to push the corrected scheduler files and mock drivers very soon. The screenshot below shows an image of the CRSF task completely dominating, without any processes interrupting it.
I’ve spent the last 20 hours of coding basically staring at bare-metal memory allocations and tracking down why the drone’s context switcher was triggering CPU drops under the Renode simulation environment. Moving away from manual Python injection scripts to a cleaner C++ conditional compilation framework using CMake was supposed to simplify the testing layout, but instead, it exposed structural design flaws in how the scheduler kernel boots up. Running a multi-sample sensorCalibration() routine at cold boot was forcing hidden task yields before the OS kernel was fully mapped out, which was throwing unmapped register address errors and wiping out index-0 entries. To solve this, I decoupled the entire state machine sequence so that hardware allocations, peripheral registers, and core tracking counters now clear before any operational loops drop into the registry. I also added a critical rtosStarted gatekeeper flag to yieldCurrentTask() so calibration math runs cleanly in sequence without triggering early PendSV handler switches. On top of that, the task stack pointers are completely realigned. The assembly context swapper now maps a precise 32-word boundary allocation utilizing 0xFFFFFFFD as a basic exception return code, which completely eliminates the data corruption that was misaligning our Process Stack Pointer. With the fundamental kernel stabilized, I shifted entirely into clean architecture organization. The massive, cluttered code blocks have been split up into independent tracking files (BufferPopulation.cpp, Tasks.cpp, and SimInjector.cpp). High-speed SPI reads for the IMU, UART ring buffers for decoding CRSF radio channel frames, battery ADC sampling, and DShot600 motor output mixers are now fully broken out and functional. There is still a nagging preemption lockout issue inside the simulator where a single interrupt task attempts to starve out the other concurrent loops during a millisecond window, but the baseline operating system is locked in, meaning I can confidently verify the PID flight mixing tables and safety code blocks safely before the code ever touches a physical quadcopter. If you would like to run your own tasks, I also added support in the .bat and .sh files to build code for the simulation (flag=sim), user task code (flag=user), and actual drone upload code (no flags). Example MacOS Commands: ./build.sh sim ./build.sh user ./build.sh This makes it so that I don’t have to constantly modify code to run either the user tasks or simulation code, instead using a flag. Overall, this RTOS is not done yet, however, I plan to add the rest of the scheduled tasks later today, and fixing the sole bug keeping this simulation back! I expect a full ship to be comming out in the next week or so, along with all ESC, RM, and TM code complete!
I just finished expanding the RTOS architecture, filling out all of the scheduled background tasks to handle real-time flight telemetry, peripheral hardware, and terminal configuration. On the telemetry side, I built out telemetryTX to package battery, status, and GPS data into standard CRSF frames over UART, alongside an NMEA gpsParser that decodes $GNGGA and $GNRMC sentences for live location fixes. I also made powerManagement into its own standalone task so ADC voltage and current metrics can feed into the failsafe logic and telemetry concurrently. To make bench testing and tuning significantly easier, I added usbCLI over USART1, giving me a full interactive shell to tweak PID gains (Kp, Ki, Kd), dump raw IMU data, and inspect hardware states on the fly without needing to reflash firmware. To keep the physical quad safe and responsive during flight, I added updatePeripherals for LED status patterns and buzzer warnings, along with a dedicated Independent Watchdog (IWDG) task running as a low-priority fail-safe to trigger hardware MCU resets if the scheduler ever freezes. On the project structure side, CMake now routes all output binaries straight into a clean ./bin/ directory so nobody has to compile the source manually just to run the .elf target in Renode. I also introduced a -DENABLE_DEBUG flag, allowing me to cleanly toggle between complete USART log prints across every loop or a blank terminal environment meant purely for the CLI shell. While all the background subsystems and scheduled task priorities are fully mapped out, I’m currently figuring out a few lingering RTOS bugs—specifically around stack allocation, causing stack overflow flags on certain scheduled tasks, along with scheduling starvation where context switching isn’t releasing task blocks properly. Because I want to ensure the scheduler kernel is 100% complete before pushing broken stack frames to the main branch, the GitHub repository will be updated with the complete, bug-fixed code later today. Everything is moving in the right direction, and getting these background tasks finalized brings me one step closer to full flight hardware deployment!
1. Fixing the Stack Overflows at Boot After an entire 25-hour debugging period across 4 days, the RTOS kernel is finally done (for the scheduled tasks). I tracked down a silent bug where several critical scheduled tasks—like powerManagement , lowLevelFailSafe , and telemetryTX —were crashing the MCU on boot. The issue came down to a boot-time dependency lock: tasks were trying to poll hardware registers (like UART TX flags) and read shared drone state variables before the peripherals or producer tasks had time to initialize on Tick 0. By adding an initial yieldCurrentTask() right at the top of these methods, Task Phase Alignment was officially added. This gives the hardware a full cycle to stabilize, preventing buffer overflows and eliminating the cascading task state corruptions that were locking up the scheduler. 2. Custom Stack Sizing & Real-Time Guard Checks Alongside the scheduler fix, I pushed major upgrades to memory safety and task management. Instead of assigning a static stack array to every task, I transitioned to dynamic per-task stack allocations during initialization ( new (std::nothrow) ). Heavy string-parsing and math tasks get larger stacks, while simple toggle tasks stay lightweight. To catch memory issues before they corrupt the heap, I implemented a custom dual guarding system: 0xDEADBEEF is appended at the bottom of the stack to catch standard stack overflows, while a new 0xBEEFCAFE canary value is written to the very top index ( stackSizeWords ) to instantly flag memory breaches in the SysTick_Handler . Furthermore, I refactored powerManagement to use ADC2 in Circular DMA Mode, writing battery telemetry directly to RAM in the background for zero CPU overhead. 3. Transitioning to Walksnail Avatar HD Looking ahead, my and my friend are officially transitioning our existing analog video setup over to a fully integrated Walksnail Avatar HD digital ecosystem. Rather than keeping my custom telemetry task ( telemetryTX ) with heavy string formatting over raw UART, Walksnail allows me to stream standard MSP (MultiWii Serial Protocol) DisplayPort frames straight to the VTX. The Walksnail system will serve as our primary onboard logging source, giving us full OSD telemetry, high-framerate HD video, and precise blackbox data logging. With the RTOS core now stable and non-blocking, our next focus shifts toward “premium” flight controller features, e.g. including custom RC stick expo curves, an expanded USB CLI, and an integrated simulator interface.
Over the last few days, I wrapped up two major tasks for the flight controller’s core sensor and telemetry stack: the on-screen display (OSD) renderer and the BMP390 barometer subsystem. The OSD engine is now fully hooked up to the state system, giving real-time visual downlinks for critical metrics like flight battery voltage, active flight modes, and height statistics over UART. To keep the execution completely non-blocking, all frame updates are dispatched asynchronously, preventing rendering delays from hindering the performance of the high-frequency control loops. On the barometer side, I implemented altitude tracking using Bosch’s BMP390 sensor over SPI with non-blocking DMA burst transfers. In the 50Hz task loop, incoming 24-bit raw pressure and temperature bytes are assembled and passed through the hypsometric formula to calculate smooth, relative height above ground level (AGL). Although the barometer task is a bit flawed due to floating point register stack errors with the header and end canary values, they don’t seem to be affecting the system in anyway (nor is any data being corrupted). I will find a way to fix these issues before the next commit, as well as the race condition in the interrupt tasks in the next Github commit. After that, it is just system polish and extensive testing before the RTOS will be complete!
Major Architecture Upgrade : OSD, Betaflight Rates & Build System Refactor 1. OSD, DMA + SYS First off on the hardware side, I added native MSP-based OSD support for Walksnail video transmitters, built the SPI barometer driver for altitude tracking, and spun up a low-level health task that constantly monitors MPU registers and stack usage in the background. On top of that, I finally fixed the DMA stream conflicts (mainly in STMCubeMX) between TIM1 DShot motor outputs , ADC1, and SPI peripherals, so everything runs without collisions now. 2. SYS Health + Debugging I also implemented a few other low level tasks, allowing me to monitor system health, based upon ram usage and storage used. This task prints out the amount at which each tasks stack is being used, allowing me to effectively debug whether a task was actually overflowing, vs an unrestricted read/write. Furthermore, the original canary values that I used, were completely replaced as they in fact were causing some of the “stack overflow” bugs (via unrestricted reads/write every 1 ms in SysTick_Handler ). 3. Betaflight Rates + CLI Update For flight feel, I implemented Betaflight’s Actual Rates algorithm with custom expo curves, so stick inputs map to target angular velocities with center-stick precision. I also completely separated serial communications by moving the interactive CLI to USART1 (accessible via nc -C localhost 1234 in terminal) and pushing system logs to USART3. Additionally, I removed the old telemetryTX task because its unauthorized reads/writes were completely breaking the RTOS scheduler, and expanded the CLI with a ton of commands for live sensor readings and more PID tuning. Speaking of which, I am planning to create a persistent file in /bin/ , allowing for rates to be stored between runs, rather than being reset each during runtime, and having to be manually configured through the CLI. 4. Overhauled Building Workflow Finally, I overhauled the whole developer workflow and build automation setup. The build.sh and build.bat scripts now auto-configure custom CMake profiles and generate a full disassembly file in /bin/ after every build for fast low-level debugging, while run.sh and run.bat automatically launch the right terminal windows on launch. 5. Future Additions: I’m planning to build a closed-loop Renode simulation matrix to stream hardware data into every peripheral externally, letting me run 100% real production code during SIL testing! For this, I will utilize the currently blank simulate.py as well as certain commands in simulate.resc to create properly formatted dynamic buffers(which are not directly injected into the code), allowing me to properly test the DMA drivers, and many of the memory management helpers.
This week was heavily focused on the fine tuning and organization of the RTOS. I spent numerous hours of research and untangling environment setups. I originally tried to build out a complete framework for the drone code without relying on any simulation code, but Renode’s restrictions, specifically with its ability to perform DMA requests, quickly made it clear that path was impossible. To fix this I’m looking into picking up a dev board and a Raspberry Pi so I can test and debug everything on an actual MCU before finally moving the codebase over to the drone. Even though the git won’t look a whole lot different and not a lot of actual code changed, getting these configs finalized (especially in STM32CubeMX) in was a huge step forward for the project. I expect to commit the next version of the code either today or tomorrow, with improvements specifically in TelemetryTX, BlackBoxLogging, and a few other minor changes!
1. Reworking the DMA Flow for Speed So, a lot has been going on lately, starting with a massive rework of the entire DMA flow. The functions are now entirely populated by circular DMA, which is a huge upgrade for the system’s overall performance. This architectural change allows for completely non-blocking, high-frequency calls, hitting response times as fast as 0.03 milliseconds. It basically means the whole data pipeline is significantly faster, and much more responsive than it was in previous versions. 2. Standardizing Ring Buffers and Mock Injectors To make everything more reliable, the DMA now follows a very specific and predictable pattern for both scheduled and interrupt tasks. Everything relies on ring buffers now, whether they are being injected by actual hardware (or simulated) DMA or by my custom simulation scripts. I also reworked the mock injectors so they no longer just return a pre-formatted packet. Instead, they write directly into the ring buffer, which lets me test the exact same parsing pipeline in software, simulating the hardware flow almost exactly like Renode (if only they would ever fix that USART DMA bug…). 3. Assembly BX LR Bug + STMCubeMX Clock PLL I also finally solved the long term BX LR return bug that I literally spent over 20 hours trying to find. Whenever tasks used the FPU or had slightly larger stacks, the return address in the r0 register would just get completely corrupted by the extra data. I fixed this by storing the return address in a dedicated uint value instead of blindly trusting the registers to hold it. That fix alone allowed me to safely re-add telemetryTX and make a bunch of other function logic much more robust. On top of that, I went into STM32CubeMX and reworked the clock PLL manually (it took over 3 hours to solve by hand). By feeding in a 25 MHz HSE clock, I managed to unlock the MCU’s internal clocks to run at their full 216 MHz.I also took some time to clean up the codebase to improve overall readability and commenting. 4. DMA Interrupts for Safe Parsing Another feature is that DMA now triggers interrupts when the ring buffers hit exactly halfway and when they are fully populated. This gives me the time to parse all the incoming values safely without having the risk about data getting overwritten by the next DMA pass before I am done reading it. I set up the IRQ handlers in the code to call the interrupt methods automatically, which ensures the CPU stays completely unblocked and free to handle other flight control tasks almost all the time (overall decreasing headroom). 5. Current Status: NVIC Bug Sadly, the code is actually not functional right now because the NVIC and IRQ pipeline is malfunctioning and just refusing to call the interrupts for reasons I cannot figure out yet. Because of this, I am holding off on pushing the code until I can track down the bug, give everything a final polish, and run some benchmark testing (since I don’t want to commit broken code). Also, sorry for promising a commit a day or two after my last devlog. I got super busy, especially with vacation, but I will try my best to get this sorted. Depending on how long it takes to figure out this NVIC issue, the next commit might drop anywhere from tomorrow to a few weeks from now.
Complete RTOS Overhaul, Circular DMA Pipelines, and CPU Abort Fixes This update focuses on fine-tuning the RTOS, organizing the scheduler, and rewriting microcontroller memory handling. Renode’s simulated DMA restrictions make software-only pipeline testing nearly impossible, so I plan to buy a physical dev board and Raspberry Pi to validate on silicon. While the Git diff might not look massive, the architecture has evolved from a blocking system to a true preemptive RTOS with precise polynomial timing. 1. Reworking DMA Flow & Standardizing Ring Buffers Sensor and receiver data pipelines are now driven by circular DMA, enabling non-blocking, high-frequency transfers with response times as fast as 0.3 ms (without printToUSART enabled). Everything now relies on ring buffers. Instead of generating complete packets instantly, mock injectors stream bytes directly into the buffers while updating the simulated NDTR register to mirror hardware behavior. if ( byteIdx >= frameLen ) { byteIdx = 0 ; } crsfRingBuffer [ head ] = frameBuf [ byteIdx ++ ]; head = ( head + 1 ) % CRSF_RING_BUFFER_SIZE ; currentBoardConfig . crsf_dma_stream -> NDTR = CRSF_RING_BUFFER_SIZE - head ; Feeding bytes incrementally moves the write head gradually, ensuring the simulation mimics a physical UART and allowing population functions to safely pull data within interrupt locks. 2. DMA Interrupts for Safe Parsing To prevent data overwrites, DMA streams trigger interrupts at the halfway (HTIE) and full-transfer (TCIE) points to queue tasks. Because registers like LISR are read-only in hardware, I implemented a software mock flag system (mock_LISR) for simulation: extern "C" void DMA1_Stream0_IRQHandler ( void ) { #ifdef SIMULATION uint32_t flags = mock_LISR ; mock_LISR = 0 ; #else uint32_t flags = DMA1 -> LISR ; #endif if ( flags & DMA_LISR_HTIF0 ) { DMA1 -> LIFCR = DMA_LIFCR_CHTIF0 ; decideNextInterruptTask ( & taskControlBlocks [ 1 ]); } } Functions safely extract data with interrupts disabled, ensuring the CPU never blocks waiting for peripheral transfers. 3. Assembly Bugs & CPU Aborts Debugging nested hardware interrupts exposed massive faults: The context-switching bug: FPU usage or large stack frames corrupted the return address, causing the CPU to execute BX LR with garbage data. Fixed in PendSV_Handler.S by explicitly storing excReturn inside the TaskControlBlock rather than relying on stacked registers. Second, a 0x00000000 Null Return Crash: Scheduled tasks attempted to return natively, popping 0x00000000 from the zero-initialized Link Register and causing a fetch fault. Every task now runs inside an infinite while(true) loop calling yieldCurrentTask() . 4. Clock PLLs & Hardware Re-routing After configuring the STM32CubeMX PLL for a 25 MHz HSE clock, the MCU runs at its full 216 MHz. I added a standardized initSystemGPIOClocks() function to enable peripheral clocks consistently. I also moved motor 3 from TIM1 to TIM4, synchronizing it with the 216MHz clock and freeing up a TIM1 DMA stream exclusively for the upcoming BlackBox logging. Future Updates With the core RTOS stabilized, development shifts to flight-facing systems: hooking the SPI pipeline to the video overlay for live OSD goggle telemetry, adding permanent flash storage for PID tunes/configs, exposing MCU controls via CLI, supporting programmable transmitter bind buttons, building a desktop GUI, and using the freed TIM1 DMA for BlackBox logging. Below, I have attached a screenshot of every single task working, and outputting values in the simulation, something that wasn’t possible for the interrupt tasks until now.
1. CLI Upgrades and Channel Mapping Over the past 5 days, I knocked out some major quality-of-life upgrades for the flight controller. I added customizable channel mapping for CRSF directly through the CLI. By utilizing a combination of references and pointers, I was able to point a volatile alias to certain channel mappings, allowing for completely customizable CRSF channels. While I was in the CLI logic, I also added the ability to configure custom IMU orientations around the z-axis, making it way easier to mount the board in different directions without having to recompile the firmware. 2. DMA Pipeline Fixes and Baro Optimization A big chunk of this session went into debugging and refactoring the hardware data pipelines. I adjusted the ADC population pipeline in order to fix some stream parsing issues, and gave the barometer a massive overhaul. The baro now uses a non-blocking, non-circular DMA setup that relies on a semi-interrupt-driven task call rather than a continuous loop. This enabled me to yield in the middle of the function, and call back later as soon as DMA is finished transferring. I also fixed a massive bug in the DMA setup: the DMA_SxCR_HTIE and DMA_SxCR_TCIE flags were accidentally enabled for the GPS and OSD ring buffers, which would have crashed the whole RTOS by firing unhandled interrupts, causing default HAL and IRQ handlers to run. 3. Walksnail Two-Way Communication Finally, I built out the respondToVTX task to get the drone properly communicating with the Walksnail VTX. Instead of just blindly sending video data out, this sets up true two-way communication over asynchronous UART. By writing a persistent byte-by-byte state machine, the flight controller can now safely parse incoming requests from the VTX without dropping half-packets, allowing me to send back live stick positions and armed status for the OSD menus. The only thing left to do now is handle persistent CLI storage, the logToBlackBox task, integrating the semi-interrupt pipeline with telemetryTX and the OSD, and a few other system tweaks. After that the RTOS will be 100% ready to fly the actual drone.
1. Scheduler Hardening and Task Discovery Spent part of this session making the RTOS scheduler itself more robust. I added a findTaskByName() function so interrupt-driven task lookups happen dynamically instead of relying on hardcoded task indices, which was a fragile setup just waiting to break the moment task registration order changed. Alongside that, I wrapped every one of those lookups with lambdas that throw a proper warning if a task can’t be found, so a missing task fails loudly instead of silently dereferencing a null pointer somewhere downstream. 2. Blocking vs Non-Blocking Scheduled Tasks After a lot of painful debugging, I traced a string of issues (including interrupt tasks silently failing to fire and scheduled tasks stepping on each other) back to non-blocking statements I’d introduced inside scheduled tasks in the previous devlog. I ended up taking those out and reverting scheduled tasks fully back to blocking, which is genuinely what the scheduled zone was designed for in the first place: tasks that don’t need to run in polynomial time and can safely block without putting the drone at risk of crashing. Once that was sorted, I converted the raw USART byte-pushing into a blocking DMA system instead, so streaming is handled by DMA hardware rather than manually pushed byte-by-byte over USART. 3. Flight Loop Refactor and VTX Communication On the flight logic side, I refactored flightLoop() to use lambdas and a state machine so I would never have to yield in the middle of my tasks (which was used previousely for zeroing motor outputs). I also converted the error handling into a proper state machine, so different types of warnings can be caught and handled distinctly instead of lumping every issue into one path, and turned on full debug printing whenever the system is running. Last but not least, I built out a dedicated injector for respondToVTX so I can properly test and simulate VTX communication going forward. 4. Real Hardware Testing Since, I am almost 100% done with the RTOS I bought two NUCLEO-F756ZG’s which will serve as testing the 100% production code rather than the simulation version. I bought two so that one of the boards will be running the real RTOS code, testing DMA reading from USART, SPI, and emitting real motor signals, while the second will be emulating all of my peripherals. When the boards come, if the code does work, it will also mean that the real PCB’s will also work when my friend finishes with them. 5. Next Steps As of now there are a few issues with the double preempt system (for the interrupt tasks) I designed a while back, so I will need to debug that before they arrive. Right now before the boards arrive, I will be finishing up the RTOS blocking DMA pipelines (stripping out IRQ, removing NVIC etc. for scheduled tasks), and performing a bunch of baseline testing in order to prove that the RTOS is capable of flying an actual drone!
For the past couple weeks I have been mostly refining small bugs, which were originally rendering the RTOS usless, as well as refactoring the code for simplicity rather than elegancy. 1. Transition to Actual Hardware Renode is great for simulation, but it ended up hiding a bunch of race conditions in the population methods and the main scheduler that led to no code actually running during the IRQ handler calls. I spent a lot of time securing those resources and finally got the scheduler mostly finished up. Also, I decided to just take out the double preempts entirely since they were adding way too much complexity for absolutely zero speed benefits in practice (plus they were creating detrimental but rare race conditions). 2. Code Refactor To make things run a bit more consistent, I restructured how the control loops operate. I ended up merging the dShotGeneration task with the parent IMU control loop, so now everything from reading the sensors to pushing motor commands happens in one clean sequence (rather than including an unnecessary preempt). I also built out a brand new CRSF control loop to handle all the radio parsing and state machine updates in its own dedicated space (just for consistency). Lastly, while doing a final pass on the code, I realized that in my dShotGeneration helper, I had forgot to scale the values by a factor of 1/2000, as the inputs require the value to be between 0 and 1 (not 0 and 2000). 3. Final DMA Iteration The biggest relief was finally getting rid of the old blocking USART system. I finally transitioned away from manually handling the streaming by polling flags in a loop, which was tying up the processor way more than it should have. Everything has been converted over to a blocking DMA system, so the hardware can just handle all the memory transfers in the background while the CPU focuses on actually keeping the drone in the air. Overall, I think that this will be the final iteration of the RTOS DMA pipeline, as now that it is solid and works with all the edge cases, theres no need to change it. 4. Timeline With almost all the major bugs fixed, I am going to ship the project! While it is not 100% done, it will likely be as close as it will get during the timeframe of the Stardance hackathon, and with it so close, theres no reason not to ship. Anyway, I will keep the source as the main project rather than a release, so if I do end up fixing any major bugs, they will get patched either before or during project review (besides most of these bugs are only detectable on actual hardware). I will most likely finish the RTOS in the next couple weeks (by the end of October), and will finish the drivers for the ESC and RM by latest end of November (for more timing refer to the README). Thanks to everyone who supported me throughout this project (hopefully me and my friend can get this drone flying in another Hack Club Hackathon!).
Although I haven’t been able to make much progress on the project due to school over the past weeks I did manage to make some substantial project mostly with the scheduler, allowing for fairly good performance on my STM Nucleo boards, rather than it just crashing instantly. 1. Issues with the Old Design The flight controller’s RTOS scheduler wasn’t working under real hardware timing because global variables like currTaskIndex, topOfStack, and excReturn were being modified from multiple entry points simultaneously. Yield calls, interrupt handlers, and the main task-selection logic were all making independent writes to the same shared task control blocks. Whenever a hardware interrupt fired mid-write, stack pointers and exception return values were saved into the wrong taskControlBlocks slot. This created edge cases where preempted tasks were silently double-queued, state tracking completely desynchronized, and time-critical hardware events were dropped during flight. 2. Centralizing Context Switches in PendSV To eliminate these race conditions, all state-selection decisions were moved out of individual execution contexts and consolidated into decideNextTask(), which now runs exclusively inside the PendSV assembly handler. Functions like yieldCurrentTask(), decideNextInterruptTask(), and decideNextScheduledTask() no longer touch global scheduler state or choose which task runs next; they simply update local status flags like TaskState::BLOCKED or TaskState::READY inside brief __disable_irq() critical sections and trigger PendSV using SCB_ICSR_PENDSVSET_Msk. When PendSV fires, decideNextTask() saves outgoingSP and outgoingExcReturn to the active block, sets RUNNING tasks to READY, and runs a two-pass check over taskControlBlocks[]—evaluating high-priority TaskType::INTERRUPT tasks first, then TaskType::SCHEDULED tasks, and falling back to index 0 for idle. Since PendSV is the only place allowed to modify currTaskIndex, concurrent state corruption is structurally impossible.
I spent the past week fixing timing issues on the hardware and getting the simulation environment back into a usable state. Although it isn’t 100% yet, I managed to fix a lot of underlying bugs causing the program to fail on actual hardware. Serial Communication and DMA The biggest issue was that manual USART transfers were completely blocking the system. Printing alone was taking around 95 percent of the total execution time. This was destroying the preempt speed and causing weird timing bugs across the board. I rewrote the USART printing logic to offload everything to a background circular DMA task instead. While I was working on the serial connections, I also fixed the UART mapping bugs and moved all logging over to UART4 so it stops fighting with the GPS module on USART3. I also went through stm32f7xx_it.c and fixed the rest of the extern “C” methods. They were previously commented out, which was silently causing their respective DMA HALs to fail. Moving them to the correct user code sections fixed the issue entirely. Simulation Environment and Tooling On the software side, the simulation startup in the HAL was broken and preventing the virtual boards from properly configuring and running. I fixed the initialization sequence so the simulations actually boot correctly now. To make starting the environment even easier for new users, I updated both the run.sh and run.bat scripts with installers that automatically download Renode. This skips the manual installation step completely and gets the simulation running much faster.
Ships:
Phase 1 (The Custom RTOS Kernel) I am building a custom FPV drone from scratch with my friend in an attempt to achieve 200 mph . At those speeds, standard super loops are far too slow, as a single microsecond of lag means the drone travels feet before making a PID correction. To solve this, I built a custom, hybrid cooperative/preemptive Real-Time Operating System (RTOS) from scratch for the ARM Cortex-M7 (STM32F7)! What Was Challenging? The absolute hardest part of this phase was writing the low-level assembly context switcher ( PendSV_Handler.S ). Hacking the ARM Cortex-M7 registers to physically hot-swap stack pointers ( PSP ) mid-execution without crashing the CPU or corrupting the program state was a massive headache. I had to ensure that when an asynchronous preemption event fires, the assembly code perfectly preserves the execution registers ( R4-R11 plus the hardware-stacked registers), jumps to the high-priority task, and then seamlessly restores the background task right where it left off. Getting the compiler-enforced task overloading working so the kernel cleanly separates periodic tasks from raw interrupts was another huge hurdle, but it makes the whole codebase infinitely more robust. Want to Test It or Write Your Own Tasks? You don’t need physical hardware to watch this run! I’ve packaged the entire project with a Renode simulation script. You can run the interactive emulator with a single command to see the preemption scheduler hijack our counter task live, or you can jump into the user sandbox file and write your own custom tasks. Check out the GitHub Repository to Run the Demo! The README has a quick 5-minute setup guide to get you compiling and simulating your own code in no time.
200 MPH Drone RTOS: How it went Simulation to Silicon! When I published the first major update for this project at the 15-hour mark, I essentially had a proof-of-concept. I had managed to write a custom hybrid cooperative/preemptive scheduler and get an ARM Cortex-M7 (on the STM32f756VGTx) assembly context switcher functioning inside the Renode simulator. Although this looked like a massive leap, the project had barely started. Over 100 hours of development have gone into this project since then. The transition from a simulated kernel to a bare-metal flight controller capable of keeping a 200 MPH drone in the air required stripping the system down to its bare components, rewriting the memory architecture, and debugging some of the most frustrating hardware faults I have ever encountered-especially whenever the project just crashed, leaving me no traces as to what went wrong. Software Limitations The biggest turning point was realizing that software simulation can only take you so far. Renode is an amazing tool, but it hid a massive amount of race conditions and timing flaws that only exposed themselves when I finally flashed the code to physical STM32F756 Nucleo board. Sometimes, the MCU would have to reboot every 2 seconds. I spent dozens of hours tracking down massive architectural bugs. One of the worst was a context-switching fault where floating-point math was corrupting the return address in the CPU registers, causing the processor to execute raw garbage data. To fix this, I had to completely restructure the boot sequence and overhaul the memory management. I moved away from static arrays to a dynamic per-task stack allocation system, and implemented a dual-guard memory system. Arguably, this was the most important change as it allowed me to debug tasks way quicker as I instantly could know when the canary values were corrupted. Overhauling the Data Pipelines In order to avoid the 10ms delay of my original blocking pipline (for data transfer), I entirely rewrote the hardware data pipelines multiple times to use a semi-blocking, circular Direct Memory Access (DMA) architecture. Instead of the processor handling the data transfer, the hardware itself moves the bytes from the sensors directly into memory in the background. The DMA streams now trigger precise interrupts at the halfway and full-transfer points, allowing the RTOS to safely parse incoming radio packets and sensor reads without ever risking data overwrites or blocking the main flight loop. Building a Flight Controller I integrated Betaflight’s Actual Rates algorithm with custom expo curves, ensuring that physical stick inputs map perfectly to target velocities. I built a custom SPI driver to pull 24-bit raw pressure and temperature data from a BMP390 barometer, passing it through hypsometric formulas to calculate altitude. For video and telemetry, I moved away from raw UART strings and implemented native MSP DisplayPort communication (for true digital Walksnail Avatar connection). I also built an interactive USB command-line interface. Instead of having to recompile and re-flash the firmware every time a PID value needs to be adjusted, I can plug into the board, pull up a terminal, and manually tune gains, remap CRSF radio channels, or adjust IMU orientation offsets in real time. Final Version The last few weeks have been about refinement and consistency, removing race conditions and overall polishing the code. Now that the RTOS is fully functional, the only things to add are extra features, like a permanent + more expanded CLI, as well as finishing the external RM and linking the ESC drivers. As these are pretty insignificant, I have linked the source of this shipment to the Github project rather than a specific release so that I can update these during review!...
|
1792993800.8647993
|
1793080200.8647993
|
|
26435
|
Coffee OS by @kristaps | Stardance
|
kristaps
|
2
|
20.0
|
64
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T17:30:37Z", "hours": 7.0, "multiplier": 9.6, "payout": 64, "blessing": "neutral", "text": "I made coffee OS an operating system similair to windows, but it is also a game? Yes it is really fun to mess around with the coffee clicker. The most challenging part of making it was to update the innerHTML variables in javascript inside my content that is stored there. I am really happy how well the coffee theme looks on the website and I really like the little secret overlay that blocks you from doing anything if you beat the OS. More info in README 🙃", "repo": "https://github.com/kristapsskele/My-OS-I-guess", "demo": "https://kristapsskele.github.io/My-OS-I-guess/"}, {"ship_num": 2, "ts": "2026-08-03T12:36:10Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an operating system called coffee-os. It features a working clock, coffee os welcome screen (open frome bottom left corner text), notes app and slot machine. The most challenging part was making all the values that are being updated in javascript update in html. You can read more from github ReadMe", "repo": "https://github.com/kristapsskele/My-OS-I-guess", "demo": "https://kristapsskele.github.io/My-OS-I-guess/"}]...
|
[{"post_id": 55679, "ts": "202 [{"post_id": 55679, "ts": "2026-08-27T17:17:22Z", "hours": 2.8056, "text": "Finished making my coffee clicker app🎮. I really enjoyed making the logic behind it because it was just pure math, playing it made me feel addicted that’s why the video is sped up. This app concludes my WebOS 2 journey, I might continue this project and make other cool apps, maybe I’ll add a roasted coffee bean shop."}, {"post_id": 45815, "ts": "2026-08-12T15:18:57Z", "hours": 3.0842, "text": "I started my clicker app, it has 1 upgrade available, and it works from the same coffee beans as the slot machine. (Middle explains some of the new things I learned.) ///////////////////////////////////////////////////////////////////////// To link the amount of beans I used querrySelectorALL.forEach… It is a really helpful thingy because I don’t have to use multiple ids. To update my clicker info I used the same principle used in tutorial, but I added my variables in it so they change the values automatically and I made the texts in a function, to make them easier to update. I will try adding the other upgrade buttons in one function, just like opening windows is one. Next thing I’m going to try implementing is that the apps can be minimized/maximized, and that open apps are visible on the task bar just like in windows. /////////////////////////////////////////////////////////////////////////////////////// I will not make any progress for about a week or more, because I am going to be busy with lots (I mean lots) of other life stuff. I hope you have an excitingly wonderful day☕☕!"}, {"post_id": 44575, "ts": "2026-08-10T12:59:34Z", "hours": 0.7972, "text": "I made a coffee map app. Actually it was pretty simple. I found the map in google, copied url, added it to an iframe, then changed the size of it and after a few changes to the iframe left placement, got rid of the side scrolling bar and navbar, so the map doesnt look as clustered. I will try to make a game 🎮 next, but I have not decided what I will try going for. //////////////////////////////////////////////////////////////////////////////////////// Currently I’m thinking about making a clicker game connected to the slot machine 🎰, that uses the same beans and lets you upgrade the machine further. But we’ll see.."}, {"post_id": 40027, "ts": "2026-08-03T11:36:19Z", "hours": 5.6678, "text": "Added a slot machine app, that lets you play for your coffee beans. Used new functions like math.random and onclick, I realised I really like making some little logic thingies using math, so next apps will probably also be little games. This app completes my webOS 1 journey which I will continue on webOS2. 🙃"}, {"post_id": 36392, "ts": "2026-07-28T13:53:13Z", "hours": 1.9242, "text": "I mostly finished the note app (I only need to add a way to create new notes). When clicking on the app icon the background gets selected and on another click the app opens. Added MY function handleNoteTap it is similair to the tutorial, but a bit different and it helps you see which note you selected. ////////////////////////////////////////////////////////////////////////////////////This isn’t related to my OS so you can skip it. I was really busy the last month so did not manage to continue working on this OS until now but I think that I will have a couple of free days to finish this project."}, {"post_id": 19242, "ts": "2026-06-30T14:37:12Z", "hours": 2.0536, "text": "I almost made a coffee themed notetaking app, moved almost all styling from inline to css. I spent half of my time looking for mistakes in my code because I COULD NOT FIND THE 1 LETTER WHICH I ACCIDENTALLY PRESSED. Next time I will finish the note app. And I need a break from java script so maybe I will make designs for icons and buttons and other things ☕"}, {"post_id": 18460, "ts": "2026-06-29T16:56:01Z", "hours": 2.3261, "text": "Made the welcome window closeable and openable and DRAGGABLE. Decided I will make this OS coffee themed, also a fun thing from the tutorial was adding time and date. On the bottom bar I used :hover to make the colour of words change."}, {"post_id": 17602, "ts": "2026-06-28T13:51:25Z", "hours": 0.8653, "text": "I built the basic structure of my OS. I changed the size of images and even rounded one, I changed the colour of the text and added a new font."}]...
|
Title: Coffee OS by @kristaps | Stardance
Devlogs Title: Coffee OS by @kristaps | Stardance
Devlogs:
I built the basic structure of my OS. I changed the size of images and even rounded one, I changed the colour of the text and added a new font.
Made the welcome window closeable and openable and DRAGGABLE. Decided I will make this OS coffee themed, also a fun thing from the tutorial was adding time and date. On the bottom bar I used :hover to make the colour of words change.
I almost made a coffee themed notetaking app, moved almost all styling from inline to css. I spent half of my time looking for mistakes in my code because I COULD NOT FIND THE 1 LETTER WHICH I ACCIDENTALLY PRESSED. Next time I will finish the note app. And I need a break from java script so maybe I will make designs for icons and buttons and other things ☕
I mostly finished the note app (I only need to add a way to create new notes). When clicking on the app icon the background gets selected and on another click the app opens. Added MY function handleNoteTap it is similair to the tutorial, but a bit different and it helps you see which note you selected. ////////////////////////////////////////////////////////////////////////////////////This isn’t related to my OS so you can skip it. I was really busy the last month so did not manage to continue working on this OS until now but I think that I will have a couple of free days to finish this project.
Added a slot machine app, that lets you play for your coffee beans. Used new functions like math.random and onclick, I realised I really like making some little logic thingies using math, so next apps will probably also be little games. This app completes my webOS 1 journey which I will continue on webOS2. 🙃
I made a coffee map app. Actually it was pretty simple. I found the map in google, copied url, added it to an iframe, then changed the size of it and after a few changes to the iframe left placement, got rid of the side scrolling bar and navbar, so the map doesnt look as clustered. I will try to make a game 🎮 next, but I have not decided what I will try going for. //////////////////////////////////////////////////////////////////////////////////////// Currently I’m thinking about making a clicker game connected to the slot machine 🎰, that uses the same beans and lets you upgrade the machine further. But we’ll see..
I started my clicker app, it has 1 upgrade available, and it works from the same coffee beans as the slot machine. (Middle explains some of the new things I learned.) ///////////////////////////////////////////////////////////////////////// To link the amount of beans I used querrySelectorALL.forEach… It is a really helpful thingy because I don’t have to use multiple ids. To update my clicker info I used the same principle used in tutorial, but I added my variables in it so they change the values automatically and I made the texts in a function, to make them easier to update. I will try adding the other upgrade buttons in one function, just like opening windows is one. Next thing I’m going to try implementing is that the apps can be minimized/maximized, and that open apps are visible on the task bar just like in windows. /////////////////////////////////////////////////////////////////////////////////////// I will not make any progress for about a week or more, because I am going to be busy with lots (I mean lots) of other life stuff. I hope you have an excitingly wonderful day☕☕!
Finished making my coffee clicker app🎮. I really enjoyed making the logic behind it because it was just pure math, playing it made me feel addicted that’s why the video is sped up. This app concludes my WebOS 2 journey, I might continue this project and make other cool apps, maybe I’ll add a roasted coffee bean shop.
Ships:
I made an operating system called coffee-os. It features a working clock, coffee os welcome screen (open frome bottom left corner text), notes app and slot machine. The most challenging part was making all the values that are being updated in javascript update in html. You can read more from github ReadMe
I made coffee OS an operating system similair to windows, but it is also a game? Yes it is really fun to mess around with the coffee clicker. The most challenging part of making it was to update the innerHTML variables in javascript inside my content that is stored there. I am really happy how well the coffee theme looks on the website and I really like the little secret overlay that blocks you from doing anything if you beat the OS. More info in README 🙃...
|
1793105243.7722573
|
1793191643.7722573
|
|
26452
|
Orbital by @Mehmet | Stardance
|
Mehmet
|
2
|
32.0
|
390
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T19:39:02Z", "hours": 17.0, "multiplier": 12.19, "payout": 201, "blessing": "neutral", "text": "I built Orbital, the all-in-one project that encompasses whatever you need from a 2D astronomical simulator. When first loading it up, a window titled “Orbital” pops up, and you will see a star right at the center. You can change the window dimensions however you would like, whether fullscreen or resized small. This is where the fun starts: I spent tireless hours implementing a slingshot mechanism where you can intuitively and easily launch “orbitals,” as I like to call them. You can think of these as small planets that you can send to orbit around each other and around bigger stars, masses, and objects that you create yourself. The starting star is just to get you going. Controls and Features: • Navigation: Use the WASD keys and/or arrow keys to navigate around this 2D world and find different orbits across the gigantic canvas. It does not have an end (unless you spend 10 hours of unemployment trying to find it, but I am sure you are not that stubborn). • Mass Adjustment: Use the plus (+) and minus (-) keys to change the mass of the objects you throw into the simulation. • Physics: It runs on full n-body physics; nothing is hard-coded and everything is dynamic. No matter how quirky and interesting your orbits are, they will be solely and originally yours. • Visuals: The colors change up every once in a while. I really tried to make it as minimalist and physics-identifying as possible. • Reset: Press the R key on your keyboard to reset the world and start from a fresh universe, marked by the reset star that kickstarts everything again. I am really proud of the n-body physics because it was surprisingly manageable and cool to work on. Where I really struggled was on advanced merging. Normally, if objects are touching, you can simply merge them. But when objects move super fast, one frame they are far away, and by the next frame, high velocity math teleports them right past or into the other object. If you slingshot a planet relatively fast, it could easily glitch and teleport through objects. To fix this, I had to calculate whether the path the object took from frame 0 to frame 1 intersected any other objects along its trajectory. That was an especially hard, albeit depressing challenge, but nevertheless, it was encountered and defeated so you could enjoy astronomical bliss. Thank you!", "repo": "https://github.com/SameRainbows/Starshell", "demo": "https://github.com/SameRainbows/Orbital/releases/tag/v1.0.0"}, {"ship_num": 2, "ts": "2026-07-05T15:30:25Z", "hours": 15.0, "multiplier": 12.8, "payout": 189, "blessing": "neutral", "text": "Initial Ship Update (v1.0.0) What did I make? I built Orbital , a 2D gravitational physics sandbox created entirely in Python using only standard library modules ( turtle and tkinter ). Orbits are not hardcoded; they emerge dynamically from Newton’s Law of Universal Gravitation calculated between every single body frame-by-frame. You can interactively slingshot planets into orbit, pan a camera infinitely around the universe using WASD or Arrow keys, adjust the laws of physics on the fly using a Tkinter-based HUD, and watch planets collide and merge under the conservation of momentum. What was challenging? The Coordinates Separation: Early on, a planet’s physics position was its drawing position. To build a panning camera, I had to decouple them—creating a 9-element list structure to track world coordinates privately while subtracting camera offsets only for rendering. The “Tunneling” Bug: Fast slingshotted planets would frequently phase straight through the central star between frames. I solved this by implementing Continuous Collision Detection (CCD)—using vector dot-product projection to check if the line segment traveled during a frame intersected the star. Singularity Prevention: As merging planets got infinitesimally close, the gravity force equation approached divide-by-zero, creating infinite force that would sling bodies off screen at lightspeed. I had to write custom logic to disable gravity between two bodies the exact frame they overlap. A Responsive HUD: Nesting Tkinter widgets on a Turtle ScrolledCanvas caused nesting errors. I resolved this by passing the raw screen._root as the parent, and binding the canvas <Configure> event to dynamically slide the widgets so they stay pinned to the top-right corner when resizing. What am I proud of? Conserving Density: When two bodies merge, the new object’s size is calculated using sqrt(r1² + r2²) rather than just adding the radii. This ensures area is conserved, keeping physical density mathematically consistent. Conservation of Momentum: If you launch two equal-mass planets head-on at the same speed, they will perfectly cancel out and stop dead in space upon impact, exactly as real-world physics dictates. What should people know so they can test my project? Slingshot: Click, drag, and release to fling planets into the cosmos. HUD Controls: Adjust the Gravity slider to warp orbits in real-time, and slide the Mass slider to change the size and weight of the next planet you launch. Color Picker: Click the color button to cycle the launching color (the button text dynamically updates to show what is selected). Navigation: Use WASD or Arrow keys to pan the camera around. Rebuilding: Press the Reset button to wipe the board and start a clean universe. No Python installed? Zero-dependency, standalone executables for Windows , macOS , and Linux are automatically built and attached directly to the GitHub Release!", "repo": "https://github.com/SameRainbows/Starshell", "demo": "https://github.com/SameRainbows/Orbital/releases/tag/v1.0.0"}]...
|
[{"post_id": 63802, "ts": "202 [{"post_id": 63802, "ts": "2026-09-07T19:26:27Z", "hours": 1.2872, "text": "I updated the project. I was notified that it initially crashed on macOS, and the arrow keys were a bit janky on macOS as well. All of that has been completely fixed, and I’ve updated the readme and the latest code on GitHub to encompass those changes."}, {"post_id": 38456, "ts": "2026-07-31T20:42:59Z", "hours": 0.3458, "text": "A few cleanups on the size of the grid."}, {"post_id": 37557, "ts": "2026-07-30T11:27:46Z", "hours": 0.4203, "text": "Today I changed the title card of the window that pops up. A few other updates: • I tweaked the final game feel a bit. • I made the initial spawning star spawn in a sort of light yellow color, and I also added that light yellow color to the colors list. • I made sure that the window of the simulation is also in dark mode, so you get more encapsulated in it."}, {"post_id": 37243, "ts": "2026-07-29T20:01:14Z", "hours": 0.3844, "text": "Added a background grid so that you get a sense of spatial bigness and tininess. You get a feel for how big and small your orbitals really are."}, {"post_id": 36907, "ts": "2026-07-29T09:37:56Z", "hours": 0.5981, "text": "I finally got the complex merging done. Before, when an orbital was going too fast, one frame it was at the back of another orbital, and the next frame, it was in front of it. Since its velocity was so high, the radii didn’t ever collide, so it just went through other ones without merging. That was really not acceptable, so I worked a lot on making sure it works. How I did it is actually very interesting: Get the starting position of the moving object and its ending position on the next frame. Get the coordinates of the target object you want to check for a potential merge. Draw a line from where the moving object started to where it ended, and check if the target object is intersecting that line (calculating what percentage along that line the checked object sits). If it intersects, you merge them."}, {"post_id": 34557, "ts": "2026-07-25T11:31:10Z", "hours": 1.9503, "text": "Added some instructions to make it easier, added more colors, and I’m now working on making more rigorous merge logic."}, {"post_id": 31787, "ts": "2026-07-20T13:42:17Z", "hours": 0.7153, "text": "Today I added zooming that works with scrolling up and scrolling down appropriately: when you scroll down, everything gets smaller, and when you scroll up, everything gets bigger. Mass and gravity, of course, stay the same. I made sure that the sling function (basically spawning new orbitals) works flawlessly. Our aim function—which draws that mini press-and-drag indicator to make it easier to see where you are spawning orbitals—is also working with both camera differentiation and zoom differentiation. This way, you can zoom all the way out and still spawn orbitals in the correct way, or zoom all the way in and spawn them super close up. All the physics and rendering works beautifully."}, {"post_id": 31286, "ts": "2026-07-19T15:52:23Z", "hours": 0.4508, "text": "I made some more intuitive user changes: Slingshot Dampening: Now, the slingshot isn’t like an Angry Bird slingshot that propels your particles to the other side of the universe (though you could do that if you want, just open the code). All the slingshot coordinates and values are now multiplied by 0.2. We’re nerfing it a lot, but it seems more intuitive that way. Since you don’t know it’s nerfed, you won’t notice there is a higher capacity. In our case, a higher capacity actually means friction. Don’t get me wrong: it’s not particle friction, because they go super fast. It’s friction when trying to get orbits to work. Repository Tweaks: Calling the script from_scratch.py was killing me, so I found something simpler: orbital.py. It’s much better. I updated the GitHub repository so that the current release is orbital.py (the refactored version). While main.py (the previous version) has a few more features right now, orbital.py is much cleaner. Main.py was more of a learning run, and I feel like I’m bringing my A-game with this new refactor. Look and Feel: I really liked the black background and white orbitals of the previous main.py version, so I changed the clinical-seeming style of from_scratch.py. I scrapped that look and made sure the new orbital.py has some taste."}, {"post_id": 30665, "ts": "2026-07-18T12:54:27Z", "hours": 0.4531, "text": "I fixed the “merging from hell”. The first issue was the radius calculation. When two circles merge, simply adding their radii ( r1 + r2 ) is physically wrong because the combined area grows way too fast. In reality, the area of the circles should add up: A_new = A1 + A2 . By plugging in the area formula π × r² , we get π × r_new² = (π × r1²) + (π × r2²) . The π cancels out completely, leaving r_new = math.sqrt(r1² + r2²) . I updated the collision code with this, and now the combined masses have physically accurate sizes.To make this look right, I also fixed the visual scaling issue. Previously, every particle rendered at shapesize(1, 1) regardless of its actual mass or radius. I changed the instantiator so that a body’s shapesize dynamically scales with its physics radius: self.turt.shapesize(self.radius / 10, self.radius / 10) . Now when objects collide, you can actually see the merged planet grow on the screen.Lastly, I added a quick reset button . Pressing the R key runs a function that loops through the current objects, hides all their turtles to prevent visual ghosts, clears the main objects list, resets the camera back to center coordinates, and spawns a fresh central star"}, {"post_id": 30329, "ts": "2026-07-17T20:01:25Z", "hours": 0.7283, "text": "Hey, I added merging, but it’s “merging out of hell” because I made a very unphysically true and crude (if you’d call it that), but working prototype of merge_collisions and the merge function itself. It works as I intended, but not physically truly. Right now, it adds the radii of the circles themselves. If you think about it, that’s physically wrong because there’s a big difference between adding the areas of the circles versus their radii. That’s something I want to get right, so the next time I’m working on it, I’ll make sure to fix it so that we are adding the areas of the circles rather than their radii. I also found a bit of a problem where the merged objects themselves have a shape size of (1, 1). That’s not right because if you merge two objects with shape size 1, you’d expect the new shape size to be 2. Right now, no matter how many objects you merge, it still stays at 1, resulting in a very, very dense circle. I’m going to change that so we add the areas themselves, and have that new, bigger area update the visual representation of those astronomical objects. I’ll keep you guys updated. See you next time."}, {"post_id": 29651, "ts": "2026-07-16T18:34:38Z", "hours": 2.6961, "text": "Lots of stuff today: Camera movement: I added camera movement to our new refractor. Better version of the sling: The older one just expected you to press, drag, and release without seeing much of an indicator. While that works if you know the program a bit, I think a direct, laser-esque pointer that shows you actively as you’re pressing, dragging, and releasing is more intuitive and easier to work with. So I added that. Now we have intuitive camera movement and intuitive spawning. For this refactor, we won’t have any UI. All the sliders for gravity and mass will be per keyboard or hotkey."}, {"post_id": 27197, "ts": "2026-07-12T15:21:09Z", "hours": 0.7889, "text": "Welcome! Today, I fully migrated to the object-oriented programming architecture. Earlier, the class wasn’t really full OOP; it was just a hidden list factory that appended the stuff via a class instead of doing it manually. I wanted to change that because this is going to be a refactor in an OOP perspective , and that’s what I did.I made sure that all the formulas used the latest changes:1. Earlier, they would use the index of the objects inside the objs list of lists. It would be something like object1 and the index of whichever element it wants to access, like mass , radius , velocity , or coordinates. It was very sloppy, and you had to keep up with what each index meant.2. With an OOP version, you just write object1.mass , object1.x , or object1.vx . Each and every line is more intuitive.I also worked more on the planet spawning . Remember, this is a new file with a different perspective of trying to remake this in an OOP sense, using classes and the benefits that ensue from them.Additionally, today I implemented the balancing of the canvas differences in Tkinter and Turtle :- In Turtle, the (0, 0) coordinate is directly in the middle of the screen .- In Tkinter, it’s at the absolute top left of the screen.You have to make sure that all the formulas and all the logic get the correct version, which in my project is the Turtle version . I added and worked out the logic that would make sure that balance is kept."}, {"post_id": 26600, "ts": "2026-07-11T14:59:24Z", "hours": 0.7944, "text": "Actively working on making Orbital (via the from_scratch.py file) more object-oriented. I think OOP (object-oriented programming) will be a great addition to Orbital because we have lots of stuff that can be simplified. These could be new particles, like new planets, and I think grouping everything into classes would be a better way to handle these. Right now, our sling function just does the same thing again and again. A class that could be called any time we want to make a new particle is probably the way to go. I’ll keep you guys updated."}, {"post_id": 25989, "ts": "2026-07-10T15:20:31Z", "hours": 0.7464, "text": "Today I spent all my time on from_scratch.py to really get to understand the physics of it all. Before, I just relied on a few formulas.That’s why I’m going to try and maximize my gains from this project by re-understanding all the logic and trying to write it from scratch, using only my notes and not looking at any AI or code from main.py .It’s going good! I added quite a few functions:- A distance function- A force function- An angle function (all of these take two objects, by the way — I still have the same objs list, which is a list of lists)- A velocity update function called velo_update that takes an object , a force , angle , and mass , and updates the velocities of those objects depending on their forces, angles, and massMaybe I can cut back on mass . I don’t know why I added it, since we can already get it from the objs list with our object parameter. I’ll look into that.I also created the scaffold for an update function, which is going to be the main function . I added screen.ontimer(update, 10) to run it every 10 milliseconds. It’s just the main scaffold for now, but I’m really focusing on the logic of it all."}, {"post_id": 25611, "ts": "2026-07-10T00:02:56Z", "hours": 3.3097, "text": "Hey, this is another mini devlog. I just wanted to say that while waiting for my initial ship to get reviewed, I was working on reviewing my current code and remembering how every part interacted. I’m doing this by making a from-scratch.py file where I just try to build the general project from the ground up with my direct understanding and recall of it, without looking at every line of code. This is like a mini side quest in the background so that as the file gets big, I don’t lose where I’m going. Right now, it just has the basic functions like distance and force, and has two Python turtles set to circles with different colors. I’m going to build this from the ground up and really focus on the struggle and pain through the process. I want to maximize my gains from this project this way."}, {"post_id": 23423, "ts": "2026-07-06T11:33:26Z", "hours": 0.8419, "text": "The UI was a very wretched default gray, and to be honest, it didn’t look so visually appealing. Mine still isn’t all peaches and cream, but it’s less of a distraction and more of a subtlety in the grand scheme of things. I changed this to a better, harmonizing dark charcoal color that I think goes pretty well with the minimalist design of all-white Orbitals and a pure black background."}, {"post_id": 22825, "ts": "2026-07-05T12:58:40Z", "hours": 0.5425, "text": "Hey, remember the UI I had in earlier? Well, when you change the window size, it just stays hard-coded. If you maximize your window, there’s suddenly a piece of UI that was supposed to help you navigate the simulator that’s in your way. So, I did some math so that the UI is at the perfect top right of any shape and size of the windows you make. It’s a dynamic UI layout, and it’s dynamic enough to survive window resizing. Pretty cool."}, {"post_id": 22811, "ts": "2026-07-05T12:15:42Z", "hours": 1.3161, "text": "Today I added some UI, so we have some actually good interactive elements. We can use sliders to, in real time, update our gravity. And I also added a reset button that basically lets you clean up all the messes and start from a fresh place."}, {"post_id": 22124, "ts": "2026-07-04T12:42:36Z", "hours": 2.3839, "text": "This is not a full devlog. Because I’m typing this on my phone. Came to say that I’m working on adding a minimalistic UI to the project, like small buttons and maybe sliders for mass and color control. Using tkinter, the underlying library in which turtle was built. I don’t have any screenshots with me, so enjoy this photo from my gallery, shot at the beach at night."}, {"post_id": 21435, "ts": "2026-07-03T11:55:53Z", "hours": 3.6731, "text": "Today I added merging. Now, objects that get too close to each other don’t do weird physics-breaking stuff. They intuitively merge into an object with a total mass, total area, and a new velocity depending on the previous velocities. This way, you can actually build complex systems that fall apart in at least an ordered way. There was a slight problem if the objects were going too fast: because of their speed, one frame they would be behind each other and the next frame they would be ahead of each other. I had to do some math to see if the path they took went through the object we were checking. That was a very fun, intuitive piece to work on, and merging now works very intuitively and very well."}, {"post_id": 19114, "ts": "2026-06-30T11:02:05Z", "hours": 1.3767, "text": "Added camera movement with WASD. Now, the objects that run out of your view aren’t lost forever: you can catch up to them with only your keyboard and a few fingers."}, {"post_id": 18601, "ts": "2026-06-29T19:53:31Z", "hours": 2.1206, "text": "I finally added slingshotting! Basically, the planets aren’t hidden in the code itself anymore; they are right at your fingertips. You can spawn planets just by clicking and dragging. It’s that simple. This was a feature I wanted for a very long time, and I’m really satisfied with how it turned out."}, {"post_id": 16991, "ts": "2026-06-27T15:56:02Z", "hours": 0.7453, "text": "Devlog #2 — N-Body Physics Today I implemented dynamic physics and dynamic moving. Basically, before, the move function—the function on a one-millisecond timer that updated everything—was extremely hard-coded. It just used the data of the existing two turtles (the two bodies I made myself), and it definitely wasn’t scalable. So that was what I tackled today. Now, the main function that runs our whole physics simulation is a tad bit less torturous."}, {"post_id": 16363, "ts": "2026-06-26T16:57:58Z", "hours": 2.59, "text": "I’m building Starshell, a 2D astronomical physics simulator in pure Python turtle. No game engine, no physics library—just the standard library, a turtle canvas, and physics and math. The idea in my head is quite simple: I want to simulate how gravity actually works. Bodies with mass attract each other, their paths bend, and orbits merge. Eventually, I want collisions, multi-body chaos, and a UI where you click to place stars and planets. Today’s milestone was the first orbit. To get here, I didn’t just plug in some formulas; I had to build the physics chains from a blank turtle canvas: Distance between two bodies Gravitational force: F = G × (m1 × m2) / r² Direction of that force: atan2(y, x) Force components: splitting into x and y with cos and sin Acceleration: a = F / m Velocity update: adding acceleration each frame Position update: moving the turtle by velocity each frame The orbit isn’t actually hard to code. The planet doesn’t know it’s supposed to go in a circle; I don’t tell it to trace a circle. It just responds to the pull of the star every single frame. The circle is what falls out of the math when the initial velocity is balanced just right. One of the trickiest moments was realizing my gravitational constant (G = 1) made the force so small—around 0.0004—that compared to my velocity of two units per frame, the planet just flew away in a straight line. I couldn’t see any curve at all, let alone an orbit. Cranking the gravity up to something like 1,000 to 1,600 (found by experimentation) made the orbits visible. That moment when the blue dot actually curved and came back around in a full orbit felt very satisfying. Next up, I want multiple bodies that interact with each other, not just a fixed point (aka a star). Follow Along!"}]...
|
Title: Orbital by @Mehmet | Stardance
Devlogs:
I’ Title: Orbital by @Mehmet | Stardance
Devlogs:
I’m building Starshell, a 2D astronomical physics simulator in pure Python turtle. No game engine, no physics library—just the standard library, a turtle canvas, and physics and math. The idea in my head is quite simple: I want to simulate how gravity actually works. Bodies with mass attract each other, their paths bend, and orbits merge. Eventually, I want collisions, multi-body chaos, and a UI where you click to place stars and planets. Today’s milestone was the first orbit. To get here, I didn’t just plug in some formulas; I had to build the physics chains from a blank turtle canvas: Distance between two bodies Gravitational force: F = G × (m1 × m2) / r² Direction of that force: atan2(y, x) Force components: splitting into x and y with cos and sin Acceleration: a = F / m Velocity update: adding acceleration each frame Position update: moving the turtle by velocity each frame The orbit isn’t actually hard to code. The planet doesn’t know it’s supposed to go in a circle; I don’t tell it to trace a circle. It just responds to the pull of the star every single frame. The circle is what falls out of the math when the initial velocity is balanced just right. One of the trickiest moments was realizing my gravitational constant (G = 1) made the force so small—around 0.0004—that compared to my velocity of two units per frame, the planet just flew away in a straight line. I couldn’t see any curve at all, let alone an orbit. Cranking the gravity up to something like 1,000 to 1,600 (found by experimentation) made the orbits visible. That moment when the blue dot actually curved and came back around in a full orbit felt very satisfying. Next up, I want multiple bodies that interact with each other, not just a fixed point (aka a star). Follow Along!
Devlog #2 — N-Body Physics Today I implemented dynamic physics and dynamic moving. Basically, before, the move function—the function on a one-millisecond timer that updated everything—was extremely hard-coded. It just used the data of the existing two turtles (the two bodies I made myself), and it definitely wasn’t scalable. So that was what I tackled today. Now, the main function that runs our whole physics simulation is a tad bit less torturous.
I finally added slingshotting! Basically, the planets aren’t hidden in the code itself anymore; they are right at your fingertips. You can spawn planets just by clicking and dragging. It’s that simple. This was a feature I wanted for a very long time, and I’m really satisfied with how it turned out.
Added camera movement with WASD. Now, the objects that run out of your view aren’t lost forever: you can catch up to them with only your keyboard and a few fingers.
Today I added merging. Now, objects that get too close to each other don’t do weird physics-breaking stuff. They intuitively merge into an object with a total mass, total area, and a new velocity depending on the previous velocities. This way, you can actually build complex systems that fall apart in at least an ordered way. There was a slight problem if the objects were going too fast: because of their speed, one frame they would be behind each other and the next frame they would be ahead of each other. I had to do some math to see if the path they took went through the object we were checking. That was a very fun, intuitive piece to work on, and merging now works very intuitively and very well.
This is not a full devlog. Because I’m typing this on my phone. Came to say that I’m working on adding a minimalistic UI to the project, like small buttons and maybe sliders for mass and color control. Using tkinter, the underlying library in which turtle was built. I don’t have any screenshots with me, so enjoy this photo from my gallery, shot at the beach at night.
Today I added some UI, so we have some actually good interactive elements. We can use sliders to, in real time, update our gravity. And I also added a reset button that basically lets you clean up all the messes and start from a fresh place.
Hey, remember the UI I had in earlier? Well, when you change the window size, it just stays hard-coded. If you maximize your window, there’s suddenly a piece of UI that was supposed to help you navigate the simulator that’s in your way. So, I did some math so that the UI is at the perfect top right of any shape and size of the windows you make. It’s a dynamic UI layout, and it’s dynamic enough to survive window resizing. Pretty cool.
The UI was a very wretched default gray, and to be honest, it didn’t look so visually appealing. Mine still isn’t all peaches and cream, but it’s less of a distraction and more of a subtlety in the grand scheme of things. I changed this to a better, harmonizing dark charcoal color that I think goes pretty well with the minimalist design of all-white Orbitals and a pure black background.
Hey, this is another mini devlog. I just wanted to say that while waiting for my initial ship to get reviewed, I was working on reviewing my current code and remembering how every part interacted. I’m doing this by making a from-scratch.py file where I just try to build the general project from the ground up with my direct understanding and recall of it, without looking at every line of code. This is like a mini side quest in the background so that as the file gets big, I don’t lose where I’m going. Right now, it just has the basic functions like distance and force, and has two Python turtles set to circles with different colors. I’m going to build this from the ground up and really focus on the struggle and pain through the process. I want to maximize my gains from this project this way.
Today I spent all my time on from_scratch.py to really get to understand the physics of it all. Before, I just relied on a few formulas.That’s why I’m going to try and maximize my gains from this project by re-understanding all the logic and trying to write it from scratch, using only my notes and not looking at any AI or code from main.py .It’s going good! I added quite a few functions:- A distance function- A force function- An angle function (all of these take two objects, by the way — I still have the same objs list, which is a list of lists)- A velocity update function called velo_update that takes an object , a force , angle , and mass , and updates the velocities of those objects depending on their forces, angles, and massMaybe I can cut back on mass . I don’t know why I added it, since we can already get it from the objs list with our object parameter. I’ll look into that.I also created the scaffold for an update function, which is going to be the main function . I added screen.ontimer(update, 10) to run it every 10 milliseconds. It’s just the main scaffold for now, but I’m really focusing on the logic of it all.
Actively working on making Orbital (via the from_scratch.py file) more object-oriented. I think OOP (object-oriented programming) will be a great addition to Orbital because we have lots of stuff that can be simplified. These could be new particles, like new planets, and I think grouping everything into classes would be a better way to handle these. Right now, our sling function just does the same thing again and again. A class that could be called any time we want to make a new particle is probably the way to go. I’ll keep you guys updated.
Welcome! Today, I fully migrated to the object-oriented programming architecture. Earlier, the class wasn’t really full OOP; it was just a hidden list factory that appended the stuff via a class instead of doing it manually. I wanted to change that because this is going to be a refactor in an OOP perspective , and that’s what I did.I made sure that all the formulas used the latest changes:1. Earlier, they would use the index of the objects inside the objs list of lists. It would be something like object1 and the index of whichever element it wants to access, like mass , radius , velocity , or coordinates. It was very sloppy, and you had to keep up with what each index meant.2. With an OOP version, you just write object1.mass , object1.x , or object1.vx . Each and every line is more intuitive.I also worked more on the planet spawning . Remember, this is a new file with a different perspective of trying to remake this in an OOP sense, using classes and the benefits that ensue from them.Additionally, today I implemented the balancing of the canvas differences in Tkinter and Turtle :- In Turtle, the (0, 0) coordinate is directly in the middle of the screen .- In Tkinter, it’s at the absolute top left of the screen.You have to make sure that all the formulas and all the logic get the correct version, which in my project is the Turtle version . I added and worked out the logic that would make sure that balance is kept.
Lots of stuff today: Camera movement: I added camera movement to our new refractor. Better version of the sling: The older one just expected you to press, drag, and release without seeing much of an indicator. While that works if you know the program a bit, I think a direct, laser-esque pointer that shows you actively as you’re pressing, dragging, and releasing is more intuitive and easier to work with. So I added that. Now we have intuitive camera movement and intuitive spawning. For this refactor, we won’t have any UI. All the sliders for gravity and mass will be per keyboard or hotkey.
Hey, I added merging, but it’s “merging out of hell” because I made a very unphysically true and crude (if you’d call it that), but working prototype of merge_collisions and the merge function itself. It works as I intended, but not physically truly. Right now, it adds the radii of the circles themselves. If you think about it, that’s physically wrong because there’s a big difference between adding the areas of the circles versus their radii. That’s something I want to get right, so the next time I’m working on it, I’ll make sure to fix it so that we are adding the areas of the circles rather than their radii. I also found a bit of a problem where the merged objects themselves have a shape size of (1, 1). That’s not right because if you merge two objects with shape size 1, you’d expect the new shape size to be 2. Right now, no matter how many objects you merge, it still stays at 1, resulting in a very, very dense circle. I’m going to change that so we add the areas themselves, and have that new, bigger area update the visual representation of those astronomical objects. I’ll keep you guys updated. See you next time.
I fixed the “merging from hell”. The first issue was the radius calculation. When two circles merge, simply adding their radii ( r1 + r2 ) is physically wrong because the combined area grows way too fast. In reality, the area of the circles should add up: A_new = A1 + A2 . By plugging in the area formula π × r² , we get π × r_new² = (π × r1²) + (π × r2²) . The π cancels out completely, leaving r_new = math.sqrt(r1² + r2²) . I updated the collision code with this, and now the combined masses have physically accurate sizes.To make this look right, I also fixed the visual scaling issue. Previously, every particle rendered at shapesize(1, 1) regardless of its actual mass or radius. I changed the instantiator so that a body’s shapesize dynamically scales with its physics radius: self.turt.shapesize(self.radius / 10, self.radius / 10) . Now when objects collide, you can actually see the merged planet grow on the screen.Lastly, I added a quick reset button . Pressing the R key runs a function that loops through the current objects, hides all their turtles to prevent visual ghosts, clears the main objects list, resets the camera back to center coordinates, and spawns a fresh central star
I made some more intuitive user changes: Slingshot Dampening: Now, the slingshot isn’t like an Angry Bird slingshot that propels your particles to the other side of the universe (though you could do that if you want, just open the code). All the slingshot coordinates and values are now multiplied by 0.2. We’re nerfing it a lot, but it seems more intuitive that way. Since you don’t know it’s nerfed, you won’t notice there is a higher capacity. In our case, a higher capacity actually means friction. Don’t get me wrong: it’s not particle friction, because they go super fast. It’s friction when trying to get orbits to work. Repository Tweaks: Calling the script from_scratch.py was killing me, so I found something simpler: orbital.py. It’s much better. I updated the GitHub repository so that the current release is orbital.py (the refactored version). While main.py (the previous version) has a few more features right now, orbital.py is much cleaner. Main.py was more of a learning run, and I feel like I’m bringing my A-game with this new refactor. Look and Feel: I really liked the black background and white orbitals of the previous main.py version, so I changed the clinical-seeming style of from_scratch.py. I scrapped that look and made sure the new orbital.py has some taste.
Today I added zooming that works with scrolling up and scrolling down appropriately: when you scroll down, everything gets smaller, and when you scroll up, everything gets bigger. Mass and gravity, of course, stay the same. I made sure that the sling function (basically spawning new orbitals) works flawlessly. Our aim function—which draws that mini press-and-drag indicator to make it easier to see where you are spawning orbitals—is also working with both camera differentiation and zoom differentiation. This way, you can zoom all the way out and still spawn orbitals in the correct way, or zoom all the way in and spawn them super close up. All the physics and rendering works beautifully.
Added some instructions to make it easier, added more colors, and I’m now working on making more rigorous merge logic.
I finally got the complex merging done. Before, when an orbital was going too fast, one frame it was at the back of another orbital, and the next frame, it was in front of it. Since its velocity was so high, the radii didn’t ever collide, so it just went through other ones without merging. That was really not acceptable, so I worked a lot on making sure it works. How I did it is actually very interesting: Get the starting position of the moving object and its ending position on the next frame. Get the coordinates of the target object you want to check for a potential merge. Draw a line from where the moving object started to where it ended, and check if the target object is intersecting that line (calculating what percentage along that line the checked object sits). If it intersects, you merge them.
Added a background grid so that you get a sense of spatial bigness and tininess. You get a feel for how big and small your orbitals really are.
Today I changed the title card of the window that pops up. A few other updates: • I tweaked the final game feel a bit. • I made the initial spawning star spawn in a sort of light yellow color, and I also added that light yellow color to the colors list. • I made sure that the window of the simulation is also in dark mode, so you get more encapsulated in it.
A few cleanups on the size of the grid.
I updated the project. I was notified that it initially crashed on macOS, and the arrow keys were a bit janky on macOS as well. All of that has been completely fixed, and I’ve updated the readme and the latest code on GitHub to encompass those changes.
Ships:
Initial Ship Update (v1.0.0) What did I make? I built Orbital , a 2D gravitational physics sandbox created entirely in Python using only standard library modules ( turtle and tkinter ). Orbits are not hardcoded; they emerge dynamically from Newton’s Law of Universal Gravitation calculated between every single body frame-by-frame. You can interactively slingshot planets into orbit, pan a camera infinitely around the universe using WASD or Arrow keys, adjust the laws of physics on the fly using a Tkinter-based HUD, and watch planets collide and merge under the conservation of momentum. What was challenging? The Coordinates Separation: Early on, a planet’s physics position was its drawing position. To build a panning camera, I had to decouple them—creating a 9-element list structure to track world coordinates privately while subtracting camera offsets only for rendering. The “Tunneling” Bug: Fast slingshotted planets would frequently phase straight through the central star between frames. I solved this by implementing Continuous Collision Detection (CCD)—using vector dot-product projection to check if the line segment traveled during a frame intersected the star. Singularity Prevention: As merging planets got infinitesimally close, the gravity force equation approached divide-by-zero, creating infinite force that would sling bodies off screen at lightspeed. I had to write custom logic to disable gravity between two bodies the exact frame they overlap. A Responsive HUD: Nesting Tkinter widgets on a Turtle ScrolledCanvas caused nesting errors. I resolved this by passing the raw screen._root as the parent, and binding the canvas <Configure> event to dynamically slide the widgets so they stay pinned to the top-right corner when resizing. What am I proud of? Conserving Density: When two bodies merge, the new object’s size is calculated using sqrt(r1² + r2²) rather than just adding the radii. This ensures area is conserved, keeping physical density mathematically consistent. Conservation of Momentum: If you launch two equal-mass planets head-on at the same speed, they will perfectly cancel out and stop dead in space upon impact, exactly as real-world physics dictates. What should people know so they can test my project? Slingshot: Click, drag, and release to fling planets into the cosmos. HUD Controls: Adjust the Gravity slider to warp orbits in real-time, and slide the Mass slider to change the size and weight of the next planet you launch. Color Picker: Click the color button to cycle the launching color (the button text dynamically updates to show what is selected). Navigation: Use WASD or Arrow keys to pan the camera around. Rebuilding: Press the Reset button to wipe the board and start a clean universe. No Python installed? Zero-dependency, standalone executables for Windows , macOS , and Linux are automatically built and attached directly to the GitHub Release!
I built Orbital, the all-in-one project that encompasses whatever you need from a 2D astronomical simulator. When first loading it up, a window titled “Orbital” pops up, and you will see a star right at the center. You can change the window dimensions however you would like, whether fullscreen or resized small. This is where the fun starts: I spent tireless hours implementing a slingshot mechanism where you can intuitively and easily launch “orbitals,” as I like to call them. You can think of these as small planets that you can send to orbit around each other and around bigger stars, masses, and objects that you create yourself. The starting star is just to get you going. Controls and Features: • Navigation: Use the WASD keys and/or arrow keys to navigate around this 2D world and find different orbits across the gigantic canvas. It does not have an end (unless you spend 10 hours of unemployment trying to find it, but I am sure you are not that stubborn). • Mass Adjustment: Use the plus (+) and minus (-) keys to change the mass of the objects you throw into the simulation. • Physics: It runs on full n-body physics; nothing is hard-coded and everything is dynamic. No matter how quirky and interesting your orbits are, they will be solely and originally yours. • Visuals: The colors change up every once in a while. I really tried to make it as minimalist and physics-identifying as possible. • Reset: Press the R key on your keyboard to reset the world and start from a fresh universe, marked by the reset star that kickstarts everything again. I am really proud of the n-body physics because it was surprisingly manageable and cool to work on. Where I really struggled was on advanced merging. Normally, if objects are touching, you can simply merge them. But when objects move super fast, one frame they are far away, and by the next frame, high velocity math teleports them right past or into the other object. If you slingshot a planet relatively fast, it could easily glitch and teleport through objects. To fix this, I had to calculate whether the path the object took from frame 0 to frame 1 intersected any other objects along its trajectory. That was an especially hard, albeit depressing challenge, but nevertheless, it was encountered and defeated so you could enjoy astronomical bliss. Thank you!...
|
1793116151.5804758
|
1793202551.5804758
|
|
26517
|
Exopossibilities by @Skye | Stardance
|
Skye
|
2
|
63.0
|
909
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T20:04:39Z", "hours": 50.0, "multiplier": 15.94, "payout": 791, "blessing": "neutral", "text": "Hi everyone! This is my first ever website I’ve made by myself and I’m super proud to share it with you guys! It’s called Exopossibilities (Exoplanet and Possibilities blended into one). It uses a whole bunch of data from NASA’s Exoplanet Archive and presents in a fun way. I started this summer by making the base of the website (the home, discover, and planet pages), and have since added a bunch of fun features! I used Claude for help a lot with JS at the beginning, but have since learned how to do most of it myself, which I’m super proud of. The point of this project is to bring together my interests and present them in a way that is fun for other people to explore and learn from. There’s a quiz to match exoplanets to your preferences, a glossary for words you don’t know, and so much more! I put a lot of work into this project and really hope you enjoy it!", "repo": "https://github.com/julietmeletta/Exopossibilities", "demo": "https://julietmeletta.github.io/Exopossibilities/index"}, {"ship_num": 2, "ts": "2026-07-06T03:13:26Z", "hours": 13.0, "multiplier": 9.22, "payout": 118, "blessing": "neutral", "text": "I created a website and named it Exopossibilities, basically blending the word possibilities into the word Exoplanets. On my website, the user can navigate to the Discover page, where they see a list of every exoplanet in NASA’s archive(over 5,000). They can then explore info on each planet, search for a specific planet, filter to see planets that fit specific criteria, i.e. Each box containing the planet’s name and info is able to be clicked on, which sends the user to a page focused solely on that planet. Each planet’s page displays the planet’s info, how long it would take to get to the planet, how living on the planet would affect the human body, and what would be needed to live on that planet, if possible at all. I’m super proud because this was all super unfamiliar to me. This was my first website, it was my first time using APIs, my first time using JS at all, i.e. As expected, I ran into some problems (for example, sometimes the list of planets just wouldn’t load: yes it was a very silly mistake of forgetting to rename one of the filters in my JS file) but was able to troubleshoot/debug to get everything working. I made this project because I’m interested in aerospace engineering and in biomedical engineering, so the idea behind the project was to blend the two by exploring the effects on the human body of living on different exoplanets. I hope you guys enjoy my project!", "repo": "https://github.com/julietmeletta/Exopossibilities", "demo": "https://julietmeletta.github.io/Exopossibilities/index"}]...
|
[{"post_id": 55773, "ts": "202 [{"post_id": 55773, "ts": "2026-08-27T19:32:22Z", "hours": 1.9789, "text": "Ready to Ship!! I haven’t done much since the last devlog, just some random fixes, polishing whatever. But I’ve added a bunch since my last ship that I’ll talk more about in my ship itself!"}, {"post_id": 54681, "ts": "2026-08-25T18:55:05Z", "hours": 6.4967, "text": "I added some statistics on a page! It’s not much but it was fun to make and I like it. There’s 6 different charts that each show different data. I think it’s cool to see and fits in with the “discover” theme. Currently I’m working on making it work well on mobile because rn it looks like it needs fixing. When I’m done I think I’m ready to ship!"}, {"post_id": 53153, "ts": "2026-08-23T16:17:58Z", "hours": 3.2425, "text": "Introducing Favorites! Used local storage so I’m not taking anyone’s info lol. It allows you to heart any planet and filter to favorites on the discover page. This way you can keep track of the planets you like! I like finding the matches of planets I like using the quiz then favoriting those!"}, {"post_id": 47729, "ts": "2026-08-15T20:47:06Z", "hours": 3.0519, "text": "I’ve been playing around with the locator page. For now I have it like this, where the info is entered and it tells the user where (better CSS than last devlog in my opinion). I don’t know if I can make it into a whole map thing mostly because I would probably use SVG but I don’t really have any experience with that. Anyway, if I have tons of extra time I might try that. For now, I’m just fixing the styling on mobile."}, {"post_id": 46666, "ts": "2026-08-14T03:09:32Z", "hours": 4.6506, "text": "So - another (not done) new feature. This one is kind of different. I found ra and dec values in the NASA archive I’ve been using and came up with this idea. My original idea was to make a map of the exoplanet and then you could search for one and it would find it on the map. There are sites that do same type of thing like Stellarium or the app Night Sky. I might do that or something like that later but this is what I have for now. It’s basically the math and JS that the map would use, just not made into a map. I’m hoping to make this more sophisticated than it currently is but I’m not sure quite how far I’ll be able to take it. I hope that the end product for this feature turns out well. Edit: When I say map I mean like a 360 view of the night sky from the ground type thing (you can look at Stellarium to understand what I mean if you are curious)."}, {"post_id": 45328, "ts": "2026-08-11T18:28:35Z", "hours": 2.3153, "text": "I added a print button on the planet page! Next to the side navigation button, there’s a button with the print symbol that allows the user to print that planet’s page. Lot of styling went into it to figure out how to get it to show the background image and colors and stuff but overall it was pretty simple to make."}, {"post_id": 44940, "ts": "2026-08-11T01:14:31Z", "hours": 3.0764, "text": "Added a navigation side bar menu! Not in love with the styling, so maybe I will change up the CSS to make it prettier. But overall it works fully and is much more helpful than navigating through the site using home and back buttons."}, {"post_id": 44250, "ts": "2026-08-09T21:36:52Z", "hours": 5.9186, "text": "I added a glossary. When my sister was looking at my project I realized there’s a lot of terms some people might not know so I made a page explaining those terms. I also have been keeping my project updated to work on mobile."}, {"post_id": 38479, "ts": "2026-07-31T21:40:58Z", "hours": 1.9289, "text": "Guys I need help. I have a question and I can’t figure out what I should do. I have a whole bunch of files for my website I’ve been making and I don’t know how I’m supposed to organize my files. You may be thinking, this isn’t really a problem. Well I guess you’re right in the sense that it doesn’t affect how my website works. BUT it’s like lowkey making me anxious because my file list keeps growing and whatnot. I tried to start sorting the files. I have folders for the JS files, the JSON files, and the images. Do I keep this pattern and make a folder for the html files and another for css files? I guess my real question is this: Is there a conventional way of organizing them that I’m supposed to know? If not, is there like a best way to do it?"}, {"post_id": 37691, "ts": "2026-07-30T16:16:58Z", "hours": 7.0717, "text": "So I was thinking about like what I could add to my site and came up with some fun ideas. First, I added a formula (from NASA’s website) to calculate the ESI (Earth Similarity Index) of each exoplanet. Then, I made certain exoplanets “medalists”. Basically if a exoplanet is like unique in a quantitative way (with the data I’m already using) then it is awarded a medal. Some examples are largest/smallest mass, highest/lowest ESI Score, etc. In total, right now, there are 11 exoplanets with medals (out of like 6,000 total). Then I added having a medal to the filters and connected it to a button on the home screen."}, {"post_id": 29699, "ts": "2026-07-16T19:47:15Z", "hours": 1.7039, "text": "I APOLOGIZE FOR THE 18 COMMITS THAT ARE ALL FOR THE SAME THING. So I decided to style the site for mobile as well as laptop because it worked okay on mobile but was very zoomed out and stuff. So it’s not like I have vs code on my phone and there probably is an easier way but I didn’t want to figure out getting a live server on my phone so I kept changing the CSS, committing, checking it on my phone, and repeat. But hey - now it looks better for mobile!"}, {"post_id": 29264, "ts": "2026-07-16T02:17:50Z", "hours": 1.1181, "text": "Introducing Planet of the Day and some neat CSS changes! I added a planet of the day on the home page which is clickable just like the cards on the discover page. I also added skeleton loading states for the list of planets on the discover page. I noticed that it was consistently taking time to load and render the planets (not surprisingly) so I added it to make it feel more polished and less sharp. And yes, the screenshot of the loading states was timed so that I caught them on the screen before the planets appeared."}, {"post_id": 29145, "ts": "2026-07-15T20:33:59Z", "hours": 2.8753, "text": "I added a new feature! A quiz that matches the user’s preferences with exoplanets. The user answers 5 questions and gets a collection of exoplanets that match those preferences!"}, {"post_id": 28859, "ts": "2026-07-15T12:41:13Z", "hours": 1.6367, "text": "Update - Changes Since My Ship Photos! As I mentioned in my last 2 devlogs, I changed the planets’ photos. I used to have a single blue planet that was on every planet’s page and that seemed boring, so I changed it. Most exoplanets don’t actually have photos, so I took a handful of photos and sorted the planets into types. Now, there is a photo for each type and the planet’s corresponding photo is on its planet page and its card in the discover page. I have a photo for each type: terrestrial, super-earth, Neptune-like, mini-Neptune, gas giant, and hot Jupiter. Mini-Neptunes and hot Jupiters are really just subsections of Neptune-like and gas giants, respectively, but I decided to give them their own photo anyways. Random Planet Button! I added a button right next to the filters that brings the user to a random planet page obeying the filters that they set. I thought it’s a fun little feature to make my site a bit more fun. Hopefully, I’ll be adding a couple other features too. I made like some minor CSS changes to the filters and stuff. Barely noticeable but I think that little part looks better than before. Yay! More to come!"}, {"post_id": 27429, "ts": "2026-07-13T00:02:15Z", "hours": 1.2636, "text": "So … I added the images to the discover page, which makes it less boring. The planets are sorted into 6 categories, each with a different photo. I also finally sorted my files. Yay! I wasn’t quite sure how I should organize them - like do I put css in one folder and html in another? So I left some unorganized for now."}, {"post_id": 26975, "ts": "2026-07-12T02:57:00Z", "hours": 1.3003, "text": "A lot of people who reviewed my ship mentioned all the planet pages having the same image - which is totally fair. I felt the same way (and so did my sister), so I decided to do something about it. Most exoplanets just simply don’t have photos, so it’s not like I could put a photo of each planet. I decided to put different photos for different types of planets (terrestrial, super earth, neptune-like, gas giant). Hope you guys like it!"}, {"post_id": 23246, "ts": "2026-07-06T02:28:12Z", "hours": 1.9897, "text": "I give you fonts ! And I’m done! (for now). I want to try and add a cool feature and do some other random stuff at some point but ta-da!"}, {"post_id": 22973, "ts": "2026-07-05T17:34:03Z", "hours": 7.4275, "text": "Finished the first draft of my website. I put an example image of what one of the planet pages looks like. I will probably do a little more CSS work and maybe add some new features but I’m pretty happy with what I have so far. This is my first website that I’ve made myself. It’s also my first time using APIs in a project which was super cool."}, {"post_id": 18833, "ts": "2026-06-30T01:11:16Z", "hours": 2.2908, "text": "I finished the filters and detailed blocks for each exoplanet! Next step is each exoplanet getting an individual page with more details."}, {"post_id": 18399, "ts": "2026-06-29T15:17:03Z", "hours": 1.0153, "text": "I have the API of exoplanets from NASA in my project and added a search bar. Next step is to add clickable cards to show the data of each planet, then filters for searching, etc. The API I used has info on each planet’s name, radius, mass, distance from earth, and equilibrium temp. I’ll get around to better CSS at the end, right now it’s kind of sad looking. Then I’ll tie the info to the effect on the human body."}, {"post_id": 17766, "ts": "2026-06-28T18:14:30Z", "hours": 0.4517, "text": "Hi everyone! This is my first ever devlog and I’m so excited! I’ve only just started my project, for now it’s called Exopossibilities. I’m planning on using an API to have data on exoplanets then users can see what would happen to a human on a specific exoplanets. I’m planning to use a second API to have information on how the human body is affected by certain environmental factors(pressure, extreme temps, etc.)."}]...
|
Title: Exopossibilities by @Skye | Stardance
Devl Title: Exopossibilities by @Skye | Stardance
Devlogs:
Hi everyone! This is my first ever devlog and I’m so excited! I’ve only just started my project, for now it’s called Exopossibilities. I’m planning on using an API to have data on exoplanets then users can see what would happen to a human on a specific exoplanets. I’m planning to use a second API to have information on how the human body is affected by certain environmental factors(pressure, extreme temps, etc.).
I have the API of exoplanets from NASA in my project and added a search bar. Next step is to add clickable cards to show the data of each planet, then filters for searching, etc. The API I used has info on each planet’s name, radius, mass, distance from earth, and equilibrium temp. I’ll get around to better CSS at the end, right now it’s kind of sad looking. Then I’ll tie the info to the effect on the human body.
I finished the filters and detailed blocks for each exoplanet! Next step is each exoplanet getting an individual page with more details.
Finished the first draft of my website. I put an example image of what one of the planet pages looks like. I will probably do a little more CSS work and maybe add some new features but I’m pretty happy with what I have so far. This is my first website that I’ve made myself. It’s also my first time using APIs in a project which was super cool.
I give you fonts ! And I’m done! (for now). I want to try and add a cool feature and do some other random stuff at some point but ta-da!
A lot of people who reviewed my ship mentioned all the planet pages having the same image - which is totally fair. I felt the same way (and so did my sister), so I decided to do something about it. Most exoplanets just simply don’t have photos, so it’s not like I could put a photo of each planet. I decided to put different photos for different types of planets (terrestrial, super earth, neptune-like, gas giant). Hope you guys like it!
So … I added the images to the discover page, which makes it less boring. The planets are sorted into 6 categories, each with a different photo. I also finally sorted my files. Yay! I wasn’t quite sure how I should organize them - like do I put css in one folder and html in another? So I left some unorganized for now.
Update - Changes Since My Ship Photos! As I mentioned in my last 2 devlogs, I changed the planets’ photos. I used to have a single blue planet that was on every planet’s page and that seemed boring, so I changed it. Most exoplanets don’t actually have photos, so I took a handful of photos and sorted the planets into types. Now, there is a photo for each type and the planet’s corresponding photo is on its planet page and its card in the discover page. I have a photo for each type: terrestrial, super-earth, Neptune-like, mini-Neptune, gas giant, and hot Jupiter. Mini-Neptunes and hot Jupiters are really just subsections of Neptune-like and gas giants, respectively, but I decided to give them their own photo anyways. Random Planet Button! I added a button right next to the filters that brings the user to a random planet page obeying the filters that they set. I thought it’s a fun little feature to make my site a bit more fun. Hopefully, I’ll be adding a couple other features too. I made like some minor CSS changes to the filters and stuff. Barely noticeable but I think that little part looks better than before. Yay! More to come!
I added a new feature! A quiz that matches the user’s preferences with exoplanets. The user answers 5 questions and gets a collection of exoplanets that match those preferences!
Introducing Planet of the Day and some neat CSS changes! I added a planet of the day on the home page which is clickable just like the cards on the discover page. I also added skeleton loading states for the list of planets on the discover page. I noticed that it was consistently taking time to load and render the planets (not surprisingly) so I added it to make it feel more polished and less sharp. And yes, the screenshot of the loading states was timed so that I caught them on the screen before the planets appeared.
I APOLOGIZE FOR THE 18 COMMITS THAT ARE ALL FOR THE SAME THING. So I decided to style the site for mobile as well as laptop because it worked okay on mobile but was very zoomed out and stuff. So it’s not like I have vs code on my phone and there probably is an easier way but I didn’t want to figure out getting a live server on my phone so I kept changing the CSS, committing, checking it on my phone, and repeat. But hey - now it looks better for mobile!
So I was thinking about like what I could add to my site and came up with some fun ideas. First, I added a formula (from NASA’s website) to calculate the ESI (Earth Similarity Index) of each exoplanet. Then, I made certain exoplanets “medalists”. Basically if a exoplanet is like unique in a quantitative way (with the data I’m already using) then it is awarded a medal. Some examples are largest/smallest mass, highest/lowest ESI Score, etc. In total, right now, there are 11 exoplanets with medals (out of like 6,000 total). Then I added having a medal to the filters and connected it to a button on the home screen.
Guys I need help. I have a question and I can’t figure out what I should do. I have a whole bunch of files for my website I’ve been making and I don’t know how I’m supposed to organize my files. You may be thinking, this isn’t really a problem. Well I guess you’re right in the sense that it doesn’t affect how my website works. BUT it’s like lowkey making me anxious because my file list keeps growing and whatnot. I tried to start sorting the files. I have folders for the JS files, the JSON files, and the images. Do I keep this pattern and make a folder for the html files and another for css files? I guess my real question is this: Is there a conventional way of organizing them that I’m supposed to know? If not, is there like a best way to do it?
I added a glossary. When my sister was looking at my project I realized there’s a lot of terms some people might not know so I made a page explaining those terms. I also have been keeping my project updated to work on mobile.
Added a navigation side bar menu! Not in love with the styling, so maybe I will change up the CSS to make it prettier. But overall it works fully and is much more helpful than navigating through the site using home and back buttons.
I added a print button on the planet page! Next to the side navigation button, there’s a button with the print symbol that allows the user to print that planet’s page. Lot of styling went into it to figure out how to get it to show the background image and colors and stuff but overall it was pretty simple to make.
So - another (not done) new feature. This one is kind of different. I found ra and dec values in the NASA archive I’ve been using and came up with this idea. My original idea was to make a map of the exoplanet and then you could search for one and it would find it on the map. There are sites that do same type of thing like Stellarium or the app Night Sky. I might do that or something like that later but this is what I have for now. It’s basically the math and JS that the map would use, just not made into a map. I’m hoping to make this more sophisticated than it currently is but I’m not sure quite how far I’ll be able to take it. I hope that the end product for this feature turns out well. Edit: When I say map I mean like a 360 view of the night sky from the ground type thing (you can look at Stellarium to understand what I mean if you are curious).
I’ve been playing around with the locator page. For now I have it like this, where the info is entered and it tells the user where (better CSS than last devlog in my opinion). I don’t know if I can make it into a whole map thing mostly because I would probably use SVG but I don’t really have any experience with that. Anyway, if I have tons of extra time I might try that. For now, I’m just fixing the styling on mobile.
Introducing Favorites! Used local storage so I’m not taking anyone’s info lol. It allows you to heart any planet and filter to favorites on the discover page. This way you can keep track of the planets you like! I like finding the matches of planets I like using the quiz then favoriting those!
I added some statistics on a page! It’s not much but it was fun to make and I like it. There’s 6 different charts that each show different data. I think it’s cool to see and fits in with the “discover” theme. Currently I’m working on making it work well on mobile because rn it looks like it needs fixing. When I’m done I think I’m ready to ship!
Ready to Ship!! I haven’t done much since the last devlog, just some random fixes, polishing whatever. But I’ve added a bunch since my last ship that I’ll talk more about in my ship itself!
Ships:
I created a website and named it Exopossibilities, basically blending the word possibilities into the word Exoplanets. On my website, the user can navigate to the Discover page, where they see a list of every exoplanet in NASA’s archive(over 5,000). They can then explore info on each planet, search for a specific planet, filter to see planets that fit specific criteria, i.e. Each box containing the planet’s name and info is able to be clicked on, which sends the user to a page focused solely on that planet. Each planet’s page displays the planet’s info, how long it would take to get to the planet, how living on the planet would affect the human body, and what would be needed to live on that planet, if possible at all. I’m super proud because this was all super unfamiliar to me. This was my first website, it was my first time using APIs, my first time using JS at all, i.e. As expected, I ran into some problems (for example, sometimes the list of planets just wouldn’t load: yes it was a very silly mistake of forgetting to rename one of the filters in my JS file) but was able to troubleshoot/debug to get everything working. I made this project because I’m interested in aerospace engineering and in biomedical engineering, so the idea behind the project was to blend the two by exploring the effects on the human body of living on different exoplanets. I hope you guys enjoy my project!
Hi everyone! This is my first ever website I’ve made by myself and I’m super proud to share it with you guys! It’s called Exopossibilities (Exoplanet and Possibilities blended into one). It uses a whole bunch of data from NASA’s Exoplanet Archive and presents in a fun way. I started this summer by making the base of the website (the home, discover, and planet pages), and have since added a bunch of fun features! I used Claude for help a lot with JS at the beginning, but have since learned how to do most of it myself, which I’m super proud of. The point of this project is to bring together my interests and present them in a way that is fun for other people to explore and learn from. There’s a quiz to match exoplanets to your preferences, a glossary for words you don’t know, and so much more! I put a lot of work into this project and really hope you enjoy it!...
|
1793105286.3802345
|
1793191686.3802345
|
|
26542
|
My first slack bot! by @ishudutta487 | Stardance
|
ishudutta487
|
2
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-02T07:47:46Z", "hours": 0.0, "multiplier": 1.01, "payout": 0, "blessing": "neutral", "text": "idk why i am getting a ship button again , but nvm i am still going to click it anyway", "repo": "https://github.com/ishudutta487-png/Shinobi", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}, {"ship_num": 2, "ts": "2026-07-16T20:55:14Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made a slackbot which will have future customizations later", "repo": "https://github.com/ishudutta487-png/Shinobi", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 38446, "ts": "202 [{"post_id": 38446, "ts": "2026-07-31T20:17:10Z", "hours": 0.2644, "text": "Reworked on my slackbot, named shinobi inspired by the game Sekiro"}, {"post_id": 18721, "ts": "2026-06-29T22:07:56Z", "hours": 0.0, "text": "finally done with the slackbot"}]...
|
Title: My first slack bot! by @ishudutta487 | Star Title: My first slack bot! by @ishudutta487 | Stardance
Devlogs:
finally done with the slackbot
Reworked on my slackbot, named shinobi inspired by the game Sekiro
Ships:
Made a slackbot which will have future customizations later
idk why i am getting a ship button again , but nvm i am still going to click it anyway...
|
1793109043.9022722
|
1793195443.9022722
|
|
26626
|
Grapefruit by @tsunami014 | Stardance
|
tsunami014
|
2
|
135.0
|
2180
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T22:08:50Z", "hours": 25.0, "multiplier": 16.69, "payout": 421, "blessing": "neutral", "text": "FIXED THE UI with dynamic colours and themes! Fixed some layouts Improved how tasks are made (including a not overwhelming amount of qualities and changed the ambiguous “reasoning” into a much less so “goals” As well as many minor also cool things! (See the devlogs after ship 1 for the full account)", "repo": "https://github.com/Tsunami014/Grapefruit/tree/v2.0", "demo": "https://github.com/Tsunami014/Grapefruit/releases/tag/v2.0"}, {"ship_num": 2, "ts": "2026-08-20T11:10:17Z", "hours": 110.0, "multiplier": 15.99, "payout": 1759, "blessing": "neutral", "text": "I finally decided I had done enough and it was really good! This app contains the conversation, a scene with Grapefruit in it, a basic settings page with not much in it, a tasks manager with categories (including a today category) and tasks with importance, reasoning, qualities, items! Also has a great bottom bar for easier text editing and has everything layed out in a mobile-friendly manner! Installation instructions are in the README", "repo": "https://github.com/Tsunami014/Grapefruit/tree/v2.0", "demo": "https://github.com/Tsunami014/Grapefruit/releases/tag/v2.0"}]...
|
[{"post_id": 66920, "ts": "202 [{"post_id": 66920, "ts": "2026-09-12T21:50:02Z", "hours": 2.17, "text": "I improved how tasks are made, making the task overlay centred instead of to the side, changed “reasoning” into “goals” which is easier to understand and still useful, reduced the number of qualities and added some new ones similar to the old reasoning (e.g. ‘obligation’ & ‘reward’), came up with MUCH better sample tasks and fixed a small issue with the bottom bar!"}, {"post_id": 65770, "ts": "2026-09-11T04:14:17Z", "hours": 6.3225, "text": "I did a bunch of work on the settings and added a “theme”! (Different variations of the base colour - which is now changeable in the settings!) I also used HSLuv instead of just HSL (which I tried before and thought it didn’t do much but now I realise it did help make everything nicer). I also added an effect so when you press on buttons it decreases the border radius a bit! And lastly I thought I’d fix some issues super quick due to the increased layout diversity from the settings but ended up spending much longer on them than expected, those being the jumpyness of the settings dropdowns (so I removed the animations and fixed it up a bit more and also fixed the flowlayout because it turns out everything is broken), fixed scrollbars inside other scrollbars, and probably more I forgot."}, {"post_id": 65060, "ts": "2026-09-09T22:07:39Z", "hours": 4.7747, "text": "Tweaked the colours lots and I’m now quite happy with how it’s at! Added auto generating colours for everything I didn’t before (the calendar, settings, importance and some buttons in overlays) Saved the dark/light theme to a settings file And fixed a bug with the confirm and move overlays being a strange fixed width!"}, {"post_id": 64549, "ts": "2026-09-09T01:39:01Z", "hours": 7.5414, "text": "Added dynamic colours! Don’t worry that it looks kinda bad right now, I had to learn UI design from scratch for this, and I will improve it soon. Made all the colours (well, most of them for now) generate based on a base colour and added a light and dark theme! I also made the Android navigation icons and the svgs change between light and dark properly. I spent quite some time trying to implement HSLuv or HCT in the hopes it would improve the colours but ended up scrapping that due to many reasons, including too much extra stuff, wasn’t making much (or any) difference, and my HCT implementation was just so broken and I wasn’t bothered to try and fix it. Also some parts are now extra broken, I’ll fix them soon too don’t worry! I had to devlog this in case I went over 10h by accident, hopefully will be resolved before the next one"}, {"post_id": 62540, "ts": "2026-09-05T23:38:38Z", "hours": 4.4194, "text": "Improved some UI layouts, clarified a sentence or two in the conversation, reordered the tasks page, made selecting the title in the task overlay hide the buttons (to make it easier to see), fixed some visual bugs (maybe?), improved some icons, changed ‘today’ to ‘starred’ (and made it not clear at the end of the day; I wanted to plan for the future) and last but not least I made the grey background for some of the overlays reach past the navigation AT LAST! So now the title bar doesn’t look off when the overlays are open!"}, {"post_id": 50885, "ts": "2026-08-20T10:54:28Z", "hours": 3.4444, "text": "Added an app icon and FINALLY got around to actually drawing the Grapefruit character! Also improved some parts of the conversation a bit more, improved the default tasks, improved the date importance calculations a smidge and fixed many tiny issues. It should now be DONE!"}, {"post_id": 47411, "ts": "2026-08-15T10:28:21Z", "hours": 0.8222, "text": "I thought I was done but turns out I forgot to add scrolling to the tasks list, so it would cause large issues if there were many tasks (or if the screen height was very low, as it does get on mobile when the keyboard is up)"}, {"post_id": 47355, "ts": "2026-08-15T07:43:42Z", "hours": 1.3553, "text": "Improved the “X weeks away” text (which was just wrong before) and added a today toggle and category button!"}, {"post_id": 46825, "ts": "2026-08-14T10:57:19Z", "hours": 6.6328, "text": "Did various small improvements, including: Many many bugfixes, rearranging the task and settings display to have buttons on the bottom (from user feedback), a help screen, a ‘move task to another category’ button and dialogue (which I cannot believe I forgot about until now) and added another purpose in the conversation for the user designated reason (so it actually gets shown sometimes)!"}, {"post_id": 42346, "ts": "2026-08-07T00:53:14Z", "hours": 5.9806, "text": "Added all sorts of cool things, including info in the settings page, bullet points to the text edits, changed the preset times and tasks, extra conversation features (failsafes and external functions), and improved the conversation some more (because it was fun)!"}, {"post_id": 41181, "ts": "2026-08-05T07:11:58Z", "hours": 8.2414, "text": "Finished the conversation! (It may change/get improved more later, but for now I’m happy with it!) I made many changes to some terrible phrasing choices I made previously (e.g. “But why won’t you do xyz? It’s super fun!” -> “You don’t have to do it if you don’t want to”), rewriting huge chunks of it and adding other huge chunks. (I hope you appreciate the dialogue, I’ve apparently spent 20 hours by now JUST on that, not even the code behind it) Also changed times to use +...m as well as +...h and included a preset range of times which are more on the short side to incentavise shorter tasks."}, {"post_id": 39244, "ts": "2026-08-02T02:43:56Z", "hours": 1.5244, "text": "Added buttons to insert new lines above/below, saving information to an external file automatically and trimming whitespace off of some things (a small convenience when on mobile)"}, {"post_id": 38611, "ts": "2026-08-01T02:54:26Z", "hours": 7.6272, "text": "Finalised the connection between the task engine and the conversation including adding variety, conversation suggestions knowing about the qualities and reasons, a significantly improved conversation (that’s almost done!!), a lot of conversation backend (including a custom parser for recursive synonym choices) and heaps more!"}, {"post_id": 36925, "ts": "2026-07-29T10:13:07Z", "hours": 6.4594, "text": "Spent pretty much the entire time working on the conversation choices and options (yes it’s that difficult). Also made some improvements to the backend (extra features making it easier/possible to do some things, fixed bugs). Still not done the conversation, will be another long stretch until I finish it but it’s nearly there!"}, {"post_id": 35517, "ts": "2026-07-27T00:18:06Z", "hours": 4.7739, "text": "Worked on the conversation, improving the quality of texts and options, and added some new options and features! Also added some cool mathy functions for determining task urgency/load!"}, {"post_id": 33452, "ts": "2026-07-23T12:45:03Z", "hours": 3.1211, "text": "Added the beginnings to the task importance system and implemented a cool task bottom text including progress, and also included that task progress in the task overlay popup at the bottom!"}, {"post_id": 33268, "ts": "2026-07-23T01:41:19Z", "hours": 1.11, "text": "Implemented a bunch of small improvements and fixes to the calendar popup and date highlight!"}, {"post_id": 32915, "ts": "2026-07-22T11:46:31Z", "hours": 4.1114, "text": "Spent the whole time working on a date selector! Also added text about the due date, e.g. “was due yesterday”, “due next Monday (in 5 days)”, etc."}, {"post_id": 32801, "ts": "2026-07-22T05:52:27Z", "hours": 1.6331, "text": "Implemented many extremely minor things brought up from user feedback, including: adding titles to the category and task list, using e.g. +2.5h instead of #E for counting time, improved the importance selection layout, ordering tasks, improving done task formatting (with tick and strikethrough) and other even more minor things!"}, {"post_id": 32262, "ts": "2026-07-21T10:09:04Z", "hours": 4.2289, "text": "Added a qualities screen to add qualities to tasks by clicking on the buttons and a lot of backend work to make everything run smoother and easier to code!"}, {"post_id": 31592, "ts": "2026-07-20T03:27:25Z", "hours": 3.4722, "text": "Added an importance slider, an info text and some minor things to the task overlay"}, {"post_id": 31054, "ts": "2026-07-19T04:15:30Z", "hours": 3.5669, "text": "Fixed a lot of bugs in the tasks area; including resizing issues, inability to scroll, and wrapping problems."}, {"post_id": 30597, "ts": "2026-07-18T09:33:18Z", "hours": 6.4275, "text": "Added task groups and an add, rename, and delete task group button that do things! Deleting, naming collisions and other problems are also handled with dialogues! Also added a slightly better colour scheme"}, {"post_id": 30005, "ts": "2026-07-17T07:38:26Z", "hours": 3.5383, "text": "Added a basic scene!!"}, {"post_id": 23344, "ts": "2026-07-06T07:27:06Z", "hours": 5.0297, "text": "Dramatically improved the backend for the conversation, adding many new features!"}, {"post_id": 23221, "ts": "2026-07-06T01:25:52Z", "hours": 5.4508, "text": "Added a parser for conversation backend data and an options list and text box to display it in!"}, {"post_id": 20674, "ts": "2026-07-02T10:21:27Z", "hours": 4.2228, "text": "Added a bottom bar to the task input including some utility functions like move up and down, a sample highlight that can get modified with the + and - timer buttons and a scrollbar!"}, {"post_id": 20454, "ts": "2026-07-02T01:36:55Z", "hours": 7.5497, "text": "Added an item input field with a bottom bar with utilities in it!"}, {"post_id": 19643, "ts": "2026-07-01T00:49:45Z", "hours": 4.1286, "text": "Added more to the UI layout, including a settings (with accordian sections) and new tasks (currently empty) page!"}, {"post_id": 19012, "ts": "2026-06-30T05:31:27Z", "hours": 5.6044, "text": "Added the very basic interface! The reason it took so long was because I had zero idea how to compile anything and took way too long figuring that out. But it can compile for desktop or mobile now! (although desktop is only for testing)"}]...
|
Title: Grapefruit by @tsunami014 | Stardance
Devl Title: Grapefruit by @tsunami014 | Stardance
Devlogs:
Added the very basic interface! The reason it took so long was because I had zero idea how to compile anything and took way too long figuring that out. But it can compile for desktop or mobile now! (although desktop is only for testing)
Added more to the UI layout, including a settings (with accordian sections) and new tasks (currently empty) page!
Added an item input field with a bottom bar with utilities in it!
Added a bottom bar to the task input including some utility functions like move up and down, a sample highlight that can get modified with the + and - timer buttons and a scrollbar!
Added a parser for conversation backend data and an options list and text box to display it in!
Dramatically improved the backend for the conversation, adding many new features!
Added a basic scene!!
Added task groups and an add, rename, and delete task group button that do things! Deleting, naming collisions and other problems are also handled with dialogues! Also added a slightly better colour scheme
Fixed a lot of bugs in the tasks area; including resizing issues, inability to scroll, and wrapping problems.
Added an importance slider, an info text and some minor things to the task overlay
Added a qualities screen to add qualities to tasks by clicking on the buttons and a lot of backend work to make everything run smoother and easier to code!
Implemented many extremely minor things brought up from user feedback, including: adding titles to the category and task list, using e.g. +2.5h instead of #E for counting time, improved the importance selection layout, ordering tasks, improving done task formatting (with tick and strikethrough) and other even more minor things!
Spent the whole time working on a date selector! Also added text about the due date, e.g. “was due yesterday”, “due next Monday (in 5 days)”, etc.
Implemented a bunch of small improvements and fixes to the calendar popup and date highlight!
Added the beginnings to the task importance system and implemented a cool task bottom text including progress, and also included that task progress in the task overlay popup at the bottom!
Worked on the conversation, improving the quality of texts and options, and added some new options and features! Also added some cool mathy functions for determining task urgency/load!
Spent pretty much the entire time working on the conversation choices and options (yes it’s that difficult). Also made some improvements to the backend (extra features making it easier/possible to do some things, fixed bugs). Still not done the conversation, will be another long stretch until I finish it but it’s nearly there!
Finalised the connection between the task engine and the conversation including adding variety, conversation suggestions knowing about the qualities and reasons, a significantly improved conversation (that’s almost done!!), a lot of conversation backend (including a custom parser for recursive synonym choices) and heaps more!
Added buttons to insert new lines above/below, saving information to an external file automatically and trimming whitespace off of some things (a small convenience when on mobile)
Finished the conversation! (It may change/get improved more later, but for now I’m happy with it!) I made many changes to some terrible phrasing choices I made previously (e.g. “But why won’t you do xyz? It’s super fun!” -> “You don’t have to do it if you don’t want to”), rewriting huge chunks of it and adding other huge chunks. (I hope you appreciate the dialogue, I’ve apparently spent 20 hours by now JUST on that, not even the code behind it) Also changed times to use +...m as well as +...h and included a preset range of times which are more on the short side to incentavise shorter tasks.
Added all sorts of cool things, including info in the settings page, bullet points to the text edits, changed the preset times and tasks, extra conversation features (failsafes and external functions), and improved the conversation some more (because it was fun)!
Did various small improvements, including: Many many bugfixes, rearranging the task and settings display to have buttons on the bottom (from user feedback), a help screen, a ‘move task to another category’ button and dialogue (which I cannot believe I forgot about until now) and added another purpose in the conversation for the user designated reason (so it actually gets shown sometimes)!
Improved the “X weeks away” text (which was just wrong before) and added a today toggle and category button!
I thought I was done but turns out I forgot to add scrolling to the tasks list, so it would cause large issues if there were many tasks (or if the screen height was very low, as it does get on mobile when the keyboard is up)
Added an app icon and FINALLY got around to actually drawing the Grapefruit character! Also improved some parts of the conversation a bit more, improved the default tasks, improved the date importance calculations a smidge and fixed many tiny issues. It should now be DONE!
Improved some UI layouts, clarified a sentence or two in the conversation, reordered the tasks page, made selecting the title in the task overlay hide the buttons (to make it easier to see), fixed some visual bugs (maybe?), improved some icons, changed ‘today’ to ‘starred’ (and made it not clear at the end of the day; I wanted to plan for the future) and last but not least I made the grey background for some of the overlays reach past the navigation AT LAST! So now the title bar doesn’t look off when the overlays are open!
Added dynamic colours! Don’t worry that it looks kinda bad right now, I had to learn UI design from scratch for this, and I will improve it soon. Made all the colours (well, most of them for now) generate based on a base colour and added a light and dark theme! I also made the Android navigation icons and the svgs change between light and dark properly. I spent quite some time trying to implement HSLuv or HCT in the hopes it would improve the colours but ended up scrapping that due to many reasons, including too much extra stuff, wasn’t making much (or any) difference, and my HCT implementation was just so broken and I wasn’t bothered to try and fix it. Also some parts are now extra broken, I’ll fix them soon too don’t worry! I had to devlog this in case I went over 10h by accident, hopefully will be resolved before the next one
Tweaked the colours lots and I’m now quite happy with how it’s at! Added auto generating colours for everything I didn’t before (the calendar, settings, importance and some buttons in overlays) Saved the dark/light theme to a settings file And fixed a bug with the confirm and move overlays being a strange fixed width!
I did a bunch of work on the settings and added a “theme”! (Different variations of the base colour - which is now changeable in the settings!) I also used HSLuv instead of just HSL (which I tried before and thought it didn’t do much but now I realise it did help make everything nicer). I also added an effect so when you press on buttons it decreases the border radius a bit! And lastly I thought I’d fix some issues super quick due to the increased layout diversity from the settings but ended up spending much longer on them than expected, those being the jumpyness of the settings dropdowns (so I removed the animations and fixed it up a bit more and also fixed the flowlayout because it turns out everything is broken), fixed scrollbars inside other scrollbars, and probably more I forgot.
I improved how tasks are made, making the task overlay centred instead of to the side, changed “reasoning” into “goals” which is easier to understand and still useful, reduced the number of qualities and added some new ones similar to the old reasoning (e.g. ‘obligation’ & ‘reward’), came up with MUCH better sample tasks and fixed a small issue with the bottom bar!
Ships:
I finally decided I had done enough and it was really good! This app contains the conversation, a scene with Grapefruit in it, a basic settings page with not much in it, a tasks manager with categories (including a today category) and tasks with importance, reasoning, qualities, items! Also has a great bottom bar for easier text editing and has everything layed out in a mobile-friendly manner! Installation instructions are in the README
FIXED THE UI with dynamic colours and themes! Fixed some layouts Improved how tasks are made (including a not overwhelming amount of qualities and changed the ambiguous “reasoning” into a much less so “goals” As well as many minor also cool things! (See the devlogs after ship 1 for the full account)...
|
1792997630.288298
|
1793084030.288298
|
|
26647
|
Middle Earth Os by @Andrea | Stardance
|
Andrea
|
2
|
13.0
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T18:36:09Z", "hours": 1.0, "multiplier": 8.69, "payout": 12, "blessing": "neutral", "text": "As a big fan of The Lord of the Rings, I couldn’t resist expanding my very own space to it! Even though I don’t know much about HTML (okay, practically nothing at all 😅), I decided it would be a really fun project to keep building and adding new features. Well, it’s still a growing system, but it now comes with an awesome set of features: 🕒 - Time display 📅 - Day of the week (both in letters and numbers) 🔢 - Date in numbers 🏠 - Welcome screen 📝 - Notepad 👁️ - Eye of Sauron (which has a secret function - this was my favorite part!) And now… the new apps have arrived! Frodo, Gandalf, and Gollum are officially here: 🚶♂️ - Frodo’s Quest: A walking tracking feature where you can walk and complete the exact same distance that Frodo traveled on his journey. 🖼️ - Gandalf’s Gallery: A magical gallery to explore artwork and lore. 💍 - Gollum’s Hoard: A dedicated space to add and manage all your most precious items (“my preciousss…”). It’s getting bigger and more immersive step by step, and I’d love to keep improving it in the future. Thanks for checking it out!", "repo": "https://github.com/Tei-Pancake/Middle-Earth-Os", "demo": "https://tei-pancake.github.io/Middle-Earth-Os/"}, {"ship_num": 2, "ts": "2026-07-17T15:07:23Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "As a big fan of The Lord of the Rings, I couldn’t resist dedicating my very own space to it! Even though I don’t know much about HTML (okay, practically nothing at all 😅), I decided it would be a really fun project to build. Well, it’s a pretty basic system, but it comes with the following features: 🕒 - Time display 📅 - Day of the week (both in letters and numbers) 🔢 - Date in numbers 🏠 - Welcome screen 📝 - Notepad 👁️ - Eye of Sauron (which has a secret function - this was my favorite part!) It’s not a huge project, but I’d love to keep improving it in the future. Thanks for checking it out!", "repo": "https://github.com/Tei-Pancake/Middle-Earth-Os", "demo": "https://tei-pancake.github.io/Middle-Earth-Os/"}]...
|
[{"post_id": 35942, "ts": "202 [{"post_id": 35942, "ts": "2026-07-27T18:31:43Z", "hours": 1.3808, "text": "I added 3 new apps, but for some reason the extension for tracking the time wasn’t functioning, I dunno what happen, buut FRODO, GALDALF and GOLLUM ARE HERE NOW!! Frodo: Now if you go to walk, you can do the same distance as frodo did. Gandalf: A gallery Gollum: treasurees"}, {"post_id": 30158, "ts": "2026-07-17T14:44:31Z", "hours": 0.2917, "text": "I almost forgot the demo link, and also I added a secret feature, can you find it?"}, {"post_id": 30149, "ts": "2026-07-17T14:17:17Z", "hours": 6.2894, "text": "I added a new distribution, which looks better for start the journey to fight against Sauron, will be able to win this battle?"}, {"post_id": 29219, "ts": "2026-07-15T23:47:10Z", "hours": 5.5442, "text": "Hello dear hobbits of distant Middle-earth, and of the welcoming village of Hobbiton, here is your operating system running from the web. Let’s see if the all-seeing Eye of Sauron can notice what we’re planning."}]...
|
Title: Middle Earth Os by @Andrea | Stardance
Dev Title: Middle Earth Os by @Andrea | Stardance
Devlogs:
Hello dear hobbits of distant Middle-earth, and of the welcoming village of Hobbiton, here is your operating system running from the web. Let’s see if the all-seeing Eye of Sauron can notice what we’re planning.
I added a new distribution, which looks better for start the journey to fight against Sauron, will be able to win this battle?
I almost forgot the demo link, and also I added a secret feature, can you find it?
I added 3 new apps, but for some reason the extension for tracking the time wasn’t functioning, I dunno what happen, buut FRODO, GALDALF and GOLLUM ARE HERE NOW!! Frodo: Now if you go to walk, you can do the same distance as frodo did. Gandalf: A gallery Gollum: treasurees
Ships:
As a big fan of The Lord of the Rings, I couldn’t resist dedicating my very own space to it! Even though I don’t know much about HTML (okay, practically nothing at all 😅), I decided it would be a really fun project to build. Well, it’s a pretty basic system, but it comes with the following features: 🕒 - Time display 📅 - Day of the week (both in letters and numbers) 🔢 - Date in numbers 🏠 - Welcome screen 📝 - Notepad 👁️ - Eye of Sauron (which has a secret function - this was my favorite part!) It’s not a huge project, but I’d love to keep improving it in the future. Thanks for checking it out!
As a big fan of The Lord of the Rings, I couldn’t resist expanding my very own space to it! Even though I don’t know much about HTML (okay, practically nothing at all 😅), I decided it would be a really fun project to keep building and adding new features. Well, it’s still a growing system, but it now comes with an awesome set of features: 🕒 - Time display 📅 - Day of the week (both in letters and numbers) 🔢 - Date in numbers 🏠 - Welcome screen 📝 - Notepad 👁️ - Eye of Sauron (which has a secret function - this was my favorite part!) And now… the new apps have arrived! Frodo, Gandalf, and Gollum are officially here: 🚶♂️ - Frodo’s Quest: A walking tracking feature where you can walk and complete the exact same distance that Frodo traveled on his journey. 🖼️ - Gandalf’s Gallery: A magical gallery to explore artwork and lore. 💍 - Gollum’s Hoard: A dedicated space to add and manage all your most precious items (“my preciousss…”). It’s getting bigger and more immersive step by step, and I’d love to keep improving it in the future. Thanks for checking it out!...
|
1793112746.4371984
|
1793199146.4371984
|
|
26692
|
My very own WebOS by @Nanos | Stardance
|
Nanos
|
2
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T14:15:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My very own webos", "repo": "https://github.com/na1os/webos", "demo": "https://demo.nanos.ro/webos/"}, {"ship_num": 2, "ts": "2026-06-28T00:18:21Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My very own webos", "repo": "https://github.com/na1os/webos", "demo": "https://demo.nanos.ro/webos/"}]...
|
[{"post_id": 24714, "ts": "202 [{"post_id": 24714, "ts": "2026-07-08T14:14:46Z", "hours": 0.0, "text": "Finally reached a point where I’m happy with the first version of the project. I’ve been polishing the UI, fixing bugs, improving performance, and making the whole desktop experience feel much more complete."}, {"post_id": 24698, "ts": "2026-07-08T13:50:15Z", "hours": 0.0, "text": "Desktop Is Coming Together Made a lot of progress on the desktop environment. Most of my time went into polishing the UI and improving the overall experience. I also refactored parts of the project so adding new features later will be much easier. Progress: Improved desktop layout. Better window management. Smoother animations. More responsive interface."}, {"post_id": 17278, "ts": "2026-06-28T00:16:00Z", "hours": 0.0, "text": "My very first webos"}]...
|
Title: My very own WebOS by @Nanos | Stardance
De Title: My very own WebOS by @Nanos | Stardance
Devlogs:
My very first webos
Desktop Is Coming Together Made a lot of progress on the desktop environment. Most of my time went into polishing the UI and improving the overall experience. I also refactored parts of the project so adding new features later will be much easier. Progress: Improved desktop layout. Better window management. Smoother animations. More responsive interface.
Finally reached a point where I’m happy with the first version of the project. I’ve been polishing the UI, fixing bugs, improving performance, and making the whole desktop experience feel much more complete.
Ships:
My very own webos
My very own webos...
|
1792878866.740645
|
1793742866.740645
|
|
26706
|
My very own WebOS by @Astra4 | Stardance
|
Astra4
|
2
|
3.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T02:02:31Z", "hours": 1.0, "multiplier": 15.91, "payout": 22, "blessing": "neutral", "text": "creating my own OS ^-^ built using html, css, and javascript. most challenging part was figuring out the Javascript - my past coding experience was mostly HTML/CSS/Python. proud that i mulled it over, and that it’s comparatively more aesthetic than my old websites that were super blocky. hackatime thought it would be funny to tell me to install and uninstall wakatime - i’m missing probably 6 or 7 hours hours of work that should’ve been logged -_-. you can find the actual devlogs saved as separate files on the github features: any additions you add will save even if you reload or exit the page - it’s stored locally though so others won’t be able to see it cute little loading bar welcome page - simple introduction that pops up when you click “MingOS” on top left corner, first taskbar app, or upon loading diary (star log) - a space for personal journal entries - you can add your own! doodles - a gallery for drawings and artwork - you can add your own! mixtape - a music playlist section, for now i have placeholder audio but i’ll add my own later, maybe even the music that i’m working on right now hehe sketch - draw directly in browser guestbook - leave messages and notes - i don’t have a database so unfortunately all the data will stay local Sunny - a virtual pet and interactive companion to care for while exploring the site - maybe i’ll add an adjustment for need levels later", "repo": "https://github.com/astra-4/mingos", "demo": "https://astra-4.github.io/mingos/"}, {"ship_num": 2, "ts": "2026-06-30T09:00:35Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "creating my own OS ^-^ built using html, css, and javascript. most challenging part was figuring out the Javascript - my past coding experience was mostly HTML/CSS/Python. proud that i mulled it over, and that it’s comparatively more aesthetic than my old websites that were super blocky. also hackaclub had severe issues so i had to re-install - i’m missing probably 6 or 7 hours hours of work that should’ve been logged -_- features: any additions you add will save even if you reload or exit the page - it’s stored locally though so others won’t be able to see it cute little loading bar welcome page - simple introduction that pops up when you click “MingOS” on top left corner, first taskbar app, or upon loading diary (star log) - a space for personal journal entries - you can add your own! doodles - a gallery for drawings and artwork - you can add your own! mixtape - a music playlist section, for now i have placeholder audio but i’ll add my own later, maybe even the music that i’m working on right now hehe sketch - draw directly in browser guestbook - leave messages and notes - i don’t have a database so unfortunately all the data will stay local Sunny - a virtual pet and interactive companion to care for while exploring the site - maybe i’ll add an adjustment for need levels later", "repo": "https://github.com/astra-4/mingos", "demo": "https://astra-4.github.io/mingos/"}]...
|
[{"post_id": 22541, "ts": "202 [{"post_id": 22541, "ts": "2026-07-05T02:00:17Z", "hours": 1.3522, "text": "overhauled css. apparently i messed up git branches so i had to revert to an earlier version -_- now it starts off in dark mode and also changed the color scheme to fit the night sky/star theme more"}, {"post_id": 19082, "ts": "2026-06-30T08:49:25Z", "hours": 0.9947, "text": "finally finished! app icons are draggable, and any user inputs (star log, mixtape, window location, etc.) should be saved. the logged time is inaccurate and i had to fully restart the installation -_- for it to even track properly. try it out here: https://astra-4.github.io/mingos/"}, {"post_id": 18782, "ts": "2026-06-29T23:59:13Z", "hours": 0.2833, "text": "skipped 4 or 5 actual devlogs - you can find them on the github page. around this mark i actually spent around 6 hours. star log is like a mini diary, doodles is like a mini sketch book, mixtape is just like the diary but a songs list. later i’m going to have entries that visitors can add themselves, a sketchpad app, and audio to mixtape."}, {"post_id": 18764, "ts": "2026-06-29T23:23:45Z", "hours": 0.3806, "text": "started part 1 - the main page. also heads up that hackatime wasn’t working for me so the logged time is inaccurate. the time and date wasn’t coded to be updated in real time yet so i put in a six seven joke. har har."}]...
|
Title: My very own WebOS by @Astra4 | Stardance
D Title: My very own WebOS by @Astra4 | Stardance
Devlogs:
started part 1 - the main page. also heads up that hackatime wasn’t working for me so the logged time is inaccurate. the time and date wasn’t coded to be updated in real time yet so i put in a six seven joke. har har.
skipped 4 or 5 actual devlogs - you can find them on the github page. around this mark i actually spent around 6 hours. star log is like a mini diary, doodles is like a mini sketch book, mixtape is just like the diary but a songs list. later i’m going to have entries that visitors can add themselves, a sketchpad app, and audio to mixtape.
finally finished! app icons are draggable, and any user inputs (star log, mixtape, window location, etc.) should be saved. the logged time is inaccurate and i had to fully restart the installation -_- for it to even track properly. try it out here: https://astra-4.github.io/mingos/
overhauled css. apparently i messed up git branches so i had to revert to an earlier version -_- now it starts off in dark mode and also changed the color scheme to fit the night sky/star theme more
Ships:
creating my own OS ^-^ built using html, css, and javascript. most challenging part was figuring out the Javascript - my past coding experience was mostly HTML/CSS/Python. proud that i mulled it over, and that it’s comparatively more aesthetic than my old websites that were super blocky. also hackaclub had severe issues so i had to re-install - i’m missing probably 6 or 7 hours hours of work that should’ve been logged -_- features: any additions you add will save even if you reload or exit the page - it’s stored locally though so others won’t be able to see it cute little loading bar welcome page - simple introduction that pops up when you click “MingOS” on top left corner, first taskbar app, or upon loading diary (star log) - a space for personal journal entries - you can add your own! doodles - a gallery for drawings and artwork - you can add your own! mixtape - a music playlist section, for now i have placeholder audio but i’ll add my own later, maybe even the music that i’m working on right now hehe sketch - draw directly in browser guestbook - leave messages and notes - i don’t have a database so unfortunately all the data will stay local Sunny - a virtual pet and interactive companion to care for while exploring the site - maybe i’ll add an adjustment for need levels later
creating my own OS ^-^ built using html, css, and javascript. most challenging part was figuring out the Javascript - my past coding experience was mostly HTML/CSS/Python. proud that i mulled it over, and that it’s comparatively more aesthetic than my old websites that were super blocky. hackatime thought it would be funny to tell me to install and uninstall wakatime - i’m missing probably 6 or 7 hours hours of work that should’ve been logged -_-. you can find the actual devlogs saved as separate files on the github features: any additions you add will save even if you reload or exit the page - it’s stored locally though so others won’t be able to see it cute little loading bar welcome page - simple introduction that pops up when you click “MingOS” on top left corner, first taskbar app, or upon loading diary (star log) - a space for personal journal entries - you can add your own! doodles - a gallery for drawings and artwork - you can add your own! mixtape - a music playlist section, for now i have placeholder audio but i’ll add my own later, maybe even the music that i’m working on right now hehe sketch - draw directly in browser guestbook - leave messages and notes - i don’t have a database so unfortunately all the data will stay local Sunny - a virtual pet and interactive companion to care for while exploring the site - maybe i’ll add an adjustment for need levels later...
|
1793105306.0650115
|
1793191706.0650115
|