|
65850
|
blockers by @evmaagca | Stardance
|
evmaagca
|
1
|
100.52
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T23:18:09Z", "hours": 100.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "blockers is a top-down game made with Godot and GDScript where players control a knight exploring dark environments, fighting enemies with a spear, and using a flashlight to survive. I’m especially proud of creating 15 levels, developing the combat and flashlight systems, designing the enemies, and implementing the UI, save system, and achievements. This project has helped me improve my godot coding skills, and I hope to use what I’ve learned to create more games in the future! Thank you in advance to all the reviewers! features 15 levels that get harder title screen with buttons for extras, levels, achievements, and settings a spear for fighting enemies flashlight system that drains energy while exploring dark areas health and flashlight energy systems power switches that must be activated to progress through certain levels vending machines that restore flashlight energy heart pickups that restore health regular and electric drone enemies with different challenges knockback and enemy death animations achievement system that tracks player accomplishments level progression and save system", "repo": "https://github.com/evacoffee/blockers", "demo": "https://evmaagca.itch.io/blockers"}]...
|
[{"post_id": 83097, "ts": "202 [{"post_id": 83097, "ts": "2026-10-26T21:29:03Z", "hours": 0.5208, "text": "hi so for all those who are going to review this my level select is not working right now so I would appreciate it if those who are looking at this just ignore that feature for right now, I am working on it and hopefully it will be done soon! so sorry 😔🙏"}, {"post_id": 82827, "ts": "2026-10-25T23:15:32Z", "hours": 7.0211, "text": "devlog #18 (last one! ) : made a last ditched attempt to fix the levelselect! (again spent an embarrassing amount of time doing this) (didnt work ), made some last additions to the scripts like lights flashing etc"}, {"post_id": 82501, "ts": "2026-10-25T01:16:22Z", "hours": 5.6831, "text": "devlog #17 : added another level, fixed a powerswitch issue/bug 🐛 , added more notes!, made he trashcan animation way smother with tweens, added the final level! (wont show the final levels to not spoil)"}, {"post_id": 82141, "ts": "2026-10-24T02:42:27Z", "hours": 9.3342, "text": "devlog #16 : made when you press achievement popup it pauses game , another 2 levels!! (trying to maybe get to around 20? im running out of ideas tho ), worked on levelselect for way more trying to fix the thing for mobile (still hasn’t worked )"}, {"post_id": 81675, "ts": "2026-10-22T00:47:22Z", "hours": 9.0367, "text": "devlog #15 : made 4 new levels!! (took forever ), fixed shader script because it always made the duplicated drones not show up , fixed the titlescreen script so it has better ui 🎨 , and fixed a bug in the titlescreen load"}, {"post_id": 81132, "ts": "2026-10-20T00:45:18Z", "hours": 9.955, "text": "devlog #14 : added sparks when spear hits drone, fixed bugs in achivement manager, added dissolve shader (had to search for a tutorial for this ) for both drones (made it kinda break apart piece by piece), fixed multiple scripts (like all of them took around 4 ish hours) as the code was bothering me"}, {"post_id": 80277, "ts": "2026-10-17T02:38:47Z", "hours": 9.5736, "text": "devlog #13 : added achievements ⭐ !!, added achievements into the title screen, changed level button to extra button then put that into there, changed the heart charge ❤️ , added/changed the regdrone and elecdrone scripts to flicker and disappear when dying also created a video for this!!"}, {"post_id": 79418, "ts": "2026-10-13T21:46:58Z", "hours": 6.2628, "text": "devlog #12 : added dust when moving with player flashlight, hearts drop sometimes when enemy dies, fixed issue when player died (took like 2 hours ), fixed bug with mobile ver"}, {"post_id": 78869, "ts": "2026-10-11T20:18:22Z", "hours": 8.56, "text": "devlog #11 : added a fade for the hearts, tried again to fix the levellist , added a glow around the vending machine so that if your light turns off you can find a vending machine , added small dust particles, added another level"}, {"post_id": 78216, "ts": "2026-10-10T00:25:52Z", "hours": 8.6956, "text": "devlog #10 : made 2 new levels, redid some of the notes and added more, and tried to fix a bug I think I genuinely spent like 7 hours straight just trying to debug this one issue with my script that was making the levellist not showing up on mobile (ps it didnt even work )"}, {"post_id": 77448, "ts": "2026-10-07T01:32:20Z", "hours": 3.3167, "text": "devlog #9: made uh the levelselect (which took forever btw genuinely worst experience of my entire existence of life), level 5 made, levelselect bg with canva 🐐 , also side note not with the actual time of godot but I figured out how to view my projects on my phone!!"}, {"post_id": 77182, "ts": "2026-10-05T23:32:14Z", "hours": 2.8656, "text": "devlog #8 : fixed the switches script, added esc button/esc box, made level 3+4!"}, {"post_id": 76894, "ts": "2026-10-04T23:45:23Z", "hours": 4.1417, "text": "devlog #7 : added mobile!!! + used canva 🐐 for this!, changed title music, added transition between titlescreen and actual game"}, {"post_id": 76003, "ts": "2026-10-02T00:41:57Z", "hours": 3.655, "text": "devlog #6 : added a trashcan = heart pickups, made level 2, added extra noises (+ redid some of the volume of them), made the start of the titlescreen + the buttons for it, redid some bugs ( bro took me like 40 minutes of one and I genually feel like death after )"}, {"post_id": 75030, "ts": "2026-09-28T22:22:37Z", "hours": 1.115, "text": "devlog #5 : made the continuation of the level one, updated music, added another blocker (the drones)!"}, {"post_id": 74623, "ts": "2026-09-27T19:51:56Z", "hours": 5.64, "text": "devlog #4 : added the flashlight on and off function, made the vending machines refill the light, made the light bar, made all health, made the potholes + the destinations (still debugging), added better music/different sounds"}, {"post_id": 74033, "ts": "2026-09-26T15:50:20Z", "hours": 5.1569, "text": "devlog #1-3 : added collision tiles, player movement, bg music, decorations, and the start of enemies (so sorry in advance for the bad devlogs)"}]...
|
Title: blockers by @evmaagca | Stardance
Devlogs: Title: blockers by @evmaagca | Stardance
Devlogs:
devlog #1-3 : added collision tiles, player movement, bg music, decorations, and the start of enemies (so sorry in advance for the bad devlogs)
devlog #4 : added the flashlight on and off function, made the vending machines refill the light, made the light bar, made all health, made the potholes + the destinations (still debugging), added better music/different sounds
devlog #5 : made the continuation of the level one, updated music, added another blocker (the drones)!
devlog #6 : added a trashcan = heart pickups, made level 2, added extra noises (+ redid some of the volume of them), made the start of the titlescreen + the buttons for it, redid some bugs ( bro took me like 40 minutes of one and I genually feel like death after )
devlog #7 : added mobile!!! + used canva 🐐 for this!, changed title music, added transition between titlescreen and actual game
devlog #8 : fixed the switches script, added esc button/esc box, made level 3+4!
devlog #9: made uh the levelselect (which took forever btw genuinely worst experience of my entire existence of life), level 5 made, levelselect bg with canva 🐐 , also side note not with the actual time of godot but I figured out how to view my projects on my phone!!
devlog #10 : made 2 new levels, redid some of the notes and added more, and tried to fix a bug I think I genuinely spent like 7 hours straight just trying to debug this one issue with my script that was making the levellist not showing up on mobile (ps it didnt even work )
devlog #11 : added a fade for the hearts, tried again to fix the levellist , added a glow around the vending machine so that if your light turns off you can find a vending machine , added small dust particles, added another level
devlog #12 : added dust when moving with player flashlight, hearts drop sometimes when enemy dies, fixed issue when player died (took like 2 hours ), fixed bug with mobile ver
devlog #13 : added achievements ⭐ !!, added achievements into the title screen, changed level button to extra button then put that into there, changed the heart charge ❤️ , added/changed the regdrone and elecdrone scripts to flicker and disappear when dying also created a video for this!!
devlog #14 : added sparks when spear hits drone, fixed bugs in achivement manager, added dissolve shader (had to search for a tutorial for this ) for both drones (made it kinda break apart piece by piece), fixed multiple scripts (like all of them took around 4 ish hours) as the code was bothering me
devlog #15 : made 4 new levels!! (took forever ), fixed shader script because it always made the duplicated drones not show up , fixed the titlescreen script so it has better ui 🎨 , and fixed a bug in the titlescreen load
devlog #16 : made when you press achievement popup it pauses game , another 2 levels!! (trying to maybe get to around 20? im running out of ideas tho ), worked on levelselect for way more trying to fix the thing for mobile (still hasn’t worked )
devlog #17 : added another level, fixed a powerswitch issue/bug 🐛 , added more notes!, made he trashcan animation way smother with tweens, added the final level! (wont show the final levels to not spoil)
devlog #18 (last one! ) : made a last ditched attempt to fix the levelselect! (again spent an embarrassing amount of time doing this) (didnt work ), made some last additions to the scripts like lights flashing etc
hi so for all those who are going to review this my level select is not working right now so I would appreciate it if those who are looking at this just ignore that feature for right now, I am working on it and hopefully it will be done soon! so sorry 😔🙏
Ships:
blockers is a top-down game made with Godot and GDScript where players control a knight exploring dark environments, fighting enemies with a spear, and using a flashlight to survive. I’m especially proud of creating 15 levels, developing the combat and flashlight systems, designing the enemies, and implementing the UI, save system, and achievements. This project has helped me improve my godot coding skills, and I hope to use what I’ve learned to create more games in the future! Thank you in advance to all the reviewers! features 15 levels that get harder title screen with buttons for extras, levels, achievements, and settings a spear for fighting enemies flashlight system that drains energy while exploring dark areas health and flashlight energy systems power switches that must be activated to progress through certain levels vending machines that restore flashlight energy heart pickups that restore health regular and electric drone enemies with different challenges knockback and enemy death animations achievement system that tracks player accomplishments level progression and save system...
|
1793091193.4322348
|
1793177593.4322348
|
|
17117
|
Grad Picture Getter For Picking The Right Picture Grad Picture Getter For Picking The Right Picture by @ryanthhua | Stardance...
|
ryanthhua
|
1
|
8.0
|
67
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T20:41:41Z", "hours": 8.0, "multiplier": 8.58, "payout": 67, "blessing": "neutral", "text": "Recently just had graduation, and found out that flash photography provides a zoomed in hd picture of the grad picture, which you can select each spot to zoom into. I did some research and found a github project which used the idea to stitch together the pictures, but when I ran it it did not work. So now I decided I will make my own program to stitch the zoomed in pictures together to make one big preview image of the graduation picture so that you can correctly decide what to get. I started with planning how it would work, such as the double for loop to get the x and y coordinate, which flash photography uses to grab the right zoomed picture via url, and then the idea to download each picture and then use some java method to put them onto a larger image. What I found difficult was not using new methods I had never seen, but rather understanding how the url worked and how even though you go down one pixel on the y axis it for some reason visually shifts the x axis to the right. So I could not take thousands of pictures and then place them together as they would not align correctly; instead I had to use larger pictures and divided up the picture by 4 x 4. After the first success with getting the picture stitched together I wanted to try and remove the zoom in box by cropping it out. So I used subimage method and did some measurements to see where I need to crop. Then I realized that the lines remove image data creating visual issues, and I need to find a way to restore it, so I implemented gaps to be introduced and after finding the correct tweaks for one picture, I tried it on a different one and then those didn’t work for that one, so I implemented user settings so that the user can adjust and try to make it work for their picture. I had ditched having the zoomed in box, but then I realized that trying to restore the data lost by removing the zoom in box may not work at all, so I put an option so that you can have one with the zoom in box, but have no visual issues. I think by limiting myself to no AI and only use forums like stack overflow, I was able to be more of an experimentor, with most of my time tweaking small things to see if they made a difference, and by doing these I think I gained more experience and understanding with the new methods I learned. Then I learned how to export ot jar in vscode and then use launch4j’s config to set it to cli,jre bundle path, and in the end create a exe.", "repo": "https://github.com/RyanTheHua/GraduationPictureGetter/tree/main", "demo": "https://github.com/RyanTheHua/GraduationPictureGetter/releases/tag/Graduation"}]...
|
[{"post_id": 8308, "ts": "2026 [{"post_id": 8308, "ts": "2026-06-13T20:24:43Z", "hours": 2.9153, "text": "Readme.md"}, {"post_id": 7883, "ts": "2026-06-13T04:51:42Z", "hours": 3.1411, "text": "I think finally done. Here are some screenshots of stages of development and the many different tweaks. In the beginning I started with just getting the whole image (the one with squares in the middle, but there were also some lines remaining and visual issues. Then I moved on to make the amount squares used to be 4 x 4 that way more quality could be saved and that looked a lot better. After that I started to utilize cropping to remove those squares and ran through some issues with measurement so I used a pixel ruler to get accurate cropping. After a lot of tweaking such by filling in the gap left from cropping the white square, and how many imagese to stitch together in one, I finally was able to get a good product out of the program and while it does look good there are dark lines where the stitches are, but I think that is good as this was not a program to generate full quality pictures from a photo company, but to generate a good full preview image."}, {"post_id": 7757, "ts": "2026-06-12T23:06:45Z", "hours": 1.7392, "text": "Some sites such as flash photography give you a small zoomed in hd image for you to preview, I want to stitich together all those images into one full image, so you can better view the image. If you like those pictures you have to buy from photographer’s website. If you use this project to get picture you are agreed you will delete those result later. My idea was I can download the images and then stitch them together using java’s imageIO and graphics. If you decide to keep any images as a result of this program is purely between you and that photographer company. And you agree do not use this program to mass-produce image for other people!"}]...
|
Title: Grad Picture Getter For Picking The Right P Title: Grad Picture Getter For Picking The Right Picture by @ryanthhua | Stardance
Devlogs:
Some sites such as flash photography give you a small zoomed in hd image for you to preview, I want to stitich together all those images into one full image, so you can better view the image. If you like those pictures you have to buy from photographer’s website. If you use this project to get picture you are agreed you will delete those result later. My idea was I can download the images and then stitch them together using java’s imageIO and graphics. If you decide to keep any images as a result of this program is purely between you and that photographer company. And you agree do not use this program to mass-produce image for other people!
I think finally done. Here are some screenshots of stages of development and the many different tweaks. In the beginning I started with just getting the whole image (the one with squares in the middle, but there were also some lines remaining and visual issues. Then I moved on to make the amount squares used to be 4 x 4 that way more quality could be saved and that looked a lot better. After that I started to utilize cropping to remove those squares and ran through some issues with measurement so I used a pixel ruler to get accurate cropping. After a lot of tweaking such by filling in the gap left from cropping the white square, and how many imagese to stitch together in one, I finally was able to get a good product out of the program and while it does look good there are dark lines where the stitches are, but I think that is good as this was not a program to generate full quality pictures from a photo company, but to generate a good full preview image.
Readme.md
Ships:
Recently just had graduation, and found out that flash photography provides a zoomed in hd picture of the grad picture, which you can select each spot to zoom into. I did some research and found a github project which used the idea to stitch together the pictures, but when I ran it it did not work. So now I decided I will make my own program to stitch the zoomed in pictures together to make one big preview image of the graduation picture so that you can correctly decide what to get. I started with planning how it would work, such as the double for loop to get the x and y coordinate, which flash photography uses to grab the right zoomed picture via url, and then the idea to download each picture and then use some java method to put them onto a larger image. What I found difficult was not using new methods I had never seen, but rather understanding how the url worked and how even though you go down one pixel on the y axis it for some reason visually shifts the x axis to the right. So I could not take thousands of pictures and then place them together as they would not align correctly; instead I had to use larger pictures and divided up the picture by 4 x 4. After the first success with getting the picture stitched together I wanted to try and remove the zoom in box by cropping it out. So I used subimage method and did some measurements to see where I need to crop. Then I realized that the lines remove image data creating visual issues, and I need to find a way to restore it, so I implemented gaps to be introduced and after finding the correct tweaks for one picture, I tried it on a different one and then those didn’t work for that one, so I implemented user settings so that the user can adjust and try to make it work for their picture. I had ditched having the zoomed in box, but then I realized that trying to restore the data lost by removing the zoom in box may not work at all, so I put an option so that you can have one with the zoom in box, but have no visual issues. I think by limiting myself to no AI and only use forums like stack overflow, I was able to be more of an experimentor, with most of my time tweaking small things to see if they made a difference, and by doing these I think I gained more experience and understanding with the new methods I learned. Then I learned how to export ot jar in vscode and then use launch4j’s config to set it to cli,jre bundle path, and in the end create a exe....
|
1793069316.2641158
|
1793155716.2641158
|
|
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
|
|
62645
|
BLARE by @VickB | Stardance
|
VickB
|
0
|
9.27
|
0
|
[]
|
[{"post_id": 83075, "ts": "202 [{"post_id": 83075, "ts": "2026-10-26T20:05:02Z", "hours": 0.4667, "text": "OMG!! finally almost ready multiple code attempts sanding fitting will need to buy shorter bolts for top and adjust the 3d model for the right fit but yes almost ready soon !!!!"}, {"post_id": 81839, "ts": "2026-10-22T17:59:41Z", "hours": 1.4667, "text": "Another Day another fail cant really seem to make the display work i used an external wire to check with esp pins the screen backlight is litting on some different pins but not on its backlight pin like maybe i’ll get a solution. EDIT: OMG!!!!! im so happy the screen is working i was doing after session repairs as usual fixed the code and its working took so long"}, {"post_id": 81648, "ts": "2026-10-21T21:32:53Z", "hours": 1.2, "text": "Soldered all the components onto the pcb also made a custom solder third hand at home although i uploaded code multiple times different versions took almost 4 hours didnt want to record it the screen still doesnt show anything im suspecting its a backlight issue when i put flashlight on it some words are visible will try to find a way around it i hope its not faulty"}, {"post_id": 72861, "ts": "2026-09-23T21:37:13Z", "hours": 1.5339, "text": "Fixed some errors listed in funding return fixed pcb design for led slot and design for supports of pcb."}, {"post_id": 70931, "ts": "2026-09-20T02:05:45Z", "hours": 0.2503, "text": "Fixing github repo wrong pcb file uploaded Ik it is similar to guide but this is my first project i am learning and i think i did pretty good next project hackpad will be better fs"}, {"post_id": 69383, "ts": "2026-09-16T23:03:55Z", "hours": 2.71, "text": "What a day!! Just finished the project learned a lot of new things took so long to 3d model the body and the write the code but finally done forgot to record 90 minutes of 3d modeling but we learn from our mistakes and just continued done all the prep and designing in 2 days very proud of myself changed the pcb design to my own and made a pretty cool body for the clock excited to get funded. Even though the screen is not centered it took alot of time."}, {"post_id": 69144, "ts": "2026-09-16T13:55:38Z", "hours": 1.6394, "text": "Finally done with the pcb had some problems loading 3d models and libraries first time and i think i did it right"}]...
|
Title: BLARE by @VickB | Stardance
Devlogs:
Final Title: BLARE by @VickB | Stardance
Devlogs:
Finally done with the pcb had some problems loading 3d models and libraries first time and i think i did it right
What a day!! Just finished the project learned a lot of new things took so long to 3d model the body and the write the code but finally done forgot to record 90 minutes of 3d modeling but we learn from our mistakes and just continued done all the prep and designing in 2 days very proud of myself changed the pcb design to my own and made a pretty cool body for the clock excited to get funded. Even though the screen is not centered it took alot of time.
Fixing github repo wrong pcb file uploaded Ik it is similar to guide but this is my first project i am learning and i think i did pretty good next project hackpad will be better fs
Fixed some errors listed in funding return fixed pcb design for led slot and design for supports of pcb.
Soldered all the components onto the pcb also made a custom solder third hand at home although i uploaded code multiple times different versions took almost 4 hours didnt want to record it the screen still doesnt show anything im suspecting its a backlight issue when i put flashlight on it some words are visible will try to find a way around it i hope its not faulty
Another Day another fail cant really seem to make the display work i used an external wire to check with esp pins the screen backlight is litting on some different pins but not on its backlight pin like maybe i’ll get a solution. EDIT: OMG!!!!! im so happy the screen is working i was doing after session repairs as usual fixed the code and its working took so long
OMG!! finally almost ready multiple code attempts sanding fitting will need to buy shorter bolts for top and adjust the 3d model for the right fit but yes almost ready soon !!!!...
|
1793047693.5743785
|
1793652493.5743785
|
|
27224
|
My very own WebOS by @nevasood | Stardance
|
nevasood
|
1
|
15.63
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T14:51:23Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WEBOS about myself with 3 specific apps. It contains a shopping list, a calculator and a notepad. It was challenging to make the shopping list. It was difficult to code in Javascript, which I did more effectively through the use of AI.", "repo": "https://github.com/itzzneva/my-own-web-OS", "demo": "https://itzzneva.github.io/my-own-web-OS/"}]...
|
[{"post_id": 83067, "ts": "202 [{"post_id": 83067, "ts": "2026-10-26T19:34:04Z", "hours": 3.6314, "text": "had to rewrite some of the code"}, {"post_id": 81500, "ts": "2026-10-21T14:49:05Z", "hours": 4.77, "text": "my web os complete"}, {"post_id": 60255, "ts": "2026-09-02T14:50:53Z", "hours": 0.315, "text": "I have added a background colour. I might add some extra apps such as a calculator."}, {"post_id": 59615, "ts": "2026-09-01T15:11:30Z", "hours": 7.3794, "text": "I have currently added a window. I have struggled with making it draggable but it can close properly. I plan on adding more apps or windows. I plan to make it fit a certain theme, by adding certain images."}]...
|
Title: My very own WebOS by @nevasood | Stardance
Title: My very own WebOS by @nevasood | Stardance
Devlogs:
I have currently added a window. I have struggled with making it draggable but it can close properly. I plan on adding more apps or windows. I plan to make it fit a certain theme, by adding certain images.
I have added a background colour. I might add some extra apps such as a calculator.
my web os complete
had to rewrite some of the code
Ships:
I made a WEBOS about myself with 3 specific apps. It contains a shopping list, a calculator and a notepad. It was challenging to make the shopping list. It was difficult to code in Javascript, which I did more effectively through the use of AI....
|
1793051472.9933925
|
1793137872.9933925
|
|
67321
|
My Personal Site by @bruv | Stardance
|
bruv
|
1
|
12.71
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T20:35:49Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "For my very first Stardance project I created my own personal website. It consists of 3 sections: About me, Projects and Entertainment. I’m planning on updating it to make it look better and eventually add more projects to it. Writing the html code for this was pretty simple for me since I have learnt it before but what was challenging for me was the CSS code, especially researching on how to animate text to look like it was being typed (luckily I found out how eventually). To everyone checking out my site, you gotta see the entertainment section, it will not disappoint! I am excited to launch my first live site on the internet!", "repo": "https://github.com/Hannah-Dennis/Stardance-floor", "demo": "https://hannah-dennis.github.io/Stardance-floor/"}]...
|
[{"post_id": 83062, "ts": "202 [{"post_id": 83062, "ts": "2026-10-26T18:38:49Z", "hours": 1.9417, "text": "Devlog #24: I added the features that were on the homepage onto the other pages as well. I debugged too."}, {"post_id": 82795, "ts": "2026-10-25T20:46:42Z", "hours": 0.4667, "text": "develop #23: More debugging, turns out my code wasn’t even in the body =/"}, {"post_id": 82436, "ts": "2026-10-24T19:58:52Z", "hours": 0.3594, "text": "Devlog #22: I made a sparkle click option!!"}, {"post_id": 82083, "ts": "2026-10-23T19:57:43Z", "hours": 0.2908, "text": "Devlog #21: I added a light/dark mode. I’m thinking of putting a bg for it tho."}, {"post_id": 81862, "ts": "2026-10-22T19:56:31Z", "hours": 0.3033, "text": "Devlog #20: I added a progress bar!"}, {"post_id": 81622, "ts": "2026-10-21T19:56:13Z", "hours": 0.3722, "text": "Devlog #19: I added a new feature where if you click on one of the pictures, it will open it but without opening a new tab."}, {"post_id": 81314, "ts": "2026-10-20T19:49:31Z", "hours": 0.4575, "text": "Devlog #18: the parallax effect on the pictures is finally workinggg!!"}, {"post_id": 81065, "ts": "2026-10-19T18:52:36Z", "hours": 0.2883, "text": "Devlog #17: I debugged some code then added the picture files in the same folder. I still need to change their name tho"}, {"post_id": 80743, "ts": "2026-10-18T17:59:52Z", "hours": 0.3144, "text": "Devlog #16: debugged errors and added more animations"}, {"post_id": 80480, "ts": "2026-10-17T19:59:49Z", "hours": 0.2983, "text": "Devlog #14: I added shimmering stars"}, {"post_id": 80227, "ts": "2026-10-16T19:55:18Z", "hours": 0.3139, "text": "Devlog #14: I’m still trying to get the picture-moving-parallax effect..working on JS part now."}, {"post_id": 79990, "ts": "2026-10-15T19:57:48Z", "hours": 0.3378, "text": "Devlog #13: I’m trying to add another parallax effect where the pictures move with the cursor"}, {"post_id": 79638, "ts": "2026-10-14T19:54:43Z", "hours": 0.3911, "text": "Devlog #12: I added a new page for entertainment instead of keeping it as a section in the homepage."}, {"post_id": 79394, "ts": "2026-10-13T19:57:22Z", "hours": 0.3106, "text": "Devlog #11: I decided to add separate pages for Home, Projects,etc. instead of keeping them as sections on the same page. I changed the cursor too!"}, {"post_id": 79137, "ts": "2026-10-12T19:49:26Z", "hours": 0.3228, "text": "Devlog #10: I added a banner…I think I should change the font colour."}, {"post_id": 78838, "ts": "2026-10-11T18:48:43Z", "hours": 0.3283, "text": "Devlog #9: I changed h1 and the nav bar to match the theme of the others. I changed the bg too!"}, {"post_id": 78436, "ts": "2026-10-10T19:59:18Z", "hours": 0.3383, "text": "Devlog #8:I made the boxes translucent and I made the line underneath the heading multiple colours."}, {"post_id": 78144, "ts": "2026-10-09T19:30:04Z", "hours": 0.8153, "text": "Devlog #7: i searched up on different kinds of animations I can add like kinds of cursors. I also added the parallax feature =D"}, {"post_id": 77924, "ts": "2026-10-08T19:54:06Z", "hours": 0.4547, "text": "I’m starting to work on version 2 of my personal website. I researched on how to add a parallax effect and now I’m trying it out."}, {"post_id": 77664, "ts": "2026-10-07T19:26:16Z", "hours": 1.2503, "text": "I added a typewriter-style animation to give my site a hacker-ish vibe. I also put a scrollbar and tried to make the site more aesthetically pleasing."}, {"post_id": 77397, "ts": "2026-10-06T19:57:02Z", "hours": 0.7242, "text": "Devlog 4: I removed the “style” attribute from html and made it css instead. I also made the videos into clickable links."}, {"post_id": 77146, "ts": "2026-10-05T19:36:13Z", "hours": 1.0442, "text": "Devlog 3: I added more info (stuff about me, hobbies, projects), features (images, videos, nav bar) and I added a picture as the background."}, {"post_id": 76812, "ts": "2026-10-04T17:31:32Z", "hours": 0.3006, "text": "Devlog 2: I edited the html part since the previous log was just me following the guide. I’m thinking of adding memes (not definite)"}, {"post_id": 76478, "ts": "2026-10-03T17:31:27Z", "hours": 0.5156, "text": "I am working on my personal website. I have a lot of ideas that I can’t wait to try out =D"}]...
|
Title: My Personal Site by @bruv | Stardance
Devl Title: My Personal Site by @bruv | Stardance
Devlogs:
I am working on my personal website. I have a lot of ideas that I can’t wait to try out =D
Devlog 2: I edited the html part since the previous log was just me following the guide. I’m thinking of adding memes (not definite)
Devlog 3: I added more info (stuff about me, hobbies, projects), features (images, videos, nav bar) and I added a picture as the background.
Devlog 4: I removed the “style” attribute from html and made it css instead. I also made the videos into clickable links.
I added a typewriter-style animation to give my site a hacker-ish vibe. I also put a scrollbar and tried to make the site more aesthetically pleasing.
I’m starting to work on version 2 of my personal website. I researched on how to add a parallax effect and now I’m trying it out.
Devlog #7: i searched up on different kinds of animations I can add like kinds of cursors. I also added the parallax feature =D
Devlog #8:I made the boxes translucent and I made the line underneath the heading multiple colours.
Devlog #9: I changed h1 and the nav bar to match the theme of the others. I changed the bg too!
Devlog #10: I added a banner…I think I should change the font colour.
Devlog #11: I decided to add separate pages for Home, Projects,etc. instead of keeping them as sections on the same page. I changed the cursor too!
Devlog #12: I added a new page for entertainment instead of keeping it as a section in the homepage.
Devlog #13: I’m trying to add another parallax effect where the pictures move with the cursor
Devlog #14: I’m still trying to get the picture-moving-parallax effect..working on JS part now.
Devlog #14: I added shimmering stars
Devlog #16: debugged errors and added more animations
Devlog #17: I debugged some code then added the picture files in the same folder. I still need to change their name tho
Devlog #18: the parallax effect on the pictures is finally workinggg!!
Devlog #19: I added a new feature where if you click on one of the pictures, it will open it but without opening a new tab.
Devlog #20: I added a progress bar!
Devlog #21: I added a light/dark mode. I’m thinking of putting a bg for it tho.
Devlog #22: I made a sparkle click option!!
develop #23: More debugging, turns out my code wasn’t even in the body =/
Devlog #24: I added the features that were on the homepage onto the other pages as well. I debugged too.
Ships:
For my very first Stardance project I created my own personal website. It consists of 3 sections: About me, Projects and Entertainment. I’m planning on updating it to make it look better and eventually add more projects to it. Writing the html code for this was pretty simple for me since I have learnt it before but what was challenging for me was the CSS code, especially researching on how to animate text to look like it was being typed (luckily I found out how eventually). To everyone checking out my site, you gotta see the entertainment section, it will not disappoint! I am excited to launch my first live site on the internet!...
|
1793062249.2490587
|
1793148649.2490587
|
|
17726
|
XyricOS by @ximotu | Stardance
|
ximotu
|
0
|
0.66
|
0
|
[]
|
[{"post_id": 8306, "ts": "2026 [{"post_id": 8306, "ts": "2026-06-13T20:14:22Z", "hours": 0.6564, "text": "Created XyricOS with triangular control buttons and a stained-glass like menu. The hard part was all the padding, since nothing registers when you press on the padding, but without it everything looks cramped. I spent a lot of time in codespaces figuring out how to only add padding on the bottom and sides, and not the top, but eventually I worked it out. I wish I started in vscode instead of codespaces, since aparently codespaces doesn’t have hackatime."}]...
|
Title: XyricOS by @ximotu | Stardance
Devlogs:
Cr Title: XyricOS by @ximotu | Stardance
Devlogs:
Created XyricOS with triangular control buttons and a stained-glass like menu. The hard part was all the padding, since nothing registers when you press on the padding, but without it everything looks cramped. I spent a lot of time in codespaces figuring out how to only add padding on the bottom and sides, and not the top, but eventually I worked it out. I wish I started in vscode instead of codespaces, since aparently codespaces doesn’t have hackatime....
|
1792482683.2596734
|
1793087483.2596734
|
|
64206
|
My first slack bot! by @aadhii | Stardance
|
aadhii
|
0
|
0.63
|
0
|
[]
|
[{"post_id": 83057, "ts": "202 [{"post_id": 83057, "ts": "2026-10-26T18:25:19Z", "hours": 0.6297, "text": "hii i’m still working on this but there’s too many things to download so it’s going a bit slow :( but it’s really fun!!"}]...
|
Title: My first slack bot! by @aadhii | Stardance
Title: My first slack bot! by @aadhii | Stardance
Devlogs:
hii i’m still working on this but there’s too many things to download so it’s going a bit slow :( but it’s really fun!!...
|
1793058770.6769106
|
1793663570.6769106
|
|
63203
|
QueueKiller by @MIREYA | Stardance
|
MIREYA
|
0
|
4.42
|
0
|
[]
|
[{"post_id": 83051, "ts": "202 [{"post_id": 83051, "ts": "2026-10-26T17:57:26Z", "hours": 1.4928, "text": "Guys I worked on QueueKiller. I fixed up the AI codes and I wrote html .Today I fixed the Flask code cause there was a stray c and the lock was not covering the wait time calculation 😅.Then I worked on the UI > first it was too boring and dark, so i changed it to white background with neon orange glass effect ✨ Added glowing NOW SERVING text and made the cards with blur. After that tested all APIs »>join, queue, next, clear, demo »everything working now 🔥 Also added the auto refresh every 3 secs for live board. Thats all for today (! !)"}, {"post_id": 72780, "ts": "2026-09-23T18:48:05Z", "hours": 0.2533, "text": "I have worked in LifeFix but it is not showing tomorrow I have to check it. In QueueKiller I have made some changes in the code. I really am disappointed because the time is ticking out and the project time is having issue being in this site."}, {"post_id": 71433, "ts": "2026-09-20T20:15:26Z", "hours": 1.5878, "text": "Update on QueueKiller everyone!!. I was finall able to read feedbacks and get to know streamlit is not a good option to deploy my sites. First I tried to deploy on GitHub. Nothing worked. I later learned GitHub Pages only hosts static HTML - it can’t run Flask or hold a queue list.I tried Streamlit for my other site, but got feedback that Streamlit sites sleep and are laggy. I knew a queue can’t sleep - it has to be live.Even my index.html and queue.html were breaking, tokens not linking.So I rebuilt it clean. Flask backend, dark UI, live token system, vibe picker, personal page that auto-refreshes every 3 seconds and vibrates when it’s your turn. Owner just clicks Next. Added a mini tap-game so waiting isn’t boring.Now code lives on GitHub, live site on Render - because a real queue needs a real server."}, {"post_id": 69767, "ts": "2026-09-17T19:06:39Z", "hours": 1.0847, "text": "Working on QueueKiller today - finally fixed the session_state bug that was clearing the queue on refresh 😭. Added the NOW SERVING pulse animation.Deployed on Streamlit but localhost was acting up so used network URL. Testing with demo data for canteen queue.The live board is looking cool now."}]...
|
Title: QueueKiller by @MIREYA | Stardance
Devlogs Title: QueueKiller by @MIREYA | Stardance
Devlogs:
Working on QueueKiller today - finally fixed the session_state bug that was clearing the queue on refresh 😭. Added the NOW SERVING pulse animation.Deployed on Streamlit but localhost was acting up so used network URL. Testing with demo data for canteen queue.The live board is looking cool now.
Update on QueueKiller everyone!!. I was finall able to read feedbacks and get to know streamlit is not a good option to deploy my sites. First I tried to deploy on GitHub. Nothing worked. I later learned GitHub Pages only hosts static HTML - it can’t run Flask or hold a queue list.I tried Streamlit for my other site, but got feedback that Streamlit sites sleep and are laggy. I knew a queue can’t sleep - it has to be live.Even my index.html and queue.html were breaking, tokens not linking.So I rebuilt it clean. Flask backend, dark UI, live token system, vibe picker, personal page that auto-refreshes every 3 seconds and vibrates when it’s your turn. Owner just clicks Next. Added a mini tap-game so waiting isn’t boring.Now code lives on GitHub, live site on Render - because a real queue needs a real server.
I have worked in LifeFix but it is not showing tomorrow I have to check it. In QueueKiller I have made some changes in the code. I really am disappointed because the time is ticking out and the project time is having issue being in this site.
Guys I worked on QueueKiller. I fixed up the AI codes and I wrote html .Today I fixed the Flask code cause there was a stray c and the lock was not covering the wait time calculation 😅.Then I worked on the UI > first it was too boring and dark, so i changed it to white background with neon orange glass effect ✨ Added glowing NOW SERVING text and made the cards with blur. After that tested all APIs »>join, queue, next, clear, demo »everything working now 🔥 Also added the auto refresh every 3 secs for live board. Thats all for today (! !)...
|
1793051234.573049
|
1793656034.573049
|
|
36065
|
SpacecraftOS by @madzia | Stardance
|
madzia
|
3
|
84.18
|
1072
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T21:32:08Z", "hours": 49.0, "multiplier": 18.53, "payout": 914, "blessing": "neutral", "text": "I made a web Operating System with spacecraft theme! Creating this site was so fun and fulfilling, esp. when a lot of things turned out exactly as I wanted!! I started coding over a month ago, and I’m so happy that I managed to create something like this. I really enjoyed it, especially the css part. SpacecraftOS This OS provides basic app like timer, calendar, maps, gallery, but everything have implemented some spacecraft additions. For example, the map app won’t show you the route to the nearest grocery store, but it will show you where your fav spacecraft is right now. The calendar app will show you astronauts birthdays and the gallery app provides photos humans sent to space on voyager. All these apps you will find on the left and on the bottom there are apps, where you’ll learn about various spacecrafts, and in some of these apps, you can also rate some photos the spacecrafts took! Notes Please start from choosing the most suitable for you theme in the settings (top right corner) Try on laptop/computer for better experience Snake game is only playable with keyboard Remember to double click on apps to open and please leave a toughtful review. Hope you’ll enjoy it!!", "repo": "https://github.com/Maaadzia/SpacecraftOS", "demo": "https://maaadzia.github.io/SpacecraftOS/"}, {"ship_num": 2, "ts": "2026-08-08T18:29:17Z", "hours": 16.0, "multiplier": 9.79, "payout": 158, "blessing": "neutral", "text": "I made an Operating System with spacecraft theme! New features Artemis App Artemis II playlist (app) Settings and darkmode Design - few images on the windows borders Start animation with spacecraftOS baner Challenges Compared to my previous ship, this time all functions and styling went smoothly, but the things that took the most time were adjusting photos and writing, researching about Artemis Mission! I tought that making the darkmode switch would be really hard, but when I focused it was really easy and rewarding process! Proud of I really like the starting animation and the images on the borders. I started coding one month ago so doing something cool with the css all by yourself is so fulfilling! I don’t understand js that much yet, so I had also watched few tutorials. The webOS 1 tutorial was really hard for me, so now I’m really happy when the things I wanted to add to my website turns out well! So I’m also really proud of the images slider in the Artemis App, the spotify playlist embedded and the dark/light mode switcher in the settings! Even tho they were made with tutorials I still needed to adjust it so it fits my site, and I’m so happy that I understand it to the point that I could do this all just by myself Notes Don’t forget to check the README, remember to double click to open apps and just enjoy the vojage!!", "repo": "https://github.com/Maaadzia/SpacecraftOS", "demo": "https://maaadzia.github.io/SpacecraftOS/"}, {"ship_num": 3, "ts": "2026-07-31T11:31:13Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an operating system based around spacecrafts! My website provides few apps: two about telescopes where you can learn about them and rate few photos they took from 1 to 5 stars, and one with notes, where you can store your ideas if some spacecrafts inspire you! Besides apps, on the top bar you will find two guides on how to catch the ISS and starlink satellites. In the ISS window you can find short youtube video - it’s about Polish astronaut, Sławosz Uznański, eating pierogi (delicious polish dish) on the ISS! I really recommend watching this The apps were the biggest challange for me. That’s why I had spent so many hours on this project. Firts, I couldn’t even open the first app. It was hard to even make the selected function work. Then, I managed to make this one app working! But, it wasn’t the right solution. When I added new apps, they were opening the 1st app window, and not theirs. I spent a lot hours trying to fix it, I tried a lot of possible solutions and finally, I had asked ai for help. That’s the only ai usage in this project. Eventually, everything works! I’m so happy because I’ve almost gave up. I really like the outcome, and I look forward for the future changes! I came up with a lot of ideas and I realised them the exact way I wanted! My favourite parts are def the Sławosz eating pierogi video and the photo ranking which I find so fun to watch and rate. Hope you’ll enjoy this as much as I do!", "repo": "https://github.com/Maaadzia/SpacecraftOS", "demo": "https://maaadzia.github.io/SpacecraftOS/"}]...
|
[{"post_id": 83045, "ts": "202 [{"post_id": 83045, "ts": "2026-10-26T17:32:12Z", "hours": 3.1822, "text": "New spacecraft App! Devlog 25 - SpaceShuttleApp Hi everyone!! I’m back with a whole new app and smoother system 1. Smoother system So I’ve got a lot feedback that spacecraftOS is working slow and someone has recommended to me adding se vite - that’s what i’ve done and now it works much better! 2. Space Shuttle App I’ve decided to add another spacecraft app, they’re always fun to make and it’s kinda easyyy process tbh so everything was smooth. On this app I described a little every space shuttle NASA has ever created. Hope you’ll enjoy it!! Thanks for reading and have a nice day!"}, {"post_id": 61784, "ts": "2026-09-04T21:11:45Z", "hours": 0.2711, "text": "Scrollbar is working!! Devlog 24 - scrollbar bug Guys I think that this bug was (is) my personal fault, bc the scroll bar is visible in every single browser different than my current one lol I probably have some sort of extension that adds none !important or sth to my code’s head and it ruins everything, but it shall work on every other device, on every other browser. Tbh I also used ai to fix it but it didn’t really helped bc it was my internal problem. So happy that it’s working, just wanted to clarify and log these 16min!! If any problems with scrollbar occur, please use keyboard arrows to scroll through windows Again, thanks for reading and have a nice day!"}, {"post_id": 61753, "ts": "2026-09-04T20:12:54Z", "hours": 3.7797, "text": "happy and frustrated Devlog 23 - Dock animation, scrollbar and NGRSTApp Dock Animation I really like this animation!! It’s so smooth and cool and I’m so happy bc I learned new thing with the tutorial!! It came out exactly as I wanted NGRSTApp It’s finally finished!! I managed to add some things regardless it’s such a fresh mission. Hope yall like it! Scrollbar Yeah so here’s the frustrating part. I coded really pretty, unique and practical scrollbar in the css but I used webkit and it worked on microsoft but on chrome - not anymore! You can’t even see the scrollbar! I don’t have time anymore - I’m leaving in few hours, I commented it out and I hope I’ll fix it one day Additional changes Rewrited README Added some events to the calendar What’s next? I’m gonna ship now!! Wish me luck and thank you all for your support throughout the whole voyage!!"}, {"post_id": 61421, "ts": "2026-09-04T10:10:39Z", "hours": 1.5053, "text": "Which one should I choose? Devlog #22 - Timer So I just made a timer with tutorial, but I need your help!! Should I keep miliseconds (slide 2) or keep it simple just with hours/minutes/seconds?? I kinda think that h/m/s looks better but it also seems so boring and less “advanced” than h/m/s/ms!! Also this was such an easy tutorial, fortunately everything went smoothly!! Yall probably know bro code but if someone wants here’s the link What’s next? Dock animation NGRSTApp Thanks for reading and I’m waiting for your comments!"}, {"post_id": 61029, "ts": "2026-09-03T18:44:03Z", "hours": 1.9033, "text": "I’m back!! Devlog #21 - new colors Hi everyone! I’m finally back but from hospital… right after my trip I was diagnosed with severe anemia and had to stay in the hospital for four days. I’m feeling good but I’m a little worried bc I lost so much time and I’m leaving on next trip again in few days!! There’s not many things left in SpacecraftOS tho, so let’s summarise it What’s new? In the video below you can see that I adjusted the calendar colors for every theme. It was such a fun process! I like how it looks now. I also managed to fix the days align and now it works perfectly, always in 7 columns. Hope yall like it! What’s next? I’m going to work on dock animation!! I also need to finish NGRSTApp but I think I’m going to keep it simple bc I don’t have so much time and I want to ship by the time I leave Thanks for reading, take care and have a nice day!!"}, {"post_id": 53999, "ts": "2026-08-24T18:45:12Z", "hours": 5.9797, "text": "Reallyyyyyyy time consuming Calendar Devlog #20 - Calendar So I spent this whole day coding this calendar with youtube tutorial. This tutorial was only 17min but it took me 5h Then I needed to fix some typos bc I ofc made a lot and then many many styling!! It’s not the final result! I’m going on a trip tomorow, so I need to take a break from coding. To adjust the width and height, make it all fit to my site, it takes so long, and then I need to change the colors, bc I was just testing with the pinks. Change colors to all of my themes 😭 But it’s okay I got this Disappointing surprise You can see in the video on the second slide that there are 6 columns in the next month instead of 7! I’ve been so happy bc it was working in august, and then I changed months and it was a little disappointing surprise. I’m gonna fix it later! What’s next? When I’ll be back I’m going to work on this app! I didn’t expected it to be that hard Thanks for reading and see you in the next one!"}, {"post_id": 53260, "ts": "2026-08-23T18:20:43Z", "hours": 1.9378, "text": "More Animatiooons! Devlog #19 Animations on scroll Animations So recently I’ve been working on animations on scroll! Now my Apps about spacecrafts are more interactive and less boring. In the video below you can see all of the scroll animations I’d added till this moment. I feel so confident with css animations, they give me so much fun!! Icon The video is cropped so you can’t see the snake game icon but it finally is here! I added it in the second slide so you guys can see it! Let me know what yall think. I wanted to keep the one real-life, space themed addition (like moon in the music app) so the snake has galaxy eyes. Nancy Grace Roman Space Telescope PROBLEM As you can see I also added an icon for NGRST App but it’s an upcoming mission and I don’t really know what to do with it!! Someone requested it in the feedback, so I really want to implement it but idk, maybe I shall add a countdown? But it will be outdated soon. Many things can be outdated! Thanks for reading and have a nice day!"}, {"post_id": 52482, "ts": "2026-08-22T16:55:00Z", "hours": 0.6842, "text": "The most spacecraft app on spacecraft os? Devlog #18 - MapApp!!! ALL SPACECRAFTS IN ONE PLACE WHAT AN AMAZING FEATURE!! What’s new? MAAAP AAAPP While doing research on Voyager 1 and 2 I found this “Eyes On The Solar System” from NASA, and noticed that you can embeed it, and that’s what I’ve done! First and foremost, you can check here the position of any spacecraft you want! That’s why I called it Map App. Moreover, that’s a place with a lot of information, and whole spacecraft history! As you can notice, it didn’t take me so long (bc it’s just embeeding), so what I’ve also completed? Fixed some bugs Finished icon for snake game What’s next? NGRST app! (Can someone guess, what does this short stand for? Hint: HST and JWST are already in spacecraftOS!)"}, {"post_id": 52183, "ts": "2026-08-22T08:40:35Z", "hours": 3.7939, "text": "Perfecting Devlog #17 - snake game and organisation What’s new? Snake game As you can see, I’ve styled the snake game a little! I also added start/tutorial/guide window, I added it by creating new window and setting start button as the window close button hihi work smarter not harder. Ai usage I couldn’t figure it out how can I set imgs as the background, food and even for snake, so I asked ai. It’s just creating const with img and adding drawImage instead of fillStyle , and I’m so happy bc now I understand it and know how to implement imgs to js! WHERE’S THE ROCKET? It was too hard!! I really tried, but when I managed to set the rocket as the snake’s head: The rocket was too small It wasn’t rotating It looked so bad and if I wanted to continue with this idea I would need to use ai, so more ai than I would like, so I eventually there’s snake in the snake game. More organisation I created folders in the img folder for each app, bc the img folder was still a little messy. It was such a tedious process, but it’s much clearer now! What’s next? New REALLY COOL APP and snake app icon, which I’m going to edit today while watching F1 sprint"}, {"post_id": 51083, "ts": "2026-08-20T15:53:26Z", "hours": 2.6117, "text": "Random decision (but it was worth it) Devlog #16 - Radio buttons and styles What’s new? Radio buttons In my feedback someone suggested to add radio buttons instead of checkboxes bc then you can just choose one - and today I did it! I also styled it and added cool animation!! Each theme have different stars colors as well - you can check it in the video below. Highscore Somehow, I also added highscore to my snake game! I took a bit of information from tutorial 1 a bit from tutorial 2 and it’s working! Maybe not perfectly, but when you restart, new highscore will be visible, and it’s also in local storage so you can come back after a month and your highscore still will be there!! So, why random? It was a little unexpected bc I was working on the snake game (yeah it’s still not finished) and suddenly I gained a lot of motivation for the radio buttons. I knew I wanted to style them somehow, but I came up with the star design today, and I think it’s perfect!! What yall think about it?? What’s next? Hopefully, I’m going to finish the snake app!"}, {"post_id": 50531, "ts": "2026-08-19T18:36:40Z", "hours": 6.595, "text": "Such a challange! Devlog 15 - snake game Snake game? Yeah I’m surprised too. But I really wanted to see how it works and just code sth like this (with tutorial ofc). I wanted to make it a little later but I had time today and decided - why not? Okay but, 6 hours?!??!?!?!?!? Yeah 😭 in short, I started with tutorial 1, but it didn’t worked, so I deleted everything and switched to another tutorial, where I realised that I just haven’t connected my snake.js to html lolll but anyways, I even liked tutorial 2 more, I feel like it gave me more styling options, but I needed to quit it because to restart you needed to refresh the site. I tried to just implement some functions, change some things but I’m not that skilled to do this yet. I deleted everything again and came back to tutorial 1 which I eventually completed! That’s not the final results I really want to make the snake head a rocket thats collecting fuel, but there are some problems!! Obviously lol, so I have something like this const snakeColor = \"pink\"; and I tried to change pink to class, to var but it didn’t worked, and I really don’t know how can I style this snake further, so I can add the rocket and fuels and many other things. That’s why I liked tutorial 2 more! What’s next? I will try to style the snake and this whole window basically!! The video below is in 2x speed!"}, {"post_id": 49450, "ts": "2026-08-18T09:25:00Z", "hours": 1.2464, "text": "I code my function!! Devlog 14 - animation and design Function I’m sooooooooo happy because yesterday I’ve managed to create my own function!!! someone suggested to make other tab switching. I was looking for some tutorial, but couldn’t find anything so I asked ai what can I search in youtube to find it. For better or worse, the AI gave me a little guidance on how it works (so I’d understand it in the tutorial, NO code ), I didn’t even fully read this because when I noticed “animation” and “adding classes” I noticed, what I can do! Few days ago I mentioned the theme switch tutorial, that helped me with understanding js!! With this knowledge and the pattern I already had from webOS tutorial, I managed to create opening app window animation!! Additional apps I also added left bar for the additional apps (/apps that are not about spacecrafts). For now just the background, but when I will finish every app I will also add some better animations and just style it better Problem At the very end of the video, you can notice such a huge problem with opening windows and theirs z-index. They open randomly, once under particular app once above, trying to catch this video when it’s smooth and they all go on top was really hard!! Please let me know if you know how to fix it And I had also tried to make my windows resizeable but it unfortunally didn’t worked. I will get back to this later What’s next? To perfect it all and fix bugs! And then maybe some games? Thanks for reading and have a nice day!!!"}, {"post_id": 48987, "ts": "2026-08-17T16:00:19Z", "hours": 3.1114, "text": "Feedback and roverS Devlog 13 - Spirit and Opportunity App Feedback So, my project went through ratings: unfortunately, I only got 9.79 multiplier, but I also got an amazing and really valuable feedback!! People pointed out my messy repository, and indeed, it needed to be changed. I created new folders, and now it’s clear and organised! RoverS app? While researching, I noticed that Spirit also deserves to be mentioned! Because it’s the same mission, I decided to add Spirit to Opportunity app, and therefore it’s Rovers/Spirit&Opportunity app now! What’s next? I’m going to focus on improving my app and implementing the advices I received in feedback. I also have a lot of new ideas, so stay tuned!"}, {"post_id": 48045, "ts": "2026-08-16T10:23:51Z", "hours": 4.5292, "text": "Time-consuming animation and problemss Devlog 12 - Opportunity App and animation Problems!!! I messed up positions! 😭😭 I was adjusting this rover so it’s driving perfectly around the Mars for hourss and then I decided to check it with the scroll bar, and bc the rover had position: absolute it went down with the scroll bar idk how to describe it, like, he flew out of mars lol Solutions!!! I’ve watched quick guide on youtube about positions and finally understood everything, because before I was just kindaaa guessing lolll now, having the knowledge, I wrapped my animation into <div style=\"position: relative; border: pink [...]\"> , added position: absolute to my images and adjusted everything completely from scratch!! It took me so long but I think it was worth it bc it looks nice and is something different from the usual. One more change I added border photo to Voyager App. Adjusting also took me a while but the window is way more interesting now! What’s next? Finishing Opportunity App!! Thanks for reading and have a nice day!!"}, {"post_id": 46779, "ts": "2026-08-14T08:51:39Z", "hours": 2.9839, "text": "More colors!!! Devlog #11 - 3 new themes!! I made new themes!!!!!!! I’m so happy to introduce you to my 3 colorful themes: Moon Theme - “Earth set” photo from Artemis II mission, blue-colored Aurora Theme - Earth’s Aurora seen from the ISS, green-colored Sunset Theme - “Cotton Candy Skies”, Falcon 9 rocket, pink-colored No gatekeeping, I’ve been searching for tutorial like this for so long so here’s the link for the tutorial . Hope it will be helpful! I need a feedback!! I’m not sure about the colors tho, please let me know know if everything is readable and if you perhaps would change anything Thanks for reading, hope you like it!"}, {"post_id": 46261, "ts": "2026-08-13T11:38:08Z", "hours": 4.6536, "text": "new app and new ideas! Devlog 10 - Full Voyager App Full Voyager App I finished coding new app!! It’s about Voyager mission, so basically Voyager 1 and Voyager 2. Research took me so long again!! But I’m happy with the results New idea So since I started this project I’ve been thinking about how do I arrange the blank space next to the rating images. Today, I added a brief text that’s describing the photo. Just a little, but now you’ll know what the images shows! You can see it on the 1st screenshoot below. Both screenshots are from the new app What’s next? I would love to make new function in the settings so you can change the background photo!! Wish me luck Thanks for reading and have a nice day!!"}, {"post_id": 45144, "ts": "2026-08-11T13:25:16Z", "hours": 3.765, "text": "New app!! Devlog #9 Voyager Photos App Guys I finished rating other projects and I have to admit that my devlogs are way too long So today let’s keep it brief: Voyager Photos App!!! I’m gonna create another app just about voyager, but this is some sort of gallery of (only) 11 photos from these spacecrafts. I made cool infinite images slider with tutorial - it went really smoothly, and then I’ve been trying to make an information window appear when you place your cursor on the “?”. I don’t feel so comfortable in js yet but I wanted to do it all by myself so I went with css, and I really like the final results! You can see it in the video below What’s next? Full Voyager App, I hope! See you in the next one, thanks for reading!!"}, {"post_id": 43432, "ts": "2026-08-08T17:48:20Z", "hours": 0.2547, "text": "15 min can’t be lost! Devlog 8 - fixed all typos and changed the start text So, what I changed in these 15 min? I changed all the typos in artemis app FORTUNATELY I checked the start window, and changed the description because it was really outdated! And therefore, I needed to change the image in my readme. I also adjusted it to width: 100%; height: auto because when I opened readme on my phone it was really stretched! Below I leave a screenshoot of the app I’ve been adjusting, with the artemis II crew because they’ve been my motivation through this whole process! I can’t wait to work more on SpacecraftOS!! Wish me luck on shipping ^^"}, {"post_id": 43381, "ts": "2026-08-08T16:06:31Z", "hours": 1.5467, "text": "One more devlog! Devlog 7 - title and start animation I wanted to ship already but lo and behold, I’ve added some changes! So, what’s new? I finally designed the header of my site! now it says SpacecraftOS and displays a rocket icon! Updated Artemis App - I’ve added some information about Artemis IV and V WELCOMING ANIMATIONNN!!!!!! - I’m very happy because I’ve managed to add a start animation, like welcoming screen or sth like this, idk how is it called, but now, when you enter my page, you can see an animation with my baner! It’s in the video below What’s next? I’ve also finished writing the README so now I will just read everything top to bottom again and SHIP!!!"}, {"post_id": 42821, "ts": "2026-08-07T18:52:04Z", "hours": 4.8486, "text": "Darkmode!! Devlog 6 - dark mode and more photos on the borders What’s new? Darkmode and settings I’m so happpyyyy I’ve managed today to create new very cool app - settings - where you can switch between lightmode and darkmode! At the beginning I tought that it would be a nightmaree but turns out, when I really focused, it was a smooth process and I really enjoyed it! But one thing is not working.. not so important but when I’m adding this app to the rising on top function everything crashes and I can’t open any app. I’ll try to fix it later. There ofcourse will be more functions soon in this app so stay tuned! More images on borders I added more photos on the borders! ISS NASA astronaut working on Hubble The Golden Record spinning on the Artemis II playlist app (I think it’s a really cool idea) Adjusting the astronaut was really hard, and the background did not removed well but I’ve managed to add some blur and eventually it looks okayy I’ve also changed the position of Artemis astronaut - I wanted to put it on the left but unfortunatelly, it cannot be here because then it covers the scroll bar. Adjusting the rotation helped a little and it looks way better! What’s next? I think I’m gonna ship soon! I’ve already writed the README and I just need to check everything. But don’t worry, it’s not the end of SpacecraftOS! I already have a lot of ideas"}, {"post_id": 42063, "ts": "2026-08-06T16:54:14Z", "hours": 1.3569, "text": "My website is all around Artemis now! Devlog #5 - two new apps fully finished! I finished the image slider I’ve been writing about in the previous devlog and added new app! I tought it will take me so much longer, but here I am! But let’s start from the outset: Finished Artemis Mission App I’ve finally finished it! In my previous devlog I said that I found another tutorial on how to make image slider, and it was a bullseye!! After I adjusted it a little so it fits my images it’s working perfectly!! And looking so so good! I’m so happy!! New app - Artemis II Playlist So, I really wanted to implement some music into my website. But because it’s a SPACECRAFT operating system I knew it cannot be just basic music app. While working on the Artemis App I came up with this amazing idea - I’m pretty sure that you heard about the wake up songs from Artemis II Mission. I decided to do an app with that playlist! Since it’s just embeeding the code from spotify it wasn’t such a big problem. I think that the hardest thing here was to make the app icon, which is the moon listening to music on headphones!! I really like this idea, let me know what you think about it What’s next? I want to add some images on the borders like in the Artemis App. And then another app!! Thanks for reading and have a nice day!"}, {"post_id": 41862, "ts": "2026-08-06T10:36:58Z", "hours": 8.1608, "text": "Such a messs!! Devlog #4 - Artemis App! Your opinion Before we begin, I’d like to know your opinion about the images layout. The 3 first screenshoots below shows different layouts. Screenshoot 1 : This is the first version I coded. But it covers the close button and most importantly - the scroll bar which is so unpractical Screenshoot 2 : this is how I had imagined it when this idea came to my mind. It also covers the close button and the scroll Screenshoot 3 : last version I’ve coded. I did not planned this layout but I think it looks great and is the most practical! Unfortunately the 3rd option covers the move button but by adding some z-index everything works well, and looks better than when adding z-index to the scroll bar bc the rocket/astronaut is either covered by the scroll or too far away. Please let me know what you think! Challange 1 Adjusting these images was such a challange. But I wrote it all down from memory! I added the position: fixed so it can exceed the window and adjusted the position several times! The biggest problem, as I said, was that they were covering the scroll bar and close button and then the move button as well. But I found the solution! I added the appropriate z-index to each of the elements and it worked!! (I’m really surprised tbh it was so easy and didn’t took me that long to figure out! I’m getting good at coding ) So finally, what’s new? I added the Artemis Mission App !! It’s not an app just about the artemis II. It’s an app where you can learn about the whole mission, the SLS rocket, the Orion capsule and get to know some fun-facts! Doing the research on all of these thing took me sooo much time! And then writing it down, deciding what is worth the attention and so on… it was kinda exhausting! But I’m so happy with the (not yet) final results! Yeah, not yet meaning… Challange 2 On the last screenshoot you can see the biggest mess on this app! Few photos totally without rhyme or reason! I was coding with image slider tutorial. Everything was going smoothly, till the creator of the tutorial said that now we shall see our photo aaaand yup I did not see anything. I was checking several times if I writed down everything the right way, I was looking for solution and eventually I created new repository and copied the whole code which he pasted in the comments (just to clarify - in this project I do NOT copied any code, I writed everything by myself). In this repository everything worked. When I saw the final results in the repository I had also noticed that it’s not really what I wanted to have in the Artemis App. Bc the code did not worked (probably because it already was in several divs and not like raw or sth) and bc it didn’t align with my vision I decided to just delete this whole code. I’ve already found another tutorial, with better design so I will keep you updated on how it’ll turn out! What’s next? Fixing the mess and finishing the app New app (it’s going to be music app linked to the Artemis II mission!) Thanks for reading and stay tuned!!"}, {"post_id": 37768, "ts": "2026-07-30T18:02:44Z", "hours": 7.5406, "text": "AYYYY FINAL DEVLOG! Devlog #3 - more apps and final changes Guys I can’t believe I did this!! (It’s such an achievement for me okay ) Let’s break all the changes I’ve made to some points: ( if you don’t want to read it all please skip to the last point because it’s about Poland in space and I love Poland and Space ) APPS! AND MANY MORE PROBLEMS. Let’s start from the problems… If you tought that in the second devlog I’ve finally managed to make working apps - you are so wrong. Barely 2 hours later I realised, that the (window) part was not a problem. Turned out, that when I changed this to the id of my app window, next apps opened the 1st app window, and not theirs window. I’ve been searching for solutions for HOURSS! Eventually I had asked ai for help. I had described my problem really pricesely. It found the problem! In this function function handleIconTap(element) I was supposed to write (element, window) … Fortunately, now it fully works!! I’m so happy because this was sooo frustrating. New apps! So, I’ve made two new apps! One similar to James Webb Space Telescope App, and one for notes and ideas. Let me introduce you toooo: Hubble Space Telescope App! - As I said, this one is similar to JWSTApp but it’s around Hubble! You can rate photos, learn some facts about it and just admire another amazing spaceship. NASCApp also known as Spacecraft Ideas. So from where is the abbreviation “NASCApp”??? Well, previously it was named “Notes About Spacecrafts”, but I decided that it’s so boring. Spacecraft Ideas is not really mind blowing name but it’s way better. I also had few problems with this app but after longer reflections, I decided to keep it simple. You can see these apps on screenshoots below. Starlink Catch Guide and Minor Changes I finished writing about starlink satellites in the Starlink Catch Guide window and added some minor changes to every window on my webOS after reading them all again. It was such a long process, but I like how it all looks together now. POLAND IN SPAAAAAACE AND PIEROGI! I added youtube video to the ISS Catch Guide window about Polish astronaut - Sławosz Uznański, eating delicious polish pierogi, on the ISS! I think that this is the most important part of my webOS. POLSKA GUROM!! (You can watch Sławosz eating pierogi on the ISS here ) What’s next? I’m going to read it all again, write README, complete project info and finally, SHIP!! Don’t worry it’s not the end of the journey because I started to like coding so much and I want to continue with webOS 2! Thank’s for being with me and have a nice day!"}, {"post_id": 35710, "ts": "2026-07-27T09:53:57Z", "hours": 2.9081, "text": "I did itttt!! Devlog #2 - Apps Hi!!! I’m so glad to announce that my apps are finally working! There’re still few problems though. But let’s start from the outset: James Webb Space Telescope App This app provides few basic information and interesting facts about JWST. I had also added some photos which you can rate from 1 to 5 stars! You can see the app in the screenshots below. Problems As you can see, there’s so much space on the right from the images you can rate. I’m considering a lot of options, one of them is to just make two/three photos in one row, what do you think? Would this look better? Double click app opening - the if and else statements made my app open at the second click, and not at the first when it’s selected. It selects with the first click and then, with second click, deselects and opens. Idk if it’s supposed to work this way. I think that now I’m going to leave it because at this point I’m just celebrating it works and I want to focus on other things. Problems fixed 🥳🥳🥳 Yall don’t even know how happy I am because of these apps working!! It indeed was much easier than I tought, guess what stupid mistake I had made this time… in the function I did not changed (window) to my actual window. Lol. It was not the only problem on the way but it was definitely the main mistake. I’m so happy because now I can get creative and continue working on the apps design!! Upcoming changes Next I’m going to add few more apps. Can’t wait! Thanks for reading this devlog. Hope you’ll have and amazing day!!"}, {"post_id": 33605, "ts": "2026-07-23T17:38:32Z", "hours": 5.8403, "text": "I dont know what I’m doing but I hope it will be worth it!! devlog #1 - SpacecraftOS Hi everyone! I detached the WebOS mission from ISS HUNT and created this project - Spacecraft OS. I noticed that it’s not really the way I want ISS hunt to look like, to be like. To be honest - this tutorial is SOOOOO hard to me! The apps get me everytime! And besides it I made a lot of minor mistakes. For example, once I could move the start window alone but the guide window was moving only with the start one. And the blur wasn’t working, I was so frustrated and reallyyy confident that there are NOT any stupid mistakes like wrong id. Until I realised that the top bar only blurs the start window… I haven’t closed the div. Yeah. That is a stupid mistake. Even tho it’s hard to me I’m not giving up! Others have done it so can I! For now, I created the top bar and completed the start window and the ISS catch guide. Currently I’m working on starlink catch guide and then I’m gonna work more on these wretched apps 😭 Wish me luck!"}]...
|
Title: SpacecraftOS by @madzia | Stardance
Devlog Title: SpacecraftOS by @madzia | Stardance
Devlogs:
I dont know what I’m doing but I hope it will be worth it!! devlog #1 - SpacecraftOS Hi everyone! I detached the WebOS mission from ISS HUNT and created this project - Spacecraft OS. I noticed that it’s not really the way I want ISS hunt to look like, to be like. To be honest - this tutorial is SOOOOO hard to me! The apps get me everytime! And besides it I made a lot of minor mistakes. For example, once I could move the start window alone but the guide window was moving only with the start one. And the blur wasn’t working, I was so frustrated and reallyyy confident that there are NOT any stupid mistakes like wrong id. Until I realised that the top bar only blurs the start window… I haven’t closed the div. Yeah. That is a stupid mistake. Even tho it’s hard to me I’m not giving up! Others have done it so can I! For now, I created the top bar and completed the start window and the ISS catch guide. Currently I’m working on starlink catch guide and then I’m gonna work more on these wretched apps 😭 Wish me luck!
I did itttt!! Devlog #2 - Apps Hi!!! I’m so glad to announce that my apps are finally working! There’re still few problems though. But let’s start from the outset: James Webb Space Telescope App This app provides few basic information and interesting facts about JWST. I had also added some photos which you can rate from 1 to 5 stars! You can see the app in the screenshots below. Problems As you can see, there’s so much space on the right from the images you can rate. I’m considering a lot of options, one of them is to just make two/three photos in one row, what do you think? Would this look better? Double click app opening - the if and else statements made my app open at the second click, and not at the first when it’s selected. It selects with the first click and then, with second click, deselects and opens. Idk if it’s supposed to work this way. I think that now I’m going to leave it because at this point I’m just celebrating it works and I want to focus on other things. Problems fixed 🥳🥳🥳 Yall don’t even know how happy I am because of these apps working!! It indeed was much easier than I tought, guess what stupid mistake I had made this time… in the function I did not changed (window) to my actual window. Lol. It was not the only problem on the way but it was definitely the main mistake. I’m so happy because now I can get creative and continue working on the apps design!! Upcoming changes Next I’m going to add few more apps. Can’t wait! Thanks for reading this devlog. Hope you’ll have and amazing day!!
AYYYY FINAL DEVLOG! Devlog #3 - more apps and final changes Guys I can’t believe I did this!! (It’s such an achievement for me okay ) Let’s break all the changes I’ve made to some points: ( if you don’t want to read it all please skip to the last point because it’s about Poland in space and I love Poland and Space ) APPS! AND MANY MORE PROBLEMS. Let’s start from the problems… If you tought that in the second devlog I’ve finally managed to make working apps - you are so wrong. Barely 2 hours later I realised, that the (window) part was not a problem. Turned out, that when I changed this to the id of my app window, next apps opened the 1st app window, and not theirs window. I’ve been searching for solutions for HOURSS! Eventually I had asked ai for help. I had described my problem really pricesely. It found the problem! In this function function handleIconTap(element) I was supposed to write (element, window) … Fortunately, now it fully works!! I’m so happy because this was sooo frustrating. New apps! So, I’ve made two new apps! One similar to James Webb Space Telescope App, and one for notes and ideas. Let me introduce you toooo: Hubble Space Telescope App! - As I said, this one is similar to JWSTApp but it’s around Hubble! You can rate photos, learn some facts about it and just admire another amazing spaceship. NASCApp also known as Spacecraft Ideas. So from where is the abbreviation “NASCApp”??? Well, previously it was named “Notes About Spacecrafts”, but I decided that it’s so boring. Spacecraft Ideas is not really mind blowing name but it’s way better. I also had few problems with this app but after longer reflections, I decided to keep it simple. You can see these apps on screenshoots below. Starlink Catch Guide and Minor Changes I finished writing about starlink satellites in the Starlink Catch Guide window and added some minor changes to every window on my webOS after reading them all again. It was such a long process, but I like how it all looks together now. POLAND IN SPAAAAAACE AND PIEROGI! I added youtube video to the ISS Catch Guide window about Polish astronaut - Sławosz Uznański, eating delicious polish pierogi, on the ISS! I think that this is the most important part of my webOS. POLSKA GUROM!! (You can watch Sławosz eating pierogi on the ISS here ) What’s next? I’m going to read it all again, write README, complete project info and finally, SHIP!! Don’t worry it’s not the end of the journey because I started to like coding so much and I want to continue with webOS 2! Thank’s for being with me and have a nice day!
Such a messs!! Devlog #4 - Artemis App! Your opinion Before we begin, I’d like to know your opinion about the images layout. The 3 first screenshoots below shows different layouts. Screenshoot 1 : This is the first version I coded. But it covers the close button and most importantly - the scroll bar which is so unpractical Screenshoot 2 : this is how I had imagined it when this idea came to my mind. It also covers the close button and the scroll Screenshoot 3 : last version I’ve coded. I did not planned this layout but I think it looks great and is the most practical! Unfortunately the 3rd option covers the move button but by adding some z-index everything works well, and looks better than when adding z-index to the scroll bar bc the rocket/astronaut is either covered by the scroll or too far away. Please let me know what you think! Challange 1 Adjusting these images was such a challange. But I wrote it all down from memory! I added the position: fixed so it can exceed the window and adjusted the position several times! The biggest problem, as I said, was that they were covering the scroll bar and close button and then the move button as well. But I found the solution! I added the appropriate z-index to each of the elements and it worked!! (I’m really surprised tbh it was so easy and didn’t took me that long to figure out! I’m getting good at coding ) So finally, what’s new? I added the Artemis Mission App !! It’s not an app just about the artemis II. It’s an app where you can learn about the whole mission, the SLS rocket, the Orion capsule and get to know some fun-facts! Doing the research on all of these thing took me sooo much time! And then writing it down, deciding what is worth the attention and so on… it was kinda exhausting! But I’m so happy with the (not yet) final results! Yeah, not yet meaning… Challange 2 On the last screenshoot you can see the biggest mess on this app! Few photos totally without rhyme or reason! I was coding with image slider tutorial. Everything was going smoothly, till the creator of the tutorial said that now we shall see our photo aaaand yup I did not see anything. I was checking several times if I writed down everything the right way, I was looking for solution and eventually I created new repository and copied the whole code which he pasted in the comments (just to clarify - in this project I do NOT copied any code, I writed everything by myself). In this repository everything worked. When I saw the final results in the repository I had also noticed that it’s not really what I wanted to have in the Artemis App. Bc the code did not worked (probably because it already was in several divs and not like raw or sth) and bc it didn’t align with my vision I decided to just delete this whole code. I’ve already found another tutorial, with better design so I will keep you updated on how it’ll turn out! What’s next? Fixing the mess and finishing the app New app (it’s going to be music app linked to the Artemis II mission!) Thanks for reading and stay tuned!!
My website is all around Artemis now! Devlog #5 - two new apps fully finished! I finished the image slider I’ve been writing about in the previous devlog and added new app! I tought it will take me so much longer, but here I am! But let’s start from the outset: Finished Artemis Mission App I’ve finally finished it! In my previous devlog I said that I found another tutorial on how to make image slider, and it was a bullseye!! After I adjusted it a little so it fits my images it’s working perfectly!! And looking so so good! I’m so happy!! New app - Artemis II Playlist So, I really wanted to implement some music into my website. But because it’s a SPACECRAFT operating system I knew it cannot be just basic music app. While working on the Artemis App I came up with this amazing idea - I’m pretty sure that you heard about the wake up songs from Artemis II Mission. I decided to do an app with that playlist! Since it’s just embeeding the code from spotify it wasn’t such a big problem. I think that the hardest thing here was to make the app icon, which is the moon listening to music on headphones!! I really like this idea, let me know what you think about it What’s next? I want to add some images on the borders like in the Artemis App. And then another app!! Thanks for reading and have a nice day!
Darkmode!! Devlog 6 - dark mode and more photos on the borders What’s new? Darkmode and settings I’m so happpyyyy I’ve managed today to create new very cool app - settings - where you can switch between lightmode and darkmode! At the beginning I tought that it would be a nightmaree but turns out, when I really focused, it was a smooth process and I really enjoyed it! But one thing is not working.. not so important but when I’m adding this app to the rising on top function everything crashes and I can’t open any app. I’ll try to fix it later. There ofcourse will be more functions soon in this app so stay tuned! More images on borders I added more photos on the borders! ISS NASA astronaut working on Hubble The Golden Record spinning on the Artemis II playlist app (I think it’s a really cool idea) Adjusting the astronaut was really hard, and the background did not removed well but I’ve managed to add some blur and eventually it looks okayy I’ve also changed the position of Artemis astronaut - I wanted to put it on the left but unfortunatelly, it cannot be here because then it covers the scroll bar. Adjusting the rotation helped a little and it looks way better! What’s next? I think I’m gonna ship soon! I’ve already writed the README and I just need to check everything. But don’t worry, it’s not the end of SpacecraftOS! I already have a lot of ideas
One more devlog! Devlog 7 - title and start animation I wanted to ship already but lo and behold, I’ve added some changes! So, what’s new? I finally designed the header of my site! now it says SpacecraftOS and displays a rocket icon! Updated Artemis App - I’ve added some information about Artemis IV and V WELCOMING ANIMATIONNN!!!!!! - I’m very happy because I’ve managed to add a start animation, like welcoming screen or sth like this, idk how is it called, but now, when you enter my page, you can see an animation with my baner! It’s in the video below What’s next? I’ve also finished writing the README so now I will just read everything top to bottom again and SHIP!!!
15 min can’t be lost! Devlog 8 - fixed all typos and changed the start text So, what I changed in these 15 min? I changed all the typos in artemis app FORTUNATELY I checked the start window, and changed the description because it was really outdated! And therefore, I needed to change the image in my readme. I also adjusted it to width: 100%; height: auto because when I opened readme on my phone it was really stretched! Below I leave a screenshoot of the app I’ve been adjusting, with the artemis II crew because they’ve been my motivation through this whole process! I can’t wait to work more on SpacecraftOS!! Wish me luck on shipping ^^
New app!! Devlog #9 Voyager Photos App Guys I finished rating other projects and I have to admit that my devlogs are way too long So today let’s keep it brief: Voyager Photos App!!! I’m gonna create another app just about voyager, but this is some sort of gallery of (only) 11 photos from these spacecrafts. I made cool infinite images slider with tutorial - it went really smoothly, and then I’ve been trying to make an information window appear when you place your cursor on the “?”. I don’t feel so comfortable in js yet but I wanted to do it all by myself so I went with css, and I really like the final results! You can see it in the video below What’s next? Full Voyager App, I hope! See you in the next one, thanks for reading!!
new app and new ideas! Devlog 10 - Full Voyager App Full Voyager App I finished coding new app!! It’s about Voyager mission, so basically Voyager 1 and Voyager 2. Research took me so long again!! But I’m happy with the results New idea So since I started this project I’ve been thinking about how do I arrange the blank space next to the rating images. Today, I added a brief text that’s describing the photo. Just a little, but now you’ll know what the images shows! You can see it on the 1st screenshoot below. Both screenshots are from the new app What’s next? I would love to make new function in the settings so you can change the background photo!! Wish me luck Thanks for reading and have a nice day!!
More colors!!! Devlog #11 - 3 new themes!! I made new themes!!!!!!! I’m so happy to introduce you to my 3 colorful themes: Moon Theme - “Earth set” photo from Artemis II mission, blue-colored Aurora Theme - Earth’s Aurora seen from the ISS, green-colored Sunset Theme - “Cotton Candy Skies”, Falcon 9 rocket, pink-colored No gatekeeping, I’ve been searching for tutorial like this for so long so here’s the link for the tutorial . Hope it will be helpful! I need a feedback!! I’m not sure about the colors tho, please let me know know if everything is readable and if you perhaps would change anything Thanks for reading, hope you like it!
Time-consuming animation and problemss Devlog 12 - Opportunity App and animation Problems!!! I messed up positions! 😭😭 I was adjusting this rover so it’s driving perfectly around the Mars for hourss and then I decided to check it with the scroll bar, and bc the rover had position: absolute it went down with the scroll bar idk how to describe it, like, he flew out of mars lol Solutions!!! I’ve watched quick guide on youtube about positions and finally understood everything, because before I was just kindaaa guessing lolll now, having the knowledge, I wrapped my animation into <div style="position: relative; border: pink [...]"> , added position: absolute to my images and adjusted everything completely from scratch!! It took me so long but I think it was worth it bc it looks nice and is something different from the usual. One more change I added border photo to Voyager App. Adjusting also took me a while but the window is way more interesting now! What’s next? Finishing Opportunity App!! Thanks for reading and have a nice day!!
Feedback and roverS Devlog 13 - Spirit and Opportunity App Feedback So, my project went through ratings: unfortunately, I only got 9.79 multiplier, but I also got an amazing and really valuable feedback!! People pointed out my messy repository, and indeed, it needed to be changed. I created new folders, and now it’s clear and organised! RoverS app? While researching, I noticed that Spirit also deserves to be mentioned! Because it’s the same mission, I decided to add Spirit to Opportunity app, and therefore it’s Rovers/Spirit&Opportunity app now! What’s next? I’m going to focus on improving my app and implementing the advices I received in feedback. I also have a lot of new ideas, so stay tuned!
I code my function!! Devlog 14 - animation and design Function I’m sooooooooo happy because yesterday I’ve managed to create my own function!!! someone suggested to make other tab switching. I was looking for some tutorial, but couldn’t find anything so I asked ai what can I search in youtube to find it. For better or worse, the AI gave me a little guidance on how it works (so I’d understand it in the tutorial, NO code ), I didn’t even fully read this because when I noticed “animation” and “adding classes” I noticed, what I can do! Few days ago I mentioned the theme switch tutorial, that helped me with understanding js!! With this knowledge and the pattern I already had from webOS tutorial, I managed to create opening app window animation!! Additional apps I also added left bar for the additional apps (/apps that are not about spacecrafts). For now just the background, but when I will finish every app I will also add some better animations and just style it better Problem At the very end of the video, you can notice such a huge problem with opening windows and theirs z-index. They open randomly, once under particular app once above, trying to catch this video when it’s smooth and they all go on top was really hard!! Please let me know if you know how to fix it And I had also tried to make my windows resizeable but it unfortunally didn’t worked. I will get back to this later What’s next? To perfect it all and fix bugs! And then maybe some games? Thanks for reading and have a nice day!!!
Such a challange! Devlog 15 - snake game Snake game? Yeah I’m surprised too. But I really wanted to see how it works and just code sth like this (with tutorial ofc). I wanted to make it a little later but I had time today and decided - why not? Okay but, 6 hours?!??!?!?!?!? Yeah 😭 in short, I started with tutorial 1, but it didn’t worked, so I deleted everything and switched to another tutorial, where I realised that I just haven’t connected my snake.js to html lolll but anyways, I even liked tutorial 2 more, I feel like it gave me more styling options, but I needed to quit it because to restart you needed to refresh the site. I tried to just implement some functions, change some things but I’m not that skilled to do this yet. I deleted everything again and came back to tutorial 1 which I eventually completed! That’s not the final results I really want to make the snake head a rocket thats collecting fuel, but there are some problems!! Obviously lol, so I have something like this const snakeColor = "pink"; and I tried to change pink to class, to var but it didn’t worked, and I really don’t know how can I style this snake further, so I can add the rocket and fuels and many other things. That’s why I liked tutorial 2 more! What’s next? I will try to style the snake and this whole window basically!! The video below is in 2x speed!
Random decision (but it was worth it) Devlog #16 - Radio buttons and styles What’s new? Radio buttons In my feedback someone suggested to add radio buttons instead of checkboxes bc then you can just choose one - and today I did it! I also styled it and added cool animation!! Each theme have different stars colors as well - you can check it in the video below. Highscore Somehow, I also added highscore to my snake game! I took a bit of information from tutorial 1 a bit from tutorial 2 and it’s working! Maybe not perfectly, but when you restart, new highscore will be visible, and it’s also in local storage so you can come back after a month and your highscore still will be there!! So, why random? It was a little unexpected bc I was working on the snake game (yeah it’s still not finished) and suddenly I gained a lot of motivation for the radio buttons. I knew I wanted to style them somehow, but I came up with the star design today, and I think it’s perfect!! What yall think about it?? What’s next? Hopefully, I’m going to finish the snake app!
Perfecting Devlog #17 - snake game and organisation What’s new? Snake game As you can see, I’ve styled the snake game a little! I also added start/tutorial/guide window, I added it by creating new window and setting start button as the window close button hihi work smarter not harder. Ai usage I couldn’t figure it out how can I set imgs as the background, food and even for snake, so I asked ai. It’s just creating const with img and adding drawImage instead of fillStyle , and I’m so happy bc now I understand it and know how to implement imgs to js! WHERE’S THE ROCKET? It was too hard!! I really tried, but when I managed to set the rocket as the snake’s head: The rocket was too small It wasn’t rotating It looked so bad and if I wanted to continue with this idea I would need to use ai, so more ai than I would like, so I eventually there’s snake in the snake game. More organisation I created folders in the img folder for each app, bc the img folder was still a little messy. It was such a tedious process, but it’s much clearer now! What’s next? New REALLY COOL APP and snake app icon, which I’m going to edit today while watching F1 sprint
The most spacecraft app on spacecraft os? Devlog #18 - MapApp!!! ALL SPACECRAFTS IN ONE PLACE WHAT AN AMAZING FEATURE!! What’s new? MAAAP AAAPP While doing research on Voyager 1 and 2 I found this “Eyes On The Solar System” from NASA, and noticed that you can embeed it, and that’s what I’ve done! First and foremost, you can check here the position of any spacecraft you want! That’s why I called it Map App. Moreover, that’s a place with a lot of information, and whole spacecraft history! As you can notice, it didn’t take me so long (bc it’s just embeeding), so what I’ve also completed? Fixed some bugs Finished icon for snake game What’s next? NGRST app! (Can someone guess, what does this short stand for? Hint: HST and JWST are already in spacecraftOS!)
More Animatiooons! Devlog #19 Animations on scroll Animations So recently I’ve been working on animations on scroll! Now my Apps about spacecrafts are more interactive and less boring. In the video below you can see all of the scroll animations I’d added till this moment. I feel so confident with css animations, they give me so much fun!! Icon The video is cropped so you can’t see the snake game icon but it finally is here! I added it in the second slide so you guys can see it! Let me know what yall think. I wanted to keep the one real-life, space themed addition (like moon in the music app) so the snake has galaxy eyes. Nancy Grace Roman Space Telescope PROBLEM As you can see I also added an icon for NGRST App but it’s an upcoming mission and I don’t really know what to do with it!! Someone requested it in the feedback, so I really want to implement it but idk, maybe I shall add a countdown? But it will be outdated soon. Many things can be outdated! Thanks for reading and have a nice day!
Reallyyyyyyy time consuming Calendar Devlog #20 - Calendar So I spent this whole day coding this calendar with youtube tutorial. This tutorial was only 17min but it took me 5h Then I needed to fix some typos bc I ofc made a lot and then many many styling!! It’s not the final result! I’m going on a trip tomorow, so I need to take a break from coding. To adjust the width and height, make it all fit to my site, it takes so long, and then I need to change the colors, bc I was just testing with the pinks. Change colors to all of my themes 😭 But it’s okay I got this Disappointing surprise You can see in the video on the second slide that there are 6 columns in the next month instead of 7! I’ve been so happy bc it was working in august, and then I changed months and it was a little disappointing surprise. I’m gonna fix it later! What’s next? When I’ll be back I’m going to work on this app! I didn’t expected it to be that hard Thanks for reading and see you in the next one!
I’m back!! Devlog #21 - new colors Hi everyone! I’m finally back but from hospital… right after my trip I was diagnosed with severe anemia and had to stay in the hospital for four days. I’m feeling good but I’m a little worried bc I lost so much time and I’m leaving on next trip again in few days!! There’s not many things left in SpacecraftOS tho, so let’s summarise it What’s new? In the video below you can see that I adjusted the calendar colors for every theme. It was such a fun process! I like how it looks now. I also managed to fix the days align and now it works perfectly, always in 7 columns. Hope yall like it! What’s next? I’m going to work on dock animation!! I also need to finish NGRSTApp but I think I’m going to keep it simple bc I don’t have so much time and I want to ship by the time I leave Thanks for reading, take care and have a nice day!!
Which one should I choose? Devlog #22 - Timer So I just made a timer with tutorial, but I need your help!! Should I keep miliseconds (slide 2) or keep it simple just with hours/minutes/seconds?? I kinda think that h/m/s looks better but it also seems so boring and less “advanced” than h/m/s/ms!! Also this was such an easy tutorial, fortunately everything went smoothly!! Yall probably know bro code but if someone wants here’s the link What’s next? Dock animation NGRSTApp Thanks for reading and I’m waiting for your comments!
happy and frustrated Devlog 23 - Dock animation, scrollbar and NGRSTApp Dock Animation I really like this animation!! It’s so smooth and cool and I’m so happy bc I learned new thing with the tutorial!! It came out exactly as I wanted NGRSTApp It’s finally finished!! I managed to add some things regardless it’s such a fresh mission. Hope yall like it! Scrollbar Yeah so here’s the frustrating part. I coded really pretty, unique and practical scrollbar in the css but I used webkit and it worked on microsoft but on chrome - not anymore! You can’t even see the scrollbar! I don’t have time anymore - I’m leaving in few hours, I commented it out and I hope I’ll fix it one day Additional changes Rewrited README Added some events to the calendar What’s next? I’m gonna ship now!! Wish me luck and thank you all for your support throughout the whole voyage!!
Scrollbar is working!! Devlog 24 - scrollbar bug Guys I think that this bug was (is) my personal fault, bc the scroll bar is visible in every single browser different than my current one lol I probably have some sort of extension that adds none !important or sth to my code’s head and it ruins everything, but it shall work on every other device, on every other browser. Tbh I also used ai to fix it but it didn’t really helped bc it was my internal problem. So happy that it’s working, just wanted to clarify and log these 16min!! If any problems with scrollbar occur, please use keyboard arrows to scroll through windows Again, thanks for reading and have a nice day!
New spacecraft App! Devlog 25 - SpaceShuttleApp Hi everyone!! I’m back with a whole new app and smoother system 1. Smoother system So I’ve got a lot feedback that spacecraftOS is working slow and someone has recommended to me adding se vite - that’s what i’ve done and now it works much better! 2. Space Shuttle App I’ve decided to add another spacecraft app, they’re always fun to make and it’s kinda easyyy process tbh so everything was smooth. On this app I described a little every space shuttle NASA has ever created. Hope you’ll enjoy it!! Thanks for reading and have a nice day!
Ships:
I made an operating system based around spacecrafts! My website provides few apps: two about telescopes where you can learn about them and rate few photos they took from 1 to 5 stars, and one with notes, where you can store your ideas if some spacecrafts inspire you! Besides apps, on the top bar you will find two guides on how to catch the ISS and starlink satellites. In the ISS window you can find short youtube video - it’s about Polish astronaut, Sławosz Uznański, eating pierogi (delicious polish dish) on the ISS! I really recommend watching this The apps were the biggest challange for me. That’s why I had spent so many hours on this project. Firts, I couldn’t even open the first app. It was hard to even make the selected function work. Then, I managed to make this one app working! But, it wasn’t the right solution. When I added new apps, they were opening the 1st app window, and not theirs. I spent a lot hours trying to fix it, I tried a lot of possible solutions and finally, I had asked ai for help. That’s the only ai usage in this project. Eventually, everything works! I’m so happy because I’ve almost gave up. I really like the outcome, and I look forward for the future changes! I came up with a lot of ideas and I realised them the exact way I wanted! My favourite parts are def the Sławosz eating pierogi video and the photo ranking which I find so fun to watch and rate. Hope you’ll enjoy this as much as I do!
I made an Operating System with spacecraft theme! New features Artemis App Artemis II playlist (app) Settings and darkmode Design - few images on the windows borders Start animation with spacecraftOS baner Challenges Compared to my previous ship, this time all functions and styling went smoothly, but the things that took the most time were adjusting photos and writing, researching about Artemis Mission! I tought that making the darkmode switch would be really hard, but when I focused it was really easy and rewarding process! Proud of I really like the starting animation and the images on the borders. I started coding one month ago so doing something cool with the css all by yourself is so fulfilling! I don’t understand js that much yet, so I had also watched few tutorials. The webOS 1 tutorial was really hard for me, so now I’m really happy when the things I wanted to add to my website turns out well! So I’m also really proud of the images slider in the Artemis App, the spotify playlist embedded and the dark/light mode switcher in the settings! Even tho they were made with tutorials I still needed to adjust it so it fits my site, and I’m so happy that I understand it to the point that I could do this all just by myself Notes Don’t forget to check the README, remember to double click to open apps and just enjoy the vojage!!
I made a web Operating System with spacecraft theme! Creating this site was so fun and fulfilling, esp. when a lot of things turned out exactly as I wanted!! I started coding over a month ago, and I’m so happy that I managed to create something like this. I really enjoyed it, especially the css part. SpacecraftOS This OS provides basic app like timer, calendar, maps, gallery, but everything have implemented some spacecraft additions. For example, the map app won’t show you the route to the nearest grocery store, but it will show you where your fav spacecraft is right now. The calendar app will show you astronauts birthdays and the gallery app provides photos humans sent to space on voyager. All these apps you will find on the left and on the bottom there are apps, where you’ll learn about various spacecrafts, and in some of these apps, you can also rate some photos the spacecrafts took! Notes Please start from choosing the most suitable for you theme in the settings (top right corner) Try on laptop/computer for better experience Snake game is only playable with keyboard Remember to double click on apps to open and please leave a toughtful review. Hope you’ll enjoy it!!...
|
1793083935.4828467
|
1793170335.4828467
|
|
59861
|
Cirkuit by @spectra | Stardance
|
spectra
|
1
|
127.4
|
1802
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T22:09:45Z", "hours": 95.0, "multiplier": 18.99, "payout": 1802, "blessing": "neutral", "text": "Hi! I’m really happy to introduce you to my biggest project so far. It’s called Cirkuit, and it’s a logic circuit sandbox simulator… but with pixel art! That means you can basically build anything using just pixels. Why pixels? You may ask. Well, many logic simulators already exist, but the issue is that most of them aren’t very accessible to the average user. That’s why I wanted Cirkuit to be as easy to use as possible. I’m already quite familiar with TypeScript and React, which I used for this project. So the most difficult part was actually figuring out how to implement features without having 100 nested loops :D I had a hard time figuring out how to build the core engine (obviously), as well as the annotation system. I’m quite proud of how it looks and how well it works. This project was a perfect opportunity for me to improve my design skills. I worked hard to reduce friction between the interface and the user (aka you, dear shipwriters). One piece of advice: try it on a computer with a mouse. Phones and trackpads are supported, but it’s not the best experience. Hope you’ll like this project!", "repo": "https://github.com/NaFo44/Cirkuit", "demo": "https://nafo44.github.io/Cirkuit/"}]...
|
[{"post_id": 83044, "ts": "202 [{"post_id": 83044, "ts": "2026-10-26T17:30:29Z", "hours": 4.7797, "text": "Devlog 42 : Integrated circuits (almost done!) It wasn’t easy! The UX part is actually really challenging. I had to rely on AI more than usual because Stardance is ending really soon, and I’m honestly a bit scared of not having enough time to ship :/ I’ll still try to polish the UI as much as possible! The screenshot below shows what it currently looks like. I added a new section for modules in the sidebar, where you can see all the modules you’ve created, edit them, or create new ones. When creating a new module, you can set its name, preview the footprint, add or remove inputs/outputs, and place them directly on the footprint. It’s almost ready tho! I’m just polishing the UX now. Next steps: finish this feature, polish the UI/UX, ship!"}, {"post_id": 82831, "ts": "2026-10-25T23:44:06Z", "hours": 2.5764, "text": "Devlog 41 : Integrated Circuits I’m working on the UI! The picture below shows what it currently looks like. I’m still not sure about the colors, so they might change. I still have the hardest part to figure out: How will users create and modify a module, UX-wise? Will it have its own sub-editor? How will users assign pins, name them, and define the module’s size and name? As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: Keep working on the UI, polish the UX/UI, and ship!"}, {"post_id": 82612, "ts": "2026-10-25T12:50:30Z", "hours": 2.0128, "text": "Devlog #40 : Integrated circuits I’m (again) still working on this feature! Since my last devlog, I’ve updated the project document format to serialize the new modules. And that’s basically it! Next step: integrate them into the UI, polish the UX, and ship!"}, {"post_id": 82446, "ts": "2026-10-24T20:32:14Z", "hours": 3.4561, "text": "Devlog #39 : Integrated circuits (again) I’m still working on this feature! I’m not at the frontend part yet, still adapting the engine. More details if you’re curious: A module has a definition that includes its name, public pins, and internal circuit. It can be used multiple times (it’s called an instance in the code). And all modules are listed in a catalog (that I’ll probably integrate in the frontend later). Instances can be selected, moved, copied and pasted, across the layers… The picture bellow shows how this feature could be used. It will make things much easier if you want to build more complex circuits like an 8 bit adder. You’ll just have to stack 8x 1-bit full adder modules! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the backend side, then integrate everything into the frontend, polish the UI, and ship!"}, {"post_id": 81890, "ts": "2026-10-22T21:14:45Z", "hours": 1.7631, "text": "Devlog #38 : Integrated circuits Some of you have requested this, so I’m working on it! It’s not out yet, as it’s a pretty big feature. Integrated circuits will basically be custom components (most likely rectangles) with multiple inputs and outputs, all defined by the user. It’s literally a footprint, kinda like what you’d find in KiCad. I’ve started modifying the engine’s internals so it can handle these new types of connections (alongside the classic 1-pixel components). The real challenge here is keeping everything simple on the UX side, even though this feature targets more advanced users. The image below only shows what it might look like, this will probably change over time. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: keep working on this feature, polish the UI/UX, ship it, and sadly… the end of stardance :("}, {"post_id": 80656, "ts": "2026-10-18T12:34:55Z", "hours": 0.6414, "text": "Devlog #37 : Probe tool is out! You can now inspect your circuits with this new tool. It highlights equipotential wires. I also added small circles to every connected ports. Next steps: UI polish, and maybe a “challenge” or “community circuits” tab."}, {"post_id": 80469, "ts": "2026-10-17T19:03:13Z", "hours": 1.3664, "text": "Devlog #36 : Probe tool and 4-bit calculator. While I was working on improving my 7-segment display, I had quite a hard time simplifying the circuit. Then I thought it could be really useful to have a tool that shows all the equipotential wires. So I’m currently working on it! It’s working, but I still have to improve its style before publishing it. Aside from that, I actually spent way too many hours improving the 4-bit calculator. And it’s now finished! It’s available in the demo circuit if you want to try it. I’ll see if I can build a keyboard later so users don’t have to enter numbers in binary. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the Probe tool, polish the UI, add a “challenge” tab."}, {"post_id": 79615, "ts": "2026-10-14T18:37:38Z", "hours": 1.4939, "text": "Devlog #35 : UI cleanup and (another) demo circuit The sidebar was getting a bit too crowded, so I added a small button to show/hide the more advanced components. The idea is to make things a little less overwhelming for new users, instead of throwing everything at them right away. I also worked on a 4-bit adder and wired it up to my 7-segment decoder! I’m going to try making it a 4-bit decoder instead of a 3-bit one, but things are going to get a lot more complicated (more numbers = more logic gates). One small issue with the adder for now: the most significant bit is on the right, so the input is basically reversed. I’ll fix that soon. In the meantime, you can already try it out in the live demo project! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: more UI/UX improvements, adding challenges, and continuing to waste way too much of my time messing around with circuits xd"}, {"post_id": 79427, "ts": "2026-10-13T22:49:03Z", "hours": 0.4678, "text": "Devlog #34 : New component: Memory! This is one step up in difficulty! It has two inputs: a clock input (at the top) and a signal input (on the left). The output signal is provided on the right. This component can store a 1-bit value, which is updated on every rising edge of the clock signal. You can basically build anything with the component available: calculator, more advanced display (e.g. a 7-segment decoder that can go from 0 to 9). I added a 3-bit binary counter that I wired up to my 7-segment decoder! (demo bellow). It’s also included in the demo project file. Next steps: cleanup UI and improve UX (the sidebar is really really crowded right now)"}, {"post_id": 79113, "ts": "2026-10-12T18:33:18Z", "hours": 1.6869, "text": "Devlog #33 : Docs update and 1-bit memory! I added the clock to the docs page, along with some new tests for it. I’m also almost done with the 1-bit memory (basically a simplified D flip-flop). I’ll share it in the next devlog! Also, if you like this project, you can leave a star on the project’s GitHub page if you wish! Next steps: finish the 1-bit memory and clean up the UI/UX"}, {"post_id": 77284, "ts": "2026-10-06T12:57:02Z", "hours": 1.4464, "text": "Devlog #32 : New component: CLOCK (finally) This one was relatively easy to implement! The tick system was already there, but it was only triggered by user interactions. Now, your circuits run at 10 ticks/s, and the clock has a constant 1 Hz square signal (the recording below is choppy, but yes it is indeed a 1 Hz periodic signal) This component only has one output. I thought it would make building complex circuits easier if the other sides were isolated. Next steps: 1-bit memory, and then a lot of UX/UI improvements!"}, {"post_id": 76710, "ts": "2026-10-04T11:58:04Z", "hours": 1.9281, "text": "Devlog #31 : UI improvement! I replaced the old “main shortcuts” section in the sidebar with simple links. It frees up some space, makes the interface feel cleaner, and should make it much easier to add a proper “Challenge” tab later. Next steps: add a clock and a 1-bit memory."}, {"post_id": 76242, "ts": "2026-10-02T20:30:28Z", "hours": 2.1839, "text": "Devlog #30 : Component documentation! I’ve added a new page in the sidebar that shows a description and preview image for every component. A few people asked for this in the reviews of my first ship, so it felt like a good addition. Also, if you have any idea of how I could integrate the new more advanced features without overwhelming new users, I’m all ears! The sidebar is starting to get pretty crowded, so I need to find a cleaner way to organize everything and keep navigation smooth. Also, huge thanks to the Stardance staff for awarding this project Superstar ❤️ Next steps: code cleanup, UX improvements, 1-bit memory support, and FINALLY the clock."}, {"post_id": 75958, "ts": "2026-10-01T18:50:05Z", "hours": 4.13, "text": "Devlog #29 : New feature: Multi-layer! You can now build circuits across two layers! I added vias, so you can connect the two layers together (obviously). When you place a via, it’s added on both layers, it basically works like a wire. I also finished the 7-segment decoder: 3bit input, supporting only 0-4 for now. The other values are just don’t-cares. Next steps: polish the code and UI, then add some documentation."}, {"post_id": 75590, "ts": "2026-09-30T14:38:26Z", "hours": 2.4681, "text": "Devlog #28 : Multi-layer (and thank you!!) First of all, thank you so much for all the support on this project! The Stardancers who reviewed my first ship got some really great advices. I’ll be following up on a lot of it. So, I’m planning to add: a simple component documentation some challenges (e.g. 7-segment decoder, XOR gate) more advanced features (clock, 1-bit memory) and what I’m working on right now: a second layer! (currently, wires can’t cross each other, which becomes a real issue with more complex circuits) and, if I have enough time, a place where people can share circuit snippets and showcase their projects! The real challenge will be integrating all of this while keeping the UI clean and the UX intuitive. The screenshot below shows what the circuit viewport could look like with the second layer."}, {"post_id": 74661, "ts": "2026-09-27T21:50:30Z", "hours": 1.2256, "text": "Devlog #27 : Some optimization, code cleanup, and brand new readme! That’s the last devlog for this project before I ship!"}, {"post_id": 74620, "ts": "2026-09-27T19:48:58Z", "hours": 2.7119, "text": "Devlog #26 : I’ve done many small improvements, such as: ability to move annotations undo/redo buttons custom favicon Next step: SHIP!"}, {"post_id": 74207, "ts": "2026-09-26T22:21:43Z", "hours": 2.4531, "text": "Devlog #25 : UI/UX improvements! I improved the component selection outline. Now the outline is around the whole selected group of pixels, instead of around each individual pixel. You can also now delete selected components by pressing Del on your keyboard. And I added a little preview showing the pixel currently targeted by the cursor. Next steps: keep working on the UI/UX, and ship!"}, {"post_id": 74006, "ts": "2026-09-26T14:48:02Z", "hours": 2.2353, "text": "Devlog #24 : New feature (kinda): the camera position and zoom are now stored in the project file, and loaded when you open the project. That means you can setup any point of view in your project, and the viewport will be right where you left it when you open it again! I also fixed a bunch of UI inconsistencies: the hover label position is now responsive to the workspace sidebar (before, it was getting hidden behind it) unified border colors fixed the phone workspace responsiveness made the sidebar on the right a little bit smaller I also continued working on the 7-segment display, but ran into some issues since wires can’t cross each other. So I thought about having circuits on two different layers. What do you think about this? Next steps: I’ll probably polish the UX a little bit more, and then ship the project. But I’m planning to keep working on it!"}, {"post_id": 73755, "ts": "2026-09-25T21:20:35Z", "hours": 5.3378, "text": "Devlog #23 : New feature: Undo/Redo! You can now undo and redo things you’ve done in the editor. This works with both components and annotations. I had to implement a project history system. Basically, every time an action modifies the project, the previous project state is added to the past history stack. When you undo, the latest state from past becomes the current state, while the previous current state is moved to the future stack. When you redo, the next state from future becomes the current state and the previous current state is moved back to past. Yeah it’s messy 😂 I’m also still working on the 7-segment decoder. I switched to a 3-bit one, I’ll probably include it in the demo. Next steps: mostly UI and code improvements, and then I’ll probably ship it. I’ll keep working on it!"}, {"post_id": 73252, "ts": "2026-09-24T17:56:14Z", "hours": 4.5872, "text": "Devlog #22 : New feature: selection and copy/paste! You just have to press “S” and drag your mouse/pad while holding the left click. You can then copy, paste, or move the selected pixels around. Probably the most difficult feature I’ve worked on so far. I had to get some help from ChatGPT :’) I think this will be my last devlog before shipping, since one of my other projects has been pending for 18 days now, so yeah… I’ll still keep working on this project though!"}, {"post_id": 72869, "ts": "2026-09-23T21:59:41Z", "hours": 4.2722, "text": "Devlog #21 : Some UI/UX improvements and started working on selection! I’m currently working on the selection system. It works like this: Press S, then while holding it, drag the selection area with the left click. Once selected, you can copy, paste or move the selected block of pixels. It’s not committed yet! It still requires some work. Next steps: finish the selection feature, then add the clock. I also want to improve the UX as much as possible."}, {"post_id": 72417, "ts": "2026-09-22T21:44:45Z", "hours": 3.6344, "text": "Devlog #20 : demo project and UI/UX update! I added a demo project with a basic light/switch circuit, an OR and XOR gate, and a few annotations. I also (and mostly) removed the old “Quick start” section. It was becoming kinda useless since pretty much everything was already covered by the demo project. So I replaced it with a little intro to the project, along with a table of the shortcuts. I also added a little decoration to the bottom-left corner of the sidebar. I think it looks pretty dope! Next steps: copy/paste and selection, THEN add a clock."}, {"post_id": 71977, "ts": "2026-09-21T21:47:46Z", "hours": 2.3336, "text": "Devlog #19 : A little code cleanup! I refactored the App.tsx file because it was handling too many different things. Now each hook has its own dedicated file. Small refactor, but definitely a needed one! Next steps: add a demo project, improve the UI/UX and laptop pad support, add copy/paste and selection, and finally add a clock (eventually, at this point 😂)"}, {"post_id": 71454, "ts": "2026-09-20T21:12:46Z", "hours": 7.6194, "text": "Devlog #18 : You can save your work now! There are now two buttons in the bottom-left corner: Open and Save. Your projects are downloaded as .cirkuit files. This part was actually quite challenging, mostly because of the file format validation and all the tests around it. Next steps: clean up the code, cleanup the UI (it feels a bit messy right now), add a demo project, add copy/paste and selection, and add a clock"}, {"post_id": 70868, "ts": "2026-09-19T21:55:45Z", "hours": 4.9169, "text": "Devlog #17 : New feature: Annotations! You can now add labels, lines and rectangles to your circuits! I developed this feature so I can better explain what’s going on in the demo project when I’ll ship this project. But you can also use it to explain your craziest circuits! Next step: upload/download projects."}, {"post_id": 70240, "ts": "2026-09-18T19:31:51Z", "hours": 4.5228, "text": "Devlog #16 : Annotation feature (WIP) It’s not finished yet, but I’m currently working on a new annotation feature. Why? Because I’ll need it to explain the circuits in the demo! I’m adding this before the project download/upload system, because otherwise I’d have to refactor quite a bit of the system later. Also, I’m starting to build a 4-bit 7-segment decoder in Cirkuit! (I started with the two easier segments lmao) Next steps: continue working on the annotation system, then implement project download/upload."}, {"post_id": 69732, "ts": "2026-09-17T17:45:12Z", "hours": 4.5497, "text": "Devlog #15 : I added a little guide! The goal of this small guide is to explain a few things that might not be obvious to new users. You can close and reopen it whenever you want, so it doesn’t get in the way while you’re playing. It’s still available on the GitHub page if you want to give it a try! Next step: add a minimal circuit loading system (so I can add a default demo circuit), and THEN I’ll add the clock 😂😭"}, {"post_id": 69345, "ts": "2026-09-16T21:00:55Z", "hours": 4.0622, "text": "Devlog #14 : New component: AND gate! Now the two main gates are available (NOT & AND), so you can basically build anything with them! In the screenshot below, I built a working XOR logic gate, both in a large and a condensed version. A few changes since last time, apart from the new component: The old NOT gate wasn’t working properly because the circuit actually handles 3 states (low, floating, high), while the NOT component only supported low and high. So now, “floating” is considered as “low”. Also, there’s no longer real-time simulation, sadly. I had some issues with the logic gates: if you built them the wrong way, it could crash the entire webpage. So now you have to click on “Run simulation” to see the magic happen. It’s a bit less cool than real-time simulation, but at least it doesn’t nuke the whole page anymore lol. Next steps: UI/UX improvements, clock, and 1-bit memory later on"}, {"post_id": 68867, "ts": "2026-09-15T22:24:51Z", "hours": 5.5678, "text": "Devlog #13 : New component: NOT gate! This component returns the opposite signal you give it: low becomes high, high becomes low. I also improved the UI/UX. There’s now a new label in the bottom-left corner of the page that shows which component you’re hovering over with your mouse, and what its current state is. For example: “Wire | Low”, “Switch | Open”. I also fixed the pixel rendering, because before there were some really thin lines between them. And now the sidebar is responsive! Next steps: code cleanup, AND gate, clock"}, {"post_id": 68303, "ts": "2026-09-14T21:50:03Z", "hours": 2.3831, "text": "Devlog #12 : Wire states are now visually apparent! In the example below, on the first circuit, the first segment is high because it is powered by the source, while the second segment (connected to the lamp) is floating because the switch is open. I’ve also fixed a whole bunch of UI issues. You can try out this project on my GitHub page! Next step (for real this time): adding a NOT gate (the clock will come later)"}, {"post_id": 67690, "ts": "2026-09-13T21:26:19Z", "hours": 0.8703, "text": "Devlog #11 : I did some UI improvements, but before I commit, I’d like to have your opinion for the light component; which glow do you prefere?"}, {"post_id": 67626, "ts": "2026-09-13T19:32:41Z", "hours": 0.7378, "text": "Devlog #10: I added some tooltips so it’s easier to understand for you guys! Next steps: Start writting an actual documentation, add new components"}, {"post_id": 67547, "ts": "2026-09-13T17:58:10Z", "hours": 4.0528, "text": "Devlog #9 : New component: Switch This new component come with a new “simulation” mode, where you can interact with the components. Next step: add small tooltips to the sidebar elements, add new components (clock, memory…) It’s deployed so you can try it (see the project page)! I’d love to get some feedbacks."}, {"post_id": 67325, "ts": "2026-09-13T12:07:15Z", "hours": 0.7281, "text": "Devlog #8 : UI update! Changes: checkerboard background texture instead of the old grid custom selector on the component palette pixel art icons Next step: new components (switch, clock, memory…)"}, {"post_id": 67277, "ts": "2026-09-13T10:52:18Z", "hours": 2.2756, "text": "Devlog #7 : Now power and light can be connected from all sides! Also, since the old arrows are no longer necessary (at least for these components), I improved the UX by displaying the actual component icon instead. The icons on the circuit are also hidden by default now, and only appear when you hover over them. Oh and there’s an eraser now. I also deployed the website: nafo44.github.io/Cirkuit/ Next step: add new components (switch, clock, logic gates, memory)"}, {"post_id": 66878, "ts": "2026-09-12T20:32:38Z", "hours": 3.0808, "text": "Devlog #6: I wired up the simulation engine to the UI! It’s working really well, even tho there’s only 3 components right now (source, wire, light). I added arrows so you can easily rotate the components. I want this project to be really intuitive, so if you guys have some ideas to simplify this, I’m all ears! Next step: let a source and light to power/be powered through all sides, add new components (switch, clock, memory)"}, {"post_id": 66549, "ts": "2026-09-12T12:01:35Z", "hours": 4.5847, "text": "Devlog #5 : Now the component placement UI side is wired to our circuit layout! It probably don’t make much sens for you right now. Next step: modify visually the component grid according to the simulation."}, {"post_id": 65649, "ts": "2026-09-10T22:37:33Z", "hours": 5.8197, "text": "Devlog #4: The other half of the engine is done! It can now compute components state (low, high, floating, conflict) based on the connections between each other. Next step: wiring the engine to the UI."}, {"post_id": 65057, "ts": "2026-09-09T21:57:21Z", "hours": 6.5794, "text": "Devlog #3: I’ve finished half of the engine of my website, made to let you create circuits using pixel art. It wasn’t easy! I came up with a simplified netlist algorithm, to represent how a component (pixel) is oriented, how many are wired, to what, and through which side of the pixel. Components states aren’t handled yet, but that’s what I’m going to work on next."}, {"post_id": 64452, "ts": "2026-09-08T20:55:25Z", "hours": 2.1144, "text": "Devlog #2: I improved the UI, added mouse wheel support (to zoom and move the map). Now it’s time to work on the actual engine."}, {"post_id": 64381, "ts": "2026-09-08T18:22:49Z", "hours": 1.6267, "text": "Devlog #1: Hi! I just started making a website where you will be able to create circuits… with pixel art! The idea is to add different pixels: wire (gray), power (green), light (yellow), logic gates (AND, OR, …), memory (simple true/false state storage). I want to keep this as simple as possible to use."}]...
|
Title: Cirkuit by @spectra | Stardance
Devlogs:
D Title: Cirkuit by @spectra | Stardance
Devlogs:
Devlog #1: Hi! I just started making a website where you will be able to create circuits… with pixel art! The idea is to add different pixels: wire (gray), power (green), light (yellow), logic gates (AND, OR, …), memory (simple true/false state storage). I want to keep this as simple as possible to use.
Devlog #2: I improved the UI, added mouse wheel support (to zoom and move the map). Now it’s time to work on the actual engine.
Devlog #3: I’ve finished half of the engine of my website, made to let you create circuits using pixel art. It wasn’t easy! I came up with a simplified netlist algorithm, to represent how a component (pixel) is oriented, how many are wired, to what, and through which side of the pixel. Components states aren’t handled yet, but that’s what I’m going to work on next.
Devlog #4: The other half of the engine is done! It can now compute components state (low, high, floating, conflict) based on the connections between each other. Next step: wiring the engine to the UI.
Devlog #5 : Now the component placement UI side is wired to our circuit layout! It probably don’t make much sens for you right now. Next step: modify visually the component grid according to the simulation.
Devlog #6: I wired up the simulation engine to the UI! It’s working really well, even tho there’s only 3 components right now (source, wire, light). I added arrows so you can easily rotate the components. I want this project to be really intuitive, so if you guys have some ideas to simplify this, I’m all ears! Next step: let a source and light to power/be powered through all sides, add new components (switch, clock, memory)
Devlog #7 : Now power and light can be connected from all sides! Also, since the old arrows are no longer necessary (at least for these components), I improved the UX by displaying the actual component icon instead. The icons on the circuit are also hidden by default now, and only appear when you hover over them. Oh and there’s an eraser now. I also deployed the website: nafo44.github.io/Cirkuit/ Next step: add new components (switch, clock, logic gates, memory)
Devlog #8 : UI update! Changes: checkerboard background texture instead of the old grid custom selector on the component palette pixel art icons Next step: new components (switch, clock, memory…)
Devlog #9 : New component: Switch This new component come with a new “simulation” mode, where you can interact with the components. Next step: add small tooltips to the sidebar elements, add new components (clock, memory…) It’s deployed so you can try it (see the project page)! I’d love to get some feedbacks.
Devlog #10: I added some tooltips so it’s easier to understand for you guys! Next steps: Start writting an actual documentation, add new components
Devlog #11 : I did some UI improvements, but before I commit, I’d like to have your opinion for the light component; which glow do you prefere?
Devlog #12 : Wire states are now visually apparent! In the example below, on the first circuit, the first segment is high because it is powered by the source, while the second segment (connected to the lamp) is floating because the switch is open. I’ve also fixed a whole bunch of UI issues. You can try out this project on my GitHub page! Next step (for real this time): adding a NOT gate (the clock will come later)
Devlog #13 : New component: NOT gate! This component returns the opposite signal you give it: low becomes high, high becomes low. I also improved the UI/UX. There’s now a new label in the bottom-left corner of the page that shows which component you’re hovering over with your mouse, and what its current state is. For example: “Wire | Low”, “Switch | Open”. I also fixed the pixel rendering, because before there were some really thin lines between them. And now the sidebar is responsive! Next steps: code cleanup, AND gate, clock
Devlog #14 : New component: AND gate! Now the two main gates are available (NOT & AND), so you can basically build anything with them! In the screenshot below, I built a working XOR logic gate, both in a large and a condensed version. A few changes since last time, apart from the new component: The old NOT gate wasn’t working properly because the circuit actually handles 3 states (low, floating, high), while the NOT component only supported low and high. So now, “floating” is considered as “low”. Also, there’s no longer real-time simulation, sadly. I had some issues with the logic gates: if you built them the wrong way, it could crash the entire webpage. So now you have to click on “Run simulation” to see the magic happen. It’s a bit less cool than real-time simulation, but at least it doesn’t nuke the whole page anymore lol. Next steps: UI/UX improvements, clock, and 1-bit memory later on
Devlog #15 : I added a little guide! The goal of this small guide is to explain a few things that might not be obvious to new users. You can close and reopen it whenever you want, so it doesn’t get in the way while you’re playing. It’s still available on the GitHub page if you want to give it a try! Next step: add a minimal circuit loading system (so I can add a default demo circuit), and THEN I’ll add the clock 😂😭
Devlog #16 : Annotation feature (WIP) It’s not finished yet, but I’m currently working on a new annotation feature. Why? Because I’ll need it to explain the circuits in the demo! I’m adding this before the project download/upload system, because otherwise I’d have to refactor quite a bit of the system later. Also, I’m starting to build a 4-bit 7-segment decoder in Cirkuit! (I started with the two easier segments lmao) Next steps: continue working on the annotation system, then implement project download/upload.
Devlog #17 : New feature: Annotations! You can now add labels, lines and rectangles to your circuits! I developed this feature so I can better explain what’s going on in the demo project when I’ll ship this project. But you can also use it to explain your craziest circuits! Next step: upload/download projects.
Devlog #18 : You can save your work now! There are now two buttons in the bottom-left corner: Open and Save. Your projects are downloaded as .cirkuit files. This part was actually quite challenging, mostly because of the file format validation and all the tests around it. Next steps: clean up the code, cleanup the UI (it feels a bit messy right now), add a demo project, add copy/paste and selection, and add a clock
Devlog #19 : A little code cleanup! I refactored the App.tsx file because it was handling too many different things. Now each hook has its own dedicated file. Small refactor, but definitely a needed one! Next steps: add a demo project, improve the UI/UX and laptop pad support, add copy/paste and selection, and finally add a clock (eventually, at this point 😂)
Devlog #20 : demo project and UI/UX update! I added a demo project with a basic light/switch circuit, an OR and XOR gate, and a few annotations. I also (and mostly) removed the old “Quick start” section. It was becoming kinda useless since pretty much everything was already covered by the demo project. So I replaced it with a little intro to the project, along with a table of the shortcuts. I also added a little decoration to the bottom-left corner of the sidebar. I think it looks pretty dope! Next steps: copy/paste and selection, THEN add a clock.
Devlog #21 : Some UI/UX improvements and started working on selection! I’m currently working on the selection system. It works like this: Press S, then while holding it, drag the selection area with the left click. Once selected, you can copy, paste or move the selected block of pixels. It’s not committed yet! It still requires some work. Next steps: finish the selection feature, then add the clock. I also want to improve the UX as much as possible.
Devlog #22 : New feature: selection and copy/paste! You just have to press “S” and drag your mouse/pad while holding the left click. You can then copy, paste, or move the selected pixels around. Probably the most difficult feature I’ve worked on so far. I had to get some help from ChatGPT :’) I think this will be my last devlog before shipping, since one of my other projects has been pending for 18 days now, so yeah… I’ll still keep working on this project though!
Devlog #23 : New feature: Undo/Redo! You can now undo and redo things you’ve done in the editor. This works with both components and annotations. I had to implement a project history system. Basically, every time an action modifies the project, the previous project state is added to the past history stack. When you undo, the latest state from past becomes the current state, while the previous current state is moved to the future stack. When you redo, the next state from future becomes the current state and the previous current state is moved back to past. Yeah it’s messy 😂 I’m also still working on the 7-segment decoder. I switched to a 3-bit one, I’ll probably include it in the demo. Next steps: mostly UI and code improvements, and then I’ll probably ship it. I’ll keep working on it!
Devlog #24 : New feature (kinda): the camera position and zoom are now stored in the project file, and loaded when you open the project. That means you can setup any point of view in your project, and the viewport will be right where you left it when you open it again! I also fixed a bunch of UI inconsistencies: the hover label position is now responsive to the workspace sidebar (before, it was getting hidden behind it) unified border colors fixed the phone workspace responsiveness made the sidebar on the right a little bit smaller I also continued working on the 7-segment display, but ran into some issues since wires can’t cross each other. So I thought about having circuits on two different layers. What do you think about this? Next steps: I’ll probably polish the UX a little bit more, and then ship the project. But I’m planning to keep working on it!
Devlog #25 : UI/UX improvements! I improved the component selection outline. Now the outline is around the whole selected group of pixels, instead of around each individual pixel. You can also now delete selected components by pressing Del on your keyboard. And I added a little preview showing the pixel currently targeted by the cursor. Next steps: keep working on the UI/UX, and ship!
Devlog #26 : I’ve done many small improvements, such as: ability to move annotations undo/redo buttons custom favicon Next step: SHIP!
Devlog #27 : Some optimization, code cleanup, and brand new readme! That’s the last devlog for this project before I ship!
Devlog #28 : Multi-layer (and thank you!!) First of all, thank you so much for all the support on this project! The Stardancers who reviewed my first ship got some really great advices. I’ll be following up on a lot of it. So, I’m planning to add: a simple component documentation some challenges (e.g. 7-segment decoder, XOR gate) more advanced features (clock, 1-bit memory) and what I’m working on right now: a second layer! (currently, wires can’t cross each other, which becomes a real issue with more complex circuits) and, if I have enough time, a place where people can share circuit snippets and showcase their projects! The real challenge will be integrating all of this while keeping the UI clean and the UX intuitive. The screenshot below shows what the circuit viewport could look like with the second layer.
Devlog #29 : New feature: Multi-layer! You can now build circuits across two layers! I added vias, so you can connect the two layers together (obviously). When you place a via, it’s added on both layers, it basically works like a wire. I also finished the 7-segment decoder: 3bit input, supporting only 0-4 for now. The other values are just don’t-cares. Next steps: polish the code and UI, then add some documentation.
Devlog #30 : Component documentation! I’ve added a new page in the sidebar that shows a description and preview image for every component. A few people asked for this in the reviews of my first ship, so it felt like a good addition. Also, if you have any idea of how I could integrate the new more advanced features without overwhelming new users, I’m all ears! The sidebar is starting to get pretty crowded, so I need to find a cleaner way to organize everything and keep navigation smooth. Also, huge thanks to the Stardance staff for awarding this project Superstar ❤️ Next steps: code cleanup, UX improvements, 1-bit memory support, and FINALLY the clock.
Devlog #31 : UI improvement! I replaced the old “main shortcuts” section in the sidebar with simple links. It frees up some space, makes the interface feel cleaner, and should make it much easier to add a proper “Challenge” tab later. Next steps: add a clock and a 1-bit memory.
Devlog #32 : New component: CLOCK (finally) This one was relatively easy to implement! The tick system was already there, but it was only triggered by user interactions. Now, your circuits run at 10 ticks/s, and the clock has a constant 1 Hz square signal (the recording below is choppy, but yes it is indeed a 1 Hz periodic signal) This component only has one output. I thought it would make building complex circuits easier if the other sides were isolated. Next steps: 1-bit memory, and then a lot of UX/UI improvements!
Devlog #33 : Docs update and 1-bit memory! I added the clock to the docs page, along with some new tests for it. I’m also almost done with the 1-bit memory (basically a simplified D flip-flop). I’ll share it in the next devlog! Also, if you like this project, you can leave a star on the project’s GitHub page if you wish! Next steps: finish the 1-bit memory and clean up the UI/UX
Devlog #34 : New component: Memory! This is one step up in difficulty! It has two inputs: a clock input (at the top) and a signal input (on the left). The output signal is provided on the right. This component can store a 1-bit value, which is updated on every rising edge of the clock signal. You can basically build anything with the component available: calculator, more advanced display (e.g. a 7-segment decoder that can go from 0 to 9). I added a 3-bit binary counter that I wired up to my 7-segment decoder! (demo bellow). It’s also included in the demo project file. Next steps: cleanup UI and improve UX (the sidebar is really really crowded right now)
Devlog #35 : UI cleanup and (another) demo circuit The sidebar was getting a bit too crowded, so I added a small button to show/hide the more advanced components. The idea is to make things a little less overwhelming for new users, instead of throwing everything at them right away. I also worked on a 4-bit adder and wired it up to my 7-segment decoder! I’m going to try making it a 4-bit decoder instead of a 3-bit one, but things are going to get a lot more complicated (more numbers = more logic gates). One small issue with the adder for now: the most significant bit is on the right, so the input is basically reversed. I’ll fix that soon. In the meantime, you can already try it out in the live demo project! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: more UI/UX improvements, adding challenges, and continuing to waste way too much of my time messing around with circuits xd
Devlog #36 : Probe tool and 4-bit calculator. While I was working on improving my 7-segment display, I had quite a hard time simplifying the circuit. Then I thought it could be really useful to have a tool that shows all the equipotential wires. So I’m currently working on it! It’s working, but I still have to improve its style before publishing it. Aside from that, I actually spent way too many hours improving the 4-bit calculator. And it’s now finished! It’s available in the demo circuit if you want to try it. I’ll see if I can build a keyboard later so users don’t have to enter numbers in binary. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the Probe tool, polish the UI, add a “challenge” tab.
Devlog #37 : Probe tool is out! You can now inspect your circuits with this new tool. It highlights equipotential wires. I also added small circles to every connected ports. Next steps: UI polish, and maybe a “challenge” or “community circuits” tab.
Devlog #38 : Integrated circuits Some of you have requested this, so I’m working on it! It’s not out yet, as it’s a pretty big feature. Integrated circuits will basically be custom components (most likely rectangles) with multiple inputs and outputs, all defined by the user. It’s literally a footprint, kinda like what you’d find in KiCad. I’ve started modifying the engine’s internals so it can handle these new types of connections (alongside the classic 1-pixel components). The real challenge here is keeping everything simple on the UX side, even though this feature targets more advanced users. The image below only shows what it might look like, this will probably change over time. As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: keep working on this feature, polish the UI/UX, ship it, and sadly… the end of stardance :(
Devlog #39 : Integrated circuits (again) I’m still working on this feature! I’m not at the frontend part yet, still adapting the engine. More details if you’re curious: A module has a definition that includes its name, public pins, and internal circuit. It can be used multiple times (it’s called an instance in the code). And all modules are listed in a catalog (that I’ll probably integrate in the frontend later). Instances can be selected, moved, copied and pasted, across the layers… The picture bellow shows how this feature could be used. It will make things much easier if you want to build more complex circuits like an 8 bit adder. You’ll just have to stack 8x 1-bit full adder modules! As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: finish the backend side, then integrate everything into the frontend, polish the UI, and ship!
Devlog #40 : Integrated circuits I’m (again) still working on this feature! Since my last devlog, I’ve updated the project document format to serialize the new modules. And that’s basically it! Next step: integrate them into the UI, polish the UX, and ship!
Devlog 41 : Integrated Circuits I’m working on the UI! The picture below shows what it currently looks like. I’m still not sure about the colors, so they might change. I still have the hardest part to figure out: How will users create and modify a module, UX-wise? Will it have its own sub-editor? How will users assign pins, name them, and define the module’s size and name? As always, if you enjoy the project, feel free to leave a star on GitHub! Repo: https://github.com/NaFo44/Cirkuit Next steps: Keep working on the UI, polish the UX/UI, and ship!
Devlog 42 : Integrated circuits (almost done!) It wasn’t easy! The UX part is actually really challenging. I had to rely on AI more than usual because Stardance is ending really soon, and I’m honestly a bit scared of not having enough time to ship :/ I’ll still try to polish the UI as much as possible! The screenshot below shows what it currently looks like. I added a new section for modules in the sidebar, where you can see all the modules you’ve created, edit them, or create new ones. When creating a new module, you can set its name, preview the footprint, add or remove inputs/outputs, and place them directly on the footprint. It’s almost ready tho! I’m just polishing the UX now. Next steps: finish this feature, polish the UI/UX, ship!
Ships:
Hi! I’m really happy to introduce you to my biggest project so far. It’s called Cirkuit, and it’s a logic circuit sandbox simulator… but with pixel art! That means you can basically build anything using just pixels. Why pixels? You may ask. Well, many logic simulators already exist, but the issue is that most of them aren’t very accessible to the average user. That’s why I wanted Cirkuit to be as easy to use as possible. I’m already quite familiar with TypeScript and React, which I used for this project. So the most difficult part was actually figuring out how to implement features without having 100 nested loops :D I had a hard time figuring out how to build the core engine (obviously), as well as the annotation system. I’m quite proud of how it looks and how well it works. This project was a perfect opportunity for me to improve my design skills. I worked hard to reduce friction between the interface and the user (aka you, dear shipwriters). One piece of advice: try it on a computer with a mouse. Phones and trackpads are supported, but it’s not the best experience. Hope you’ll like this project!...
|
1793055099.1470068
|
1793141499.1470068
|
|
60704
|
Socle by @torren | Stardance
|
torren
|
1
|
119.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T17:34:11Z", "hours": 119.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "socle is built around a simple idea: finding somewhere good should feel personal. it brings together places, curated lists, recommendations from people you trust, and a taste profile that develops through your activity. i wanted a better way to discover places that fit you and keep the good ones somewhere worth coming back to. the hardest part has been making those systems work together reliably. repeated activity shouldn’t let one place overwhelm your taste profile, and opening a place page shouldn’t count as physically visiting it. i worked on those distinctions alongside search, missing photos, chat navigation, loading states, and account isolation. testing kept revealing small problems that made a bigger difference to the experience than i expected. i’m proud of how the two sides of socle are coming together. discovery helps people explore and share places, while the business side connects guest feedback with insights about their experience. the design took plenty of iteration too, from discovery’s warmer colors to the interactive hardware animation on the business homepage. the native iphone and mac versions are also progressing, though location tracking, notifications, and widgets still need further real-device testing. how to test: click testers at the bottom-left of the sign-in page, or open socle.pages.dev/testers. enter stardance when asked where you’re from; capitalization doesn’t matter. a wrong answer gets one final question asking who you’re testing on behalf of. you’ll receive a 24-hour testing account. explore discovery, then open the profile menu and look under your workplaces for stardance testers. there are owner and employee entries, and each tester gets a separate workspace with sample reviews so you can experiment without changing a real business’s data. the linked public repository contains a limited discovery homepage demo; the full application and backend remain private. the devlogs cover the wider project, and ai’s substantial contribution to implementation and documentation is explained in the ai usage declaration.", "repo": "https://github.com/karamvschool-ai/socle-discovery-demo", "demo": "https://socle.pages.dev"}]...
|
[{"post_id": 83043, "ts": "202 [{"post_id": 83043, "ts": "2026-10-26T17:29:58Z", "hours": 0.4514, "text": "socle’s pretty much ready to be shipped in a few minutes, just made a last minute testing flow for you stardance testers:)"}, {"post_id": 82862, "ts": "2026-10-26T02:53:03Z", "hours": 12.3964, "text": "socle was looking ready for testing, but using it exposed things i couldn’t leave broken. i fixed search, added sliding transitions between chats, and built the native foundations for notifications, four widgets, and location tracking. the biggest change was separating browsing from actual visits: opening a place page shouldn’t count as going there, and a visit now needs five minutes of reliable location evidence. i also rebuilt the business homepage with a more interactive design. the simulator and mac builds passed alongside 23 automated checks, though location accuracy and the apple integrations still need real-device testing."}, {"post_id": 81522, "ts": "2026-10-21T15:49:23Z", "hours": 16.6728, "text": "i spent this session testing whether socle intelligence could give a business something useful beyond a summary of its reviews. i worked on how it uses customer feedback and business context, and added support for graphs and tables so answers are easier to understand. some responses still missed the point, so comparing answers and finding those gaps became a big part of the work. i also fixed cover-image bugs across the site. there’s progress, but i still want more evidence before trusting the answers."}, {"post_id": 78912, "ts": "2026-10-12T00:46:52Z", "hours": 21.3431, "text": "one review can contain a complaint about slow food and a compliment about the server. getting socle intelligence to recognize both became a useful test of whether it actually understood the feedback. i experimented with models, settings, and context, while building the connection between the model and a business’s data. running it locally also introduced speed and reliability problems to work through. the hardest part is still knowing when several reviews reveal a pattern and when there just isn’t enough evidence to say."}, {"post_id": 76476, "ts": "2026-10-03T17:15:48Z", "hours": 13.3208, "text": "this was where socle’s discovery and business sides started connecting. i worked on turning feedback, saves, visits, and employee recognition into insights a business could use. the difficult part was deciding when those interactions supported a conclusion, so i built around showing the evidence and admitting when there wasn’t enough. i also separated the broader patterns managers need from the feedback an individual employee should see. the first engine uses rules i can inspect and test, giving me a clearer foundation to build on."}, {"post_id": 74662, "ts": "2026-09-27T21:53:50Z", "hours": 11.8033, "text": "i kept fixing one small issue and finding three more. this session turned into a sweep through socle’s navigation, spacing, loading states, and awkward interactions, trying to use it like someone who didn’t already know where everything was. there wasn’t one big feature, but the fixes removed a lot of little interruptions. we were hoping to ship afterward, then ran into repo issues. that pushed the release back while we worked out a cleaner source setup."}, {"post_id": 73283, "ts": "2026-09-24T19:07:21Z", "hours": 9.3703, "text": "i’d gotten used to some of socle’s rough edges, which made them harder to notice. i went back through the main screens with a first-time user in mind and cleaned up confusing buttons, inconsistent layouts, navigation, and loading states. most fixes were small, but together they made the app easier to move through. i’m getting closer to the experience i want: people exploring places without having to figure out the interface first."}, {"post_id": 72270, "ts": "2026-09-22T15:40:08Z", "hours": 8.9336, "text": "taste needed a practical way to test visits before full location tracking was ready. i replaced the old flow with a temporary visit button, which let me check how visiting a place changes someone’s profile. i also adjusted how actions are weighted and repeated activity is counted, so one place doesn’t overwhelm everything else someone likes. the screenshot keeps the exact scoring weights private, but the goal is straightforward: taste should develop from someone’s activity without becoming too easy to distort."}, {"post_id": 71502, "ts": "2026-09-20T22:56:28Z", "hours": 9.3, "text": "socle needed more places to explore as well as a cleaner interface. i added locations and filled out existing pages, then worked through inconsistent layouts, spacing, small bugs, and interactions that felt awkward. having more content also made the gaps in the experience easier to spot. this update brings the app closer to a wider test, where people can spend time discovering things instead of reaching the end of the available content."}, {"post_id": 70153, "ts": "2026-09-18T16:01:12Z", "hours": 6.3247, "text": "before bringing in more testers, i wanted to clear out the obvious things that would get in their way. i went through the main screens fixing layout issues, inconsistent components, and navigation that took too much effort to understand. these were mostly small changes rather than new features, but they made the experience more consistent. the next round of feedback should help me find the problems i haven’t already learned to work around."}, {"post_id": 66671, "ts": "2026-09-12T15:11:08Z", "hours": 8.9261, "text": "i used codex to help with implementation while i worked through socle’s screens and tested the main flows. that testing uncovered bugs in a feature i thought was already finished, so i went back, fixed them, and checked it again. i also cleaned up the surrounding ui and interactions. it was a reminder that finishing the code isn’t the same as finishing the experience, and there’s still more to catch before opening it to more testers."}]...
|
Title: Socle by @torren | Stardance
Devlogs:
i us Title: Socle by @torren | Stardance
Devlogs:
i used codex to help with implementation while i worked through socle’s screens and tested the main flows. that testing uncovered bugs in a feature i thought was already finished, so i went back, fixed them, and checked it again. i also cleaned up the surrounding ui and interactions. it was a reminder that finishing the code isn’t the same as finishing the experience, and there’s still more to catch before opening it to more testers.
before bringing in more testers, i wanted to clear out the obvious things that would get in their way. i went through the main screens fixing layout issues, inconsistent components, and navigation that took too much effort to understand. these were mostly small changes rather than new features, but they made the experience more consistent. the next round of feedback should help me find the problems i haven’t already learned to work around.
socle needed more places to explore as well as a cleaner interface. i added locations and filled out existing pages, then worked through inconsistent layouts, spacing, small bugs, and interactions that felt awkward. having more content also made the gaps in the experience easier to spot. this update brings the app closer to a wider test, where people can spend time discovering things instead of reaching the end of the available content.
taste needed a practical way to test visits before full location tracking was ready. i replaced the old flow with a temporary visit button, which let me check how visiting a place changes someone’s profile. i also adjusted how actions are weighted and repeated activity is counted, so one place doesn’t overwhelm everything else someone likes. the screenshot keeps the exact scoring weights private, but the goal is straightforward: taste should develop from someone’s activity without becoming too easy to distort.
i’d gotten used to some of socle’s rough edges, which made them harder to notice. i went back through the main screens with a first-time user in mind and cleaned up confusing buttons, inconsistent layouts, navigation, and loading states. most fixes were small, but together they made the app easier to move through. i’m getting closer to the experience i want: people exploring places without having to figure out the interface first.
i kept fixing one small issue and finding three more. this session turned into a sweep through socle’s navigation, spacing, loading states, and awkward interactions, trying to use it like someone who didn’t already know where everything was. there wasn’t one big feature, but the fixes removed a lot of little interruptions. we were hoping to ship afterward, then ran into repo issues. that pushed the release back while we worked out a cleaner source setup.
this was where socle’s discovery and business sides started connecting. i worked on turning feedback, saves, visits, and employee recognition into insights a business could use. the difficult part was deciding when those interactions supported a conclusion, so i built around showing the evidence and admitting when there wasn’t enough. i also separated the broader patterns managers need from the feedback an individual employee should see. the first engine uses rules i can inspect and test, giving me a clearer foundation to build on.
one review can contain a complaint about slow food and a compliment about the server. getting socle intelligence to recognize both became a useful test of whether it actually understood the feedback. i experimented with models, settings, and context, while building the connection between the model and a business’s data. running it locally also introduced speed and reliability problems to work through. the hardest part is still knowing when several reviews reveal a pattern and when there just isn’t enough evidence to say.
i spent this session testing whether socle intelligence could give a business something useful beyond a summary of its reviews. i worked on how it uses customer feedback and business context, and added support for graphs and tables so answers are easier to understand. some responses still missed the point, so comparing answers and finding those gaps became a big part of the work. i also fixed cover-image bugs across the site. there’s progress, but i still want more evidence before trusting the answers.
socle was looking ready for testing, but using it exposed things i couldn’t leave broken. i fixed search, added sliding transitions between chats, and built the native foundations for notifications, four widgets, and location tracking. the biggest change was separating browsing from actual visits: opening a place page shouldn’t count as going there, and a visit now needs five minutes of reliable location evidence. i also rebuilt the business homepage with a more interactive design. the simulator and mac builds passed alongside 23 automated checks, though location accuracy and the apple integrations still need real-device testing.
socle’s pretty much ready to be shipped in a few minutes, just made a last minute testing flow for you stardance testers:)
Ships:
socle is built around a simple idea: finding somewhere good should feel personal. it brings together places, curated lists, recommendations from people you trust, and a taste profile that develops through your activity. i wanted a better way to discover places that fit you and keep the good ones somewhere worth coming back to. the hardest part has been making those systems work together reliably. repeated activity shouldn’t let one place overwhelm your taste profile, and opening a place page shouldn’t count as physically visiting it. i worked on those distinctions alongside search, missing photos, chat navigation, loading states, and account isolation. testing kept revealing small problems that made a bigger difference to the experience than i expected. i’m proud of how the two sides of socle are coming together. discovery helps people explore and share places, while the business side connects guest feedback with insights about their experience. the design took plenty of iteration too, from discovery’s warmer colors to the interactive hardware animation on the business homepage. the native iphone and mac versions are also progressing, though location tracking, notifications, and widgets still need further real-device testing. how to test: click testers at the bottom-left of the sign-in page, or open socle.pages.dev/testers. enter stardance when asked where you’re from; capitalization doesn’t matter. a wrong answer gets one final question asking who you’re testing on behalf of. you’ll receive a 24-hour testing account. explore discovery, then open the profile menu and look under your workplaces for stardance testers. there are owner and employee entries, and each tester gets a separate workspace with sample reviews so you can experiment without changing a real business’s data. the linked public repository contains a limited discovery homepage demo; the full application and backend remain private. the devlogs cover the wider project, and ai’s substantial contribution to implementation and documentation is explained in the ai usage declaration....
|
1793036962.8082829
|
1793123362.8082829
|
|
60807
|
Audio Visualizer Generator by @EclipseShadow | Sta Audio Visualizer Generator by @EclipseShadow | Stardance...
|
EclipseShadow
|
0
|
27.77
|
0
|
[]
|
[{"post_id": 83042, "ts": "202 [{"post_id": 83042, "ts": "2026-10-26T17:29:25Z", "hours": 9.8956, "text": "Reformatted Entire Project to be an chained Effect-based audio/video processing library. Hopefully I can finish at the visualizer part in this new format before the deadline, but currently adding new features to make it more complete, like basic Effects and other versions of existing Effects."}, {"post_id": 65614, "ts": "2026-09-10T21:09:16Z", "hours": 17.8761, "text": "Audio Processing - load audio file, process audio through resonators, save data to and load data from files Post Processing Options Complete - Height Normalization, Power Compression, LPF, Ballistic Smoothing, Frame Interpolation Square Bars Frame Generation Compilation Helper Method (temporary) (I wasn’t planning on submitting this to Stardance, so I’ve done a lot of work on it. Future devlogs will be smaller)"}]...
|
Title: Audio Visualizer Generator by @EclipseShado Title: Audio Visualizer Generator by @EclipseShadow | Stardance
Devlogs:
Audio Processing - load audio file, process audio through resonators, save data to and load data from files Post Processing Options Complete - Height Normalization, Power Compression, LPF, Ballistic Smoothing, Frame Interpolation Square Bars Frame Generation Compilation Helper Method (temporary) (I wasn’t planning on submitting this to Stardance, so I’ve done a lot of work on it. Future devlogs will be smaller)
Reformatted Entire Project to be an chained Effect-based audio/video processing library. Hopefully I can finish at the visualizer part in this new format before the deadline, but currently adding new features to make it more complete, like basic Effects and other versions of existing Effects....
|
1793037040.9598904
|
1793641840.9598904
|
|
71502
|
Minecraft Mod by @frenchwizz | Stardance
|
frenchwizz
|
0
|
1.95
|
0
|
[]
|
[{"post_id": 83040, "ts": "202 [{"post_id": 83040, "ts": "2026-10-26T17:21:45Z", "hours": 1.9522, "text": "Init push"}]...
|
Title: Minecraft Mod by @frenchwizz | Stardance
D Title: Minecraft Mod by @frenchwizz | Stardance
Devlogs:
Init push...
|
1793036837.5300298
|
1793641637.5300298
|
|
65521
|
Quantik by @Wirenux | Stardance
|
Wirenux
|
1
|
24.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T16:36:12Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Quantik v1.0.0 - A Molecule 3D Viewer with no 3D engine What is this ? Quantik is a Molecule 3D Viewer built in Rust. You open a .sdf file (or pick a built-in molecule), and you can rotate it, zoom, pan, and hover every atom to see its info. And the fun part: there is no 3D engine and no GPU code . Everything (the projection, the depth buffer, the lighting, the triangle filling) is done by hand on the CPU, and the pixels are just sent to a window with minifb ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ Why ( °ヮ° ) ? I had 3 reasons: I wanted a 3D molecule viewer that my teacher could use in class, I wanted to really learn how 3D works in depth (so I did it from scratch), and I wanted to use it myself for homework, because most of this kind of software is Windows-only and I use a mac. Core Features ( ദ്ദി ˙ᗜ˙ ) Viewer Atoms as spheres and bonds as cylinders (double and triple bonds are drawn as parallel cylinders) CPK colors and real van der Waals radii Orbit camera with mouse and keyboard, plus auto rotate Hover an atom to see its name, radius and molar mass Info panel with the name, formula, number of atoms, number of bonds and total molar mass Software Renderer Depth buffer, back-face culling, key + fill lighting SSAA anti-aliasing: low quality while you move the camera, 3x when you stop Redraw on demand: the scene is only re-rendered when something changed Atom ID buffer: each pixel remembers which atom drew it, that’s how hovering works Molecule Loading Open any .sdf file with a native file dialog Built-in examples: Water, Methane, Ammonia, Benzene and Ethanol Auto framing: the camera is placed from the size of the molecule What was challenging ? Getting the 3D maths right without an engine was the hardest part: projecting the points, filling the triangles, and making the depth correct with perspective. Also, doing everything on the CPU is slow, so I had to be smart: a low quality render while the camera moves, a high quality one when it stops, and only redrawing when something changed. After that I split the whole project into modules (render, mesh, camera, molecule, ui…) because it was getting hard to read ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ What are you proud of ? I’m proud that the whole 3D pipeline is mine, and that it is actually useful: my teacher can use it in class, and it runs on macOS, Windows and Linux without any 3D engine or GPU. What should people know so they can test your project ? Go to the GitHub Release and download the version for your OS macOS: the app is not signed (I don’t have an Apple Developer account 🥲), so run xattr -cr /Applications/Quantik.app in the Terminal after you put it in Applications Windows: SmartScreen may warn you, click More info then Run anyway Launch Quantik, then use File > Open... ( Cmd/Ctrl+O ) to load an .sdf file, or Examples > Show list ( Cmd/Ctrl+E ) and press 1 - 9 Things to try Load the Water example Hover an atom to see its info Press Space to make the molecule spin, then - / = to change the speed Rotate the camera and stop: watch the image get smoother Download a molecule as .sdf (for example the Caffeine one from PubChem) and open it Thank you Just a little thank you ❤️ (Everything you need is probably in the README.md)", "repo": "https://github.com/wirenux/Quantik", "demo": "https://www.youtube.com/watch?v=1jiRmYiBzOk"}]...
|
[{"post_id": 83024, "ts": "202 [{"post_id": 83024, "ts": "2026-10-26T16:18:45Z", "hours": 1.5172, "text": "Devlogs Nº5 - The last one :D So in this little devlog I had done quite a lot : The README.md is now created The released has been published All the binary has been build Now the next step is to write the Ship BYE"}, {"post_id": 82581, "ts": "2026-10-25T09:30:53Z", "hours": 6.5872, "text": "Devlogs Nº4 Ok so… 🎵 it’s been sooo looonnnngg 🎵… In the last 6h30 I’ve done kinda lot of things like those : A start screen who tell you open a file or an example molecule A little box in the top left corner for all the information on the molecule (like the formula, the molar mass etc…) ℹ️ Fixed some bug with the bonds rendering 🐛 Added a example menu with built-in molecule (so you don’t have to download a .sdf file) Anti-aliasing (SSAA) when moving the camera the SSAA is reduced to not hurt the performance but when stop moving the SSAA quality go up Added my username on the home screen Created a logo with the help of @c3a5m7 (on youtube) A VERY BIG reorganization in the whole project to make the project more clear with separated part, like the maths part, and the ui part etc… 🧹"}, {"post_id": 77656, "ts": "2026-10-07T19:10:43Z", "hours": 4.9003, "text": "Devlogs Nº3 In this devlogs I have done a lot of little things like those : A file opener at start of the app A tooltip for each atoms with : Name, Symbol, Radius and Molar Mass New molecule like: cocaine, vitamin C, etc… With CMD+O / CTRL+O it’s open a file explorer (on windows, macOS and Linux) A new macOS and windows menu for shortcuts Space to make the molecule rotate automatically + and - key can now modify the speed of auto rotate R reset the camera position Pan movement to move the camera position (x, y, z) Fix some bugs"}, {"post_id": 75909, "ts": "2026-10-01T16:00:47Z", "hours": 4.0347, "text": "Devlogs Nº2 So in 4 hours a lot has been done . Basically I finished all the Math part . And here is a list of everything I added: A new camera control, the Orbital camera (like in 3D CAD software or KSP) A scroll limit based on the farthest atom from the center A SDF parser (to display each atoms and bounds via a single file) So you can import every molecule you want ! Some optimization Now atoms have colors (if the atom don’t have a implemented color it will just be a bright magenta) and different radius (like in the vdm representation) 🎨 A way BETTER lightning system (now you don’t even see the “edge of the UV sphere and the cylinder) A new file structure The name of the molecule in the title bar (and if there is no name in the custom array it just print his CID) Here are some picture of it. In this picture there is water (H2O) and caffeine (which is way more complex)"}, {"post_id": 74406, "ts": "2026-09-27T10:21:25Z", "hours": 7.0456, "text": "Devlogs Nº1 So… Yeah this is a pretty big devlogs, and the first one In this project I will create an app to see molecule in 3D all from scratch. From the software rasterizer to the .SDF file parser and a lot more. So in this devlogs I added a lot of the 3D basic of the program. Firstly I tried rendering the Vertex (3D point) of a cude then the triangle and fill the triangle. And redo the same with the UV Sphere and Cylinder (the uv sphere will be the atoms and the cylinder the bonds). The color of each “object” can be changed quite easly. I also added basic ambient lighting. I have also done a LOT of optimization (since this run on the CPU)"}]...
|
Title: Quantik by @Wirenux | Stardance
Devlogs:
D Title: Quantik by @Wirenux | Stardance
Devlogs:
Devlogs Nº1 So… Yeah this is a pretty big devlogs, and the first one In this project I will create an app to see molecule in 3D all from scratch. From the software rasterizer to the .SDF file parser and a lot more. So in this devlogs I added a lot of the 3D basic of the program. Firstly I tried rendering the Vertex (3D point) of a cude then the triangle and fill the triangle. And redo the same with the UV Sphere and Cylinder (the uv sphere will be the atoms and the cylinder the bonds). The color of each “object” can be changed quite easly. I also added basic ambient lighting. I have also done a LOT of optimization (since this run on the CPU)
Devlogs Nº2 So in 4 hours a lot has been done . Basically I finished all the Math part . And here is a list of everything I added: A new camera control, the Orbital camera (like in 3D CAD software or KSP) A scroll limit based on the farthest atom from the center A SDF parser (to display each atoms and bounds via a single file) So you can import every molecule you want ! Some optimization Now atoms have colors (if the atom don’t have a implemented color it will just be a bright magenta) and different radius (like in the vdm representation) 🎨 A way BETTER lightning system (now you don’t even see the “edge of the UV sphere and the cylinder) A new file structure The name of the molecule in the title bar (and if there is no name in the custom array it just print his CID) Here are some picture of it. In this picture there is water (H2O) and caffeine (which is way more complex)
Devlogs Nº3 In this devlogs I have done a lot of little things like those : A file opener at start of the app A tooltip for each atoms with : Name, Symbol, Radius and Molar Mass New molecule like: cocaine, vitamin C, etc… With CMD+O / CTRL+O it’s open a file explorer (on windows, macOS and Linux) A new macOS and windows menu for shortcuts Space to make the molecule rotate automatically + and - key can now modify the speed of auto rotate R reset the camera position Pan movement to move the camera position (x, y, z) Fix some bugs
Devlogs Nº4 Ok so… 🎵 it’s been sooo looonnnngg 🎵… In the last 6h30 I’ve done kinda lot of things like those : A start screen who tell you open a file or an example molecule A little box in the top left corner for all the information on the molecule (like the formula, the molar mass etc…) ℹ️ Fixed some bug with the bonds rendering 🐛 Added a example menu with built-in molecule (so you don’t have to download a .sdf file) Anti-aliasing (SSAA) when moving the camera the SSAA is reduced to not hurt the performance but when stop moving the SSAA quality go up Added my username on the home screen Created a logo with the help of @c3a5m7 (on youtube) A VERY BIG reorganization in the whole project to make the project more clear with separated part, like the maths part, and the ui part etc… 🧹
Devlogs Nº5 - The last one :D So in this little devlog I had done quite a lot : The README.md is now created The released has been published All the binary has been build Now the next step is to write the Ship BYE
Ships:
Quantik v1.0.0 - A Molecule 3D Viewer with no 3D engine What is this ? Quantik is a Molecule 3D Viewer built in Rust. You open a .sdf file (or pick a built-in molecule), and you can rotate it, zoom, pan, and hover every atom to see its info. And the fun part: there is no 3D engine and no GPU code . Everything (the projection, the depth buffer, the lighting, the triangle filling) is done by hand on the CPU, and the pixels are just sent to a window with minifb ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ Why ( °ヮ° ) ? I had 3 reasons: I wanted a 3D molecule viewer that my teacher could use in class, I wanted to really learn how 3D works in depth (so I did it from scratch), and I wanted to use it myself for homework, because most of this kind of software is Windows-only and I use a mac. Core Features ( ദ്ദി ˙ᗜ˙ ) Viewer Atoms as spheres and bonds as cylinders (double and triple bonds are drawn as parallel cylinders) CPK colors and real van der Waals radii Orbit camera with mouse and keyboard, plus auto rotate Hover an atom to see its name, radius and molar mass Info panel with the name, formula, number of atoms, number of bonds and total molar mass Software Renderer Depth buffer, back-face culling, key + fill lighting SSAA anti-aliasing: low quality while you move the camera, 3x when you stop Redraw on demand: the scene is only re-rendered when something changed Atom ID buffer: each pixel remembers which atom drew it, that’s how hovering works Molecule Loading Open any .sdf file with a native file dialog Built-in examples: Water, Methane, Ammonia, Benzene and Ethanol Auto framing: the camera is placed from the size of the molecule What was challenging ? Getting the 3D maths right without an engine was the hardest part: projecting the points, filling the triangles, and making the depth correct with perspective. Also, doing everything on the CPU is slow, so I had to be smart: a low quality render while the camera moves, a high quality one when it stops, and only redrawing when something changed. After that I split the whole project into modules (render, mesh, camera, molecule, ui…) because it was getting hard to read ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ What are you proud of ? I’m proud that the whole 3D pipeline is mine, and that it is actually useful: my teacher can use it in class, and it runs on macOS, Windows and Linux without any 3D engine or GPU. What should people know so they can test your project ? Go to the GitHub Release and download the version for your OS macOS: the app is not signed (I don’t have an Apple Developer account 🥲), so run xattr -cr /Applications/Quantik.app in the Terminal after you put it in Applications Windows: SmartScreen may warn you, click More info then Run anyway Launch Quantik, then use File > Open... ( Cmd/Ctrl+O ) to load an .sdf file, or Examples > Show list ( Cmd/Ctrl+E ) and press 1 - 9 Things to try Load the Water example Hover an atom to see its info Press Space to make the molecule spin, then - / = to change the speed Rotate the camera and stop: watch the image get smoother Download a molecule as .sdf (for example the Caffeine one from PubChem) and open it Thank you Just a little thank you ❤️ (Everything you need is probably in the README.md)...
|
1793087644.184306
|
1793174044.184306
|
|
12569
|
NeneUI (@neneys/ui) by @pksmkwe26 | Stardance
|
pksmkwe26
|
2
|
84.16
|
1559
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T12:40:09Z", "hours": 45.0, "multiplier": 19.25, "payout": 872, "blessing": "neutral", "text": "@neneys /ui - NeneUI It is an Server-Driven UI Library Which Interpretes TypeScript into an Native Rendered Flutter Widget. Basically, You can write your Entire App in TypeScript and It gets Rendered Into Native Flutter Widgets without WebView. Why? We need Server-Driven UI to ensure that we do not need to update an entire app for a little UI changes or even major overhauls of the App Interface, We could just change it on Server-Side and updated without going through the process of Approval and such. Major Updates After the Previous Ship NeneUI Testing Kit has been buffed with Debug Bar and More Platforms Support for WebSocket Rendering Web Support (along with SEO PHP for Web Crawlers) Memory/GPU Leak issues fixed! Advanced & Improved + Detailed Documentation Decorated README.md Documentation The New Documentation is now written in Docsaurus and hosted in Github Pages at https://kwe26.github.io/neneui/ along with the NeneUI Testing Kit at https://kwe26.github.io/neneui/tester . While it took alot of time documenting each working Widgets but it has now made using @neneys /ui more easier. New Widgets That were Added NeneDisplay and NeneNavbottom - Theese Two Widgets Now help you construct an Bottom Bar with Various Pages as Content that can be now switched from one place to another without reloading the entire page. Layouts and Layout - This allows you to put many Content on Side of Each Other and allow you the drag wheel to drag and arrange the size. WebSocket Widget - It can also render Widgets over WS live real-time making it an really useful feature. Some New Action Callbacks were also added such as SOFTRELOAD that softly reloads the UI without changing the states and maintains the UI. DebugBar The Testing Kit Now includes and Debug Bar to help Developers Reload the UI or check the #id Declarations and Variables Value NeneDesktopRuntime An Desktop Runtime that is WIP but could help replace Electron.js where everything is WebView and sucks alot of ram. But NeneDesktopRuntime can render the Widgets with TypeScript into Native Widgets. Examples There are now examples bundled with NeneUI Testing Kit, One is an AI Chat Application and other is called NeneWorld with Pokedex and Weather API and Country API uses to showcase the Widgets FAQ Page An FAQ Page has been added to ensure the Users dont get stuck somewhere in the library and could get some reference on it Such as the Linux issue with quickjs where the fix is provided. Conclusion There were alot of challenges while making this library with my Laptop dropping to 0.47GHz at random moments and searching the pub.dev docs for shadcn_flutter and upgrading sub-libraries and testing stuff the major headache being the Navigation and Web Support (SEO is done via PHP to show Web Crawlers meangingful HTML to index).", "repo": "https://github.com/kwe26/neneui", "demo": "https://www.npmjs.com/@neneys/ui"}, {"ship_num": 2, "ts": "2026-08-21T15:35:04Z", "hours": 38.0, "multiplier": 18.11, "payout": 687, "blessing": "neutral", "text": "I made an Server-Side Rendering Library for Flutter, You write the Code in TypeScript and the Flutter Renderer (i named it Daikon) parses it into Native Code, Without WebViews! Completely Native. The Challenges i faced were, how to like index the widgets to be used while JSON becomes parsed and the handling of #ids and most importantly, ForEach Option and the JS Option. I used shadcn_flutter for UI Elements that were rendered, i really like shadcn_flutter’s Design. it’s really cool. I tried to keep it as much as user-friendly as possible, by adding TypeScript Types so VSCode Auto-complete could work. I have also added File Uploads feature with In-Memory Image Display too, if it’s an Image, it is really helpful, even with Server Callbacks and such things Theese are necessary for an production application. And Actions such as TOAST, DIALOG, NAVIGATE, etc. This is the intresting part too!! You can try out the library at https://www.npmjs.com/@neneys/ui for testing it out! While the docs is still not complete, i hope that the documented Widgets could work for your expirment too! I plan to continue this Library even after the program ends!! Love you all! 🥰", "repo": "https://github.com/kwe26/neneui", "demo": "https://www.npmjs.com/@neneys/ui"}]...
|
[{"post_id": 83013, "ts": "202 [{"post_id": 83013, "ts": "2026-10-26T15:39:21Z", "hours": 0.7169, "text": "Devlog (No. 30) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Changes Update some parts of Daikon Debugger and removed some unnessary codes. Extended Debugger Width Desktop Runtime with unused RPC (will work on it) Explanation Diagram Drawn an Explanation Diagram on Figma that shows how Interface and Callbacks works, hope it’s good and does give some idea about @neneys /ui Thanks for reading this minidevlog.!! Love you all <3"}, {"post_id": 82939, "ts": "2026-10-26T10:19:02Z", "hours": 0.4383, "text": "Devlog (No. 29) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere About the Memory Leak Issue being Fixed Many People in Review told me how did the Memory Leak get fixed and what was the cause of it? Blog Link May not open now, Since it hasn’t been built yet Docs Changes So, Here’s the docs with it being documented in the blog will be available once Github Actions Finishes Updated Debugger I’m working on a updated @neneys /ui Debugger to be more ease-to-use. Will be finished in a less time, The Debugger will allow the ease of accessing and modifying an Widget Data for the Session and manipulate Shared Preferences. Thanks for reading!! Love you all >3 ❤️"}, {"post_id": 82256, "ts": "2026-10-24T12:15:40Z", "hours": 2.1886, "text": "Devlog (No.28) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere README.md README.md has been improved alot with visual designs and details with Links and References Provided too and some Yashiro Nene based Images. Figma File is provided in link. Docs Updates The Home Page of Docs has been updated to look better and provide more information about NeneUI. The Docs Is now extended and now includes more information about implemented Widgets and Link to NeneUI Testing Kit NeneUI Testing Kit The NeneUI Testing Kit has been updated to show examples of @neneys /ui One being an AI Chat Application and other being an random Test with Pokedex, etc. Nene Desktop Runtime While Still Work in Progress, You can now follow the docs to Launch and test the Desktop Runtime. The Desktop Runtime is a standalone application that could embed @neneys /ui in it and Make Desktop Applications with just TypeScript. A Stable Release NeneUI will be released as a stable version 1.0.0 with Pub.dev and NPM Versions available soon as possible and will be kept updated Thanks for your support till 1.0.0 Release! I hope we meet soon! Thanks <3333"}, {"post_id": 82065, "ts": "2026-10-23T17:57:50Z", "hours": 3.3633, "text": "Devlog (No.27) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere JavascriptEngine JavaScriptEngine({…}) which could control Whether JS should be enabled or not and how much stackSize should be specified. xhr should be enabled or disabled SEO Support for Flutter Web With the Help of PHP to Render Text, Image and some minimal data. PHP can provide basic Page to Crawlers requesting the site. So that SEO could be utilised. However, PHP Version Selection is limited to only allow the recently patched PHP versions for Security Reasons. Github Actions Added Nene Desktop Runtime to be built in Github Actions Bug FIxes @neneys /ui had a Critical Memory and GPU Leak issue which kept the GPU usage at constant high even when not being used and being left Idle. Docs Updates JavaScript Execution and SEO Setup are now documented in the Docs and pub.dev and npmjs packages are now updated NeneUI Testing Kit NeneUI Testing Kit are now available on Web https://kwe26.github.io/neneui/tester However It could only open HTTPS and Cors (*) Apps only and is kind of limited with some JS Execution Issues. The User Interface of Testing Kit is also quite updated. Close to Release NeneUI is now Close to being 1.0.0 Release finally! Within 1-2 devlogs i’ll be shipping soon.!! Thanks for reading! Love you <3!"}, {"post_id": 81857, "ts": "2026-10-22T19:16:50Z", "hours": 1.7314, "text": "Devlog (No.26) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Web - Platform Support Finally, @neneys /ui is now supported on Web (Flutter Web). The Inconsistencies are now managed making @neneys /ui work directly on Web Too. *Limitations on Web * Same as Flutter Web - It’s hard for crawlers to idenitfy content of web pages. I’m trying to fix that issue by double-rendering. Mostly by Setting-up an PHP to Interept the UI into HTML for Crawlers Making SEO work good! README.md Changes FAQ Added into README (Address the Linux Compile Issue in FAQ related to quickjs_engine) More Decorative Elements Github Actions Nene UI Testing Kit finally compiles on all 5 (Windows, Linux, Android, iOS, macOS) successfuly. Linux, macOS - May require libmpv to be installed or available on system path We seem to be very close to first v1 Release with maximum widgets and support. Thanks for Reading!! I love you all 3<.!!!"}, {"post_id": 81525, "ts": "2026-10-21T16:05:35Z", "hours": 4.5514, "text": "Devlog (No.25) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Widget Layouts Layout Layouts and Layout It helps you make an Layout on Screen as show in Screenshot. And It can be arranged via an Handle too, It supports unlimited Layout on Screen as much as space is there. Removed Removed Skeleton Widget from Docs as it was no-longer rendering properly README.md The README.md is now updated with some Images and Decorative Work for looking more nicer and attractive New Action New Action such as ACTION.SET_DISPLAY_INDEX and ACTION.CLOSE_OVERLAY AlertDialog is now documented under FeedBack Section Nene Desktop Runtime Nene Desktop Runtime is half-done and still has some issues, will try to fix it and make it install and run Apps soon! Thanks for reading!! I love you all >3"}, {"post_id": 80207, "ts": "2026-10-16T18:56:50Z", "hours": 2.6222, "text": "Devlog (No.24) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere WebSocket Support NeneUI now supports WebSocket Rendering and Execution WebSocket ({ url : \" ws://localhost:3500/ws/home \" , }) What Can it Do? Show Widgets Over WebSockets Execute Actions Use Cases? ChatBots Live News? Messaging? New Action Action.SEND_SOCKET Uses FormSubmitAction as Parameter with :socket: as the callbackPath New Functions SendWidget(socket, Widget) SendAction(socket, DoAction) Thanks for Reading! Love you all readers >3!"}, {"post_id": 79450, "ts": "2026-10-14T01:34:11Z", "hours": 2.6942, "text": "Devlog (No.23) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Features Shared Preferences ReqType Action.SOFT_RELOAD SharedPreferences You can use SET_PREFS and REM_PREFS Action to Set or Remove and PREF_EXISTS with exists and not parameters for functions GetPrefs When ReqType.POST is present you could use GetPrefs to get the preference value in UI/Callback Route GetFile Returns File Uploaded’s Path as in uploads/file.extension only works in Callback as that’s the place where you could recieve file. Action.SOFT_RELOAD Reloads the Screen without Changing any State or Position of Page. Other Changes :- Remove Old docs/ folder and SKILL.md for AI Agents to utilise NeneUI properly Thanks for reading. love you all 🥰🥰"}, {"post_id": 77906, "ts": "2026-10-08T18:28:36Z", "hours": 0.7811, "text": "Devlog (No.22) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere NeneWorld - An Sample App NeneWorld is an Sample App for @neneys /ui Showcasing some Little Things of NeneUI. *Who Made It? : * Claude! Yes SKILL.md is coming soon to everyone, where the AI can read SKILL.md and create an App using NeneUI Library. Features? of this Sample App Demo of NeneBottomnav, NeneDisplay Images Buttons and Callback Pokedex Dw, Only the Sample is AI-written, The Main Project @neneys /ui Library is still an human-made project. And i do not want AI to take over NeneUI and write it itself, that would ruin this Library Why Skill.MD? So, that Users Can make an App using NeneUI and also ask AI For Help where they feel stuck. Tho it consumes tokens alot, cus NeneUI is becoming an more larger library Excuz me what is NeneUI? As i told earlier, NeneUI allows you to write the entire App UI in TypeScript and Render it Server-Side and produce in front of User. AND NO NENEUI IS NOT A WEBVIEW. It translates TypeScript into NATIVE Flutter Widgets. So the Interface feels native and uses Less RAM in this RAM Crisis Economy. Status? NeneUI is still in early stages, as i consider it. It still lacks many things such as an shared_preferences Implementation, WebSockets and proper Secure JavaScript Execution System. Conclusion I love if i get even tiny support for NeneUI and the people reading this devlog, I love you all who support me ;) Love you >3… Thanks for reading…!!!!"}, {"post_id": 77561, "ts": "2026-10-07T14:14:36Z", "hours": 1.3781, "text": "Devlog (No.21) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Widget & Major Feature Added NeneDisplay to Change the Area of the Screen with a custom route, Like we see on normal apps. NeneDisplay It follows the index of bottomNavbar (or prescribed Variable) and loads the corresponding Page on the Area specified. Only Scaffold Body as a whole is supported as of now. NeneDisplay ({ urlMap : { 0 : \" /ui/route_a \" , 1 : \" /ui/route_b \" } }) It has urlMap and followIndex arguments only. Quick Note: It does not create a complete new Nene IDDB, It exists on top of the existing one so the variables do not disappear that were assigned by previous page . Thanks for reading today!! I hope your day goes well Love you all >3"}, {"post_id": 77257, "ts": "2026-10-06T09:21:43Z", "hours": 1.04, "text": "Devlog (No.20) - A tiny update NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere CUSTOM WIDGET YAY!!!! NeneBottomNavbar Bottom Navigation Bar for NeneUI Apps! With Two Types for Now normal , float About NeneNavbottom and NeneNavItem are the new widgets added. Any New Widget? Yes, NeneSidebar as well and NeneDisplay for Route and SPA System THANKS for Reading !!! Love you all."}, {"post_id": 76497, "ts": "2026-10-03T19:12:05Z", "hours": 1.4064, "text": "Devlog (No.19) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Changes Added a Mouse Hover Effect like in Inspect Element for Debug Bar Docs Changes Added Docs about SingleChildScrollView Compare & Variables Documentation Breadcrumbs Future Changes Custom Widgets Layout Widgets mostly Custom BottomNavBar Possible WebUI for SEO Purposes I’ve planned with PHP, Next.js but i have to yet choose which one would be easier to implement and best SEO. I’m having a slight fever, so i’m unable to update many things i’ve planned in my mind, i apologise for it. Anyways Thanks everyone, Love you for the support ❤️"}, {"post_id": 74963, "ts": "2026-09-28T18:21:51Z", "hours": 2.1094, "text": "Devlog (No.18) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Feature & Changes Changed Overlay Circular Progress Indicator to LinearProgressIndicator near AppBar for Form Submit New Action RELOAD UI (Soft-reloads UI) DebugBar (A.k.a Orb) Stays always active Docs Changes Add Layouts Docs (Column,Row) Avatar Widget Docs Button, ButtonGroup MainAxis, CrossAxis Documented That’s it for today, Thanks for Reading!!"}, {"post_id": 74142, "ts": "2026-09-26T19:17:54Z", "hours": 2.5919, "text": "Devlog (No.17) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes Fix where Height/Width of Image’s Default Value was always 0. Docs Progress Added Content Documentation Added Feedback Widgets Docs such as Progress, CircularProgressIndicator, etc. Experiment Tried to Experiment with Rust Renderer, It did not work as i don’t know rust much properly Desktop Apps - Planning Update I’ve planned to make the Desktop Apps be static but built from TypeScript and Bundle Flutter + Bun Shipping Desktop Apps. Stardance Example In the Stardance Example, I’ve added Banner Images Support if available and Creation Date and Devlog Count. More to come on the way. Thanks for reading everyone Love you all >3….."}, {"post_id": 73495, "ts": "2026-09-25T07:31:02Z", "hours": 2.2736, "text": "Devlog (No.16) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes in NeneUI Fixed a Bug where Padding caused Null Error in Some Widgets Fixed Card not having color passed down to UI Renderer Docs Updates The Documentation of Actions and Forms is now Complete!! Next Up Feedback and more! Example App (WIP) The Example app is located in stardance_ui.ts <– It’s an utilisation of Stardance API to show something and render it in NeneUI! (It’s in very very early stage also it’s letting me discover more stability bugs along with it.) Info on Plugins I’m planning to pause on Plugins development and not include the @neneys /payments plugin in Testing Kit for Now. Desktop App (Electron-like Solution) - [Planned] I’m planning to make an Electron-like Framework but instead of Chromium we’ll use NeneUI to render the Desktop App. Thank you for reading!! I love the readers ;)"}, {"post_id": 72332, "ts": "2026-09-22T17:57:30Z", "hours": 2.1519, "text": "Devlog (No.15) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere What’s New in Docs? -> I’ve Separated Base Components and Form Components -> TextField, ColorPicker, CheckBox Docs Added -> Sample Callback has been added What’s Next? Add Actions and DoAction Docs and Explaining Callbacks Navigation System What did i discover? Appearently if you do not have Scaffold in a new page, Flutter makes it completly black page. It seems like Scaffold is required to be defined from NeneUI Server-Side. Plans in NeneUI Implement More Controlled JavaScript Environment and Allow Enabling and Disabling JavaScript. Restrictions and More Functions to Manipulate Widgets One More thing Apparently, The NPM Package and Flutter Package is recieving alot of Downloads in week, idk how, But I’m very happy and i really want to thank them. . Anyways . Thank you for reading my devlog. Love you all!!!! 🥰🥰"}, {"post_id": 70646, "ts": "2026-09-19T14:48:32Z", "hours": 3.0544, "text": "Devlog (No.14) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Docs, Finally! Tho it’s not complete but foundation is now laid! Using Docsaurus for the Docs Changes in NeneUI? Upgrade Sample App Version Publish 0.0.6 to Dart for Combability Docs is available at https://kwe26.github.io/neneui/ NeneUI is becoming more and more productional! New Features & Bug Fixes Coming on the WAY!!! NOTE: Only a few components are documented as of now! Thanks for Reading Love you all 😘😘"}, {"post_id": 69490, "ts": "2026-09-17T04:53:57Z", "hours": 7.1178, "text": "Devlog (No.13) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes And Improvements Fix Bug where FormSubmit would .pop the context out Upgrade flutter_js to flutter_quickjs Improve NeneUI Testing Kit for Android Setup Plugins Support New Features @neneys /payments - Yes, You can Accept Payments from NeneUI now too! Docs - Working on a Documentation based on Docusaurus What’s Next? Improving JS Execution and Making it More Secure Working on Form Submission to fix some issues An Proper Docs for every Humans! Making @neneys /payments on Flutter to use url_launcher or Native Plugins instead of rendering it in Web, would be better. More Plugins!! Hey, i’ve been thinking would it be good idea, if we make it an Electron like Windows/Linux/macOS App Making too but instead of Chromium it’ll be flutter render?? Thanks, kwee26 Love you all 🥰"}, {"post_id": 67573, "ts": "2026-09-13T18:27:12Z", "hours": 1.0572, "text": "Devlog (No.12) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes & Improvements Larger Files Now Do not Freeze The Entire App It can now process Large Files (e.g. Ubuntu ISO) A Single Error in Widget (exclusion of RenderOverflows) now don’t block entire app, As seen in Screenshot (2) below Error Handling has been improved. Re-Designed: NeneUI Testing Tool It has been Renamed into NeneUI Testing Kit It now has a Nice Looking UI with Nene in Right! Links to Project now included and Confirmation of Launch App and Plugins Selection Anyways, That’s it for Today! Thank you! Love you all 🤞🥰"}, {"post_id": 67046, "ts": "2026-09-13T02:51:26Z", "hours": 2.0111, "text": "Devlog (No.11) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Widget (as a plugin) : VideoFrame Widget, Currently this is an prototype and i don’t gurantee complete stableness in this VideoFrame. Other Major Changes Migrated to Latest Flutter SDK Removed Material Mentions Upgraded shadcn_flutter New Fatal Error When Starting up I have re-designed the Fatal Error when NeneUI couldn’t be initialized for some reason, now you can Try Again or even copy the Stacktrace on why is it happening What are the plans? Improve Stability & Performance Focus more on Documentation Theese Suggestions were given by Anon in Review, and i think i should focus on them more. And that’s it for now Thank you, for reading Love you all 😘😘"}, {"post_id": 65523, "ts": "2026-09-10T18:36:33Z", "hours": 1.1789, "text": "Devlog (No.10) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Here are the changes that were made and are planned NeneUI Tester Pre-hosted NeneUI Examples @neneys /payments system Video, Audio Players Custom Widget SharedPreferences Please suggest more changes that can be added to @neneys /ui Love you all ❤️"}, {"post_id": 51713, "ts": "2026-08-21T15:22:14Z", "hours": 5.1417, "text": "Devlog (No.9) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere I hope this is the last Devlog, before shipping the first version Here’s the List of Changes made Added an Sample Project Extended Docs and Readme.md Fixed Bugs in TS Library Themes Support! showDialog -> showOverlay Package Renamed to as @neneys /ui I really love this project, i always hoped for an Remote Server Side Native UI Rendering, And here we are with first release!!! I hope for your genuine support and love for this project! Thanks, I love everyone ❤️ !"}, {"post_id": 30251, "ts": "2026-07-17T17:55:58Z", "hours": 6.4769, "text": "Devlog (No.8) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere I’ve thought of more useful features and added them as well, and you will love it Here are the list of the features i’ve added File Uploads!! Breadcrumbs PropsReplacement Improved Nene HTTP ColorPickers! Some Docs Image Memory File uploads was the hardest part to do, it took a lot of time debugging and working around then there was loading image from memory i had to figure out what to do, so i just made it to load the selected file from memory Known Funny Issue: Please don’t try uploading a GB worth of file, it freezes up your system, i think i may try writing an exception that prevents 500MB+ file being uploaded otherwise it’s disaster I’m planning to ship 1st release by next blog soon enough, working on it from now on so it would be easier for everyone to use it Here’s the Screenshot"}, {"post_id": 15198, "ts": "2026-06-24T18:20:21Z", "hours": 5.385, "text": "Devlog (No.7) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere I’ve been thinking and working on new features which would make it possible for NeneUI to be used productionally by all the developers New Features ForEach Widget Support to ForEach Terms Column ( ' #forEachTest ' , { mainAxisAlignment : MainAxis . start , crossAxisAlignment : CrossAxis . start , foreach : true , children : ForEach ( ' #forEachW ' , { varToForEach : \" testMap \" , namespaceVar : \" testMap \" , child : Row ( ' #roWCh ' , { children : [ Text ( ' #TextABC ' , { text : Var ({ template : \" Hello, %1 (%2) \" , variable : \" for.title,for.gender \" }) }) ] }) }) }) The Code ForEach will only work inside children:[] where multiple widgets can be rendered Such as Row, Flex, Table Frame Widget Frame ( ' #frame ' , { framePath : \" /ui/test \" }) This Widget Functions just like IFrames in HTML to render something inside another page Table Widgets The Table Widgets Include Table , TableCell , TableFooter , TableRow , TableSize DatePicker Widget DatePicker ( ' #dtp ' , { mode : PromptMode . dialog , defaultDate : DateTime . now () }) PromptMode and DateTime are now integrated within Core.ts JavaScript Code Execution!! YOU CAN NOW EXECUTE JAVASCRIPT CODE TOO!! DoAction ( Action . JAVASCRIPT , `console.log(\"Var: \"+getVariable(\"#userName.controller\")); action(' ${ Action . SHOW_TOAST } ', Date.now() + ' Hello World ' + getVariable(\"#userName.controller\"));` ) Currently Using flutter_js which in turn uses QJS behind the scenes Modifications Image now supports Variable URL Support as well showScaffold Flag has been added to Daikon Renderer for Frame Planned Stuffs ListView and GridView Support in Future Updates Usable JS Features OTP Input and More Shadcn_flutter Widgets Thanks for Reading!!!!"}, {"post_id": 8648, "ts": "2026-06-14T11:32:13Z", "hours": 5.4906, "text": "Devlog 7 . Context: it is an Server-Side Rendering Library for Flutter Apps so the UI can be updated without even touching flutter’s code or re-compiling the app. . . New Features Added NeneHTTP and NeneCallback for Callback (IPC-like) Add AlertDialog Support Add HoverCard Widget Improve Types of Widgets to Ensure Easy Integration Remove Unused Imports Half-Done ForEach Support, Quite Difficult but will try to implement it soon. FormSubmit Button Widget Added Widget Props Manipulation as well to Manipulate or Replace Widget at any place. . I’m working on more new features to integrate, hopefully they get integrated with ease."}, {"post_id": 7465, "ts": "2026-06-12T13:27:31Z", "hours": 5.6386, "text": "Devlog 6 . . Context: It is an Server Side Rendering Library for Flutter Apps so the UI can be updated without even touching flutter’s code and re-compiling the entire app. . New Features Introduced CheckBox and TextField widgets with state reading support Added Context Menu functionality for various widgets Added NavigationItem, NavigationGroup, and NavigationDivider components Implemented Compare() for conditional UI rendering Added Refresh Interface option in Daikon Debug Integrated Iconify API for dynamic icon resolution and rendering . . I Plan to add More Features sooner enough. Completing NeneUI."}, {"post_id": 6281, "ts": "2026-06-10T15:43:26Z", "hours": 2.4778, "text": "Devlog #5 . Project Context: . This is a Server Side Rendering Library for Flutter that allows you to update the User Interface of app without completely re-building the app granting control from server-side and natively render all widgets instead of WIdget. . . In This Update I’ve added Image Widget Complete Support in Daikon Renderer along with SVG Support Daikon Debugger Variable Display and Setting ButtonGroup Widget too! You can see the attached video!!."}, {"post_id": 5810, "ts": "2026-06-09T18:58:11Z", "hours": 1.1883, "text": "Devlog #4 . Context for thoose who don’t know: I’m making an Server Side Rendering Library, Where You can Update your App without updating the entire app everywhere. Write in JS, Works in FLutter . Updates: Add New Widgets such as Card, Image, Feedback Widget (CircularProgressIndicator, LinearProgressIndicator, Button), Add Actions for Simple Reactivity . It uses the ID_Database to Manage Visibility of Widgets (Demo Given), The Actions can also invoke Navigation Push and Push Replace. and Also Show TOAST!! . Hope to see more coming changes soon to make it productional use ;) 😋. Thanks Kiwi"}, {"post_id": 5536, "ts": "2026-06-09T10:51:53Z", "hours": 2.0575, "text": "Devlog #3.1 . Context for thoose who don’t know: I’m making a library that can render user interface for flutter from JavaScript, You can also refer it as Server Side UI Rendering, Where you can update your flutter apps without Updating the entire app. . I’ve added Some More Widgets such as Card, Image, Expanded, Container support to Flutter Render too! . Some Feedback Widgets are also added such as CircularProgressIndicator and LinearProgressIndicator . I’m also planning on idDatabase Manipulation and doAction() to perform actions as well. . I’m planning on to adding more and also an Tiny JS Runtime as well for Reactivvity (i’ve planend it for now) . More things Coming ;) 🥰"}, {"post_id": 5395, "ts": "2026-06-09T04:36:02Z", "hours": 1.1511, "text": "Devlog #3 . Context for thoose who don’t know: I’m making a library that can render user interface for flutter from JavaScript, You can also refer it as Server Side UI Rendering, Where you can update your flutter apps without Updating the entire app. . I’ve finally made it to parse and render the User Interface in Flutter, I’ts really minimal right now. . I’m focusing to add more Widgets and stuff and reactivity of widgets in the end. . There’s lot more things coming ;;33😉"}, {"post_id": 5041, "ts": "2026-06-08T18:19:18Z", "hours": 1.4267, "text": "I have partially done the flutter renderer, haven’t tested it yet. will continue working tomorrow."}, {"post_id": 4852, "ts": "2026-06-08T11:53:22Z", "hours": 1.4711, "text": "Hi there, I’m working on a Server Side UI Rendering Linking Flutter and JavaScript. . You will write the code in javascript and it will be converted into JSON, which the flutter will parse and render. it is much more effective than WebView Apps. . And Since it’s Native means Native Performance too. . Currently I’ve only added few widgets in TypeScript only. . Scaffold, Center, Container, EdgeInsets, Expanded, Padding, SizedBox, Column, Row, SingleChildScrollView, Flex, Text, TextStyle . And Some Enums as well. . I’ve not made Flutter Renderer Yet. The lib/* currently looks like."}]...
|
Title: NeneUI (@neneys/ui) by @pksmkwe26 | Stardan Title: NeneUI (@neneys/ui) by @pksmkwe26 | Stardance
Devlogs:
Hi there, I’m working on a Server Side UI Rendering Linking Flutter and JavaScript. . You will write the code in javascript and it will be converted into JSON, which the flutter will parse and render. it is much more effective than WebView Apps. . And Since it’s Native means Native Performance too. . Currently I’ve only added few widgets in TypeScript only. . Scaffold, Center, Container, EdgeInsets, Expanded, Padding, SizedBox, Column, Row, SingleChildScrollView, Flex, Text, TextStyle . And Some Enums as well. . I’ve not made Flutter Renderer Yet. The lib/* currently looks like.
I have partially done the flutter renderer, haven’t tested it yet. will continue working tomorrow.
Devlog #3 . Context for thoose who don’t know: I’m making a library that can render user interface for flutter from JavaScript, You can also refer it as Server Side UI Rendering, Where you can update your flutter apps without Updating the entire app. . I’ve finally made it to parse and render the User Interface in Flutter, I’ts really minimal right now. . I’m focusing to add more Widgets and stuff and reactivity of widgets in the end. . There’s lot more things coming ;;33😉
Devlog #3.1 . Context for thoose who don’t know: I’m making a library that can render user interface for flutter from JavaScript, You can also refer it as Server Side UI Rendering, Where you can update your flutter apps without Updating the entire app. . I’ve added Some More Widgets such as Card, Image, Expanded, Container support to Flutter Render too! . Some Feedback Widgets are also added such as CircularProgressIndicator and LinearProgressIndicator . I’m also planning on idDatabase Manipulation and doAction() to perform actions as well. . I’m planning on to adding more and also an Tiny JS Runtime as well for Reactivvity (i’ve planend it for now) . More things Coming ;) 🥰
Devlog #4 . Context for thoose who don’t know: I’m making an Server Side Rendering Library, Where You can Update your App without updating the entire app everywhere. Write in JS, Works in FLutter . Updates: Add New Widgets such as Card, Image, Feedback Widget (CircularProgressIndicator, LinearProgressIndicator, Button), Add Actions for Simple Reactivity . It uses the ID_Database to Manage Visibility of Widgets (Demo Given), The Actions can also invoke Navigation Push and Push Replace. and Also Show TOAST!! . Hope to see more coming changes soon to make it productional use ;) 😋. Thanks Kiwi
Devlog #5 . Project Context: . This is a Server Side Rendering Library for Flutter that allows you to update the User Interface of app without completely re-building the app granting control from server-side and natively render all widgets instead of WIdget. . . In This Update I’ve added Image Widget Complete Support in Daikon Renderer along with SVG Support Daikon Debugger Variable Display and Setting ButtonGroup Widget too! You can see the attached video!!.
Devlog 6 . . Context: It is an Server Side Rendering Library for Flutter Apps so the UI can be updated without even touching flutter’s code and re-compiling the entire app. . New Features Introduced CheckBox and TextField widgets with state reading support Added Context Menu functionality for various widgets Added NavigationItem, NavigationGroup, and NavigationDivider components Implemented Compare() for conditional UI rendering Added Refresh Interface option in Daikon Debug Integrated Iconify API for dynamic icon resolution and rendering . . I Plan to add More Features sooner enough. Completing NeneUI.
Devlog 7 . Context: it is an Server-Side Rendering Library for Flutter Apps so the UI can be updated without even touching flutter’s code or re-compiling the app. . . New Features Added NeneHTTP and NeneCallback for Callback (IPC-like) Add AlertDialog Support Add HoverCard Widget Improve Types of Widgets to Ensure Easy Integration Remove Unused Imports Half-Done ForEach Support, Quite Difficult but will try to implement it soon. FormSubmit Button Widget Added Widget Props Manipulation as well to Manipulate or Replace Widget at any place. . I’m working on more new features to integrate, hopefully they get integrated with ease.
Devlog (No.7) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere I’ve been thinking and working on new features which would make it possible for NeneUI to be used productionally by all the developers New Features ForEach Widget Support to ForEach Terms Column ( ' #forEachTest ' , { mainAxisAlignment : MainAxis . start , crossAxisAlignment : CrossAxis . start , foreach : true , children : ForEach ( ' #forEachW ' , { varToForEach : " testMap " , namespaceVar : " testMap " , child : Row ( ' #roWCh ' , { children : [ Text ( ' #TextABC ' , { text : Var ({ template : " Hello, %1 (%2) " , variable : " for.title,for.gender " }) }) ] }) }) }) The Code ForEach will only work inside children:[] where multiple widgets can be rendered Such as Row, Flex, Table Frame Widget Frame ( ' #frame ' , { framePath : " /ui/test " }) This Widget Functions just like IFrames in HTML to render something inside another page Table Widgets The Table Widgets Include Table , TableCell , TableFooter , TableRow , TableSize DatePicker Widget DatePicker ( ' #dtp ' , { mode : PromptMode . dialog , defaultDate : DateTime . now () }) PromptMode and DateTime are now integrated within Core.ts JavaScript Code Execution!! YOU CAN NOW EXECUTE JAVASCRIPT CODE TOO!! DoAction ( Action . JAVASCRIPT , `console.log("Var: "+getVariable("#userName.controller")); action(' ${ Action . SHOW_TOAST } ', Date.now() + ' Hello World ' + getVariable("#userName.controller"));` ) Currently Using flutter_js which in turn uses QJS behind the scenes Modifications Image now supports Variable URL Support as well showScaffold Flag has been added to Daikon Renderer for Frame Planned Stuffs ListView and GridView Support in Future Updates Usable JS Features OTP Input and More Shadcn_flutter Widgets Thanks for Reading!!!!
Devlog (No.8) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere I’ve thought of more useful features and added them as well, and you will love it Here are the list of the features i’ve added File Uploads!! Breadcrumbs PropsReplacement Improved Nene HTTP ColorPickers! Some Docs Image Memory File uploads was the hardest part to do, it took a lot of time debugging and working around then there was loading image from memory i had to figure out what to do, so i just made it to load the selected file from memory Known Funny Issue: Please don’t try uploading a GB worth of file, it freezes up your system, i think i may try writing an exception that prevents 500MB+ file being uploaded otherwise it’s disaster I’m planning to ship 1st release by next blog soon enough, working on it from now on so it would be easier for everyone to use it Here’s the Screenshot
Devlog (No.9) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere I hope this is the last Devlog, before shipping the first version Here’s the List of Changes made Added an Sample Project Extended Docs and Readme.md Fixed Bugs in TS Library Themes Support! showDialog -> showOverlay Package Renamed to as @neneys /ui I really love this project, i always hoped for an Remote Server Side Native UI Rendering, And here we are with first release!!! I hope for your genuine support and love for this project! Thanks, I love everyone ❤️ !
Devlog (No.10) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Here are the changes that were made and are planned NeneUI Tester Pre-hosted NeneUI Examples @neneys /payments system Video, Audio Players Custom Widget SharedPreferences Please suggest more changes that can be added to @neneys /ui Love you all ❤️
Devlog (No.11) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Widget (as a plugin) : VideoFrame Widget, Currently this is an prototype and i don’t gurantee complete stableness in this VideoFrame. Other Major Changes Migrated to Latest Flutter SDK Removed Material Mentions Upgraded shadcn_flutter New Fatal Error When Starting up I have re-designed the Fatal Error when NeneUI couldn’t be initialized for some reason, now you can Try Again or even copy the Stacktrace on why is it happening What are the plans? Improve Stability & Performance Focus more on Documentation Theese Suggestions were given by Anon in Review, and i think i should focus on them more. And that’s it for now Thank you, for reading Love you all 😘😘
Devlog (No.12) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes & Improvements Larger Files Now Do not Freeze The Entire App It can now process Large Files (e.g. Ubuntu ISO) A Single Error in Widget (exclusion of RenderOverflows) now don’t block entire app, As seen in Screenshot (2) below Error Handling has been improved. Re-Designed: NeneUI Testing Tool It has been Renamed into NeneUI Testing Kit It now has a Nice Looking UI with Nene in Right! Links to Project now included and Confirmation of Launch App and Plugins Selection Anyways, That’s it for Today! Thank you! Love you all 🤞🥰
Devlog (No.13) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes And Improvements Fix Bug where FormSubmit would .pop the context out Upgrade flutter_js to flutter_quickjs Improve NeneUI Testing Kit for Android Setup Plugins Support New Features @neneys /payments - Yes, You can Accept Payments from NeneUI now too! Docs - Working on a Documentation based on Docusaurus What’s Next? Improving JS Execution and Making it More Secure Working on Form Submission to fix some issues An Proper Docs for every Humans! Making @neneys /payments on Flutter to use url_launcher or Native Plugins instead of rendering it in Web, would be better. More Plugins!! Hey, i’ve been thinking would it be good idea, if we make it an Electron like Windows/Linux/macOS App Making too but instead of Chromium it’ll be flutter render?? Thanks, kwee26 Love you all 🥰
Devlog (No.14) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Docs, Finally! Tho it’s not complete but foundation is now laid! Using Docsaurus for the Docs Changes in NeneUI? Upgrade Sample App Version Publish 0.0.6 to Dart for Combability Docs is available at https://kwe26.github.io/neneui/ NeneUI is becoming more and more productional! New Features & Bug Fixes Coming on the WAY!!! NOTE: Only a few components are documented as of now! Thanks for Reading Love you all 😘😘
Devlog (No.15) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere What’s New in Docs? -> I’ve Separated Base Components and Form Components -> TextField, ColorPicker, CheckBox Docs Added -> Sample Callback has been added What’s Next? Add Actions and DoAction Docs and Explaining Callbacks Navigation System What did i discover? Appearently if you do not have Scaffold in a new page, Flutter makes it completly black page. It seems like Scaffold is required to be defined from NeneUI Server-Side. Plans in NeneUI Implement More Controlled JavaScript Environment and Allow Enabling and Disabling JavaScript. Restrictions and More Functions to Manipulate Widgets One More thing Apparently, The NPM Package and Flutter Package is recieving alot of Downloads in week, idk how, But I’m very happy and i really want to thank them. . Anyways . Thank you for reading my devlog. Love you all!!!! 🥰🥰
Devlog (No.16) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes in NeneUI Fixed a Bug where Padding caused Null Error in Some Widgets Fixed Card not having color passed down to UI Renderer Docs Updates The Documentation of Actions and Forms is now Complete!! Next Up Feedback and more! Example App (WIP) The Example app is located in stardance_ui.ts <– It’s an utilisation of Stardance API to show something and render it in NeneUI! (It’s in very very early stage also it’s letting me discover more stability bugs along with it.) Info on Plugins I’m planning to pause on Plugins development and not include the @neneys /payments plugin in Testing Kit for Now. Desktop App (Electron-like Solution) - [Planned] I’m planning to make an Electron-like Framework but instead of Chromium we’ll use NeneUI to render the Desktop App. Thank you for reading!! I love the readers ;)
Devlog (No.17) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Bug Fixes Fix where Height/Width of Image’s Default Value was always 0. Docs Progress Added Content Documentation Added Feedback Widgets Docs such as Progress, CircularProgressIndicator, etc. Experiment Tried to Experiment with Rust Renderer, It did not work as i don’t know rust much properly Desktop Apps - Planning Update I’ve planned to make the Desktop Apps be static but built from TypeScript and Bundle Flutter + Bun Shipping Desktop Apps. Stardance Example In the Stardance Example, I’ve added Banner Images Support if available and Creation Date and Devlog Count. More to come on the way. Thanks for reading everyone Love you all >3…..
Devlog (No.18) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Feature & Changes Changed Overlay Circular Progress Indicator to LinearProgressIndicator near AppBar for Form Submit New Action RELOAD UI (Soft-reloads UI) DebugBar (A.k.a Orb) Stays always active Docs Changes Add Layouts Docs (Column,Row) Avatar Widget Docs Button, ButtonGroup MainAxis, CrossAxis Documented That’s it for today, Thanks for Reading!!
Devlog (No.19) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Changes Added a Mouse Hover Effect like in Inspect Element for Debug Bar Docs Changes Added Docs about SingleChildScrollView Compare & Variables Documentation Breadcrumbs Future Changes Custom Widgets Layout Widgets mostly Custom BottomNavBar Possible WebUI for SEO Purposes I’ve planned with PHP, Next.js but i have to yet choose which one would be easier to implement and best SEO. I’m having a slight fever, so i’m unable to update many things i’ve planned in my mind, i apologise for it. Anyways Thanks everyone, Love you for the support ❤️
Devlog (No.20) - A tiny update NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere CUSTOM WIDGET YAY!!!! NeneBottomNavbar Bottom Navigation Bar for NeneUI Apps! With Two Types for Now normal , float About NeneNavbottom and NeneNavItem are the new widgets added. Any New Widget? Yes, NeneSidebar as well and NeneDisplay for Route and SPA System THANKS for Reading !!! Love you all.
Devlog (No.21) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Widget & Major Feature Added NeneDisplay to Change the Area of the Screen with a custom route, Like we see on normal apps. NeneDisplay It follows the index of bottomNavbar (or prescribed Variable) and loads the corresponding Page on the Area specified. Only Scaffold Body as a whole is supported as of now. NeneDisplay ({ urlMap : { 0 : " /ui/route_a " , 1 : " /ui/route_b " } }) It has urlMap and followIndex arguments only. Quick Note: It does not create a complete new Nene IDDB, It exists on top of the existing one so the variables do not disappear that were assigned by previous page . Thanks for reading today!! I hope your day goes well Love you all >3
Devlog (No.22) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere NeneWorld - An Sample App NeneWorld is an Sample App for @neneys /ui Showcasing some Little Things of NeneUI. *Who Made It? : * Claude! Yes SKILL.md is coming soon to everyone, where the AI can read SKILL.md and create an App using NeneUI Library. Features? of this Sample App Demo of NeneBottomnav, NeneDisplay Images Buttons and Callback Pokedex Dw, Only the Sample is AI-written, The Main Project @neneys /ui Library is still an human-made project. And i do not want AI to take over NeneUI and write it itself, that would ruin this Library Why Skill.MD? So, that Users Can make an App using NeneUI and also ask AI For Help where they feel stuck. Tho it consumes tokens alot, cus NeneUI is becoming an more larger library Excuz me what is NeneUI? As i told earlier, NeneUI allows you to write the entire App UI in TypeScript and Render it Server-Side and produce in front of User. AND NO NENEUI IS NOT A WEBVIEW. It translates TypeScript into NATIVE Flutter Widgets. So the Interface feels native and uses Less RAM in this RAM Crisis Economy. Status? NeneUI is still in early stages, as i consider it. It still lacks many things such as an shared_preferences Implementation, WebSockets and proper Secure JavaScript Execution System. Conclusion I love if i get even tiny support for NeneUI and the people reading this devlog, I love you all who support me ;) Love you >3… Thanks for reading…!!!!
Devlog (No.23) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Features Shared Preferences ReqType Action.SOFT_RELOAD SharedPreferences You can use SET_PREFS and REM_PREFS Action to Set or Remove and PREF_EXISTS with exists and not parameters for functions GetPrefs When ReqType.POST is present you could use GetPrefs to get the preference value in UI/Callback Route GetFile Returns File Uploaded’s Path as in uploads/file.extension only works in Callback as that’s the place where you could recieve file. Action.SOFT_RELOAD Reloads the Screen without Changing any State or Position of Page. Other Changes :- Remove Old docs/ folder and SKILL.md for AI Agents to utilise NeneUI properly Thanks for reading. love you all 🥰🥰
Devlog (No.24) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere WebSocket Support NeneUI now supports WebSocket Rendering and Execution WebSocket ({ url : " ws://localhost:3500/ws/home " , }) What Can it Do? Show Widgets Over WebSockets Execute Actions Use Cases? ChatBots Live News? Messaging? New Action Action.SEND_SOCKET Uses FormSubmitAction as Parameter with :socket: as the callbackPath New Functions SendWidget(socket, Widget) SendAction(socket, DoAction) Thanks for Reading! Love you all readers >3!
Devlog (No.25) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere New Widget Layouts Layout Layouts and Layout It helps you make an Layout on Screen as show in Screenshot. And It can be arranged via an Handle too, It supports unlimited Layout on Screen as much as space is there. Removed Removed Skeleton Widget from Docs as it was no-longer rendering properly README.md The README.md is now updated with some Images and Decorative Work for looking more nicer and attractive New Action New Action such as ACTION.SET_DISPLAY_INDEX and ACTION.CLOSE_OVERLAY AlertDialog is now documented under FeedBack Section Nene Desktop Runtime Nene Desktop Runtime is half-done and still has some issues, will try to fix it and make it install and run Apps soon! Thanks for reading!! I love you all >3
Devlog (No.26) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Web - Platform Support Finally, @neneys /ui is now supported on Web (Flutter Web). The Inconsistencies are now managed making @neneys /ui work directly on Web Too. *Limitations on Web * Same as Flutter Web - It’s hard for crawlers to idenitfy content of web pages. I’m trying to fix that issue by double-rendering. Mostly by Setting-up an PHP to Interept the UI into HTML for Crawlers Making SEO work good! README.md Changes FAQ Added into README (Address the Linux Compile Issue in FAQ related to quickjs_engine) More Decorative Elements Github Actions Nene UI Testing Kit finally compiles on all 5 (Windows, Linux, Android, iOS, macOS) successfuly. Linux, macOS - May require libmpv to be installed or available on system path We seem to be very close to first v1 Release with maximum widgets and support. Thanks for Reading!! I love you all 3<.!!!
Devlog (No.27) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere JavascriptEngine JavaScriptEngine({…}) which could control Whether JS should be enabled or not and how much stackSize should be specified. xhr should be enabled or disabled SEO Support for Flutter Web With the Help of PHP to Render Text, Image and some minimal data. PHP can provide basic Page to Crawlers requesting the site. So that SEO could be utilised. However, PHP Version Selection is limited to only allow the recently patched PHP versions for Security Reasons. Github Actions Added Nene Desktop Runtime to be built in Github Actions Bug FIxes @neneys /ui had a Critical Memory and GPU Leak issue which kept the GPU usage at constant high even when not being used and being left Idle. Docs Updates JavaScript Execution and SEO Setup are now documented in the Docs and pub.dev and npmjs packages are now updated NeneUI Testing Kit NeneUI Testing Kit are now available on Web https://kwe26.github.io/neneui/tester However It could only open HTTPS and Cors (*) Apps only and is kind of limited with some JS Execution Issues. The User Interface of Testing Kit is also quite updated. Close to Release NeneUI is now Close to being 1.0.0 Release finally! Within 1-2 devlogs i’ll be shipping soon.!! Thanks for reading! Love you <3!
Devlog (No.28) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere README.md README.md has been improved alot with visual designs and details with Links and References Provided too and some Yashiro Nene based Images. Figma File is provided in link. Docs Updates The Home Page of Docs has been updated to look better and provide more information about NeneUI. The Docs Is now extended and now includes more information about implemented Widgets and Link to NeneUI Testing Kit NeneUI Testing Kit The NeneUI Testing Kit has been updated to show examples of @neneys /ui One being an AI Chat Application and other being an random Test with Pokedex, etc. Nene Desktop Runtime While Still Work in Progress, You can now follow the docs to Launch and test the Desktop Runtime. The Desktop Runtime is a standalone application that could embed @neneys /ui in it and Make Desktop Applications with just TypeScript. A Stable Release NeneUI will be released as a stable version 1.0.0 with Pub.dev and NPM Versions available soon as possible and will be kept updated Thanks for your support till 1.0.0 Release! I hope we meet soon! Thanks <3333
Devlog (No. 29) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere About the Memory Leak Issue being Fixed Many People in Review told me how did the Memory Leak get fixed and what was the cause of it? Blog Link May not open now, Since it hasn’t been built yet Docs Changes So, Here’s the docs with it being documented in the blog will be available once Github Actions Finishes Updated Debugger I’m working on a updated @neneys /ui Debugger to be more ease-to-use. Will be finished in a less time, The Debugger will allow the ease of accessing and modifying an Widget Data for the Session and manipulate Shared Preferences. Thanks for reading!! Love you all >3 ❤️
Devlog (No. 30) NeneUI is an Server Side User Interface Rendering Library allowing developers to design user interface purely server-side without worrying about updating the code everywhere Changes Update some parts of Daikon Debugger and removed some unnessary codes. Extended Debugger Width Desktop Runtime with unused RPC (will work on it) Explanation Diagram Drawn an Explanation Diagram on Figma that shows how Interface and Callbacks works, hope it’s good and does give some idea about @neneys /ui Thanks for reading this minidevlog.!! Love you all <3
Ships:
I made an Server-Side Rendering Library for Flutter, You write the Code in TypeScript and the Flutter Renderer (i named it Daikon) parses it into Native Code, Without WebViews! Completely Native. The Challenges i faced were, how to like index the widgets to be used while JSON becomes parsed and the handling of #ids and most importantly, ForEach Option and the JS Option. I used shadcn_flutter for UI Elements that were rendered, i really like shadcn_flutter’s Design. it’s really cool. I tried to keep it as much as user-friendly as possible, by adding TypeScript Types so VSCode Auto-complete could work. I have also added File Uploads feature with In-Memory Image Display too, if it’s an Image, it is really helpful, even with Server Callbacks and such things Theese are necessary for an production application. And Actions such as TOAST, DIALOG, NAVIGATE, etc. This is the intresting part too!! You can try out the library at https://www.npmjs.com/@neneys/ui for testing it out! While the docs is still not complete, i hope that the documented Widgets could work for your expirment too! I plan to continue this Library even after the program ends!! Love you all! 🥰
@neneys /ui - NeneUI It is an Server-Driven UI Library Which Interpretes TypeScript into an Native Rendered Flutter Widget. Basically, You can write your Entire App in TypeScript and It gets Rendered Into Native Flutter Widgets without WebView. Why? We need Server-Driven UI to ensure that we do not need to update an entire app for a little UI changes or even major overhauls of the App Interface, We could just change it on Server-Side and updated without going through the process of Approval and such. Major Updates After the Previous Ship NeneUI Testing Kit has been buffed with Debug Bar and More Platforms Support for WebSocket Rendering Web Support (along with SEO PHP for Web Crawlers) Memory/GPU Leak issues fixed! Advanced & Improved + Detailed Documentation Decorated README.md Documentation The New Documentation is now written in Docsaurus and hosted in Github Pages at https://kwe26.github.io/neneui/ along with the NeneUI Testing Kit at https://kwe26.github.io/neneui/tester . While it took alot of time documenting each working Widgets but it has now made using @neneys /ui more easier. New Widgets That were Added NeneDisplay and NeneNavbottom - Theese Two Widgets Now help you construct an Bottom Bar with Various Pages as Content that can be now switched from one place to another without reloading the entire page. Layouts and Layout - This allows you to put many Content on Side of Each Other and allow you the drag wheel to drag and arrange the size. WebSocket Widget - It can also render Widgets over WS live real-time making it an really useful feature. Some New Action Callbacks were also added such as SOFTRELOAD that softly reloads the UI without changing the states and maintains the UI. DebugBar The Testing Kit Now includes and Debug Bar to help Developers Reload the UI or check the #id Declarations and Variables Value NeneDesktopRuntime An Desktop Runtime that is WIP but could help replace Electron.js where everything is WebView and sucks alot of ram. But NeneDesktopRuntime can render the Widgets with TypeScript into Native Widgets. Examples There are now examples bundled with NeneUI Testing Kit, One is an AI Chat Application and other is called NeneWorld with Pokedex and Weather API and Country API uses to showcase the Widgets FAQ Page An FAQ Page has been added to ensure the Users dont get stuck somewhere in the library and could get some reference on it Such as the Linux issue with quickjs where the fix is provided. Conclusion There were alot of challenges while making this library with my Laptop dropping to 0.47GHz at random moments and searching the pub.dev docs for shadcn_flutter and upgrading sub-libraries and testing stuff the major headache being the Navigation and Web Support (SEO is done via PHP to show Web Crawlers meangingful HTML to index)....
|
1793054986.9895082
|
1793141386.9895082
|
|
18014
|
LewOS by @lando498 | Stardance
|
lando498
|
0
|
0.78
|
0
|
[]
|
[{"post_id": 8301, "ts": "2026 [{"post_id": 8301, "ts": "2026-06-13T20:00:18Z", "hours": 0.7811, "text": "it now works (mostly)"}]...
|
Title: LewOS by @lando498 | Stardance
Devlogs:
it Title: LewOS by @lando498 | Stardance
Devlogs:
it now works (mostly)...
|
1792479177.5626743
|
1793083977.5626743
|
|
65458
|
Escape The Facility! by @Mian_Ismail_Shahbaz_Ali | Escape The Facility! by @Mian_Ismail_Shahbaz_Ali | Stardance...
|
Mian_Ismail_Shahbaz_Ali
|
1
|
19.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T15:38:09Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I made ESCAPE THE FACILITY , a sci-fi text adventure set in an abandoned lunar research facility. Players explore rooms, collect equipment, fight hostile robots, solve a computer-terminal riddle, and find the Emergency Access Keycard to escape. I built a Python version and a browser version using HTML, CSS, and JavaScript. What was challenging? The most challenging part was debugging the game’s logic and making sure exploration, inventory, combat, and progression worked correctly. Creating a browser version alongside the Python game was also challenging, especially learning how the different web technologies fit together. What are you proud of? I’m proud that I turned my idea into a working game with two playable versions. I wrote most of the main gameplay code in Python and JavaScript, tested both versions, and published the project on GitHub with a live browser demo. What should people know so they can test your project? The browser version can be played here: https://mian-ismail-shahbaz-ali.github.io/escape-the-facility/ The source code and README are available here: https://github.com/Mian-Ismail-Shahbaz-Ali/escape-the-facility Players should explore the facility, manage their health and inventory, investigate the research areas, solve the riddle, defeat the security mech, obtain the keycard, and escape. Follow the in-game instructions to play.", "repo": "https://github.com/Mian-Ismail-Shahbaz-Ali/escape-the-facility", "demo": "https://mian-ismail-shahbaz-ali.github.io/escape-the-facility/"}]...
|
[{"post_id": 83004, "ts": "202 [{"post_id": 83004, "ts": "2026-10-26T15:01:42Z", "hours": 0.9992, "text": "Devlog 7 : Escape the Facility Built ESCAPE THE FACILITY , a sci-fi text adventure set in an abandoned lunar research facility, for Hack Club StarDance. The game features exploration, inventory management, combat, health and oxygen systems, surveillance recordings, and a riddle. I created two versions: one in Python and another for the browser using HTML, CSS, and JavaScript. I tested both versions, confirmed they worked properly, and pushed the final code to GitHub. GitHub: https://github.com/Mian-Ismail-Shahbaz-Ali/escape-the-facility This project helped me improve my programming, debugging, and testing skills while turning an idea into a working game."}, {"post_id": 82695, "ts": "2026-10-25T16:49:19Z", "hours": 2.2944, "text": "Devlog 6 : Escape the Facility Today, I spent time reviewing and improving the JavaScript version of my sci-fi text adventure. I worked through several fixes involving the pause menu, inventory, oxygen canisters, story text, and the Power Control Room. I also reviewed the game’s different mechanics, including exploration, combat, the Security Mech fight, the Research Lab riddle, oxygen management, and the escape sequence. I made the necessary changes while keeping the existing gameplay intact. After the fixes, I ran node –check game.js to check for JavaScript syntax errors, and it passed. Next, I’ll test the game from start to finish, check for any remaining bugs, finalize the README, and prepare my project for submission to Hack Club StarDance."}, {"post_id": 82340, "ts": "2026-10-24T16:32:00Z", "hours": 1.4903, "text": "Devlog 5 : Escape the Facility Today, I polished the game’s item selection and inventory options, removing unnecessary choices to make the interface cleaner. I also reviewed the latest version of the code and identified a few final improvements to make tomorrow before wrapping up the project. Getting closer to the finish line!"}, {"post_id": 82030, "ts": "2026-10-23T14:51:49Z", "hours": 1.3944, "text": "Devlog 4 : Escape the Facility Today, I fixed an issue with the Inventory system by adding a Return button and ensuring the Oxygen Canister option works correctly. I tested three different scenarios, and all passed! Next session, I’ll continue improving the game’s navigation, fix remaining bugs, test the different routes and mechanics, and work on polishing the overall gameplay experience."}, {"post_id": 80610, "ts": "2026-10-18T09:29:20Z", "hours": 1.5831, "text": "Devlog 3 : Escape the Facility Today, I worked on improving the browser version of Escape the Facility. I updated the Junction options, removed the option to return to the Airlock, and kept the Inventory button working as intended. I also fixed the Power Control Room progression so that restoring one system lets the player return to the Research Junction instead of being sent back to the main menu. After returning, the player can access the next progression options. I tested the changes and ran node –check game.js to confirm there were no syntax errors. Next up: implementing the Security and Research sections."}, {"post_id": 80336, "ts": "2026-10-17T10:01:07Z", "hours": 1.5411, "text": "Devlog 2 : Escape the Facility Today, I continued developing ESCAPE THE FACILITY and worked on making it playable directly in a web browser using HTML, CSS, and JavaScript. I tested the browser version and fixed bugs in the survival and combat systems, including issues with health and oxygen checks. I also worked on improving the combat display and reducing duplicate stats in the story text. Challenges: Debugging conditional logic and adapting my Python text adventure into a browser-based experience. Next Steps: Continue testing the game, polish the interface, fix any remaining bugs, and push the latest changes to GitHub."}, {"post_id": 79011, "ts": "2026-10-12T10:29:22Z", "hours": 9.9269, "text": "Devlog 1 : Escape the Facility Hey everyone! This is my first devlog for my StarDance project, ESCAPE THE FACILITY. I haven’t posted any devlogs yet because I’ve mostly been focused on actually building the game. I’ve spent 9 hours and 55 minutes on it so far, and my goal is to reach 15 hours. It’s a Python text adventure set in an abandoned NASA lunar facility. So far, I’ve added exploration, combat, an inventory system, oxygen management, crew logs, puzzles, and a boss fight. Right now, I’m working on making the story flow better, fixing some bugs, and bringing the playtime closer to my 7.5-minute target. I’ll try to post updates more regularly from now on!"}]...
|
Title: Escape The Facility! by @Mian_Ismail_Shahba Title: Escape The Facility! by @Mian_Ismail_Shahbaz_Ali | Stardance
Devlogs:
Devlog 1 : Escape the Facility Hey everyone! This is my first devlog for my StarDance project, ESCAPE THE FACILITY. I haven’t posted any devlogs yet because I’ve mostly been focused on actually building the game. I’ve spent 9 hours and 55 minutes on it so far, and my goal is to reach 15 hours. It’s a Python text adventure set in an abandoned NASA lunar facility. So far, I’ve added exploration, combat, an inventory system, oxygen management, crew logs, puzzles, and a boss fight. Right now, I’m working on making the story flow better, fixing some bugs, and bringing the playtime closer to my 7.5-minute target. I’ll try to post updates more regularly from now on!
Devlog 2 : Escape the Facility Today, I continued developing ESCAPE THE FACILITY and worked on making it playable directly in a web browser using HTML, CSS, and JavaScript. I tested the browser version and fixed bugs in the survival and combat systems, including issues with health and oxygen checks. I also worked on improving the combat display and reducing duplicate stats in the story text. Challenges: Debugging conditional logic and adapting my Python text adventure into a browser-based experience. Next Steps: Continue testing the game, polish the interface, fix any remaining bugs, and push the latest changes to GitHub.
Devlog 3 : Escape the Facility Today, I worked on improving the browser version of Escape the Facility. I updated the Junction options, removed the option to return to the Airlock, and kept the Inventory button working as intended. I also fixed the Power Control Room progression so that restoring one system lets the player return to the Research Junction instead of being sent back to the main menu. After returning, the player can access the next progression options. I tested the changes and ran node –check game.js to confirm there were no syntax errors. Next up: implementing the Security and Research sections.
Devlog 4 : Escape the Facility Today, I fixed an issue with the Inventory system by adding a Return button and ensuring the Oxygen Canister option works correctly. I tested three different scenarios, and all passed! Next session, I’ll continue improving the game’s navigation, fix remaining bugs, test the different routes and mechanics, and work on polishing the overall gameplay experience.
Devlog 5 : Escape the Facility Today, I polished the game’s item selection and inventory options, removing unnecessary choices to make the interface cleaner. I also reviewed the latest version of the code and identified a few final improvements to make tomorrow before wrapping up the project. Getting closer to the finish line!
Devlog 6 : Escape the Facility Today, I spent time reviewing and improving the JavaScript version of my sci-fi text adventure. I worked through several fixes involving the pause menu, inventory, oxygen canisters, story text, and the Power Control Room. I also reviewed the game’s different mechanics, including exploration, combat, the Security Mech fight, the Research Lab riddle, oxygen management, and the escape sequence. I made the necessary changes while keeping the existing gameplay intact. After the fixes, I ran node –check game.js to check for JavaScript syntax errors, and it passed. Next, I’ll test the game from start to finish, check for any remaining bugs, finalize the README, and prepare my project for submission to Hack Club StarDance.
Devlog 7 : Escape the Facility Built ESCAPE THE FACILITY , a sci-fi text adventure set in an abandoned lunar research facility, for Hack Club StarDance. The game features exploration, inventory management, combat, health and oxygen systems, surveillance recordings, and a riddle. I created two versions: one in Python and another for the browser using HTML, CSS, and JavaScript. I tested both versions, confirmed they worked properly, and pushed the final code to GitHub. GitHub: https://github.com/Mian-Ismail-Shahbaz-Ali/escape-the-facility This project helped me improve my programming, debugging, and testing skills while turning an idea into a working game.
Ships:
What did you make? I made ESCAPE THE FACILITY , a sci-fi text adventure set in an abandoned lunar research facility. Players explore rooms, collect equipment, fight hostile robots, solve a computer-terminal riddle, and find the Emergency Access Keycard to escape. I built a Python version and a browser version using HTML, CSS, and JavaScript. What was challenging? The most challenging part was debugging the game’s logic and making sure exploration, inventory, combat, and progression worked correctly. Creating a browser version alongside the Python game was also challenging, especially learning how the different web technologies fit together. What are you proud of? I’m proud that I turned my idea into a working game with two playable versions. I wrote most of the main gameplay code in Python and JavaScript, tested both versions, and published the project on GitHub with a live browser demo. What should people know so they can test your project? The browser version can be played here: https://mian-ismail-shahbaz-ali.github.io/escape-the-facility/ The source code and README are available here: https://github.com/Mian-Ismail-Shahbaz-Ali/escape-the-facility Players should explore the facility, manage their health and inventory, investigate the research areas, solve the riddle, defeat the security mech, obtain the keycard, and escape. Follow the in-game instructions to play....
|
1793087513.098258
|
1793173913.098258
|
|
64009
|
SefirahOS by @meroquixel | Stardance
|
meroquixel
|
1
|
11.26
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T14:37:56Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "In past, i think OS is very large and mission in the finish, but now i am able to write code of that in my own with Stardance motivations and also I have learnt using function in Js while developing, so try and get achievements for your effort. In this OS I only add some simple apps and my personal info, but in future project, i will add some advansed one’s like calc and map, or even little browser.", "repo": "https://github.com/umaar1104/SefirahOS", "demo": "https://umaar1104.github.io/SefirahOS/"}]...
|
[{"post_id": 82998, "ts": "202 [{"post_id": 82998, "ts": "2026-10-26T14:25:42Z", "hours": 0.2583, "text": "You can see big differences now, but I just change images to hand-make arts instead of AI arts, because I didn’t know Stardance had restrictions on it"}, {"post_id": 82277, "ts": "2026-10-24T13:22:54Z", "hours": 0.73, "text": "I have finished built themechanger app, it is working quiet well, but for now it is monofuntional."}, {"post_id": 80642, "ts": "2026-10-18T11:40:39Z", "hours": 1.1575, "text": "Now, I am working on Theme app, I think it will be necessary for user to change their theme as they want."}, {"post_id": 78400, "ts": "2026-10-10T17:25:17Z", "hours": 2.0514, "text": "It will be shipped after around 1 hour of work. It was very complex to write it’s script, but after great challenges it is nearly done."}, {"post_id": 76745, "ts": "2026-10-04T13:52:37Z", "hours": 1.0744, "text": "Now, my apps are draggable and when you open next app it will appear above last ones."}, {"post_id": 76426, "ts": "2026-10-03T14:20:59Z", "hours": 1.0606, "text": "Now, i’m adding first and simple app that most of us use it in our daily life"}, {"post_id": 76392, "ts": "2026-10-03T12:01:24Z", "hours": 0.7331, "text": "For welcome icon, i cannot find other suitable picture, if you have and idea please write it on comment. Still, it is running and working smoothly"}, {"post_id": 75840, "ts": "2026-10-01T09:53:23Z", "hours": 1.3375, "text": "Now it is draggable and closeable I think that i have pass the most complex part. Openable function won’t be very challenging (in my opinion)"}, {"post_id": 73666, "ts": "2026-09-25T17:00:14Z", "hours": 0.8094, "text": "I have entered to the most challenging part: adding draggable, openable and closeable window."}, {"post_id": 71173, "ts": "2026-09-20T12:05:15Z", "hours": 1.3767, "text": "I have added topbar, and now working on draggable window"}, {"post_id": 71120, "ts": "2026-09-20T10:10:07Z", "hours": 0.9286, "text": "New project has started. It is my WebOS and I will develop it until it is like serious project."}]...
|
Title: SefirahOS by @meroquixel | Stardance
Devlo Title: SefirahOS by @meroquixel | Stardance
Devlogs:
New project has started. It is my WebOS and I will develop it until it is like serious project.
I have added topbar, and now working on draggable window
I have entered to the most challenging part: adding draggable, openable and closeable window.
Now it is draggable and closeable I think that i have pass the most complex part. Openable function won’t be very challenging (in my opinion)
For welcome icon, i cannot find other suitable picture, if you have and idea please write it on comment. Still, it is running and working smoothly
Now, i’m adding first and simple app that most of us use it in our daily life
Now, my apps are draggable and when you open next app it will appear above last ones.
It will be shipped after around 1 hour of work. It was very complex to write it’s script, but after great challenges it is nearly done.
Now, I am working on Theme app, I think it will be necessary for user to change their theme as they want.
I have finished built themechanger app, it is working quiet well, but for now it is monofuntional.
You can see big differences now, but I just change images to hand-make arts instead of AI arts, because I didn’t know Stardance had restrictions on it
Ships:
In past, i think OS is very large and mission in the finish, but now i am able to write code of that in my own with Stardance motivations and also I have learnt using function in Js while developing, so try and get achievements for your effort. In this OS I only add some simple apps and my personal info, but in future project, i will add some advansed one’s like calc and map, or even little browser....
|
1793058490.3110576
|
1793144890.3110576
|
|
71473
|
Zephyr - My own programming language by @DeyanM1 | Zephyr - My own programming language by @DeyanM1 | Stardance...
|
DeyanM1
|
0
|
6.6
|
0
|
[]
|
[{"post_id": 82990, "ts": "202 [{"post_id": 82990, "ts": "2026-10-26T13:45:23Z", "hours": 6.6047, "text": "This is my initial upload of my programming language Zephyr. It is a “variable based” programming language written by me."}]...
|
Title: Zephyr - My own programming language by @De Title: Zephyr - My own programming language by @DeyanM1 | Stardance
Devlogs:
This is my initial upload of my programming language Zephyr. It is a “variable based” programming language written by me....
|
1793022444.1380994
|
1793627244.1380994
|
|
71471
|
pywindraw by @AmosBarSinai | Stardance
|
AmosBarSinai
|
0
|
18.37
|
0
|
[]
|
[{"post_id": 82983, "ts": "202 [{"post_id": 82983, "ts": "2026-10-26T13:29:54Z", "hours": 18.3747, "text": "Linking pywindraw to stardance"}]...
|
Title: pywindraw by @AmosBarSinai | Stardance
Dev Title: pywindraw by @AmosBarSinai | Stardance
Devlogs:
Linking pywindraw to stardance...
|
1793022442.406037
|
1793627242.406037
|
|
71469
|
AIRLINES SIMULATOR IN TERMINAL by @its_bhuvanesh | AIRLINES SIMULATOR IN TERMINAL by @its_bhuvanesh | Stardance...
|
its_bhuvanesh
|
0
|
3.04
|
0
|
[]
|
[{"post_id": 82979, "ts": "202 [{"post_id": 82979, "ts": "2026-10-26T13:17:34Z", "hours": 3.0378, "text": "almost done with the project guyssssssss soo exicted to show u all what i made"}]...
|
Title: AIRLINES SIMULATOR IN TERMINAL by @its_bhuv Title: AIRLINES SIMULATOR IN TERMINAL by @its_bhuvanesh | Stardance
Devlogs:
almost done with the project guyssssssss soo exicted to show u all what i made...
|
1793022440.6992056
|
1793627240.6992056
|
|
3621
|
Bananafish linux rice by @wojtek | Stardance
|
wojtek
|
0
|
2.68
|
0
|
[]
|
[{"post_id": 8296, "ts": "2026 [{"post_id": 8296, "ts": "2026-06-13T19:47:42Z", "hours": 1.9442, "text": "I’ve configured the terminal so it looks nice and added wallpaper. For the terminal, I use kitty, and for wallpapers I use hyprpaper. I had some problems configuring Hyprpaper via Home Manager because the NixOS Wiki page for Hyprpaper was kind of obsolete (and I didn’t read it thoroughly), so I updated it (the wiki page :3)."}, {"post_id": 546, "ts": "2026-06-02T01:04:47Z", "hours": 0.7383, "text": "I’ve set up flakes and Home Manager, installed some apps, and only ended up breaking my system twice, but thanks to NixOS superiority, I could just easily roll back. Next thing I will do will be probably ricing my terminal cuz its pretty bad rn :3"}]...
|
Title: Bananafish linux rice by @wojtek | Stardanc Title: Bananafish linux rice by @wojtek | Stardance
Devlogs:
I’ve set up flakes and Home Manager, installed some apps, and only ended up breaking my system twice, but thanks to NixOS superiority, I could just easily roll back. Next thing I will do will be probably ricing my terminal cuz its pretty bad rn :3
I’ve configured the terminal so it looks nice and added wallpaper. For the terminal, I use kitty, and for wallpapers I use hyprpaper. I had some problems configuring Hyprpaper via Home Manager because the NixOS Wiki page for Hyprpaper was kind of obsolete (and I didn’t read it thoroughly), so I updated it (the wiki page :3)....
|
1792921892.8335872
|
1793785892.8335872
|
|
71456
|
SANDA space_dance_website by @darmigan2011 | Stard SANDA space_dance_website by @darmigan2011 | Stardance...
|
darmigan2011
|
0
|
1.53
|
0
|
[]
|
[{"post_id": 82958, "ts": "202 [{"post_id": 82958, "ts": "2026-10-26T11:41:15Z", "hours": 1.5303, "text": "Been working on something a little different this time! 🎭 I built a website for Sanāda Space , an initiative focused on bringing South Asian classical arts and fusion collaborations together. I wanted the design to feel connected to the art itself, rather than looking like a typical event website. I went with a deep navy background, warm orange accents, elegant typography, and a strong visual focus on the dancer. The idea is to bring the whole experience together — from discovering events like the South Asian Jam to learning about the initiative and finding ways to connect with the community. One thing I enjoyed about this project was experimenting with how design can communicate the identity of an organisation before someone even starts exploring the website. Still learning, building, and trying to make every project a little better than the last. 🔗 GitHub: https://github.com/darmigan2011-ops/dance-studio-website #Stardance #WebDevelopment #BuildInPublic #WebDesign #React"}]...
|
Title: SANDA space_dance_website by @darmigan2011 Title: SANDA space_dance_website by @darmigan2011 | Stardance
Devlogs:
Been working on something a little different this time! 🎭 I built a website for Sanāda Space , an initiative focused on bringing South Asian classical arts and fusion collaborations together. I wanted the design to feel connected to the art itself, rather than looking like a typical event website. I went with a deep navy background, warm orange accents, elegant typography, and a strong visual focus on the dancer. The idea is to bring the whole experience together — from discovering events like the South Asian Jam to learning about the initiative and finding ways to connect with the community. One thing I enjoyed about this project was experimenting with how design can communicate the identity of an organisation before someone even starts exploring the website. Still learning, building, and trying to make every project a little better than the last. 🔗 GitHub: https://github.com/darmigan2011-ops/dance-studio-website #Stardance #WebDevelopment #BuildInPublic #WebDesign #React...
|
1793015250.3844151
|
1793620050.3844151
|
|
5359
|
Multi Tenant Business Management Backend by @NHero Multi Tenant Business Management Backend by @NHero | Stardance...
|
NHero
|
1
|
53.68
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-10T18:18:26Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I built an open-source business management platform backend with authentication, Google OAuth, workspaces, clients, products/services, invoices, payments, analytics, PDF invoice generation, email delivery, and Docker support. What was challenging? Building a scalable architecture, writing integration tests, handling workspace permissions, debugging file uploads, and getting Puppeteer PDF generation working reliably in Docker. What are you proud of? The complete business workflow, clean architecture, Dockerized deployment, and 39+ integration tests that help ensure reliability. How can people test it? Docker setup and environment configuration are included. They can directly docker compose or run using bun or npm", "repo": "https://github.com/NHeroOP/Business-Management-System-Backend", "demo": "https://bms-api.nhero.xyz/"}]...
|
[{"post_id": 82950, "ts": "202 [{"post_id": 82950, "ts": "2026-10-26T11:05:45Z", "hours": 8.3317, "text": "Devlog - 10 So now that I’m continuing this project, I decided to use a admin dashboard template and adjust it according to my needs as the main thing I wanna show is my backend skills. So first of all I was using bun in the backend, I switched to pnpm (personal preference) Now I am using tsdown for building the express app. There was some issue in extended Request type so I fixed it. Also I was using a mongodb cluster free tier, now I am using a mongodb replica set on docker. Also the global rate limiter was applied on everything not just /api/v1 so fixed that. Also I renamed both the repos to something short -> Bms-Backend & Bms-Frontend. Lets talk about the frontend that is on NextJs. I am now using a template which includes a dashboard not fully complete for my need so I will be doing that, it had sentry, clerk and some other stuff, I removed that as It removed a cleanup script. Added the login form and attached it with the backend. I was previously using axios, but now I am using fetch and I am using a architecture called BFF (Backend for Frotend). So the client components call the nextjs backend and that backend calls the express Api whereas server component directly call the express Api so I created fetch wrappers for client calls and server calls. Added a logo for the app. Added proxy.ts and its logic"}, {"post_id": 81802, "ts": "2026-10-22T16:22:15Z", "hours": 4.79, "text": "Devlog 09 So, I combine two stardance projects (backend, frontend) into one (fullstack), at the time I thought I could ship both together but I had to have both repos connected in one project, I didn’t know at the time and I then abandoned the project and this project was the backend & I added the frontend repo to it so all the fronted devlogs are gone. In this devlog I will write the changes made to backend after the previous devlog + I will summarised what was done in the fronted so far and after this devlog, I will write the devlog as normal as you guys will catch up to speed. Backend (Express) In zod using z.number() or .date() were resulting in error if passed as a string as data would always get converted to string before reaching backend so i added z.coerce -> z.coerce.number() or .date Added github actions workflow to automatically pull changes and build with docker + fixed perms issue in Dockerfile. Added redirecting of / to /docs Frontend (NextJS) Auth Pages are done (Login, Signup, Forgot-Password, Reset-Password) with zod and react-hook-form validation Pages are made using shadcn ui components Home page is done with listing of business that user is a part of Sidebar, header, Create-business-form and BusinessCard, invoice table components are also commited"}, {"post_id": 14821, "ts": "2026-06-24T02:09:36Z", "hours": 12.4956, "text": "Devlog - 08 Since I was building a front end for this project and when designing the front end I didn’t had a route for getting all the businesses the logged in user is part of. So I added that route to show all the businesses on the home page of dashboard And also I have email, password login so I needed a route to verify the user who has used email password using a verification code sent on their email. So I updated the user model and added that route too. Next thing was I added those routes to my openApi docs and also I updated my readme.md and other mds in root docs/ folder. One more thing is left in this project is to have separate analytics routes for separate modules like clients analytics, products analytics then main dashboard analytics. I will make them once a get a jump on front end since I’m laking behind there"}, {"post_id": 7051, "ts": "2026-06-11T20:20:17Z", "hours": 4.06, "text": "Devlog - 07 Since its a Backend API so I needed to create a api endpoints docs to showcase the project to other people as some UI helps in showcasing I used scalar and openAPI docs for my project, It took me some time to understand what to do but I was finally able to do it And then during deployment I made an error of putting some dependencies into dev dependencies as they were prefixed with @ . Finally was able to get my docker deployment working"}, {"post_id": 6343, "ts": "2026-06-10T17:57:14Z", "hours": 0.4814, "text": "Devlog -6 Added a analytics endpoint and its time to end the backend project and move on to the frontend of the project. If issues come up designing the frontend, will have to comeback to fix it. Till then i have deployed it with docker on railway.com"}, {"post_id": 6303, "ts": "2026-06-10T16:33:42Z", "hours": 1.8367, "text": "Devlog - 05 After adding tests, I decided to dockerize the project. But i was using puppeteer and it causes some issues in docker so i changed it to puppeteer-core and add install commands for chromium separately in docker file. I made everything work after some brutal hours of debugging and fixing and learning as this is my first time working with docker"}, {"post_id": 5832, "ts": "2026-06-09T19:30:25Z", "hours": 10.0192, "text": "Devlog 4 - Backend Testing Marathon 🧪 Spent few days building out integration tests for my Express + TypeScript backend. Added test coverage for: User registration & login Refresh token flow Forgot/reset password Clients Products (including file uploads) Invoices & payments Workspace/business authorization Also set up: MongoDB Memory Server for isolated test databases Factories for generating users, businesses, invoices, products, etc. Mocks for Cloudinary, Resend, and bcrypt Ran into a pretty annoying EPIPE error while testing multipart file uploads. After a lot of debugging, I tracked it down to file stream handling in tests. Switching upload tests to use Buffers instead of fixture files made the suite stable again. Current stats: 39 tests 15 test files Full integration test suite passing ✅"}, {"post_id": 3764, "ts": "2026-06-06T20:16:39Z", "hours": 2.3275, "text": "Refactoring code and setup for tests"}, {"post_id": 2613, "ts": "2026-06-05T07:23:35Z", "hours": 4.2178, "text": "Bug Fixes, And Logic Polishing"}, {"post_id": 959, "ts": "2026-06-02T18:45:41Z", "hours": 4.6642, "text": "Added Zod validation to the project"}]...
|
Title: Multi Tenant Business Management Backend by Title: Multi Tenant Business Management Backend by @NHero | Stardance
Devlogs:
Added Zod validation to the project
Bug Fixes, And Logic Polishing
Refactoring code and setup for tests
Devlog 4 - Backend Testing Marathon 🧪 Spent few days building out integration tests for my Express + TypeScript backend. Added test coverage for: User registration & login Refresh token flow Forgot/reset password Clients Products (including file uploads) Invoices & payments Workspace/business authorization Also set up: MongoDB Memory Server for isolated test databases Factories for generating users, businesses, invoices, products, etc. Mocks for Cloudinary, Resend, and bcrypt Ran into a pretty annoying EPIPE error while testing multipart file uploads. After a lot of debugging, I tracked it down to file stream handling in tests. Switching upload tests to use Buffers instead of fixture files made the suite stable again. Current stats: 39 tests 15 test files Full integration test suite passing ✅
Devlog - 05 After adding tests, I decided to dockerize the project. But i was using puppeteer and it causes some issues in docker so i changed it to puppeteer-core and add install commands for chromium separately in docker file. I made everything work after some brutal hours of debugging and fixing and learning as this is my first time working with docker
Devlog -6 Added a analytics endpoint and its time to end the backend project and move on to the frontend of the project. If issues come up designing the frontend, will have to comeback to fix it. Till then i have deployed it with docker on railway.com
Devlog - 07 Since its a Backend API so I needed to create a api endpoints docs to showcase the project to other people as some UI helps in showcasing I used scalar and openAPI docs for my project, It took me some time to understand what to do but I was finally able to do it And then during deployment I made an error of putting some dependencies into dev dependencies as they were prefixed with @ . Finally was able to get my docker deployment working
Devlog - 08 Since I was building a front end for this project and when designing the front end I didn’t had a route for getting all the businesses the logged in user is part of. So I added that route to show all the businesses on the home page of dashboard And also I have email, password login so I needed a route to verify the user who has used email password using a verification code sent on their email. So I updated the user model and added that route too. Next thing was I added those routes to my openApi docs and also I updated my readme.md and other mds in root docs/ folder. One more thing is left in this project is to have separate analytics routes for separate modules like clients analytics, products analytics then main dashboard analytics. I will make them once a get a jump on front end since I’m laking behind there
Devlog 09 So, I combine two stardance projects (backend, frontend) into one (fullstack), at the time I thought I could ship both together but I had to have both repos connected in one project, I didn’t know at the time and I then abandoned the project and this project was the backend & I added the frontend repo to it so all the fronted devlogs are gone. In this devlog I will write the changes made to backend after the previous devlog + I will summarised what was done in the fronted so far and after this devlog, I will write the devlog as normal as you guys will catch up to speed. Backend (Express) In zod using z.number() or .date() were resulting in error if passed as a string as data would always get converted to string before reaching backend so i added z.coerce -> z.coerce.number() or .date Added github actions workflow to automatically pull changes and build with docker + fixed perms issue in Dockerfile. Added redirecting of / to /docs Frontend (NextJS) Auth Pages are done (Login, Signup, Forgot-Password, Reset-Password) with zod and react-hook-form validation Pages are made using shadcn ui components Home page is done with listing of business that user is a part of Sidebar, header, Create-business-form and BusinessCard, invoice table components are also commited
Devlog - 10 So now that I’m continuing this project, I decided to use a admin dashboard template and adjust it according to my needs as the main thing I wanna show is my backend skills. So first of all I was using bun in the backend, I switched to pnpm (personal preference) Now I am using tsdown for building the express app. There was some issue in extended Request type so I fixed it. Also I was using a mongodb cluster free tier, now I am using a mongodb replica set on docker. Also the global rate limiter was applied on everything not just /api/v1 so fixed that. Also I renamed both the repos to something short -> Bms-Backend & Bms-Frontend. Lets talk about the frontend that is on NextJs. I am now using a template which includes a dashboard not fully complete for my need so I will be doing that, it had sentry, clerk and some other stuff, I removed that as It removed a cleanup script. Added the login form and attached it with the backend. I was previously using axios, but now I am using fetch and I am using a architecture called BFF (Backend for Frotend). So the client components call the nextjs backend and that backend calls the express Api whereas server component directly call the express Api so I created fetch wrappers for client calls and server calls. Added a logo for the app. Added proxy.ts and its logic
Ships:
What did you make? I built an open-source business management platform backend with authentication, Google OAuth, workspaces, clients, products/services, invoices, payments, analytics, PDF invoice generation, email delivery, and Docker support. What was challenging? Building a scalable architecture, writing integration tests, handling workspace permissions, debugging file uploads, and getting Puppeteer PDF generation working reliably in Docker. What are you proud of? The complete business workflow, clean architecture, Dockerized deployment, and 39+ integration tests that help ensure reliability. How can people test it? Docker setup and environment configuration are included. They can directly docker compose or run using bun or npm...
|
1793087774.9390187
|
1793174174.9390187
|
|
8608
|
CAN Simulator by @sniperpsycho7 | Stardance
|
sniperpsycho7
|
0
|
4.49
|
0
|
[]
|
[{"post_id": 8295, "ts": "2026 [{"post_id": 8295, "ts": "2026-06-13T19:45:48Z", "hours": 4.49, "text": "till now made a basic can controller which earlier had sender and reciever which sent temperature values and reviever recieved it adn showed in terminal. then added few morte features like dashboard dtc reader diagnostic tools etc. the dasboard showed all value together at one place and then made a script to run multiple files together and not have many terminals"}]...
|
Title: CAN Simulator by @sniperpsycho7 | Stardance Title: CAN Simulator by @sniperpsycho7 | Stardance
Devlogs:
till now made a basic can controller which earlier had sender and reciever which sent temperature values and reviever recieved it adn showed in terminal. then added few morte features like dashboard dtc reader diagnostic tools etc. the dasboard showed all value together at one place and then made a script to run multiple files together and not have many terminals...
|
1792742032.489958
|
1793346832.489958
|
|
70198
|
Devrince.ORG by @CookieePie | Stardance
|
CookieePie
|
2
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T13:38:58Z", "hours": 1.0, "multiplier": 1.08, "payout": 0, "blessing": "neutral", "text": "i have made my Own site with HTML and CSS", "repo": "https://github.com/Devrince/My-Own-Site", "demo": "https://devrince.github.io/My-Own-Site/"}, {"ship_num": 2, "ts": "2026-10-23T20:16:53Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My Site is live! I have worked on it from scratch and the most hard part was to first think how it should look like because i had many design but i need to choose something which i can code by myself so i took inspiration form neal.fun and tried to look it like that and added my blog in it also my socials so that anyone can reach me out and i can make connection and build knowledge with them…", "repo": "https://github.com/Devrince/My-Own-Site", "demo": "https://devrince.github.io/My-Own-Site/"}]...
|
[{"post_id": 82941, "ts": "202 [{"post_id": 82941, "ts": "2026-10-26T10:21:59Z", "hours": 0.64, "text": "Now Made By own in every manner and didn’t use ai in anything its a basic html carrying about me and the the handles of my socials!!!"}, {"post_id": 82085, "ts": "2026-10-23T20:10:37Z", "hours": 2.8419, "text": "My site work is done!!! Site is live now… Go Check it out"}, {"post_id": 81295, "ts": "2026-10-20T18:08:58Z", "hours": 0.3603, "text": "Now we need to add the css file in it!"}, {"post_id": 81062, "ts": "2026-10-19T18:19:09Z", "hours": 0.4647, "text": "Projects Tab is completed!!"}, {"post_id": 80750, "ts": "2026-10-18T18:17:22Z", "hours": 0.5375, "text": "Working on Socials tabs where i will put my social accounts link!"}, {"post_id": 80400, "ts": "2026-10-17T15:05:58Z", "hours": 0.9597, "text": "Index.html file is ready now!!! now need to work on the Styling of my own site!!!"}]...
|
Title: Devrince.ORG by @CookieePie | Stardance
De Title: Devrince.ORG by @CookieePie | Stardance
Devlogs:
Index.html file is ready now!!! now need to work on the Styling of my own site!!!
Working on Socials tabs where i will put my social accounts link!
Projects Tab is completed!!
Now we need to add the css file in it!
My site work is done!!! Site is live now… Go Check it out
Now Made By own in every manner and didn’t use ai in anything its a basic html carrying about me and the the handles of my socials!!!
Ships:
My Site is live! I have worked on it from scratch and the most hard part was to first think how it should look like because i had many design but i need to choose something which i can code by myself so i took inspiration form neal.fun and tried to look it like that and added my blog in it also my socials so that anyone can reach me out and i can make connection and build knowledge with them…
i have made my Own site with HTML and CSS...
|
1793051380.6552656
|
1793137780.6552656
|
|
70430
|
Static-Space by @Adam_Primus | Stardance
|
Adam_Primus
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T09:45:58Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "STATIC-SPACE It is a space themed Warioware style game that consists of three minigame, three lives and a lot of uniqueness. It is made using the GODOT engine. Features It consists of Three Minigames You Will Get Three Lives Creative Elements Try It Out By Clicking On ‘Try Project’ Below. For More Details Click On Source Code Below.", "repo": "https://github.com/Adam-Primus/Static-Space", "demo": "https://adam-primus.itch.io/static-space"}]...
|
[{"post_id": 82936, "ts": "202 [{"post_id": 82936, "ts": "2026-10-26T09:35:05Z", "hours": 2.9042, "text": "Devlog: 05, In this devlog, I first begin with creating two new scene that is for the loser and winner page. I created one of their background in the last session so now I made another background. Then I added the elements I wanted to add and customized or perhaps designed it according to my desire. After finishing the winner and loser scene and writing their code, I ran a test which showed up an error it took a while to figure out the problem as I do not know gd script very well. I turned out to be location of a file error which the code was unable to find but I fixed it. After That I ran a final test which was good. So I proceeded with the guide in the stardance. I exported the project, downloaded a preset of WEb, created a file known as “exports”, and then compressed it. Then It was time for publishing. Finally to Publish, I registered into itch.io and upload a new project, selected HTML option, other settings, and finally PUBLISHED THE GAME . At Last, I wrote the README file and Pushed all the change that I made to the GITHUB repository. That’s All."}, {"post_id": 82343, "ts": "2026-10-24T16:36:45Z", "hours": 1.8947, "text": "Devlog: 04, Today, I first begin by creating or perhaps I should say editing my 3rd minigame, it took a while to decide the new minigame but I selected this. I was first trying to make it functional by adding animation but it did not work so I did some research I figured out it must be edited, not animated. So, I wrote the appropriate program and IT WORKED!!! Then, I begin making a background for the death/loser scene. I used Paints 3D for this. I first downloaded some elements from the internet. Then I individually added them edit. I designed it like whatever came to my mind, there is nothing much to talk about it. Personally, I is a very different project that whatever I have created before. Perhaps, It it the first game that I created EVER . That’s ALl."}, {"post_id": 81561, "ts": "2026-10-21T18:02:26Z", "hours": 2.9492, "text": "Devlog: 03, In this session, I wanted to make a New MiniGame [3rd] . So, first I started with extracting some elements from Paints 3d . I basically downloaded some pixelated images from the internet and cropped the elements out of it i,e, A Spacecraft , Some Meteoroids , & few Satellites . Then I began creating the minigame. In the godot console , I created a new scene and progressed making the game. I also began writing the appropriate program to it so it could sync to the game smoothly. Although it is not finished yet, it is expected to be finished by the next devlog. That’s All."}, {"post_id": 81286, "ts": "2026-10-20T16:49:40Z", "hours": 0.6086, "text": "Devlog: 02, I was not able to work a lot in this devlog. I just be able to fix some bugs and errors of the game. I edited some program and fixed the signal problem of my 2nd minigame buttons. I was little challenging to figure it out but I solved it. That’s All."}, {"post_id": 81064, "ts": "2026-10-19T18:42:57Z", "hours": 6.14, "text": "Devlog: 01, This is the beginning, I downloaded GODOT Engine and started a new project named Static-Space . It is a WarioWare-Style, Space Themed game. I begin making the very Main page of my game. Using the help of the on board guide on Stardance I progressed with my project. I made amazing [do not judge] looking character, elements, & blocks. I the with the help of guide , programmed the Main page to be interactive. It was a easy program, I understood it in a moment. Image: 01. I then created a Timer Page [a waiting page between two minigames]. I added some special elements to maintain the uniqueness. Speaking on which, the triangular patches are actually lives of the player. Then I proceeded by adding the program. Of Course, it did not work, I started researching and customizing the program to fix it. When it seemed to work fine I proceeded. Image: 02. Then, I created MiniGame 1 & MiniGame 2 , I would not tell about it much because it is good to have suspense. You must play the game to find out. Of Course, I face a lot of difficulty to make them work as their default program did not work. Perhaps , it was not suppose to work at all so that we can learn and find it out ourselves. To those who made this guide, it worked out really well . The Image of MiniGame 1 & MiniGame 2 are not provided. Pages Created: Main Page Timer Page [a waiting page between two minigames] Mini Game 1 Mini Game 2 That’s All."}]...
|
Title: Static-Space by @Adam_Primus | Stardance
D Title: Static-Space by @Adam_Primus | Stardance
Devlogs:
Devlog: 01, This is the beginning, I downloaded GODOT Engine and started a new project named Static-Space . It is a WarioWare-Style, Space Themed game. I begin making the very Main page of my game. Using the help of the on board guide on Stardance I progressed with my project. I made amazing [do not judge] looking character, elements, & blocks. I the with the help of guide , programmed the Main page to be interactive. It was a easy program, I understood it in a moment. Image: 01. I then created a Timer Page [a waiting page between two minigames]. I added some special elements to maintain the uniqueness. Speaking on which, the triangular patches are actually lives of the player. Then I proceeded by adding the program. Of Course, it did not work, I started researching and customizing the program to fix it. When it seemed to work fine I proceeded. Image: 02. Then, I created MiniGame 1 & MiniGame 2 , I would not tell about it much because it is good to have suspense. You must play the game to find out. Of Course, I face a lot of difficulty to make them work as their default program did not work. Perhaps , it was not suppose to work at all so that we can learn and find it out ourselves. To those who made this guide, it worked out really well . The Image of MiniGame 1 & MiniGame 2 are not provided. Pages Created: Main Page Timer Page [a waiting page between two minigames] Mini Game 1 Mini Game 2 That’s All.
Devlog: 02, I was not able to work a lot in this devlog. I just be able to fix some bugs and errors of the game. I edited some program and fixed the signal problem of my 2nd minigame buttons. I was little challenging to figure it out but I solved it. That’s All.
Devlog: 03, In this session, I wanted to make a New MiniGame [3rd] . So, first I started with extracting some elements from Paints 3d . I basically downloaded some pixelated images from the internet and cropped the elements out of it i,e, A Spacecraft , Some Meteoroids , & few Satellites . Then I began creating the minigame. In the godot console , I created a new scene and progressed making the game. I also began writing the appropriate program to it so it could sync to the game smoothly. Although it is not finished yet, it is expected to be finished by the next devlog. That’s All.
Devlog: 04, Today, I first begin by creating or perhaps I should say editing my 3rd minigame, it took a while to decide the new minigame but I selected this. I was first trying to make it functional by adding animation but it did not work so I did some research I figured out it must be edited, not animated. So, I wrote the appropriate program and IT WORKED!!! Then, I begin making a background for the death/loser scene. I used Paints 3D for this. I first downloaded some elements from the internet. Then I individually added them edit. I designed it like whatever came to my mind, there is nothing much to talk about it. Personally, I is a very different project that whatever I have created before. Perhaps, It it the first game that I created EVER . That’s ALl.
Devlog: 05, In this devlog, I first begin with creating two new scene that is for the loser and winner page. I created one of their background in the last session so now I made another background. Then I added the elements I wanted to add and customized or perhaps designed it according to my desire. After finishing the winner and loser scene and writing their code, I ran a test which showed up an error it took a while to figure out the problem as I do not know gd script very well. I turned out to be location of a file error which the code was unable to find but I fixed it. After That I ran a final test which was good. So I proceeded with the guide in the stardance. I exported the project, downloaded a preset of WEb, created a file known as “exports”, and then compressed it. Then It was time for publishing. Finally to Publish, I registered into itch.io and upload a new project, selected HTML option, other settings, and finally PUBLISHED THE GAME . At Last, I wrote the README file and Pushed all the change that I made to the GITHUB repository. That’s All.
Ships:
STATIC-SPACE It is a space themed Warioware style game that consists of three minigame, three lives and a lot of uniqueness. It is made using the GODOT engine. Features It consists of Three Minigames You Will Get Three Lives Creative Elements Try It Out By Clicking On ‘Try Project’ Below. For More Details Click On Source Code Below....
|
1793008440.1924076
|
1793094840.1924076
|
|
41750
|
D E S C E N T by @subzeroditto | Stardance
|
subzeroditto
|
2
|
52.76
|
667
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T11:58:09Z", "hours": 6.0, "multiplier": 19.45, "payout": 110, "blessing": "neutral", "text": "hello D E S C E N D A N T S (for anyone new that’s what i call ppl who play D E S C E N T), this was quite a small set of updates i put out to improve the datapack i added : an improved guidebook with back buttons balancing changes a new magic system 3 unique magic weapons i would highly recommend checking out the Magician’s Deck, it took the longest by far", "repo": "https://github.com/banana-piecake/DESCENT/tree/master", "demo": "https://modrinth.com/datapack/d-e-s-c-e-n-t"}, {"ship_num": 2, "ts": "2026-08-25T04:12:01Z", "hours": 28.0, "multiplier": 19.93, "payout": 557, "blessing": "neutral", "text": "D E S C E N T was a datapack I made that originally stemmed from a small idea 9 months ago, and I had no clue when i was developing it that it would grow to be this big. Honestly it’s become a project I dreamed about making when i was young and i’m super proud of where it’s come. Installation : If modrinth has reviewed it, download it from there, otherwise you can download it here : https://github.com/banana-piecake/DESCENT/releases/tag/pre-modrinth Datapack install : install it in your world’s datapack folder, AND also install it in your resource pack folder, enable both Mod install : download the jar, install it as a mod in any of the 4 major modloaders (fabric, forge, quilt or neoforge), it’ll work in any world you create. Only for minecraft java version 26.2", "repo": "https://github.com/banana-piecake/DESCENT/tree/master", "demo": "https://modrinth.com/datapack/d-e-s-c-e-n-t"}]...
|
[{"post_id": 82933, "ts": "202 [{"post_id": 82933, "ts": "2026-10-26T09:13:20Z", "hours": 1.7172, "text": "hello d e s c e n d a n t s, big one today ancient greatsword got a huge buff, it wasnt feeling impactful enough so i gave it the cool vfx the scythes have also astronomer is done, showcase here https://youtu.be/vtc5K3Rs7yA?si=Imxgvno1sOggv4t7"}, {"post_id": 82559, "ts": "2026-10-25T07:50:28Z", "hours": 1.4553, "text": "hello d e s c e n d a n t s, 1 and a half hours of small changes also a new weapon, the ancient greatsword, which grants you buffs when lower hp"}, {"post_id": 80946, "ts": "2026-10-19T10:24:59Z", "hours": 0.8419, "text": "hello d e s c e n d a n t s, spear go boom yes very creative also the new animations now work with the moves, stagger, proper movement and constellations working with moves will come next"}, {"post_id": 80633, "ts": "2026-10-18T11:02:11Z", "hours": 1.4103, "text": "hello d e s c e n d a n t s, made a new weapon, sunder, which does a teleport slash, as well as made abilities for astronomer (tele slash and laser) it took longer than it shouldve ngl"}, {"post_id": 80298, "ts": "2026-10-17T05:37:49Z", "hours": 2.6522, "text": "yes d e s c e n d a n t s, i spent 2 and a half hours animating, modelling, texturing and creating a basic constellation system this is going to take a while"}, {"post_id": 79478, "ts": "2026-10-14T06:39:48Z", "hours": 0.4067, "text": "hello d e s c e n d a n t s, look at my bunny hat also stargazer got completely rebalanced but that’s not important"}, {"post_id": 79446, "ts": "2026-10-14T00:56:56Z", "hours": 0.7469, "text": "made some new textures, d e s c e n d a n t s code wise i havent really done much, im trying to get most textures etc done so i can get the trailer done btw if you wanna see what im doing more frequently, join #mc-datapacking in slack"}, {"post_id": 78668, "ts": "2026-10-11T07:27:55Z", "hours": 1.2456, "text": "another day, another sprite, D E S C E N D A N T S added some new sprite and a new item that shoots a laser"}, {"post_id": 78065, "ts": "2026-10-09T13:00:52Z", "hours": 1.2967, "text": "hello D E S C E N D A N T S, lets quickly go through everything i’ve added stargazer is mostly done, they can now atomise projectiles the new bottled echo item triggers your parry effects again half a second later, which can lead to some crazy builds frozen blade is now a dagger class weapon and added the pact which gives invincibility on half health to allow escapes and last stands here’s a representation of all the content so far"}, {"post_id": 77274, "ts": "2026-10-06T12:02:38Z", "hours": 0.4847, "text": "hello D E S C E N D A N T S, implemented some textures and added a couple new accessories 4 of these are the new marks, which grant passive stat ups and downs as well a regeneration accessory…"}, {"post_id": 77017, "ts": "2026-10-05T11:45:15Z", "hours": 2.6486, "text": "hello D E S C E N D A N T S, done a lot textures for rapiers are done, added 3 or so new accessories, finished the attack and movement code for stargazer, concepeted more, etc…"}, {"post_id": 76040, "ts": "2026-10-02T04:50:17Z", "hours": 0.395, "text": "hello D E S C E N D A N T S, finally finished some animations for the upcoming miniboss, take a look!"}, {"post_id": 75120, "ts": "2026-09-29T05:41:18Z", "hours": 1.3864, "text": "hello d e s c e n d a n t s, basic systems are difficult i finally got around to implementing parrying and accessories added 6 accessories and one parrying weapon kk going back to work now"}, {"post_id": 74266, "ts": "2026-09-27T03:13:30Z", "hours": 1.6011, "text": "backkkk from hiatus D E S C E N D A N T S done a lot of bugfixing and updating to 26.3"}, {"post_id": 59331, "ts": "2026-09-01T01:54:38Z", "hours": 0.4717, "text": "so someone asked me to make better bossbars, which is of course difficult because i make datapacks, but i found out how because im just like that ig"}, {"post_id": 57928, "ts": "2026-08-30T08:17:13Z", "hours": 0.8656, "text": "helllooooo D E S C E N D A N T S, finished off rituals and items for update, should be released on modrinth now"}, {"post_id": 57815, "ts": "2026-08-30T03:33:04Z", "hours": 2.3647, "text": "hello D E S C E N D A N T S, this weapon took so long but was so worth it First up, all bloom weapons now take durability accordingly second of all, this is the magician’s deck, the most complex weapon i’ve made so far on non flourishing use, it throws out a card that travels, spins for a short period of time, then returns to you, it travels through walls on flourishing use it shoots 4 cards that ignore i-frames but deal less damage it’s super fun and very cool"}, {"post_id": 57006, "ts": "2026-08-29T02:24:06Z", "hours": 0.4542, "text": "heya D E S C E N D A N T S, small stuff tbh magic weapons now take durability as well as bloom and longswords now require full charge to swing"}, {"post_id": 56517, "ts": "2026-08-28T09:55:04Z", "hours": 0.4983, "text": "to magic or to weapon, that is the question D E S C E N D A N T S… this is the kindling, which shoots flames, when flourishing it has a longer range, higher damage, and the flame are blue"}, {"post_id": 55499, "ts": "2026-08-27T12:00:38Z", "hours": 0.6433, "text": "well DESCENDANTS, that didnt take long this is bloom, its the representation of your mana, as you use a weapon, the flower grows, with it lowering when you dont use it, using it too long will wilt the flower, putting you on cooldown for a while when the flower is at it’s peak, you gain a flourishing boon, which changes how the weapon works for example, the wooden wand does 3 magic bursts instead of 1, greatly increasing the range, and has a damage increase bloom is about keeping track of what you’re doing and making sure to maintain a balance"}, {"post_id": 55479, "ts": "2026-08-27T11:00:00Z", "hours": 0.8431, "text": "i am back in action DESCENDANTS! i added some advanced vfx and hugely improved the guidebook so it’s actually usable now this is now out on modrinth! working on bloom right now, my take on mana"}, {"post_id": 52223, "ts": "2026-08-22T10:09:06Z", "hours": 0.3236, "text": "so uh, i lied DESCENDANTS, yeah i added a new ritual to dupe runes it was annoying me"}, {"post_id": 51604, "ts": "2026-08-21T11:35:23Z", "hours": 1.985, "text": "hello DESCENDANTS, this is the last devlog, as D E S C E N T is now ready to ship i finished all the dialogs every last one thank you all, truly, it has been wonderful to work on this, and i hope to release many updates Ship coming soon"}, {"post_id": 50913, "ts": "2026-08-20T11:44:32Z", "hours": 0.8972, "text": "hello DESCENDANTS. this is gonna be one of the last times i do this b4 shipping i finished all the boss drop rituals, they all require knowledge to perform, with that, every single ritual is complete only thing left is to write up the guidebook"}, {"post_id": 50833, "ts": "2026-08-20T08:38:41Z", "hours": 0.9872, "text": "helloooooooo DESCENDANTS, we are really close to done bosses now properly die, summon a rift to the overworld upon death, give music discs with a low chance, and give random knowledge super close to done"}, {"post_id": 50219, "ts": "2026-08-19T11:14:52Z", "hours": 0.6925, "text": "helllloooooo DESCENDANTS so uh another devlog i had a lot of free time okay i added more rituals voidtouched blade voidtouched shovel ice dagger fracture sculk bomb might go make more lowk"}, {"post_id": 50179, "ts": "2026-08-19T09:24:08Z", "hours": 0.6417, "text": "hellooooo DESCENDANTS! finishing off the project now :P: added knowledge, made bosses load chunks, more general improvements very close to finishing, just gotta finish off rituals, boss deaths and guidebook"}, {"post_id": 50026, "ts": "2026-08-19T01:42:29Z", "hours": 2.3022, "text": "hello DESCENDANTS, it’s been a while i have made a LOT of small polish and balance changes, but i’ll just go through the two major changes bloodfell items all have a new passive that buffs you on hit with a small chance, and bloodfell rituals are cheaper and easier rifts are finished, they send you to the void, where you get items to summon the bosses, the void itself is finally finished, meaning most of the content is done"}, {"post_id": 47870, "ts": "2026-08-16T03:52:46Z", "hours": 0.5964, "text": "LET’S GO GAMBLING!!! runes are a new system of item modifiers, separated into several tiers, which are rolled with a ritual, they can be applied to any item, they’re super fun and offer a lot of build variety (there are 30 of them) to obtain them you need 4 copper ingots, and 4 rune stones obtained from killing mobs. might add a way to dupe rune stones later in order to make them less grindy here you can see me rolling an epic rune on a tropical fish"}, {"post_id": 47839, "ts": "2026-08-16T01:51:36Z", "hours": 0.7267, "text": "Hello DESCENDENTS (that’s what you’re called now) Bloodfell weapons have felt disconnected for a while. they haven’t had any shared passive. i considered giving them all bleed, but the double damage is insane. The way to get bloodfell ingots is obtained through sacrifice, so they now have a new passive, Animosity! Animosity is the name of the datapack bloodfell weapons were originally planned for, before that was scrapped and moved to D E S C E N T, when you get hit, you have a chance to buff up."}, {"post_id": 47278, "ts": "2026-08-15T03:26:28Z", "hours": 0.6139, "text": "gun. the starlight is the final weapon of act one, obtained by beating the void guardians, an incredibly difficult duo boss fight, in exchange it’s incredibly powerful, summoning a powerful meteor on hit that explodes on landing."}, {"post_id": 46711, "ts": "2026-08-14T04:52:42Z", "hours": 0.2983, "text": "wow im doing stuff ig. finished rituals for soulbound and voidtouched harvester."}, {"post_id": 46647, "ts": "2026-08-14T01:47:39Z", "hours": 0.9144, "text": "three for one special today! so today i made : ice dagger : shoots a beam that slows enemies hit with an aoe explosion (no damage) voidtouched blade : random tp on rc with a short cooldown voidtouched steel (+the ritual for voidtouched steel) : the material used to create voidtouched weapons (basically enderite)"}, {"post_id": 46242, "ts": "2026-08-13T10:48:41Z", "hours": 0.6719, "text": "recreating old weapons is fun! today i remade the cursed cleaver, from this mod https://modrinth.com/mod/a.b.e.-forgery fun fact! this is the mod where void ripper originated from (or at least the entire concept of the boss, void, movement system, design etc…) anyways its pretty fun to use and i made it a lil stronger (its still kinda meh in terms of power but thats fine)"}, {"post_id": 45687, "ts": "2026-08-12T10:39:28Z", "hours": 0.6825, "text": "Guess it’s a two for one special today! sculk grenades are a new item that spread sculk when they hit blocks"}, {"post_id": 45655, "ts": "2026-08-12T09:10:23Z", "hours": 0.6406, "text": "Sculk is pretty cool was lowkey gonna make a splatoon mechanic but it’s lowkey impossible so i made wall climbing, sticking etc."}, {"post_id": 44549, "ts": "2026-08-10T11:50:47Z", "hours": 0.3733, "text": "finished the fracture lol, didnt expect to get it done"}, {"post_id": 44489, "ts": "2026-08-10T08:58:57Z", "hours": 0.4172, "text": "began working my first crossover! it’s the fracture from terramity 1.0"}, {"post_id": 43771, "ts": "2026-08-09T06:12:01Z", "hours": 0.8342, "text": "Weapon design is so fun :p today i finished the void fracture, a sword that applies 3 hits post attack, creating wild knockback and unpredictable combos"}, {"post_id": 43188, "ts": "2026-08-08T09:52:00Z", "hours": 0.2894, "text": "pretty small day updated void cull to require you to build 5 or more void stacks, which are applied by voidtouched weapons on hit, and get removed after 5 seconds, the timer resets on hit (same image as last time i have no clue how to display this in an image)"}, {"post_id": 42584, "ts": "2026-08-07T12:27:43Z", "hours": 1.0564, "text": "Keep inventory, a problem as old as time many mods and datapacks have tried to fix keep inventory, but none fit my situation so today i fixed that with the new soulbound enchantment, items dropped on death will return to you after 12 seconds, only if they are still on the floor https://youtu.be/zDh4c3vDw1o"}, {"post_id": 41876, "ts": "2026-08-06T11:07:15Z", "hours": 0.7853, "text": "making “enderite” actually cool, pt 2 (it’s called voidtouched steel) first things first, i added a new ritual to turn amethyst shards into echo shards, i want items to be assessable, and echo shards are a necessary crafting ingredient, but ancient cities often get looted early, and i keep multiplayer in mind second i added a new item, the voidtouched shovel, which has a chance to levitate your enemies on hit i then made voidtouched steel’s passive ability, void cull, which deals 999 damage when an enemy is under 25% max hp, (this will be rebalanced soon)"}, {"post_id": 41210, "ts": "2026-08-05T09:08:46Z", "hours": 0.5067, "text": "Enderite always feels like a boring concept to me everyone does the same thing, a straight upgrade, maybe a teleport ability, but i wanted to be different, to make an upgrade to netherite that gives you a reason to go back to the end without being boring introducing voidtouched steel, which will be crafted with shulker shells and purpur, making it accessible to all and renewable starting off we have the Voidtouched Harvester, an upgrade to the Bloodfell Scythe that now has one incredibly powerful dash that removees your gravity for the duration up next i need to work on the void execution mechanic"}, {"post_id": 40494, "ts": "2026-08-04T01:58:08Z", "hours": 0.5733, "text": "this is gonna take a while Patch notes : added 3 new sprites, updated creative menu to match finished D E S C E N T guidebook updated creative menu added one new function for an upcoming weapon updated the dialog menu"}, {"post_id": 39176, "ts": "2026-08-01T23:28:18Z", "hours": 0.2739, "text": "rebalanced the absurdly overpowered bloodfell cleaver it used to do 10 flat damage every 4th hit (magic, so pierces armour) which was busted, now it only does double damage i have no clue how this was logged as 16m i swear it took 3"}, {"post_id": 38640, "ts": "2026-08-01T04:25:23Z", "hours": 1.4375, "text": "Huge day today, lots of content today and yesterday’s progress: added THIRTY new enchantments as part of my custom rune system, you can have one per item, some apply effects such as burn or wither, and others are just stat buffs added the items to the creative menu via a neat trick, however it’s not fully implemented yet and finally, finished the duo void guardians boss fight, which required me to rework the entire system for every other boss good stuff, only took about 2 hours, so pretty solid lock in"}, {"post_id": 37357, "ts": "2026-07-30T00:42:06Z", "hours": 8.4064, "text": "this has been a long time in the works i began working on this during stardance, however i forgot to link hackatime so i have spent around 10-12 hours on it (just on coding, that’s ignoring modelling, animating, texturing, playtesting) if you want to see all the devlogs (to prove my progress ig) see here : https://www.youtube.com/playlist?list=PLPvXzO2e-wn0"}]...
|
Title: D E S C E N T by @subzeroditto | Stardance
Title: D E S C E N T by @subzeroditto | Stardance
Devlogs:
this has been a long time in the works i began working on this during stardance, however i forgot to link hackatime so i have spent around 10-12 hours on it (just on coding, that’s ignoring modelling, animating, texturing, playtesting) if you want to see all the devlogs (to prove my progress ig) see here : https://www.youtube.com/playlist?list=PLPvXzO2e-wn0
Huge day today, lots of content today and yesterday’s progress: added THIRTY new enchantments as part of my custom rune system, you can have one per item, some apply effects such as burn or wither, and others are just stat buffs added the items to the creative menu via a neat trick, however it’s not fully implemented yet and finally, finished the duo void guardians boss fight, which required me to rework the entire system for every other boss good stuff, only took about 2 hours, so pretty solid lock in
rebalanced the absurdly overpowered bloodfell cleaver it used to do 10 flat damage every 4th hit (magic, so pierces armour) which was busted, now it only does double damage i have no clue how this was logged as 16m i swear it took 3
this is gonna take a while Patch notes : added 3 new sprites, updated creative menu to match finished D E S C E N T guidebook updated creative menu added one new function for an upcoming weapon updated the dialog menu
Enderite always feels like a boring concept to me everyone does the same thing, a straight upgrade, maybe a teleport ability, but i wanted to be different, to make an upgrade to netherite that gives you a reason to go back to the end without being boring introducing voidtouched steel, which will be crafted with shulker shells and purpur, making it accessible to all and renewable starting off we have the Voidtouched Harvester, an upgrade to the Bloodfell Scythe that now has one incredibly powerful dash that removees your gravity for the duration up next i need to work on the void execution mechanic
making “enderite” actually cool, pt 2 (it’s called voidtouched steel) first things first, i added a new ritual to turn amethyst shards into echo shards, i want items to be assessable, and echo shards are a necessary crafting ingredient, but ancient cities often get looted early, and i keep multiplayer in mind second i added a new item, the voidtouched shovel, which has a chance to levitate your enemies on hit i then made voidtouched steel’s passive ability, void cull, which deals 999 damage when an enemy is under 25% max hp, (this will be rebalanced soon)
Keep inventory, a problem as old as time many mods and datapacks have tried to fix keep inventory, but none fit my situation so today i fixed that with the new soulbound enchantment, items dropped on death will return to you after 12 seconds, only if they are still on the floor https://youtu.be/zDh4c3vDw1o
pretty small day updated void cull to require you to build 5 or more void stacks, which are applied by voidtouched weapons on hit, and get removed after 5 seconds, the timer resets on hit (same image as last time i have no clue how to display this in an image)
Weapon design is so fun :p today i finished the void fracture, a sword that applies 3 hits post attack, creating wild knockback and unpredictable combos
began working my first crossover! it’s the fracture from terramity 1.0
finished the fracture lol, didnt expect to get it done
Sculk is pretty cool was lowkey gonna make a splatoon mechanic but it’s lowkey impossible so i made wall climbing, sticking etc.
Guess it’s a two for one special today! sculk grenades are a new item that spread sculk when they hit blocks
recreating old weapons is fun! today i remade the cursed cleaver, from this mod https://modrinth.com/mod/a.b.e.-forgery fun fact! this is the mod where void ripper originated from (or at least the entire concept of the boss, void, movement system, design etc…) anyways its pretty fun to use and i made it a lil stronger (its still kinda meh in terms of power but thats fine)
three for one special today! so today i made : ice dagger : shoots a beam that slows enemies hit with an aoe explosion (no damage) voidtouched blade : random tp on rc with a short cooldown voidtouched steel (+the ritual for voidtouched steel) : the material used to create voidtouched weapons (basically enderite)
wow im doing stuff ig. finished rituals for soulbound and voidtouched harvester.
gun. the starlight is the final weapon of act one, obtained by beating the void guardians, an incredibly difficult duo boss fight, in exchange it’s incredibly powerful, summoning a powerful meteor on hit that explodes on landing.
Hello DESCENDENTS (that’s what you’re called now) Bloodfell weapons have felt disconnected for a while. they haven’t had any shared passive. i considered giving them all bleed, but the double damage is insane. The way to get bloodfell ingots is obtained through sacrifice, so they now have a new passive, Animosity! Animosity is the name of the datapack bloodfell weapons were originally planned for, before that was scrapped and moved to D E S C E N T, when you get hit, you have a chance to buff up.
LET’S GO GAMBLING!!! runes are a new system of item modifiers, separated into several tiers, which are rolled with a ritual, they can be applied to any item, they’re super fun and offer a lot of build variety (there are 30 of them) to obtain them you need 4 copper ingots, and 4 rune stones obtained from killing mobs. might add a way to dupe rune stones later in order to make them less grindy here you can see me rolling an epic rune on a tropical fish
hello DESCENDANTS, it’s been a while i have made a LOT of small polish and balance changes, but i’ll just go through the two major changes bloodfell items all have a new passive that buffs you on hit with a small chance, and bloodfell rituals are cheaper and easier rifts are finished, they send you to the void, where you get items to summon the bosses, the void itself is finally finished, meaning most of the content is done
hellooooo DESCENDANTS! finishing off the project now :P: added knowledge, made bosses load chunks, more general improvements very close to finishing, just gotta finish off rituals, boss deaths and guidebook
helllloooooo DESCENDANTS so uh another devlog i had a lot of free time okay i added more rituals voidtouched blade voidtouched shovel ice dagger fracture sculk bomb might go make more lowk
helloooooooo DESCENDANTS, we are really close to done bosses now properly die, summon a rift to the overworld upon death, give music discs with a low chance, and give random knowledge super close to done
hello DESCENDANTS. this is gonna be one of the last times i do this b4 shipping i finished all the boss drop rituals, they all require knowledge to perform, with that, every single ritual is complete only thing left is to write up the guidebook
hello DESCENDANTS, this is the last devlog, as D E S C E N T is now ready to ship i finished all the dialogs every last one thank you all, truly, it has been wonderful to work on this, and i hope to release many updates Ship coming soon
so uh, i lied DESCENDANTS, yeah i added a new ritual to dupe runes it was annoying me
i am back in action DESCENDANTS! i added some advanced vfx and hugely improved the guidebook so it’s actually usable now this is now out on modrinth! working on bloom right now, my take on mana
well DESCENDANTS, that didnt take long this is bloom, its the representation of your mana, as you use a weapon, the flower grows, with it lowering when you dont use it, using it too long will wilt the flower, putting you on cooldown for a while when the flower is at it’s peak, you gain a flourishing boon, which changes how the weapon works for example, the wooden wand does 3 magic bursts instead of 1, greatly increasing the range, and has a damage increase bloom is about keeping track of what you’re doing and making sure to maintain a balance
to magic or to weapon, that is the question D E S C E N D A N T S… this is the kindling, which shoots flames, when flourishing it has a longer range, higher damage, and the flame are blue
heya D E S C E N D A N T S, small stuff tbh magic weapons now take durability as well as bloom and longswords now require full charge to swing
hello D E S C E N D A N T S, this weapon took so long but was so worth it First up, all bloom weapons now take durability accordingly second of all, this is the magician’s deck, the most complex weapon i’ve made so far on non flourishing use, it throws out a card that travels, spins for a short period of time, then returns to you, it travels through walls on flourishing use it shoots 4 cards that ignore i-frames but deal less damage it’s super fun and very cool
helllooooo D E S C E N D A N T S, finished off rituals and items for update, should be released on modrinth now
so someone asked me to make better bossbars, which is of course difficult because i make datapacks, but i found out how because im just like that ig
backkkk from hiatus D E S C E N D A N T S done a lot of bugfixing and updating to 26.3
hello d e s c e n d a n t s, basic systems are difficult i finally got around to implementing parrying and accessories added 6 accessories and one parrying weapon kk going back to work now
hello D E S C E N D A N T S, finally finished some animations for the upcoming miniboss, take a look!
hello D E S C E N D A N T S, done a lot textures for rapiers are done, added 3 or so new accessories, finished the attack and movement code for stargazer, concepeted more, etc…
hello D E S C E N D A N T S, implemented some textures and added a couple new accessories 4 of these are the new marks, which grant passive stat ups and downs as well a regeneration accessory…
hello D E S C E N D A N T S, lets quickly go through everything i’ve added stargazer is mostly done, they can now atomise projectiles the new bottled echo item triggers your parry effects again half a second later, which can lead to some crazy builds frozen blade is now a dagger class weapon and added the pact which gives invincibility on half health to allow escapes and last stands here’s a representation of all the content so far
another day, another sprite, D E S C E N D A N T S added some new sprite and a new item that shoots a laser
made some new textures, d e s c e n d a n t s code wise i havent really done much, im trying to get most textures etc done so i can get the trailer done btw if you wanna see what im doing more frequently, join #mc-datapacking in slack
hello d e s c e n d a n t s, look at my bunny hat also stargazer got completely rebalanced but that’s not important
yes d e s c e n d a n t s, i spent 2 and a half hours animating, modelling, texturing and creating a basic constellation system this is going to take a while
hello d e s c e n d a n t s, made a new weapon, sunder, which does a teleport slash, as well as made abilities for astronomer (tele slash and laser) it took longer than it shouldve ngl
hello d e s c e n d a n t s, spear go boom yes very creative also the new animations now work with the moves, stagger, proper movement and constellations working with moves will come next
hello d e s c e n d a n t s, 1 and a half hours of small changes also a new weapon, the ancient greatsword, which grants you buffs when lower hp
hello d e s c e n d a n t s, big one today ancient greatsword got a huge buff, it wasnt feeling impactful enough so i gave it the cool vfx the scythes have also astronomer is done, showcase here https://youtu.be/vtc5K3Rs7yA?si=Imxgvno1sOggv4t7
Ships:
D E S C E N T was a datapack I made that originally stemmed from a small idea 9 months ago, and I had no clue when i was developing it that it would grow to be this big. Honestly it’s become a project I dreamed about making when i was young and i’m super proud of where it’s come. Installation : If modrinth has reviewed it, download it from there, otherwise you can download it here : https://github.com/banana-piecake/DESCENT/releases/tag/pre-modrinth Datapack install : install it in your world’s datapack folder, AND also install it in your resource pack folder, enable both Mod install : download the jar, install it as a mod in any of the 4 major modloaders (fabric, forge, quilt or neoforge), it’ll work in any world you create. Only for minecraft java version 26.2
hello D E S C E N D A N T S (for anyone new that’s what i call ppl who play D E S C E N T), this was quite a small set of updates i put out to improve the datapack i added : an improved guidebook with back buttons balancing changes a new magic system 3 unique magic weapons i would highly recommend checking out the Magician’s Deck, it took the longest by far...
|
1793098447.1382585
|
1793184847.1382585
|
|
68428
|
Doors OS by @Mahmoud_Mohamed | Stardance
|
Mahmoud_Mohamed
|
1
|
2.31
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T15:59:05Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made a web os , i called it doors os (to be samiliar to windows) i’ve made an anti-vuris app( not a real app) and calculator and my computer app (file explorer) . I’ve desing this project at one dev log because i don’t know that this task requirs 3 devlogs", "repo": "https://github.com/MahmoudMohamed99-AI/Doors-OS-V1", "demo": "https://mahmoudmohamed99-ai.github.io/Doors-OS-V1/"}]...
|
[{"post_id": 82932, "ts": "202 [{"post_id": 82932, "ts": "2026-10-26T09:10:09Z", "hours": 1.3094, "text": "some features have been added"}, {"post_id": 77583, "ts": "2026-10-07T15:25:40Z", "hours": 1.1567, "text": "Doors OS"}]...
|
Title: Doors OS by @Mahmoud_Mohamed | Stardance
D Title: Doors OS by @Mahmoud_Mohamed | Stardance
Devlogs:
Doors OS
some features have been added
Ships:
I’ve made a web os , i called it doors os (to be samiliar to windows) i’ve made an anti-vuris app( not a real app) and calculator and my computer app (file explorer) . I’ve desing this project at one dev log because i don’t know that this task requirs 3 devlogs...
|
1793065811.0961564
|
1793152211.0961564
|
|
64136
|
Nameless-Assembly Game by @aliakbar | Stardance
|
aliakbar
|
1
|
21.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T09:32:43Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I worked on this project with my friend on Godot, although it is not finished because he got sick and then I lost interest as it was intended for thirdspace and I lost the opportunity to get hardware upgrade because he was not able to do his 10 hour on second week, other than that, I worked quite intensively in it, I had setted up all 3d player movement, I got the inventory system working up, I made the component crafter, I essentially got the core mechanics to work in this game, making the inventory was hardest for me but I still got, also I made icons for couple of inventory item for fun, and again couldnt finish it all. And as per the guidance to install it; we’ll you first have to download the Nameless.Assembly.zip from the github release page, then extract it, and then run the .exe to run it, and if some how it doesnt work because I couldn’t test it as I use linux, then you can simply just download the whole repo code, and open it in godot, and press runand you’ll see our masterpiece.", "repo": "https://github.com/POROSIVE/Nameless-Assembly", "demo": "https://github.com/POROSIVE/Nameless-Assembly/releases"}]...
|
[{"post_id": 82931, "ts": "202 [{"post_id": 82931, "ts": "2026-10-26T09:03:40Z", "hours": 10.1589, "text": "Crafting UI overhaul, hotbar, item icons, signal + path bug fixes Add progress bar + ‘Crafting: X’ label to crafting panel Add crafting_started/updated/finished signals to ComponentCrafter Rebuild recipe buttons with icon + inputs->outputs layout Add ITEM_COLORS map for item color fallbacks Move hotbar from factory HUD to player CanvasLayer (8 slots) Player._refresh_hotbar() renders slots with amount labels interaction_ui routes all inventory refreshes to the player Rewrite toggle_inventory() for player-owned hotbar Remove InventoryPanel/InventoryList from factory.tscn Add 9 hand-drawn item icons in assets/icons/ Enable GDDraw plugin Fix duplicate crafting_finished emit in _finish_craft Fix crafting_finished.emit({},[]) -> emit([]) arg count Guard all signal connects with is_connected() Fix ‘ProgresssBar’ typo in _find_crafting_nodes Fix broken ‘rect.texture = tex.rect.expand_mode’ line Fix ‘unobtainium’ -> ‘unobtanium’ item id typo Fix vector2 -> Vector2 (lowercase)"}, {"post_id": 71237, "ts": "2026-09-20T14:38:34Z", "hours": 10.6014, "text": "Till now I have made player controls; including Walk, Sprint, Crouch, Jump, and even HeadBob!; it was fun, recently also added a component crafter, some bugs but will fix it soon, its going great so far"}]...
|
Title: Nameless-Assembly Game by @aliakbar | Stard Title: Nameless-Assembly Game by @aliakbar | Stardance
Devlogs:
Till now I have made player controls; including Walk, Sprint, Crouch, Jump, and even HeadBob!; it was fun, recently also added a component crafter, some bugs but will fix it soon, its going great so far
Crafting UI overhaul, hotbar, item icons, signal + path bug fixes Add progress bar + ‘Crafting: X’ label to crafting panel Add crafting_started/updated/finished signals to ComponentCrafter Rebuild recipe buttons with icon + inputs->outputs layout Add ITEM_COLORS map for item color fallbacks Move hotbar from factory HUD to player CanvasLayer (8 slots) Player._refresh_hotbar() renders slots with amount labels interaction_ui routes all inventory refreshes to the player Rewrite toggle_inventory() for player-owned hotbar Remove InventoryPanel/InventoryList from factory.tscn Add 9 hand-drawn item icons in assets/icons/ Enable GDDraw plugin Fix duplicate crafting_finished emit in _finish_craft Fix crafting_finished.emit({},[]) -> emit([]) arg count Guard all signal connects with is_connected() Fix ‘ProgresssBar’ typo in _find_crafting_nodes Fix broken ‘rect.texture = tex.rect.expand_mode’ line Fix ‘unobtainium’ -> ‘unobtanium’ item id typo Fix vector2 -> Vector2 (lowercase)
Ships:
I worked on this project with my friend on Godot, although it is not finished because he got sick and then I lost interest as it was intended for thirdspace and I lost the opportunity to get hardware upgrade because he was not able to do his 10 hour on second week, other than that, I worked quite intensively in it, I had setted up all 3d player movement, I got the inventory system working up, I made the component crafter, I essentially got the core mechanics to work in this game, making the inventory was hardest for me but I still got, also I made icons for couple of inventory item for fun, and again couldnt finish it all. And as per the guidance to install it; we’ll you first have to download the Nameless.Assembly.zip from the github release page, then extract it, and then run the .exe to run it, and if some how it doesnt work because I couldn’t test it as I use linux, then you can simply just download the whole repo code, and open it in godot, and press runand you’ll see our masterpiece....
|
1793058681.0804493
|
1793145081.0804493
|
|
71439
|
Pizza by @shivakaushal | Stardance
|
shivakaushal
|
0
|
2.81
|
0
|
[]
|
[{"post_id": 82928, "ts": "202 [{"post_id": 82928, "ts": "2026-10-26T08:38:23Z", "hours": 2.8131, "text": "Finally two commits is done. I’m very happy to make this projects, and right now it is little bit done. means app.jsx is done and let me focus and build more stuff."}]...
|
Title: Pizza by @shivakaushal | Stardance
Devlogs Title: Pizza by @shivakaushal | Stardance
Devlogs:
Finally two commits is done. I’m very happy to make this projects, and right now it is little bit done. means app.jsx is done and let me focus and build more stuff....
|
1793004423.7107902
|
1793609223.7107902
|
|
53361
|
FreeDomain by @theskriptkid | Stardance
|
theskriptkid
|
1
|
27.21
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T13:52:33Z", "hours": 26.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Free SUbdomain Hosting plattform! Anyone can get a Free subdomain of the *.freedomain.meme domain, as long as its only per account. Please Note while testing: The domain May (or may not?) take up to 30-60 minutes to come up, this is because of Namecheap and I cant do anything about it! You can Only make 1 Domain per Useraccount You need an 2 Factor app on your phone You can Not change your password, we generated it for you. On the TEST Ip, you WILL GET an Certificate warning. If this were not our test IP, you would be able to use certbot or similar programms that allow you to generate an Certificate for your site. However, as we Don’t know your subdomain name, we cant do that and because of that there is an Warning (should be skippable, goto show more and then continue to site)", "repo": "https://github.com/TherealONE12/FreeDomain", "demo": "https://freedomain.meme"}]...
|
[{"post_id": 82925, "ts": "202 [{"post_id": 82925, "ts": "2026-10-26T08:32:04Z", "hours": 0.8281, "text": "Okay, so hopefully everything works now… LOL Fixxed a lot of bugs, including that one of the packages from pip didnt work anymore, and i had to migrate evrrything to a new package. Then I tested everything and hopefully now it works… Also I have added a test site for you guys to test it out, as many of the other sites block acsess from unknown domains"}, {"post_id": 80617, "ts": "2026-10-18T09:58:52Z", "hours": 0.3808, "text": "fixxed stuff, clarified in readme ai usage, Redeployed everything."}, {"post_id": 75800, "ts": "2026-10-01T05:48:53Z", "hours": 2.5833, "text": "fixxed (All?) Bugss, gonna ship Now!"}, {"post_id": 69787, "ts": "2026-09-17T19:51:14Z", "hours": 1.0708, "text": "I wanted to Ship today but YAY DEBUGGING DAY! Well, thanks to zsharpminor (sorry, I only know your dc name ) and two of my real Live friends We found some bugs. And afther an hour or so of fixing stuff, There are still Bugs. Well, Gonna ship another Day! (And btw, YAY Day 20 Of 21 of Code everyday for a Pluschi!!!)"}, {"post_id": 69597, "ts": "2026-09-17T11:52:51Z", "hours": 0.8467, "text": "Deployed The Website! But Wait, why Isnt this the ship Message? Because, I sadly found a few bugs and wrong Grammar/text on the website, wich I will Fix Today a bit later, and then, it goes to one last round of Beta Testing and then I will ship (Hopefully no bugs emerge)! Im pretty hyped, as I can see the end of this Projekt!! Cant wait to share what I build!!"}, {"post_id": 68791, "ts": "2026-09-15T19:18:31Z", "hours": 2.8333, "text": "debugged, fixxed and removed useless stuff. Began on recommenting and added an (empty) readme file"}, {"post_id": 67919, "ts": "2026-09-14T07:06:43Z", "hours": 3.4039, "text": "Made the HTML sites more dynamic, and added MINIMAL logic to the code to make the HTML sites more dynamic and yeah. They still look no good, but i dont know css or html soooooo i will need some more time… (Wich is good because more time = more stardust ;) ) It broke everything existing. I dont know why or how. But heyyyyy, thats gonna be fine or something"}, {"post_id": 66082, "ts": "2026-09-11T17:30:54Z", "hours": 1.7911, "text": "Added The Admin System (Well the Logging part) I Made varius different types of logs. One for New Domains, one for varius stuff, one for Bans, etc. And They look pretty Okay!"}, {"post_id": 65810, "ts": "2026-09-11T06:10:11Z", "hours": 0.7681, "text": "Secured the Homepage, added that the real A level names get pulled from the DNS server (Namecheap) instead of just the safed entries in the database, so that it “auto-syncs” on each new request the names from the dns provider and my personal entries dont get overwritten. The next step would be to either add an small website scraper to verify the connected websites that they are sfw and dont do bad stuff (cause thats still my domain and I am getting to jail if smth happens) Or add more different html error/sucsess types so that they are acutally usefull Or to Make the Admin integrations for (un) Banning members, (re)setting the domains or smth Or to enhance the sites with some css/better html styling cause I think my rating is getting obliverated if I let them how they are right now…"}, {"post_id": 65351, "ts": "2026-09-10T13:13:27Z", "hours": 3.9522, "text": "fixxed the problem with namecheap, added support to make domains, added mayor Commenting for interested people to understand what my thoughts are on why stuff what made that way"}, {"post_id": 63803, "ts": "2026-09-07T19:27:19Z", "hours": 1.7511, "text": "Finalised and tested OTP/login/register flow, added support for subdomain-creation and added the m,ethodes to interact with namecheap api. Sadly namecheap is currently blocking all requests and idk why… Even though I added the correct api key AND the correct ip…. gotta see what I can do."}, {"post_id": 62437, "ts": "2026-09-05T19:39:20Z", "hours": 2.8569, "text": "Added background system for domain registration, and a new auth system so that you dont have to input an topt code every 10s"}, {"post_id": 59084, "ts": "2026-08-31T18:11:07Z", "hours": 4.1478, "text": "I have made some cool Progress! I added an register flow (with db) and account code generation. There are still some “minor” bugs, but its good enough for the 1. devlog."}]...
|
Title: FreeDomain by @theskriptkid | Stardance
De Title: FreeDomain by @theskriptkid | Stardance
Devlogs:
I have made some cool Progress! I added an register flow (with db) and account code generation. There are still some “minor” bugs, but its good enough for the 1. devlog.
Added background system for domain registration, and a new auth system so that you dont have to input an topt code every 10s
Finalised and tested OTP/login/register flow, added support for subdomain-creation and added the m,ethodes to interact with namecheap api. Sadly namecheap is currently blocking all requests and idk why… Even though I added the correct api key AND the correct ip…. gotta see what I can do.
fixxed the problem with namecheap, added support to make domains, added mayor Commenting for interested people to understand what my thoughts are on why stuff what made that way
Secured the Homepage, added that the real A level names get pulled from the DNS server (Namecheap) instead of just the safed entries in the database, so that it “auto-syncs” on each new request the names from the dns provider and my personal entries dont get overwritten. The next step would be to either add an small website scraper to verify the connected websites that they are sfw and dont do bad stuff (cause thats still my domain and I am getting to jail if smth happens) Or add more different html error/sucsess types so that they are acutally usefull Or to Make the Admin integrations for (un) Banning members, (re)setting the domains or smth Or to enhance the sites with some css/better html styling cause I think my rating is getting obliverated if I let them how they are right now…
Added The Admin System (Well the Logging part) I Made varius different types of logs. One for New Domains, one for varius stuff, one for Bans, etc. And They look pretty Okay!
Made the HTML sites more dynamic, and added MINIMAL logic to the code to make the HTML sites more dynamic and yeah. They still look no good, but i dont know css or html soooooo i will need some more time… (Wich is good because more time = more stardust ;) ) It broke everything existing. I dont know why or how. But heyyyyy, thats gonna be fine or something
debugged, fixxed and removed useless stuff. Began on recommenting and added an (empty) readme file
Deployed The Website! But Wait, why Isnt this the ship Message? Because, I sadly found a few bugs and wrong Grammar/text on the website, wich I will Fix Today a bit later, and then, it goes to one last round of Beta Testing and then I will ship (Hopefully no bugs emerge)! Im pretty hyped, as I can see the end of this Projekt!! Cant wait to share what I build!!
I wanted to Ship today but YAY DEBUGGING DAY! Well, thanks to zsharpminor (sorry, I only know your dc name ) and two of my real Live friends We found some bugs. And afther an hour or so of fixing stuff, There are still Bugs. Well, Gonna ship another Day! (And btw, YAY Day 20 Of 21 of Code everyday for a Pluschi!!!)
fixxed (All?) Bugss, gonna ship Now!
fixxed stuff, clarified in readme ai usage, Redeployed everything.
Okay, so hopefully everything works now… LOL Fixxed a lot of bugs, including that one of the packages from pip didnt work anymore, and i had to migrate evrrything to a new package. Then I tested everything and hopefully now it works… Also I have added a test site for you guys to test it out, as many of the other sites block acsess from unknown domains
Ships:
I made a Free SUbdomain Hosting plattform! Anyone can get a Free subdomain of the *.freedomain.meme domain, as long as its only per account. Please Note while testing: The domain May (or may not?) take up to 30-60 minutes to come up, this is because of Namecheap and I cant do anything about it! You can Only make 1 Domain per Useraccount You need an 2 Factor app on your phone You can Not change your password, we generated it for you. On the TEST Ip, you WILL GET an Certificate warning. If this were not our test IP, you would be able to use certbot or similar programms that allow you to generate an Certificate for your site. However, as we Don’t know your subdomain name, we cant do that and because of that there is an Warning (should be skippable, goto show more and then continue to site)...
|
1793008078.9222183
|
1793094478.9222183
|
|
2155
|
obliberry by @torkel | Stardance
|
torkel
|
1
|
439.61
|
5134
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T09:34:08Z", "hours": 270.0, "multiplier": 19.51, "payout": 5134, "blessing": "neutral", "text": "obliberry feels usable enough that i think its a good time for a first ship :) obliberry is a fallout-inspired isometric game engine for hex-grid games, written in C++20 with OpenGL, featuring a visual editor, an ECS core, its own scripting language, and single-file packaging/exports. this has all been rather challenging, but an incredibly fun learning project, especially regarding using modern C++, OpenGL, and making my own programming language it is still obviously not fully complete of course, but I think it’s in a rather good state :D", "repo": "https://github.com/torkelicious/obliberry", "demo": "https://github.com/torkelicious/obliberry/releases"}]...
|
[{"post_id": 82916, "ts": "202 [{"post_id": 82916, "ts": "2026-10-26T07:20:46Z", "hours": 6.4836, "text": "rahhhh been working on the new… demo… and well, it found some things. mhm changes gizmos and transforms rewrote the entity gizmo so moving things under rotated or scaled parents actually works properly transforms now handle custom matrices and shear much better, including when reparenting made hierarchy updates more robust, added matrix support to scene files, and stopped rounding transform data on save gizmo undo is more consistent now, and the editor warns when a transform has shear pathing movement can now re-plan around blockers, and picks a nearby free hex if the destination is blocked scripts can set paths without drawing the path overlay, which is useful for enemies script messaging added Send , Broadcast and on_message so scripts can communicate with each other messages support basic values and are delivered through a queue on the main thread scripting and components SetTimeout now can forward arguments to callbacks point lights can be disabled, and particle emitters remember whether they’re active when saved added a bunch of smaller fixes around scene saving, prefab parenting and serialization obsl some separate ObSL updates too: variadic native functions, multiline comments, a formatter and fixes for nested calls. (not tracked here though) DEMO!!!!! im working on a new demo :0 oh and it is my birthday woaw"}, {"post_id": 81496, "ts": "2026-10-21T14:23:50Z", "hours": 7.1158, "text": "script properties & UUID types scripts can now declare properties that show up in the inspector and get saved per entity. also ripped std::string UUIDs out of most of the engine in favor of an actual Core::UUID type, plus some scripting additions and a few tests. changes script properties Prop(\"SpeedOrSomething\", 2.5) , PropEntity(\"TargetEntity\") and PropUI(\"MyRect\") for regular values, entities and UI elements properties show up under each script slot in the inspector, with appropriate controls and per-slot values values are only readable during top-level script execution, so store them in variables for use in hooks. Prop in a hook just returns the fallback saved as scriptProperties in scene JSON, omitted when empty property edits support undo, including live number/string editing. unused saved properties can be pruned with undo too.. ScriptSlot is move-only now Core::UUID replaced string UUIDs across the registry, UI, editor commands, project config, save directories and scripting with a 16-byte Core::UUID registry UUID lookups now use an index instead of looping through entities malformed UUIDs in files fall back to generated or nil UUIDs UI UUIDs are saved and restored, including nested elements. duplicate UI UUIDs are handled without crashing the loader savegame directories etc take a UUID directly scripting & UI script objects now have identity values and wrappers are readonly , along with various scripting result objects. came with an ObSL bump UI wrappers get SetParent(parent) and a uuid field. null reparents an element to the root UISystem::Reparent preserves ownership and prevents parenting an element under its own descendant new created scripts use fn on_update(dt) (I wrote on_update() last time …oops…) smaller stuff UndoManager::Execute returns whether the command applied script list shows filenames with Remove beside them tests and docs more tests and docs updated ofc… so u can reference entities in scripts without using Find() now!!!"}, {"post_id": 80249, "ts": "2026-10-16T21:56:07Z", "hours": 3.8333, "text": "uuid-bound script wrappers…, logger sinks…., and a pile of small editor stuff…. mostly scripting + logging plumbing this time, plus a couple of editor things I’d been wanting… changes script wrappers are uuid-bound now entity wrappers used to capture the raw runtime id, which is a problem if ids get recycled or the registry gets rebuilt. now every wrapper holds the entity’s uuid and resolves the live id on each call, so it keeps pointing at the right entity (or does nothing if it’s gone). new FindEntityByUUID(uuid) global and GetUUID() / .uuid on entity objects SetParent matches an entity object by uuid, a plain number is still a runtime id same treatment for UI wrappers: they resolve by uuid instead of name, so renaming or duplicate names don’t break them added FindUIByUUID , GetUUID() and Destroy() on UI elements, and SetImage / GetImage on images (acquires the texture through the scene asset scope like fonts do) still by name: FindUI , DestroyUI and the button state queries ( WasClicked / IsHovered / IsHeld ). UI scripting is still weird… work in progress i guess… logger sinks the old way was swapping the logger’s std::ostream for a stringstream that the UI panel also read from, which was a data race waiting to happen (logger thread writes, main thread reads). replaced it with actual sinks: ILogSink with ConsoleSink (stdout/stderr like before) and UILogSink (mutex -ed pending buffer the panel drains each frame) the editor and runtime both register a ConsoleSink , and the editor adds the UI sink on top, so the Logs panel is always there now instead of only when there’s no tty console panels color lines by severity now interpreter output goes through a small UiStream ostream into the ObSL panel, with stdout and stderr split (needed the bumped obsl, Interpreter takes both streams now…) ObSL panel clears when you enter play mode editor F focuses the camera on the selected entity, press it again to go back to the origin. its smooth…., ..panning cancels the focus keyboard pan only gets called when there’s actually input now.. editing a material in the inspector no longer mutates shared runtime-only materials. if it isn’t a catalog asset it gets cloned into assets.json first, and edits to catalog materials get “upserted” back to the catalog. “Clone Material” writes to the catalog too new scripts from the project browser come with an on_update stub instead of just a comment scripting runtime script top-level code now runs with the command buffer in “immediate” mode ( BeginImmediate / EndImmediate ), so registry writes at the top of a script apply right away instead of waiting for a flush that hasn’t been set up yet during init Hex_GetNeighbors wasn’t GC protecting its array while filling it, fixed…. grid tile textures a tile type with no texture used to fall back to hex_tex both when collecting dependencies and when loading scenes, which would pull in a texture that might not exist. now no texture means no texture… as it should… misc bumped obsl (new using alias feature, and err output stream settings) docs for all the uuid stuff, the F key, and the new UI/image methods… of course… oh also … new demo scene testin thingamabob im messing with…"}, {"post_id": 79544, "ts": "2026-10-14T15:18:47Z", "hours": 7.9614, "text": "map edit kinda overhauled changes map edit stuff the brush size is now 1 to 8 instead of 1 to 5. size 1 is one hex, size 2 is 7, size 3 is 19, etc. Ctrl +scroll also changes the size added Rect and Circle shapes alongside the brush. they work with Paint, Erase and Select. Rect uses opposite corners, Circle goes from a center out to the hex you release on. both apply on release paint previews are green, erase previews are red, and selection previews are yellow. selected tiles get a blue overlay added tool hotkeys: B for Paint, E for Erase and Q for Select Esc cancels a drag. Rect and Circle do nothing if cancelled, while a brush stroke gets reverted instead of leaving half the changes behind loading a map now prompts before discarding a dirty map, and successfully creating or loading a map clears the old undo history selecting and editing multiple tiles Select now supports click and drag, Shift +drag to add to the selection and Ctrl +drag to remove from it the toolbar shows the selection count and has Clear and Delete buttons. Delete removes all selected tiles in one undo step the Tile Editor can edit the type and walkability of the whole selection at once. when selected tiles differ, the controls show mixed values etc. material editing only appears when every selected tile shares a type. Override Current Type changes the material for every tile using that type, while Save as New Type assigns a matching type to the selection without changing every other tile using the old type brush strokes, Rect/Circle fills, deletes and bulk type or walkability changes are each grouped into one undo step. changing a type’s material itself is still not undoable…. the console…. logging now has a sink system, so the same formatted log messages can go to different outputs the editor now has separate Logs and ObSL panels. engine/application logs go to Logs now, and script stdout goes to ObSL the panels have Clear and Copy buttons and keep the latest 2000 lines. the UI sink buffers incoming logs under a mutex before the editor consumes them closing the editor closing the window now goes through a callback, so unsaved scene or project changes trigger the save/discard prompt instead of immediately closing removed the old global Esc -to-quit shortcut. ObSL’s CloseWindow() no longer closes the editor while in Editor mode. it logs that it was called instead. in the runtime, it still closes the window windows and smaller fixes enabled /MP for MSVC builds, and the editor/runtime targets use the Windows GUI subsystem so they don’t launch with a console window attached atomic file writes now write the byte buffer explicitly and retry Windows file replacement when it fails with access-denied or sharing-violation errors, for up to about 2 seconds a bit of cleanup around collision pair sorting, const-correctness and naming docs updated the editor guide and screenshot to cover the new tools, shapes, selection controls, shortcuts and undo behavior. blah blah …map editing is finally a lot less barebones…"}, {"post_id": 78861, "ts": "2026-10-11T19:54:19Z", "hours": 3.0197, "text": "uhhh changes dont nuke scene on failed load scene deserialization moved out of Scene::OnEnter into SceneManager::LoadScene , and now runs before the old scene gets torn down. if the new one fails, you stay in the old scene ( LoadSceneByPath returns a bool now) loading is stricter. missing map files, bad/out-of-range/cyclic parent values and broken UI sections fail the load instead of logging an error and limping on persistent entity migration happens before the swap too, so a failed asset acquire can’t leave you half in the new scene the editor’s LoadScene used to clear the current project before trying to load. now undo history and selection only get cleared once the load actually worked saving: map write failures now propagate instead of reporting success, and files get closed before the error check destroying entities DestroyEntity was recursive, now it’s iterative with a visited set. deep hierarchies, cycles and duplicate child entries no longer kaboom the stack or double delete, and children go first (wow that sounds dark) Reparent and SetParentDirect go through CanSetParent , which rejects cycles and stale parents, even if the existing hierarchy is already cyclic script DestroyEntity / entity.Destroy() now use RequestDestroy to tag the entity and its whole subtree instead of deleting immediately, so on_destroy runs before deletion. scene exit drains the destroy queue too, including entities tagged by exit hooks the script wrapper cache evicts an entity when it’s destroyed a dumb one…: the hot-reload cleanup list had on_exit in it twice and no on_destroy , so on_destroy GC roots never got released … the script system was holding raw ScriptComponent* across initialization, which dangles if a script spawns enough entities to grow the pool. it looks components up by entity ID now script runtime reinitialization after a scene change uses the VFS path and reruns setup, so using imports keep working from the mounted project ui undo UI elements have UUIDs now, and undo commands resolve them by UUID instead of holding raw pointers. removing an element captures the whole subtree plus its sibling position, so undo restores the hierarchy and order. renaming also updates the name index live. smaller fixes collision broadphase is a “spatial hash grid” now instead of checking every pair lightmap rebakes when ambient changes, and handles maps with no tiles atomic file writes use unique temp names so concurrent writers don’t trip over each other project changes wait for background asset loads to finish timeout timers are mutex-protected, and callbacks can schedule more timers without deadlocking SmallTask over-aligned captures fall back to the heap VFS::Resolve(\"..\") had UB from a std::mismatch that wasn’t bounded on the second range… PlayMusic stops, swaps and starts under the lock now instead of racing!!! tests wrote a pile of tests alongside all this: atomic writes, wrapper cache, hierarchy safety, map serialization, save concurrency, scene loading failures, script lifecycle, script modules, SmallTask and timeouts. expanded to the editor command, save game and VFS tests. so EVEN LESS explosions !!! Woo!"}, {"post_id": 78453, "ts": "2026-10-10T20:34:34Z", "hours": 4.7336, "text": "undo stuff + render lifetime fixes undo / redo the undo system relied way too much on runtime entity IDs and direct pointers into components. that works until an entity gets deleted, an ECS slot gets recycled, or a dense component pool moves stuff around… entity commands now store the entity UUID and resolve the current runtime entity when they execute / undo instead. this now applies to transforms, renaming, adding / removing components, script changes, component field edits and map painting. so older commands can still find the right entity even if it was deleted and later restored with a completely different runtime ID. deleting things is actually undoable now finally added proper undo for deleting entities. !!!!!! deleting an entity snapshots the whole subtree first, including components, UUIDs, names, hierarchy + sibling order, scripts, custom data and asset references. undo rebuilds the tree, reloads required assets, restores the UUIDs and puts everything back where it was. this also means edits from before the deletion still work afterwards, since those commands just resolve the restored entity by UUID. paste uses the same snapshot system now too, so undo / redo keeps the same pasted entity identities instead of creating unrelated ones every time. there are checks for conflicting UUIDs, missing parents, invalid hierarchies, missing assets etc. failed restores shouldn’t leave half-created entities behind. failed commands also no longer get added to undo history or wipe an existing redo chain. custom ObSL data custom script data needed special handling too. arrays / objects can share references or even be cyclic, so just copying ObSL::Value s wasn’t enough. there’s now a snapshot format that captures the object graph and rebuilds it through the interpreter + GC when an entity is restored. CustomDataComponent also roots stored ObSL values properly so GC-managed objects stay alive. runtime functions aren’t snapshotable though, so deletion just fails instead of restoring garbage. render thread lifetime stuff also did a pretty big pass over renderer resource lifetime, mostly because scene switching could unload resources while an already submitted frame was still using them. (this started because someone mightve pointed out a lil crash for me…) render commands now pin the meshes, materials, shaders and textures they need until that frame is done. same idea for UI textures and the editor viewport framebuffer. OpenGL objects also don’t call glDelete* from whichever thread destroys the C++ object anymore. textures, shaders, buffers, VAOs and framebuffers queue deletion for the render thread, while it actually owns the GL context. less bugs yay frame state + shutdown renderer state that can change while the render thread is behind is captured per frame now too, including clear color, post-processing and UI resolution / projection state. shutdown is also more deliberate now: worker threads stop first, background font loads finish, scripts stop, scenes/resources are cleared, renderer/UI resources shut down, then the remaining GL delete queue is processed while a context still exists. font loading uses tracked jthread s now too instead of detached threads. small things exporting now reports success / failure back to the editor and shows a little result popup instead of silently relying on the console. also added tests around delete / restore, UUID reuse, hierarchy restoration, script components, map edits, pasting, command failures and repeated undo / redo without leaking entities or asset references. so. .. . less explosions hopefully sorry if wording is weird.. character limit.."}, {"post_id": 78136, "ts": "2026-10-09T18:21:07Z", "hours": 3.2578, "text": "export dependencies + prefab asset loading redid how exporting figures out what needs to go into the package previously editor export was basically much closer to just packing the project directory. now it builds a dependency manifest first figuring out what to export export starts from the project + scenes and follows the things they reference: catalog assets used by entities, maps, UI and post processing map files attached ObSL scripts script using imports scenes loaded from scripts prefabs instantiated from scripts music / sound files material textures + shaders animation sheets shader #include s referenced scenes and prefabs get scanned too, dependencies keep chaining from there. it then generates a new filtered assets.json specifically for the package instead of sticking the entire project catalog in there. the actual project’s catalog is untouched. script analysis added a ScriptAssetAnalyzer which walks the ObSL AST without actually running anything. literal stuff can be narrowed down properly, including things like: PlayMusic(\"assets/audio/music.ogg\", 1.0) or even constant string concatenation… asset setters like SetTexture / SetFont get tracked too. if a texture or font ID is dynamic, export keeps that entire asset category. if a runtime file path for stuff like LoadScene , Instantiate , PlayMusic or PlaySound2D can’t be figured out, it falls back to keeping the eligible project files + full asset catalog. unknown / indirect calls are done the same too so simple projects get smaller exports, while weird dynamic scripting should still work… .pakignore still applies, and required files being missing or ignored is now an export error prefab assets also fixed prefabs properly interacting with the lazy asset system. instantiating a prefab now scans its components, acquires whatever catalog assets it needs, resolves their dependencies, and retains them in the scene before creating the entity. so a prefab can use an asset that wasn’t already referenced by the scene and it should just work. scene asset scopes got changed a bit for this too. instead of accumulating a new scope every time something acquires assets, they’re merged into one scene scope and duplicate asset references are ignored. also made prefab revert a little safer so the old entity isn’t destroyed unless the replacement prefab actually instantiated successfully. packaging / ci things editor packaging is stricter in general now. script dependency validation can fail the export, missing dependencies stop it, and PackageCurrentProject reports failure so the rest of the export doesn’t continue pretending everything is fine. shader includes are followed during dependency collection too, while the engine shader helpers still get bundled for runtime includes. also cleaned up CI a decent bit… also some more tests too for the packaging and script analysis lowk sorry for just posting an image of the logs idk how else to show it since it’s mostly backend / file stuff 😭"}, {"post_id": 77620, "ts": "2026-10-07T17:38:02Z", "hours": 3.62, "text": "more tests (more bugs) kept going with the unit tests the test suite now covers most of the important stuff, including: ECS / entity IDs / UUIDs serialization + hierarchies collision geometry, events and movement maps animation saves ObSL + some EngineLib bindings assets / asset lifetime VFS + packaged projects configuration editor undo commands also added a couple integration tests for audio and rendering (OpenGL tests are optional) finding things unsurprisingly this found some actual problems too. stale entity handles can no longer remove / access components from an entity that reused the same slot, and editor undo commands are a bit safer around entities or components disappearing. also fixed some hierarchy rotation decomposition weirdness, cleaned up VFS / package mounting state so old package data can’t leak into the next mount, and added a few other small null / cleanup checks around scenes and rendering resources."}, {"post_id": 76449, "ts": "2026-10-03T15:32:32Z", "hours": 3.1158, "text": "unit tests (& some fixes) uhhhh started adding actual unit tests… i was kinda putting it off but i gotta have it… set up GoogleTest + CTest and started covering some stuff ECS registry / generational IDs entity UUIDs entity serialization hierarchy / parenting collision events + movement blocking save games maps bugs bugs bugs… and unsurprisingly, writing tests immediately started exposing some smaller issues. fixed stale entity handles being able to mess with components belonging to a recycled entity slot, and cleaned up some hierarchy transform / rotation handling that wasn’t preserving transforms correctly in certain parenting cases. also tightened up a couple math helpers while testing them. im still gonna write even more tests.. its very needed at this point and will prolly help me find some more bugs i missed before…"}, {"post_id": 75890, "ts": "2026-10-01T14:46:00Z", "hours": 5.4794, "text": "uuids, collision layers, save settings, and other stuff bit of a mixed bag this time. mostly cleaning up some systems that were already there and filling in stuff I’d need… entity UUIDs entities have proper UUIDs now, separate from their normal runtime entity IDs. the regular generational ID still does all the normal ECS stuff, while the UUID is a stable identity that gets serialized with the entity. this mostly fixes how persistent entities work between scenes. previously I was deduplicating persistent entities by name , which was obviously not ideal since names aren’t actually identities. persistent entities + their children now keep their UUIDs when moving between scenes, and if the destination already has an entity with the same UUID it gets replaced by the carried-over one. two things can have the exact same name now without persistence randomly deciding they’re the same thing. normal prefab instances / newly created entities still get new UUIDs. collision layers colliders now have proper layers + masks. there are 32 collision layers, and every collider has: a layer a 32-bit mask of layers it accepts both colliders have to accept each other’s layer for the pair to interact. the same filtering is used for normal overlap events and movement blocking, so there isn’t a separate set of collision rules depending on which system happens to be asking. added editor controls for this too, including the layer selector, all 32 mask toggles, and select all / deselect all buttons because clicking 32 checkboxes individually sounds incredibly fun. scripts can also read / change the layer and mask now. collision-aware script movement also added Transform.TryMoveTo(x, y, z) to ObSL. unlike SetPosition , this checks whether the entity can actually occupy the destination before moving it. the normal hex movement system uses the same helper now too, so script-controlled collision-aware movement and normal movement go through the same path. direct SetPosition is still basically teleporting, which is intentional. also fixed on_collision_stay actually looking up the collision stay callback instead of the trigger stay callback. whoops. more save settings did some more work around the save system from the last update. saving can now be enabled / disabled per project, and projects can choose where save files go: Data Home , the normal OS application-data location Portable , relative to the executable both still use the project UUID underneath so different projects don’t start sharing save files because somebody named both of them game . these are editable from Project Settings now. also added a confirmation dialog when regenerating the project UUID since doing that changes which save directory the project looks at. the old saves aren’t deleted, the project just gets a new identity and stops finding them automatically. graphics config stuff changed packaged builds so graphics.json can live beside the executable and override the version inside the package. (i.e if someone decides to unignore the graphics config and package it) couple random fixes particle emitters now keep their actual live particle count, so GetAliveCount() in ObSL finally returns the real value instead of the completely useless placeholder it had before. fixed a prefab revert issue where the code was reading the prefab path from the component after destroying the entity. very intelligent. also made theme font loading a bit less fragile. missing / broken font files get logged and skipped instead of potentially taking the whole theme load down with them, plus some parsing cleanup. and updated another mountain of docs to match all the collision, persistence, save, prefab, post-processing and export changes."}, {"post_id": 73199, "ts": "2026-09-24T16:15:43Z", "hours": 7.0497, "text": "save system i wanted this to be pretty generic instead of the engine having some hardcoded idea of what a “player save” or whatever is, so the actual save data is ba sically just key/value storage that scripts can use for whatever they want!!! save data there’s now a SaveGameManager which keeps one active save in memory. save values can currently be: booleans numbers strings the file format is versioned and also stores a display name + created / updated timestamps. the actual save data itself doesn’t really care what the values mean. it is any key value pair that persists. there’s also locking around the active save since scripts can be running across multiple workers….. project UUIDs projects also have their own UUID now. it’s generated when the project is created or when a project that does not already have one is opened right now it’s mainly used to give each project its own save-data directory without name collisions but im sure its good to have outside that!!! save files the basic save file operations too create a new save write the current active save load a save delete a save list existing saves start a fresh unsaved “game” save filenames are generated from timestamps. the human-readable name stays inside the file, display names don’t need to also be valid / unique filenames. save_list() also gives creation + update timestamps, and saves are sorted by most recently updated. writes are atomic too, so it writes through a temporary file before replacing the real save instead of directly nuking the existing one and hoping for the best per-project save directories save data is stored outside the project itself in the normal OS application data home each project gets its own directory based on its UUID <data home>/obliberry/<project uuid>/saves/ projects with the same name don’t fight over the same saves.. (i have several projects just called “UntitledProject” lol) this is LocalAppData on Windows, Application Support on macOS, and XDG_DATA_HOME / ~/.local/share on Linux. both the editor and runtime configure the save manager when the project is loaded, and it gets reset again when the editor closes the project ! ObSL ObSL savedata enginelib intergration: basic data stuff: save_set(key, value) save_get(key) save_has(key) save_remove(key) save_clear() save_new() save file management: save_create(name) save_write() save_load(filename) save_delete(filename) save_list() save_list() returns an array with the filename, display name, creation time and last update time some cleanup also pulled the atomic file writing stuff into a shared OS file utility, so assets.json can use the same code instead of having its own implementation. bunch of formatting stuff too i still have to document this and do some more testingf but yeahhh"}, {"post_id": 71462, "ts": "2026-09-20T21:23:42Z", "hours": 6.445, "text": "asset system refactor + some editor stuff been wanting to redo how assets work for a while now. until now scenes carried the asset definitions with them, and loading scenes would keep throwing resources into the global resource manager. worked fine enough , but it also meant resources could kinda just accumulate forever.. i seperated them now!! assets.json projects now have a project-wide assets.json catalog. textures, shaders, meshes, materials, fonts, animation sets, etc. live there instead of getting serialized into every single scene. scenes / prefabs / UI / animations etc. just store resource IDs and the definitions live in one place besides making scene files considerably less bloated, this means saving a scene no longer serializes whatever random collection of resources happens to currently exist in the resource manager lazy asset loading having one project-wide catalog does not mean loading the entire project into memory. scene loading now scans for the resources that scene actually references and loads those from the catalog this includes stuff referenced by: entities maps / tile types UI post processing spritesheets / animators dependencies get resolved too so if something needs a material, its shader + texture get pulled in first. animation sets pull in their spritesheet texture, etc. etc. now the the resource manager should only contain what is actually being used asset lifetime stuff added SceneAssetScope for keeping track of what assets a scene has acquired. assets are retained while something needs them and can actually be unloaded once the last scope using them disappears so changing scenes repeatedly should no longer turn the resource manager into yummy more objects :O forever…. persistent entities reacquire the resources they need when moving between scenes too. there’s also handling for catalog entries being replaced / deleted while their old resource is still loaded. those can be marked stale and discarded safely once the old scene lets go of them instead of leaving weird zombie resources around. engine assets still stay around like normal. editor asset workflow the editor now goes through the asset catalog too. creating / importing / replacing / deleting things like: textures shaders meshes materials fonts animation sets updates assets.json instead of depending on scene serialization to preserve them…. supported editor selections / script setters can also acquire catalog assets on demand and attach them to the current scene’s asset scope old projects old projects obviously still have all their assets embedded inside their scene files, so I added an ob_asset_migrator tool. it can scan the old scenes and merge all of those definitions into a project-level assets.json . there’s: dry-run validation conflict detection optional removal of the old scene assets sections backups before it starts rewriting stuff uses backups because i dont trust myself enough .. might vaporize projects who knows… docs docs docs also updated a stupid amount of documentation for the new asset model … since of course.. there’s now a full assets.json format page covering the different asset types, dependencies, lazy loading, asset scopes, editor behavior and migration. updated the scene / prefab / animation / post-processing docs too since all of those previously described assets as being stored directly in scenes. also cleaned up the main README + docs index a bit and updated the feature list because quite a lot of it was outdated at this point…. theme presets also did some work on editor themes. split the built-in theme definitions out and added some interesting presets: Obliberry Dark ImGui Classic Dark Obliberry Light ew imagine using light themes… High Contrast Dark Haxxorman Green editable and all… tldr: resourcemanager is now longer an infintly growing landfill…"}, {"post_id": 70788, "ts": "2026-09-19T19:20:34Z", "hours": 1.5706, "text": "I will not elaborate"}, {"post_id": 70712, "ts": "2026-09-19T17:13:26Z", "hours": 3.3022, "text": "animation editor continued working on the animation system and made the editor UI…. animation editor there’s now a Sprite Animation Editor you can: choose the spritesheet texture edit rows / columns / spacing create, rename and delete clips toggle looping per clip edit individual frame indices + durations move frames up / down duplicate / remove frames expand / collapse the frame list also added range generation so adding a normal animation doesn’t make you manually enter every frame one by one….. theres also an Apply FPS to All Frames button ! preview added a live preview for the selected clip. you can play, pause and restart it woaw it shows the current clip frame and spritesheet index while it runs…. project browser integration animation assets are properly integrated into the project browser now too there’s an Animations section where you can create, import, edit and delete animation assets creating a new one lets you choose its path then opens it in the animation editor. the animation asset workflow is mostly usable from inside the editor :D erm even more enginelib changes for the new systen that i still have to document… ( Play() Restart() etc) some cleanup working on… some mostly const-correctness, explicit casts, ranges, include cleanup and some other small stuff etc etc.. god bless resharper c++ also cleaned up some EngineLib entity wrapper code around registry locking so it can create wrappers safely when the registry mutex is already held spritesheet used in video attached for testing is : https://opengameart.org/content/animated-butterfly"}, {"post_id": 70230, "ts": "2026-09-18T19:10:52Z", "hours": 6.3242, "text": "btw pls star on girhub animation clips / refactoring spritesheets …kinda refactoring the whole spritesheet animation thing already the first version worked, but having FPS / looping / frame ranges etc directly on the SpriteSheetComponent was gonna get pretty limiting cuz what if I wanted multiple animations for one sprite. it might sound stupid but for me it’s always worked to get a prototype working, then refactor/reimplement it. thats even what i did for this entire project early on, before it deleoped into a full on engine :D so now the spritesheet is mostly just the sheet + currently displayed frame, and animation playback is seperate animation clips working on proper animation sets + clips. an animation asset can have one spritesheet and multiple named clips, with each clip containing its own list of frames :D each frame also has its own duration now instead of the whole animation just sharing one FPS value, so stuff like holding a frame longer or doing irregular timing is possible without clips can loop independently too animator component added a separate SpriteAnimatorComponent which handles the actual playback state: animation asset initial clip autoplay current clip current frame inside that clip elapsed time playing state the normal SpriteSheetComponent is way simpler now… it just says what sheet + frame should currently be rendered (the animator updates that for it) animation assets animation sets are assets now under assets/animations/ they serialize separately and contain the spritesheet setup plus all the clips / frames / durations they are loaded through the normal asset system and registered in the ResourceManager scene serialization now keeps the animator config like the selected animation asset, initial clip, and autoplay editor stuff the sprite sheet inspector got reworked for the current thing but whole UI stuff isnt finished once an animator is attached it owns the sheet/frame instead of both systems trying to edit the same thing. I still need a proper UI for actually making / editing animation assets and clips though. i shall work on this next!!! (right now the backend is pretty much all ive done but its taken a lil longer than i thought… who wouldve thought adding cips cleanly would take this whole aah refactor) scripting EngineLib updates too SpriteAnimator in scripts can now do: Play(\"walk\") Restart(\"walk\") Pause() Resume() Stop() IsPlaying() GetClip() it is now based on named clips so i guess not anything flashy to show but… its stuff :)"}, {"post_id": 69178, "ts": "2026-09-16T15:19:06Z", "hours": 4.2144, "text": "spritesheets / animation finally … spritesheet support spritesheets added a new SpriteSheetComponent with: texture rows / columns optional row + column spacing start frame animation length FPS looping playing / paused state current frame basically the renderer can now render only a specific UV region of a texture animation also added a small sprite animation system that advances frames based on FPS and handles looping / stopping at the end etc etc animations also update while in the editor… might be annoying for some, might be less annoying for others.. but thats how i like it editor stuff you can pick the texture, set rows / columns and spacing, choose the start frame + animation length, change FPS, toggle looping / playback, scrub the current frame, restart the animation, etc. etc EngineLib scripts can inspect stuff like the current frame, frame count, FPS, rows / columns and texture, and can also change the texture/grid/animation, set frames, play, pause, restart and stop animations. Collider also has a proper EngineLib component wrapper instead of collision only being accessible through the callback hooks. right now that’s just getting / setting whether it’s a trigger, but it’s there. also added both Collider and SpriteSheet to the normal GetComponent , AddComponent , RemoveComponent , HasComponent , etc. obviously. some cleanup did a bit of registry / EngineLib locking cleanup while I was in there too, mostly around entity wrappers being created while the registry lock is already held. also fixed one very stupid collision callback typo where on_collision_stay was looking up the wrong hook… oops….. im also starting on documenting this stuff…. yep.. pain… spritesheet used in video attached for testing is : https://opengameart.org/content/animated-butterfly"}, {"post_id": 67894, "ts": "2026-09-14T06:13:59Z", "hours": 2.1764, "text": "collision callbacks scripts can do collision things now….!!! script collision callbacks ObSL scripts can now define collision hooks: on_collision_enter(other) on_collision_stay(other) on_collision_exit(other) on_trigger_enter(other) on_trigger_stay(other) on_trigger_exit(other) the other argument is a normal EngineLib entity wrapper, scripts can do stuff like check its name, components, etc. collision events get collected by the CollisionWorld , then dispatched to the relevant script instances afterwards. they’re also run through the existing script command buffer ofc 2D collider shapes are back too… added explicit 2D shapes alongside the 3D ones: Rectangle Circle so the full set is now: Box Sphere Cylinder Rectangle Circle rectangle / circle are flat shapes. which is nicer for sprites and other 2d things movement actually respects colliders hex movement now checks whether an entity can actually occupy its next tile before moving there. added a CanOccupy() collision query which builds the entity’s collider at the target position, it blocks the move if something solid is in the way. triggers don’t block movement. collision robustness stuff also did a bunch of smaller fixes around the collision added a shared collision tolerance instead of random 1e-6 s in different places AABB overlap now uses that tolerance too improved collider validation depending on the actual shape fixed gizmo world-to-local conversion to use the proper inverse transform more finite-value / clipping checks in the collider gizmo GJK Indeterminate results preserve the previous collision state instead of automatically counting as a collision p.s, heres a lil photo of my attempt at making syntax highlighting for obsl using textmate grammar… :D"}, {"post_id": 66845, "ts": "2026-09-12T19:22:05Z", "hours": 3.0608, "text": "collision system round 2 i guess ended up pretty much reworking most of the collision system….. the first version was still basically 2D, with separate box vs box / circle vs circle / box vs circle functions. that worked as a starting point, but it was gonna get annoying … so… it is 3D now. colliders ColliderComponent now supports: boxes spheres cylinders 3D offsets / dimensions triggers entity-space or billboard orientation billboard colliders follow the same camera-facing basis as billboard rendering, which means billboard sprites can still have colliders that actually line up with how they appear on screen. GJK got rid of all the individual boxVBox , boxVCircle , etc. collision functions and replaced them with support-mapped collision detection using GJK. each collider shape just provides a support point now, the intersection test doesn’t care what combination of shapes it’s checking. i dont fully understand the math completely yet.. but it kinda makes sense :D still no collision response / physics yet. this is just detection + events, i think ill prolly get it into EngineLib.. soon… events the CollisionWorld still tracks collisions between frames and generates: Enter Stay Exit trigger state is kept with the collision too. this is for EngineLib integration. scripts should be able to react to collisions / triggers like unity I have not gotten around to this yet though… collider gizmos also had to redo the collider gizmos now that colliders aren’t just flat 2D shapes anymore… its a lil janky but it works.. billboard cleanup while doing the billboard collider stuff I also cleaned up billboard rendering a bit billboards used to have their world transform temporarily modified by SpriteBillboardSystem before rendering. now the billboard matrix is generated when the entity is submitted to the renderer instead, so the actual ECS transform can stay as the real entity transform there’s now one shared billboard matrix helper used by both rendering and collision, which is considerably less cursed. um scripting integration next i guess.. if something dosent explode ! :D"}, {"post_id": 66200, "ts": "2026-09-11T21:27:55Z", "hours": 3.4236, "text": "collision stuff been working on a collider system. still pretty early and not hooked into EngineLib yet, but most of the basic backend + editor stuff is there planning to expose it to scripts in a similar way to how Unity handles collision callbacks / triggers, but that’s for later……. collision added a new ColliderComponent with: box and circle colliders offsets size / radius trigger support collision system currently handles: box vs box circle vs circle box vs circle collision normals + penetration depth ‘trigger’ collisions also added a CollisionWorld that keeps track of collisions between frames and generates Enter , Stay , and Exit events. mostly groundwork for when I hook this into EngineLib… collider editing colliders are editable from the editor theres a collider inspector widget for changing the shape, offset, size/radius, and whether it’s a trigger, plus a viewport gizmo for directly moving and resizing them collider edits also go through the undo system, because every new editor feature needs to become an undo/redo problem eventually……… :D other editor fixes entity copy/paste now copies the whole child hierarchy instead of only the selected entity pasted hierarchies keep their parent relationships added copy/paste to the entity and UI context menus fixed stale entity / UI selections after the thing being selected gets deleted fixed single-key shortcuts like V , T , R , etc. firing while Ctrl/Alt/Shift was held keyboard camera movement no longer fights with Ctrl/Alt shortcuts a few smaller include / cleanup things mostly collision work though. next step is probably getting the collision events into EngineLib and experimentiung w. it its still a bit jank of course but it works i guess :DDDDD"}, {"post_id": 65603, "ts": "2026-09-10T20:50:19Z", "hours": 4.8511, "text": "copy paste (kinda) also too much time fighting windows builds tried to get entity copy/paste working and it’s… janky. also ended up wasting a stupid amount of time just getting windows builds to actually build again because i lowk forgot again about how it wont let me pass paths as strings implictly as it does on every other damn os… changes copy/paste (wip, kinda broken) started on ctrl+c/ctrl+v for entities & ui in the editor it kinda works but is really janky and does not feel good to use, also tried implementing it in the context menu but its not workiong at all -.- other the windows fixes…. some resharper reccomendation inspection type shi but lowk its been a while since i logged soo yep"}, {"post_id": 64268, "ts": "2026-09-08T15:23:01Z", "hours": 3.8883, "text": "sllight hub overhaul redid the project hub screen and added recent projects tracking, since up to now opening anything meant going through a file dialog every single time… changes recent projects get tracked in a PROJECTHIST file (next to the editor executable) …dead simple format, one filepath per line, each pointing at a project’s .json . capped at 5 entries, oldest just get removed off the list. hub screen is basically remade two docked panels now instead of one. left panel is the same buttons as before (new project, open project, etc), right panel is the new recent-projects list, up to 5 entries since that’s all the history file holds. also removed some unused dead code i found… QoL type stuff i guess :D"}, {"post_id": 63577, "ts": "2026-09-07T14:25:37Z", "hours": 3.9417, "text": "too many post proc fx? followup to the post processing / shader experiments… changes shader includes shaders can #include \"rand.glsl\" etc and it resolves properly. it checks the project VFS first, then falls back to the engine’s own shader helper directory if it isn’t found there. engine shader helpers also get packaged into exported games under engine/shaders/ , so includes keep working at runtime. added a few helper include files: rand.glsl / auto_rand.glsl - seeded hash-based random, with auto_rand reseeding per frame from u_Time color.glsl - HSV conversion, lift/gamma/gain, contrast, saturation, and three-way color wheels commons.glsl - engine-provided uniform declarations so you don’t have to redeclare u_Resolution , etc. in every shader for engine-provided uniforms the helpers use #ifndef / #define guards, so auto_rand.glsl can include rand.glsl without causing double declarations if the effect shader or another include declare the same uniforms or includes. more built-in effects added a few more built-in post processing effects: ColorGrading - exposure, contrast + pivot, saturation, lift/gamma/gain, and shadow/midtone/highlight color wheels using color.glsl FilmGrain - chunky per-cell grain with u_GrainSize controlling the cell size Vingette - yes i know its mispelled. uniforms with Wheel in the name now get the wheel-style color picker instead of the regular color picker, since a normal RGB slider cleaned up effect registration used to have two separate lists, one for raw shader registration and one for the default effect chain. this meant adding an effect involved touching two different structs in two different places. merged those into one PPRegistration list with an inDefaultChain flag shader debug name added an actual m_DebugName field and made error messages / the material inspector fall back to it when there isn’t a real file path. docs wrote up some post-processing editor docs ….. i hate writing docs.. also .shader is now a valid extension for importing custom effect shaders, alongside .frag / .glsl trimmed down the miniaudio CMake config by disabling its examples, tests, and tools, along with Vorbis/Opus/FLAC support since i’m not using any of that…."}, {"post_id": 62331, "ts": "2026-09-05T17:14:14Z", "hours": 3.0172, "text": "shader preprocessing been working on a small shader preprocessor thing while also finishing up the final bits of post-processing right now the preprocessor is pretty simple, mostly just adding support for: #include #pragma once I haven’t actually needed it yet, I just kinda had the urge to make it… so now I have a shader preprocessor …? its pretty extendable and all though so usefull to have ig :)"}, {"post_id": 61599, "ts": "2026-09-04T16:12:18Z", "hours": 6.9642, "text": "more post processing!!!! this took way longer than i thought it would but uh whateveer. i think i still gotta fix some small things but its working pretty alright :D editor ui added a proper ui for post processing :) threw in an import button and stuff so you can load in fragment shaders as post proc fx you can edit the uniforms directly in the ui now stuff glsl uniform parser: wrote a very simple basic glsl uniforms parser. this is what makes the ui editing possible, but it also helps a ton with serialization so i don’t have to hardcode everything serialization: implemented saving and loading for post processing effects and also made post processing effects bound per-scene instead of being a global engine thing yay post processing funny effects shaders aaaaaaaah"}, {"post_id": 58126, "ts": "2026-08-30T14:12:01Z", "hours": 6.2431, "text": "experimenting with post processing working on a lil post-processing pipeline still very wip but im mostly just playing around with various shaders and stuff changes the pipeline PostProcessor is a simple “ping-pong” chain: scene renders to an off-screen FrameBuffer , then each enabled effect runs full-screen-triangle shaders bouncing between two ping-pong buffers, in whatever order they were added I’m working on a system via variants to get uniforms to be easily serializable and such, it seems to be working but I havent actually wired it into anything just yet. editor and runtime a lil bigger change than expected. i implemented a unified fbo for both editor/runtime rather than the weird jank i was doing before editor: scene renders into m_SceneFrameBuffer , post effects run, then it gets sent into the ImGui viewport image like before runtime: same scene framebuffer, same post effects, then PresentToScreen goes to the default framebuffer instead just some general cleanup for that ig crt shader i wrote a lil silly CRT looking shader to test it out as shown below, it’s cool but kind of useless, but very fun to play with!!!"}, {"post_id": 55765, "ts": "2026-08-27T19:09:56Z", "hours": 4.9358, "text": "custom meshes im trynna make it so you can draw your own custom 2d meshes in the editor its still a lil buggy but it’s mostly working, serializes and all that :) very fun…"}, {"post_id": 55022, "ts": "2026-08-26T13:27:21Z", "hours": 2.1303, "text": "ui editing gizmos!!!1 you can finally drag UI elements around in the editor (instead of typing position/scale values into the inspector) changes ui gizmo added a proper UI gizmo with resize handles and dragging support and that corners resize both axes, edges resize one axis dragging the body moves the element resizing from the top/left keeps the opposite edge anchored added a small drag deadzone so clicking doesn’t accidentally create an undo step UI transforms now go through TransformUIElementCommand , so they’re undo/redo -able also renamed the existing entity gizmo code and naming gets confusing otherwise… coordinate stuff the gizmo needed mouse coordinates relative to the viewport rather than the whole window, so added some better viewport coordinate handling for that… maybe a lil late ui editing mode buttons won’t randomly enter their hover/pressed states just because your mouse is sitting over them now in the editor beccause its a lil annoying when editing small optimization also fixed UIText and UIButton recalculating their text layout every frame when nothing changes feels nice :)"}, {"post_id": 54551, "ts": "2026-08-25T16:02:00Z", "hours": 2.53, "text": "hardening + performance stuff so this is kinda the continuation of the last log(s) where i was going through some old code kinda boooring but its important performance mainly been trying to get rid of unnecessary allocations and full scans stuff optimized ECS entity/component lookups and removal reworked hierarchy propagation to avoid unnecessary registry scans reduced allocations in scripting and UI command buffers cached script wrappers so they can be reused instead of constantly recreated improved UI lookups with a proper name index made particle/lightmap updates only rebuild when actually needed cached project browser directory scans capped the editor console and added clipping for large logs also did a bunch of smaller optimizations around scripting task scheduling and resource loading things thread safety went through a lot of the cross-thread stuff as well made ResourceManager access properly synchronized experimenting with the audio locking guarded FreeType access made window size and pending scene state thread-safe fixed some render thread / GL context handling basically trying to make all the multithreading stuff a little less “it seems to work” type stuff though alot of this probably wasnt actually causing any issues YET , it would be very hard to debug in the future if I didn’t try to fix it now so yeahh correctness fixed several out-of-bounds issues in VFS/package parsing made VFS path resolution properly stay inside the VFS root (oops…) fixed hierarchy reparenting allowing cycles fixed a few dangling references in hierarchy code fixed some component pool and packaged asset lifetime issues undo history now clears when loading a scene cleaned up a few map editor edge cases fixed text centering fixed the triangle mesh made engine context non copyable also updated the demo template while I was at it (since a recent movementcomponent update it wasnt behaving properly due to the addition of a new field) there are other small things i probably didn’t mention here too but it’s mostly all a collection of a bunch of small things im still testing this though and looking into a few other small things….."}, {"post_id": 53560, "ts": "2026-08-24T04:55:16Z", "hours": 7.8433, "text": "code cleanup & optimization currently going through a bunch of older code and fixing / optimizing things. prolly way too much to actually write about, and most of it is just boring small changes, bug fixes, and a lil cleanup big pr i guess soon idk"}, {"post_id": 51782, "ts": "2026-08-21T16:57:55Z", "hours": 3.4422, "text": "mostly windows fixes changes SetLightmap took a raw Lightmap* and just held onto it for the frame swapped it for a small value type the renderer copies out immediately instead… this sometimes caused crashes but seemingly only on windows?.. just my luck.. LightingSystem had the same issue, was writing back into ECS memory through a raw pointer from a GL init task. now creates the framebuffer/vao up front and just calls Invalidate() on them SubmitPersistent was also holding a raw pointer into caller-owned memory, now copies into the staging buffer like everything else does RenderBatch used to just silently not draw anything if a batch went over MAX_INSTANCES . now it chunks into multiple draw calls instead of dropping the whole thing InvalidateGLCache wasn’t resetting the dynamic instance buffers, only the VAO cache, so they could point at dead GL objects after a context loss actual windows fixes opening files tries to open via already existing file associationg, otherwise falls back to the “open with” dialog if there’s no default handler also the paths get normalized to backslashes now asset import for scripts and so just does a file copy now instead of going through the old import path"}, {"post_id": 51240, "ts": "2026-08-20T19:35:22Z", "hours": 4.2758, "text": "persistent entities… again kinda scrapped most of the first attempt at persistent entities and decided to redo it instead of setting persistence in the editor, I went with something closer to Unity’s DontDestroyOnLoad , where scripts explicitly mark entities as persistent. makes more sense and is a lot less weird around scene changes. (i.e this.SetPersistent(true); ) changes scripting added: entity.SetPersistent(true) entity.IsPersistent() persistence persistent entities are tagged before the scene unloads, serialized normally, then re-injected and reparented when the new scene loads. the persistence tag itself isn’t serialized, so it won’t accidentally end up saved into the scene dedup added some basic deduplication so persistent entities don’t get duplicated if the new scene already contains an entity with the same name. its name based for now… not very great, but good enough"}, {"post_id": 50497, "ts": "2026-08-19T17:37:31Z", "hours": 6.7433, "text": "persistent Entities been working on persistent entities via a tag.. the same idea as Unity’s DontDestroyOnLoad, except you mark entities as persistent in the editor instead of doing it through scripts (scripts can do it too though). everything keeps breaking or half-working help."}, {"post_id": 49249, "ts": "2026-08-17T22:47:10Z", "hours": 2.5156, "text": "more docs… and some bug fixes some small bugs that have been annoying me for a while finally got fixed… and I wrote more docs than I probably needed to…? or maybe too litte.. who knows changes entity selection actually clears now fixed an issue where clicking empty space in the viewport wouldn’t reliably clear the current selection. the pick-result handling was structured wrong, so the “nothing was selected” case basically never got handled properly. also explicitly clear the entity ID framebuffer attachment every frame so it doesn’t leave stale IDs around from previous frames. i knew this was broken, and figured the fix would be pretty simple for a while.. but i just kinda forgot to fix it.. oops…. fixed parent transforms during scene loading fixed a bug with parented entities getting their transforms messed up when loading a scene. the issue was that scene loading was using the same Reparent() logic as interactive editor reparenting. that function intentionally recalculates the local transform to preserve world position, which is what you don’t want when loading a transform that’s already been serialized correctly… was eepy when writing that i guess added Registry::SetParentDirect() for scene loading, which just sets up the parent/child relationship without touching the transforms. interactive reparenting still uses the old behaviour, so dragging entities around in the hierarchy still preserves their world position misc cleaned out some old commented-out code docs, docs, docs also wrote proper editor documentation section covering things like: editor concepts usage scenes prefabs components and some even have screenshots.. yes i know.. fancy the help button in the editor links to some of these pages now. i guess “figure it out yourself” wasn’t really an acceptable documentation strategy anymore…. i mean i had some docs.. but they weren’t that good for editor-usage and more technical stuff.. so yep.. also made the README headers slightly more obvious because people were still asking where the download link was …."}, {"post_id": 48754, "ts": "2026-08-17T08:58:43Z", "hours": 2.7114, "text": "scrips can change things on the map yippie changes scripting scripts can now modify maps through EngineLib added: Map_SetHexWalkable Map_SetTileType yes, i made sure changes to walkability properly update the map’s pathfinding data instead of leaving it with stale information… sanitizers added sanitizer builds…. got ASan + UBSan working through CMake, along with presets for testing… it has helped already :) timers SetTimeout : if a script created a timer and then the scene changed before it fired, the callback could still run against the old scene state. timers now use generations, so changing/reloading a scene invalidates any timers belonging to the previous scene. editor fixed another map editor bug where discarding unsaved changes didn’t actually discard them… it would clear the dirty state but leave the edited map in memory… i knew about this bug and fix for a while, but i kept on forgetting about it… but its finally done -.- also added an Edit button to script entries in the project browser so scripts can be opened directly (launches default app it detects for the file via ur os)"}, {"post_id": 47739, "ts": "2026-08-15T21:10:44Z", "hours": 1.0883, "text": "mostly ui stuff (and fighting windows wide chars) yay pretty ui editor ui theming ui blah blah idk what to call it kinda cleaned up some stuff into proper members so the ui state doesn’t get all weird and persistent when you close the theme window discarding changes: actually works now. closing the window used to revert colors but keep your staged font changes, which was dumb (didnt really cause issues since changes werent applied anyways unless you saved beforehand but still.) font role indicators: added a little visual thingamabob where the font list now shows a star next to whatever font is actively set as the body font (also font name is now rendered in its proper font) path tooltips: added a hover tooltip on the font list items that shows the full file path of the font also some placeholder stuff in the code for searching the customization menu i might be implementing soon windows compat std::filesystem::path everything: went through and switched out the raw std::string usage for font paths inside FontConfig , replacing them with std::filesystem::path . this was purely because my windows ci build was failing. i was passing raw char strings around and doing weird string conversions, which completely blows up on windows because it expects wide chars for paths and i didnt consider that when i was being lazy and doing silly conversions and stuff because i just wanted to pass ez pz to a c library. freetype & serialization cleanup: updated all the internal freetype helper functions ( GetFontName , etc.) and the json theme serializer to play nice with the new paths instead of passing raw char pointers kinda mostly just making it a lil more prettier"}, {"post_id": 47431, "ts": "2026-08-15T11:16:32Z", "hours": 9.0703, "text": "fighting with fonts font-management rabbit hole in the theme editor… still wip changes font management in the theme editor the theme editor now has a proper Fonts section import .ttf / .otf fonts directly from the editor assign fonts to roles like Body, Bold, Monospace, Icons, etc. merge fonts together so icon fonts can be stacked on top of regular fonts rename, delete, and change the size of fonts fontsets are now saved as part of the theme, so imported fonts persist across restarts the role system isn’t fully wired up yet currently Body is used as the default editor font and Monospace is used for the console. im still working on the whole font management system here and its very unfinished and kinda untested.. very WIP!!! hot-reloading the annoying part was getting font changes to work while the renderer is running on another thread. rebuilding the ImGui font atlas in the middle of a frame was… not ideal, and eventually resulted in an assertion. now font changes mark the atlas as dirty, and the editor waits for the render thread to finish before rebuilding the atlas at a safe point. not the prettiest solution, but it seems to be working.. kind of dpi & freetype also experimented with DPI handling for fonts and wrapped FreeType into a single shared instance instead of creating separate instances everywhere. still figuring out exactly how I want the DPI/font sizing stuff to behave, but it’s getting there. bug fixes while doing all of this I also ended up fixing a few unrelated things: fixed an old GUI rendering bug where text could stop rendering or become garbled because of a pointer race thanks to @staneko for helping test/report that one since I couldn’t reproduce it properly on my system fixed a weird compilation issue related to namespace escaping bumped the vendored ImGui version for some dynamic font-related fixes a few other small UI changes and cleanup still working on this, and the font management side definitely isn’t finished yet… most of this time was just spent trying to get it to half-work so.. yep.."}, {"post_id": 46512, "ts": "2026-08-13T19:50:30Z", "hours": 3.6469, "text": "…the default imgui theme first off, huge thanks for all the incredibly kind reviews on my last ship !!! most of this work was also inspired by someone pointing out that i was still using the default imgui theme. fairs… so i spent some time making the editor actually customizable and messing around with having some kinda-nice defaults :) editor ui & theming live theme editor: built a proper window to tweak colors, spacing, padding, rounding, etc. in real-time. semantic palettes: added a semantic color system so you can build out a theme from a small set of base colors, rather than manually adjusting every single internal imgui color enum (though you can still override individual colors if you need to). serialization: themes dump straight out to a theme.json sitting right next to the editor executable. undo/redo: the theme adjustments go through the undo/redo system! help menu: put in a placeholder help menu. turns out literally nobody likes reading docs, so i guess i gotta start explaining how to use the engine from inside the engine… not implemented yet though editor groundwork did a bit of backend cleanup as well. added an EditorContext for editor-specific state, separate from the runtime EngineContext (currently just used for theme stuff) started working on editor font support with a FontSet for things like Body, Bold, Monospace, and Icons, not implemented though the font stuff is mostly groundwork for now, but the theming system is actually working and makes the editor feel nice :D"}, {"post_id": 46257, "ts": "2026-08-13T11:34:55Z", "hours": 2.8147, "text": "scripts can schedule stuff for later Added SetTimeout to the scripting API changes SetTimeout SetTimeout(fn, ms) calls fn() after ms milliseconds. simple to call from obsl timers live in a plain std::vector<Timer> in a new Platform::Time namespace, polled once a frame from Scene::Update no threads, no async bs or whatever :) the callback itself is a SmallTask , which falls back to a heap allocation if the closure is too big to fit inline fine for this since timeouts aren’t really a hot path timeout callback fires from an arbitrary point in Update , so it gets its own ScriptCommandBuffer set up on the worker just for the duration of the call, then flushed right after also gc.add_root / remove_root the function around the callback so it doesn’t get collected while it’s sitting in the timer list waiting to fire Documented it in the api reference alongside the other Time functions also tiny UI tweak in the tile editor: it now warns “no tile types defined, no map will be visible!” instead of just “no tile types defined” was seeing people get confused about why a new map looked empty after trying to paint also small updates to docs in general and stuff but nothing super interesting"}, {"post_id": 40738, "ts": "2026-08-04T13:46:27Z", "hours": 0.7667, "text": "Lighting Fixes been fixing a few small things with the lighting system mainly fixed lights using the wrong entity transform I forgot to account for entity parenting when I implemented that… also added a per-scene toggle for enabling/disabling the lighting system"}, {"post_id": 40621, "ts": "2026-08-04T08:56:51Z", "hours": 3.7144, "text": "the repo is public been working on gettin things ready for that, mostly writing some docs and getting GitHub Actions set up so I can build and release cross-platform builds also did some small code cleanup / fixes while I was going through everything. changes github actions i setup a workflow to compile the project on linux, windows, and mac, and then publish a release (mac is untested but compiles). im real happy though that its actually compiling on all “major” platforms though docs finally wrote some actual documentation… there are a few files in the docs/ folder now and a proper README still a WIP obviously, but at least there’s something there… misc implemented create new map button i forgot about completely repo there is already a build published as a test of the github actions thingy, try it out if you want :D https://github.com/torkelicious/obliberry"}, {"post_id": 39155, "ts": "2026-08-01T21:44:42Z", "hours": 3.0289, "text": "Bugs bugs bugs… I’ve been working on a demo project to both test the engine properly (looking for bugs and all), and also have something to actually show off made in my engine… this is the project you’ve been seeing in the last couple logs btw :) of course… since I’ve been using the editor for actual “work”, I have found a bunch of bugs. the biggest one being the entity ID situation… or.. disaster? changes the entity ID mess in the past, out of laziness… entity ID 0 was being used as both a real, valid entity handle and the “no entity / invalid” value depending on where you looked. which worked fine… mostly because of pure luck. the annoying part was that after working on this for a while I wasn’t even sure anymore if I was using 0 , -1 , or something else for invalid entities.. yep.. so I finally cleaned it up there is now a proper INVALID_ENTITY_ID constant, and entity index 0 is reserved for invalid entities. real entities now start from 1 . went through and replaced a bunch of random == 0 / != 0 checks across ECS, serialization, prefab handling, editor panels, and scripting bindings. project templates added support for multiple project templates. new project creation now scans the Templates/ folder instead of everything being hardcoded to “Default”. currently has: DemoProject Empty the demo project is mostly there to show off the newer UI/scripting stuff (the same demo as mentioned before), while Empty is just a completely blank scene. hierarchy & transforms fixed entity and UI reparenting. previously moving something to a new parent could randomly change its position because it was just applying the new local transform now reparenting keeps the world transform, so dragging things around in the hierarchy behaves properly UI & text rendering fixed a bunch of UI text issues. text now centers vertically using actual glyph metrics instead of a random offset I was “pretty sure” was correct it was not, in fact, correct button text now scales to fit inside the button fonts can now load directly from VFS memory instead of requiring a real filesystem path the VFS font loading one was something I completely forgot about when testing outside packaged projects… oops. packaging implemented .pakignore instead of a hardcoded ignore list, the packer now supports gitignore-style patterns in a .pakignore file and properly skips ignored folders/files also fixed a few smaller packaging issues while testing exported projects. misc a bunch of smaller things: map save/load dialogs now default to the project maps folder fixed scene switching bindings in editor play mode fixed a lightmap redraw bug font importer now only accepts .ttf / .otf added a small README with build instructions since im planning on publishing the repo soon (and writing all the docs… scary..) nothing super flashy this time.. but important"}, {"post_id": 38183, "ts": "2026-07-31T13:32:00Z", "hours": 0.8028, "text": "Windows Build The Windows build seems to be working.. I don’t have proper OpenGL passthrough in my VM… However, the Windows executable compiles perfectly in the VM and is running fine under Wine. so I consider that a win for now…"}, {"post_id": 37625, "ts": "2026-07-30T14:23:01Z", "hours": 1.56, "text": "working in a windows vm trying to get it to compile on windows… it is obviously going great… -.-"}, {"post_id": 36411, "ts": "2026-07-28T14:49:53Z", "hours": 3.1286, "text": "Entity Hierarchy & Scripting Integration finally caved & added actual parent/child relationships to entities changes entity hierarchy entities can now have a parent & children via a new RelationshipComponent . Registry::Reparent() handles moving an entity under a new parent, with cycle & self-parenting protection so you cant do anything silly like parenting an entity to its own descendant. TransformComponent now has a worldTransform alongside the existing local one, a new HierarchySystem systems that care about actual position (i.e AISystem ) read worldTransform now instead of assuming local == world. destroying an entity recursively destroys its children too & unlinks it from its parent’s child list scene serialization now saves & restores the hierarchy editor the Registry panel is a proper collapsible tree now instead of a flat list drag & drop reparenting, plus a right click menu for “Create Child”, “Detach”, & “Set Parent”. scripting pulled all the entity/component script bindings out into their own EngineLibRegistry.cpp module, they were kind of scattered around before & this makes them way easier to find & extend. scripts can now walk the hierarchy too (get children, etc), same module. added SetFont / GetFont bindings so scripts can assign or query a button’s font, small thing but script generated buttons wont have visible text without it :) misc cleanup small modernization stuff while i was in these files anyway: dropped redundant ternary parens, swapped a bunch of auto x = ...; if (x) into if-with-initializer, dropped some unnecessary global qualifiers, const-correctness fixes on UISystem::Update & UIRenderer::Flush . (yes i know the gizmos are offset and buggy, i kind of forgot to update the gizmo code after changing transforms :p )"}, {"post_id": 35110, "ts": "2026-07-26T10:28:41Z", "hours": 8.4342, "text": "Scripted UI, Map Workflow, & a Bunch of Bug Fixes alot of bug hunting… changes scripting & ui scripts can now actually interact with the UI system. added bindings for things like: creating UI buttons, text, rects, and images finding UI elements destroying UI elements these return wrapped objects with basic getters/setters for position, visibility, and button state map workflow spent a fair bit of time cleaning up the map editor flow. maps no longer get a fake default path on creation switching to the Map Editor tab now auto-creates a map (empty) if there isn’t one yet mapFilePath now stays project dir relative instead of randomly becoming absolute tile materials are now shared properly instead of silently duplicating state rendering & lifetime bugs i’ve been doing alot of testing recently, so i found alot of bugs… this was probably the biggest pain point. renderer submissions now keep materials and meshes alive for the frame instead of trusting the caller replaced the old Shader::Default() singleton hack with a real fallback shader (internalshaders base) fixed the lightmap quad so it keeps its own VAO and clears correctly when there are no lights fixed a Texture move bug that was double-deleting GL handles sometimes editor polish also cleaned up a bunch of editor behavior while I was in there. Ctrl+S now behaves correctly depending on whether editing a scene or a map scene loading now rebinds editor panels properly save/load dialogs now append file extensions automatically added more inline warnings in the inspector and panels (i.e if an entity has no material it will tell you it wont render) and ive probably forgotten something else … in summary ive just been testing out some UI/UX changed and hunting down bugs untill I feel it is ready to maybe start prearing some sort of demo :)"}, {"post_id": 33128, "ts": "2026-07-22T19:10:20Z", "hours": 2.6717, "text": "more ui ive been kinda sick so i aint really had the motivation to do a lot but ive been working more on the UI system im kinda tired so i dont really feel like writing more for now -.-"}, {"post_id": 31900, "ts": "2026-07-20T17:42:45Z", "hours": 4.6017, "text": "game UI Progress been continuing work on the UI system. changes UI made some good progress UI system currently have: font importing working texture support for UI elements basic text rendering a simple editor view panel for UI it’s still very much WIP editor right now it’s pretty basic, but it’s enough to start experimenting with how creating and editing UI might actually work inside the editor there’s still a lot left to do before I’d call it usable, but im making progress.. getting text working is painfull, and still unfinished.. but im workin on it…"}, {"post_id": 30701, "ts": "2026-07-18T14:27:23Z", "hours": 3.7628, "text": "UI Experiments since working on the particle system, I feel like it’s in a pretty good place for the current scope. I don’t really know what else I want to add to it right now, so I decided to finally start on something that’s been sitting in the back of my mind for a long time… a proper UI system. changes particles mostly just spent some time testing and polishing the particle system to make sure everything behaves properly I’m pretty happy with where it’s at for now UI started prototyping a custom UI system it’s very early, but I’ve got the basic rendering pipeline up and running currently working on: a UIElement system a dedicated UI renderer text rendering font loading using FreeType right now it’s mostly just enough to prove everything works, but it’s the foundation for the runtime UI system ive wanted for a long time the goal is for games made in the editor to be able to have their own UI, with everything exposed through EngineLib so scripts can create and interact with UI elements as well honestly, for now.. I was expecting it to go alot worse.. FreeType isn’t as bad as it seems once you get it working with GL The screenshot below dosent show much, but you can see the rendering of Text and rects, it also supports textured rects (which is what the text is currently using to render from a texture atlas)"}, {"post_id": 30249, "ts": "2026-07-17T17:50:34Z", "hours": 2.8864, "text": "More Particle work… been spending some time on the particle system… changes particles expanded the particle system quite a bit. currently supports: randomized size ranges randomized rotation configurable emitter shapes (support quad, circle, and soft circle) alpha and additive blending configurable render order (still kinda broken but im working on it) per-particle color over lifetime particle presets that can be saved and loaded (as JSON) also added an editor preview mode, so particles can be previewed while editing instead of only showing up in play mode renderer had to do a bit of renderer work to support all of this particles now use their own dedicated shader added support for per-instance colors during instanced rendering added an overlay render pass for effects that should render on top of the scene cleanup also did a some more project cleanup, splitting up my Utils header into multiple files.. nothing special though misc particle emitters can now be saved as reusable presets (some which will be shipped as defaults ofc) as suggested by @sol4r_on_hackclub cleaned up a few asset importing edge cases fixed a couple of packaging issues too I’m pretty happy with how the particle system is coming along :D"}, {"post_id": 29706, "ts": "2026-07-16T19:55:20Z", "hours": 0.9678, "text": "mostly just spent some time going through some old code.. nothing really important, but i’ve also replaced the placeholder assets.. with my own placeholder assets that i drew in GIMP, considering i probably do not have the rights at all to distribute the previous assets.. :)"}, {"post_id": 29523, "ts": "2026-07-16T14:38:59Z", "hours": 2.2728, "text": "Particles! :) Ive started working on a particle system. i have got the core pieces in place and it seems to be working nicely so far…. changes particles implemented the foundations of the particle system currently has: ParticleEmitterComponent ParticleSystem ParticlePool emitters currently support: configurable particle limits and emission rates randomized lifetimes and velocities “gravity” size over lifetime color over lifetime world space simulation materials obviously so far it’s all behaving pretty well… EngineLib next up is getting particles exposed through the EngineLib API so scripts can spawn and control emitter components we will see how it goes…"}, {"post_id": 29203, "ts": "2026-07-15T22:53:22Z", "hours": 6.2536, "text": "Editor QoL, Graphics Configs & Prefabs new devlog… mostly been focusing on editor ui and qol changes this time around. kinda tired of hardcoded settings for the graphics settings, so i finally built a proper interface for it, plus some prefab management stuff in the editor changes graphics settings i built a dedicated graphics configurator window in the window, for the current project ( GraphicsConfigEditor ). it hooks directly into the UndoManager using the command pattern ( GraphicsConfigUpdateCommand ) serializes everything out to graphics.json . added QuerySupportedSampleCounts which asks the active GL context ( before it gets handed to the render thread ) what MSAA sample counts it supports. the editor now dynamically generates the dropdown and snaps to a valid sample count (i.e 1, 2, 4, 8, 16). prefab management the editor now supports prefab management that i implemented earlier .. instead of directly writing it in the scene json file you can spawn entities directly into the scene from prefab json files you can revert a prefab, which wipes any local overrides and resets the entity back to whatever is saved in the file you can break a prefab, severing the link to the json file and turning it into a normal, standalone entity in the registry ui & editor cleanup spent some time making the editor less annoying.. in general the editor layout stops resetting itself , it now checks if imgui.ini exists on startup, and if it does, it skips rebuilding the default dockspace ripped the hardcoded hub drawing code out of the EditorLayer and made it its own state for the editor state machine refactored the config windows ( ProjectConfigEditor , SceneConfigEditor , and the new GraphicsConfigEditor ) to inherit from a base ConfigEditor class so its cleaner and easier to maintain.. fixed the script widget since the ui was kinda messy"}, {"post_id": 28584, "ts": "2026-07-14T22:27:14Z", "hours": 2.6136, "text": "the OpenGL State Machine Strikes Back… I spent the entire day trapped in hell: debugging a corrupted OpenGL state… it may not show up as tracked hours.. since most of it was just staring at various forms of text.. but it was painful. problem so since i turned the lightmap to run on gpu .. well… Whenever I transitioned from the editor ( MapEditState ) into Play mode, the map would turn into like a bunch of weird diamonds, and the corruption would persist indefinitely until I remounted the current project. because it only happened on state transition, i spent hours chasing ghosts in my state management code and scene cleanup routines… (in the end though i did make some changes to the cleanup routines, but between states rather than scenes.. so i guess i was halfway there?) the culprit It was the lighting pass… took me forever to figure it out, but i had the genius and definitely NOT a very late and obvious idea i shouldve had hours ago , to see if the issue happened when i turned off the lighting system. so i put some early returns in my lighting system functions and.. it didnt corrupt.. inside LightingSystem::Update() , the renderer was modifying global OpenGL state changing depth functions, blending modes, and texture bindings, but not restoring them to their original defaults properly When the engine swapped states, the next frame inherited this dirty, half configured state, causing the whole thing to become a mess. the fix I went through the lighting system and made sure the state changes are wrapped and properly restored through the render thread.. LightingSystem.h : Full GL state save/restore around the light pass. now explicitly backing up and restoring the FBO, program, VAO, blend state, draw buffers, clear color, viewport, and active texture. MapEditState.cpp : OnExit() now properly nulls out m_MapComp and m_CurrentGrid . OnEnter() and will refetch them from the current registry so it isnt holding onto outdated references. EditorLayer.cpp : Added a call to renderer->Clean() after state transfers to clear out stale VAO and mesh caches.(bc its multithreaded things go kinda weird but.. it works now) glad thats over with :D Also heres a fun peek of what ObSL can do with EngineLib, yes, it can make your entire map look like hell..! i am totally not going insane"}, {"post_id": 27998, "ts": "2026-07-13T23:29:33Z", "hours": 5.0142, "text": "GPU Lighting & Graphics Settings been doing a bit of rendering work again… mostly trying to optimize things. the biggest change is that I completely rewrote the lighting system previously all the point light calculations were happening on the CPU, and after doing some profiling (and spending way too long staring at compiler generated assembly annotations) it became pretty obvious that this was one of the bigger performance bottlenecks (well THE biggest excluding driver overhead) lighting now runs entirely on the GPU through shaders instead changes lighting rewrote the lighting system. lighting is now shader-based and runs on the GPU removed the old CPU-side lighting calculations moved engine shaders (like the base shader and lighting shader) into built-in InternalShaders (hardcoded string literals, it might seem messy but i prefer it like that) the internal shader change mostly exists because they’re pretty fundamental to the renderer. if they were treated like normal project assets and someone accidentally deleted them… well… suddenly nothing renders (unless they had setup their own shaders, which is fully supported!) and lighting completely falls over, also i prefer it to loading them from the filesystem anyways overall I’m pretty happy with how the new lighting system turned out graphics settings also started working on configurable graphics settings instead of baking them into the project, the engine now loads graphics settings from a separate JSON file. this doesn’t get packed into the .obpak , so users can tweak their graphics settings after exporting a game currently supports: resolution fullscreen MSAA (toggle + sample count) target FPS VSync it’s weirdly fun actually being back in OpenGL code again instead of just working with engine abstractions sometimes it’s nice to get back into the weeds.. even if its.. painfull :D"}, {"post_id": 27425, "ts": "2026-07-12T23:53:21Z", "hours": 7.5097, "text": "Performance & Zero Copy Assets been spending some time under the hood… this one’s almost entirely backend. no new features, mostly went through the render thread, asset pipeline, & a handful of ECS loops to squeeze out more performance. it was incredibly rage inducing at times.. but seeing the profiler diff against baseline.. i am satisfied.. almost at peace.. but was considering becoming a farmer & never touching a computer again.. mostly because i thought i’d messed up more than i did.. but.. im happy now. changes threading & ecs i’ve reinvented the wheel enough already… but had to redo how tasks are dispatched. ThreadPool used to take a std::function , which heap allocates if you capture more than a couple pointers. scripts dispatch through this every frame, so it added up. swapped it for a custom Task type a 56-byte inline buffer, no heap allocs swapped the pending-task counter to a lock free atomic decrement instead of a mutex on every completion… rendering been cleaning up how the main thread interacts with the render thread. the main & render threads used to awkwardly poll eachothers framebuffers. now theres a m_ReadyFrames deque main pushes a frame index, render pops it. much cleaner :) ImGui draw data is now reused in-place instead of allocating & freeing a fresh clone every frame (ive put off fixing that hack for a while so its nice to finally come around to it). instanced draws no longer store a vector<mat4> per draw call, transforms get appended into one giant staging buffer per frame now. added SubmitPersistent for things that already own a long-lived buffer (like the map tile renderer) to skip the copy entirely. swapped a bunch of unordered_map s for flat vectors in the texture/VAO/uniform caches for a handful of items, linear scan beats hashing. batched rendering also caches the last bound texture & color uniform so b2b batches sharing a texture dont rebind needlessly. added a zero-size window safeguard for Wayland so it stops wrecking the renderer when the window briefly reports 0x0 during resize (also turned vsync back on, weird syscall spam otherwise) assets & packaging added VFS::ReadVirtualView to hand out string_view s directly into memory instead of owned strings for packaged builds, ContainerReader now mmap s the .obpak file directly, uncompressed stuff (textures, uncompiled maps) gets handed right to the parser without a copy. also now move only, with a destructor that unmaps memory instead of holding a copied vector of chars scripting the script hot-reloader was doing a stat() syscall on every script file every frame . oops. now polls every 300 frames & caches resolved paths.. thought i already debounced this.. guess not.. the on_update & on_destroy work buckets used to be freshly allocated vectors every frame… now static , so they just clear & reuse capacity editor & ui finally ripped out the old in game debug UI ( GameUI.cpp ), it had fallen out of sync with the ECS anyway (used it for debug visuals while implementing the first version of the ecs.. then forgot about it) the editors inspector does all of this better now, so replaced it with a minimal FPS counter audio & map audio engine now sets an explicit period size (2048 frames) via miniaudio to cut IPC roundtrips to the audio daemon.. (this one was annoying to figure out.. god bless strace & gdb) the map’s visible transforms buffer is now double buffered, rebuilds write to the back buffer while the render thread reads the front, no race conditions. also swapped typeMats from an unordered_map to a flat vector nothing user facing changed this time, but frame pacing feels noticeably smoother (somewhat suprised), & the packaged build starts noticeably faster i know it could probably be a lot better, but im still a bit of a noob at C++, so this is one hell of a learning project"}, {"post_id": 26719, "ts": "2026-07-11T17:53:32Z", "hours": 3.9353, "text": "Undo/Redo …again! been working on the editor again the undo/redo system now covers a lot more than just gizmo transforms. but there’s still a few things left (entity creation/deletion mainly). changes undo/redo expanded the command system to cover most editor actions. currently supports: entity transforms adding/removing components adding/removing scripts editing project settings editing scene properties also fixed the undo/redo shortcuts so they only trigger once per key press instead of repeatedly firing while the keys are held… which is probably how they should’ve worked from the start map editor continued working on map editing. painting and erasing now properly integrate with the command system. also, an entire brush stroke is treated as a single undo step instead of undoing one tile at a time. also cleaned up a couple of edge cases while doing this, like preserving existing tile data and avoiding unnecessary commands when nothing actually changed. misc did a bit of cleanup around the editor while wiring everything together. centralized a few bits of duplicated UI logic cleaned up window title updates continued refactoring the command system the undo system is still unfinished, but it covers most of the important stuff and feels nice.. also.. still gotta fix some ui window-size stuff soon too but .. thats for later"}, {"post_id": 26228, "ts": "2026-07-10T21:54:28Z", "hours": 3.1872, "text": "Undo/Redo! :) been working on some editor QoL stuff again… the biggest addition this time is a proper undo/redo system. it’s still very early and pretty barebones, but having the foundations in place is nice changes editor commands implemented the beginnings of a proper command system for the editor instead of modifying things directly, editor actions now go through commands, which means they can be undone and redone currently supports: entity transforms movement rotation scaling adding components removing components (with the exception of ScriptComponent for now.. that’ll get its own custom command due to the way it works) also keeps a command history, and the usual shortcuts are hooked up now: Ctrl + Z : Undo Ctrl + Y : Redo its still pretty basic, but it works and feels nice to use. input for this, I added proper key-combination support to the input manager. things like: Ctrl + S Ctrl + Z Ctrl + Y can now be handled properly instead of manually checking modifier keys everywhere logging did a bit more cleanup to the logging system as well. the logger now goes through a proper interface instead of everything depending directly on one concrete implementation, which should make it a bit easier to swap things around later if I ever want to. mostly backend work again… but undo/redo is fire"}, {"post_id": 26050, "ts": "2026-07-10T17:12:54Z", "hours": 2.2128, "text": "editor polish still nothing super flashy.., mostly a bunch of small things changes window titles the editor now updates its window title based on what youre working on. it’ll now include things like the current project and scene, or map project loading cleaned up project loading a bit. the editor now properly syncs the loaded project configuration into the engine context instead of relying on stale data also added menu in the map editor that lets you save and load map files (create new is just placeholder for now) UI added a small helper for rendering framebuffer textures in ImGui without needing to remember to flip the UVs every time. and made the tile Editor use it also forgot to mention in the last log that i cleaned up the “project browser” ui a bit logging fixed up some more logging :)"}, {"post_id": 25892, "ts": "2026-07-10T11:51:37Z", "hours": 3.0564, "text": "Logging Cleanup replaced all the random std::cout / std::cerr calls scattered throughout the project with an actual logging system logging implemented a proper logging system. replaced std::cout / std::cerr throughout the engine added support for different log levels optional logging to a log file centralized all engine logging into one place thread safe !!!! nothing particularly flashy or fancy, but its cleaner, easier to work with, and generally just nice i probably should’ve done this a long time ago :)"}, {"post_id": 25509, "ts": "2026-07-09T20:30:56Z", "hours": 4.8756, "text": "Map Editing, Brushes, and a 4(?) hour ImGui Bug The map editor is finally coming together It’s still a bit… rough but it does feel nice to be able to paint a map in the editor I did, however, spend an embarrassing amount of time trying to figure out why my click and drag “painting” wasn’t working… well.. ImGui was eating my inputs because it thought I was trying to drag the Scene View window around.. yeah.. changes map editor actually got the map editing tools working for real this time. the paint and erase tools actually place and remove tiles now instead of just being placeholder buttons added a brush radius slider, so you can paint in bigger hex rings added a preview outline that renders around your cursor so you can see before clicking toggling “is walkable” on a tile now properly syncs with the grid pathfinding editor ui spent some time making the tile palette and material editing.. work.. video explains better ngl im not good at describing ui stuff math laid some groundwork in the hex math system ( Lerp , CubeRound , and GetHexLine ) this is mostly for some future evil plans… still a WIP…"}, {"post_id": 25003, "ts": "2026-07-08T22:10:08Z", "hours": 0.7108, "text": "map editor preveiw ig kinda didnt have much time to do anything today but im working on the tile editor"}, {"post_id": 24426, "ts": "2026-07-07T23:37:55Z", "hours": 8.7589, "text": "editor rework & map editing groundwork been working on the editor again this update was mostly about cleaning up the editor architecture so I can actually keep adding features without everything turning into spaghetti. I also finally started laying the groundwork for proper map editing. changes editor reworked the editor state system. instead of instantly swapping between states, transitions are now deferred until a safe point during the update loop. this makes switching between Edit, Play, Map Edit, and the Hub a lot cleaner, and the editor now remembers which editing mode you were in before hitting Play. (i’ll admit… i was getting a bunch of weird, seemingly unexplainable crashes before eventually realizing my mistake was instantly switching states while things were still being updated/rendered…) also moved more UI responsibility into the individual states instead of having EditorLayer decide how everything should be drawn. map editor started putting together the map editor. currently i have: map hover and tile selection working placeholder Paint / Erase / Select tools the beginnings of a tile palette system a placeholder tile editor panel the actual editing logic isn’t implemented yet, but the foundations are there now :) asset picker ripped out the old “open a native file dialog for every asset field” flow. instead, the editor now lets you pick existing textures, meshes, materials and shaders directly from the ResourceManager , which is a lot nicer to work with and also avoids accidentally importing duplicate assets. (the old workflow would happily create a brand new object every time you imported something… which was fine for testing, but definitely wasn’t something i wanted to keep) rendering fixed a few editor rendering issues while i was at it. materials with invalid shaders now fall back to the default shader instead of silently disappearing fixed some edge cases with framebuffer entity picking currently unused, but functional shader hot reloading tests misc smoothed out editor camera movement and zoom added a few helper utilities for the map editor reorganized the editor UI code a bit doesn’t look massively different in screenshots, but makes future work alot easier/cleaner map painting is next ?.."}, {"post_id": 23641, "ts": "2026-07-06T18:38:19Z", "hours": 2.4394, "text": "Project Exporting been working on making projects exportable from the editor it’s now able to export a project to the selected folder, package all the assets into an .obpak , and then copy over the runtime so the exported project is runnable changes project exporting added export to the editor choose an output folder for the exported project packages the project into an .obpak copies the runtime into the export folder renames the runtime to match the project name (just 2 files for full project!, executable and .obpak) the whole process is pretty much one click now instead of manually packaging everything together. file dialogs refactored my entire filedialog implementation cuz it was kinda broken packaging did some more work on the packaging pipeline while implementing exporting and put it in the editor ui im pretty happy that its all working and i can actually export stuff, and run it feels cool :)"}, {"post_id": 23429, "ts": "2026-07-06T12:05:06Z", "hours": 4.1694, "text": "Project Packaging is Working been spending a lot of time working on project packaging, and it’s finally working now. the engine can now load projects directly from .obpak files, and I’ve got basic tooling to create them as well. the plan is to integrate the tooling i have now with the editor to “build” an obpak archive (i think its called an archive?) changes packaging implemented the full packaging/loading pipeline yippie :D currently the packer: pre-generates ASTs for ObSL scripts converts project, scene(s) and prefab(s) JSON into MessagePack bundles everything into a single .obpak container compresses the package with LZ4 assets like textures, audio and shaders just get copied into the package without any conversion runtime the engine can now load packaged projects directly instead of relying on loose project files. all of this goes through the VFS, so from the engine’s point of view it doesn’t really matter whether assets are coming from a folder or from an .obpak (i.e it can still load loose project files of course) tooling added command-line tools for packing and unpacking projects, i originally made it for testing but it’s actually pretty nice to work with so im probably keeping it. still probably things to polish, but it’s pretty satisfying seeing the engine load an entire packaged project properly pls ignore the lag in the video, i promise its not as terrible as it looks, its just that recording is pretty buggy for me"}, {"post_id": 23095, "ts": "2026-07-05T20:42:38Z", "hours": 3.8311, "text": "Project Packaging been working on a packaging format for projects. the goal is basically to package an entire project into a single container while preprocessing assets that make sense to preprocess. Also makes shipping a game made in the engine in the future alot easier / cleaner, and portable. changes packaging implemented the start of a proper project packaging system. currently it: parses ObSL scripts ahead of time and stores serialized ASTs instead of source code (basically very similar to some sort of a very very simple AOT compiler) converts project, scene and prefab JSON files into MessagePack stores media and other binary assets directly in the package optionally compresses package entries with LZ4 the idea is that the engine has less work to do at runtime since scripts don’t need parsing and JSON doesn’t need parsing either. and a single “package” file is alot cleaner in general for a finished game “build” package format also implemented the actual container format itself. different asset types are stored as different entry types (scripts, binary JSON, media, shaders, etc.), so the loader knows exactly how each asset should be handled. tools added standalone packaging tools as well for packing and unpacking projects, mostly for testing. still a work in progress, but the whole packaging pipeline is starting to come together."}, {"post_id": 22372, "ts": "2026-07-04T20:12:27Z", "hours": 5.1664, "text": "editor Gizmos! :DD this took a lot longer than I’d like to admit… but it’s finally working. changes gizmos got all gizmos working.. but had issues with rotation and scale at first figured out the issues with rotation/scaling ended up patching ImGuizmo at first to get things working, but after digging through the code I eventually figured out how to do it properly with the normal library translation, rotation, and scale gizmos all work now :)))))) honestly I learnt quite a bit just from messing around with the ImGuizmo internals.. but it was painful editor added a few more UI improvements as well. i.e billboard sprites now explicitly mention that rotation doesn’t do anything, instead of letting you wonder why nothing happens gizmos are one of those things I’ve been waiting on implementing.. but im finally happy to have them"}, {"post_id": 21565, "ts": "2026-07-03T16:19:30Z", "hours": 2.6169, "text": "actually working on the editor I’m finally getting around to actually implementing the editor ..it still looks pretty similar (well mostly the same) but most of the UI before was just placeholder. changes editor implemented a Project Settings window implemented a Scene Properties window made the component widgets actually do something now load textures assign scripts change material colors change meshes change shaders etc…. added an Add Component button added Remove buttons to components it works.. so thats good :D"}, {"post_id": 21208, "ts": "2026-07-03T00:51:55Z", "hours": 0.6447, "text": "ObSL Scripting Library Moved the scripting language into its own repository :) It’s now included in the engine as a library using git submodules and public headers instead of living directly in the engine source code Makes the project structure a lot cleaner .. for both projects ( ObSL can now be found at https://github.com/torkelicious/ObSL )"}, {"post_id": 21066, "ts": "2026-07-02T20:52:49Z", "hours": 5.9469, "text": "Script multithreading (and concurrency) scripts now run on other thread(s) :D this took a fair bit of cleanup, but it’s working. changes script workers moved script execution onto worker thread(s) worked on script worker concurrency dynamically clamp the number of active workers based on how many callbacks are actually running, so idle threads aren’t just spinning doing nothing garbage collection did some work on the GC as well. introduced external root tracking fixed a few issues around GC roots while getting multithreaded script execution working cleanup spent some time cleaning up a bunch of backend stuff while getting all of this working. build system updated CMake so all executables, scripts, and (project) templates are output to a single build/bin directory instead of being messy. multithreading yay :)"}, {"post_id": 20164, "ts": "2026-07-01T18:24:52Z", "hours": 3.945, "text": "ive been mostly messing around with getting the ObSL language to be thread-safe and refactoring some things, so I don’t have much to show but my end goal is to be able to get scripts to run concurrently and outside of the main thread"}, {"post_id": 19379, "ts": "2026-06-30T17:52:06Z", "hours": 4.6878, "text": "Editor & Scene Management been working on the editor mostly. changes ECS implemented generational ID masks for the ECS. this should prevents issues with stale entity references since IDs can now properly track generations instead of just relying on raw IDs. (i encountered this issue when testing multiple scenes in one project) scene manager fully implemented the SceneManager so it can actually be used by the editor & game layer. this allows the editor to properly load/save/validate/find and generally handle scenes through a unified API (goes for gamelayer aswell but it only really loads them) bug fixing spent a lot of time fixing various issues around: project folder management scene management loading / saving behaviour asset loading (cache was causing some problems on loading scenes but its all fixed now :D) mostly backend work but things are becoming a lot more stable and the editor foundation is starting to come together…."}, {"post_id": 18509, "ts": "2026-06-29T17:58:54Z", "hours": 7.6317, "text": "Namespace Refactor & Project Management Work Dependencies finally caused me to run into a namespace conflict after being lazy and unorganized… instead of being sane and just renaming one class.. I decided to refactor the entire project to use proper namespaces everywhere.. changes namespaces Refactored the entire codebase into proper namespaces project management / editor backend I don’t really have much visually to show this update since I’ve mostly been working on backend stuff. Working on: project management scene management VFS improvements editor saving/loading I’m using nativefiledialog-extended to work on proper file dialogs for saving and loading from the editor. Also been doing a lot of testing around project creation and loading. alot of this is in the hope i can get this working multi-platform and not just on linux (though i have yet to try and compile on another os) Things are working… for now… so progress :D"}, {"post_id": 17698, "ts": "2026-06-28T16:44:24Z", "hours": 1.5475, "text": "Editor Picking & Project Management because my EditorLayer uses a framebuffer, I can now utilize framebuffer color picking in the editor i updated the shaders to store an entity ID, so now I can click on entities directly in the editor scene view and it selects them. …and it’s pixel perfect :D changes editor layer added framebuffer based entity picking clicking entities in the scene view selects them!!!! selection is based on the exact pixel under the mouse (i mean to implement gizmos i first need to know what the hell my mouse is on) project management also started laying the groundwork for actual project management. now that I have some sort of VFS implemented, I’m working on a way to properly manage Projects instead of relying on the current setup. still figuring out the exact structure, but ive been working on setting up the Project class"}, {"post_id": 16940, "ts": "2026-06-27T14:41:38Z", "hours": 3.1197, "text": "VFS & Editor layer implemented a basic VFS (Virtual File System) . all asset loading is now routed through the VFS instead of directly loading files. this is mainly preparation for adding proper project management later instead of relying on a hardcoded project.json in the project root i was testing with changes VFS added a basic VFS implementation routed asset loading through the VFS the idea is that the VFS will make it easier to manage project assets and not have everything depend on hardcoded paths. editor layer still experimenting a bit with the editor placeholder UI. added: (new EditorCamera derived class of Camera ) camera panning in the editor viewport camera zoom toggling top-down / isometric perspective with keybinds the top-down view should be useful later when I add actual map editing stuff most of the editor UI is still just placeholder right now, I’m mostly testing layouts and figuring out how I want the editor to feel and look ImGuizmo also added ImGuizmo to the project since I’m planning to start implementing proper editor stuff soon.. …and well… you need gizmos… I’ve reinvented the wheel enough already, so using a proper gizmo library seems like the better choice :) (also integrates very nicely with ImGui)"}, {"post_id": 16309, "ts": "2026-06-26T15:23:43Z", "hours": 2.0242, "text": "Editor UI & Framebuffer Experiments i’ve started experimenting with the ImGui docking branch in the EditorLayer . (switched branch had some build errors blah blah blah but its all set up now) Implemented some placeholder editor UI to test out the docking stuff and get a feel for how the editor layout might end up being like changes editor layer placeholder UI using ImGui docking features testing editor panel layouts framebuffer implemented a framebuffer system for the editor viewport. the scene is currently rendering in the editorlayer via a frame buffer so it can fit in the little thingy (i forgot the name) while testing I noticed some resizing issues when running on my nvidia dGPU: the framebuffer resize works, but resizing the viewport can appear somewhat choppy? the framebuffer and docking setup seem to be working, so i guess this im close to actually start to build proper tooling :)"}, {"post_id": 15851, "ts": "2026-06-25T19:34:56Z", "hours": 4.3886, "text": "refactoring for editor foundation Refactored rendering and culling systems and made broader architectural changes to decouple the game from the application layer. Rendering & Culling Refactored frustum culling logic to be lil more performant and generally cleaner Cleaned up and improved parts of the rendering pipeline since i had alot of old unused code lurking in them since i switched to a multithreaded architechture Application Architecture the engine is now structured around an ApplicationLayer system. The core Application class now runs a single active ApplicationLayer Each layer exposes: Init Update Render Shutdown Game class refactor The Game implementation has been converted into a derived ApplicationLayer Game logic is now fully driven through the layer system instead of hardcoded to the application class (the different executable mains decide now) Editor Layer added a new EditorLayer Intended for a future scene editor application. (right now all it does is render a given scene on the screen) CMake changes reworked the project to generate multiple executables: obliberry_engine core engine executable (ig runtime) obliberry_editor editor application layer changes: Engine and core systems (i.e ObSL, Renderer, etc) are now compiled as libraries Executables link against shared engine libraries instead of duplicating code Editor executable links against engine modules summary Game logic is now layer-based Engine and tools are separated Editor can proceed independently from the game runtime"}, {"post_id": 15286, "ts": "2026-06-24T20:32:54Z", "hours": 3.7039, "text": "multithreading & rendering I think I got some form of multithreading working now. The renderer has been moved onto its own dedicated thread, separating rendering from the main engine thread :) Changes Rendering Thread Moved rendering execution to a separate thread (alot had to be refactored for this to work lol) Thread Safety i tried (imgui was a pain) Rendering Optimizations Added frustum culling to the renderer. big optimizeD? actual rendering (i.e gpu calls) is now seperated from the main thread :D …it looks like its working for now"}, {"post_id": 14758, "ts": "2026-06-23T23:48:42Z", "hours": 0.4239, "text": "I think i fixed most of the silly bugs from trying to make rendering thread safe, im still gonna double check some stuff and do some testing but moving rendering to its own render thread will be coming soon :))))"}, {"post_id": 14743, "ts": "2026-06-23T23:15:37Z", "hours": 1.1569, "text": "kinda reverted changes from the last log and tried again to convert everything to be thread safe before actually trying to run on a seperate thread… things are going.. interestingly"}, {"post_id": 14522, "ts": "2026-06-23T17:41:20Z", "hours": 0.8647, "text": "im trying to make the renderer run on another thread… few issues… cant see (entity) meshes?, and closing the window seems to cause a freeze…. :))"}, {"post_id": 14480, "ts": "2026-06-23T16:45:32Z", "hours": 1.2731, "text": "Been mostly just fixing some window rendering stuff Moved away from hardcoded resolution / aspect ratio and made it handle itself on the fly also removed the padding bars i had before so rendering actually takes up full screen New native engine binding in EngineLib too: Window_SetFullscreen (takes a bool) I’m planning on starting to work on making the engine multithreaded soon…"}, {"post_id": 14379, "ts": "2026-06-23T14:22:29Z", "hours": 0.8064, "text": "“project” file system prototype Started implementing support for engine project files instead of hardcoding a scene path like i was before for testing. The engine will now deserialize a project.json file containing configuration, includes: name Project name (unused for now) version Project version (also unused) start_scene Path to the scene the engine loads on startup Window configuration: width height title fullscreen while implementing this, I uncovered some unexpected behaviour related to fullscreen handling caused by how window sizing was previously managed. i spent time refactoring and fixing the window size logic to make fullscreen behaviour… work.. project loading is now starting to come together, less hardcoded stuff yippie (im planning on making an editor in the future so.. this is why)"}, {"post_id": 14345, "ts": "2026-06-23T13:22:42Z", "hours": 1.3275, "text": "Porting ECS systems to ObSL Fully ported the InteractionSystem to ObSL through EngineLib. Camera movement and player movement are now handled through dedicated ObSL scripts instead of being hardcoded ECS systems. This moves more gameplay logic into the scripting layer and makes systems easier to modify and iterate on :) Changes System Migration Ported InteractionSystem from ECS code to ObSL Basically Moved camera movement & player movement logic into ObSL scripts Interaction system is no longer hardcoded engine-side gameplay system New EngineLib Bindings Math / Hex Grid Math_WorldToHex Converts world coordinates into hex grid coordinates SetSelectedHex Updates the currently selected hex tile Camera Camera_SetZoom Sets the camera zoom level Window Window_GetHeight Gets the current window height Window_GetWidth Gets the current window width Input Input_IsKeyReleased Checks if a key was released Input_IsMouseDown Checks if a mouse button is currently held Input_IsMouseReleased Checks if a mouse button was released Input_GetMouseX Gets the mouse X position Input_GetMouseY Gets the mouse Y position Input_GetScrollX Gets horizontal scroll input Input_GetScrollY Gets vertical scroll input Please ignore the weird graphical artifacting in the attached video, my pc has been acting up recently :("}, {"post_id": 13950, "ts": "2026-06-22T22:00:49Z", "hours": 3.1867, "text": "more EngineLib work Implemented several improvements to the scripting and entity systems. changes prefab caching Added caching for prefabs to improve performance when repeatedly instantiating entities Entity Access in Scripts Added GetEntity , which returns the entity Object that the script is attached to. Added support for the this keyword in ObSL scripts. this is a wrapper around GetEntity() to provide direct access to the current entity custom components Added support for script-defined components: entity.AddCustomComponent entity.GetCustomComponent This allows scripts to attach and retrieve custom data/components without requiring engine side component definitions entity validation Updated all entity object calls (such as GetComponent ) to validate the entity before executing (in both native bindings & engine source code) Entity operations now check: registry.isValid(id) before accessing the entity. This prevents errors caused by accessing deleted entities during scenarios such as scene unloading/loading cleanup"}, {"post_id": 13774, "ts": "2026-06-22T16:02:35Z", "hours": 0.8908, "text": "EngineLib I may have forgotten to mention this in my previous log, but I also implemented an Instantiate method in EngineLib. Instantiate takes an entity definition as a JSON file (ig a prefab) and spawns the entity into the current scene. I also added scene related functionality to EngineLib: LoadScene Loads a scene from a given path GetCurrentScenePath Returns the path of the currently loaded scene"}, {"post_id": 13737, "ts": "2026-06-22T15:02:47Z", "hours": 3.4014, "text": "I’m using miniaudio to implement audio support in the game engine, with an AudioEngine class to abstract the audio functionality. I’ve also updated SceneProperties to include a new background_music property. This allows each scene to define a background music track (via filepath) that will automatically loop through the AudioEngine while that scene is active. It all seems to be currently working well, Next I’m starting to integrate audio functionality into EngineLib so that scripts can interact with the audio system. changes Added AudioEngine abstraction layer using miniaudio Added background_music support to SceneProperties (w. proper serialization/deserialization ofc) Implemented looping background music per scene"}, {"post_id": 13262, "ts": "2026-06-21T18:28:09Z", "hours": 2.735, "text": "EngineLib Script Integration I fully replaced the previously hardcoded PlayerMovementSystem with an ObSL script implementation using new EngineLib bindings. The movement logic is now handled externally through scripting instead of being directly implemented in C++. New EngineLib Bindings entity management Added bindings for basic entity operations: CreateEntity Creates a new entity Destroy Removes an entity HasComponent Checks whether an entity has a specific component RemoveComponent Removes a component from an entity global functions get_dt Retrieves delta time CloseWindow Closes the glfw window Input System Added script access to input handling: Input_IsKeyDown Checks if a key is currently held Input_IsKeyPressed Checks for a key press event Input_IsMousePressed Checks if a mouse button is pressed Input_GetMouseWorldPos Gets the mouse position converted to world space Movement / Hex Grid Functions Added bindings for interacting with movement components: GetSelectedHex Gets the currently hovered hex tile SetPathToHex Sets a movement target path for an entity with a MovementComponent Camera Added camera manipulation support: Camera_GetPosition Gets the camera position Camera_SetPosition Sets the camera position Camera_Move Moves the camera Camera_PanScreenSpace Moves the camera relative to screen space Camera_GetZoom Gets the current camera zoom Hex Rendering Added bindings for controlling grid visuals: ClearSelectionOverlay Clears the hex selection overlay ClearPathTarget Clears the path target visual marker ClearPathTarget is currently named poorly. It only clears the grid overlay visualization, not the actual movement target!!! summary Removed the old hardcoded PlayerMovementSystem Migrated player movement logic into script format Added engine bindings required for script-driven gameplay Camera movement, input handling, and hex selection now work through scripts Even more gameplay code can now be modified without recompiling the engine :)"}, {"post_id": 12232, "ts": "2026-06-19T23:34:06Z", "hours": 2.7347, "text": "I’ve got a good basis for the Engine integration library for the ObSL Scripting Language. In the attached video, I’m changing the player’s size using a ping-pong function (?forgot the name…), fully through an ObSL script ( ScriptComponent ) attached to the “Player” entity. The language now has support for the following through the EngineLib : Entity Objects Find GetName SetName GetComponent Components Transform SetPosition SetRotation SetScale GetPosition GetRotation GetScale (uses ObSL arrays) Point Light SetColor (Vec3) SetIntensity SetRadius MovementComponent GetIsMoving SetIsMoving SetTimePerStep MapStateComponent GetHasSelection GetSelectedHex GetPathToHex DirectionalTextureComponent SetIndex GetIndex PlayerInputComponent is still w.i.p. Tag Components currently don’t have any methods since they are only used as tags. Planned I’m planning to keep expanding the EngineLib api with more methods, such as: Has(component) AddComponent RemoveComponent(name or ref) Destroy(EntityID) GetEntityID(entity object ref)"}, {"post_id": 12030, "ts": "2026-06-19T16:56:29Z", "hours": 2.8408, "text": "I’ve got the scripting language integrating with the engine via a ScriptComponent on the player entity, seems to be working all good though I still have to implement the actual Engine library for everything… but I have simple scripts running on entities as components in the game engine, which went faster than I expected, so i’m happy with it :)"}, {"post_id": 11605, "ts": "2026-06-18T21:53:02Z", "hours": 15.6978, "text": "Drafting a readme for the scripting language before I plan on the Engine bindings"}, {"post_id": 9500, "ts": "2026-06-15T21:05:05Z", "hours": 6.1578, "text": "added switch statements, foreach-loop, objects, modules (imports), and a standard library to the scripting language"}, {"post_id": 8966, "ts": "2026-06-14T22:36:48Z", "hours": 2.3381, "text": "I’m working down my todo-list for the scripting language (ObSL). Right now i’ve got arrays implemented! i also made a method to define functions from the c++ source so that I can access c++ stuff (like std::chrono functions that im using for testing right now from the test.obsl script), and whatever other functions i want to have accessible, this will be very useful later on as I to integrate the scripting language with the game engine, as now i have an easy way to call functions already defined in the engine source code from the scripting language by just calling interpreter.bind_native(args blah blah); and then I can call the function from the interpreted scripts.. very useful :D"}, {"post_id": 8716, "ts": "2026-06-14T14:08:32Z", "hours": 2.1228, "text": "the scripting language now has some more mathematical operators and functions !"}, {"post_id": 8434, "ts": "2026-06-14T01:00:46Z", "hours": 2.25, "text": "The scripting language is now technically Turing complete, as i have added state environment (basically variables persist throughout the session), conditional branching via if / else statements basic repetition via while & for loops the screenshot below shows a fibonacci sequence & an example of the conditional branching w. looping . of course it’s not done yet though, i still have a lot of work ahead :)"}, {"post_id": 8361, "ts": "2026-06-13T21:59:28Z", "hours": 2.07, "text": "still working on parsing and implementing new nodes :)"}, {"post_id": 8255, "ts": "2026-06-13T18:48:40Z", "hours": 2.3453, "text": "Working on trying to implement a scripting language for my game engine… i’ve got a simple parser working, it definitely went faster than i expected. Going back and reviewing an old parser i made in C# a while ago helped a lot in this :)"}, {"post_id": 8113, "ts": "2026-06-13T15:24:08Z", "hours": 3.8419, "text": "I’d like Entities to be scriptable in a future editor application / in general without having to edit c++ source files of the editor to implement new logic systems for one entity, so i’m planning on implementing a very basic scripting language, the way i plan on it working is that you attach a script to an entinty as a component, and it will hold the actual game logic in that script, im not great at explaining with words but what im doing now is starting on implementing lexical analysis for a simple interpreter just to test things out, while I have written small interpreters before, alot of this is still new to me so I am learning along the way. the idea is that its just a very basic scripting language to interact with entities and the current scene, with basic apis for interacting with the current scenes ECS registry,we will see how it goes :)"}, {"post_id": 7654, "ts": "2026-06-12T19:56:36Z", "hours": 2.1944, "text": "I’m working on a simple map lighting system, which seems to be working alright. Also scene files now have background color information (which ends up getting wired into glClearColor), also implemented name field for entities because why not. I’m also messing around a bit with the UI since im not super experienced with ImGui but I like trying things out…"}, {"post_id": 7507, "ts": "2026-06-12T15:05:30Z", "hours": 2.1106, "text": "I’ve been focusing mostly on my scene serialization lately. First, I refactored the maps to remove the hardcoded TileTypes enum, which used to map 0 to grass and 1 to sand. Instead, I implemented a system where this is defined in the grid section of the scene’s json file. The “id” property is now a generic unsigned integer for the tile type, and the “texture” property references a specific asset loaded in the scene. I also added a “properties” section for the scene’s name and a “clear_color” array. This lets you dynamically change the window’s background color on the fly instead of always defaulting to a hardcoded black. Writing the new methods and sorting out the custom serialization logic took a bit of work, but it is working great now. also bumped the map file “version” to 2, even though the reading/writing of map files didn’t change at all, the usage of some bytes did kind of change (for the tiletype) so i felt it was fitting"}, {"post_id": 7189, "ts": "2026-06-12T00:17:40Z", "hours": 1.3681, "text": "i’ve been playing with loading in entities and meshes.. ignore the weird fps drops and generally low fps (compared to normally), screenshots and recordings loves messing with performance for some reason"}, {"post_id": 7135, "ts": "2026-06-11T22:23:21Z", "hours": 5.1658, "text": "i’ve implemented instanced draw calls alongside regular draw calls in my renderer, which currently im using instancing for drawing the map, I also implemented culling for the map depending on viewport and some other small optimizations, I also spent some time on fixing and improving my “Systems” and some general cleanup"}, {"post_id": 6799, "ts": "2026-06-11T12:20:56Z", "hours": 1.5519, "text": "Managed to fix the segfault.. Mesh::Upload was updating buffer data without binding its own VAO first, which polluted the global OpenGL state. When a new scene loaded, the driver tweaked out on the broken index bindings and crashed on the next draw call …"}, {"post_id": 6484, "ts": "2026-06-10T22:04:02Z", "hours": 1.4136, "text": "I’ve got saving scenes working fully now! ^-^, but an issue ive run into is a segmentation fault on switching scenes, I theorize that it’s due to me not cleaning up / reassigning things when I load in new meshes etc from the scene, thus leaving old pointers in the render queue which don’t exist anymore. This i will work on fixing next.. But for now I am quite happy that i have scenes loading and saving to json :)"}, {"post_id": 6400, "ts": "2026-06-10T19:22:44Z", "hours": 4.4556, "text": "I’ve got loading in scenes working pretty well, but I still have work todo before I can save them properly, im pretty tired already since i spent all day chasing a bug regarding render sorting and ended up refactoring a ton of stuff that i probably didnt have too as i was searching for the issue, but atleast the codebase is somewhat cleaner"}, {"post_id": 6187, "ts": "2026-06-10T12:05:48Z", "hours": 0.365, "text": "running some tests.. messing around with funny map generation shapes too but i dont know how i feel about them"}, {"post_id": 5958, "ts": "2026-06-09T23:43:23Z", "hours": 5.3872, "text": "rather than using another custom file format i decided to just use json to serialize scenes which is coming along rather nicely …"}, {"post_id": 5695, "ts": "2026-06-09T16:10:54Z", "hours": 2.3658, "text": "I’ve been restructuring the and moving things to run actual game logic via “Systems”. I’ve temporarily been testing this in a messy way directly in the scene class, but I’m planning on implementing maybe some sort of basic scripting language that can be used for game logic in entities as a Component w. accompanying systems ofc, so game logic can be defined outside of engine source files and serialized into a scene’s registry from a given file rather than the things im messing around with now. serialization of scenes is what im planning to implement next once im happy with how scenes are working, but i need to plan ahead alot. So for now I’m still going to focus on making sure my Scene implementation is good enough before I focus on implementing serialization and scripting etc, and I have alot to think about regarding the design and architecture of this thing that seems to have evolved into a Game Engine :)"}, {"post_id": 5539, "ts": "2026-06-09T10:55:05Z", "hours": 2.0847, "text": "working on getting Scenes implemented"}, {"post_id": 5225, "ts": "2026-06-08T22:43:53Z", "hours": 2.7831, "text": "I completely refactored my ECS into an actual proper entity component system and added a lil fancy inspector for entities/components in the UI, everything works with the new system :) Now that my ECS is properly implemented I’m going to start focusing on implementing proper Levels/Scenes rather than the mess I have right now in my “Game” class which I’ve been using for testing stuff (ignore the weird framedrops my screen recorder was tweaking out)"}, {"post_id": 4858, "ts": "2026-06-08T12:03:11Z", "hours": 0.5367, "text": "i made a npc (the red super mutant) that just wanders around"}, {"post_id": 4844, "ts": "2026-06-08T11:26:15Z", "hours": 0.9856, "text": "I’ve been having a bit of fun with player sprites (currently som fallout 1 super-mutant sprites i found online) and the renderer sorting sorting code to avoid the player appearing under the ground"}, {"post_id": 4599, "ts": "2026-06-07T23:21:51Z", "hours": 0.7331, "text": "I implemented reading from the previously saved map file, with some tests ofc :D please ignore the player flying away at the end.. as of the time of writing it was a sloppy bug which is already fixed"}, {"post_id": 4582, "ts": "2026-06-07T22:30:26Z", "hours": 1.5031, "text": "I’ve implemented saving the current grid to my own custom file format, and some tests to check that it’s working and all seems good.. but now, the real test is to see if I can load back in that file properly :)"}, {"post_id": 4281, "ts": "2026-06-07T15:19:30Z", "hours": 3.5969, "text": "I did a few things i made it highlight what hex the player is currently moving towards in white fixed a bug causing it to crash when i tried to use my dgpu (issue with my GLdebug class trying to load unavailable glDebugMessageCallback since my dgpu driver uses an older OpenGL version than my igpu and i kinda forgot to check if it the callback function was available BEFORE calling it.. .-.) refactored some of my Hex code to prepare for making some sort of system to load maps from files, so i generally cleaned up some stuff and opted for smaller datatypes for my needs (i.e using int16_t rather than ints for hex coords r & q, since that’s really all you need unless your map is massive) i also added some more fancy ui with imgui to play around with and generally just cleaned up some code… in short im basically preparing myself to implement some sort of map file loader w. accompanying filetype?"}, {"post_id": 3847, "ts": "2026-06-06T22:12:28Z", "hours": 1.7772, "text": "I managed to setup a basic ImGui window to control map generation, I also tried to optimize my rendering by fixing a sloppy bug i had in my batching implementation and caching transformation matrices per transform (dirty flag pattern) fps does seem stable :) (please ignore the video artifacting)"}, {"post_id": 3544, "ts": "2026-06-06T15:07:32Z", "hours": 11.2967, "text": "I redid almost everything with what i’ve learnt from trying the first time (ECS, ResourceManager & MeshFactory are basically the same though) I managed to implement A* pathfinding for the player movement. I got to render out the map with textures i made. tried to recreate movement like Fallout has, where you move the mouse to pan and click to move to a tile with stepping. The hex grid is reperesented via an odd-r offset layout."}, {"post_id": 2707, "ts": "2026-06-05T12:48:03Z", "hours": 1.4394, "text": "Experimenting with camera stuff and input, now i can zoom with the scrollwheel and i’m trying to get an isometric perspective working better"}, {"post_id": 2669, "ts": "2026-06-05T10:44:01Z", "hours": 1.9911, "text": "im getting a simple resource manager implemented :)"}, {"post_id": 2395, "ts": "2026-06-04T21:04:46Z", "hours": 3.0553, "text": "It may not look like much, but I’ve been working on implementing a form of an ECS , rewriting some stuff too. I kind of broke some camera stuff in the process which I’m going to fix soon, and actually get this stuff to be the correct perspective and such…."}, {"post_id": 2168, "ts": "2026-06-04T14:49:59Z", "hours": 3.0614, "text": "i’ve been experimenting with some stuff back and forth, now im working on testing basic “Player” movement with WASD"}, {"post_id": 1448, "ts": "2026-06-03T14:24:00Z", "hours": 2.3058, "text": "I’ve implemented proper debug logging for OpenGL, optimized rendering with a queue that sorts RenderCommands to avoid unnecessarily binding & unbinding, a basic InputManager class, and very basic materials."}, {"post_id": 1055, "ts": "2026-06-02T21:13:14Z", "hours": 1.5414, "text": "i’ve got a basic hex grid “map” rendering and working well"}, {"post_id": 890, "ts": "2026-06-02T16:46:10Z", "hours": 0.7936, "text": "Implemented a basic camera which im messing around with a bit to rotate (around) my mesh"}, {"post_id": 858, "ts": "2026-06-02T15:50:32Z", "hours": 1.3153, "text": "I now have textures working, and a basic “meshfactory”"}, {"post_id": 801, "ts": "2026-06-02T13:58:30Z", "hours": 2.4436, "text": "I’ve gotten transforms and basic rendering implemented of objects implemented via a “Mesh” class that gets passed to Draw() in the Renderer Class :)"}, {"post_id": 403, "ts": "2026-06-01T19:57:36Z", "hours": 0.2883, "text": "Setup basic GLFW Window boilerplate & CMake Project :)"}]...
|
Title: obliberry by @torkel | Stardance
Devlogs:
Title: obliberry by @torkel | Stardance
Devlogs:
Setup basic GLFW Window boilerplate & CMake Project :)
I’ve gotten transforms and basic rendering implemented of objects implemented via a “Mesh” class that gets passed to Draw() in the Renderer Class :)
I now have textures working, and a basic “meshfactory”
Implemented a basic camera which im messing around with a bit to rotate (around) my mesh
i’ve got a basic hex grid “map” rendering and working well
I’ve implemented proper debug logging for OpenGL, optimized rendering with a queue that sorts RenderCommands to avoid unnecessarily binding & unbinding, a basic InputManager class, and very basic materials.
i’ve been experimenting with some stuff back and forth, now im working on testing basic “Player” movement with WASD
It may not look like much, but I’ve been working on implementing a form of an ECS , rewriting some stuff too. I kind of broke some camera stuff in the process which I’m going to fix soon, and actually get this stuff to be the correct perspective and such….
im getting a simple resource manager implemented :)
Experimenting with camera stuff and input, now i can zoom with the scrollwheel and i’m trying to get an isometric perspective working better
I redid almost everything with what i’ve learnt from trying the first time (ECS, ResourceManager & MeshFactory are basically the same though) I managed to implement A* pathfinding for the player movement. I got to render out the map with textures i made. tried to recreate movement like Fallout has, where you move the mouse to pan and click to move to a tile with stepping. The hex grid is reperesented via an odd-r offset layout.
I managed to setup a basic ImGui window to control map generation, I also tried to optimize my rendering by fixing a sloppy bug i had in my batching implementation and caching transformation matrices per transform (dirty flag pattern) fps does seem stable :) (please ignore the video artifacting)
I did a few things i made it highlight what hex the player is currently moving towards in white fixed a bug causing it to crash when i tried to use my dgpu (issue with my GLdebug class trying to load unavailable glDebugMessageCallback since my dgpu driver uses an older OpenGL version than my igpu and i kinda forgot to check if it the callback function was available BEFORE calling it.. .-.) refactored some of my Hex code to prepare for making some sort of system to load maps from files, so i generally cleaned up some stuff and opted for smaller datatypes for my needs (i.e using int16_t rather than ints for hex coords r & q, since that’s really all you need unless your map is massive) i also added some more fancy ui with imgui to play around with and generally just cleaned up some code… in short im basically preparing myself to implement some sort of map file loader w. accompanying filetype?
I’ve implemented saving the current grid to my own custom file format, and some tests to check that it’s working and all seems good.. but now, the real test is to see if I can load back in that file properly :)
I implemented reading from the previously saved map file, with some tests ofc :D please ignore the player flying away at the end.. as of the time of writing it was a sloppy bug which is already fixed
I’ve been having a bit of fun with player sprites (currently som fallout 1 super-mutant sprites i found online) and the renderer sorting sorting code to avoid the player appearing under the ground
i made a npc (the red super mutant) that just wanders around
I completely refactored my ECS into an actual proper entity component system and added a lil fancy inspector for entities/components in the UI, everything works with the new system :) Now that my ECS is properly implemented I’m going to start focusing on implementing proper Levels/Scenes rather than the mess I have right now in my “Game” class which I’ve been using for testing stuff (ignore the weird framedrops my screen recorder was tweaking out)
working on getting Scenes implemented
I’ve been restructuring the and moving things to run actual game logic via “Systems”. I’ve temporarily been testing this in a messy way directly in the scene class, but I’m planning on implementing maybe some sort of basic scripting language that can be used for game logic in entities as a Component w. accompanying systems ofc, so game logic can be defined outside of engine source files and serialized into a scene’s registry from a given file rather than the things im messing around with now. serialization of scenes is what im planning to implement next once im happy with how scenes are working, but i need to plan ahead alot. So for now I’m still going to focus on making sure my Scene implementation is good enough before I focus on implementing serialization and scripting etc, and I have alot to think about regarding the design and architecture of this thing that seems to have evolved into a Game Engine :)
rather than using another custom file format i decided to just use json to serialize scenes which is coming along rather nicely …
running some tests.. messing around with funny map generation shapes too but i dont know how i feel about them
I’ve got loading in scenes working pretty well, but I still have work todo before I can save them properly, im pretty tired already since i spent all day chasing a bug regarding render sorting and ended up refactoring a ton of stuff that i probably didnt have too as i was searching for the issue, but atleast the codebase is somewhat cleaner
I’ve got saving scenes working fully now! ^-^, but an issue ive run into is a segmentation fault on switching scenes, I theorize that it’s due to me not cleaning up / reassigning things when I load in new meshes etc from the scene, thus leaving old pointers in the render queue which don’t exist anymore. This i will work on fixing next.. But for now I am quite happy that i have scenes loading and saving to json :)
Managed to fix the segfault.. Mesh::Upload was updating buffer data without binding its own VAO first, which polluted the global OpenGL state. When a new scene loaded, the driver tweaked out on the broken index bindings and crashed on the next draw call …
i’ve implemented instanced draw calls alongside regular draw calls in my renderer, which currently im using instancing for drawing the map, I also implemented culling for the map depending on viewport and some other small optimizations, I also spent some time on fixing and improving my “Systems” and some general cleanup
i’ve been playing with loading in entities and meshes.. ignore the weird fps drops and generally low fps (compared to normally), screenshots and recordings loves messing with performance for some reason
I’ve been focusing mostly on my scene serialization lately. First, I refactored the maps to remove the hardcoded TileTypes enum, which used to map 0 to grass and 1 to sand. Instead, I implemented a system where this is defined in the grid section of the scene’s json file. The “id” property is now a generic unsigned integer for the tile type, and the “texture” property references a specific asset loaded in the scene. I also added a “properties” section for the scene’s name and a “clear_color” array. This lets you dynamically change the window’s background color on the fly instead of always defaulting to a hardcoded black. Writing the new methods and sorting out the custom serialization logic took a bit of work, but it is working great now. also bumped the map file “version” to 2, even though the reading/writing of map files didn’t change at all, the usage of some bytes did kind of change (for the tiletype) so i felt it was fitting
I’m working on a simple map lighting system, which seems to be working alright. Also scene files now have background color information (which ends up getting wired into glClearColor), also implemented name field for entities because why not. I’m also messing around a bit with the UI since im not super experienced with ImGui but I like trying things out…
I’d like Entities to be scriptable in a future editor application / in general without having to edit c++ source files of the editor to implement new logic systems for one entity, so i’m planning on implementing a very basic scripting language, the way i plan on it working is that you attach a script to an entinty as a component, and it will hold the actual game logic in that script, im not great at explaining with words but what im doing now is starting on implementing lexical analysis for a simple interpreter just to test things out, while I have written small interpreters before, alot of this is still new to me so I am learning along the way. the idea is that its just a very basic scripting language to interact with entities and the current scene, with basic apis for interacting with the current scenes ECS registry,we will see how it goes :)
Working on trying to implement a scripting language for my game engine… i’ve got a simple parser working, it definitely went faster than i expected. Going back and reviewing an old parser i made in C# a while ago helped a lot in this :)
still working on parsing and implementing new nodes :)
The scripting language is now technically Turing complete, as i have added state environment (basically variables persist throughout the session), conditional branching via if / else statements basic repetition via while & for loops the screenshot below shows a fibonacci sequence & an example of the conditional branching w. looping . of course it’s not done yet though, i still have a lot of work ahead :)
the scripting language now has some more mathematical operators and functions !
I’m working down my todo-list for the scripting language (ObSL). Right now i’ve got arrays implemented! i also made a method to define functions from the c++ source so that I can access c++ stuff (like std::chrono functions that im using for testing right now from the test.obsl script), and whatever other functions i want to have accessible, this will be very useful later on as I to integrate the scripting language with the game engine, as now i have an easy way to call functions already defined in the engine source code from the scripting language by just calling interpreter.bind_native(args blah blah); and then I can call the function from the interpreted scripts.. very useful :D
added switch statements, foreach-loop, objects, modules (imports), and a standard library to the scripting language
Drafting a readme for the scripting language before I plan on the Engine bindings
I’ve got the scripting language integrating with the engine via a ScriptComponent on the player entity, seems to be working all good though I still have to implement the actual Engine library for everything… but I have simple scripts running on entities as components in the game engine, which went faster than I expected, so i’m happy with it :)
I’ve got a good basis for the Engine integration library for the ObSL Scripting Language. In the attached video, I’m changing the player’s size using a ping-pong function (?forgot the name…), fully through an ObSL script ( ScriptComponent ) attached to the “Player” entity. The language now has support for the following through the EngineLib : Entity Objects Find GetName SetName GetComponent Components Transform SetPosition SetRotation SetScale GetPosition GetRotation GetScale (uses ObSL arrays) Point Light SetColor (Vec3) SetIntensity SetRadius MovementComponent GetIsMoving SetIsMoving SetTimePerStep MapStateComponent GetHasSelection GetSelectedHex GetPathToHex DirectionalTextureComponent SetIndex GetIndex PlayerInputComponent is still w.i.p. Tag Components currently don’t have any methods since they are only used as tags. Planned I’m planning to keep expanding the EngineLib api with more methods, such as: Has(component) AddComponent RemoveComponent(name or ref) Destroy(EntityID) GetEntityID(entity object ref)
EngineLib Script Integration I fully replaced the previously hardcoded PlayerMovementSystem with an ObSL script implementation using new EngineLib bindings. The movement logic is now handled externally through scripting instead of being directly implemented in C++. New EngineLib Bindings entity management Added bindings for basic entity operations: CreateEntity Creates a new entity Destroy Removes an entity HasComponent Checks whether an entity has a specific component RemoveComponent Removes a component from an entity global functions get_dt Retrieves delta time CloseWindow Closes the glfw window Input System Added script access to input handling: Input_IsKeyDown Checks if a key is currently held Input_IsKeyPressed Checks for a key press event Input_IsMousePressed Checks if a mouse button is pressed Input_GetMouseWorldPos Gets the mouse position converted to world space Movement / Hex Grid Functions Added bindings for interacting with movement components: GetSelectedHex Gets the currently hovered hex tile SetPathToHex Sets a movement target path for an entity with a MovementComponent Camera Added camera manipulation support: Camera_GetPosition Gets the camera position Camera_SetPosition Sets the camera position Camera_Move Moves the camera Camera_PanScreenSpace Moves the camera relative to screen space Camera_GetZoom Gets the current camera zoom Hex Rendering Added bindings for controlling grid visuals: ClearSelectionOverlay Clears the hex selection overlay ClearPathTarget Clears the path target visual marker ClearPathTarget is currently named poorly. It only clears the grid overlay visualization, not the actual movement target!!! summary Removed the old hardcoded PlayerMovementSystem Migrated player movement logic into script format Added engine bindings required for script-driven gameplay Camera movement, input handling, and hex selection now work through scripts Even more gameplay code can now be modified without recompiling the engine :)
I’m using miniaudio to implement audio support in the game engine, with an AudioEngine class to abstract the audio functionality. I’ve also updated SceneProperties to include a new background_music property. This allows each scene to define a background music track (via filepath) that will automatically loop through the AudioEngine while that scene is active. It all seems to be currently working well, Next I’m starting to integrate audio functionality into EngineLib so that scripts can interact with the audio system. changes Added AudioEngine abstraction layer using miniaudio Added background_music support to SceneProperties (w. proper serialization/deserialization ofc) Implemented looping background music per scene
EngineLib I may have forgotten to mention this in my previous log, but I also implemented an Instantiate method in EngineLib. Instantiate takes an entity definition as a JSON file (ig a prefab) and spawns the entity into the current scene. I also added scene related functionality to EngineLib: LoadScene Loads a scene from a given path GetCurrentScenePath Returns the path of the currently loaded scene
more EngineLib work Implemented several improvements to the scripting and entity systems. changes prefab caching Added caching for prefabs to improve performance when repeatedly instantiating entities Entity Access in Scripts Added GetEntity , which returns the entity Object that the script is attached to. Added support for the this keyword in ObSL scripts. this is a wrapper around GetEntity() to provide direct access to the current entity custom components Added support for script-defined components: entity.AddCustomComponent entity.GetCustomComponent This allows scripts to attach and retrieve custom data/components without requiring engine side component definitions entity validation Updated all entity object calls (such as GetComponent ) to validate the entity before executing (in both native bindings & engine source code) Entity operations now check: registry.isValid(id) before accessing the entity. This prevents errors caused by accessing deleted entities during scenarios such as scene unloading/loading cleanup
Porting ECS systems to ObSL Fully ported the InteractionSystem to ObSL through EngineLib. Camera movement and player movement are now handled through dedicated ObSL scripts instead of being hardcoded ECS systems. This moves more gameplay logic into the scripting layer and makes systems easier to modify and iterate on :) Changes System Migration Ported InteractionSystem from ECS code to ObSL Basically Moved camera movement & player movement logic into ObSL scripts Interaction system is no longer hardcoded engine-side gameplay system New EngineLib Bindings Math / Hex Grid Math_WorldToHex Converts world coordinates into hex grid coordinates SetSelectedHex Updates the currently selected hex tile Camera Camera_SetZoom Sets the camera zoom level Window Window_GetHeight Gets the current window height Window_GetWidth Gets the current window width Input Input_IsKeyReleased Checks if a key was released Input_IsMouseDown Checks if a mouse button is currently held Input_IsMouseReleased Checks if a mouse button was released Input_GetMouseX Gets the mouse X position Input_GetMouseY Gets the mouse Y position Input_GetScrollX Gets horizontal scroll input Input_GetScrollY Gets vertical scroll input Please ignore the weird graphical artifacting in the attached video, my pc has been acting up recently :(
“project” file system prototype Started implementing support for engine project files instead of hardcoding a scene path like i was before for testing. The engine will now deserialize a project.json file containing configuration, includes: name Project name (unused for now) version Project version (also unused) start_scene Path to the scene the engine loads on startup Window configuration: width height title fullscreen while implementing this, I uncovered some unexpected behaviour related to fullscreen handling caused by how window sizing was previously managed. i spent time refactoring and fixing the window size logic to make fullscreen behaviour… work.. project loading is now starting to come together, less hardcoded stuff yippie (im planning on making an editor in the future so.. this is why)
Been mostly just fixing some window rendering stuff Moved away from hardcoded resolution / aspect ratio and made it handle itself on the fly also removed the padding bars i had before so rendering actually takes up full screen New native engine binding in EngineLib too: Window_SetFullscreen (takes a bool) I’m planning on starting to work on making the engine multithreaded soon…
im trying to make the renderer run on another thread… few issues… cant see (entity) meshes?, and closing the window seems to cause a freeze…. :))
kinda reverted changes from the last log and tried again to convert everything to be thread safe before actually trying to run on a seperate thread… things are going.. interestingly
I think i fixed most of the silly bugs from trying to make rendering thread safe, im still gonna double check some stuff and do some testing but moving rendering to its own render thread will be coming soon :))))
multithreading & rendering I think I got some form of multithreading working now. The renderer has been moved onto its own dedicated thread, separating rendering from the main engine thread :) Changes Rendering Thread Moved rendering execution to a separate thread (alot had to be refactored for this to work lol) Thread Safety i tried (imgui was a pain) Rendering Optimizations Added frustum culling to the renderer. big optimizeD? actual rendering (i.e gpu calls) is now seperated from the main thread :D …it looks like its working for now
refactoring for editor foundation Refactored rendering and culling systems and made broader architectural changes to decouple the game from the application layer. Rendering & Culling Refactored frustum culling logic to be lil more performant and generally cleaner Cleaned up and improved parts of the rendering pipeline since i had alot of old unused code lurking in them since i switched to a multithreaded architechture Application Architecture the engine is now structured around an ApplicationLayer system. The core Application class now runs a single active ApplicationLayer Each layer exposes: Init Update Render Shutdown Game class refactor The Game implementation has been converted into a derived ApplicationLayer Game logic is now fully driven through the layer system instead of hardcoded to the application class (the different executable mains decide now) Editor Layer added a new EditorLayer Intended for a future scene editor application. (right now all it does is render a given scene on the screen) CMake changes reworked the project to generate multiple executables: obliberry_engine core engine executable (ig runtime) obliberry_editor editor application layer changes: Engine and core systems (i.e ObSL, Renderer, etc) are now compiled as libraries Executables link against shared engine libraries instead of duplicating code Editor executable links against engine modules summary Game logic is now layer-based Engine and tools are separated Editor can proceed independently from the game runtime
Editor UI & Framebuffer Experiments i’ve started experimenting with the ImGui docking branch in the EditorLayer . (switched branch had some build errors blah blah blah but its all set up now) Implemented some placeholder editor UI to test out the docking stuff and get a feel for how the editor layout might end up being like changes editor layer placeholder UI using ImGui docking features testing editor panel layouts framebuffer implemented a framebuffer system for the editor viewport. the scene is currently rendering in the editorlayer via a frame buffer so it can fit in the little thingy (i forgot the name) while testing I noticed some resizing issues when running on my nvidia dGPU: the framebuffer resize works, but resizing the viewport can appear somewhat choppy? the framebuffer and docking setup seem to be working, so i guess this im close to actually start to build proper tooling :)
VFS & Editor layer implemented a basic VFS (Virtual File System) . all asset loading is now routed through the VFS instead of directly loading files. this is mainly preparation for adding proper project management later instead of relying on a hardcoded project.json in the project root i was testing with changes VFS added a basic VFS implementation routed asset loading through the VFS the idea is that the VFS will make it easier to manage project assets and not have everything depend on hardcoded paths. editor layer still experimenting a bit with the editor placeholder UI. added: (new EditorCamera derived class of Camera ) camera panning in the editor viewport camera zoom toggling top-down / isometric perspective with keybinds the top-down view should be useful later when I add actual map editing stuff most of the editor UI is still just placeholder right now, I’m mostly testing layouts and figuring out how I want the editor to feel and look ImGuizmo also added ImGuizmo to the project since I’m planning to start implementing proper editor stuff soon.. …and well… you need gizmos… I’ve reinvented the wheel enough already, so using a proper gizmo library seems like the better choice :) (also integrates very nicely with ImGui)
Editor Picking & Project Management because my EditorLayer uses a framebuffer, I can now utilize framebuffer color picking in the editor i updated the shaders to store an entity ID, so now I can click on entities directly in the editor scene view and it selects them. …and it’s pixel perfect :D changes editor layer added framebuffer based entity picking clicking entities in the scene view selects them!!!! selection is based on the exact pixel under the mouse (i mean to implement gizmos i first need to know what the hell my mouse is on) project management also started laying the groundwork for actual project management. now that I have some sort of VFS implemented, I’m working on a way to properly manage Projects instead of relying on the current setup. still figuring out the exact structure, but ive been working on setting up the Project class
Namespace Refactor & Project Management Work Dependencies finally caused me to run into a namespace conflict after being lazy and unorganized… instead of being sane and just renaming one class.. I decided to refactor the entire project to use proper namespaces everywhere.. changes namespaces Refactored the entire codebase into proper namespaces project management / editor backend I don’t really have much visually to show this update since I’ve mostly been working on backend stuff. Working on: project management scene management VFS improvements editor saving/loading I’m using nativefiledialog-extended to work on proper file dialogs for saving and loading from the editor. Also been doing a lot of testing around project creation and loading. alot of this is in the hope i can get this working multi-platform and not just on linux (though i have yet to try and compile on another os) Things are working… for now… so progress :D
Editor & Scene Management been working on the editor mostly. changes ECS implemented generational ID masks for the ECS. this should prevents issues with stale entity references since IDs can now properly track generations instead of just relying on raw IDs. (i encountered this issue when testing multiple scenes in one project) scene manager fully implemented the SceneManager so it can actually be used by the editor & game layer. this allows the editor to properly load/save/validate/find and generally handle scenes through a unified API (goes for gamelayer aswell but it only really loads them) bug fixing spent a lot of time fixing various issues around: project folder management scene management loading / saving behaviour asset loading (cache was causing some problems on loading scenes but its all fixed now :D) mostly backend work but things are becoming a lot more stable and the editor foundation is starting to come together….
ive been mostly messing around with getting the ObSL language to be thread-safe and refactoring some things, so I don’t have much to show but my end goal is to be able to get scripts to run concurrently and outside of the main thread
Script multithreading (and concurrency) scripts now run on other thread(s) :D this took a fair bit of cleanup, but it’s working. changes script workers moved script execution onto worker thread(s) worked on script worker concurrency dynamically clamp the number of active workers based on how many callbacks are actually running, so idle threads aren’t just spinning doing nothing garbage collection did some work on the GC as well. introduced external root tracking fixed a few issues around GC roots while getting multithreaded script execution working cleanup spent some time cleaning up a bunch of backend stuff while getting all of this working. build system updated CMake so all executables, scripts, and (project) templates are output to a single build/bin directory instead of being messy. multithreading yay :)
ObSL Scripting Library Moved the scripting language into its own repository :) It’s now included in the engine as a library using git submodules and public headers instead of living directly in the engine source code Makes the project structure a lot cleaner .. for both projects ( ObSL can now be found at https://github.com/torkelicious/ObSL )
actually working on the editor I’m finally getting around to actually implementing the editor ..it still looks pretty similar (well mostly the same) but most of the UI before was just placeholder. changes editor implemented a Project Settings window implemented a Scene Properties window made the component widgets actually do something now load textures assign scripts change material colors change meshes change shaders etc…. added an Add Component button added Remove buttons to components it works.. so thats good :D
editor Gizmos! :DD this took a lot longer than I’d like to admit… but it’s finally working. changes gizmos got all gizmos working.. but had issues with rotation and scale at first figured out the issues with rotation/scaling ended up patching ImGuizmo at first to get things working, but after digging through the code I eventually figured out how to do it properly with the normal library translation, rotation, and scale gizmos all work now :)))))) honestly I learnt quite a bit just from messing around with the ImGuizmo internals.. but it was painful editor added a few more UI improvements as well. i.e billboard sprites now explicitly mention that rotation doesn’t do anything, instead of letting you wonder why nothing happens gizmos are one of those things I’ve been waiting on implementing.. but im finally happy to have them
Project Packaging been working on a packaging format for projects. the goal is basically to package an entire project into a single container while preprocessing assets that make sense to preprocess. Also makes shipping a game made in the engine in the future alot easier / cleaner, and portable. changes packaging implemented the start of a proper project packaging system. currently it: parses ObSL scripts ahead of time and stores serialized ASTs instead of source code (basically very similar to some sort of a very very simple AOT compiler) converts project, scene and prefab JSON files into MessagePack stores media and other binary assets directly in the package optionally compresses package entries with LZ4 the idea is that the engine has less work to do at runtime since scripts don’t need parsing and JSON doesn’t need parsing either. and a single “package” file is alot cleaner in general for a finished game “build” package format also implemented the actual container format itself. different asset types are stored as different entry types (scripts, binary JSON, media, shaders, etc.), so the loader knows exactly how each asset should be handled. tools added standalone packaging tools as well for packing and unpacking projects, mostly for testing. still a work in progress, but the whole packaging pipeline is starting to come together.
Project Packaging is Working been spending a lot of time working on project packaging, and it’s finally working now. the engine can now load projects directly from .obpak files, and I’ve got basic tooling to create them as well. the plan is to integrate the tooling i have now with the editor to “build” an obpak archive (i think its called an archive?) changes packaging implemented the full packaging/loading pipeline yippie :D currently the packer: pre-generates ASTs for ObSL scripts converts project, scene(s) and prefab(s) JSON into MessagePack bundles everything into a single .obpak container compresses the package with LZ4 assets like textures, audio and shaders just get copied into the package without any conversion runtime the engine can now load packaged projects directly instead of relying on loose project files. all of this goes through the VFS, so from the engine’s point of view it doesn’t really matter whether assets are coming from a folder or from an .obpak (i.e it can still load loose project files of course) tooling added command-line tools for packing and unpacking projects, i originally made it for testing but it’s actually pretty nice to work with so im probably keeping it. still probably things to polish, but it’s pretty satisfying seeing the engine load an entire packaged project properly pls ignore the lag in the video, i promise its not as terrible as it looks, its just that recording is pretty buggy for me
Project Exporting been working on making projects exportable from the editor it’s now able to export a project to the selected folder, package all the assets into an .obpak , and then copy over the runtime so the exported project is runnable changes project exporting added export to the editor choose an output folder for the exported project packages the project into an .obpak copies the runtime into the export folder renames the runtime to match the project name (just 2 files for full project!, executable and .obpak) the whole process is pretty much one click now instead of manually packaging everything together. file dialogs refactored my entire filedialog implementation cuz it was kinda broken packaging did some more work on the packaging pipeline while implementing exporting and put it in the editor ui im pretty happy that its all working and i can actually export stuff, and run it feels cool :)
editor rework & map editing groundwork been working on the editor again this update was mostly about cleaning up the editor architecture so I can actually keep adding features without everything turning into spaghetti. I also finally started laying the groundwork for proper map editing. changes editor reworked the editor state system. instead of instantly swapping between states, transitions are now deferred until a safe point during the update loop. this makes switching between Edit, Play, Map Edit, and the Hub a lot cleaner, and the editor now remembers which editing mode you were in before hitting Play. (i’ll admit… i was getting a bunch of weird, seemingly unexplainable crashes before eventually realizing my mistake was instantly switching states while things were still being updated/rendered…) also moved more UI responsibility into the individual states instead of having EditorLayer decide how everything should be drawn. map editor started putting together the map editor. currently i have: map hover and tile selection working placeholder Paint / Erase / Select tools the beginnings of a tile palette system a placeholder tile editor panel the actual editing logic isn’t implemented yet, but the foundations are there now :) asset picker ripped out the old “open a native file dialog for every asset field” flow. instead, the editor now lets you pick existing textures, meshes, materials and shaders directly from the ResourceManager , which is a lot nicer to work with and also avoids accidentally importing duplicate assets. (the old workflow would happily create a brand new object every time you imported something… which was fine for testing, but definitely wasn’t something i wanted to keep) rendering fixed a few editor rendering issues while i was at it. materials with invalid shaders now fall back to the default shader instead of silently disappearing fixed some edge cases with framebuffer entity picking currently unused, but functional shader hot reloading tests misc smoothed out editor camera movement and zoom added a few helper utilities for the map editor reorganized the editor UI code a bit doesn’t look massively different in screenshots, but makes future work alot easier/cleaner map painting is next ?..
map editor preveiw ig kinda didnt have much time to do anything today but im working on the tile editor
Map Editing, Brushes, and a 4(?) hour ImGui Bug The map editor is finally coming together It’s still a bit… rough but it does feel nice to be able to paint a map in the editor I did, however, spend an embarrassing amount of time trying to figure out why my click and drag “painting” wasn’t working… well.. ImGui was eating my inputs because it thought I was trying to drag the Scene View window around.. yeah.. changes map editor actually got the map editing tools working for real this time. the paint and erase tools actually place and remove tiles now instead of just being placeholder buttons added a brush radius slider, so you can paint in bigger hex rings added a preview outline that renders around your cursor so you can see before clicking toggling “is walkable” on a tile now properly syncs with the grid pathfinding editor ui spent some time making the tile palette and material editing.. work.. video explains better ngl im not good at describing ui stuff math laid some groundwork in the hex math system ( Lerp , CubeRound , and GetHexLine ) this is mostly for some future evil plans… still a WIP…
Logging Cleanup replaced all the random std::cout / std::cerr calls scattered throughout the project with an actual logging system logging implemented a proper logging system. replaced std::cout / std::cerr throughout the engine added support for different log levels optional logging to a log file centralized all engine logging into one place thread safe !!!! nothing particularly flashy or fancy, but its cleaner, easier to work with, and generally just nice i probably should’ve done this a long time ago :)
editor polish still nothing super flashy.., mostly a bunch of small things changes window titles the editor now updates its window title based on what youre working on. it’ll now include things like the current project and scene, or map project loading cleaned up project loading a bit. the editor now properly syncs the loaded project configuration into the engine context instead of relying on stale data also added menu in the map editor that lets you save and load map files (create new is just placeholder for now) UI added a small helper for rendering framebuffer textures in ImGui without needing to remember to flip the UVs every time. and made the tile Editor use it also forgot to mention in the last log that i cleaned up the “project browser” ui a bit logging fixed up some more logging :)
Undo/Redo! :) been working on some editor QoL stuff again… the biggest addition this time is a proper undo/redo system. it’s still very early and pretty barebones, but having the foundations in place is nice changes editor commands implemented the beginnings of a proper command system for the editor instead of modifying things directly, editor actions now go through commands, which means they can be undone and redone currently supports: entity transforms movement rotation scaling adding components removing components (with the exception of ScriptComponent for now.. that’ll get its own custom command due to the way it works) also keeps a command history, and the usual shortcuts are hooked up now: Ctrl + Z : Undo Ctrl + Y : Redo its still pretty basic, but it works and feels nice to use. input for this, I added proper key-combination support to the input manager. things like: Ctrl + S Ctrl + Z Ctrl + Y can now be handled properly instead of manually checking modifier keys everywhere logging did a bit more cleanup to the logging system as well. the logger now goes through a proper interface instead of everything depending directly on one concrete implementation, which should make it a bit easier to swap things around later if I ever want to. mostly backend work again… but undo/redo is fire
Undo/Redo …again! been working on the editor again the undo/redo system now covers a lot more than just gizmo transforms. but there’s still a few things left (entity creation/deletion mainly). changes undo/redo expanded the command system to cover most editor actions. currently supports: entity transforms adding/removing components adding/removing scripts editing project settings editing scene properties also fixed the undo/redo shortcuts so they only trigger once per key press instead of repeatedly firing while the keys are held… which is probably how they should’ve worked from the start map editor continued working on map editing. painting and erasing now properly integrate with the command system. also, an entire brush stroke is treated as a single undo step instead of undoing one tile at a time. also cleaned up a couple of edge cases while doing this, like preserving existing tile data and avoiding unnecessary commands when nothing actually changed. misc did a bit of cleanup around the editor while wiring everything together. centralized a few bits of duplicated UI logic cleaned up window title updates continued refactoring the command system the undo system is still unfinished, but it covers most of the important stuff and feels nice.. also.. still gotta fix some ui window-size stuff soon too but .. thats for later
Performance & Zero Copy Assets been spending some time under the hood… this one’s almost entirely backend. no new features, mostly went through the render thread, asset pipeline, & a handful of ECS loops to squeeze out more performance. it was incredibly rage inducing at times.. but seeing the profiler diff against baseline.. i am satisfied.. almost at peace.. but was considering becoming a farmer & never touching a computer again.. mostly because i thought i’d messed up more than i did.. but.. im happy now. changes threading & ecs i’ve reinvented the wheel enough already… but had to redo how tasks are dispatched. ThreadPool used to take a std::function , which heap allocates if you capture more than a couple pointers. scripts dispatch through this every frame, so it added up. swapped it for a custom Task type a 56-byte inline buffer, no heap allocs swapped the pending-task counter to a lock free atomic decrement instead of a mutex on every completion… rendering been cleaning up how the main thread interacts with the render thread. the main & render threads used to awkwardly poll eachothers framebuffers. now theres a m_ReadyFrames deque main pushes a frame index, render pops it. much cleaner :) ImGui draw data is now reused in-place instead of allocating & freeing a fresh clone every frame (ive put off fixing that hack for a while so its nice to finally come around to it). instanced draws no longer store a vector<mat4> per draw call, transforms get appended into one giant staging buffer per frame now. added SubmitPersistent for things that already own a long-lived buffer (like the map tile renderer) to skip the copy entirely. swapped a bunch of unordered_map s for flat vectors in the texture/VAO/uniform caches for a handful of items, linear scan beats hashing. batched rendering also caches the last bound texture & color uniform so b2b batches sharing a texture dont rebind needlessly. added a zero-size window safeguard for Wayland so it stops wrecking the renderer when the window briefly reports 0x0 during resize (also turned vsync back on, weird syscall spam otherwise) assets & packaging added VFS::ReadVirtualView to hand out string_view s directly into memory instead of owned strings for packaged builds, ContainerReader now mmap s the .obpak file directly, uncompressed stuff (textures, uncompiled maps) gets handed right to the parser without a copy. also now move only, with a destructor that unmaps memory instead of holding a copied vector of chars scripting the script hot-reloader was doing a stat() syscall on every script file every frame . oops. now polls every 300 frames & caches resolved paths.. thought i already debounced this.. guess not.. the on_update & on_destroy work buckets used to be freshly allocated vectors every frame… now static , so they just clear & reuse capacity editor & ui finally ripped out the old in game debug UI ( GameUI.cpp ), it had fallen out of sync with the ECS anyway (used it for debug visuals while implementing the first version of the ecs.. then forgot about it) the editors inspector does all of this better now, so replaced it with a minimal FPS counter audio & map audio engine now sets an explicit period size (2048 frames) via miniaudio to cut IPC roundtrips to the audio daemon.. (this one was annoying to figure out.. god bless strace & gdb) the map’s visible transforms buffer is now double buffered, rebuilds write to the back buffer while the render thread reads the front, no race conditions. also swapped typeMats from an unordered_map to a flat vector nothing user facing changed this time, but frame pacing feels noticeably smoother (somewhat suprised), & the packaged build starts noticeably faster i know it could probably be a lot better, but im still a bit of a noob at C++, so this is one hell of a learning project
GPU Lighting & Graphics Settings been doing a bit of rendering work again… mostly trying to optimize things. the biggest change is that I completely rewrote the lighting system previously all the point light calculations were happening on the CPU, and after doing some profiling (and spending way too long staring at compiler generated assembly annotations) it became pretty obvious that this was one of the bigger performance bottlenecks (well THE biggest excluding driver overhead) lighting now runs entirely on the GPU through shaders instead changes lighting rewrote the lighting system. lighting is now shader-based and runs on the GPU removed the old CPU-side lighting calculations moved engine shaders (like the base shader and lighting shader) into built-in InternalShaders (hardcoded string literals, it might seem messy but i prefer it like that) the internal shader change mostly exists because they’re pretty fundamental to the renderer. if they were treated like normal project assets and someone accidentally deleted them… well… suddenly nothing renders (unless they had setup their own shaders, which is fully supported!) and lighting completely falls over, also i prefer it to loading them from the filesystem anyways overall I’m pretty happy with how the new lighting system turned out graphics settings also started working on configurable graphics settings instead of baking them into the project, the engine now loads graphics settings from a separate JSON file. this doesn’t get packed into the .obpak , so users can tweak their graphics settings after exporting a game currently supports: resolution fullscreen MSAA (toggle + sample count) target FPS VSync it’s weirdly fun actually being back in OpenGL code again instead of just working with engine abstractions sometimes it’s nice to get back into the weeds.. even if its.. painfull :D
the OpenGL State Machine Strikes Back… I spent the entire day trapped in hell: debugging a corrupted OpenGL state… it may not show up as tracked hours.. since most of it was just staring at various forms of text.. but it was painful. problem so since i turned the lightmap to run on gpu .. well… Whenever I transitioned from the editor ( MapEditState ) into Play mode, the map would turn into like a bunch of weird diamonds, and the corruption would persist indefinitely until I remounted the current project. because it only happened on state transition, i spent hours chasing ghosts in my state management code and scene cleanup routines… (in the end though i did make some changes to the cleanup routines, but between states rather than scenes.. so i guess i was halfway there?) the culprit It was the lighting pass… took me forever to figure it out, but i had the genius and definitely NOT a very late and obvious idea i shouldve had hours ago , to see if the issue happened when i turned off the lighting system. so i put some early returns in my lighting system functions and.. it didnt corrupt.. inside LightingSystem::Update() , the renderer was modifying global OpenGL state changing depth functions, blending modes, and texture bindings, but not restoring them to their original defaults properly When the engine swapped states, the next frame inherited this dirty, half configured state, causing the whole thing to become a mess. the fix I went through the lighting system and made sure the state changes are wrapped and properly restored through the render thread.. LightingSystem.h : Full GL state save/restore around the light pass. now explicitly backing up and restoring the FBO, program, VAO, blend state, draw buffers, clear color, viewport, and active texture. MapEditState.cpp : OnExit() now properly nulls out m_MapComp and m_CurrentGrid . OnEnter() and will refetch them from the current registry so it isnt holding onto outdated references. EditorLayer.cpp : Added a call to renderer->Clean() after state transfers to clear out stale VAO and mesh caches.(bc its multithreaded things go kinda weird but.. it works now) glad thats over with :D Also heres a fun peek of what ObSL can do with EngineLib, yes, it can make your entire map look like hell..! i am totally not going insane
Editor QoL, Graphics Configs & Prefabs new devlog… mostly been focusing on editor ui and qol changes this time around. kinda tired of hardcoded settings for the graphics settings, so i finally built a proper interface for it, plus some prefab management stuff in the editor changes graphics settings i built a dedicated graphics configurator window in the window, for the current project ( GraphicsConfigEditor ). it hooks directly into the UndoManager using the command pattern ( GraphicsConfigUpdateCommand ) serializes everything out to graphics.json . added QuerySupportedSampleCounts which asks the active GL context ( before it gets handed to the render thread ) what MSAA sample counts it supports. the editor now dynamically generates the dropdown and snaps to a valid sample count (i.e 1, 2, 4, 8, 16). prefab management the editor now supports prefab management that i implemented earlier .. instead of directly writing it in the scene json file you can spawn entities directly into the scene from prefab json files you can revert a prefab, which wipes any local overrides and resets the entity back to whatever is saved in the file you can break a prefab, severing the link to the json file and turning it into a normal, standalone entity in the registry ui & editor cleanup spent some time making the editor less annoying.. in general the editor layout stops resetting itself , it now checks if imgui.ini exists on startup, and if it does, it skips rebuilding the default dockspace ripped the hardcoded hub drawing code out of the EditorLayer and made it its own state for the editor state machine refactored the config windows ( ProjectConfigEditor , SceneConfigEditor , and the new GraphicsConfigEditor ) to inherit from a base ConfigEditor class so its cleaner and easier to maintain.. fixed the script widget since the ui was kinda messy
Particles! :) Ive started working on a particle system. i have got the core pieces in place and it seems to be working nicely so far…. changes particles implemented the foundations of the particle system currently has: ParticleEmitterComponent ParticleSystem ParticlePool emitters currently support: configurable particle limits and emission rates randomized lifetimes and velocities “gravity” size over lifetime color over lifetime world space simulation materials obviously so far it’s all behaving pretty well… EngineLib next up is getting particles exposed through the EngineLib API so scripts can spawn and control emitter components we will see how it goes…
mostly just spent some time going through some old code.. nothing really important, but i’ve also replaced the placeholder assets.. with my own placeholder assets that i drew in GIMP, considering i probably do not have the rights at all to distribute the previous assets.. :)
More Particle work… been spending some time on the particle system… changes particles expanded the particle system quite a bit. currently supports: randomized size ranges randomized rotation configurable emitter shapes (support quad, circle, and soft circle) alpha and additive blending configurable render order (still kinda broken but im working on it) per-particle color over lifetime particle presets that can be saved and loaded (as JSON) also added an editor preview mode, so particles can be previewed while editing instead of only showing up in play mode renderer had to do a bit of renderer work to support all of this particles now use their own dedicated shader added support for per-instance colors during instanced rendering added an overlay render pass for effects that should render on top of the scene cleanup also did a some more project cleanup, splitting up my Utils header into multiple files.. nothing special though misc particle emitters can now be saved as reusable presets (some which will be shipped as defaults ofc) as suggested by @sol4r_on_hackclub cleaned up a few asset importing edge cases fixed a couple of packaging issues too I’m pretty happy with how the particle system is coming along :D
UI Experiments since working on the particle system, I feel like it’s in a pretty good place for the current scope. I don’t really know what else I want to add to it right now, so I decided to finally start on something that’s been sitting in the back of my mind for a long time… a proper UI system. changes particles mostly just spent some time testing and polishing the particle system to make sure everything behaves properly I’m pretty happy with where it’s at for now UI started prototyping a custom UI system it’s very early, but I’ve got the basic rendering pipeline up and running currently working on: a UIElement system a dedicated UI renderer text rendering font loading using FreeType right now it’s mostly just enough to prove everything works, but it’s the foundation for the runtime UI system ive wanted for a long time the goal is for games made in the editor to be able to have their own UI, with everything exposed through EngineLib so scripts can create and interact with UI elements as well honestly, for now.. I was expecting it to go alot worse.. FreeType isn’t as bad as it seems once you get it working with GL The screenshot below dosent show much, but you can see the rendering of Text and rects, it also supports textured rects (which is what the text is currently using to render from a texture atlas)
game UI Progress been continuing work on the UI system. changes UI made some good progress UI system currently have: font importing working texture support for UI elements basic text rendering a simple editor view panel for UI it’s still very much WIP editor right now it’s pretty basic, but it’s enough to start experimenting with how creating and editing UI might actually work inside the editor there’s still a lot left to do before I’d call it usable, but im making progress.. getting text working is painfull, and still unfinished.. but im workin on it…
more ui ive been kinda sick so i aint really had the motivation to do a lot but ive been working more on the UI system im kinda tired so i dont really feel like writing more for now -.-
Scripted UI, Map Workflow, & a Bunch of Bug Fixes alot of bug hunting… changes scripting & ui scripts can now actually interact with the UI system. added bindings for things like: creating UI buttons, text, rects, and images finding UI elements destroying UI elements these return wrapped objects with basic getters/setters for position, visibility, and button state map workflow spent a fair bit of time cleaning up the map editor flow. maps no longer get a fake default path on creation switching to the Map Editor tab now auto-creates a map (empty) if there isn’t one yet mapFilePath now stays project dir relative instead of randomly becoming absolute tile materials are now shared properly instead of silently duplicating state rendering & lifetime bugs i’ve been doing alot of testing recently, so i found alot of bugs… this was probably the biggest pain point. renderer submissions now keep materials and meshes alive for the frame instead of trusting the caller replaced the old Shader::Default() singleton hack with a real fallback shader (internalshaders base) fixed the lightmap quad so it keeps its own VAO and clears correctly when there are no lights fixed a Texture move bug that was double-deleting GL handles sometimes editor polish also cleaned up a bunch of editor behavior while I was in there. Ctrl+S now behaves correctly depending on whether editing a scene or a map scene loading now rebinds editor panels properly save/load dialogs now append file extensions automatically added more inline warnings in the inspector and panels (i.e if an entity has no material it will tell you it wont render) and ive probably forgotten something else … in summary ive just been testing out some UI/UX changed and hunting down bugs untill I feel it is ready to maybe start prearing some sort of demo :)
Entity Hierarchy & Scripting Integration finally caved & added actual parent/child relationships to entities changes entity hierarchy entities can now have a parent & children via a new RelationshipComponent . Registry::Reparent() handles moving an entity under a new parent, with cycle & self-parenting protection so you cant do anything silly like parenting an entity to its own descendant. TransformComponent now has a worldTransform alongside the existing local one, a new HierarchySystem systems that care about actual position (i.e AISystem ) read worldTransform now instead of assuming local == world. destroying an entity recursively destroys its children too & unlinks it from its parent’s child list scene serialization now saves & restores the hierarchy editor the Registry panel is a proper collapsible tree now instead of a flat list drag & drop reparenting, plus a right click menu for “Create Child”, “Detach”, & “Set Parent”. scripting pulled all the entity/component script bindings out into their own EngineLibRegistry.cpp module, they were kind of scattered around before & this makes them way easier to find & extend. scripts can now walk the hierarchy too (get children, etc), same module. added SetFont / GetFont bindings so scripts can assign or query a button’s font, small thing but script generated buttons wont have visible text without it :) misc cleanup small modernization stuff while i was in these files anyway: dropped redundant ternary parens, swapped a bunch of auto x = ...; if (x) into if-with-initializer, dropped some unnecessary global qualifiers, const-correctness fixes on UISystem::Update & UIRenderer::Flush . (yes i know the gizmos are offset and buggy, i kind of forgot to update the gizmo code after changing transforms :p )
working in a windows vm trying to get it to compile on windows… it is obviously going great… -.-
Windows Build The Windows build seems to be working.. I don’t have proper OpenGL passthrough in my VM… However, the Windows executable compiles perfectly in the VM and is running fine under Wine. so I consider that a win for now…
Bugs bugs bugs… I’ve been working on a demo project to both test the engine properly (looking for bugs and all), and also have something to actually show off made in my engine… this is the project you’ve been seeing in the last couple logs btw :) of course… since I’ve been using the editor for actual “work”, I have found a bunch of bugs. the biggest one being the entity ID situation… or.. disaster? changes the entity ID mess in the past, out of laziness… entity ID 0 was being used as both a real, valid entity handle and the “no entity / invalid” value depending on where you looked. which worked fine… mostly because of pure luck. the annoying part was that after working on this for a while I wasn’t even sure anymore if I was using 0 , -1 , or something else for invalid entities.. yep.. so I finally cleaned it up there is now a proper INVALID_ENTITY_ID constant, and entity index 0 is reserved for invalid entities. real entities now start from 1 . went through and replaced a bunch of random == 0 / != 0 checks across ECS, serialization, prefab handling, editor panels, and scripting bindings. project templates added support for multiple project templates. new project creation now scans the Templates/ folder instead of everything being hardcoded to “Default”. currently has: DemoProject Empty the demo project is mostly there to show off the newer UI/scripting stuff (the same demo as mentioned before), while Empty is just a completely blank scene. hierarchy & transforms fixed entity and UI reparenting. previously moving something to a new parent could randomly change its position because it was just applying the new local transform now reparenting keeps the world transform, so dragging things around in the hierarchy behaves properly UI & text rendering fixed a bunch of UI text issues. text now centers vertically using actual glyph metrics instead of a random offset I was “pretty sure” was correct it was not, in fact, correct button text now scales to fit inside the button fonts can now load directly from VFS memory instead of requiring a real filesystem path the VFS font loading one was something I completely forgot about when testing outside packaged projects… oops. packaging implemented .pakignore instead of a hardcoded ignore list, the packer now supports gitignore-style patterns in a .pakignore file and properly skips ignored folders/files also fixed a few smaller packaging issues while testing exported projects. misc a bunch of smaller things: map save/load dialogs now default to the project maps folder fixed scene switching bindings in editor play mode fixed a lightmap redraw bug font importer now only accepts .ttf / .otf added a small README with build instructions since im planning on publishing the repo soon (and writing all the docs… scary..) nothing super flashy this time.. but important
the repo is public been working on gettin things ready for that, mostly writing some docs and getting GitHub Actions set up so I can build and release cross-platform builds also did some small code cleanup / fixes while I was going through everything. changes github actions i setup a workflow to compile the project on linux, windows, and mac, and then publish a release (mac is untested but compiles). im real happy though that its actually compiling on all “major” platforms though docs finally wrote some actual documentation… there are a few files in the docs/ folder now and a proper README still a WIP obviously, but at least there’s something there… misc implemented create new map button i forgot about completely repo there is already a build published as a test of the github actions thingy, try it out if you want :D https://github.com/torkelicious/obliberry
Lighting Fixes been fixing a few small things with the lighting system mainly fixed lights using the wrong entity transform I forgot to account for entity parenting when I implemented that… also added a per-scene toggle for enabling/disabling the lighting system
scripts can schedule stuff for later Added SetTimeout to the scripting API changes SetTimeout SetTimeout(fn, ms) calls fn() after ms milliseconds. simple to call from obsl timers live in a plain std::vector<Timer> in a new Platform::Time namespace, polled once a frame from Scene::Update no threads, no async bs or whatever :) the callback itself is a SmallTask , which falls back to a heap allocation if the closure is too big to fit inline fine for this since timeouts aren’t really a hot path timeout callback fires from an arbitrary point in Update , so it gets its own ScriptCommandBuffer set up on the worker just for the duration of the call, then flushed right after also gc.add_root / remove_root the function around the callback so it doesn’t get collected while it’s sitting in the timer list waiting to fire Documented it in the api reference alongside the other Time functions also tiny UI tweak in the tile editor: it now warns “no tile types defined, no map will be visible!” instead of just “no tile types defined” was seeing people get confused about why a new map looked empty after trying to paint also small updates to docs in general and stuff but nothing super interesting
…the default imgui theme first off, huge thanks for all the incredibly kind reviews on my last ship !!! most of this work was also inspired by someone pointing out that i was still using the default imgui theme. fairs… so i spent some time making the editor actually customizable and messing around with having some kinda-nice defaults :) editor ui & theming live theme editor: built a proper window to tweak colors, spacing, padding, rounding, etc. in real-time. semantic palettes: added a semantic color system so you can build out a theme from a small set of base colors, rather than manually adjusting every single internal imgui color enum (though you can still override individual colors if you need to). serialization: themes dump straight out to a theme.json sitting right next to the editor executable. undo/redo: the theme adjustments go through the undo/redo system! help menu: put in a placeholder help menu. turns out literally nobody likes reading docs, so i guess i gotta start explaining how to use the engine from inside the engine… not implemented yet though editor groundwork did a bit of backend cleanup as well. added an EditorContext for editor-specific state, separate from the runtime EngineContext (currently just used for theme stuff) started working on editor font support with a FontSet for things like Body, Bold, Monospace, and Icons, not implemented though the font stuff is mostly groundwork for now, but the theming system is actually working and makes the editor feel nice :D
fighting with fonts font-management rabbit hole in the theme editor… still wip changes font management in the theme editor the theme editor now has a proper Fonts section import .ttf / .otf fonts directly from the editor assign fonts to roles like Body, Bold, Monospace, Icons, etc. merge fonts together so icon fonts can be stacked on top of regular fonts rename, delete, and change the size of fonts fontsets are now saved as part of the theme, so imported fonts persist across restarts the role system isn’t fully wired up yet currently Body is used as the default editor font and Monospace is used for the console. im still working on the whole font management system here and its very unfinished and kinda untested.. very WIP!!! hot-reloading the annoying part was getting font changes to work while the renderer is running on another thread. rebuilding the ImGui font atlas in the middle of a frame was… not ideal, and eventually resulted in an assertion. now font changes mark the atlas as dirty, and the editor waits for the render thread to finish before rebuilding the atlas at a safe point. not the prettiest solution, but it seems to be working.. kind of dpi & freetype also experimented with DPI handling for fonts and wrapped FreeType into a single shared instance instead of creating separate instances everywhere. still figuring out exactly how I want the DPI/font sizing stuff to behave, but it’s getting there. bug fixes while doing all of this I also ended up fixing a few unrelated things: fixed an old GUI rendering bug where text could stop rendering or become garbled because of a pointer race thanks to @staneko for helping test/report that one since I couldn’t reproduce it properly on my system fixed a weird compilation issue related to namespace escaping bumped the vendored ImGui version for some dynamic font-related fixes a few other small UI changes and cleanup still working on this, and the font management side definitely isn’t finished yet… most of this time was just spent trying to get it to half-work so.. yep..
mostly ui stuff (and fighting windows wide chars) yay pretty ui editor ui theming ui blah blah idk what to call it kinda cleaned up some stuff into proper members so the ui state doesn’t get all weird and persistent when you close the theme window discarding changes: actually works now. closing the window used to revert colors but keep your staged font changes, which was dumb (didnt really cause issues since changes werent applied anyways unless you saved beforehand but still.) font role indicators: added a little visual thingamabob where the font list now shows a star next to whatever font is actively set as the body font (also font name is now rendered in its proper font) path tooltips: added a hover tooltip on the font list items that shows the full file path of the font also some placeholder stuff in the code for searching the customization menu i might be implementing soon windows compat std::filesystem::path everything: went through and switched out the raw std::string usage for font paths inside FontConfig , replacing them with std::filesystem::path . this was purely because my windows ci build was failing. i was passing raw char strings around and doing weird string conversions, which completely blows up on windows because it expects wide chars for paths and i didnt consider that when i was being lazy and doing silly conversions and stuff because i just wanted to pass ez pz to a c library. freetype & serialization cleanup: updated all the internal freetype helper functions ( GetFontName , etc.) and the json theme serializer to play nice with the new paths instead of passing raw char pointers kinda mostly just making it a lil more prettier
scrips can change things on the map yippie changes scripting scripts can now modify maps through EngineLib added: Map_SetHexWalkable Map_SetTileType yes, i made sure changes to walkability properly update the map’s pathfinding data instead of leaving it with stale information… sanitizers added sanitizer builds…. got ASan + UBSan working through CMake, along with presets for testing… it has helped already :) timers SetTimeout : if a script created a timer and then the scene changed before it fired, the callback could still run against the old scene state. timers now use generations, so changing/reloading a scene invalidates any timers belonging to the previous scene. editor fixed another map editor bug where discarding unsaved changes didn’t actually discard them… it would clear the dirty state but leave the edited map in memory… i knew about this bug and fix for a while, but i kept on forgetting about it… but its finally done -.- also added an Edit button to script entries in the project browser so scripts can be opened directly (launches default app it detects for the file via ur os)
more docs… and some bug fixes some small bugs that have been annoying me for a while finally got fixed… and I wrote more docs than I probably needed to…? or maybe too litte.. who knows changes entity selection actually clears now fixed an issue where clicking empty space in the viewport wouldn’t reliably clear the current selection. the pick-result handling was structured wrong, so the “nothing was selected” case basically never got handled properly. also explicitly clear the entity ID framebuffer attachment every frame so it doesn’t leave stale IDs around from previous frames. i knew this was broken, and figured the fix would be pretty simple for a while.. but i just kinda forgot to fix it.. oops…. fixed parent transforms during scene loading fixed a bug with parented entities getting their transforms messed up when loading a scene. the issue was that scene loading was using the same Reparent() logic as interactive editor reparenting. that function intentionally recalculates the local transform to preserve world position, which is what you don’t want when loading a transform that’s already been serialized correctly… was eepy when writing that i guess added Registry::SetParentDirect() for scene loading, which just sets up the parent/child relationship without touching the transforms. interactive reparenting still uses the old behaviour, so dragging entities around in the hierarchy still preserves their world position misc cleaned out some old commented-out code docs, docs, docs also wrote proper editor documentation section covering things like: editor concepts usage scenes prefabs components and some even have screenshots.. yes i know.. fancy the help button in the editor links to some of these pages now. i guess “figure it out yourself” wasn’t really an acceptable documentation strategy anymore…. i mean i had some docs.. but they weren’t that good for editor-usage and more technical stuff.. so yep.. also made the README headers slightly more obvious because people were still asking where the download link was ….
persistent Entities been working on persistent entities via a tag.. the same idea as Unity’s DontDestroyOnLoad, except you mark entities as persistent in the editor instead of doing it through scripts (scripts can do it too though). everything keeps breaking or half-working help.
persistent entities… again kinda scrapped most of the first attempt at persistent entities and decided to redo it instead of setting persistence in the editor, I went with something closer to Unity’s DontDestroyOnLoad , where scripts explicitly mark entities as persistent. makes more sense and is a lot less weird around scene changes. (i.e this.SetPersistent(true); ) changes scripting added: entity.SetPersistent(true) entity.IsPersistent() persistence persistent entities are tagged before the scene unloads, serialized normally, then re-injected and reparented when the new scene loads. the persistence tag itself isn’t serialized, so it won’t accidentally end up saved into the scene dedup added some basic deduplication so persistent entities don’t get duplicated if the new scene already contains an entity with the same name. its name based for now… not very great, but good enough
mostly windows fixes changes SetLightmap took a raw Lightmap* and just held onto it for the frame swapped it for a small value type the renderer copies out immediately instead… this sometimes caused crashes but seemingly only on windows?.. just my luck.. LightingSystem had the same issue, was writing back into ECS memory through a raw pointer from a GL init task. now creates the framebuffer/vao up front and just calls Invalidate() on them SubmitPersistent was also holding a raw pointer into caller-owned memory, now copies into the staging buffer like everything else does RenderBatch used to just silently not draw anything if a batch went over MAX_INSTANCES . now it chunks into multiple draw calls instead of dropping the whole thing InvalidateGLCache wasn’t resetting the dynamic instance buffers, only the VAO cache, so they could point at dead GL objects after a context loss actual windows fixes opening files tries to open via already existing file associationg, otherwise falls back to the “open with” dialog if there’s no default handler also the paths get normalized to backslashes now asset import for scripts and so just does a file copy now instead of going through the old import path
code cleanup & optimization currently going through a bunch of older code and fixing / optimizing things. prolly way too much to actually write about, and most of it is just boring small changes, bug fixes, and a lil cleanup big pr i guess soon idk
hardening + performance stuff so this is kinda the continuation of the last log(s) where i was going through some old code kinda boooring but its important performance mainly been trying to get rid of unnecessary allocations and full scans stuff optimized ECS entity/component lookups and removal reworked hierarchy propagation to avoid unnecessary registry scans reduced allocations in scripting and UI command buffers cached script wrappers so they can be reused instead of constantly recreated improved UI lookups with a proper name index made particle/lightmap updates only rebuild when actually needed cached project browser directory scans capped the editor console and added clipping for large logs also did a bunch of smaller optimizations around scripting task scheduling and resource loading things thread safety went through a lot of the cross-thread stuff as well made ResourceManager access properly synchronized experimenting with the audio locking guarded FreeType access made window size and pending scene state thread-safe fixed some render thread / GL context handling basically trying to make all the multithreading stuff a little less “it seems to work” type stuff though alot of this probably wasnt actually causing any issues YET , it would be very hard to debug in the future if I didn’t try to fix it now so yeahh correctness fixed several out-of-bounds issues in VFS/package parsing made VFS path resolution properly stay inside the VFS root (oops…) fixed hierarchy reparenting allowing cycles fixed a few dangling references in hierarchy code fixed some component pool and packaged asset lifetime issues undo history now clears when loading a scene cleaned up a few map editor edge cases fixed text centering fixed the triangle mesh made engine context non copyable also updated the demo template while I was at it (since a recent movementcomponent update it wasnt behaving properly due to the addition of a new field) there are other small things i probably didn’t mention here too but it’s mostly all a collection of a bunch of small things im still testing this though and looking into a few other small things…..
ui editing gizmos!!!1 you can finally drag UI elements around in the editor (instead of typing position/scale values into the inspector) changes ui gizmo added a proper UI gizmo with resize handles and dragging support and that corners resize both axes, edges resize one axis dragging the body moves the element resizing from the top/left keeps the opposite edge anchored added a small drag deadzone so clicking doesn’t accidentally create an undo step UI transforms now go through TransformUIElementCommand , so they’re undo/redo -able also renamed the existing entity gizmo code and naming gets confusing otherwise… coordinate stuff the gizmo needed mouse coordinates relative to the viewport rather than the whole window, so added some better viewport coordinate handling for that… maybe a lil late ui editing mode buttons won’t randomly enter their hover/pressed states just because your mouse is sitting over them now in the editor beccause its a lil annoying when editing small optimization also fixed UIText and UIButton recalculating their text layout every frame when nothing changes feels nice :)
custom meshes im trynna make it so you can draw your own custom 2d meshes in the editor its still a lil buggy but it’s mostly working, serializes and all that :) very fun…
experimenting with post processing working on a lil post-processing pipeline still very wip but im mostly just playing around with various shaders and stuff changes the pipeline PostProcessor is a simple “ping-pong” chain: scene renders to an off-screen FrameBuffer , then each enabled effect runs full-screen-triangle shaders bouncing between two ping-pong buffers, in whatever order they were added I’m working on a system via variants to get uniforms to be easily serializable and such, it seems to be working but I havent actually wired it into anything just yet. editor and runtime a lil bigger change than expected. i implemented a unified fbo for both editor/runtime rather than the weird jank i was doing before editor: scene renders into m_SceneFrameBuffer , post effects run, then it gets sent into the ImGui viewport image like before runtime: same scene framebuffer, same post effects, then PresentToScreen goes to the default framebuffer instead just some general cleanup for that ig crt shader i wrote a lil silly CRT looking shader to test it out as shown below, it’s cool but kind of useless, but very fun to play with!!!
more post processing!!!! this took way longer than i thought it would but uh whateveer. i think i still gotta fix some small things but its working pretty alright :D editor ui added a proper ui for post processing :) threw in an import button and stuff so you can load in fragment shaders as post proc fx you can edit the uniforms directly in the ui now stuff glsl uniform parser: wrote a very simple basic glsl uniforms parser. this is what makes the ui editing possible, but it also helps a ton with serialization so i don’t have to hardcode everything serialization: implemented saving and loading for post processing effects and also made post processing effects bound per-scene instead of being a global engine thing yay post processing funny effects shaders aaaaaaaah
shader preprocessing been working on a small shader preprocessor thing while also finishing up the final bits of post-processing right now the preprocessor is pretty simple, mostly just adding support for: #include #pragma once I haven’t actually needed it yet, I just kinda had the urge to make it… so now I have a shader preprocessor …? its pretty extendable and all though so usefull to have ig :)
too many post proc fx? followup to the post processing / shader experiments… changes shader includes shaders can #include "rand.glsl" etc and it resolves properly. it checks the project VFS first, then falls back to the engine’s own shader helper directory if it isn’t found there. engine shader helpers also get packaged into exported games under engine/shaders/ , so includes keep working at runtime. added a few helper include files: rand.glsl / auto_rand.glsl - seeded hash-based random, with auto_rand reseeding per frame from u_Time color.glsl - HSV conversion, lift/gamma/gain, contrast, saturation, and three-way color wheels commons.glsl - engine-provided uniform declarations so you don’t have to redeclare u_Resolution , etc. in every shader for engine-provided uniforms the helpers use #ifndef / #define guards, so auto_rand.glsl can include rand.glsl without causing double declarations if the effect shader or another include declare the same uniforms or includes. more built-in effects added a few more built-in post processing effects: ColorGrading - exposure, contrast + pivot, saturation, lift/gamma/gain, and shadow/midtone/highlight color wheels using color.glsl FilmGrain - chunky per-cell grain with u_GrainSize controlling the cell size Vingette - yes i know its mispelled. uniforms with Wheel in the name now get the wheel-style color picker instead of the regular color picker, since a normal RGB slider cleaned up effect registration used to have two separate lists, one for raw shader registration and one for the default effect chain. this meant adding an effect involved touching two different structs in two different places. merged those into one PPRegistration list with an inDefaultChain flag shader debug name added an actual m_DebugName field and made error messages / the material inspector fall back to it when there isn’t a real file path. docs wrote up some post-processing editor docs ….. i hate writing docs.. also .shader is now a valid extension for importing custom effect shaders, alongside .frag / .glsl trimmed down the miniaudio CMake config by disabling its examples, tests, and tools, along with Vorbis/Opus/FLAC support since i’m not using any of that….
sllight hub overhaul redid the project hub screen and added recent projects tracking, since up to now opening anything meant going through a file dialog every single time… changes recent projects get tracked in a PROJECTHIST file (next to the editor executable) …dead simple format, one filepath per line, each pointing at a project’s .json . capped at 5 entries, oldest just get removed off the list. hub screen is basically remade two docked panels now instead of one. left panel is the same buttons as before (new project, open project, etc), right panel is the new recent-projects list, up to 5 entries since that’s all the history file holds. also removed some unused dead code i found… QoL type stuff i guess :D
copy paste (kinda) also too much time fighting windows builds tried to get entity copy/paste working and it’s… janky. also ended up wasting a stupid amount of time just getting windows builds to actually build again because i lowk forgot again about how it wont let me pass paths as strings implictly as it does on every other damn os… changes copy/paste (wip, kinda broken) started on ctrl+c/ctrl+v for entities & ui in the editor it kinda works but is really janky and does not feel good to use, also tried implementing it in the context menu but its not workiong at all -.- other the windows fixes…. some resharper reccomendation inspection type shi but lowk its been a while since i logged soo yep
collision stuff been working on a collider system. still pretty early and not hooked into EngineLib yet, but most of the basic backend + editor stuff is there planning to expose it to scripts in a similar way to how Unity handles collision callbacks / triggers, but that’s for later……. collision added a new ColliderComponent with: box and circle colliders offsets size / radius trigger support collision system currently handles: box vs box circle vs circle box vs circle collision normals + penetration depth ‘trigger’ collisions also added a CollisionWorld that keeps track of collisions between frames and generates Enter , Stay , and Exit events. mostly groundwork for when I hook this into EngineLib… collider editing colliders are editable from the editor theres a collider inspector widget for changing the shape, offset, size/radius, and whether it’s a trigger, plus a viewport gizmo for directly moving and resizing them collider edits also go through the undo system, because every new editor feature needs to become an undo/redo problem eventually……… :D other editor fixes entity copy/paste now copies the whole child hierarchy instead of only the selected entity pasted hierarchies keep their parent relationships added copy/paste to the entity and UI context menus fixed stale entity / UI selections after the thing being selected gets deleted fixed single-key shortcuts like V , T , R , etc. firing while Ctrl/Alt/Shift was held keyboard camera movement no longer fights with Ctrl/Alt shortcuts a few smaller include / cleanup things mostly collision work though. next step is probably getting the collision events into EngineLib and experimentiung w. it its still a bit jank of course but it works i guess :DDDDD
collision system round 2 i guess ended up pretty much reworking most of the collision system….. the first version was still basically 2D, with separate box vs box / circle vs circle / box vs circle functions. that worked as a starting point, but it was gonna get annoying … so… it is 3D now. colliders ColliderComponent now supports: boxes spheres cylinders 3D offsets / dimensions triggers entity-space or billboard orientation billboard colliders follow the same camera-facing basis as billboard rendering, which means billboard sprites can still have colliders that actually line up with how they appear on screen. GJK got rid of all the individual boxVBox , boxVCircle , etc. collision functions and replaced them with support-mapped collision detection using GJK. each collider shape just provides a support point now, the intersection test doesn’t care what combination of shapes it’s checking. i dont fully understand the math completely yet.. but it kinda makes sense :D still no collision response / physics yet. this is just detection + events, i think ill prolly get it into EngineLib.. soon… events the CollisionWorld still tracks collisions between frames and generates: Enter Stay Exit trigger state is kept with the collision too. this is for EngineLib integration. scripts should be able to react to collisions / triggers like unity I have not gotten around to this yet though… collider gizmos also had to redo the collider gizmos now that colliders aren’t just flat 2D shapes anymore… its a lil janky but it works.. billboard cleanup while doing the billboard collider stuff I also cleaned up billboard rendering a bit billboards used to have their world transform temporarily modified by SpriteBillboardSystem before rendering. now the billboard matrix is generated when the entity is submitted to the renderer instead, so the actual ECS transform can stay as the real entity transform there’s now one shared billboard matrix helper used by both rendering and collision, which is considerably less cursed. um scripting integration next i guess.. if something dosent explode ! :D
collision callbacks scripts can do collision things now….!!! script collision callbacks ObSL scripts can now define collision hooks: on_collision_enter(other) on_collision_stay(other) on_collision_exit(other) on_trigger_enter(other) on_trigger_stay(other) on_trigger_exit(other) the other argument is a normal EngineLib entity wrapper, scripts can do stuff like check its name, components, etc. collision events get collected by the CollisionWorld , then dispatched to the relevant script instances afterwards. they’re also run through the existing script command buffer ofc 2D collider shapes are back too… added explicit 2D shapes alongside the 3D ones: Rectangle Circle so the full set is now: Box Sphere Cylinder Rectangle Circle rectangle / circle are flat shapes. which is nicer for sprites and other 2d things movement actually respects colliders hex movement now checks whether an entity can actually occupy its next tile before moving there. added a CanOccupy() collision query which builds the entity’s collider at the target position, it blocks the move if something solid is in the way. triggers don’t block movement. collision robustness stuff also did a bunch of smaller fixes around the collision added a shared collision tolerance instead of random 1e-6 s in different places AABB overlap now uses that tolerance too improved collider validation depending on the actual shape fixed gizmo world-to-local conversion to use the proper inverse transform more finite-value / clipping checks in the collider gizmo GJK Indeterminate results preserve the previous collision state instead of automatically counting as a collision p.s, heres a lil photo of my attempt at making syntax highlighting for obsl using textmate grammar… :D
spritesheets / animation finally … spritesheet support spritesheets added a new SpriteSheetComponent with: texture rows / columns optional row + column spacing start frame animation length FPS looping playing / paused state current frame basically the renderer can now render only a specific UV region of a texture animation also added a small sprite animation system that advances frames based on FPS and handles looping / stopping at the end etc etc animations also update while in the editor… might be annoying for some, might be less annoying for others.. but thats how i like it editor stuff you can pick the texture, set rows / columns and spacing, choose the start frame + animation length, change FPS, toggle looping / playback, scrub the current frame, restart the animation, etc. etc EngineLib scripts can inspect stuff like the current frame, frame count, FPS, rows / columns and texture, and can also change the texture/grid/animation, set frames, play, pause, restart and stop animations. Collider also has a proper EngineLib component wrapper instead of collision only being accessible through the callback hooks. right now that’s just getting / setting whether it’s a trigger, but it’s there. also added both Collider and SpriteSheet to the normal GetComponent , AddComponent , RemoveComponent , HasComponent , etc. obviously. some cleanup did a bit of registry / EngineLib locking cleanup while I was in there too, mostly around entity wrappers being created while the registry lock is already held. also fixed one very stupid collision callback typo where on_collision_stay was looking up the wrong hook… oops….. im also starting on documenting this stuff…. yep.. pain… spritesheet used in video attached for testing is : https://opengameart.org/content/animated-butterfly
btw pls star on girhub animation clips / refactoring spritesheets …kinda refactoring the whole spritesheet animation thing already the first version worked, but having FPS / looping / frame ranges etc directly on the SpriteSheetComponent was gonna get pretty limiting cuz what if I wanted multiple animations for one sprite. it might sound stupid but for me it’s always worked to get a prototype working, then refactor/reimplement it. thats even what i did for this entire project early on, before it deleoped into a full on engine :D so now the spritesheet is mostly just the sheet + currently displayed frame, and animation playback is seperate animation clips working on proper animation sets + clips. an animation asset can have one spritesheet and multiple named clips, with each clip containing its own list of frames :D each frame also has its own duration now instead of the whole animation just sharing one FPS value, so stuff like holding a frame longer or doing irregular timing is possible without clips can loop independently too animator component added a separate SpriteAnimatorComponent which handles the actual playback state: animation asset initial clip autoplay current clip current frame inside that clip elapsed time playing state the normal SpriteSheetComponent is way simpler now… it just says what sheet + frame should currently be rendered (the animator updates that for it) animation assets animation sets are assets now under assets/animations/ they serialize separately and contain the spritesheet setup plus all the clips / frames / durations they are loaded through the normal asset system and registered in the ResourceManager scene serialization now keeps the animator config like the selected animation asset, initial clip, and autoplay editor stuff the sprite sheet inspector got reworked for the current thing but whole UI stuff isnt finished once an animator is attached it owns the sheet/frame instead of both systems trying to edit the same thing. I still need a proper UI for actually making / editing animation assets and clips though. i shall work on this next!!! (right now the backend is pretty much all ive done but its taken a lil longer than i thought… who wouldve thought adding cips cleanly would take this whole aah refactor) scripting EngineLib updates too SpriteAnimator in scripts can now do: Play("walk") Restart("walk") Pause() Resume() Stop() IsPlaying() GetClip() it is now based on named clips so i guess not anything flashy to show but… its stuff :)
animation editor continued working on the animation system and made the editor UI…. animation editor there’s now a Sprite Animation Editor you can: choose the spritesheet texture edit rows / columns / spacing create, rename and delete clips toggle looping per clip edit individual frame indices + durations move frames up / down duplicate / remove frames expand / collapse the frame list also added range generation so adding a normal animation doesn’t make you manually enter every frame one by one….. theres also an Apply FPS to All Frames button ! preview added a live preview for the selected clip. you can play, pause and restart it woaw it shows the current clip frame and spritesheet index while it runs…. project browser integration animation assets are properly integrated into the project browser now too there’s an Animations section where you can create, import, edit and delete animation assets creating a new one lets you choose its path then opens it in the animation editor. the animation asset workflow is mostly usable from inside the editor :D erm even more enginelib changes for the new systen that i still have to document… ( Play() Restart() etc) some cleanup working on… some mostly const-correctness, explicit casts, ranges, include cleanup and some other small stuff etc etc.. god bless resharper c++ also cleaned up some EngineLib entity wrapper code around registry locking so it can create wrappers safely when the registry mutex is already held spritesheet used in video attached for testing is : https://opengameart.org/content/animated-butterfly
I will not elaborate
asset system refactor + some editor stuff been wanting to redo how assets work for a while now. until now scenes carried the asset definitions with them, and loading scenes would keep throwing resources into the global resource manager. worked fine enough , but it also meant resources could kinda just accumulate forever.. i seperated them now!! assets.json projects now have a project-wide assets.json catalog. textures, shaders, meshes, materials, fonts, animation sets, etc. live there instead of getting serialized into every single scene. scenes / prefabs / UI / animations etc. just store resource IDs and the definitions live in one place besides making scene files considerably less bloated, this means saving a scene no longer serializes whatever random collection of resources happens to currently exist in the resource manager lazy asset loading having one project-wide catalog does not mean loading the entire project into memory. scene loading now scans for the resources that scene actually references and loads those from the catalog this includes stuff referenced by: entities maps / tile types UI post processing spritesheets / animators dependencies get resolved too so if something needs a material, its shader + texture get pulled in first. animation sets pull in their spritesheet texture, etc. etc. now the the resource manager should only contain what is actually being used asset lifetime stuff added SceneAssetScope for keeping track of what assets a scene has acquired. assets are retained while something needs them and can actually be unloaded once the last scope using them disappears so changing scenes repeatedly should no longer turn the resource manager into yummy more objects :O forever…. persistent entities reacquire the resources they need when moving between scenes too. there’s also handling for catalog entries being replaced / deleted while their old resource is still loaded. those can be marked stale and discarded safely once the old scene lets go of them instead of leaving weird zombie resources around. engine assets still stay around like normal. editor asset workflow the editor now goes through the asset catalog too. creating / importing / replacing / deleting things like: textures shaders meshes materials fonts animation sets updates assets.json instead of depending on scene serialization to preserve them…. supported editor selections / script setters can also acquire catalog assets on demand and attach them to the current scene’s asset scope old projects old projects obviously still have all their assets embedded inside their scene files, so I added an ob_asset_migrator tool. it can scan the old scenes and merge all of those definitions into a project-level assets.json . there’s: dry-run validation conflict detection optional removal of the old scene assets sections backups before it starts rewriting stuff uses backups because i dont trust myself enough .. might vaporize projects who knows… docs docs docs also updated a stupid amount of documentation for the new asset model … since of course.. there’s now a full assets.json format page covering the different asset types, dependencies, lazy loading, asset scopes, editor behavior and migration. updated the scene / prefab / animation / post-processing docs too since all of those previously described assets as being stored directly in scenes. also cleaned up the main README + docs index a bit and updated the feature list because quite a lot of it was outdated at this point…. theme presets also did some work on editor themes. split the built-in theme definitions out and added some interesting presets: Obliberry Dark ImGui Classic Dark Obliberry Light ew imagine using light themes… High Contrast Dark Haxxorman Green editable and all… tldr: resourcemanager is now longer an infintly growing landfill…
save system i wanted this to be pretty generic instead of the engine having some hardcoded idea of what a “player save” or whatever is, so the actual save data is ba sically just key/value storage that scripts can use for whatever they want!!! save data there’s now a SaveGameManager which keeps one active save in memory. save values can currently be: booleans numbers strings the file format is versioned and also stores a display name + created / updated timestamps. the actual save data itself doesn’t really care what the values mean. it is any key value pair that persists. there’s also locking around the active save since scripts can be running across multiple workers….. project UUIDs projects also have their own UUID now. it’s generated when the project is created or when a project that does not already have one is opened right now it’s mainly used to give each project its own save-data directory without name collisions but im sure its good to have outside that!!! save files the basic save file operations too create a new save write the current active save load a save delete a save list existing saves start a fresh unsaved “game” save filenames are generated from timestamps. the human-readable name stays inside the file, display names don’t need to also be valid / unique filenames. save_list() also gives creation + update timestamps, and saves are sorted by most recently updated. writes are atomic too, so it writes through a temporary file before replacing the real save instead of directly nuking the existing one and hoping for the best per-project save directories save data is stored outside the project itself in the normal OS application data home each project gets its own directory based on its UUID <data home>/obliberry/<project uuid>/saves/ projects with the same name don’t fight over the same saves.. (i have several projects just called “UntitledProject” lol) this is LocalAppData on Windows, Application Support on macOS, and XDG_DATA_HOME / ~/.local/share on Linux. both the editor and runtime configure the save manager when the project is loaded, and it gets reset again when the editor closes the project ! ObSL ObSL savedata enginelib intergration: basic data stuff: save_set(key, value) save_get(key) save_has(key) save_remove(key) save_clear() save_new() save file management: save_create(name) save_write() save_load(filename) save_delete(filename) save_list() save_list() returns an array with the filename, display name, creation time and last update time some cleanup also pulled the atomic file writing stuff into a shared OS file utility, so assets.json can use the same code instead of having its own implementation. bunch of formatting stuff too i still have to document this and do some more testingf but yeahhh
uuids, collision layers, save settings, and other stuff bit of a mixed bag this time. mostly cleaning up some systems that were already there and filling in stuff I’d need… entity UUIDs entities have proper UUIDs now, separate from their normal runtime entity IDs. the regular generational ID still does all the normal ECS stuff, while the UUID is a stable identity that gets serialized with the entity. this mostly fixes how persistent entities work between scenes. previously I was deduplicating persistent entities by name , which was obviously not ideal since names aren’t actually identities. persistent entities + their children now keep their UUIDs when moving between scenes, and if the destination already has an entity with the same UUID it gets replaced by the carried-over one. two things can have the exact same name now without persistence randomly deciding they’re the same thing. normal prefab instances / newly created entities still get new UUIDs. collision layers colliders now have proper layers + masks. there are 32 collision layers, and every collider has: a layer a 32-bit mask of layers it accepts both colliders have to accept each other’s layer for the pair to interact. the same filtering is used for normal overlap events and movement blocking, so there isn’t a separate set of collision rules depending on which system happens to be asking. added editor controls for this too, including the layer selector, all 32 mask toggles, and select all / deselect all buttons because clicking 32 checkboxes individually sounds incredibly fun. scripts can also read / change the layer and mask now. collision-aware script movement also added Transform.TryMoveTo(x, y, z) to ObSL. unlike SetPosition , this checks whether the entity can actually occupy the destination before moving it. the normal hex movement system uses the same helper now too, so script-controlled collision-aware movement and normal movement go through the same path. direct SetPosition is still basically teleporting, which is intentional. also fixed on_collision_stay actually looking up the collision stay callback instead of the trigger stay callback. whoops. more save settings did some more work around the save system from the last update. saving can now be enabled / disabled per project, and projects can choose where save files go: Data Home , the normal OS application-data location Portable , relative to the executable both still use the project UUID underneath so different projects don’t start sharing save files because somebody named both of them game . these are editable from Project Settings now. also added a confirmation dialog when regenerating the project UUID since doing that changes which save directory the project looks at. the old saves aren’t deleted, the project just gets a new identity and stops finding them automatically. graphics config stuff changed packaged builds so graphics.json can live beside the executable and override the version inside the package. (i.e if someone decides to unignore the graphics config and package it) couple random fixes particle emitters now keep their actual live particle count, so GetAliveCount() in ObSL finally returns the real value instead of the completely useless placeholder it had before. fixed a prefab revert issue where the code was reading the prefab path from the component after destroying the entity. very intelligent. also made theme font loading a bit less fragile. missing / broken font files get logged and skipped instead of potentially taking the whole theme load down with them, plus some parsing cleanup. and updated another mountain of docs to match all the collision, persistence, save, prefab, post-processing and export changes.
unit tests (& some fixes) uhhhh started adding actual unit tests… i was kinda putting it off but i gotta have it… set up GoogleTest + CTest and started covering some stuff ECS registry / generational IDs entity UUIDs entity serialization hierarchy / parenting collision events + movement blocking save games maps bugs bugs bugs… and unsurprisingly, writing tests immediately started exposing some smaller issues. fixed stale entity handles being able to mess with components belonging to a recycled entity slot, and cleaned up some hierarchy transform / rotation handling that wasn’t preserving transforms correctly in certain parenting cases. also tightened up a couple math helpers while testing them. im still gonna write even more tests.. its very needed at this point and will prolly help me find some more bugs i missed before…
more tests (more bugs) kept going with the unit tests the test suite now covers most of the important stuff, including: ECS / entity IDs / UUIDs serialization + hierarchies collision geometry, events and movement maps animation saves ObSL + some EngineLib bindings assets / asset lifetime VFS + packaged projects configuration editor undo commands also added a couple integration tests for audio and rendering (OpenGL tests are optional) finding things unsurprisingly this found some actual problems too. stale entity handles can no longer remove / access components from an entity that reused the same slot, and editor undo commands are a bit safer around entities or components disappearing. also fixed some hierarchy rotation decomposition weirdness, cleaned up VFS / package mounting state so old package data can’t leak into the next mount, and added a few other small null / cleanup checks around scenes and rendering resources.
export dependencies + prefab asset loading redid how exporting figures out what needs to go into the package previously editor export was basically much closer to just packing the project directory. now it builds a dependency manifest first figuring out what to export export starts from the project + scenes and follows the things they reference: catalog assets used by entities, maps, UI and post processing map files attached ObSL scripts script using imports scenes loaded from scripts prefabs instantiated from scripts music / sound files material textures + shaders animation sheets shader #include s referenced scenes and prefabs get scanned too, dependencies keep chaining from there. it then generates a new filtered assets.json specifically for the package instead of sticking the entire project catalog in there. the actual project’s catalog is untouched. script analysis added a ScriptAssetAnalyzer which walks the ObSL AST without actually running anything. literal stuff can be narrowed down properly, including things like: PlayMusic("assets/audio/music.ogg", 1.0) or even constant string concatenation… asset setters like SetTexture / SetFont get tracked too. if a texture or font ID is dynamic, export keeps that entire asset category. if a runtime file path for stuff like LoadScene , Instantiate , PlayMusic or PlaySound2D can’t be figured out, it falls back to keeping the eligible project files + full asset catalog. unknown / indirect calls are done the same too so simple projects get smaller exports, while weird dynamic scripting should still work… .pakignore still applies, and required files being missing or ignored is now an export error prefab assets also fixed prefabs properly interacting with the lazy asset system. instantiating a prefab now scans its components, acquires whatever catalog assets it needs, resolves their dependencies, and retains them in the scene before creating the entity. so a prefab can use an asset that wasn’t already referenced by the scene and it should just work. scene asset scopes got changed a bit for this too. instead of accumulating a new scope every time something acquires assets, they’re merged into one scene scope and duplicate asset references are ignored. also made prefab revert a little safer so the old entity isn’t destroyed unless the replacement prefab actually instantiated successfully. packaging / ci things editor packaging is stricter in general now. script dependency validation can fail the export, missing dependencies stop it, and PackageCurrentProject reports failure so the rest of the export doesn’t continue pretending everything is fine. shader includes are followed during dependency collection too, while the engine shader helpers still get bundled for runtime includes. also cleaned up CI a decent bit… also some more tests too for the packaging and script analysis lowk sorry for just posting an image of the logs idk how else to show it since it’s mostly backend / file stuff 😭
undo stuff + render lifetime fixes undo / redo the undo system relied way too much on runtime entity IDs and direct pointers into components. that works until an entity gets deleted, an ECS slot gets recycled, or a dense component pool moves stuff around… entity commands now store the entity UUID and resolve the current runtime entity when they execute / undo instead. this now applies to transforms, renaming, adding / removing components, script changes, component field edits and map painting. so older commands can still find the right entity even if it was deleted and later restored with a completely different runtime ID. deleting things is actually undoable now finally added proper undo for deleting entities. !!!!!! deleting an entity snapshots the whole subtree first, including components, UUIDs, names, hierarchy + sibling order, scripts, custom data and asset references. undo rebuilds the tree, reloads required assets, restores the UUIDs and puts everything back where it was. this also means edits from before the deletion still work afterwards, since those commands just resolve the restored entity by UUID. paste uses the same snapshot system now too, so undo / redo keeps the same pasted entity identities instead of creating unrelated ones every time. there are checks for conflicting UUIDs, missing parents, invalid hierarchies, missing assets etc. failed restores shouldn’t leave half-created entities behind. failed commands also no longer get added to undo history or wipe an existing redo chain. custom ObSL data custom script data needed special handling too. arrays / objects can share references or even be cyclic, so just copying ObSL::Value s wasn’t enough. there’s now a snapshot format that captures the object graph and rebuilds it through the interpreter + GC when an entity is restored. CustomDataComponent also roots stored ObSL values properly so GC-managed objects stay alive. runtime functions aren’t snapshotable though, so deletion just fails instead of restoring garbage. render thread lifetime stuff also did a pretty big pass over renderer resource lifetime, mostly because scene switching could unload resources while an already submitted frame was still using them. (this started because someone mightve pointed out a lil crash for me…) render commands now pin the meshes, materials, shaders and textures they need until that frame is done. same idea for UI textures and the editor viewport framebuffer. OpenGL objects also don’t call glDelete* from whichever thread destroys the C++ object anymore. textures, shaders, buffers, VAOs and framebuffers queue deletion for the render thread, while it actually owns the GL context. less bugs yay frame state + shutdown renderer state that can change while the render thread is behind is captured per frame now too, including clear color, post-processing and UI resolution / projection state. shutdown is also more deliberate now: worker threads stop first, background font loads finish, scripts stop, scenes/resources are cleared, renderer/UI resources shut down, then the remaining GL delete queue is processed while a context still exists. font loading uses tracked jthread s now too instead of detached threads. small things exporting now reports success / failure back to the editor and shows a little result popup instead of silently relying on the console. also added tests around delete / restore, UUID reuse, hierarchy restoration, script components, map edits, pasting, command failures and repeated undo / redo without leaking entities or asset references. so. .. . less explosions hopefully sorry if wording is weird.. character limit..
uhhh changes dont nuke scene on failed load scene deserialization moved out of Scene::OnEnter into SceneManager::LoadScene , and now runs before the old scene gets torn down. if the new one fails, you stay in the old scene ( LoadSceneByPath returns a bool now) loading is stricter. missing map files, bad/out-of-range/cyclic parent values and broken UI sections fail the load instead of logging an error and limping on persistent entity migration happens before the swap too, so a failed asset acquire can’t leave you half in the new scene the editor’s LoadScene used to clear the current project before trying to load. now undo history and selection only get cleared once the load actually worked saving: map write failures now propagate instead of reporting success, and files get closed before the error check destroying entities DestroyEntity was recursive, now it’s iterative with a visited set. deep hierarchies, cycles and duplicate child entries no longer kaboom the stack or double delete, and children go first (wow that sounds dark) Reparent and SetParentDirect go through CanSetParent , which rejects cycles and stale parents, even if the existing hierarchy is already cyclic script DestroyEntity / entity.Destroy() now use RequestDestroy to tag the entity and its whole subtree instead of deleting immediately, so on_destroy runs before deletion. scene exit drains the destroy queue too, including entities tagged by exit hooks the script wrapper cache evicts an entity when it’s destroyed a dumb one…: the hot-reload cleanup list had on_exit in it twice and no on_destroy , so on_destroy GC roots never got released … the script system was holding raw ScriptComponent* across initialization, which dangles if a script spawns enough entities to grow the pool. it looks components up by entity ID now script runtime reinitialization after a scene change uses the VFS path and reruns setup, so using imports keep working from the mounted project ui undo UI elements have UUIDs now, and undo commands resolve them by UUID instead of holding raw pointers. removing an element captures the whole subtree plus its sibling position, so undo restores the hierarchy and order. renaming also updates the name index live. smaller fixes collision broadphase is a “spatial hash grid” now instead of checking every pair lightmap rebakes when ambient changes, and handles maps with no tiles atomic file writes use unique temp names so concurrent writers don’t trip over each other project changes wait for background asset loads to finish timeout timers are mutex-protected, and callbacks can schedule more timers without deadlocking SmallTask over-aligned captures fall back to the heap VFS::Resolve("..") had UB from a std::mismatch that wasn’t bounded on the second range… PlayMusic stops, swaps and starts under the lock now instead of racing!!! tests wrote a pile of tests alongside all this: atomic writes, wrapper cache, hierarchy safety, map serialization, save concurrency, scene loading failures, script lifecycle, script modules, SmallTask and timeouts. expanded to the editor command, save game and VFS tests. so EVEN LESS explosions !!! Woo!
map edit kinda overhauled changes map edit stuff the brush size is now 1 to 8 instead of 1 to 5. size 1 is one hex, size 2 is 7, size 3 is 19, etc. Ctrl +scroll also changes the size added Rect and Circle shapes alongside the brush. they work with Paint, Erase and Select. Rect uses opposite corners, Circle goes from a center out to the hex you release on. both apply on release paint previews are green, erase previews are red, and selection previews are yellow. selected tiles get a blue overlay added tool hotkeys: B for Paint, E for Erase and Q for Select Esc cancels a drag. Rect and Circle do nothing if cancelled, while a brush stroke gets reverted instead of leaving half the changes behind loading a map now prompts before discarding a dirty map, and successfully creating or loading a map clears the old undo history selecting and editing multiple tiles Select now supports click and drag, Shift +drag to add to the selection and Ctrl +drag to remove from it the toolbar shows the selection count and has Clear and Delete buttons. Delete removes all selected tiles in one undo step the Tile Editor can edit the type and walkability of the whole selection at once. when selected tiles differ, the controls show mixed values etc. material editing only appears when every selected tile shares a type. Override Current Type changes the material for every tile using that type, while Save as New Type assigns a matching type to the selection without changing every other tile using the old type brush strokes, Rect/Circle fills, deletes and bulk type or walkability changes are each grouped into one undo step. changing a type’s material itself is still not undoable…. the console…. logging now has a sink system, so the same formatted log messages can go to different outputs the editor now has separate Logs and ObSL panels. engine/application logs go to Logs now, and script stdout goes to ObSL the panels have Clear and Copy buttons and keep the latest 2000 lines. the UI sink buffers incoming logs under a mutex before the editor consumes them closing the editor closing the window now goes through a callback, so unsaved scene or project changes trigger the save/discard prompt instead of immediately closing removed the old global Esc -to-quit shortcut. ObSL’s CloseWindow() no longer closes the editor while in Editor mode. it logs that it was called instead. in the runtime, it still closes the window windows and smaller fixes enabled /MP for MSVC builds, and the editor/runtime targets use the Windows GUI subsystem so they don’t launch with a console window attached atomic file writes now write the byte buffer explicitly and retry Windows file replacement when it fails with access-denied or sharing-violation errors, for up to about 2 seconds a bit of cleanup around collision pair sorting, const-correctness and naming docs updated the editor guide and screenshot to cover the new tools, shapes, selection controls, shortcuts and undo behavior. blah blah …map editing is finally a lot less barebones…
uuid-bound script wrappers…, logger sinks…., and a pile of small editor stuff…. mostly scripting + logging plumbing this time, plus a couple of editor things I’d been wanting… changes script wrappers are uuid-bound now entity wrappers used to capture the raw runtime id, which is a problem if ids get recycled or the registry gets rebuilt. now every wrapper holds the entity’s uuid and resolves the live id on each call, so it keeps pointing at the right entity (or does nothing if it’s gone). new FindEntityByUUID(uuid) global and GetUUID() / .uuid on entity objects SetParent matches an entity object by uuid, a plain number is still a runtime id same treatment for UI wrappers: they resolve by uuid instead of name, so renaming or duplicate names don’t break them added FindUIByUUID , GetUUID() and Destroy() on UI elements, and SetImage / GetImage on images (acquires the texture through the scene asset scope like fonts do) still by name: FindUI , DestroyUI and the button state queries ( WasClicked / IsHovered / IsHeld ). UI scripting is still weird… work in progress i guess… logger sinks the old way was swapping the logger’s std::ostream for a stringstream that the UI panel also read from, which was a data race waiting to happen (logger thread writes, main thread reads). replaced it with actual sinks: ILogSink with ConsoleSink (stdout/stderr like before) and UILogSink (mutex -ed pending buffer the panel drains each frame) the editor and runtime both register a ConsoleSink , and the editor adds the UI sink on top, so the Logs panel is always there now instead of only when there’s no tty console panels color lines by severity now interpreter output goes through a small UiStream ostream into the ObSL panel, with stdout and stderr split (needed the bumped obsl, Interpreter takes both streams now…) ObSL panel clears when you enter play mode editor F focuses the camera on the selected entity, press it again to go back to the origin. its smooth…., ..panning cancels the focus keyboard pan only gets called when there’s actually input now.. editing a material in the inspector no longer mutates shared runtime-only materials. if it isn’t a catalog asset it gets cloned into assets.json first, and edits to catalog materials get “upserted” back to the catalog. “Clone Material” writes to the catalog too new scripts from the project browser come with an on_update stub instead of just a comment scripting runtime script top-level code now runs with the command buffer in “immediate” mode ( BeginImmediate / EndImmediate ), so registry writes at the top of a script apply right away instead of waiting for a flush that hasn’t been set up yet during init Hex_GetNeighbors wasn’t GC protecting its array while filling it, fixed…. grid tile textures a tile type with no texture used to fall back to hex_tex both when collecting dependencies and when loading scenes, which would pull in a texture that might not exist. now no texture means no texture… as it should… misc bumped obsl (new using alias feature, and err output stream settings) docs for all the uuid stuff, the F key, and the new UI/image methods… of course… oh also … new demo scene testin thingamabob im messing with…
script properties & UUID types scripts can now declare properties that show up in the inspector and get saved per entity. also ripped std::string UUIDs out of most of the engine in favor of an actual Core::UUID type, plus some scripting additions and a few tests. changes script properties Prop("SpeedOrSomething", 2.5) , PropEntity("TargetEntity") and PropUI("MyRect") for regular values, entities and UI elements properties show up under each script slot in the inspector, with appropriate controls and per-slot values values are only readable during top-level script execution, so store them in variables for use in hooks. Prop in a hook just returns the fallback saved as scriptProperties in scene JSON, omitted when empty property edits support undo, including live number/string editing. unused saved properties can be pruned with undo too.. ScriptSlot is move-only now Core::UUID replaced string UUIDs across the registry, UI, editor commands, project config, save directories and scripting with a 16-byte Core::UUID registry UUID lookups now use an index instead of looping through entities malformed UUIDs in files fall back to generated or nil UUIDs UI UUIDs are saved and restored, including nested elements. duplicate UI UUIDs are handled without crashing the loader savegame directories etc take a UUID directly scripting & UI script objects now have identity values and wrappers are readonly , along with various scripting result objects. came with an ObSL bump UI wrappers get SetParent(parent) and a uuid field. null reparents an element to the root UISystem::Reparent preserves ownership and prevents parenting an element under its own descendant new created scripts use fn on_update(dt) (I wrote on_update() last time …oops…) smaller stuff UndoManager::Execute returns whether the command applied script list shows filenames with Remove beside them tests and docs more tests and docs updated ofc… so u can reference entities in scripts without using Find() now!!!
rahhhh been working on the new… demo… and well, it found some things. mhm changes gizmos and transforms rewrote the entity gizmo so moving things under rotated or scaled parents actually works properly transforms now handle custom matrices and shear much better, including when reparenting made hierarchy updates more robust, added matrix support to scene files, and stopped rounding transform data on save gizmo undo is more consistent now, and the editor warns when a transform has shear pathing movement can now re-plan around blockers, and picks a nearby free hex if the destination is blocked scripts can set paths without drawing the path overlay, which is useful for enemies script messaging added Send , Broadcast and on_message so scripts can communicate with each other messages support basic values and are delivered through a queue on the main thread scripting and components SetTimeout now can forward arguments to callbacks point lights can be disabled, and particle emitters remember whether they’re active when saved added a bunch of smaller fixes around scene saving, prefab parenting and serialization obsl some separate ObSL updates too: variadic native functions, multiline comments, a formatter and fixes for nested calls. (not tracked here though) DEMO!!!!! im working on a new demo :0 oh and it is my birthday woaw
Ships:
obliberry feels usable enough that i think its a good time for a first ship :) obliberry is a fallout-inspired isometric game engine for hex-grid games, written in C++20 with OpenGL, featuring a visual editor, an ECS core, its own scripting language, and single-file packaging/exports. this has all been rather challenging, but an incredibly fun learning project, especially regarding using modern C++, OpenGL, and making my own programming language it is still obviously not fully complete of course, but I think it’s in a rather good state :D...
|
1793084042.0590868
|
1793170442.0590868
|
|
68239
|
Java Path Tracer by @Robodog81 | Stardance
|
Robodog81
|
1
|
39.33
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-17T03:56:37Z", "hours": 18.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is an early beta of a path tracer that I am working on. I belive there are still a few problems (fuzzy metals not quite right) but overall it still looks ok.", "repo": "https://github.com/Robodog81/Path-Tracer", "demo": "https://github.com/Robodog81/Path-Tracer/releases/tag/Beta"}]...
|
[{"post_id": 82913, "ts": "202 [{"post_id": 82913, "ts": "2026-10-26T06:47:37Z", "hours": 17.1086, "text": "HUGE CHANGES I have been on holiday for the weekend and have not been able to post a devlog as I was offline and my time has gone above 10 hours. Does anyone know how I could still get stardust for the extra time? Anyway, it has been a bit since my last developed and I can assure you that I have added many new features targeted at making the system easier to use. Almost everything is changeable without even looking at the code. I am not sure if they were in the last devlog but I added a time rendered metric. The Editor UI I poured many hours into making a (hopefully) intuitive system to edit the scene to be rendered. You can now select any sphere with the arrow keys and move it with WASD. You can also open a menu to change it’s properties like radius, colour, and material. The Editor Preview Render I wanted there to be a real time preview of the scene whyle you are editing it. Due to the accumulative nature of my Path Tracer Running it in real time would look incredibly noisy and fickery. I opted to try and make a totally new rendering system that can approximate the result in a single frame. At the moment this works great for everything except fuzzie metals - they just show as smooth. Problems & Future Changes One of the things that i find annoying about the preview render is that there is some fairly obvious screen tearing on parts of moving spheres. This doesn’t affect the final render but is just a bit annoying When going to render the scene the first frame may contain some black lines that remain as ghosts for the a while until enough frames have been rendered over them and the colours average out. There is currently no way to change the resolution without editing the source code. It defaults to 480 x 270. A quarter of the standard 1920 x 1080. The sphere editing menu can jump around when choosing changing the selected sphere. I would like to add an option to hide or show the debug performance metrics. Extra Info Not much here :) In the images you can see both a editor preview render with all of the menus open and a quick render of the scene to compare to the preview. In the editor the big sphere that is tinted white is the one that is selected, the white tint pulses on and off."}, {"post_id": 81078, "ts": "2026-10-19T19:53:24Z", "hours": 1.4683, "text": "Tonemap Update and Code Reformatting I haven’t done much in the way of large changes since last devlog but I have been reformatting much of my code to make it easier to read and use. The code should now look a lot cleaner. I also fixed the tonemapper as it was over over exposing the brighter spheres. I also added a new tone map option that seems to be significantly better at representing bright colours than my prior two. The first one is purely clamping the HDR value to sRGB. As you may guess this leads to bright lights of most colours appearing white. I did have an alternative Reinhard tonemapper (v / (v + 1)) but that made everything look gray and desaturated as it applied the map to every colour channel individually causing all colours to look similar. The fix was to run the tone map with the brightest colour of the channel. This new screenshot is done with the new tonemapper and is a great example of the new glass refraction. It is a bit dark sorry. This took >30min to render."}, {"post_id": 80880, "ts": "2026-10-19T04:40:56Z", "hours": 2.75, "text": "Java Path-Tracer A simple Java Path-tracer for rendering cool scenes written in a single java class. The main thing I have spent my time on is adding in a glass material. It has proved to be more of a pain than I originally thought. The book series Ray Tracing in One Weekend has once again proved very useful. Anyway, whyle developing it I would repetitively get a material that looks somewhat like glass (or some weird blob) or something that was overly noisy. at one point my glass started emitting blue and yellow light (not much of a clue why that happened. After a good few hours of hassle I finally got it refracting properly. The rest of the features (total internal reflection & reflection) were fairly straightforward after that. Even caustics (the focused light under a glass sphere) work really well. I also found that my metal bounce rays for fuzzie metals weren’t being normalised properly causing weird ring artefacts. That was an easy fix luckily. I think this project is coming along well. Here is a new Hi-Res test scene that I let my laptop suffer on for quite a while. for reference this is an 8th gen i5 laptop and this scene took around 15 minutes to render. I did have a fair bit of other stuff open though. Enjoy. :)"}, {"post_id": 80270, "ts": "2026-10-17T01:58:49Z", "hours": 8.0306, "text": "Over the past few days i have made a few improvements. I have focused a bit more on the performance side of things and implemented (fairly bad) CPU multi threading as it was running single threaded before. This resulted in a 2-3x performance increase even though I went from 1 to 8 threads. I believe this is due to my bad code and the fact I create 8 new Thread objects every frame. Other than performance optimisations I also expanded the functionality of the renderer. I added Lambertian scattering for more accurate matte surfaces. I gave metal a fuzziness propitiate that allows for more surface options. I also started to implement glass (which is an absolute pain) but it is still broken at the moment (see screenshots) :) I also did some general housekeeping and cleaned up the code making it easier to read. The code is now visible on github for anyone who is interested."}, {"post_id": 78982, "ts": "2026-10-12T07:57:37Z", "hours": 10.1758, "text": "This is my shot at making a (somewhat optimised) Path Tracer in Java. I have previously made one in scratch and am trying to make a better foundation to work off of so I can add more advanced features. I had already started making the ray traversal code but forgot to log it; my current time is a little on the low side. I primarily work of the online books ‘Ray Tracing In One Weekend’ as they contain most of the info I need. At the moment only spheres are supported and only can be matte or a light. Even now I have been able to make some cool renders of random spheres. I will soon add more surfaces (mirror, glass, etc), anti aliasing, and multi thread support for better performance. If I can I will add support for polygons and thus 3d models. I hope this is as cool to you as it is to me. Thanks for reading. :)"}]...
|
Title: Java Path Tracer by @Robodog81 | Stardance
Title: Java Path Tracer by @Robodog81 | Stardance
Devlogs:
This is my shot at making a (somewhat optimised) Path Tracer in Java. I have previously made one in scratch and am trying to make a better foundation to work off of so I can add more advanced features. I had already started making the ray traversal code but forgot to log it; my current time is a little on the low side. I primarily work of the online books ‘Ray Tracing In One Weekend’ as they contain most of the info I need. At the moment only spheres are supported and only can be matte or a light. Even now I have been able to make some cool renders of random spheres. I will soon add more surfaces (mirror, glass, etc), anti aliasing, and multi thread support for better performance. If I can I will add support for polygons and thus 3d models. I hope this is as cool to you as it is to me. Thanks for reading. :)
Over the past few days i have made a few improvements. I have focused a bit more on the performance side of things and implemented (fairly bad) CPU multi threading as it was running single threaded before. This resulted in a 2-3x performance increase even though I went from 1 to 8 threads. I believe this is due to my bad code and the fact I create 8 new Thread objects every frame. Other than performance optimisations I also expanded the functionality of the renderer. I added Lambertian scattering for more accurate matte surfaces. I gave metal a fuzziness propitiate that allows for more surface options. I also started to implement glass (which is an absolute pain) but it is still broken at the moment (see screenshots) :) I also did some general housekeeping and cleaned up the code making it easier to read. The code is now visible on github for anyone who is interested.
Java Path-Tracer A simple Java Path-tracer for rendering cool scenes written in a single java class. The main thing I have spent my time on is adding in a glass material. It has proved to be more of a pain than I originally thought. The book series Ray Tracing in One Weekend has once again proved very useful. Anyway, whyle developing it I would repetitively get a material that looks somewhat like glass (or some weird blob) or something that was overly noisy. at one point my glass started emitting blue and yellow light (not much of a clue why that happened. After a good few hours of hassle I finally got it refracting properly. The rest of the features (total internal reflection & reflection) were fairly straightforward after that. Even caustics (the focused light under a glass sphere) work really well. I also found that my metal bounce rays for fuzzie metals weren’t being normalised properly causing weird ring artefacts. That was an easy fix luckily. I think this project is coming along well. Here is a new Hi-Res test scene that I let my laptop suffer on for quite a while. for reference this is an 8th gen i5 laptop and this scene took around 15 minutes to render. I did have a fair bit of other stuff open though. Enjoy. :)
Tonemap Update and Code Reformatting I haven’t done much in the way of large changes since last devlog but I have been reformatting much of my code to make it easier to read and use. The code should now look a lot cleaner. I also fixed the tonemapper as it was over over exposing the brighter spheres. I also added a new tone map option that seems to be significantly better at representing bright colours than my prior two. The first one is purely clamping the HDR value to sRGB. As you may guess this leads to bright lights of most colours appearing white. I did have an alternative Reinhard tonemapper (v / (v + 1)) but that made everything look gray and desaturated as it applied the map to every colour channel individually causing all colours to look similar. The fix was to run the tone map with the brightest colour of the channel. This new screenshot is done with the new tonemapper and is a great example of the new glass refraction. It is a bit dark sorry. This took >30min to render.
HUGE CHANGES I have been on holiday for the weekend and have not been able to post a devlog as I was offline and my time has gone above 10 hours. Does anyone know how I could still get stardust for the extra time? Anyway, it has been a bit since my last developed and I can assure you that I have added many new features targeted at making the system easier to use. Almost everything is changeable without even looking at the code. I am not sure if they were in the last devlog but I added a time rendered metric. The Editor UI I poured many hours into making a (hopefully) intuitive system to edit the scene to be rendered. You can now select any sphere with the arrow keys and move it with WASD. You can also open a menu to change it’s properties like radius, colour, and material. The Editor Preview Render I wanted there to be a real time preview of the scene whyle you are editing it. Due to the accumulative nature of my Path Tracer Running it in real time would look incredibly noisy and fickery. I opted to try and make a totally new rendering system that can approximate the result in a single frame. At the moment this works great for everything except fuzzie metals - they just show as smooth. Problems & Future Changes One of the things that i find annoying about the preview render is that there is some fairly obvious screen tearing on parts of moving spheres. This doesn’t affect the final render but is just a bit annoying When going to render the scene the first frame may contain some black lines that remain as ghosts for the a while until enough frames have been rendered over them and the colours average out. There is currently no way to change the resolution without editing the source code. It defaults to 480 x 270. A quarter of the standard 1920 x 1080. The sphere editing menu can jump around when choosing changing the selected sphere. I would like to add an option to hide or show the debug performance metrics. Extra Info Not much here :) In the images you can see both a editor preview render with all of the menus open and a quick render of the scene to compare to the preview. In the editor the big sphere that is tinted white is the one that is selected, the white tint pulses on and off.
Ships:
This is an early beta of a path tracer that I am working on. I belive there are still a few problems (fuzzy metals not quite right) but overall it still looks ok....
|
1793008284.2130187
|
1793094684.2130187
|
|
39643
|
Lunaric AI by @Tanixsh | Stardance
|
Tanixsh
|
2
|
34.0
|
305
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T05:51:01Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made an AI study companion with different modes to interact with the user in a better way and the hardest part was to make it respond faster than before, during my updates.", "repo": "https://github.com/Tanixsh/Lunaric-AI", "demo": "https://lunaricai.web.app"}, {"ship_num": 2, "ts": "2026-09-14T11:32:03Z", "hours": 31.0, "multiplier": 9.95, "payout": 305, "blessing": "neutral", "text": "I built Lunaric AI, an AI student companion which acts as an operational mentor and is greatly helpful for Olympiad preparation. I built and designed the AI using python language and designed the UI through Flutter. The hardest part was getting everything to work together, especially connecting the backend to the frontend. I’m most proud of the thing that it went from an idea to a working app with Chat, Study, Olympiad and Analyze modes. People should know they can actually test it themselves through the project link and try the different modes.", "repo": "https://github.com/Tanixsh/Lunaric-AI", "demo": "https://lunaricai.web.app"}]...
|
[{"post_id": 82903, "ts": "202 [{"post_id": 82903, "ts": "2026-10-26T05:48:48Z", "hours": 3.0078, "text": "I have been trying to update my AI and now have made it response faster, answers more accurately and worked on it’s authentication"}, {"post_id": 68006, "ts": "2026-09-14T11:20:11Z", "hours": 0.7792, "text": "DEVLOG 11: I’m here with a great news, LUNARIC is fully complete and will now be shipped. The journey helped me a lot and encouraged me to go beyond my limits and try new things and hope to explore this field more. Although it was not really straight forward and I feel the toughest part of the project was connecting the backend and frontend which not only took time but was truly difficult. I’ll be trying to ship my project and this is probably my last DEVLOG."}, {"post_id": 67348, "ts": "2026-09-13T12:55:18Z", "hours": 5.1967, "text": "DEVLOG 10: So guys, I’ve been lately working on redefining and polishing Lunaric’s UI and have been trying to fix bugs and glitches. I believe the AI shall shortly be shipped and it had been a great journey working on this project a lot. Hope y’all enjoy the AI."}, {"post_id": 64100, "ts": "2026-09-08T09:06:48Z", "hours": 2.7331, "text": "DEVLOG 9: I’ve deployed Lunaric publicly which is now available for all. If anyone wishes to pre-test my AI, please go https://lunaricai.web.app/ and kindly give me feedbacks accordingly. Your participation will be highly appreciated."}, {"post_id": 62295, "ts": "2026-09-05T16:28:25Z", "hours": 3.3317, "text": "DEVLOG 8: LUNARIC AI is now completed with it’s final mode - ANALYZE MODE. Lunaric can now access the user’s photos and camera based on user’s will allowing the student to upload image and get cleared with doubts with complete solution. Building the ANALYZE mode was toughest of the four as the host was continuously conflicting with the backend. Now I am going to design and polish the UI and customize some features and am also going to add a voice to text feature."}, {"post_id": 60934, "ts": "2026-09-03T16:38:56Z", "hours": 1.3733, "text": "DEVLOG 7: I’ve finally completed with my STUDY mode although i faced difficulty assigning for the TOPICS section in the subject it worked out. Now I am going to work on the last mode of LUNARIC - ANALYZE."}, {"post_id": 57997, "ts": "2026-08-30T10:20:16Z", "hours": 4.465, "text": "DEVLOG 6: I am finally done with polishing and uploading my README and tried to cover all major features and overview in a nutshell while completing the Study mode for my AI. If you guys want too take a look at my README please go to my repository on GITHUB."}, {"post_id": 55686, "ts": "2026-08-27T17:30:03Z", "hours": 1.5478, "text": "DEVLOG 5: This is my first step towards transforming Lunaric from a normal AI chatbot to an operational mentor. I’ve almost completed my work with Olympiad mode on Lunaric AI where students can generate problems just by choosing their requirements and even check if their answers are correct. Next I’ll be working towards building the STUDY mode."}, {"post_id": 54361, "ts": "2026-08-25T10:00:06Z", "hours": 3.2881, "text": "DEVLOG 4: i have finally connected the app with it’s backend and it is working completely fine. Flutter is now communicating with the Python backend and real AI responses are working inside the app."}, {"post_id": 53006, "ts": "2026-08-23T12:04:39Z", "hours": 3.4675, "text": "DEVLOG 3: The “FIRST UI PROTOTYPE” for LUNARIC AI is here. The UI is still an early prototype, but the main app structure is starting to take shape. Next, I’m working on connecting the UI to Lunaric’s actual AI capabilities."}, {"post_id": 52367, "ts": "2026-08-22T14:09:40Z", "hours": 2.8686, "text": "DEVLOG 2: FINALLY!!!! promotional website For LUNARIC OFFICIAL almost complete, I got to learn and make a 3D interactive website that too for my AI promotion."}, {"post_id": 47926, "ts": "2026-08-16T06:09:30Z", "hours": 1.6067, "text": "DEVLOG 1: The credentials and structure for my project have been assigned. Lunaric AI has started to reply by understanding user’s input and now has access to real-time information although the Real-time connection was hectic it is finally set to sail…."}]...
|
Title: Lunaric AI by @Tanixsh | Stardance
Devlogs Title: Lunaric AI by @Tanixsh | Stardance
Devlogs:
DEVLOG 1: The credentials and structure for my project have been assigned. Lunaric AI has started to reply by understanding user’s input and now has access to real-time information although the Real-time connection was hectic it is finally set to sail….
DEVLOG 2: FINALLY!!!! promotional website For LUNARIC OFFICIAL almost complete, I got to learn and make a 3D interactive website that too for my AI promotion.
DEVLOG 3: The “FIRST UI PROTOTYPE” for LUNARIC AI is here. The UI is still an early prototype, but the main app structure is starting to take shape. Next, I’m working on connecting the UI to Lunaric’s actual AI capabilities.
DEVLOG 4: i have finally connected the app with it’s backend and it is working completely fine. Flutter is now communicating with the Python backend and real AI responses are working inside the app.
DEVLOG 5: This is my first step towards transforming Lunaric from a normal AI chatbot to an operational mentor. I’ve almost completed my work with Olympiad mode on Lunaric AI where students can generate problems just by choosing their requirements and even check if their answers are correct. Next I’ll be working towards building the STUDY mode.
DEVLOG 6: I am finally done with polishing and uploading my README and tried to cover all major features and overview in a nutshell while completing the Study mode for my AI. If you guys want too take a look at my README please go to my repository on GITHUB.
DEVLOG 7: I’ve finally completed with my STUDY mode although i faced difficulty assigning for the TOPICS section in the subject it worked out. Now I am going to work on the last mode of LUNARIC - ANALYZE.
DEVLOG 8: LUNARIC AI is now completed with it’s final mode - ANALYZE MODE. Lunaric can now access the user’s photos and camera based on user’s will allowing the student to upload image and get cleared with doubts with complete solution. Building the ANALYZE mode was toughest of the four as the host was continuously conflicting with the backend. Now I am going to design and polish the UI and customize some features and am also going to add a voice to text feature.
DEVLOG 9: I’ve deployed Lunaric publicly which is now available for all. If anyone wishes to pre-test my AI, please go https://lunaricai.web.app/ and kindly give me feedbacks accordingly. Your participation will be highly appreciated.
DEVLOG 10: So guys, I’ve been lately working on redefining and polishing Lunaric’s UI and have been trying to fix bugs and glitches. I believe the AI shall shortly be shipped and it had been a great journey working on this project a lot. Hope y’all enjoy the AI.
DEVLOG 11: I’m here with a great news, LUNARIC is fully complete and will now be shipped. The journey helped me a lot and encouraged me to go beyond my limits and try new things and hope to explore this field more. Although it was not really straight forward and I feel the toughest part of the project was connecting the backend and frontend which not only took time but was truly difficult. I’ll be trying to ship my project and this is probably my last DEVLOG.
I have been trying to update my AI and now have made it response faster, answers more accurately and worked on it’s authentication
Ships:
I built Lunaric AI, an AI student companion which acts as an operational mentor and is greatly helpful for Olympiad preparation. I built and designed the AI using python language and designed the UI through Flutter. The hardest part was getting everything to work together, especially connecting the backend to the frontend. I’m most proud of the thing that it went from an idea to a working app with Chat, Study, Olympiad and Analyze modes. People should know they can actually test it themselves through the project link and try the different modes.
I have made an AI study companion with different modes to interact with the user in a better way and the hardest part was to make it respond faster than before, during my updates....
|
1793005012.5447187
|
1793091412.5447187
|
|
71431
|
PacMac by @Kailey | Stardance
|
Kailey
|
0
|
2.76
|
0
|
[]
|
[{"post_id": 82902, "ts": "202 [{"post_id": 82902, "ts": "2026-10-26T05:42:34Z", "hours": 2.7644, "text": "Finished portal, modified game loop, added walls, added sprites, added music, fixed code/score logic, fixed errors, added start and end screens, added restart, deploy"}]...
|
Title: PacMac by @Kailey | Stardance
Devlogs:
Fin Title: PacMac by @Kailey | Stardance
Devlogs:
Finished portal, modified game loop, added walls, added sprites, added music, fixed code/score logic, fixed errors, added start and end screens, added restart, deploy...
|
1792993647.5769637
|
1793598447.5769637
|
|
71428
|
Student Task Force by @antonio_passos | Stardance
|
antonio_passos
|
0
|
7.45
|
0
|
[]
|
[{"post_id": 82891, "ts": "202 [{"post_id": 82891, "ts": "2026-10-26T05:05:55Z", "hours": 7.4536, "text": "Basic website layout created with placeholder polls and some dummy articles. I’m going to make the articles more detailed and add functionality for other people to write articles too, and also add database so the polls can actually track live votes."}]...
|
Title: Student Task Force by @antonio_passos | Sta Title: Student Task Force by @antonio_passos | Stardance
Devlogs:
Basic website layout created with placeholder polls and some dummy articles. I’m going to make the articles more detailed and add functionality for other people to write articles too, and also add database so the polls can actually track live votes....
|
1792993644.2458546
|
1793598444.2458546
|
|
70508
|
Website Health Checker by @Saridi | Stardance
|
Saridi
|
0
|
7.9
|
0
|
[]
|
[{"post_id": 82887, "ts": "202 [{"post_id": 82887, "ts": "2026-10-26T04:57:16Z", "hours": 1.5369, "text": "Devlog #6 Core Checker Unit Testing and Test Environment Setup Today, I set up unit testing for Website Health Checker using pytest and unittest.mock ! I implemented test coverage in tests/test_checker.py to validate empty URL handling, successful HTTP status checks, timeout exceptions, connection errors, and batch URL processing. I also fixed case-sensitivity alignment between assertions and return values, successfully verifying all 5 unit tests passing in the Google Colab environment. My Next Target 🎯 Create tests/test_cli.py to test CLI interface behavior, stdout formatting, and POSIX exit codes Edit and refine .github/workflows/ci-test.yml for automated GitHub Actions pipeline Ensure all matrix builds pass on GitHub Actions"}, {"post_id": 82533, "ts": "2026-10-25T04:43:14Z", "hours": 0.9692, "text": "Devlog #5: CLI Interface Implementation, Error Formatting, and Exit Code Standardization Today, I finalized the command-line interface (CLI) for Website Health Checker! I implemented argument parsing for multiple URLs, configurable timeouts, and version flags. I also added structured error output formatting with N/A fallbacks, standardized POSIX-compliant exit codes ( 0 for success, 1 for failures) using system.exit() , validated the exit status behavior in Google Colab subshells, and successfully merged Pull Request #7 into main using Squash and Merge. My Next Target 🎯 Configure the testing framework Test URL validation and successful HTTP responses Test timeout, connection errors, and invalid input Test CLI arguments, output, and exit codes Create a GitHub Actions workflow to run tests automatically"}, {"post_id": 82385, "ts": "2026-10-24T17:54:21Z", "hours": 0.6711, "text": "Devlog #4 Basic CLI Interface Implementation and Setup Today, I implemented the foundational CLI interface for website-health-checker in cli.py to keep the user interface cleanly separated from the core logic! I configured argparse to handle multiple URL inputs, fixed an argparse import typo in commit 6f1a67a , and successfully verified the CLI execution in Google Colab by overriding pip caching with --no-cache-dir . My Next Goal 🎯 Add optional --timeout and --version CLI flags, and configure the package entry point in pyproject.toml"}, {"post_id": 82262, "ts": "2026-10-24T12:38:20Z", "hours": 1.4614, "text": "Devlog #3 Core Checker Refactor, Batch Processing, and First PR Merge Today, I finalized the core URL checking logic and batch processing implementation! I added proper input sanitization, mapped network errors to user-friendly messages, cleaned up temporary interactive test code, and successfully merged Pull Request #6 into main using Squash and Merge. My Next Target 🎯 Accept website URLs as command-line arguments Connect the CLI to the core checker Display availability, HTTP status codes, and response times Handle invalid input and request failures Provide basic usage information and appropriate exit codes"}, {"post_id": 81919, "ts": "2026-10-23T01:55:35Z", "hours": 2.4619, "text": "Devlog #2: Core Checker Logic and Error Handling Today, I focused on building the core check_website() function! The main goal for this phase was to measure website response time accurately in milliseconds and handle connection errors cleanly without crashing. My Next Target 🎯 Testing the core logic inside Google Colab environment Adding support for checking multiple URLs at once Improving the CLI runner output formatting"}, {"post_id": 81706, "ts": "2026-10-22T05:09:24Z", "hours": 0.7953, "text": "Devlog #1: Building the Project’s Structure Foundation Today, this project officially started! The focus of the initial development phase is to build and sort out the basic folders and files inside my GitHub Codespace environment. My Next Target 🎯 Creating and configuring pyproject.toml Defining package metadata and Python version requirements Configuring package discovery using the src/ layout Declaring required runtime dependencies"}]...
|
Title: Website Health Checker by @Saridi | Stardan Title: Website Health Checker by @Saridi | Stardance
Devlogs:
Devlog #1: Building the Project’s Structure Foundation Today, this project officially started! The focus of the initial development phase is to build and sort out the basic folders and files inside my GitHub Codespace environment. My Next Target 🎯 Creating and configuring pyproject.toml Defining package metadata and Python version requirements Configuring package discovery using the src/ layout Declaring required runtime dependencies
Devlog #2: Core Checker Logic and Error Handling Today, I focused on building the core check_website() function! The main goal for this phase was to measure website response time accurately in milliseconds and handle connection errors cleanly without crashing. My Next Target 🎯 Testing the core logic inside Google Colab environment Adding support for checking multiple URLs at once Improving the CLI runner output formatting
Devlog #3 Core Checker Refactor, Batch Processing, and First PR Merge Today, I finalized the core URL checking logic and batch processing implementation! I added proper input sanitization, mapped network errors to user-friendly messages, cleaned up temporary interactive test code, and successfully merged Pull Request #6 into main using Squash and Merge. My Next Target 🎯 Accept website URLs as command-line arguments Connect the CLI to the core checker Display availability, HTTP status codes, and response times Handle invalid input and request failures Provide basic usage information and appropriate exit codes
Devlog #4 Basic CLI Interface Implementation and Setup Today, I implemented the foundational CLI interface for website-health-checker in cli.py to keep the user interface cleanly separated from the core logic! I configured argparse to handle multiple URL inputs, fixed an argparse import typo in commit 6f1a67a , and successfully verified the CLI execution in Google Colab by overriding pip caching with --no-cache-dir . My Next Goal 🎯 Add optional --timeout and --version CLI flags, and configure the package entry point in pyproject.toml
Devlog #5: CLI Interface Implementation, Error Formatting, and Exit Code Standardization Today, I finalized the command-line interface (CLI) for Website Health Checker! I implemented argument parsing for multiple URLs, configurable timeouts, and version flags. I also added structured error output formatting with N/A fallbacks, standardized POSIX-compliant exit codes ( 0 for success, 1 for failures) using system.exit() , validated the exit status behavior in Google Colab subshells, and successfully merged Pull Request #7 into main using Squash and Merge. My Next Target 🎯 Configure the testing framework Test URL validation and successful HTTP responses Test timeout, connection errors, and invalid input Test CLI arguments, output, and exit codes Create a GitHub Actions workflow to run tests automatically
Devlog #6 Core Checker Unit Testing and Test Environment Setup Today, I set up unit testing for Website Health Checker using pytest and unittest.mock ! I implemented test coverage in tests/test_checker.py to validate empty URL handling, successful HTTP status checks, timeout exceptions, connection errors, and batch URL processing. I also fixed case-sensitivity alignment between assertions and return values, successfully verifying all 5 unit tests passing in the Google Colab environment. My Next Target 🎯 Create tests/test_cli.py to test CLI interface behavior, stdout formatting, and POSIX exit codes Edit and refine .github/workflows/ci-test.yml for automated GitHub Actions pipeline Ensure all matrix builds pass on GitHub Actions...
|
1793026034.5197043
|
1793630834.5197043
|
|
39875
|
My very own WebOS by @y19835399432 | Stardance
|
y19835399432
|
4
|
16.0
|
10
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T04:52:46Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Glass Toolbox is a pure front-end glassmorphism toolbox, including image preview, calendar, stopwatch, dice, todo list, unit converter, note, countdown, audio player, password generator, 15×15 Gomoku with simple AI, and personalized interface settings. All data is stored locally.", "repo": "https://github.com/yzk198/zk001", "demo": "https://yzk198.github.io/zk001/"}, {"ship_num": 2, "ts": "2026-09-20T14:07:45Z", "hours": 6.0, "multiplier": 1.37, "payout": 8, "blessing": "neutral", "text": "Short Name: GlassToolbox GlassToolbox is a glassmorphism-style toolbox running locally in the browser with no backend required. The main panel stays displayed, and other tools can be triggered on demand via hyperlinks. Floating windows are draggable. It integrates many practical utilities with local data storage and can be used immediately.", "repo": "https://github.com/yzk198/zk001", "demo": "https://yzk198.github.io/zk001/"}, {"ship_num": 3, "ts": "2026-08-07T06:33:08Z", "hours": 2.0, "multiplier": 1.11, "payout": 2, "blessing": "neutral", "text": "Added dice game, note‑taking and timer features based on the previous generation", "repo": "https://github.com/yzk198/zk001", "demo": "https://yzk198.github.io/zk001/"}, {"ship_num": 4, "ts": "2026-07-31T06:00:36Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This system features a draggable calendar and a photo album clock.", "repo": "https://github.com/yzk198/zk001", "demo": "https://yzk198.github.io/zk001/"}]...
|
[{"post_id": 82885, "ts": "202 [{"post_id": 82885, "ts": "2026-10-26T04:50:26Z", "hours": 5.7831, "text": "Added more personalized settings and the Gomoku game."}, {"post_id": 71215, "ts": "2026-09-20T13:47:16Z", "hours": 6.0769, "text": "1. 🎵 Music Player Support for uploading local audio files Play / pause controls and clickable progress bar Real-time playback time and total duration display Slider volume adjustment 2. 🔑 Password Generator Custom length from 4 to 64 characters Toggle options for uppercase, lowercase, numbers and symbols One-click strong password generation and copy to clipboard 📐 Code Optimizations Code refactoring, full code formatting: split long single lines and add indent hierarchy Extract common window style classes to reduce duplicated CSS code Add a 5-column grid tool launch area at the bottom of the main toolbox"}, {"post_id": 42456, "ts": "2026-08-07T06:28:31Z", "hours": 0.3914, "text": "Added draggable to-do notes"}, {"post_id": 41947, "ts": "2026-08-06T14:06:25Z", "hours": 0.6108, "text": "added a timer and a dice game."}, {"post_id": 40530, "ts": "2026-08-04T03:44:10Z", "hours": 0.4797, "text": "I redesigned the entire system."}, {"post_id": 38129, "ts": "2026-07-31T10:55:30Z", "hours": 0.2961, "text": "Fixed an issue where images failed to display"}, {"post_id": 38029, "ts": "2026-07-31T05:46:31Z", "hours": 0.4364, "text": "Added a draggable calendar."}, {"post_id": 38004, "ts": "2026-07-31T03:47:02Z", "hours": 0.8342, "text": "Have added a time indicator to the top-right corner."}, {"post_id": 35158, "ts": "2026-07-26T12:24:38Z", "hours": 0.3481, "text": "a photo album that lets you save and view images"}]...
|
Title: My very own WebOS by @y19835399432 | Starda Title: My very own WebOS by @y19835399432 | Stardance
Devlogs:
a photo album that lets you save and view images
Have added a time indicator to the top-right corner.
Added a draggable calendar.
Fixed an issue where images failed to display
I redesigned the entire system.
added a timer and a dice game.
Added draggable to-do notes
1. 🎵 Music Player Support for uploading local audio files Play / pause controls and clickable progress bar Real-time playback time and total duration display Slider volume adjustment 2. 🔑 Password Generator Custom length from 4 to 64 characters Toggle options for uppercase, lowercase, numbers and symbols One-click strong password generation and copy to clipboard 📐 Code Optimizations Code refactoring, full code formatting: split long single lines and add indent hierarchy Extract common window style classes to reduce duplicated CSS code Add a 5-column grid tool launch area at the bottom of the main toolbox
Added more personalized settings and the Gomoku game.
Ships:
This system features a draggable calendar and a photo album clock.
Added dice game, note‑taking and timer features based on the previous generation
Short Name: GlassToolbox GlassToolbox is a glassmorphism-style toolbox running locally in the browser with no backend required. The main panel stays displayed, and other tools can be triggered on demand via hyperlinks. Floating windows are draggable. It integrates many practical utilities with local data storage and can be used immediately.
Glass Toolbox is a pure front-end glassmorphism toolbox, including image preview, calendar, stopwatch, dice, todo list, unit converter, note, countdown, audio player, password generator, 15×15 Gomoku with simple AI, and personalized interface settings. All data is stored locally....
|
1792997776.2134168
|
1793084176.2134168
|
|
70563
|
game by @wchia333 | Stardance
|
wchia333
|
0
|
3.67
|
0
|
[]
|
[{"post_id": 82883, "ts": "202 [{"post_id": 82883, "ts": "2026-10-26T04:41:19Z", "hours": 0.8186, "text": "Started Platformer!"}, {"post_id": 82763, "ts": "2026-10-25T19:23:20Z", "hours": 0.3514, "text": "Made some rad assets"}, {"post_id": 82751, "ts": "2026-10-25T18:54:35Z", "hours": 1.6969, "text": "Almost finished with level select screen, timer code is giving me some trouble. Overall pretty fun project!"}, {"post_id": 82489, "ts": "2026-10-24T23:48:42Z", "hours": 0.8019, "text": "Made Title Screen!"}]...
|
Title: game by @wchia333 | Stardance
Devlogs:
Mad Title: game by @wchia333 | Stardance
Devlogs:
Made Title Screen!
Almost finished with level select screen, timer code is giving me some trouble. Overall pretty fun project!
Made some rad assets
Started Platformer!...
|
1793098104.0039535
|
1793702904.0039535
|
|
17999
|
Crypto trading bot by @dhairya_09 | Stardance
|
dhairya_09
|
0
|
2.48
|
0
|
[]
|
[{"post_id": 8288, "ts": "2026 [{"post_id": 8288, "ts": "2026-06-13T19:39:36Z", "hours": 2.4786, "text": "Devlog 01 — Building a Systematic Trading Bot June 13, 2026 The why I’ve always been interested in markets but what drew me to algorithmic trading specifically was the idea that you could remove emotion from the equation entirely and replace it with a testable, falsifiable system. Either the edge exists in the data or it doesn’t. What I built The bot runs on Freqtrade, an open source crypto trading framework, on Binance USDT-M futures. Everything is Dockerised and runs locally on my laptop. The core strategy is a mean-reversion long that enters dip positions in altcoins when BTC is in a confirmed uptrend, using RSI, Bollinger Bands, and an ADX regime filter to avoid trading in choppy conditions. The research process was more rigorous than I expected going in. Every strategy candidate goes through a multi-gate evaluation: full history backtest, out-of-sample holdout, walk-forward validation across multiple windows, per-pair concentration checks, and a fee sensitivity re-run at double the maker rate. Anything that fails a gate gets documented and dropped, not iterated on endlessly. What the numbers look like The current live system backtests at around 715% over 5 years across 39 pairs, with out-of-sample results of roughly 188% CAGR over the most recent 23 months. A Monte Carlo bootstrap of the out-of-sample trade history gives a median 1-year CAGR around 79% with a 2% chance of a losing year. The bot is currently in dry-run, meaning it trades with paper money to validate that live behaviour matches backtest expectations before any real capital goes in. What I learned The biggest lesson was around leverage semantics. Early in the project I discovered that Freqtrade applies stoploss and ROI values to the leveraged profit ratio, not the price move. A stoploss of -7% at 5x leverage is actually a -1.4% price move. Every stop in the original version of the bot was sized wrong because of this. Catching it and rebuilding the risk model from scratch was the most important thing I did on this project. The second lesson was that hyperopt, the built-in parameter optimisation tool, actively makes things worse if used before you have a real edge. I ran a 150-epoch optimisation that produced a strategy 4x worse out-of-sample than the hand-tuned defaults. Now I only run it after a candidate passes all evaluation gates on its original parameters. What’s next Observing the dry-run for 4 to 6 weeks and comparing live trade distribution against backtest expectations before considering real capital. Also researching a funding-rate carry strategy as a second uncorrelated bot."}]...
|
Title: Crypto trading bot by @dhairya_09 | Stardan Title: Crypto trading bot by @dhairya_09 | Stardance
Devlogs:
Devlog 01 — Building a Systematic Trading Bot June 13, 2026 The why I’ve always been interested in markets but what drew me to algorithmic trading specifically was the idea that you could remove emotion from the equation entirely and replace it with a testable, falsifiable system. Either the edge exists in the data or it doesn’t. What I built The bot runs on Freqtrade, an open source crypto trading framework, on Binance USDT-M futures. Everything is Dockerised and runs locally on my laptop. The core strategy is a mean-reversion long that enters dip positions in altcoins when BTC is in a confirmed uptrend, using RSI, Bollinger Bands, and an ADX regime filter to avoid trading in choppy conditions. The research process was more rigorous than I expected going in. Every strategy candidate goes through a multi-gate evaluation: full history backtest, out-of-sample holdout, walk-forward validation across multiple windows, per-pair concentration checks, and a fee sensitivity re-run at double the maker rate. Anything that fails a gate gets documented and dropped, not iterated on endlessly. What the numbers look like The current live system backtests at around 715% over 5 years across 39 pairs, with out-of-sample results of roughly 188% CAGR over the most recent 23 months. A Monte Carlo bootstrap of the out-of-sample trade history gives a median 1-year CAGR around 79% with a 2% chance of a losing year. The bot is currently in dry-run, meaning it trades with paper money to validate that live behaviour matches backtest expectations before any real capital goes in. What I learned The biggest lesson was around leverage semantics. Early in the project I discovered that Freqtrade applies stoploss and ROI values to the leveraged profit ratio, not the price move. A stoploss of -7% at 5x leverage is actually a -1.4% price move. Every stop in the original version of the bot was sized wrong because of this. Catching it and rebuilding the risk model from scratch was the most important thing I did on this project. The second lesson was that hyperopt, the built-in parameter optimisation tool, actively makes things worse if used before you have a real edge. I ran a 150-epoch optimisation that produced a strategy 4x worse out-of-sample than the hand-tuned defaults. Now I only run it after a candidate passes all evaluation gates on its original parameters. What’s next Observing the dry-run for 4 to 6 weeks and comparing live trade distribution against backtest expectations before considering real capital. Also researching a funding-rate carry strategy as a second uncorrelated bot....
|
1792659234.168202
|
1793264034.168202
|
|
61558
|
ButterOS by @butterlabs | Stardance
|
butterlabs
|
2
|
24.8
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T01:45:18Z", "hours": 5.0, "multiplier": 4.24, "payout": 20, "blessing": "neutral", "text": "What did I make? Well I added quite a lot this update, including a cloud based music app, working terminal with a file system, and an app with info about the project! What are some challenges? Mainly the file system, it took a lot of time figuring out how caching works. Overall a solid ship with the terminal being my favorite part!", "repo": "https://github.com/Butterific/ButterOS", "demo": "https://butteros.butterlabs.app/"}, {"ship_num": 2, "ts": "2026-09-17T17:11:20Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What Did I make I made ButterOS, a lightweight easy to use opertating system powered by html, css, and js. Apps This WebOS currently features 2 app: Calculator - Calculates stuff SimplyEpic - Google search but no ai and only searches academic sites (3 to be exact) Plans for the future Add support with Streamables inorder to build a cloud based music app using stream codes. Remake the toolbar from scratch because its not much different from the guide add support for connecting to other butterlabs services What I struggled with Sizing.", "repo": "https://github.com/Butterific/ButterOS", "demo": "https://butteros.butterlabs.app/"}]...
|
[{"post_id": 82877, "ts": "202 [{"post_id": 82877, "ts": "2026-10-26T04:12:40Z", "hours": 2.0661, "text": "Devlog #10 not major progress really, just some minor css upgrades, also added a lot of new settings (look at Images) enable eurda is a dev tool that allows inspect element without needing to use f12 for mobile yea not that much really but look at commits for more uncommited changes (between oct 19th and oct 25th 2026)"}, {"post_id": 80542, "ts": "2026-10-18T04:02:03Z", "hours": 3.5881, "text": "Devlog #9 MAJOR PROGRESS I made MAJOR progress on the operating system! Including a huge overall of the ui to a gold/rosegold style, you can view the old vs new here Old ui https://a430d5e1.butteros.pages.dev/ new ui https://butteros.blrc.me/ also added a new settings app and games app!"}, {"post_id": 79365, "ts": "2026-10-13T17:34:32Z", "hours": 2.2164, "text": "Devlog #8 Animated background Startup animation i did spend alot of time coding the background with the help of ai because it is just a html script rendered as a video, the old html for the video is in one of the commits recently"}, {"post_id": 77049, "ts": "2026-10-05T14:25:01Z", "hours": 2.9272, "text": "Devlog #7 I mainly fixed bugs during these 3 hours from the past ship some of these bugs include fixing scrolling in SimplyEpic opening new tabs from SimplyEpic in a new tab instead of a popup fixed the hidden c in the calculator window for smaller window sizes ADDED A SAVED TRACK LIST TO MUSIC (FINNIALY) A lot of the fixes were added with the help of ai (cache music list and hidden c due to it being this out of my current skill level) Future plans WIndow closing and opening animations Higher quality bg add better styling to the notes app (unfinished) (ignored the blocked, its just my school mac)"}, {"post_id": 72923, "ts": "2026-09-24T01:42:39Z", "hours": 2.1103, "text": "Devlog #6 I made a working command line with a cached file system!!!"}, {"post_id": 71911, "ts": "2026-09-21T19:12:23Z", "hours": 0.3869, "text": "Devlog #5 I added a working info app! not that much for this log"}, {"post_id": 71597, "ts": "2026-09-21T03:53:50Z", "hours": 2.1403, "text": "Devlog #4 I ADD A WORKING CLOUD BASED MUSIC APP todo: make some songs just for butteros cuz im to lazy to make them (I WILL use ai for tracks idk)"}, {"post_id": 69714, "ts": "2026-09-17T17:07:20Z", "hours": 0.5283, "text": "Devlog #3 finished writing the readme and adding a gallery, Im gonna ship this soon"}, {"post_id": 69258, "ts": "2026-09-16T18:05:05Z", "hours": 4.2694, "text": "Devlog #2 Major progress once again Got 2 working apps - Calculator and SimplyEpic finished the welcome screen and desktop got a working background"}, {"post_id": 67596, "ts": "2026-09-13T18:58:00Z", "hours": 4.0636, "text": "Devlog #1 Major progress regarding windows! i got the main window system and welcome message setup. Also got a working topbar!"}]...
|
Title: ButterOS by @butterlabs | Stardance
Devlog Title: ButterOS by @butterlabs | Stardance
Devlogs:
Devlog #1 Major progress regarding windows! i got the main window system and welcome message setup. Also got a working topbar!
Devlog #2 Major progress once again Got 2 working apps - Calculator and SimplyEpic finished the welcome screen and desktop got a working background
Devlog #3 finished writing the readme and adding a gallery, Im gonna ship this soon
Devlog #4 I ADD A WORKING CLOUD BASED MUSIC APP todo: make some songs just for butteros cuz im to lazy to make them (I WILL use ai for tracks idk)
Devlog #5 I added a working info app! not that much for this log
Devlog #6 I made a working command line with a cached file system!!!
Devlog #7 I mainly fixed bugs during these 3 hours from the past ship some of these bugs include fixing scrolling in SimplyEpic opening new tabs from SimplyEpic in a new tab instead of a popup fixed the hidden c in the calculator window for smaller window sizes ADDED A SAVED TRACK LIST TO MUSIC (FINNIALY) A lot of the fixes were added with the help of ai (cache music list and hidden c due to it being this out of my current skill level) Future plans WIndow closing and opening animations Higher quality bg add better styling to the notes app (unfinished) (ignored the blocked, its just my school mac)
Devlog #8 Animated background Startup animation i did spend alot of time coding the background with the help of ai because it is just a html script rendered as a video, the old html for the video is in one of the commits recently
Devlog #9 MAJOR PROGRESS I made MAJOR progress on the operating system! Including a huge overall of the ui to a gold/rosegold style, you can view the old vs new here Old ui https://a430d5e1.butteros.pages.dev/ new ui https://butteros.blrc.me/ also added a new settings app and games app!
Devlog #10 not major progress really, just some minor css upgrades, also added a lot of new settings (look at Images) enable eurda is a dev tool that allows inspect element without needing to use f12 for mobile yea not that much really but look at commits for more uncommited changes (between oct 19th and oct 25th 2026)
Ships:
What Did I make I made ButterOS, a lightweight easy to use opertating system powered by html, css, and js. Apps This WebOS currently features 2 app: Calculator - Calculates stuff SimplyEpic - Google search but no ai and only searches academic sites (3 to be exact) Plans for the future Add support with Streamables inorder to build a cloud based music app using stream codes. Remake the toolbar from scratch because its not much different from the guide add support for connecting to other butterlabs services What I struggled with Sizing.
What did I make? Well I added quite a lot this update, including a cloud based music app, working terminal with a file system, and an app with info about the project! What are some challenges? Mainly the file system, it took a lot of time figuring out how caching works. Overall a solid ship with the terminal being my favorite part!...
|
1793055360.4681692
|
1793141760.4681692
|
|
54394
|
Dynamic New Tab Page by @Harpaavan108 | Stardance
|
Harpaavan108
|
1
|
20.48
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-13T04:07:00Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Dynamic New Tab Page In this project, I am making a dynamic new tab page, which will change based on the time of the day. Currently, I have made a new tab page with a title text and 4 shortcuts that I frequently use. I have also added an animated gradient background. Depending on the time of day, the background and text color will change color. View the project here: https://harpaavan-s.github.io/new-tab/ Tech Stack Built with: HTML, CSS, JS HTML was used to build the basic structure of the page, such as writing the title text and shortcuts. CSS was used to style the page, such as positioning the text and shortcuts, as well as animating the gradient background to loop. I also created the classes for the different times of the day. JS was used to detect the time of day and add the appropriate class to the body of the document. Features In the morning from 6 - 10 AM, the gradient will be a sunset color and the text will be light red. In the afternoon from 11 AM - 4 PM, the gradient will be a sky blue color and the text will be dark blue. In the evening from 5 - 9 PM, the gradient will be a dark purple color and the text will be light purple. During the night from 10 PM - 5 AM, the gradient will be navy and the text will be light gray. I will be adding more features to this later in the future, however this what I have for the initial ship. Acknowledgements There is no AI usage in this project. Enjoy!!!", "repo": "https://github.com/Harpaavan-S/new-tab", "demo": "https://harpaavan-s.github.io/new-tab/"}]...
|
[{"post_id": 82875, "ts": "202 [{"post_id": 82875, "ts": "2026-10-26T03:52:37Z", "hours": 5.4833, "text": "Devlog #7 This session I mainly worked on modeling the house, which also took a bunch of time, but it looks super cool in the end. Not much new. I am officially done the house, so I hope I can move onto the rest of the castle. Hopefully I can finish this before StarDance ends!!! Current Progress I really made my house thing look a lot more realistic, I first started with some small towers around it, then I worked on the top and the front, and I moved onto the courtyard thing. There were a lot of small details to add, but I think I have gotten the hang of all the tools in Blender. Its slow but its moving forward. Next Steps Next I will work on another bigger courtyard thing on the other side of the castle. This will also have a bunch of detail, but I hope to finish it quick, like in 2 hours MAX. I really need to start working faster, so yeah. Below you can see a picture of the finished house beside the tower."}, {"post_id": 82524, "ts": "2026-10-25T03:41:50Z", "hours": 4.6514, "text": "Devlog #6 This session was mainly just working on the big tower part of the 3D castle. It took me a lot of time to do the tiny details, but the tower is finally done, and I will start to work on the next things. It is a very time consuming process trying to follow along with the tutorial, and I hope I can finish this before stardance ends, because I want to integrate it into my website as well. Current Progress I finally got the tower done. Because the model is isometric, like everything has to be aligned with the grooves, and I learned how to like duplicate something in a circle to just quickly rotate it, so that was convenient. I had A LOT of trouble with global and local orientations and how to scale and move things along their global, local, and normal axises. But I think I’ve got the hang of it. Its a slow and tedious process, but I think I will get it done. Next Steps The next steps are to work on the decoration for the the surrounding towers and the like houses things, and just make those look as pretty as the tower. I will first completely finish with the model before moving onto shading and coloring it. Below is an image of the tower in Blender"}, {"post_id": 80811, "ts": "2026-10-18T21:02:35Z", "hours": 3.1964, "text": "Devlog #5 It has been a while since I posted my last devlog, but I have come back with a fresh vision of what I want to make. So I wanted to incorporate Three.js into my project, but I do not now a lot of Three.js. However, I discovered that I could make the models in Blender and import them from there into Three.js, which is a lot easier. So I have started with modeling in Blender, and I also figured out how to use Lapse. Current Progress I wanted to go with a fantasy theme for my new tab page, but I also wanted it to be isometric, because I really like how isometric models look, so I found a timelapse video of someone making one, and I am trying to follow that, but it IS HARD, like I am watching the video and half speed just to go along with the video. But I really like the model, so I will push through and try to make. It is based off of the Hogwarts castle, so I am trying to make that. Next Steps The next couple of devlogs will just be me making the castle model. I will first start with the outline, and then move onto shading. I am super excited about how this will turn out, but I hope I can finish it before the deadline. Below is an image of the starting outline"}, {"post_id": 69974, "ts": "2026-09-18T04:51:38Z", "hours": 1.1506, "text": "Devlog #4 So I tried to ship my project, but I kept getting rejected on the basis that it is AI generated, when I have used 0 AI. I have no idea where they are finding AI use, but I decided to disconnect it from the mission because I was not going to waste my time just for 60 stardust. So a lot of time was just spent tinkering around with code seeing if they would accept it, but no luck, so I’m just going to continue on, add some new features, and hope that that gets accepted. Current Progress There was not much progress during this block, it was mainly just adjusting code or typing small lines. I got feedback saying that the CSS looked AI generated, so I should change that. But as I started to, I just felt so sad to see the progress I made go away, so I decided to just keep working on this and continue from there. I added one more link as a shortcut and that is for gmail. Next Steps Now its time to really take this project to the max. One thing that I really want to tinker around with is Three.js, and adding interactive 3D models into my webpage. It doesn’t even have to be interactive, it just has to have a 3D effect. I am thinking a space scene. So that is the next goal. I am still thinking of some ideas. But I am done with the mission, and I didn’t use any AI, so I am just going to continue with this."}, {"post_id": 67076, "ts": "2026-09-13T03:53:18Z", "hours": 2.7406, "text": "Devlog #3 I am ready to ship my first version of this project. I have added an animated gradient background to the webpage. I have also added the dynamic features. So the gradient color and the text color will change color based on the time of day. I had to use just a bit of JS for this, but it was easy to figure out as JS has the ability to pull the time by itself. Current Progress I first worked on making the looping gradient. I wanted it to be at -31 degrees, but the looping was not working. I tried a lot of things, like increasing the size of the background, the keyframes of the animation, the width of the keyframes, and reversing the gradient colors. But nothing worked, so I decided to keep it just going horizontally as I had done that before and was able to quickly make. I then moved to JS, in which I made a const for the hour. I discovered that JS can automatically pull the time of day from your device, so that was super convenient. I am actually learning JS in school, so I was able to add classes to the body depending on the time of day using if and else if statements. So it wasn’t too hard, and I got a really nice result out of it. Next Steps I am planning to ship next just so I can complete this mission. I already took way too many hours (only for 60 stardust). But I will for sure keep adding to this project. I want to connect it to my school schedule so that I can track my classes. I also want to include some productivity widgets, so I can remember things and get some stuff done in my life. But I will ship for now and continue working on it later. Below you can see pictures of all the gradient backgrounds. Challenge: try to guess what time of day they are each for."}, {"post_id": 66746, "ts": "2026-09-12T17:15:12Z", "hours": 1.8125, "text": "Devlog #2 During this block, I spent some time styling the website in CSS. I wanted it to start looking a bit more like a new tab page before I started in JS. I positioned my text in the middle, and made my shortcuts look nicer. Basically, it was a major styling block. Current Progress For now, I decided to keep only a title and some shortcuts just to keep the design simple. I want to then move onto JS to implement a dynamic feature into my website which will change with the time. So the goal is a minimalist style for now. The styling overall was not too hard. I had already arranged by classes nicely in HTML, so I had to move them around. I finally learned the secrets of the display: flex; rule, and how to use it to center things properly in CSS. So I got that working and then styled my icons. I applied some neat hover effects to them. At first I was planning to have a label text to label the shortcuts, but I already knew what they all were, so I decided to keep the text out, and if I wanted to I could add it again later. Next Steps The next thing that I want to do is make the background a moving gradient, but not too fast or bright, because that will be distracting. The main thing I want to add is a dynamic aspect. So I want to make it so that the background color will change with the time of day. Pretty basic, but that’s all I want to do before the inital ship. Below you can see a image of the page after styling."}, {"post_id": 65998, "ts": "2026-09-11T14:45:16Z", "hours": 1.1072, "text": "Devlog #1 I am officially starting my next project! In this project, I am planning to make a dynamic page that will show up when I open a new tab, replacing the regular GOOGLE one. For the first iteration, I am planning on making a simple page that has a large greeting text on it, but it’s background color will change depending on the time of day. I will probably change some stuff after that, but that’s the plan right now for my first ship so I can complete the mission. Current Progress So I started with the bare minimum. Because the site for now will not have much content on it, the HTML was pretty simple. I added a h1 tag with my title in it, and I decided that I will add buttons as shortcuts for some links that I use everyday. So I just added some icons that are linked to the sites. I also started with some super basic CSS, like just reseting margins, and starting to change the background color. It looks kinda bad right now, but I will make it look better. Next Steps My next steps are just to style it so it actually looks like a new tab page. I am not planning to add a search bar in there, because I don’t use the middle search bar, I only use the one on top, so I don’t want to take up unneccessary space. I want to finish styling in CSS before moving onto JS to set the dynamic changes. Below is a image of the very rough draft with the icons, labels, and title. (It looks bad right now, but it will look better in the next devlog.)"}]...
|
Title: Dynamic New Tab Page by @Harpaavan108 | Sta Title: Dynamic New Tab Page by @Harpaavan108 | Stardance
Devlogs:
Devlog #1 I am officially starting my next project! In this project, I am planning to make a dynamic page that will show up when I open a new tab, replacing the regular GOOGLE one. For the first iteration, I am planning on making a simple page that has a large greeting text on it, but it’s background color will change depending on the time of day. I will probably change some stuff after that, but that’s the plan right now for my first ship so I can complete the mission. Current Progress So I started with the bare minimum. Because the site for now will not have much content on it, the HTML was pretty simple. I added a h1 tag with my title in it, and I decided that I will add buttons as shortcuts for some links that I use everyday. So I just added some icons that are linked to the sites. I also started with some super basic CSS, like just reseting margins, and starting to change the background color. It looks kinda bad right now, but I will make it look better. Next Steps My next steps are just to style it so it actually looks like a new tab page. I am not planning to add a search bar in there, because I don’t use the middle search bar, I only use the one on top, so I don’t want to take up unneccessary space. I want to finish styling in CSS before moving onto JS to set the dynamic changes. Below is a image of the very rough draft with the icons, labels, and title. (It looks bad right now, but it will look better in the next devlog.)
Devlog #2 During this block, I spent some time styling the website in CSS. I wanted it to start looking a bit more like a new tab page before I started in JS. I positioned my text in the middle, and made my shortcuts look nicer. Basically, it was a major styling block. Current Progress For now, I decided to keep only a title and some shortcuts just to keep the design simple. I want to then move onto JS to implement a dynamic feature into my website which will change with the time. So the goal is a minimalist style for now. The styling overall was not too hard. I had already arranged by classes nicely in HTML, so I had to move them around. I finally learned the secrets of the display: flex; rule, and how to use it to center things properly in CSS. So I got that working and then styled my icons. I applied some neat hover effects to them. At first I was planning to have a label text to label the shortcuts, but I already knew what they all were, so I decided to keep the text out, and if I wanted to I could add it again later. Next Steps The next thing that I want to do is make the background a moving gradient, but not too fast or bright, because that will be distracting. The main thing I want to add is a dynamic aspect. So I want to make it so that the background color will change with the time of day. Pretty basic, but that’s all I want to do before the inital ship. Below you can see a image of the page after styling.
Devlog #3 I am ready to ship my first version of this project. I have added an animated gradient background to the webpage. I have also added the dynamic features. So the gradient color and the text color will change color based on the time of day. I had to use just a bit of JS for this, but it was easy to figure out as JS has the ability to pull the time by itself. Current Progress I first worked on making the looping gradient. I wanted it to be at -31 degrees, but the looping was not working. I tried a lot of things, like increasing the size of the background, the keyframes of the animation, the width of the keyframes, and reversing the gradient colors. But nothing worked, so I decided to keep it just going horizontally as I had done that before and was able to quickly make. I then moved to JS, in which I made a const for the hour. I discovered that JS can automatically pull the time of day from your device, so that was super convenient. I am actually learning JS in school, so I was able to add classes to the body depending on the time of day using if and else if statements. So it wasn’t too hard, and I got a really nice result out of it. Next Steps I am planning to ship next just so I can complete this mission. I already took way too many hours (only for 60 stardust). But I will for sure keep adding to this project. I want to connect it to my school schedule so that I can track my classes. I also want to include some productivity widgets, so I can remember things and get some stuff done in my life. But I will ship for now and continue working on it later. Below you can see pictures of all the gradient backgrounds. Challenge: try to guess what time of day they are each for.
Devlog #4 So I tried to ship my project, but I kept getting rejected on the basis that it is AI generated, when I have used 0 AI. I have no idea where they are finding AI use, but I decided to disconnect it from the mission because I was not going to waste my time just for 60 stardust. So a lot of time was just spent tinkering around with code seeing if they would accept it, but no luck, so I’m just going to continue on, add some new features, and hope that that gets accepted. Current Progress There was not much progress during this block, it was mainly just adjusting code or typing small lines. I got feedback saying that the CSS looked AI generated, so I should change that. But as I started to, I just felt so sad to see the progress I made go away, so I decided to just keep working on this and continue from there. I added one more link as a shortcut and that is for gmail. Next Steps Now its time to really take this project to the max. One thing that I really want to tinker around with is Three.js, and adding interactive 3D models into my webpage. It doesn’t even have to be interactive, it just has to have a 3D effect. I am thinking a space scene. So that is the next goal. I am still thinking of some ideas. But I am done with the mission, and I didn’t use any AI, so I am just going to continue with this.
Devlog #5 It has been a while since I posted my last devlog, but I have come back with a fresh vision of what I want to make. So I wanted to incorporate Three.js into my project, but I do not now a lot of Three.js. However, I discovered that I could make the models in Blender and import them from there into Three.js, which is a lot easier. So I have started with modeling in Blender, and I also figured out how to use Lapse. Current Progress I wanted to go with a fantasy theme for my new tab page, but I also wanted it to be isometric, because I really like how isometric models look, so I found a timelapse video of someone making one, and I am trying to follow that, but it IS HARD, like I am watching the video and half speed just to go along with the video. But I really like the model, so I will push through and try to make. It is based off of the Hogwarts castle, so I am trying to make that. Next Steps The next couple of devlogs will just be me making the castle model. I will first start with the outline, and then move onto shading. I am super excited about how this will turn out, but I hope I can finish it before the deadline. Below is an image of the starting outline
Devlog #6 This session was mainly just working on the big tower part of the 3D castle. It took me a lot of time to do the tiny details, but the tower is finally done, and I will start to work on the next things. It is a very time consuming process trying to follow along with the tutorial, and I hope I can finish this before stardance ends, because I want to integrate it into my website as well. Current Progress I finally got the tower done. Because the model is isometric, like everything has to be aligned with the grooves, and I learned how to like duplicate something in a circle to just quickly rotate it, so that was convenient. I had A LOT of trouble with global and local orientations and how to scale and move things along their global, local, and normal axises. But I think I’ve got the hang of it. Its a slow and tedious process, but I think I will get it done. Next Steps The next steps are to work on the decoration for the the surrounding towers and the like houses things, and just make those look as pretty as the tower. I will first completely finish with the model before moving onto shading and coloring it. Below is an image of the tower in Blender
Devlog #7 This session I mainly worked on modeling the house, which also took a bunch of time, but it looks super cool in the end. Not much new. I am officially done the house, so I hope I can move onto the rest of the castle. Hopefully I can finish this before StarDance ends!!! Current Progress I really made my house thing look a lot more realistic, I first started with some small towers around it, then I worked on the top and the front, and I moved onto the courtyard thing. There were a lot of small details to add, but I think I have gotten the hang of all the tools in Blender. Its slow but its moving forward. Next Steps Next I will work on another bigger courtyard thing on the other side of the castle. This will also have a bunch of detail, but I hope to finish it quick, like in 2 hours MAX. I really need to start working faster, so yeah. Below you can see a picture of the finished house beside the tower.
Ships:
Dynamic New Tab Page In this project, I am making a dynamic new tab page, which will change based on the time of the day. Currently, I have made a new tab page with a title text and 4 shortcuts that I frequently use. I have also added an animated gradient background. Depending on the time of day, the background and text color will change color. View the project here: https://harpaavan-s.github.io/new-tab/ Tech Stack Built with: HTML, CSS, JS HTML was used to build the basic structure of the page, such as writing the title text and shortcuts. CSS was used to style the page, such as positioning the text and shortcuts, as well as animating the gradient background to loop. I also created the classes for the different times of the day. JS was used to detect the time of day and add the appropriate class to the body of the document. Features In the morning from 6 - 10 AM, the gradient will be a sunset color and the text will be light red. In the afternoon from 11 AM - 4 PM, the gradient will be a sky blue color and the text will be dark blue. In the evening from 5 - 9 PM, the gradient will be a dark purple color and the text will be light purple. During the night from 10 PM - 5 AM, the gradient will be navy and the text will be light gray. I will be adding more features to this later in the future, however this what I have for the initial ship. Acknowledgements There is no AI usage in this project. Enjoy!!!...
|
1793008184.4610698
|
1793094584.4610698
|
|
71419
|
Nexus by @elias | Stardance
|
elias
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T03:45:09Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Wanted a way to actually find things on I2P, so I built the crawler, the index and the search UI for it, plus a dashboard for the i2pd router behind it. For months it only ran in Docker on a Linux host, which meant I could never show it to anyone. Tonight I got the whole thing running natively on my Mac, which is why there is finally a demo. The index in the video is the sample corpus rather than a full crawl, because a real crawl of I2P takes hours.", "repo": "https://github.com/tundra-node/nexus", "demo": "https://files.catbox.moe/urwmig.mp4"}]...
|
[{"post_id": 82869, "ts": "202 [{"post_id": 82869, "ts": "2026-10-26T03:38:08Z", "hours": 9.3975, "text": "I2P has thousands of sites and no good way to find them. Addresses are 52-character base32 strings. There is no DNS. The few search engines that exist crawl on their own schedule and hand you a title and a link. When a site goes dark, whatever it had is gone. Nexus is my attempt at the discovery part. It is one repo with two apps that share a single i2pd router. Abyssal The public side. A crawler fetches eepsites, stores what it finds, and builds a full text index on top. The index is SQLite FTS5 with porter stemming, so searching tunnels also matches pages that say tunnel . Results can be narrowed by language and by site type (directory, docs, forum, stats, service). There is a browse view too, for when you do not have a query and just want to see what exists. A graph view is built from links the crawler actually found, which is how you run into sites that no directory lists. Every capture also gets written to disk, so there is an archive of old versions. If a site disappears you can still open what it looked like the last time it was crawled. The crawler has controls because crawling I2P politely matters. Up to 20 workers sharing one proxy connection, a delay between requests per worker, a page limit, a depth limit, and pause, resume or rerun on a job. A scheduler re-crawls sites on an interval so the index does not rot. Prism The private side, a dashboard for the router you are running. Peers, tunnel counts, bandwidth, tunnel build success rate and uptime, plus a tunnel list so you can see the state of each one. There is a browser tab that proxies .i2p pages through your own router and rewrites links so clicking around stays inside the proxy, and an address book manager for hosts.txt subscriptions. That whole side sits behind an api key header, because it controls your router. How it is put together Every service is FastAPI. The index and the archive metadata live in SQLite. Both frontends are React with Vite and Tailwind. One nginx container is the entry point, and Docker Compose brings up i2pd, the crawler, both frontends and the proxy. Where it is at 23 commits, all from June 2026. The Docker stack runs on a Linux host, which was the only supported way to run it, because i2pd needs host networking to publish its LeaseSet. I have been working on running it natively since then, since a project you cannot run on your own machine is annoying to improve. Abyssal now starts outside Docker against a local SQLite file and a Homebrew i2pd, and both frontends build and talk to it. That gets its own devlog. I still want a read-only public mirror of the index, per-site crawl delays so the crawler is easier on small hosts, and some way to handle old captures being reused for bad stuff."}]...
|
Title: Nexus by @elias | Stardance
Devlogs:
I2P h Title: Nexus by @elias | Stardance
Devlogs:
I2P has thousands of sites and no good way to find them. Addresses are 52-character base32 strings. There is no DNS. The few search engines that exist crawl on their own schedule and hand you a title and a link. When a site goes dark, whatever it had is gone. Nexus is my attempt at the discovery part. It is one repo with two apps that share a single i2pd router. Abyssal The public side. A crawler fetches eepsites, stores what it finds, and builds a full text index on top. The index is SQLite FTS5 with porter stemming, so searching tunnels also matches pages that say tunnel . Results can be narrowed by language and by site type (directory, docs, forum, stats, service). There is a browse view too, for when you do not have a query and just want to see what exists. A graph view is built from links the crawler actually found, which is how you run into sites that no directory lists. Every capture also gets written to disk, so there is an archive of old versions. If a site disappears you can still open what it looked like the last time it was crawled. The crawler has controls because crawling I2P politely matters. Up to 20 workers sharing one proxy connection, a delay between requests per worker, a page limit, a depth limit, and pause, resume or rerun on a job. A scheduler re-crawls sites on an interval so the index does not rot. Prism The private side, a dashboard for the router you are running. Peers, tunnel counts, bandwidth, tunnel build success rate and uptime, plus a tunnel list so you can see the state of each one. There is a browser tab that proxies .i2p pages through your own router and rewrites links so clicking around stays inside the proxy, and an address book manager for hosts.txt subscriptions. That whole side sits behind an api key header, because it controls your router. How it is put together Every service is FastAPI. The index and the archive metadata live in SQLite. Both frontends are React with Vite and Tailwind. One nginx container is the entry point, and Docker Compose brings up i2pd, the crawler, both frontends and the proxy. Where it is at 23 commits, all from June 2026. The Docker stack runs on a Linux host, which was the only supported way to run it, because i2pd needs host networking to publish its LeaseSet. I have been working on running it natively since then, since a project you cannot run on your own machine is annoying to improve. Abyssal now starts outside Docker against a local SQLite file and a Homebrew i2pd, and both frontends build and talk to it. That gets its own devlog. I still want a read-only public mirror of the index, per-site crawl delays so the crawler is easier on small hosts, and some way to handle old captures being reused for bad stuff.
Ships:
Wanted a way to actually find things on I2P, so I built the crawler, the index and the search UI for it, plus a dashboard for the i2pd router behind it. For months it only ran in Docker on a Linux host, which meant I could never show it to anyone. Tonight I got the whole thing running natively on my Mac, which is why there is finally a demo. The index in the video is the sample corpus rather than a full crawl, because a real crawl of I2P takes hours....
|
1792986428.9853985
|
1793072828.9853985
|
|
70262
|
Baguette SlackBot by @Mk1A | Stardance
|
Mk1A
|
2
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T03:52:32Z", "hours": 3.0, "multiplier": 6.15, "payout": 0, "blessing": "neutral", "text": "Baguette Slackbot, A welcomer bot for my personal channel, which can perform the following tasks- Commands- /baguette-ping : Pings the bot for it’s latency /baguette-help : Lists all commands by the @baguette slack bot. /baguette-dog : Fetches an image of a dawg from the dog.ceo dog API! /baguette-flip : Randomly flips Heads or Tails. /baguette-quote : Fetches the quote of the day from ZEN QUOTES zen! /baguette-customs-incident : Tells the lore behind the customs… (in_channel)(joke_command) EVENT Subscriptions– Checks for user entry into my channel ONLY “Mk1A-NotDefined” and sends a welcome message. 🔒 Replies with “Did someone order a FRESH BAGUETTE” to a message containing “Mk1A” and CCs me to the response message, in_channel. I would definitely update this later on but I have more projects to get to so I guess this is it! :) Hope to keep learning", "repo": "https://github.com/Mk1A-Falcon/Baguette", "demo": "https://hackclub.enterprise.slack.com/archives/C0BMFNBG1FU"}, {"ship_num": 2, "ts": "2026-10-18T13:47:41Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slackbot under the “Make a Slack Bot” mission and completed it around 1.3 hours! Currently these three commands work- /baguette-ping : Pings the bot for it’s latency /baguette-help: Lists all availaible commands for the @baguette slack bot /baguette-dog : Gives a picture of a dawg I have a lot of more commands and api features in mind for this and hope to make it a better welcoming bot :)", "repo": "https://github.com/Mk1A-Falcon/Baguette", "demo": "https://hackclub.enterprise.slack.com/archives/C0BMFNBG1FU"}]...
|
[{"post_id": 82867, "ts": "202 [{"post_id": 82867, "ts": "2026-10-26T03:35:02Z", "hours": 0.8525, "text": "After 51 minutes of fixing the readme, making the welcoming feature specific to only my channel so it doesn’t lead to abuse, and debugging this last event… DEVLOG 7 I would like to leave this as the last devlog as I want to focus on more stuff now! Added new message_detection capabilities which trigger on any sentence containing the keyword “Mk1A”(not case sensitive) Fixed the welcoming feature to only my channel #mk1a-notdefined 🔒 Added local setup instructions + Updated Readme Also added a .env.example file for reference! :) Honestly, I did take some help from Gemini for debugging but that was cause I used “message:” instead of “text:” in the response block Anyways, It was about time it was over!"}, {"post_id": 82660, "ts": "2026-10-25T15:19:58Z", "hours": 0.545, "text": "DEVLOG 6 ADDED CHANNEL WELCOMING FEATURES FINALLY! 🥹 Learned a lot of stuff in this one including events! Applied member_joined_channel event to the list and had to reinstall the app to workspace. Commands use app.command() but events use app.event() and differ a lot from commands (yes no shi sherlock) Realized user or channel referencing is done via <${event.user}> or <$user_id> Forgot to add this to the readme Anyways, thinking of adding basic responses like those “automated workspace” ones"}, {"post_id": 82563, "ts": "2026-10-25T08:06:30Z", "hours": 0.5861, "text": "DEVLOG 5 Ok so added one more command which pulls the quote of the day from ZENQUOTES zen Added /baguette-quote Fixed the /baguette-help command (It said nasa api instead ) Need to start working on welcoming capabilities soon. Also fixed a few more stuff? But I forgor"}, {"post_id": 81066, "ts": "2026-10-19T18:57:50Z", "hours": 0.3322, "text": "DEVLOG 4 ok bro who gave me free will Added another Joke Command “/baguette-customs-incident” which Ig tells about the lore of my customs Fixed the Readme (Still have to add local setup instructions) Researched into channel-ping requirements and realized it can get messy :( So gonna just make it so I the person who created the channel can do it Anyways, just hoping for this bot to be reviewed fast"}, {"post_id": 80923, "ts": "2026-10-19T08:05:18Z", "hours": 0.5061, "text": "DEVLOG 3 I am crine cause the bot’s ping name is still @Mk1A-welcomer bot but it’s registered as @baguette Added a new command “/baguette-flip” using Math.random() which gives a value between 0 and 1(floats included). Fixed a lot of bugs cause apparently I used “:” instead of “;” (python user) Learned that “response_type” can be used to send to channel too, instead of just the user! Gonna add channel ping capabilities soon and then move on to make it actually welcome people :>"}, {"post_id": 80674, "ts": "2026-10-18T13:40:15Z", "hours": 0.6372, "text": "Devlog 2 Now the following commands work as of now- /baguette-ping : Checks the Latency of the bot. /baguette-dog : Pulls a random image of a dawg from dog.ceo /baguette-help : Lists all availaible commands of the @baguette slack bot. Alr So I have a lot planned in mind for this one, probably gonna put massive updates into this. Gonna add the /baguette-welcome feature and try to make it automated as well. Gonna finish the flip one as well and more api features. Gonna ship after this one"}, {"post_id": 80612, "ts": "2026-10-18T09:32:23Z", "hours": 0.5781, "text": "Alr, I guess its stardancing time DEVLOG 1 Alr So learnt what “Socket Mode” for bots meant and configured the slack side settings. Apparently now it requires approval from the workspace before adding it (got it in like 2 secs but still ) Setup the basic structure and nodejs dependencies. Added commands and are currently working locally. Will add a few more commands and ship it so i can progress more on it"}]...
|
Title: Baguette SlackBot by @Mk1A | Stardance
Dev Title: Baguette SlackBot by @Mk1A | Stardance
Devlogs:
Alr, I guess its stardancing time DEVLOG 1 Alr So learnt what “Socket Mode” for bots meant and configured the slack side settings. Apparently now it requires approval from the workspace before adding it (got it in like 2 secs but still ) Setup the basic structure and nodejs dependencies. Added commands and are currently working locally. Will add a few more commands and ship it so i can progress more on it
Devlog 2 Now the following commands work as of now- /baguette-ping : Checks the Latency of the bot. /baguette-dog : Pulls a random image of a dawg from dog.ceo /baguette-help : Lists all availaible commands of the @baguette slack bot. Alr So I have a lot planned in mind for this one, probably gonna put massive updates into this. Gonna add the /baguette-welcome feature and try to make it automated as well. Gonna finish the flip one as well and more api features. Gonna ship after this one
DEVLOG 3 I am crine cause the bot’s ping name is still @Mk1A-welcomer bot but it’s registered as @baguette Added a new command “/baguette-flip” using Math.random() which gives a value between 0 and 1(floats included). Fixed a lot of bugs cause apparently I used “:” instead of “;” (python user) Learned that “response_type” can be used to send to channel too, instead of just the user! Gonna add channel ping capabilities soon and then move on to make it actually welcome people :>
DEVLOG 4 ok bro who gave me free will Added another Joke Command “/baguette-customs-incident” which Ig tells about the lore of my customs Fixed the Readme (Still have to add local setup instructions) Researched into channel-ping requirements and realized it can get messy :( So gonna just make it so I the person who created the channel can do it Anyways, just hoping for this bot to be reviewed fast
DEVLOG 5 Ok so added one more command which pulls the quote of the day from ZENQUOTES zen Added /baguette-quote Fixed the /baguette-help command (It said nasa api instead ) Need to start working on welcoming capabilities soon. Also fixed a few more stuff? But I forgor
DEVLOG 6 ADDED CHANNEL WELCOMING FEATURES FINALLY! 🥹 Learned a lot of stuff in this one including events! Applied member_joined_channel event to the list and had to reinstall the app to workspace. Commands use app.command() but events use app.event() and differ a lot from commands (yes no shi sherlock) Realized user or channel referencing is done via <${event.user}> or <$user_id> Forgot to add this to the readme Anyways, thinking of adding basic responses like those “automated workspace” ones
After 51 minutes of fixing the readme, making the welcoming feature specific to only my channel so it doesn’t lead to abuse, and debugging this last event… DEVLOG 7 I would like to leave this as the last devlog as I want to focus on more stuff now! Added new message_detection capabilities which trigger on any sentence containing the keyword “Mk1A”(not case sensitive) Fixed the welcoming feature to only my channel #mk1a-notdefined 🔒 Added local setup instructions + Updated Readme Also added a .env.example file for reference! :) Honestly, I did take some help from Gemini for debugging but that was cause I used “message:” instead of “text:” in the response block Anyways, It was about time it was over!
Ships:
I made a slackbot under the “Make a Slack Bot” mission and completed it around 1.3 hours! Currently these three commands work- /baguette-ping : Pings the bot for it’s latency /baguette-help: Lists all availaible commands for the @baguette slack bot /baguette-dog : Gives a picture of a dawg I have a lot of more commands and api features in mind for this and hope to make it a better welcoming bot :)
Baguette Slackbot, A welcomer bot for my personal channel, which can perform the following tasks- Commands- /baguette-ping : Pings the bot for it’s latency /baguette-help : Lists all commands by the @baguette slack bot. /baguette-dog : Fetches an image of a dawg from the dog.ceo dog API! /baguette-flip : Randomly flips Heads or Tails. /baguette-quote : Fetches the quote of the day from ZEN QUOTES zen! /baguette-customs-incident : Tells the lore behind the customs… (in_channel)(joke_command) EVENT Subscriptions– Checks for user entry into my channel ONLY “Mk1A-NotDefined” and sends a welcome message. 🔒 Replies with “Did someone order a FRESH BAGUETTE” to a message containing “Mk1A” and CCs me to the response message, in_channel. I would definitely update this later on but I have more projects to get to so I guess this is it! :) Hope to keep learning...
|
1793051519.5484676
|
1793137919.5484676
|
|
70409
|
Everturn by @Leon_know | Stardance
|
Leon_know
|
0
|
30.29
|
0
|
[]
|
[{"post_id": 82864, "ts": "202 [{"post_id": 82864, "ts": "2026-10-26T03:08:09Z", "hours": 8.0781, "text": "Everturn Log 3 Finished the maze generation code, added scores and coins, increased the level speed over time, and started creating skins. Also, I need sleep, maybe."}, {"post_id": 82103, "ts": "2026-10-23T22:01:55Z", "hours": 5.6564, "text": "Everturn Log 3 Duck is moving in an infinite maze now! I just have to fine tune it."}, {"post_id": 81882, "ts": "2026-10-22T20:45:32Z", "hours": 5.7592, "text": "Everturn Log2 Today I implemented player movement, animation functions like panning and fading in/out, and screen locking. That’s about it."}, {"post_id": 81659, "ts": "2026-10-21T23:03:44Z", "hours": 5.3567, "text": "Everturn log1 I moved to Excel and VBA for the game, and I’m also using Aseprite to remake my assets. I’m still gathering ideas to make this game more interesting than just a simple maze solving game."}, {"post_id": 81045, "ts": "2026-10-19T17:27:53Z", "hours": 3.2508, "text": "Code I was trying to set up code in Figma, but it requires a premium plan or an AI agent, so I started manually creating each frame. After an hour, I’m still not finished with the first level, so I’m rethinking my software of choice."}, {"post_id": 80850, "ts": "2026-10-19T00:42:15Z", "hours": 2.1847, "text": "Duck? I didn’t sleep at all this night because I was making these handmade icons for a game I plan to finish tomorrow. How do you like them?"}]...
|
Title: Everturn by @Leon_know | Stardance
Devlogs Title: Everturn by @Leon_know | Stardance
Devlogs:
Duck? I didn’t sleep at all this night because I was making these handmade icons for a game I plan to finish tomorrow. How do you like them?
Code I was trying to set up code in Figma, but it requires a premium plan or an AI agent, so I started manually creating each frame. After an hour, I’m still not finished with the first level, so I’m rethinking my software of choice.
Everturn log1 I moved to Excel and VBA for the game, and I’m also using Aseprite to remake my assets. I’m still gathering ideas to make this game more interesting than just a simple maze solving game.
Everturn Log2 Today I implemented player movement, animation functions like panning and fading in/out, and screen locking. That’s about it.
Everturn Log 3 Duck is moving in an infinite maze now! I just have to fine tune it.
Everturn Log 3 Finished the maze generation code, added scores and coins, increased the level speed over time, and started creating skins. Also, I need sleep, maybe....
|
1793008417.3378868
|
1793613217.3378868
|
|
22678
|
Cosmic habitable planet classifier by @Rikimii | S Cosmic habitable planet classifier by @Rikimii | Stardance...
|
Rikimii
|
2
|
40.87
|
231
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T04:33:53Z", "hours": 31.0, "multiplier": 11.03, "payout": 169, "blessing": "neutral", "text": "The Cosmic habitable planet classifier V1.1 is an interactive simulation designed to analyze planetary habitability using real-time astrophysical calculations and machine learning predictions. Used Three.js for the 3D visual elements. Basically, this can be used by teachers, students and researchers who want to test their theories by making their your custom planet and see their research hypothesis was true or not.", "repo": "https://github.com/shipdrop/Cosmic-habitable-planet-classifier", "demo": "https://shipdrop.github.io/Cosmic-habitable-planet-classifier/"}, {"ship_num": 2, "ts": "2026-08-16T01:01:43Z", "hours": 5.0, "multiplier": 12.31, "payout": 62, "blessing": "neutral", "text": "A basically made a website where you can make your own planet and compare it to our earth to see if your planet is a bum where no creature can survive or we can go to it to inhabit it one day.", "repo": "https://github.com/shipdrop/Cosmic-habitable-planet-classifier", "demo": "https://shipdrop.github.io/Cosmic-habitable-planet-classifier/"}]...
|
[{"post_id": 82857, "ts": "202 [{"post_id": 82857, "ts": "2026-10-26T01:40:07Z", "hours": 1.7125, "text": "Update v1.2 Added Core and Atmospheric composition. Added Liquid Methane Zone. Countered Bugs in the ML calculations and in both Gravity / Atmosphere and habitability score. still haven’t solved them / was not able to. will solve them trmw."}, {"post_id": 80844, "ts": "2026-10-19T00:15:36Z", "hours": 0.935, "text": "Update (v1.2) added ASCII scrambling to make the info block not look bland. planned to add a option to change host star type as a suggestion from reviews. more coming this week!"}, {"post_id": 76029, "ts": "2026-10-02T03:35:05Z", "hours": 2.2269, "text": "Update: working on v1.2 changed the info section to a little more sci-fi to match the theme. more features coming up (hint: ASCII scrambling)."}, {"post_id": 75453, "ts": "2026-09-30T04:29:17Z", "hours": 3.5103, "text": "UPDATE (v1.1) I read the review and here is what I have referenced from those reviews from the ship: Habitability UI breakdown UI. 3d Goldilocks overlay that automatically resizes based on stellar temp. added astrophysical ML safety guardrails to not miscalculate result. Real-time Physics & updateSimulation pipline. Fixed Planet profile matching."}, {"post_id": 75072, "ts": "2026-09-29T02:08:23Z", "hours": 1.7892, "text": "Last Update for V1.0: Implemented Mobile Touch Controls Optimized Rendering Performance -Configured Open-Source Repository if you guys want to add more features and shii. PLS check out my github Repo."}, {"post_id": 74767, "ts": "2026-09-28T06:17:41Z", "hours": 5.5292, "text": "HUGE UPDATE: Try it out now (probly my second-last devolog) Finally added the refined the whole graph. added a summary box (not complete yet). Fixed all the bugs with controls."}, {"post_id": 74246, "ts": "2026-09-27T01:49:06Z", "hours": 2.4108, "text": "Update: go test it right now! Finally solved the graph overlapping with the simulation. the simulation starfield contines as the the background for graph and analytics section ( which will be added trmw!)."}, {"post_id": 73438, "ts": "2026-09-25T02:53:49Z", "hours": 2.2033, "text": "Huge Update: added scatter plot to show where your customized sits besides other exoplanets using NASA’s exoplanet archive data. it is a little buggy right now, I will fix it trmw (since I have to sleep now)."}, {"post_id": 72945, "ts": "2026-09-24T02:53:24Z", "hours": 1.5056, "text": "Update: removed Changing Planet Texture because its not right to theorize of how it would like. added camera movement when computing model data."}, {"post_id": 72025, "ts": "2026-09-22T00:53:19Z", "hours": 1.0839, "text": "Update: added different planet texture depending on the result (theory on what would it look like) try it out now!."}, {"post_id": 71516, "ts": "2026-09-20T23:48:06Z", "hours": 1.2964, "text": "Update: added SFX to results and buttons on the site."}, {"post_id": 70913, "ts": "2026-09-20T00:57:19Z", "hours": 2.9081, "text": "Hello yall, today are some bug fixes and updates: Fixed Javascript Reference & Scope errors. Fixed Focus Planet camera preset (you can try it out now!). Fixed starfield rotation and alignment. Upgraded Stars Graphics and Shape. More features coming soon!"}, {"post_id": 69473, "ts": "2026-09-17T04:02:57Z", "hours": 2.1344, "text": "GOT A LOT DONE TODAY but… A bug came on the focus camera preset (which i will fix trmw) Changed the default positioning and added cool animations before showing the result in bottom left. P.S- if you are trying out, PLEASE do not click on the focus planet camera preset."}, {"post_id": 67789, "ts": "2026-09-14T01:14:56Z", "hours": 1.9178, "text": "I finally fixed the UI crash error (it was a api error) and refined it later on, You guys can try it right now!! here is the before and after refinements and more coming throughout this week!!."}, {"post_id": 66982, "ts": "2026-09-12T23:57:56Z", "hours": 0.6708, "text": "Done with setting up the models and Drag controls next devlog will be posted when i fix the UI CDN crash :) see yall soon!"}, {"post_id": 62574, "ts": "2026-09-06T01:04:30Z", "hours": 0.7236, "text": "doing the interface again so I can remove the error and fix the 3D UI crashing :) (planning to add to it more)"}, {"post_id": 61271, "ts": "2026-09-04T03:50:13Z", "hours": 0.8394, "text": "so i started the website, but the 3D models due to Three.js errors through CDN. I will fix it this weekend because of multiple tests lined up in school, wish me luck."}, {"post_id": 53470, "ts": "2026-08-24T01:15:18Z", "hours": 2.0592, "text": "I decided to Redo the UI and here is the list of what I will add: (not done yet) 3d Planets and lighting Real-time Orbit animation Interactive camera controls Orbital Path Ring will complete all this points by trmw and Update here!"}, {"post_id": 29230, "ts": "2026-07-16T00:34:07Z", "hours": 0.5619, "text": "Added comparison to earth subtle background changes if you can see them (its halftones)."}, {"post_id": 29185, "ts": "2026-07-15T22:23:34Z", "hours": 4.4792, "text": "tryna fix this page error right for the past 10 mins. I found the problem right now and fix it. btw how does the UI look? Iam going to add more things like comparing it to the real planets in its category. This is it for the first devlog for the spider-man coded planet classifier!"}]...
|
Title: Cosmic habitable planet classifier by @Riki Title: Cosmic habitable planet classifier by @Rikimii | Stardance
Devlogs:
tryna fix this page error right for the past 10 mins. I found the problem right now and fix it. btw how does the UI look? Iam going to add more things like comparing it to the real planets in its category. This is it for the first devlog for the spider-man coded planet classifier!
Added comparison to earth subtle background changes if you can see them (its halftones).
I decided to Redo the UI and here is the list of what I will add: (not done yet) 3d Planets and lighting Real-time Orbit animation Interactive camera controls Orbital Path Ring will complete all this points by trmw and Update here!
so i started the website, but the 3D models due to Three.js errors through CDN. I will fix it this weekend because of multiple tests lined up in school, wish me luck.
doing the interface again so I can remove the error and fix the 3D UI crashing :) (planning to add to it more)
Done with setting up the models and Drag controls next devlog will be posted when i fix the UI CDN crash :) see yall soon!
I finally fixed the UI crash error (it was a api error) and refined it later on, You guys can try it right now!! here is the before and after refinements and more coming throughout this week!!.
GOT A LOT DONE TODAY but… A bug came on the focus camera preset (which i will fix trmw) Changed the default positioning and added cool animations before showing the result in bottom left. P.S- if you are trying out, PLEASE do not click on the focus planet camera preset.
Hello yall, today are some bug fixes and updates: Fixed Javascript Reference & Scope errors. Fixed Focus Planet camera preset (you can try it out now!). Fixed starfield rotation and alignment. Upgraded Stars Graphics and Shape. More features coming soon!
Update: added SFX to results and buttons on the site.
Update: added different planet texture depending on the result (theory on what would it look like) try it out now!.
Update: removed Changing Planet Texture because its not right to theorize of how it would like. added camera movement when computing model data.
Huge Update: added scatter plot to show where your customized sits besides other exoplanets using NASA’s exoplanet archive data. it is a little buggy right now, I will fix it trmw (since I have to sleep now).
Update: go test it right now! Finally solved the graph overlapping with the simulation. the simulation starfield contines as the the background for graph and analytics section ( which will be added trmw!).
HUGE UPDATE: Try it out now (probly my second-last devolog) Finally added the refined the whole graph. added a summary box (not complete yet). Fixed all the bugs with controls.
Last Update for V1.0: Implemented Mobile Touch Controls Optimized Rendering Performance -Configured Open-Source Repository if you guys want to add more features and shii. PLS check out my github Repo.
UPDATE (v1.1) I read the review and here is what I have referenced from those reviews from the ship: Habitability UI breakdown UI. 3d Goldilocks overlay that automatically resizes based on stellar temp. added astrophysical ML safety guardrails to not miscalculate result. Real-time Physics & updateSimulation pipline. Fixed Planet profile matching.
Update: working on v1.2 changed the info section to a little more sci-fi to match the theme. more features coming up (hint: ASCII scrambling).
Update (v1.2) added ASCII scrambling to make the info block not look bland. planned to add a option to change host star type as a suggestion from reviews. more coming this week!
Update v1.2 Added Core and Atmospheric composition. Added Liquid Methane Zone. Countered Bugs in the ML calculations and in both Gravity / Atmosphere and habitability score. still haven’t solved them / was not able to. will solve them trmw.
Ships:
A basically made a website where you can make your own planet and compare it to our earth to see if your planet is a bum where no creature can survive or we can go to it to inhabit it one day.
The Cosmic habitable planet classifier V1.1 is an interactive simulation designed to analyze planetary habitability using real-time astrophysical calculations and machine learning predictions. Used Three.js for the 3D visual elements. Basically, this can be used by teachers, students and researchers who want to test their theories by making their your custom planet and see their research hypothesis was true or not....
|
1792990164.749014
|
1793076564.749014
|
|
30835
|
Advanced Search Ultimate by @EthanCubes | Stardanc Advanced Search Ultimate by @EthanCubes | Stardance...
|
EthanCubes
|
2
|
19.54
|
226
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T23:36:05Z", "hours": 11.0, "multiplier": 13.88, "payout": 157, "blessing": "neutral", "text": "I created a better GUI and fixed some bugs for Advanced Search Ultimate, a optimized searching extension. I feel like the UI looks pretty good (inspired by the Stardance UI). Note: the project is available on the Firefox extension store (link in README) but not the Chrome Web Store, because Chrome Web Stores requires an one-time payment for me to put extensions on there.", "repo": "https://github.com/EthanCubes/advanced-search-ultimate", "demo": "https://ethancubes.github.io/advanced-search-ultimate"}, {"ship_num": 2, "ts": "2026-08-11T20:33:34Z", "hours": 7.0, "multiplier": 9.35, "payout": 69, "blessing": "neutral", "text": "I made a browser extension that makes searching the internet easier. Some people might not know this, but most search engines actually have advanced search operators that can narrow down your search results even more by filtering by keywords not to include, keywords in the title or URL, and what specific site to search in. But most of the time, those search engine advanced operators require a lot of memorization. That’s where this extension comes in. The Advanced Search Ultimate extension provides faster advanced searching from every page and supports six of the most popular search engines. Even if you don’t need advanced searching in a particular scenario, you can open the extension and instantly search from anywhere. It also saves brainpower if you don’t want to memorize all the operators. This is my first extension, and I couldn’t really find many good tutorials that were short enough that my attention span could handle it, so yeah please pardon my 7 hours of coding time. Note that this extension isn’t available on the Chrome or Firefox extension stores yet due to the Chrome Web Store being locked behind a paywall and the Mozilla Store is still verifying that the project is not malware.", "repo": "https://github.com/EthanCubes/advanced-search-ultimate", "demo": "https://ethancubes.github.io/advanced-search-ultimate"}]...
|
[{"post_id": 82852, "ts": "202 [{"post_id": 82852, "ts": "2026-10-26T00:56:31Z", "hours": 0.3192, "text": "Devlog #14: The extension now saves the last search engine you used, and in the case of Google and DuckDuckGo, whether you decided to use AI or not. I probably didn’t implement the feature very well, but according to my tests it works on both Firefox and Brave. It was done with localstorage, which I have worked with before and am pretty comfortable with. IDK why I’m still working on this project, 4 months after I started it."}, {"post_id": 82506, "ts": "2026-10-25T01:48:32Z", "hours": 0.9039, "text": "Devlog #13: I added an AI filter setting. Many search engines have AI overview, which some people (like me) don’t want. So I added a way to remove it. DuckDuckGo has a no AI mode at noai.duckduckgo.com, which is good that the devs were so thoughtful. Google also has a secret “web” mode that does not have the AI overview when you append &udm=14 at the end of the URL. So I just implemented those things, which took way too long since my code is spaghetti :)."}, {"post_id": 82445, "ts": "2026-10-24T20:27:14Z", "hours": 0.3156, "text": "Devlog #12: I made an optimization change that would reduce lag for people on slower internet connections. Before, the search engine font would load from Google fonts. I literally live on cell data and public wifi, so it takes a good few seconds to load. Usually, this wouldn’t be that much of an issue, but I realized that the extension just… breaks when the font is incorrect. This is because I write horrible code, and the location of everything is configured for the correct font only. I’m also too lazy to configure a proper fallback font. What I did was I just downloaded the font and put it into the assets folder. Yes, it’s that simple. Yes, I did write a 3 paragraph devlog for a change that took me only a few minutes."}, {"post_id": 53423, "ts": "2026-08-23T23:29:09Z", "hours": 1.7586, "text": "Devlog #11: I changed the spacing on the program to make it look better and also made it so that the user can search if the “contains all of the following” field is blank, as long as the specific search field has some content. If you’re wondering why it took me like an hour to do these simple changes, it because I had to package the extension and put it on GitHub (and the Mozilla store). I created two releases, and halfway through the second release, I realized that I forgot to change the version number in the manifest. Since I need an unique version number to put it on Firefox, I changed the release I was working on. And I just gave up on changing the already released on, since I’ve already spent like 17 minutes timelapsing, and wasn’t a fan of working 10 more minutes for something no one is actually going to see."}, {"post_id": 53324, "ts": "2026-08-23T19:59:22Z", "hours": 2.5217, "text": "Devlog #10: My UI still sucks. So, I searched for a website that looks good and easy to recreate. After about 15 minutes of searching with no avail, I realized that there was a really good website sitting right in front of me all this time: the Stardance website, which I’ve had open for like 5 hours atp. I proceded to use KColorChooser to get every single color on the Stardance website. I proceeded to make the extension look kinda like Stardance, except it is still noticeably worse. Some of the changes I implemented in order to be more like Stardance also doubled as general quality of life improvements. One such improvement was changing the search button to not even being able to be pressed when query is empty. It now copies the Stardance UI by greying out the button, and changing the cursor to “not-allowed”. A popup also appears when you hover over the greyed-out button, also like Stardance. The UI still needs some improvements probably, I hope I can get it done soon."}, {"post_id": 52782, "ts": "2026-08-23T03:52:16Z", "hours": 1.3728, "text": "Devlog #9: I wasted an hour trying to add time operators. Then I discovered that time and data operators are not universal across search engines, which means that it would take absolutely forever to implement it. Rather than waste more time, I just decided to cut my losses and quit before it consumes too much of my time. I still have several other projects I would like to start/finish, so yeah. TD;DR: spent an hour doing nothing (that I didn’t decided to undo)."}, {"post_id": 52735, "ts": "2026-08-23T01:55:35Z", "hours": 5.3494, "text": "Devlog #8: When I shipped the project, the feedback from the reviewers was mostly positive, and there was only one real problem: the UI sucks. Which, for the record, I totally agree with. I don’t know what I was thinking, shipping a project that looks like someone made it in like 2004. Now, uh… the UI is like 10% better. Yes, it took me 5 hours to do it (I mean, some of the time was spent improving the README to be better). I went through like 10 different versions with different colours, fonts, and text box rounding. If you think one of the themes is better than the current one, please tell me, I need feedback."}, {"post_id": 48658, "ts": "2026-08-17T04:25:21Z", "hours": 0.2819, "text": "Not really a devlog, but some IMPORTANT NOTES first, FOR FURTHER CLARIFICATION: The live demo link is the web version The Firefox link is linked in the README Releases for both Chrome and Firefox are in the GitHub releases The extension is now LIVE on the Mozilla Store, for Firefox-based browsers like Firefox, Librewolf, etc. Click here to download. For chrome users, well I’m not paying to put the extension onto the Chrome Web Store, so apologies. You can still try the web version or the manual installation."}, {"post_id": 45390, "ts": "2026-08-11T20:22:02Z", "hours": 0.7211, "text": "Devlog #6 (final devlog before ship): So I wasn’t that ready for shipping. I had to update the README and did some bugfixes. The main bug was that you could not select an option to search all filetypes, you were limited to pdf, or limited to docx, or whatever. That’s fixed now, and also the advanced options are no longer considered when they are hidden. (Screenshot is of the web page because I’m too lazy to install the extension again, since I use firefox I don’t think I can install permanently and last time I think I made a change that broke it)"}, {"post_id": 43690, "ts": "2026-08-09T03:04:09Z", "hours": 0.6978, "text": "Devlog #5: I’ve been preparing for shipping, because the project already has all the required features. I configured two separate manifest.json files, one for Chrome and one for Firefox. Since I’m not paying $5 for the Chrome Web Store developer license, the chrome extension is on GitHub, in both zip and crx format. And even though the mozilla store doesn’t require payment, it does take 24 hours to get approved, so yeah, the zip file is on GitHub also. I’ll wait until it’s on the mozilla store to ship. In the meantime, this is probably going to be the last devlog."}, {"post_id": 43601, "ts": "2026-08-08T23:17:17Z", "hours": 2.0361, "text": "Devlog #4: Pretty massive overhaul. I updated the manifest to not be AI since it was AI previously. I don’t know why, but as of now the searching actually works (it’s been like a month so i might not remember, but i don’t think it worked previously). I also added 4 new (optional) search options: File type In title In URL In text I believe they work on all of the included search engines. I only tested on DuckDuckGo because that’s what I use. The options remain hidden most of the time, unless you click the blue button, which makes them appear."}, {"post_id": 25519, "ts": "2026-07-09T20:45:33Z", "hours": 1.4317, "text": "Devlog #3 So I finally turned advanced search ultimate into an Firefox extension. Right now, you still have to import the extension temporarily through about:debugging , but it works, and a popup pops up. I would show it in a screenshot, but it just does not show up on any of my screenshots. Probably an operating system issue. Essentially, I just used MDN Web docs to create the basis for the extension. Unfortunately, I didn’t understand a lot of it, so I had to use AI interpret some of it. I suppose I should make it compatible with Chromium, I don’t know how yet."}, {"post_id": 23082, "ts": "2026-07-05T20:25:07Z", "hours": 1.0525, "text": "Devlog #2: I finally fixed the code that redirects the user to the search page (as you can see in the attached screenshot). I spent a while trying to add even more search operators, but I decided that most people wouldn’t use them anyway and focus on more urgent features like turning it into an extension. Changes Clicking the search button now redirects the user to the search page instead of just copying it to keyboard README was updated to be better and include more things. Changed the font to Arial."}, {"post_id": 22547, "ts": "2026-07-05T02:13:03Z", "hours": 1.4528, "text": "Devlog #1: Ever since I switched from Google to DuckDuckGo, I’ve been annoyed by how there was no real way to easily do an advanced search. Google has an entire web page dedicated to making more precise searches pretty easy, but there’s nothing (that I know of) for other search engines. So today I made the basic inputs fields using HTML and wrote some code to process it with JavaScript. Essentially, I collected the values as a single string for the website field and the “specific phrase” field, and used split(/\\s+/) to make arrays out of the “contains all of the following” and “contains none of the following” fields. They are placed inside and object, and the contents of the object is then finally converted into the final query, which is copied onto the user’s clipboard. I did try to directly bring the user to the search page, but it didn’t work so well, so pasting the query into an existing search engine will have to work for now. I plan on turning this web page into a Chromium and Firefox extension after I’m done the webpage so that it’s even easier and more convenient to use."}]...
|
Title: Advanced Search Ultimate by @EthanCubes | S Title: Advanced Search Ultimate by @EthanCubes | Stardance
Devlogs:
Devlog #1: Ever since I switched from Google to DuckDuckGo, I’ve been annoyed by how there was no real way to easily do an advanced search. Google has an entire web page dedicated to making more precise searches pretty easy, but there’s nothing (that I know of) for other search engines. So today I made the basic inputs fields using HTML and wrote some code to process it with JavaScript. Essentially, I collected the values as a single string for the website field and the “specific phrase” field, and used split(/\s+/) to make arrays out of the “contains all of the following” and “contains none of the following” fields. They are placed inside and object, and the contents of the object is then finally converted into the final query, which is copied onto the user’s clipboard. I did try to directly bring the user to the search page, but it didn’t work so well, so pasting the query into an existing search engine will have to work for now. I plan on turning this web page into a Chromium and Firefox extension after I’m done the webpage so that it’s even easier and more convenient to use.
Devlog #2: I finally fixed the code that redirects the user to the search page (as you can see in the attached screenshot). I spent a while trying to add even more search operators, but I decided that most people wouldn’t use them anyway and focus on more urgent features like turning it into an extension. Changes Clicking the search button now redirects the user to the search page instead of just copying it to keyboard README was updated to be better and include more things. Changed the font to Arial.
Devlog #3 So I finally turned advanced search ultimate into an Firefox extension. Right now, you still have to import the extension temporarily through about:debugging , but it works, and a popup pops up. I would show it in a screenshot, but it just does not show up on any of my screenshots. Probably an operating system issue. Essentially, I just used MDN Web docs to create the basis for the extension. Unfortunately, I didn’t understand a lot of it, so I had to use AI interpret some of it. I suppose I should make it compatible with Chromium, I don’t know how yet.
Devlog #4: Pretty massive overhaul. I updated the manifest to not be AI since it was AI previously. I don’t know why, but as of now the searching actually works (it’s been like a month so i might not remember, but i don’t think it worked previously). I also added 4 new (optional) search options: File type In title In URL In text I believe they work on all of the included search engines. I only tested on DuckDuckGo because that’s what I use. The options remain hidden most of the time, unless you click the blue button, which makes them appear.
Devlog #5: I’ve been preparing for shipping, because the project already has all the required features. I configured two separate manifest.json files, one for Chrome and one for Firefox. Since I’m not paying $5 for the Chrome Web Store developer license, the chrome extension is on GitHub, in both zip and crx format. And even though the mozilla store doesn’t require payment, it does take 24 hours to get approved, so yeah, the zip file is on GitHub also. I’ll wait until it’s on the mozilla store to ship. In the meantime, this is probably going to be the last devlog.
Devlog #6 (final devlog before ship): So I wasn’t that ready for shipping. I had to update the README and did some bugfixes. The main bug was that you could not select an option to search all filetypes, you were limited to pdf, or limited to docx, or whatever. That’s fixed now, and also the advanced options are no longer considered when they are hidden. (Screenshot is of the web page because I’m too lazy to install the extension again, since I use firefox I don’t think I can install permanently and last time I think I made a change that broke it)
Not really a devlog, but some IMPORTANT NOTES first, FOR FURTHER CLARIFICATION: The live demo link is the web version The Firefox link is linked in the README Releases for both Chrome and Firefox are in the GitHub releases The extension is now LIVE on the Mozilla Store, for Firefox-based browsers like Firefox, Librewolf, etc. Click here to download. For chrome users, well I’m not paying to put the extension onto the Chrome Web Store, so apologies. You can still try the web version or the manual installation.
Devlog #8: When I shipped the project, the feedback from the reviewers was mostly positive, and there was only one real problem: the UI sucks. Which, for the record, I totally agree with. I don’t know what I was thinking, shipping a project that looks like someone made it in like 2004. Now, uh… the UI is like 10% better. Yes, it took me 5 hours to do it (I mean, some of the time was spent improving the README to be better). I went through like 10 different versions with different colours, fonts, and text box rounding. If you think one of the themes is better than the current one, please tell me, I need feedback.
Devlog #9: I wasted an hour trying to add time operators. Then I discovered that time and data operators are not universal across search engines, which means that it would take absolutely forever to implement it. Rather than waste more time, I just decided to cut my losses and quit before it consumes too much of my time. I still have several other projects I would like to start/finish, so yeah. TD;DR: spent an hour doing nothing (that I didn’t decided to undo).
Devlog #10: My UI still sucks. So, I searched for a website that looks good and easy to recreate. After about 15 minutes of searching with no avail, I realized that there was a really good website sitting right in front of me all this time: the Stardance website, which I’ve had open for like 5 hours atp. I proceded to use KColorChooser to get every single color on the Stardance website. I proceeded to make the extension look kinda like Stardance, except it is still noticeably worse. Some of the changes I implemented in order to be more like Stardance also doubled as general quality of life improvements. One such improvement was changing the search button to not even being able to be pressed when query is empty. It now copies the Stardance UI by greying out the button, and changing the cursor to “not-allowed”. A popup also appears when you hover over the greyed-out button, also like Stardance. The UI still needs some improvements probably, I hope I can get it done soon.
Devlog #11: I changed the spacing on the program to make it look better and also made it so that the user can search if the “contains all of the following” field is blank, as long as the specific search field has some content. If you’re wondering why it took me like an hour to do these simple changes, it because I had to package the extension and put it on GitHub (and the Mozilla store). I created two releases, and halfway through the second release, I realized that I forgot to change the version number in the manifest. Since I need an unique version number to put it on Firefox, I changed the release I was working on. And I just gave up on changing the already released on, since I’ve already spent like 17 minutes timelapsing, and wasn’t a fan of working 10 more minutes for something no one is actually going to see.
Devlog #12: I made an optimization change that would reduce lag for people on slower internet connections. Before, the search engine font would load from Google fonts. I literally live on cell data and public wifi, so it takes a good few seconds to load. Usually, this wouldn’t be that much of an issue, but I realized that the extension just… breaks when the font is incorrect. This is because I write horrible code, and the location of everything is configured for the correct font only. I’m also too lazy to configure a proper fallback font. What I did was I just downloaded the font and put it into the assets folder. Yes, it’s that simple. Yes, I did write a 3 paragraph devlog for a change that took me only a few minutes.
Devlog #13: I added an AI filter setting. Many search engines have AI overview, which some people (like me) don’t want. So I added a way to remove it. DuckDuckGo has a no AI mode at noai.duckduckgo.com, which is good that the devs were so thoughtful. Google also has a secret “web” mode that does not have the AI overview when you append &udm=14 at the end of the URL. So I just implemented those things, which took way too long since my code is spaghetti :).
Devlog #14: The extension now saves the last search engine you used, and in the case of Google and DuckDuckGo, whether you decided to use AI or not. I probably didn’t implement the feature very well, but according to my tests it works on both Firefox and Brave. It was done with localstorage, which I have worked with before and am pretty comfortable with. IDK why I’m still working on this project, 4 months after I started it.
Ships:
I made a browser extension that makes searching the internet easier. Some people might not know this, but most search engines actually have advanced search operators that can narrow down your search results even more by filtering by keywords not to include, keywords in the title or URL, and what specific site to search in. But most of the time, those search engine advanced operators require a lot of memorization. That’s where this extension comes in. The Advanced Search Ultimate extension provides faster advanced searching from every page and supports six of the most popular search engines. Even if you don’t need advanced searching in a particular scenario, you can open the extension and instantly search from anywhere. It also saves brainpower if you don’t want to memorize all the operators. This is my first extension, and I couldn’t really find many good tutorials that were short enough that my attention span could handle it, so yeah please pardon my 7 hours of coding time. Note that this extension isn’t available on the Chrome or Firefox extension stores yet due to the Chrome Web Store being locked behind a paywall and the Mozilla Store is still verifying that the project is not malware.
I created a better GUI and fixed some bugs for Advanced Search Ultimate, a optimized searching extension. I feel like the UI looks pretty good (inspired by the Stardance UI). Note: the project is available on the Firefox extension store (link in README) but not the Chrome Web Store, because Chrome Web Stores requires an one-time payment for me to put extensions on there....
|
1792983112.8241577
|
1793069512.8241577
|
|
64126
|
EV - AI Assistant by @Alan-Betty | Stardance
|
Alan-Betty
|
1
|
81.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T01:10:32Z", "hours": 81.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "EV: the final devlog (for now) ok so i’m shipping it. it’s still under development and lowk always will be, but it’s at the point where it does real stuff, so here it is. so what even is EV EV is a voice controlled AI assistant i built from scratch. u say “ev” and then whatever u want, and it just does it. it’s full duplex, so it hears u while it’s talking. cut it off mid sentence and it actually shuts up and listens, instead of yapping over u like every other assistant. it does the normal assistant stuff: opens apps, finds files, plays music, remembers things about u, keeps ur to-do list. but the part i’m proud of is the complex stuff. ask it to find a gaming mouse with an infinite scroll wheel under 10k . it’ll open the browser, search, sort by price, read the listings, pick one that actually matches, and ask “Confirm?” before it puts anything in ur basket. no hand holding. it can also drive ur desktop. browser errands go through the page itself, apps go through their accessibility tree, and screenshots are the last resort. so “turn on dark mode in settings” doesn’t burn a whole vision call. the stuff nobody sees it’s light. no local model, no vendor sdks. it sits at like 90-160 mb of ram. everything heavy is a plain http call it has a face. a little floating robot face with glowing eyes that shows what it’s doing. u can tell it to look angry and it will lol it can’t go rogue. anything risky asks “Confirm?” first. say “stop everything” or hit ctrl+alt+q and it locks down. and the model can’t unlock itself, only u can it doesn’t trust the internet. text it reads off a webpage is fenced off, so a page saying “ignore ur instructions” doesn’t get to boss it around works on windows and ubuntu (yes even wayland, that was the final boss fr) the L’s that made it better it once read “Spoke:” out loud like a robot reading its own logs. fixed that at the root the mouse errand worked so well it added the same mouse to my basket four times 💀 now it refuses to press the same buy button twice on speakers it used to hear its own voice, think i was talking, and answer itself forever. it learned what i sound like vs what it sounds like now ~950 tests, all offline. still janky in places, but it’s mine and it works. go break it and tell me what happened. peace ✌️", "repo": "https://github.com/Alan-Betty/EV", "demo": "https://evassistant.vercel.app"}]...
|
[{"post_id": 82849, "ts": "202 [{"post_id": 82849, "ts": "2026-10-26T00:43:32Z", "hours": 8.3842, "text": "side devlog 3: less clutter + a manager page the page had way too much going on fr. cut the face readouts, the demo stepper, extra stats and the giant verify box. headline rises in word by word, the face boots up with its eyes opening, sections fade in once, and the nav has a little pill that slides around. all of it switches off if u have reduced motion on made a site manager ( npm run admin ). edit any text, pick which commit stable points at, update the roadmap, all next to a live preview. saves as u type drag an installer onto a platform and it gets hashed on upload, so the page shows the real sha-256. no more copy pasting hashes by hand it only runs on localhost and never ships in the build, so nobody’s editing my site but me. hehe nice try. Now that i think about it. i think i did way too much unneccessary stuff."}, {"post_id": 81991, "ts": "2026-10-23T11:09:50Z", "hours": 18.5944, "text": "side devlog 1: ev has a website now vite + tailwind + plain js. no react, cause ev’s whole thing is being lightweight and it’d be kinda hypocritical ngl nothing on it is made up. a script reads my git log before every build, so the commit list, the iteration number and the test count (950 btw) come straight from the repo the demo replays real ev errands with the real tool names. the amazon mouse one asks “Confirm?” before it touches the basket, same as the actual thing downloads are github zips pinned to the iteration commit since ev ships as source, plus a one liner to check which commit u got ctrl+k menu to jump around cause i’m lowk addicted to command palettes works on phones too, tested it at like 5 screen sizes side devlog 2: the face made it onto the site the hero used to be a particle orb. it was mid. ev literally has a face so now the site uses that instead ported the qt renderer ( ev/face/render.py ) to a canvas and it reads the same expressions.json as the real face. change a mood in python and the site picks it up on the next build eyes follow ur cursor, it dozes off if u leave it alone for 15s and wakes back up when u move. click it and it gets startled big bug: it kept going “surprised” every few seconds and stopped following the mouse. turns out mouse events can be 1ms apart so a tiny wiggle read as 5000px/s 💀 now it measures over 100ms and only near the face glow is additive now so the eyes don’t have that weird dark rim anymore"}, {"post_id": 81514, "ts": "2026-10-21T15:27:39Z", "hours": 9.5772, "text": "EV devlog: iterations 12-14 ~10k lines added. kinda unhinged week ngl. Iteration 12: ev learns who’s talking and gets self aware whisper kept mishearing me so now EV keeps track of how i sound. it learns the words i say a lot ( ev/hearing.py ) and loosens its “didn’t catch that” threshold if i’m just a quieter/mumblier speaker. it only ever loosens, never gets stricter, so it can’t drift into acting on noise stuff it learns is stored in a json, tests don’t touch it so the real profile stays clean wake word got a glow up: saying just “ev” while it’s on standby wakes it. before you had to say the whole “wake up” thing like a password. bro it’s literally your name face now knows it’s a face believe it or not. chat can take a mood so “look angry” or “wink at me” actually does something, and there’s a demo mode that cycles through every expression readme got gutted (585 lines → basically nothing) and moved into OVERVIEW.md, cause nobody was reading that Iteration 13: EV can use any app, not just the browser i forgot what all i did. but here is the best recap of what i remember. new tools/desktop/ folder. basically three tiers now, cheapest first: window stuff (list/focus/close/minimise) straight through the OS, no model call accessibility tree (AT-SPI on linux, UI Automation on windows, System Events on mac). EV reads buttons and fields by name instead of guessing pixels screenshots + vision, only when the first two can’t cook new app_control and app_agent tools so “turn on dark mode in settings” doesn’t burn a screenshot wayland was the final boss. x11 screenshots come back fully black there lol, so ev was describing a black rectangle. fixed with mutter’s screencast + remote desktop stuff wrote a tiny gnome shell extension ( [email protected] ) so wayland windows have real positions and focus works closing apps is polite by default. if an editor asks “save?” ev reads it out and waits, doesn’t just nuke your work. force kill needs a confirm. learnt that the hard way. added jeepney and comtypes to requirements, both lazy imported so nothing changes if you never use em Iteration 14: memory that actually remembers + overlay on linux semantic memory ( ev/semantic_memory.py ). remember_fact with no key stores a free note, and ev pulls up the ones relevant to what you just said. all local search (BM25 + fuzzy for misheard words), gemini embeddings are optional and only used inside tool calls. has dedup, archiving, backups, so one bad write doesn’t wipe everything. forgetting stuff asks for a confirm overlay on linux. the red “ev is driving your screen” frame was windows only. now it works through xwayland ( tools/desktop/xhud.py ), click-through and everything. the kill hotkey on gnome wayland goes through the extension (bumped to v2) since wayland won’t let apps grab global keys fixed a crash where tk objects got freed on the wrong thread and the process died with exit 134 after every takeover. cool vision got better on desktop, new test_desktop_vision.py tool schema had to get squished again to stay under the groq token limit. every new feature = something else gets shorter, it’s the circle of life where things are at works: voice, typed mode, browser errands, desktop apps on windows + ubuntu, memory. still janky: wayland without the extension (no window positions), snapped apps refusing accessibility, and my commit messages. next up: idk, tests probably. maybe sleep."}, {"post_id": 76026, "ts": "2026-10-02T03:28:11Z", "hours": 13.3536, "text": "E.V. got a face (and moved to Ubuntu) Iterations 9, 10 and 11. Lowkey the biggest glow up E.V. has had so far. 9 + 10: WE GOT A FACEEEE E.V. has a face now. It’s a little floating dark screen with two glowing eyes that sits on your desktop and reacts to whatever it’s doing. Listening, thinking, talking, happy, confused, sleepy, and even angry for some reason. yeah dont ask. It’s its own process. The face runs on PySide6 in a separate process, so the main assistant never loads Qt and stays tiny. If the face crashes, E.V. doesn’t care, it just keeps going. No PySide6 installed? No face, nothing else changes. Every mood is just JSON. All the expressions live in expressions.json as eye shapes, lid angles, glow and colour. The eyes ease between moods smoothly, blink on their own and glance around so it never looks dead inside. Captions. What you said and what E.V. says back pop up in a speech bubble next to the face. The bubble is click-through so it never gets in the way. It only pulls up when you call it. Say “E.V.” and it slides in, stop talking and it dips. If you’re watching something full screen it stays hidden, because nobody wants a robot photobombing their movie. Media control. “Pause the music”, “next song”, “turn it down”. Works on Linux and Windows without installing anything extra. Finally Stopped Ignoring Ubuntu. I switched to Ubuntu and half of E.V. broke ngl. The mic needed a fallback to pw-record / parec / arecord , app launching had to learn .desktop files, and the voice plays through GStreamer. Wayland doesn’t let apps float on top, so the face sneaks through XWayland instead. Bugs that were lowkey unhinged The face crashed instantly when started from VS Code because the snap terminal leaked its own libraries into Qt. Fixed by cleaning the environment before Qt loads.- On Ubuntu the “default microphone” was actually my speakers . E.V. was literally recording YouTube. Now it picks a real mic by name.- The glow was eating a third of a CPU core. Cached the drawing and dropped the frame rate when nothing is moving. Way chiller now. 11: E.V. stopped talking to itself. lol This one was actually wild. On speakers, E.V. would hear its own voice, think I was interrupting, transcribe itself and then reply to itself . Forever. Main character behaviour, but no. Three fixes, stacked: Compare against itself, not the room. Interrupting used to mean “louder than background noise”, and speakers win that every time. Now you have to be louder than E.V.’s own voice coming back through the mic. It learns what I sound like. A small voiceprint learns my voice and E.V.‘s voice through the speakers, and keeps adapting the more you use it. If the audio sounds like E.V., it’s ignored. It’s not face ID for voices, it just tells “me” apart from “the speakers”. It checks the words. If what it just heard matches what it just said, it gets dropped. This is the one that makes the loop actually impossible instead of just less likely.All of it is pinned in tests so it can’t sneak back. The suite is at 866 tests now, all offline. That’s the update fr. yk i gotta come clean. half of this major update was vibe coded. forgive me. but the other half was done by me. ALSO THIS DEVLOG is not vibecoded. it took too long."}, {"post_id": 73885, "ts": "2026-09-26T07:58:20Z", "hours": 6.9006, "text": "E.V. can drive my screen now This update was all about letting E.V. actually take over the computer, not just open apps. What’s new It can run a whole errand by itself. I said “find me a gaming mouse with an infinite scroll wheel and add it to my amazon cart” and it searched, picked one and added it. Web stuff goes through Playwright and reads the page instead of taking screenshots. Screenshots were eating my Groq rate limit in like 4 steps. There’s a red frame around the screen plus a little status panel whenever E.V. is in control, so you can tell it’s doing things and it’s not a virus lol Kill switch: ctrl+alt+q, or just say “stop everything”. It locks E.V. until you tell it to unlock. Bugs I hit It added the same mouse to my cart 4 times. Now it remembers what it already clicked and won’t do it twice. It got stuck on Amazon because “Search” matched 4 things on the page and it clicked a hidden one. Now if a step fails it reads the page and figures out a different way.Next up: getting it to use Brave instead of its own Chromium."}, {"post_id": 73523, "ts": "2026-09-25T09:42:45Z", "hours": 6.7417, "text": "I SPENT 6 Hours DEBUGGING i dont even have a major new photo to add. Please Understand"}, {"post_id": 72927, "ts": "2026-09-24T01:48:32Z", "hours": 9.2956, "text": "Gave My Assistant FULL SCREEN Control using Playwright. IT can now do complex tasks autonomously. eg: find a Gaming mouse under 5k with an inifinte scroll wheel. it will do that. The rest of the time was spent debugging"}, {"post_id": 71262, "ts": "2026-09-20T15:19:21Z", "hours": 8.4453, "text": "EV - THE AI ASSISTANT Just Spent 8 Hours on EV, Creating And Refactoring. to finally achieve as close as i can get towards the real thing with the resources that i was allowed. It is fully controlled via Voice ( BUT can be switched to text, if necessary). it can do advanced tasks like open Apps, Create Files, And Much more. All you need is a Groq or Gemini API key. and it consumes a maximum of 200MB RAM. I couldn’t just use an LLM for this purpose as I’m working with a PC that has 4GB RAM. AS OF NOW, this is a terminal program. but soon this will be much bigger. it will become a full scale app with enjoyable UI/UX Design and an avatar for EV"}]...
|
Title: EV - AI Assistant by @Alan-Betty | Stardanc Title: EV - AI Assistant by @Alan-Betty | Stardance
Devlogs:
EV - THE AI ASSISTANT Just Spent 8 Hours on EV, Creating And Refactoring. to finally achieve as close as i can get towards the real thing with the resources that i was allowed. It is fully controlled via Voice ( BUT can be switched to text, if necessary). it can do advanced tasks like open Apps, Create Files, And Much more. All you need is a Groq or Gemini API key. and it consumes a maximum of 200MB RAM. I couldn’t just use an LLM for this purpose as I’m working with a PC that has 4GB RAM. AS OF NOW, this is a terminal program. but soon this will be much bigger. it will become a full scale app with enjoyable UI/UX Design and an avatar for EV
Gave My Assistant FULL SCREEN Control using Playwright. IT can now do complex tasks autonomously. eg: find a Gaming mouse under 5k with an inifinte scroll wheel. it will do that. The rest of the time was spent debugging
I SPENT 6 Hours DEBUGGING i dont even have a major new photo to add. Please Understand
E.V. can drive my screen now This update was all about letting E.V. actually take over the computer, not just open apps. What’s new It can run a whole errand by itself. I said “find me a gaming mouse with an infinite scroll wheel and add it to my amazon cart” and it searched, picked one and added it. Web stuff goes through Playwright and reads the page instead of taking screenshots. Screenshots were eating my Groq rate limit in like 4 steps. There’s a red frame around the screen plus a little status panel whenever E.V. is in control, so you can tell it’s doing things and it’s not a virus lol Kill switch: ctrl+alt+q, or just say “stop everything”. It locks E.V. until you tell it to unlock. Bugs I hit It added the same mouse to my cart 4 times. Now it remembers what it already clicked and won’t do it twice. It got stuck on Amazon because “Search” matched 4 things on the page and it clicked a hidden one. Now if a step fails it reads the page and figures out a different way.Next up: getting it to use Brave instead of its own Chromium.
E.V. got a face (and moved to Ubuntu) Iterations 9, 10 and 11. Lowkey the biggest glow up E.V. has had so far. 9 + 10: WE GOT A FACEEEE E.V. has a face now. It’s a little floating dark screen with two glowing eyes that sits on your desktop and reacts to whatever it’s doing. Listening, thinking, talking, happy, confused, sleepy, and even angry for some reason. yeah dont ask. It’s its own process. The face runs on PySide6 in a separate process, so the main assistant never loads Qt and stays tiny. If the face crashes, E.V. doesn’t care, it just keeps going. No PySide6 installed? No face, nothing else changes. Every mood is just JSON. All the expressions live in expressions.json as eye shapes, lid angles, glow and colour. The eyes ease between moods smoothly, blink on their own and glance around so it never looks dead inside. Captions. What you said and what E.V. says back pop up in a speech bubble next to the face. The bubble is click-through so it never gets in the way. It only pulls up when you call it. Say “E.V.” and it slides in, stop talking and it dips. If you’re watching something full screen it stays hidden, because nobody wants a robot photobombing their movie. Media control. “Pause the music”, “next song”, “turn it down”. Works on Linux and Windows without installing anything extra. Finally Stopped Ignoring Ubuntu. I switched to Ubuntu and half of E.V. broke ngl. The mic needed a fallback to pw-record / parec / arecord , app launching had to learn .desktop files, and the voice plays through GStreamer. Wayland doesn’t let apps float on top, so the face sneaks through XWayland instead. Bugs that were lowkey unhinged The face crashed instantly when started from VS Code because the snap terminal leaked its own libraries into Qt. Fixed by cleaning the environment before Qt loads.- On Ubuntu the “default microphone” was actually my speakers . E.V. was literally recording YouTube. Now it picks a real mic by name.- The glow was eating a third of a CPU core. Cached the drawing and dropped the frame rate when nothing is moving. Way chiller now. 11: E.V. stopped talking to itself. lol This one was actually wild. On speakers, E.V. would hear its own voice, think I was interrupting, transcribe itself and then reply to itself . Forever. Main character behaviour, but no. Three fixes, stacked: Compare against itself, not the room. Interrupting used to mean “louder than background noise”, and speakers win that every time. Now you have to be louder than E.V.’s own voice coming back through the mic. It learns what I sound like. A small voiceprint learns my voice and E.V.‘s voice through the speakers, and keeps adapting the more you use it. If the audio sounds like E.V., it’s ignored. It’s not face ID for voices, it just tells “me” apart from “the speakers”. It checks the words. If what it just heard matches what it just said, it gets dropped. This is the one that makes the loop actually impossible instead of just less likely.All of it is pinned in tests so it can’t sneak back. The suite is at 866 tests now, all offline. That’s the update fr. yk i gotta come clean. half of this major update was vibe coded. forgive me. but the other half was done by me. ALSO THIS DEVLOG is not vibecoded. it took too long.
EV devlog: iterations 12-14 ~10k lines added. kinda unhinged week ngl. Iteration 12: ev learns who’s talking and gets self aware whisper kept mishearing me so now EV keeps track of how i sound. it learns the words i say a lot ( ev/hearing.py ) and loosens its “didn’t catch that” threshold if i’m just a quieter/mumblier speaker. it only ever loosens, never gets stricter, so it can’t drift into acting on noise stuff it learns is stored in a json, tests don’t touch it so the real profile stays clean wake word got a glow up: saying just “ev” while it’s on standby wakes it. before you had to say the whole “wake up” thing like a password. bro it’s literally your name face now knows it’s a face believe it or not. chat can take a mood so “look angry” or “wink at me” actually does something, and there’s a demo mode that cycles through every expression readme got gutted (585 lines → basically nothing) and moved into OVERVIEW.md, cause nobody was reading that Iteration 13: EV can use any app, not just the browser i forgot what all i did. but here is the best recap of what i remember. new tools/desktop/ folder. basically three tiers now, cheapest first: window stuff (list/focus/close/minimise) straight through the OS, no model call accessibility tree (AT-SPI on linux, UI Automation on windows, System Events on mac). EV reads buttons and fields by name instead of guessing pixels screenshots + vision, only when the first two can’t cook new app_control and app_agent tools so “turn on dark mode in settings” doesn’t burn a screenshot wayland was the final boss. x11 screenshots come back fully black there lol, so ev was describing a black rectangle. fixed with mutter’s screencast + remote desktop stuff wrote a tiny gnome shell extension ( [email protected] ) so wayland windows have real positions and focus works closing apps is polite by default. if an editor asks “save?” ev reads it out and waits, doesn’t just nuke your work. force kill needs a confirm. learnt that the hard way. added jeepney and comtypes to requirements, both lazy imported so nothing changes if you never use em Iteration 14: memory that actually remembers + overlay on linux semantic memory ( ev/semantic_memory.py ). remember_fact with no key stores a free note, and ev pulls up the ones relevant to what you just said. all local search (BM25 + fuzzy for misheard words), gemini embeddings are optional and only used inside tool calls. has dedup, archiving, backups, so one bad write doesn’t wipe everything. forgetting stuff asks for a confirm overlay on linux. the red “ev is driving your screen” frame was windows only. now it works through xwayland ( tools/desktop/xhud.py ), click-through and everything. the kill hotkey on gnome wayland goes through the extension (bumped to v2) since wayland won’t let apps grab global keys fixed a crash where tk objects got freed on the wrong thread and the process died with exit 134 after every takeover. cool vision got better on desktop, new test_desktop_vision.py tool schema had to get squished again to stay under the groq token limit. every new feature = something else gets shorter, it’s the circle of life where things are at works: voice, typed mode, browser errands, desktop apps on windows + ubuntu, memory. still janky: wayland without the extension (no window positions), snapped apps refusing accessibility, and my commit messages. next up: idk, tests probably. maybe sleep.
side devlog 1: ev has a website now vite + tailwind + plain js. no react, cause ev’s whole thing is being lightweight and it’d be kinda hypocritical ngl nothing on it is made up. a script reads my git log before every build, so the commit list, the iteration number and the test count (950 btw) come straight from the repo the demo replays real ev errands with the real tool names. the amazon mouse one asks “Confirm?” before it touches the basket, same as the actual thing downloads are github zips pinned to the iteration commit since ev ships as source, plus a one liner to check which commit u got ctrl+k menu to jump around cause i’m lowk addicted to command palettes works on phones too, tested it at like 5 screen sizes side devlog 2: the face made it onto the site the hero used to be a particle orb. it was mid. ev literally has a face so now the site uses that instead ported the qt renderer ( ev/face/render.py ) to a canvas and it reads the same expressions.json as the real face. change a mood in python and the site picks it up on the next build eyes follow ur cursor, it dozes off if u leave it alone for 15s and wakes back up when u move. click it and it gets startled big bug: it kept going “surprised” every few seconds and stopped following the mouse. turns out mouse events can be 1ms apart so a tiny wiggle read as 5000px/s 💀 now it measures over 100ms and only near the face glow is additive now so the eyes don’t have that weird dark rim anymore
side devlog 3: less clutter + a manager page the page had way too much going on fr. cut the face readouts, the demo stepper, extra stats and the giant verify box. headline rises in word by word, the face boots up with its eyes opening, sections fade in once, and the nav has a little pill that slides around. all of it switches off if u have reduced motion on made a site manager ( npm run admin ). edit any text, pick which commit stable points at, update the roadmap, all next to a live preview. saves as u type drag an installer onto a platform and it gets hashed on upload, so the page shows the real sha-256. no more copy pasting hashes by hand it only runs on localhost and never ships in the build, so nobody’s editing my site but me. hehe nice try. Now that i think about it. i think i did way too much unneccessary stuff.
Ships:
EV: the final devlog (for now) ok so i’m shipping it. it’s still under development and lowk always will be, but it’s at the point where it does real stuff, so here it is. so what even is EV EV is a voice controlled AI assistant i built from scratch. u say “ev” and then whatever u want, and it just does it. it’s full duplex, so it hears u while it’s talking. cut it off mid sentence and it actually shuts up and listens, instead of yapping over u like every other assistant. it does the normal assistant stuff: opens apps, finds files, plays music, remembers things about u, keeps ur to-do list. but the part i’m proud of is the complex stuff. ask it to find a gaming mouse with an infinite scroll wheel under 10k . it’ll open the browser, search, sort by price, read the listings, pick one that actually matches, and ask “Confirm?” before it puts anything in ur basket. no hand holding. it can also drive ur desktop. browser errands go through the page itself, apps go through their accessibility tree, and screenshots are the last resort. so “turn on dark mode in settings” doesn’t burn a whole vision call. the stuff nobody sees it’s light. no local model, no vendor sdks. it sits at like 90-160 mb of ram. everything heavy is a plain http call it has a face. a little floating robot face with glowing eyes that shows what it’s doing. u can tell it to look angry and it will lol it can’t go rogue. anything risky asks “Confirm?” first. say “stop everything” or hit ctrl+alt+q and it locks down. and the model can’t unlock itself, only u can it doesn’t trust the internet. text it reads off a webpage is fenced off, so a page saying “ignore ur instructions” doesn’t get to boss it around works on windows and ubuntu (yes even wayland, that was the final boss fr) the L’s that made it better it once read “Spoke:” out loud like a robot reading its own logs. fixed that at the root the mouse errand worked so well it added the same mouse to my basket four times 💀 now it refuses to press the same buy button twice on speakers it used to hear its own voice, think i was talking, and answer itself forever. it learned what i sound like vs what it sounds like now ~950 tests, all offline. still janky in places, but it’s mine and it works. go break it and tell me what happened. peace ✌️...
|
1793058698.490074
|
1793145098.490074
|