|
8178
|
GVK renderer by @gungu | Stardance
|
gungu
|
2
|
60.0
|
1009
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:22:35Z", "hours": 13.0, "multiplier": 19.44, "payout": 261, "blessing": "neutral", "text": "This is the second ship of my game engine / renderer. To explain, I like calling it a renderer instead of a game engine, because I purposefully tried to add as few bloat features as I could, I just wanted something that made rendering something that I don’t have to think about. More info on the README page, this isn’t a good explanation. Just know that it isn’t just a basic Vulkan abstraction, this is a full renderer with PBR, many post-processing effects, skyboxes, dynamic lights, rigged and animated meshes and frustrum culling ’cause why not. Changelog since the last ship: 2 new post-processing effects, pixelation and fog I also added a feature where shiny objects reflect the skybox, which isn’t realistic, but it adds a great sense of realism and I like to add it to my games. one of the largest changes was turning this into an actual library instead of an executable, which allows easier integration. I also made a full game as a tech demo for this project, it can be found at this link or under my stardance profile. It turned out really well, and I’m proud of myself, because I finally made a game engine that I can actually make games in easily. (The screenshot is from the game) and the smallest but still a significant change was rewriting the entire 2D rendering part of the engine for 2 reasons: it had a memory leak, and text rendering was buggy, slow and barely worked.", "repo": "https://github.com/gungugugungu/GVK-Engine", "demo": "https://github.com/gungugugungu/GVK-Engine/releases"}, {"ship_num": 2, "ts": "2026-08-17T20:15:46Z", "hours": 47.0, "multiplier": 15.86, "payout": 748, "blessing": "neutral", "text": "GVK (short for gungu vulkan) is my new renderer using the Vulkan graphics api. I miss the times when I worked with pygame and love2d, where rendering an image was one simple line of code, and I intend to bring that experience to 3D with this project. Everything is designed to be as easy as possible for the user, just writes gvk::draw_mesh(mesh, material, position, scale, rotation); and the mesh is where you want it, how you want it. But don’t mistake it, this is not a game engine, this is just a renderer, something you can build an engine on. I made this tool so my later projects have a graphical backbone to build on, but every game needs a different engine. Ever since I started graphics programming last year I knew that one day I had to learn Vulkan if I ever wanted a job in it in the future, and I’m very proud of myself for finally doing it. This was the greatest challenge I faced in programming so far, and I so glad I tackled it. And as for AI: This project was created so I could learn Vulkan, and if I copied everything from AI that would have been to effective. My goal was to use as little AI as I could, while still leaving out the headaches of development. Here’s what I used AI for: Many of the shaders were written by AI, but that’s because I haven’t learned any of the maths I need to know to write any of these shader. When a shader wasn’t too math heavy I wrote it myself, but there weren’t too many of those. The GLTF loading isn’t hard, it’s just a headache to work with it. GLTF is a horrible format for developers, but it’s the best I knew, so I rather had AI write the GLTF loading functions. I’m still glad I did that, I would have learned nothing from writing those.", "repo": "https://github.com/gungugugungu/GVK-Engine", "demo": "https://github.com/gungugugungu/GVK-Engine/releases"}]...
|
[{"post_id": 63563, "ts": "202 [{"post_id": 63563, "ts": "2026-09-07T14:07:41Z", "hours": 0.4622, "text": "I made a few minor tweaks to fog, and I started debugging it, which I ended up completely stopping and reverting, as it was useless. To be honest I’m really trying to find where this 27 minutes appeared, because I don’t remember spending half an hour on this"}, {"post_id": 61085, "ts": "2026-09-03T20:06:12Z", "hours": 0.76, "text": "FOG Yeah I just added fog because I thought it would look cool in my game. Obviously it’s over the top in this image because I wanted to show it off. I’m pretty proud of this one, definitely one of the more complex post-processing effects."}, {"post_id": 60850, "ts": "2026-09-03T14:06:32Z", "hours": 0.2822, "text": "SKYBOX REFLECTIONS This is a neat trick I did in my last engine and I’m happy I recreated it in this one. Every single shiny surface reflects the skybox, which while isn’t realistic, it does make those surfaces look a lot more shiny than what they actually are, which is a great hack. It sure as hell looks better in the environments I make."}, {"post_id": 60834, "ts": "2026-09-03T13:41:51Z", "hours": 0.5078, "text": "Screen-space reflections would be a major challenge, but I learned that making the skybox reflect off of shiny surfaces is a pretty good way of making your renders seem much better. As of right now it technically works, but I came to realize that I wasn’t loading materials right, so if an image didn’t have a roughness texture, then it would end up completely shiny. I’m almost done fixing it."}, {"post_id": 59082, "ts": "2026-08-31T18:07:57Z", "hours": 0.5186, "text": "I also fixed a bug where the bloom’s blur looped around to the other side of the screen."}, {"post_id": 58887, "ts": "2026-08-31T13:42:45Z", "hours": 0.8592, "text": "PIXELATION POST-PROCESSING EFFECT I made my post-processing system so expandable that I just casually added it ‘cause I thought it would look cool in the game I’m making. I’m sure as hell right about that."}, {"post_id": 58002, "ts": "2026-08-30T10:41:46Z", "hours": 3.0525, "text": "I wasted so much time trying to optimize it all to lead to nothing, but I did end up optimizing some stuff with the Surfaces along with actual color blending for them. I did end up optimizing a bit, but that’s basically nothing. This is the most worthless update to this entire project, I don’t even know how I spent 3 hours on this."}, {"post_id": 52632, "ts": "2026-08-22T21:10:39Z", "hours": 1.3003, "text": "I completely rewrote the text rendering in the Surface class and also fixed a giant memory leak. Here’s a picture of it in use in my game."}, {"post_id": 51872, "ts": "2026-08-21T19:11:56Z", "hours": 0.6219, "text": "I rewrote the texture loading part of GLTF loading because it just plain didn’t work since I updated everything to tinygltf3, but I didn’t notice because it was after the demo. Anyways, it’s done now."}, {"post_id": 51319, "ts": "2026-08-20T22:03:59Z", "hours": 0.4669, "text": "I also rewrote the single mesh gltf loading function to return the material and the entire vertex and index arrays, because I’ll need them for a feature I’m making for my game. This is slowly turning into engine development and I kinda like it."}, {"post_id": 50898, "ts": "2026-08-20T11:18:10Z", "hours": 4.5806, "text": "I worked for over 4 hours, but the renderer finally works as a library!!! That’s right, just put it in as a git submodule, add it as a subdirectory to you CMake project, and there it is! Way too much work for something so simple, but I had to debug a whole lot of stuff. I also edited the README to feature usage instructions and also how to try the demo."}, {"post_id": 49166, "ts": "2026-08-17T20:06:43Z", "hours": 1.8336, "text": "THE GREAT DEBUGGING and A DEMO This is the final post as long as everything works as intended. I fixed every single validation layer error that occurred, so this project is officially bug-free (to my knowledge) . I also made a really simple demo that I uploaded to the github releases tab of the repository. I also finalized the readme, so now the project also has a fancy description. What a ride, I love this project."}, {"post_id": 47631, "ts": "2026-08-15T17:22:29Z", "hours": 0.6358, "text": "FINAL POLISHING (mostly just making the API more useable) I genuinely can’t believe this. I did it, I made a renderer in Vulkan. Well, I’m still not in the clear yet, but I’m very close. Changelog: updated Skin struct to include find_joint() function added Pose struct updated existing skinned mesh systems to work with the Pose struct added sample_clip(), compute_global_pose(), compute_skinning_matrices(), pose_set_local(), pose_set_global(), pose_get_global(), update_animation() and finalize_pose(). These are all helpers for making work with animated and rigged meshes a whole lot easier moved all of the functions inside the gvk namespace, because they were about half and half before."}, {"post_id": 47191, "ts": "2026-08-14T22:29:34Z", "hours": 3.0672, "text": "SKINNED MESHES AND RIGGING This renderer is extremely close to done. I just implemented fully rigged (and animated) meshes. They render properly and animations work too (although I didn’t really care enough to show an example) . Now I am at the last 2 steps of this renderer before starting work on a game in it: 1. Polish up all the API commands so it’s more user friendly. For example, skinned meshes work and can be adjusted manually, but I have a really good idea on how to make working with them super easy, so I’ll definitely implement that. 2. Make a demo that includes basically everything I have developed so far. This step also includes writing compatibility for multiple platforms, because so far I’ve only tested this project on Ubuntu, and I’ll definitely need a windows version too. And that’s it, the project is nearing it’s completion. I can’t wait to make a proper game in this, which I’ll document too of course. Also, I’m writing all of this while I’m on a vacation in Denmark, so I’m quite far from home, but I’m extremely motivated to get this project finished."}, {"post_id": 45337, "ts": "2026-08-11T18:43:26Z", "hours": 3.4436, "text": "SSAO (screen-space ambient occlusion) This one was fun. Ambient occlusion is just a little shadow thing at the edge of meshes. It is not realistic, technically it doesn’t exist in the real world, yet it looks so much better with it. To be honest I don’t have a lot to say about this, it’s done and it’s cool."}, {"post_id": 42894, "ts": "2026-08-07T21:01:17Z", "hours": 1.6756, "text": "SCENE LOADING I just got home from a 10 day adventure that’ll never forget, but I’m back to code, and to get myself to shake into the civilized world again I decided to do a simpler feature before shadow mapping, so I implemented full scene loading from GLTF files. It’s a pretty handy feature, I’m glad I finally made it. It doesn’t just load models and materials, but lights too, pretty handy."}, {"post_id": 35091, "ts": "2026-07-26T09:27:19Z", "hours": 0.3281, "text": "NORMAL MAPPING This was a really easy update, most of the shader changes were copied from my last engine, and the CPU side of things was just changing the vertex struct and loading the tangents in the mesh loading function. But it works."}, {"post_id": 34858, "ts": "2026-07-25T22:07:52Z", "hours": 3.8317, "text": "Well well well. Seems like it’s time for LIGHTING !!!!! finally This was not easy, and yet it was made so much easier by having done it once before last year. I added support for a directional light, a dynamic (aka not hard coded, so pratically infinite amount of) point lights and spot lights, full PBR, and I also made a little handy editor to go along with it, although that’s not in the renderer that’s just in the demo project. Anyways, this was an incredible journey filled with pain and suffering like never before, and I’m so glad I’m through it all. And if this was a challenge, I don’t know what shadow mapping is going to be, which is going to be basically right now, I’m going to add tanget space normal mapping and then it’s already shadowmapping. I’m mentally unprepared, but oh well what can I do?"}, {"post_id": 33983, "ts": "2026-07-24T11:18:42Z", "hours": 1.8858, "text": "This change is not too visible, but it is a major change in the engine MATERIALS Everybody who worked in any sort of 3D graphics knows what materials are. And those know, that the next step after this is lighting . This wouldn’t have been that big of a change, if not for one issue. I’m developing on linux, and every once in a while my GPU drivers uninstall themselves, so everything runs on the integrated graphics on the CPU. That happened, but I thought that the code just became really slow because I was sending 6 images to the GPU every single frame, and that slowed it down. So I spent a bunch of time making a large optimization, and it worked like a charm, it ran fast. Then I found out the entire thing was running on the CPU and I didn’t even need to optimize it. Anyway, it’s here, and it’s fast"}, {"post_id": 33448, "ts": "2026-07-23T12:32:42Z", "hours": 2.7142, "text": "POST-PROCESSING STACK and TONEMAPPING AND COLOR GRADING (post-processing effect 5) This is the finale to the post-processing saga, because I’m finished with tonemapping and color grading. Everything will look really good and cool and whatever, altough I’ve been coding non-stop for 2.5 hours and I don’t really care to give an explanation right now. I don’t have to explain color grading everybody knows that, and tonemapping is the process of mapping the internal HDR render image to an LDR (whatever it’s called) image that the display can actually render properly, how cool is that?"}, {"post_id": 32903, "ts": "2026-07-22T11:24:50Z", "hours": 1.3728, "text": "BLOOM (post-processing effect 4) I’m almost done with all of the post-processing effects, and this was by far the hardest of them all, but I managed to push through it. I’m really proud of myself, because I finally understand Vulkan enough where I didn’t need any sort of outside help to debug this error. I think I can finally call myself someone who understands Vulkan now. Anyway, now I just need to make tonemapping and the effects are done. After that I just make the simplest pipeline to composite it all, and I’m done with that as well."}, {"post_id": 32861, "ts": "2026-07-22T09:31:30Z", "hours": 1.115, "text": "VIGNETTE (post-processing effect 3) This was the most fun I’ve had debugging something in a while. This was really simple to implement, although I can’t really say a lot. The initialization was the same as the other effects, the actual logic of it was pretty similar, the shader wasn’t too hard to write too, but added up it was pretty bad. I accidentally left one of the push parameters in the CPU code as an int, but a float in the GPU code, which I ended up having to chase down for quite a while. The values are over the top on the image so it is more visible on the screenshot, of course I won’t leave it like this. Also, I have written a new readme for the github page. I just kinda wanted to, and thought why not?"}, {"post_id": 32630, "ts": "2026-07-21T22:19:26Z", "hours": 0.3061, "text": "BOX BLUR (post-processing effect 2) I have to admit this took 11 minutes, and the rest of the 5 minutes I spent in this devlog was spent debugging 3 new errors so I can make a post about this feature too. It took so little because I literally just copied and renamed the gaussian blur functions, and changed the shader. Still, I have box blur now. Actually, I think there’s quite a difference between the 2 blurs, quite cool. Of course now that I look at it it’s barely visible in the screenshots."}, {"post_id": 32617, "ts": "2026-07-21T22:00:32Z", "hours": 2.6194, "text": "I thought how cool would it be if I just did a whole 10 hour devlog with all of post-processing in it, but I realized I wouldn’t be able to show off all the cool stuff I’ve done, so I’m doing it effect by effect, anyway, GAUSSIAN BLUR (post-processing effect 1) But not just that, I also brainstormed out the entire post-processing system, and “implemented” it. I didn’t exactly implement it yet because I need to finish all the effects, but it’s there. I still have to finish: box blur, bloom, vignette and tonemapping, and I also want support for custom effects, but that’ll be really easy so I don’t want to put it on this list."}, {"post_id": 31844, "ts": "2026-07-20T15:30:20Z", "hours": 1.5975, "text": "MSAA !! (multisampled anti-aliasing) I always viewed anit-aliasing as this mystery thing that can make a game prettier and I’ll never know how it works. I have to say, it was way easier than expected, most of the time I spent was on some stupid bug or general debugging. You can’t really see the difference in a small screenshot, but it looks so much better full screen."}, {"post_id": 31201, "ts": "2026-07-19T12:30:48Z", "hours": 1.5542, "text": "2D rendering!! I have to admit this feature was kinda easy to implement, because most of it was ripped straight from my last game engine, but I did it because I think it is a really smart way of handling how a 2D system should work. Everything relies on the Surface class, the display itself is a surface, the loaded images are surfaces, and those surfaces can draw to eachother. This makes the system easy yet expandable. I think it’s kinda cool. It was heavily inspired by how pygame does things."}, {"post_id": 31151, "ts": "2026-07-19T10:09:03Z", "hours": 1.3306, "text": "And just like that, the next major update is done! SKYBOXES and other stuff Here’s a full changelog of the last 3 posts: I wrote a really handy shader compiler to make this update just a bit easier, now it automatically compiles all shaders at once I don’t have to do it one by one I wrote a compositing pass that finally has a use case as can be seen right now. The skybox and the objects are rendered separately to separate images, and the compositing pass combines them and renders them to the screen together. Might sound simple, and I have to admit if I understood Vulkan a bit better it might have been, but right now I’m really proud of myself for it. Of course the headline feature: The Skybox . This is most of what I’ve been working on for the last 3 updates. It’s done in a really cool way. The easy way of doing a skybox is to just render it as one giant object and then bim bam boom there it is, but sadly that has a couple of issues, the largest one is that this is extremely lazy. So I did it the smart way instead. What you’re seeing there is actually a cube a tad bit smaller than the monkey, but it’s rendered in a separate pass, where I only pass the camera’s rotation and not the position, and I also have the depth disabled. I render that to a separate image, use the compositing pass, and there it is, a beautiful, very stable and very professional skybox. I’m almost done rambling, but I have to mention one last feature, and that is the loading of equirectangular images into a cubemap texture . I think I’ve typed enough for this update, but if you care you can look it up or like look at my code. Next up: 2D rendering and I have some great ideas for it"}, {"post_id": 30908, "ts": "2026-07-18T21:44:56Z", "hours": 1.5617, "text": "This is a change that cannot be seen, but the composite pipeline is actually working. This is a really simple step in the graphics pipeline, it takes the images from the previous passes and combines them to make a final image. This will be useful for future features like 2D drawing, post-processing, the skybox, etc., so I’m happy I managed to implement it. It’s not something that can be seen with the naked eye, but believe me it’s there and I’m so happy for it. As always, this is next to some generic bugfixes here and there, but it’s been 1.5 hours and I forgot what I fixed and what I didn’t so if you happen to care enough this is open-source just like go and check it out."}, {"post_id": 30852, "ts": "2026-07-18T19:58:13Z", "hours": 1.6753, "text": "I’m well into developing the skybox system along with a compositing pass , but since I needed to write so many new shaders for this update, I decided to write a simple shader compiler, and I kinda want to show it off so it’s not lost in the giant list of changes that I’ll push in the next update. That’s it, I rest my case, that’s all I wanted until I’m finished."}, {"post_id": 30103, "ts": "2026-07-17T12:46:44Z", "hours": 2.2475, "text": "I finished frustum culling . You’ve probably seen this feature in some random wannabe gamedevs post on tiktok saying how they “optimized their game” by enabling frustum culling in Unity and calling themselves genius for it. Well it wasn’t as easy as pressing a button for me. Here’s how it works: I generate an axis aligned bounding box (AABB) for every object when loaded. Every frame I generate 6 planes for each boundary of the camera, the left, right, bottom, top, near and far planes. Then I also calculate the world position AABB for each mesh, which is just translating the original AABB and making a new one from that’s boundary. From that, it’s actually quite simple to compare if the box is inside the frustum or not, though it’s kinda hard to explain so I won’t bother, but I just run that for every object, and it basically makes it, so if an object is not inside the camera’s vision, then it just makes it disappear. I attached the majority of the logic in the second picture"}, {"post_id": 28824, "ts": "2026-07-15T10:08:18Z", "hours": 1.3122, "text": "I implemented a fully automatic mipmap system . Basically, mipmaps are lower quality version of a texture that appear the farther you are from an object. The image I attached is of mipmap layer 4, but of course this was set manually to showcase the system working."}, {"post_id": 28331, "ts": "2026-07-14T14:52:20Z", "hours": 0.6636, "text": "I wrote a giant list on what I want to implement into this framework to make it full. I’m pretty sure I’ll be done in about 150-200 hours, which I have about 40 days to make before the end of this thing. That is 3.75 - 5 hours of coding in a day. Anyway, here’s the list: TODO FEATURES: lighting gpu scene data uniform buffer ambient light directional light point lights tangent space normal mapping tangent generation in gltf loading dynamic light count proper api for handling lights shadow mapping depth-only pipeline shadow map image light space matrix shadow pass shadow sampling in the main fragment shader shadow bias PCF filtering material system material struct (albedo map, normal map, roughness map, emissive map, scalar tint and roughness and metallic factors) material descriptor layout default fallback textures gltf material loading draw_mesh api update emissive support in the shader creating and destroying materials for user-made materials mipmaps and proper sample management mipmap generation on upload mip count calculation sampler cache (so samplers are never duplicated) instanced rendering per-instance storage buffer draw_mesh_instanced api write the shader for it (gl_InstanceIndex) move to indirect drawing so the instance count can eventually come from gpu-side data skybox cubemap loading skybox pipeline skybox shader set_skybox api frustrum culling bounding sphere per mesh (compute in loading by finding the disctance from the centroid across all vectires) frustrum plane extraction (gribb-hartmann) cull loop stats readout post processing stack fullscreen traingle pipeline HDR tonemapping guassian blur api box blur api bloom vignette 2D rendering quad mesh 2D pipeline surface class default surface draw_surface draw_rect font atlas rendering MSAA multisample draw image resolve attachment configurable sample count"}, {"post_id": 28166, "ts": "2026-07-14T09:18:04Z", "hours": 0.8786, "text": "I have to admit I’m pretty proud of myself. I implemented the proper transformations for objects , I also made a good camera system , and I fixed the uv mapping of objects, so textures finally work properly. All this in under an hour."}, {"post_id": 19382, "ts": "2026-06-30T17:57:36Z", "hours": 1.0408, "text": "To be completely honest this engine development thing is going a lot more awful than I could have imagined. I tried to implement a proper camera and transformations for the objects, and now nothing works, yet I barely changed anything. I have been staring at this function for like 2 hours, I’ve tried everything, and nothing works."}, {"post_id": 18575, "ts": "2026-06-29T19:26:50Z", "hours": 1.0686, "text": "I finally finished the guide (🥳🥳🥳), so it’s time to make the game engine I want . My first improvement was adding a render queue, which basically means I can render anything in a much user friendly way."}, {"post_id": 18301, "ts": "2026-06-29T12:31:38Z", "hours": 0.8061, "text": "Thanks to the major rework of the allocation of descriptors, I have managed to implemented textures into rendering. I haven’t made texture loading yet, since it’ll be an engine feature and I’m working on project setup , so enjoy the beautiful pink-black checkerboard pattern on Suzie, the Blender monkey."}, {"post_id": 18277, "ts": "2026-06-29T11:27:47Z", "hours": 1.3389, "text": "I did a giant rework of the descriptor allocation to make handling textures a breeze in the future. Yes, I did mostly just follow the guide, but I am really getting the hang of how Vulkan works, and the guide is ending in a couple of chapers, and the rest will be up to me, and I already feel ready for the task. I have to admit it doesn’t exactly work yet, but I’m working on patching it, it shouldn’t be an issue."}, {"post_id": 18218, "ts": "2026-06-29T09:03:15Z", "hours": 0.4683, "text": "Mesh rendering is finally complete. This is a full 3D scene with a little monkey, rendered perfectly in perspective."}, {"post_id": 17917, "ts": "2026-06-28T21:08:40Z", "hours": 1.0294, "text": "So mesh loading and rendering works, although I haven’t gotten the world matrix and transformations quite right😅 The guide I’m using to learn Vulkan actually recommended I use fastgltf, but I ended up going with tinygltf, as I’ve used it before and have a bunch more experience in it, and oh boy is having experience a good feeling when learning VK"}, {"post_id": 17836, "ts": "2026-06-28T19:36:25Z", "hours": 1.1339, "text": "I’m progressing rather fast, I implemented a full mesh buffer system, which allows me to render any mesh. Mesh loading will be the next task, but until then the best display I can do is a colorful rectangle, I hope that’s good enough"}, {"post_id": 16164, "ts": "2026-06-26T08:40:00Z", "hours": 0.4853, "text": "Implementing a proper graphics pipeline was surprisingly easy. I remembered a lot from my experience in sokol and of course the guide was quite helpful as well. Got from a compute shader to a proper pipeline very fast. I’m still very eager to get back to the fun part of graphics programming and not be stuck in setup hell, but the next step is writing the mesh buffers, so that’ll be fun."}, {"post_id": 11826, "ts": "2026-06-19T08:22:42Z", "hours": 1.095, "text": "I finished the ImGui implementation, I’m starting to get the hang of things. I’m still following vkguide.dev for the setup phase, but I’m eager to finally get to the fun part of graphics programming"}, {"post_id": 4078, "ts": "2026-06-07T08:34:21Z", "hours": 1.0794, "text": "After about an hour of following vkguide.dev, I managed to make a little compute shader that display 16×16 cells of a gradient. Great start!"}]...
|
Title: GVK renderer by @gungu | Stardance
Devlogs Title: GVK renderer by @gungu | Stardance
Devlogs:
After about an hour of following vkguide.dev, I managed to make a little compute shader that display 16×16 cells of a gradient. Great start!
I finished the ImGui implementation, I’m starting to get the hang of things. I’m still following vkguide.dev for the setup phase, but I’m eager to finally get to the fun part of graphics programming
Implementing a proper graphics pipeline was surprisingly easy. I remembered a lot from my experience in sokol and of course the guide was quite helpful as well. Got from a compute shader to a proper pipeline very fast. I’m still very eager to get back to the fun part of graphics programming and not be stuck in setup hell, but the next step is writing the mesh buffers, so that’ll be fun.
I’m progressing rather fast, I implemented a full mesh buffer system, which allows me to render any mesh. Mesh loading will be the next task, but until then the best display I can do is a colorful rectangle, I hope that’s good enough
So mesh loading and rendering works, although I haven’t gotten the world matrix and transformations quite right😅 The guide I’m using to learn Vulkan actually recommended I use fastgltf, but I ended up going with tinygltf, as I’ve used it before and have a bunch more experience in it, and oh boy is having experience a good feeling when learning VK
Mesh rendering is finally complete. This is a full 3D scene with a little monkey, rendered perfectly in perspective.
I did a giant rework of the descriptor allocation to make handling textures a breeze in the future. Yes, I did mostly just follow the guide, but I am really getting the hang of how Vulkan works, and the guide is ending in a couple of chapers, and the rest will be up to me, and I already feel ready for the task. I have to admit it doesn’t exactly work yet, but I’m working on patching it, it shouldn’t be an issue.
Thanks to the major rework of the allocation of descriptors, I have managed to implemented textures into rendering. I haven’t made texture loading yet, since it’ll be an engine feature and I’m working on project setup , so enjoy the beautiful pink-black checkerboard pattern on Suzie, the Blender monkey.
I finally finished the guide (🥳🥳🥳), so it’s time to make the game engine I want . My first improvement was adding a render queue, which basically means I can render anything in a much user friendly way.
To be completely honest this engine development thing is going a lot more awful than I could have imagined. I tried to implement a proper camera and transformations for the objects, and now nothing works, yet I barely changed anything. I have been staring at this function for like 2 hours, I’ve tried everything, and nothing works.
I have to admit I’m pretty proud of myself. I implemented the proper transformations for objects , I also made a good camera system , and I fixed the uv mapping of objects, so textures finally work properly. All this in under an hour.
I wrote a giant list on what I want to implement into this framework to make it full. I’m pretty sure I’ll be done in about 150-200 hours, which I have about 40 days to make before the end of this thing. That is 3.75 - 5 hours of coding in a day. Anyway, here’s the list: TODO FEATURES: lighting gpu scene data uniform buffer ambient light directional light point lights tangent space normal mapping tangent generation in gltf loading dynamic light count proper api for handling lights shadow mapping depth-only pipeline shadow map image light space matrix shadow pass shadow sampling in the main fragment shader shadow bias PCF filtering material system material struct (albedo map, normal map, roughness map, emissive map, scalar tint and roughness and metallic factors) material descriptor layout default fallback textures gltf material loading draw_mesh api update emissive support in the shader creating and destroying materials for user-made materials mipmaps and proper sample management mipmap generation on upload mip count calculation sampler cache (so samplers are never duplicated) instanced rendering per-instance storage buffer draw_mesh_instanced api write the shader for it (gl_InstanceIndex) move to indirect drawing so the instance count can eventually come from gpu-side data skybox cubemap loading skybox pipeline skybox shader set_skybox api frustrum culling bounding sphere per mesh (compute in loading by finding the disctance from the centroid across all vectires) frustrum plane extraction (gribb-hartmann) cull loop stats readout post processing stack fullscreen traingle pipeline HDR tonemapping guassian blur api box blur api bloom vignette 2D rendering quad mesh 2D pipeline surface class default surface draw_surface draw_rect font atlas rendering MSAA multisample draw image resolve attachment configurable sample count
I implemented a fully automatic mipmap system . Basically, mipmaps are lower quality version of a texture that appear the farther you are from an object. The image I attached is of mipmap layer 4, but of course this was set manually to showcase the system working.
I finished frustum culling . You’ve probably seen this feature in some random wannabe gamedevs post on tiktok saying how they “optimized their game” by enabling frustum culling in Unity and calling themselves genius for it. Well it wasn’t as easy as pressing a button for me. Here’s how it works: I generate an axis aligned bounding box (AABB) for every object when loaded. Every frame I generate 6 planes for each boundary of the camera, the left, right, bottom, top, near and far planes. Then I also calculate the world position AABB for each mesh, which is just translating the original AABB and making a new one from that’s boundary. From that, it’s actually quite simple to compare if the box is inside the frustum or not, though it’s kinda hard to explain so I won’t bother, but I just run that for every object, and it basically makes it, so if an object is not inside the camera’s vision, then it just makes it disappear. I attached the majority of the logic in the second picture
I’m well into developing the skybox system along with a compositing pass , but since I needed to write so many new shaders for this update, I decided to write a simple shader compiler, and I kinda want to show it off so it’s not lost in the giant list of changes that I’ll push in the next update. That’s it, I rest my case, that’s all I wanted until I’m finished.
This is a change that cannot be seen, but the composite pipeline is actually working. This is a really simple step in the graphics pipeline, it takes the images from the previous passes and combines them to make a final image. This will be useful for future features like 2D drawing, post-processing, the skybox, etc., so I’m happy I managed to implement it. It’s not something that can be seen with the naked eye, but believe me it’s there and I’m so happy for it. As always, this is next to some generic bugfixes here and there, but it’s been 1.5 hours and I forgot what I fixed and what I didn’t so if you happen to care enough this is open-source just like go and check it out.
And just like that, the next major update is done! SKYBOXES and other stuff Here’s a full changelog of the last 3 posts: I wrote a really handy shader compiler to make this update just a bit easier, now it automatically compiles all shaders at once I don’t have to do it one by one I wrote a compositing pass that finally has a use case as can be seen right now. The skybox and the objects are rendered separately to separate images, and the compositing pass combines them and renders them to the screen together. Might sound simple, and I have to admit if I understood Vulkan a bit better it might have been, but right now I’m really proud of myself for it. Of course the headline feature: The Skybox . This is most of what I’ve been working on for the last 3 updates. It’s done in a really cool way. The easy way of doing a skybox is to just render it as one giant object and then bim bam boom there it is, but sadly that has a couple of issues, the largest one is that this is extremely lazy. So I did it the smart way instead. What you’re seeing there is actually a cube a tad bit smaller than the monkey, but it’s rendered in a separate pass, where I only pass the camera’s rotation and not the position, and I also have the depth disabled. I render that to a separate image, use the compositing pass, and there it is, a beautiful, very stable and very professional skybox. I’m almost done rambling, but I have to mention one last feature, and that is the loading of equirectangular images into a cubemap texture . I think I’ve typed enough for this update, but if you care you can look it up or like look at my code. Next up: 2D rendering and I have some great ideas for it
2D rendering!! I have to admit this feature was kinda easy to implement, because most of it was ripped straight from my last game engine, but I did it because I think it is a really smart way of handling how a 2D system should work. Everything relies on the Surface class, the display itself is a surface, the loaded images are surfaces, and those surfaces can draw to eachother. This makes the system easy yet expandable. I think it’s kinda cool. It was heavily inspired by how pygame does things.
MSAA !! (multisampled anti-aliasing) I always viewed anit-aliasing as this mystery thing that can make a game prettier and I’ll never know how it works. I have to say, it was way easier than expected, most of the time I spent was on some stupid bug or general debugging. You can’t really see the difference in a small screenshot, but it looks so much better full screen.
I thought how cool would it be if I just did a whole 10 hour devlog with all of post-processing in it, but I realized I wouldn’t be able to show off all the cool stuff I’ve done, so I’m doing it effect by effect, anyway, GAUSSIAN BLUR (post-processing effect 1) But not just that, I also brainstormed out the entire post-processing system, and “implemented” it. I didn’t exactly implement it yet because I need to finish all the effects, but it’s there. I still have to finish: box blur, bloom, vignette and tonemapping, and I also want support for custom effects, but that’ll be really easy so I don’t want to put it on this list.
BOX BLUR (post-processing effect 2) I have to admit this took 11 minutes, and the rest of the 5 minutes I spent in this devlog was spent debugging 3 new errors so I can make a post about this feature too. It took so little because I literally just copied and renamed the gaussian blur functions, and changed the shader. Still, I have box blur now. Actually, I think there’s quite a difference between the 2 blurs, quite cool. Of course now that I look at it it’s barely visible in the screenshots.
VIGNETTE (post-processing effect 3) This was the most fun I’ve had debugging something in a while. This was really simple to implement, although I can’t really say a lot. The initialization was the same as the other effects, the actual logic of it was pretty similar, the shader wasn’t too hard to write too, but added up it was pretty bad. I accidentally left one of the push parameters in the CPU code as an int, but a float in the GPU code, which I ended up having to chase down for quite a while. The values are over the top on the image so it is more visible on the screenshot, of course I won’t leave it like this. Also, I have written a new readme for the github page. I just kinda wanted to, and thought why not?
BLOOM (post-processing effect 4) I’m almost done with all of the post-processing effects, and this was by far the hardest of them all, but I managed to push through it. I’m really proud of myself, because I finally understand Vulkan enough where I didn’t need any sort of outside help to debug this error. I think I can finally call myself someone who understands Vulkan now. Anyway, now I just need to make tonemapping and the effects are done. After that I just make the simplest pipeline to composite it all, and I’m done with that as well.
POST-PROCESSING STACK and TONEMAPPING AND COLOR GRADING (post-processing effect 5) This is the finale to the post-processing saga, because I’m finished with tonemapping and color grading. Everything will look really good and cool and whatever, altough I’ve been coding non-stop for 2.5 hours and I don’t really care to give an explanation right now. I don’t have to explain color grading everybody knows that, and tonemapping is the process of mapping the internal HDR render image to an LDR (whatever it’s called) image that the display can actually render properly, how cool is that?
This change is not too visible, but it is a major change in the engine MATERIALS Everybody who worked in any sort of 3D graphics knows what materials are. And those know, that the next step after this is lighting . This wouldn’t have been that big of a change, if not for one issue. I’m developing on linux, and every once in a while my GPU drivers uninstall themselves, so everything runs on the integrated graphics on the CPU. That happened, but I thought that the code just became really slow because I was sending 6 images to the GPU every single frame, and that slowed it down. So I spent a bunch of time making a large optimization, and it worked like a charm, it ran fast. Then I found out the entire thing was running on the CPU and I didn’t even need to optimize it. Anyway, it’s here, and it’s fast
Well well well. Seems like it’s time for LIGHTING !!!!! finally This was not easy, and yet it was made so much easier by having done it once before last year. I added support for a directional light, a dynamic (aka not hard coded, so pratically infinite amount of) point lights and spot lights, full PBR, and I also made a little handy editor to go along with it, although that’s not in the renderer that’s just in the demo project. Anyways, this was an incredible journey filled with pain and suffering like never before, and I’m so glad I’m through it all. And if this was a challenge, I don’t know what shadow mapping is going to be, which is going to be basically right now, I’m going to add tanget space normal mapping and then it’s already shadowmapping. I’m mentally unprepared, but oh well what can I do?
NORMAL MAPPING This was a really easy update, most of the shader changes were copied from my last engine, and the CPU side of things was just changing the vertex struct and loading the tangents in the mesh loading function. But it works.
SCENE LOADING I just got home from a 10 day adventure that’ll never forget, but I’m back to code, and to get myself to shake into the civilized world again I decided to do a simpler feature before shadow mapping, so I implemented full scene loading from GLTF files. It’s a pretty handy feature, I’m glad I finally made it. It doesn’t just load models and materials, but lights too, pretty handy.
SSAO (screen-space ambient occlusion) This one was fun. Ambient occlusion is just a little shadow thing at the edge of meshes. It is not realistic, technically it doesn’t exist in the real world, yet it looks so much better with it. To be honest I don’t have a lot to say about this, it’s done and it’s cool.
SKINNED MESHES AND RIGGING This renderer is extremely close to done. I just implemented fully rigged (and animated) meshes. They render properly and animations work too (although I didn’t really care enough to show an example) . Now I am at the last 2 steps of this renderer before starting work on a game in it: 1. Polish up all the API commands so it’s more user friendly. For example, skinned meshes work and can be adjusted manually, but I have a really good idea on how to make working with them super easy, so I’ll definitely implement that. 2. Make a demo that includes basically everything I have developed so far. This step also includes writing compatibility for multiple platforms, because so far I’ve only tested this project on Ubuntu, and I’ll definitely need a windows version too. And that’s it, the project is nearing it’s completion. I can’t wait to make a proper game in this, which I’ll document too of course. Also, I’m writing all of this while I’m on a vacation in Denmark, so I’m quite far from home, but I’m extremely motivated to get this project finished.
FINAL POLISHING (mostly just making the API more useable) I genuinely can’t believe this. I did it, I made a renderer in Vulkan. Well, I’m still not in the clear yet, but I’m very close. Changelog: updated Skin struct to include find_joint() function added Pose struct updated existing skinned mesh systems to work with the Pose struct added sample_clip(), compute_global_pose(), compute_skinning_matrices(), pose_set_local(), pose_set_global(), pose_get_global(), update_animation() and finalize_pose(). These are all helpers for making work with animated and rigged meshes a whole lot easier moved all of the functions inside the gvk namespace, because they were about half and half before.
THE GREAT DEBUGGING and A DEMO This is the final post as long as everything works as intended. I fixed every single validation layer error that occurred, so this project is officially bug-free (to my knowledge) . I also made a really simple demo that I uploaded to the github releases tab of the repository. I also finalized the readme, so now the project also has a fancy description. What a ride, I love this project.
I worked for over 4 hours, but the renderer finally works as a library!!! That’s right, just put it in as a git submodule, add it as a subdirectory to you CMake project, and there it is! Way too much work for something so simple, but I had to debug a whole lot of stuff. I also edited the README to feature usage instructions and also how to try the demo.
I also rewrote the single mesh gltf loading function to return the material and the entire vertex and index arrays, because I’ll need them for a feature I’m making for my game. This is slowly turning into engine development and I kinda like it.
I rewrote the texture loading part of GLTF loading because it just plain didn’t work since I updated everything to tinygltf3, but I didn’t notice because it was after the demo. Anyways, it’s done now.
I completely rewrote the text rendering in the Surface class and also fixed a giant memory leak. Here’s a picture of it in use in my game.
I wasted so much time trying to optimize it all to lead to nothing, but I did end up optimizing some stuff with the Surfaces along with actual color blending for them. I did end up optimizing a bit, but that’s basically nothing. This is the most worthless update to this entire project, I don’t even know how I spent 3 hours on this.
PIXELATION POST-PROCESSING EFFECT I made my post-processing system so expandable that I just casually added it ‘cause I thought it would look cool in the game I’m making. I’m sure as hell right about that.
I also fixed a bug where the bloom’s blur looped around to the other side of the screen.
Screen-space reflections would be a major challenge, but I learned that making the skybox reflect off of shiny surfaces is a pretty good way of making your renders seem much better. As of right now it technically works, but I came to realize that I wasn’t loading materials right, so if an image didn’t have a roughness texture, then it would end up completely shiny. I’m almost done fixing it.
SKYBOX REFLECTIONS This is a neat trick I did in my last engine and I’m happy I recreated it in this one. Every single shiny surface reflects the skybox, which while isn’t realistic, it does make those surfaces look a lot more shiny than what they actually are, which is a great hack. It sure as hell looks better in the environments I make.
FOG Yeah I just added fog because I thought it would look cool in my game. Obviously it’s over the top in this image because I wanted to show it off. I’m pretty proud of this one, definitely one of the more complex post-processing effects.
I made a few minor tweaks to fog, and I started debugging it, which I ended up completely stopping and reverting, as it was useless. To be honest I’m really trying to find where this 27 minutes appeared, because I don’t remember spending half an hour on this
Ships:
GVK (short for gungu vulkan) is my new renderer using the Vulkan graphics api. I miss the times when I worked with pygame and love2d, where rendering an image was one simple line of code, and I intend to bring that experience to 3D with this project. Everything is designed to be as easy as possible for the user, just writes gvk::draw_mesh(mesh, material, position, scale, rotation); and the mesh is where you want it, how you want it. But don’t mistake it, this is not a game engine, this is just a renderer, something you can build an engine on. I made this tool so my later projects have a graphical backbone to build on, but every game needs a different engine. Ever since I started graphics programming last year I knew that one day I had to learn Vulkan if I ever wanted a job in it in the future, and I’m very proud of myself for finally doing it. This was the greatest challenge I faced in programming so far, and I so glad I tackled it. And as for AI: This project was created so I could learn Vulkan, and if I copied everything from AI that would have been to effective. My goal was to use as little AI as I could, while still leaving out the headaches of development. Here’s what I used AI for: Many of the shaders were written by AI, but that’s because I haven’t learned any of the maths I need to know to write any of these shader. When a shader wasn’t too math heavy I wrote it myself, but there weren’t too many of those. The GLTF loading isn’t hard, it’s just a headache to work with it. GLTF is a horrible format for developers, but it’s the best I knew, so I rather had AI write the GLTF loading functions. I’m still glad I did that, I would have learned nothing from writing those.
This is the second ship of my game engine / renderer. To explain, I like calling it a renderer instead of a game engine, because I purposefully tried to add as few bloat features as I could, I just wanted something that made rendering something that I don’t have to think about. More info on the README page, this isn’t a good explanation. Just know that it isn’t just a basic Vulkan abstraction, this is a full renderer with PBR, many post-processing effects, skyboxes, dynamic lights, rigged and animated meshes and frustrum culling ’cause why not. Changelog since the last ship: 2 new post-processing effects, pixelation and fog I also added a feature where shiny objects reflect the skybox, which isn’t realistic, but it adds a great sense of realism and I like to add it to my games. one of the largest changes was turning this into an actual library instead of an executable, which allows easier integration. I also made a full game as a tech demo for this project, it can be found at this link or under my stardance profile. It turned out really well, and I’m proud of myself, because I finally made a game engine that I can actually make games in easily. (The screenshot is from the game) and the smallest but still a significant change was rewriting the entire 2D rendering part of the engine for 2 reasons: it had a memory leak, and text rendering was buggy, slow and barely worked....
|
1792993753.995224
|
1793080153.995224
|
|
8348
|
MineJS by @vaito | Stardance
|
vaito
|
2
|
109.0
|
1486
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-19T04:02:17Z", "hours": 49.0, "multiplier": 10.9, "payout": 536, "blessing": "neutral", "text": "There is a lot of changes since the last ship (I have made more 15 release since it). To sum up: Multi version support :D 26.3 is partially supported because there is some issue with decoding packets Container is here (but you can’t interact with it yet, just viewing) You can chat now I have implemented online account protocol but there is an issue prevent me from testing it so it is considered as unstable for now. There is some small changed in protocol Fix some bugs in physics engine", "repo": "https://github.com/VaitoSoi/minejs/", "demo": "https://www.npmjs.com/package/@vaitosoi/minejs"}, {"ship_num": 2, "ts": "2026-07-16T12:50:01Z", "hours": 60.0, "multiplier": 15.92, "payout": 950, "blessing": "neutral", "text": "This is a Minecraft client package, allow you to create Minecraft bot and joining server. This ship provide some basic functionality of Minecraft bot, including: Walking around Getting blocks Also, this ship include the low-level client for talking directly to the server.", "repo": "https://github.com/VaitoSoi/minejs/", "demo": "https://www.npmjs.com/package/@vaitosoi/minejs"}]...
|
[{"post_id": 80874, "ts": "202 [{"post_id": 80874, "ts": "2026-10-19T03:56:17Z", "hours": 2.7606, "text": "I’m not doing much these day beside fixing bugs because I’m quite busy with uni homework and I’m quite bored now I post this devlog to submit all of my hours before Stardance end"}, {"post_id": 74028, "ts": "2026-09-26T15:37:46Z", "hours": 1.4769, "text": "The container is finally opened, turn out there is a bug in my code which tell the server the wrong location of the chest ;-; P/s: Thank you Claude for helping me find this issue"}, {"post_id": 73148, "ts": "2026-09-24T14:14:32Z", "hours": 5.7178, "text": "I have implemented the Use item on packet for interacting with block, but seem like there was something wrong with it because it is expected to return an open screen packet but nothing returned. Beside that, I have implemented the tablist. Now you can see the header and footer Also, I’m preparing for supporting version 26.3. I’m wondering whether should I make a new ship. P/s: Rust rewrite when >:)"}, {"post_id": 65383, "ts": "2026-09-10T14:17:17Z", "hours": 1.8811, "text": "I added container But it is just clientbound Add container and block interaction soon"}, {"post_id": 64194, "ts": "2026-09-08T12:52:05Z", "hours": 5.9608, "text": "I have completed the reading slot part. I just know that a slot can hold that many data ;-; Btw, I’ll soon complete the container part, meaning that you can use chest now"}, {"post_id": 59464, "ts": "2026-09-01T10:24:05Z", "hours": 4.2389, "text": "The bot can chat now I have to reimplement the bitset to let this run btw"}, {"post_id": 53887, "ts": "2026-08-24T16:16:27Z", "hours": 3.5672, "text": "Hello again, I’m sorry for not update this project much since I’m working on the other. I just found out that the Mojang just revoke my app approval without any notification ;-; Btw, I fixed the bug that ignore the chunk packet and update the README about the current situation ;-;"}, {"post_id": 44586, "ts": "2026-08-10T13:25:50Z", "hours": 8.7567, "text": "Hello again, sorry for a almost-9-hour devlogs I’m just making the auth part for joining premium server and the thing is not going well for now ;-; I have registered the app for accessing Minecraft API but by some magic, I’m still blocked I’m also making the feature for verifying message signature"}, {"post_id": 40068, "ts": "2026-08-03T13:15:54Z", "hours": 6.7083, "text": "I do so much work that I forgot what to summarize here So before, everything is placed in TCPClient, which is fine for hard-coded packets. But now, I’m making the dynamic packet translating for multiple version supports. And while making it, it need reference from TCPClient, then TCPClient need to a reference of it and so on… So I have split the functionality into corresponding space. So now, each of class has its own responsibility: TCPClient for throwing and receiving packets through TCP connection VersionCodec for translating packets Dispatcher for handling packet SharedState for holding states So that is the whole update. Hope youre enjoy your day, also this project :D"}, {"post_id": 37686, "ts": "2026-07-30T16:10:51Z", "hours": 8.1078, "text": "Sorry for another 8-hour devlog ;-; Now MineJS support 26.2 I’m working on a system for mapping version and packet so MineJS can support multiple version at the same time, instead of one atm (because the packet ID is hard-coded). I also make another tool for scrapping Minecraft Wiki for packet structure (disclaimer: This is not an automate running so it will not spam the Wiki, please don’t ban me ;-;). Thats it, have a great day"}, {"post_id": 29459, "ts": "2026-07-16T12:40:35Z", "hours": 5.4361, "text": "Oh, I spent 5h for setting up documents? That’s crazy :D Btw, I have setup an auto document page using TypeDoc. I also setup Github Action for automating publish package and build document page."}, {"post_id": 28434, "ts": "2026-07-14T17:52:04Z", "hours": 5.855, "text": "NOW MY BOT CAN WALK ON STAIR I think it is ready to be publish ONE MORE TIME, I’m very sorry for not logging this painful process much, please please please forgive me"}, {"post_id": 27246, "ts": "2026-07-12T17:09:55Z", "hours": 2.0628, "text": "MY BOT CAN WALK NOW 🎉"}, {"post_id": 26816, "ts": "2026-07-11T20:33:54Z", "hours": 8.795, "text": "Hello, sorry for forget logging regularly In the last whole week, my only job is looking at Minecraft code, ask Claude what the beep beep is that, arguing with myself do I have to do this and then continue Btw I managed to write the trimmed Minecraft physics engine and ready to test it out Unfortunately, my code isn’t reading the Registry well so maybe tomorrow :D P/s: If you still read this, have a good day and please vote for me ;-;"}, {"post_id": 22246, "ts": "2026-07-04T16:43:26Z", "hours": 0.6108, "text": "I’m getting through clipping function, which is mandatory to calculate the damage from falling"}, {"post_id": 21570, "ts": "2026-07-03T16:24:49Z", "hours": 1.2514, "text": "Finally done the collide function ;-;"}, {"post_id": 20886, "ts": "2026-07-02T16:42:55Z", "hours": 1.2506, "text": "I have implemented the base collide function and ready for the entity collide :D"}, {"post_id": 19423, "ts": "2026-06-30T19:00:04Z", "hours": 2.0781, "text": "I added VoxelShape and some math related to it. Now I can reconstruct the collision the shape of the block and, hopefully, mobs. Thats mean I’m ready to let my client be able to move, I hope so"}, {"post_id": 18504, "ts": "2026-06-29T17:51:18Z", "hours": 6.9461, "text": "Now I’m implementing the “move” method for the client, which invokes physics things, which is very very difficult for me That why I’m not updating regularly ;-; (I’m sorry)"}, {"post_id": 16401, "ts": "2026-06-26T18:01:32Z", "hours": 4.4861, "text": "I’m making auth system and this takes me so much timeeeeeeeeeee Btw, I’m waiting for Mojang to approve my Azure app so I can test the auth API"}, {"post_id": 15114, "ts": "2026-06-24T15:35:22Z", "hours": 1.1408, "text": "I’m working on parsing player chat message now"}, {"post_id": 14337, "ts": "2026-06-23T13:07:17Z", "hours": 4.6081, "text": "This whole week is filled with debugging and small updates so here is the summary: Now the Client can handle Chunk datas, including blocks, biomes and block entites I also add more packet handling, events and decoder function. I’m moving to high-level client and the first function is move. Todo list: Inspect how Minecraft code handle movement and collision. Implement it :D"}, {"post_id": 9222, "ts": "2026-06-15T14:30:17Z", "hours": 3.2814, "text": "I’m on my way to reading chunk data. I have burnt all of my Github Copilot monthly credit only to realize that Copilot inserted a redundant read that collapse all reading latter :_D"}, {"post_id": 8565, "ts": "2026-06-14T07:26:57Z", "hours": 1.1917, "text": "It is finally working 🎉"}, {"post_id": 8530, "ts": "2026-06-14T06:05:46Z", "hours": 1.9508, "text": "I have handled all required packet so this should be theoretically playable. I also do some refactoring for a cleaner codebase :D"}, {"post_id": 8158, "ts": "2026-06-13T16:34:15Z", "hours": 2.3169, "text": "I forgot to make the devlogs so here is all of the updates: I’m heading towards making the main client All decoder and encoder have been merged to a single file for simpler file structure I’m making the encrypting things"}, {"post_id": 4223, "ts": "2026-06-07T13:37:37Z", "hours": 0.7256, "text": "The SNBT decoder is kinda work for now :D I’m moving to encoder (or should I >:D)"}, {"post_id": 3586, "ts": "2026-06-06T16:15:08Z", "hours": 1.8761, "text": "I’m working on SNBT decoder, which is way more trickier than NBT ;-; I’m just done the basic part and planning for nested object."}, {"post_id": 2804, "ts": "2026-06-05T16:59:44Z", "hours": 3.8261, "text": "I have made a NBT decoder and encoder. You can see it encode and decode in the terminal :D"}]...
|
Title: MineJS by @vaito | Stardance
Devlogs:
I ha Title: MineJS by @vaito | Stardance
Devlogs:
I have made a NBT decoder and encoder. You can see it encode and decode in the terminal :D
I’m working on SNBT decoder, which is way more trickier than NBT ;-; I’m just done the basic part and planning for nested object.
The SNBT decoder is kinda work for now :D I’m moving to encoder (or should I >:D)
I forgot to make the devlogs so here is all of the updates: I’m heading towards making the main client All decoder and encoder have been merged to a single file for simpler file structure I’m making the encrypting things
I have handled all required packet so this should be theoretically playable. I also do some refactoring for a cleaner codebase :D
It is finally working 🎉
I’m on my way to reading chunk data. I have burnt all of my Github Copilot monthly credit only to realize that Copilot inserted a redundant read that collapse all reading latter :_D
This whole week is filled with debugging and small updates so here is the summary: Now the Client can handle Chunk datas, including blocks, biomes and block entites I also add more packet handling, events and decoder function. I’m moving to high-level client and the first function is move. Todo list: Inspect how Minecraft code handle movement and collision. Implement it :D
I’m working on parsing player chat message now
I’m making auth system and this takes me so much timeeeeeeeeeee Btw, I’m waiting for Mojang to approve my Azure app so I can test the auth API
Now I’m implementing the “move” method for the client, which invokes physics things, which is very very difficult for me That why I’m not updating regularly ;-; (I’m sorry)
I added VoxelShape and some math related to it. Now I can reconstruct the collision the shape of the block and, hopefully, mobs. Thats mean I’m ready to let my client be able to move, I hope so
I have implemented the base collide function and ready for the entity collide :D
Finally done the collide function ;-;
I’m getting through clipping function, which is mandatory to calculate the damage from falling
Hello, sorry for forget logging regularly In the last whole week, my only job is looking at Minecraft code, ask Claude what the beep beep is that, arguing with myself do I have to do this and then continue Btw I managed to write the trimmed Minecraft physics engine and ready to test it out Unfortunately, my code isn’t reading the Registry well so maybe tomorrow :D P/s: If you still read this, have a good day and please vote for me ;-;
MY BOT CAN WALK NOW 🎉
NOW MY BOT CAN WALK ON STAIR I think it is ready to be publish ONE MORE TIME, I’m very sorry for not logging this painful process much, please please please forgive me
Oh, I spent 5h for setting up documents? That’s crazy :D Btw, I have setup an auto document page using TypeDoc. I also setup Github Action for automating publish package and build document page.
Sorry for another 8-hour devlog ;-; Now MineJS support 26.2 I’m working on a system for mapping version and packet so MineJS can support multiple version at the same time, instead of one atm (because the packet ID is hard-coded). I also make another tool for scrapping Minecraft Wiki for packet structure (disclaimer: This is not an automate running so it will not spam the Wiki, please don’t ban me ;-;). Thats it, have a great day
I do so much work that I forgot what to summarize here So before, everything is placed in TCPClient, which is fine for hard-coded packets. But now, I’m making the dynamic packet translating for multiple version supports. And while making it, it need reference from TCPClient, then TCPClient need to a reference of it and so on… So I have split the functionality into corresponding space. So now, each of class has its own responsibility: TCPClient for throwing and receiving packets through TCP connection VersionCodec for translating packets Dispatcher for handling packet SharedState for holding states So that is the whole update. Hope youre enjoy your day, also this project :D
Hello again, sorry for a almost-9-hour devlogs I’m just making the auth part for joining premium server and the thing is not going well for now ;-; I have registered the app for accessing Minecraft API but by some magic, I’m still blocked I’m also making the feature for verifying message signature
Hello again, I’m sorry for not update this project much since I’m working on the other. I just found out that the Mojang just revoke my app approval without any notification ;-; Btw, I fixed the bug that ignore the chunk packet and update the README about the current situation ;-;
The bot can chat now I have to reimplement the bitset to let this run btw
I have completed the reading slot part. I just know that a slot can hold that many data ;-; Btw, I’ll soon complete the container part, meaning that you can use chest now
I added container But it is just clientbound Add container and block interaction soon
I have implemented the Use item on packet for interacting with block, but seem like there was something wrong with it because it is expected to return an open screen packet but nothing returned. Beside that, I have implemented the tablist. Now you can see the header and footer Also, I’m preparing for supporting version 26.3. I’m wondering whether should I make a new ship. P/s: Rust rewrite when >:)
The container is finally opened, turn out there is a bug in my code which tell the server the wrong location of the chest ;-; P/s: Thank you Claude for helping me find this issue
I’m not doing much these day beside fixing bugs because I’m quite busy with uni homework and I’m quite bored now I post this devlog to submit all of my hours before Stardance end
Ships:
This is a Minecraft client package, allow you to create Minecraft bot and joining server. This ship provide some basic functionality of Minecraft bot, including: Walking around Getting blocks Also, this ship include the low-level client for talking directly to the server.
There is a lot of changes since the last ship (I have made more 15 release since it). To sum up: Multi version support :D 26.3 is partially supported because there is some issue with decoding packets Container is here (but you can’t interact with it yet, just viewing) You can chat now I have implemented online account protocol but there is an issue prevent me from testing it so it is considered as unstable for now. There is some small changed in protocol Fix some bugs in physics engine...
|
1793091018.5216951
|
1793177418.5216951
|
|
8385
|
My first slack bot! by @AdaChan | Stardance
|
AdaChan
|
2
|
21.0
|
75
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T17:54:11Z", "hours": 17.0, "multiplier": 4.36, "payout": 75, "blessing": "neutral", "text": "I made Koizinho, a Slack bot with several fun and useful commands. Some of my favorite commands are /koi-user, which generates a card with information about a selected user, /koi-sound, which lets you choose and listen to animal sounds, and /koi-tts, which converts text into spoken audio. The most challenging part was definitely /koi-user. I wanted the bot to generate a custom image with information about a user, but working with Canvas in JavaScript was much harder than I expected. I ran into a lot of errors, especially with positioning and generating the image correctly. I also experimented with Python and JavaScript communicating with each other before eventually deciding to keep the image generation in JavaScript. There were many moments where fixing one error somehow created another one. 😭 I’m proud that I managed to keep working on the project even when some parts became really frustrating. I learned a lot about Slack commands, modals, APIs, image generation, audio, and organizing a larger JavaScript project. /koi-user was especially satisfying because it went from being a huge mess of errors to actually working.", "repo": "https://github.com/Hallow303/MySlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BJ6DKPT36"}, {"ship_num": 2, "ts": "2026-07-14T22:21:44Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a Slack bot using JavaScript. My bot features nine commands, including /koi-ping, which replies with “Pong!” to check if the bot is online; /koi-apod, which uses the NASA API to send the Astronomy Picture of the Day; commands like /koi-cat, /koi-dog, /koi-fox, and /koi-duck, which use APIs to send random animal images; /koi-sound, which sends MP3 animal sounds; /koi-say, which repeats the user’s message; and /koi-tts, which converts text to speech using Microsoft Edge TTS. To develop the project, I used various APIs, primarily to fetch images from NASA and of animals. I also worked with audio files to implement the commands related to sounds and text-to-speech conversion. The biggest challenge during development was dealing with file paths. Honestly… who decided it had to work that way? 😭 I spent a long time trying to figure out why the files weren’t being found before I managed to organize everything correctly.", "repo": "https://github.com/Hallow303/MySlackBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BJ6DKPT36"}]...
|
[{"post_id": 63069, "ts": "202 [{"post_id": 63069, "ts": "2026-09-06T17:41:50Z", "hours": 3.6686, "text": "DevLog #22 I finally got it working. I discovered the error was in how the commands were being loaded, since they were all being loaded from a “commands” folder via index.js , they were taking too long to respond; because of the response time limit, an error kept popping up. I managed to fix it, though, and now it works =) I also fixed some bugs in other commands."}, {"post_id": 62211, "ts": "2026-09-05T14:00:46Z", "hours": 0.6558, "text": "DevLog #21 I made some adjustments, I think I’ll rewrite some of the bot’s commands, I fixed some existing errors (and created others =( unfortunately). But I think it’s getting better now."}, {"post_id": 61188, "ts": "2026-09-04T00:12:53Z", "hours": 0.4742, "text": "DevLog #20 I updated the project’s README; it remains quite simple because the bot is also simple, haha. I gave up on the /koi-user command for now, it was giving me too many headaches, so I’ll leave it for later."}, {"post_id": 59935, "ts": "2026-09-02T00:06:33Z", "hours": 0.4239, "text": "DevLog #19 I created a command called /koi-help that lists all the bot’s available commands. This will be useful since we already have quite a few commands; I plan to replace that wall of text with a menu where the user can choose a category (general, animals, utilities, games), and the bot will respond with the commands for that category to avoid cluttering the chat."}, {"post_id": 59929, "ts": "2026-09-01T23:27:35Z", "hours": 1.2503, "text": "DevLog #18 So… this command is really frustrating me; every time I fix something, another error pops up, and I don’t know what to do. At least most of it is already done. I hope I can sort this out soon."}, {"post_id": 58183, "ts": "2026-08-30T15:18:53Z", "hours": 1.08, "text": "DevLog #17 Still struggling with this command ( /koi-user ), it was supposed to be ‘easy,’ but I just ended up complicating the code even further. Well, I’m still trying to organize the elements in the image and fix an error that prevents the bot from sending the card to the user, it’s getting really annoying (why does JS have to be like this?). I hope to finish this command soon; maybe DevLog 18 will be about that, but for now, I’ll keep working on it 🥀🙏"}, {"post_id": 51363, "ts": "2026-08-20T23:57:09Z", "hours": 0.3933, "text": "DevLog #16 Fixing bugs again. I gave up on using Python + JavaScript; honestly, it was getting too difficult. Now I need to sort out the positioning, because when I was porting the code from Python to JS, the elements ended up out of place. I’m not sure if Python and JS handle image pixels differently."}, {"post_id": 50302, "ts": "2026-08-19T13:47:19Z", "hours": 0.5353, "text": "DevLog #15 I’m reviewing some commands I’ve already implemented and fixing a few issues. Strangely, the bot is taking a while to respond; it keeps displaying the message /koi-calc failed because the app did not respond... repeatedly, yet a few seconds later, the bot actually executes the command which is really odd."}, {"post_id": 49987, "ts": "2026-08-19T00:40:21Z", "hours": 0.8622, "text": "DevLog #14 Today I added two more simple commands /koi-rps and /koi-calc . /koi-calc actually already existed, but I had ended up deleting it. /koi-rps is a small Rock, Paper, Scissors game. The user chooses rock, paper, or scissors, and Koizinho makes a random choice. Then, the bot compares the two choices and announces whether the player won, lost, or tied."}, {"post_id": 46635, "ts": "2026-08-14T01:05:51Z", "hours": 1.1544, "text": "DevLogs #13 I didn’t implement any new features today; I just fixed some bugs that were cropping up in Koizinho’s commands."}, {"post_id": 44304, "ts": "2026-08-09T23:34:58Z", "hours": 0.4442, "text": "DevLog #12 I discovered that it’s possible to make .py and .js interact with each other. Now I’m learning how this communication works and trying not to explode in the process. XD"}, {"post_id": 44012, "ts": "2026-08-09T14:39:57Z", "hours": 1.5331, "text": "DevLog #11 Well, I finally finished the Easy-PIL part in Python! The card is ready now. I also set up the system so that data is automatically populated based on a JSON file. When someone uses the /koi-user command, it generates a JSON file with the selected user’s information, and then the Python script uses that data to create the card. I designed the card myself in Canva. I spent way too much time on something so simple XD, but I really liked the result!"}, {"post_id": 43630, "ts": "2026-08-09T00:23:13Z", "hours": 2.215, "text": "DevLog #10 I’m changing the user info card. I’m now using Python to generate the images. Honestly, using the JS Canvas is a real pain, and Python’s Easy-PIL turns out to be much easier. Now, the tricky part will be handling the communication between the .js and .py files."}, {"post_id": 41051, "ts": "2026-08-05T00:23:54Z", "hours": 1.3928, "text": "DevLog #9 I’m developing a new command called /koi-user . It displays information about the user you choose. Since the arguments of slash commands in Slack aren’t very organized (in the sense of having defined types), I had to work around the problem. In Discord, for example, you can define an argument as user_mention , so Discord itself understands that it’s a user. In Slack, it doesn’t work that way. You can’t even pass a mention as an argument to the command, lol. So the solution I found was to create a modal. When you use the command, a window opens with all the users in the workspace, and you can search by name or choose one from the list. After sending, the bot generates an image with some user information and sends the result to you. (Some text is still in Portuguese because I haven’t translated everything into English yet. ;-;)"}, {"post_id": 38937, "ts": "2026-08-01T15:28:57Z", "hours": 1.1856, "text": "DevLog #8 I decided to continue developing the bot, so here’s what I’ve done since the last update: 1. Code organization I improved the project’s organization by separating command groups into different files. Now, each file has a specific responsibility: animals → animal-related commands, such as /koi-duck , /koi-cat , /koi-dog , and others. space → space-related commands, such as /koi-apod . I plan to add more commands in this category later. utility → general commands, such as /koi-say and /koi-tts . This has made the code much easier to maintain and allows for easier addition of new features. 2. Loading system for responses One thing that really bothered me was when a command took a while to respond. On Discord, when a bot is processing something, a “Bot is thinking…” message appears while it works. I couldn’t find an exact equivalent on Slack, so I decided to create my own system. Now, some commands send a loading message first—for example: 🦆 Looking for a duck… Once the command finishes, that message is updated with the final response. This makes for a much better experience; before, it used to look like the bot had stopped working lol. 3. Direct messages with the bot I finally managed to enable DMs for the bot! Now you can chat directly with Koizinho in private. It can already respond to simple messages, for example: User: Hi! Koizinho: Hello! I still want to improve this part. Maybe I’ll add some form of AI or a smarter conversation system in the future."}, {"post_id": 28574, "ts": "2026-07-14T22:13:38Z", "hours": 0.2719, "text": "DevLog #7 The bot is finally online! 🚀 I deployed it to Hack Club Nest, so now it runs 24/7."}, {"post_id": 27993, "ts": "2026-07-13T23:19:54Z", "hours": 0.6744, "text": "DevLog #6 Okay… I finally finished the project’s README! 🎉 I think it turned out pretty cool; it’s not super professional yet, but I think it does a good job of showing what the bot can do. I might improve it in the future whenever I can shake off the laziness, haha. I also realized I used Axios quite a bit in this project. Most of the new commands rely on external APIs. There isn’t much else to add to this devlog; at least I’m happy it’s not just a bot that replies “pong” 😆"}, {"post_id": 27958, "ts": "2026-07-13T22:02:39Z", "hours": 0.6086, "text": "DevLog #5 New command, wow!! 🎉🎉🎉🎉 Person: “Wait… isn’t that just /koi-say ?” Well… sort of. It’s basically an improved /koi-say . Meet the new command: /koi-tts . As the name suggests, TTS stands for Text to Speech . The bot takes the text you send, uses Microsoft Edge’s TTS voices to turn it into an MP3, and then sends the audio back to you. Pretty cool. =) (I hate path 😭)"}, {"post_id": 27928, "ts": "2026-07-13T21:07:14Z", "hours": 0.2622, "text": "DevLog #4 Today I added a very simple command: /koi-say . It does exactly what the name suggests: the bot repeats the message you type. Nothing spectacular, but it’s a classic, useful command for testing interactions. If you don’t type anything, the bot replies by letting you know that text is required. The message might seem a bit blunt… but remember: it’s just a koizinho . 😭 By the way, I was thinking about how to explain the bot’s name in English. I think the closest equivalent would be something like “little koi” . In Portuguese, we use the suffix -zinho to form a diminutive that often conveys affection or cuteness. So, koizinho would be something like a “little koi” or an affectionate way to refer to the bot."}, {"post_id": 27912, "ts": "2026-07-13T20:43:58Z", "hours": 0.6733, "text": "DevLog #3 So… continuing the animal saga, I present to you: /koi-sound . 🐾 This command makes the bot send a humble animal selection menu. Then, you just pick one (there are still only a few, hahaha), and the bot replies with an .mp3 file containing the chosen animal’s sound. The list of animals is still small, but I plan to add many more in future devlogs. And a quick rant: I hate path . 😭 Who decided that handling file paths had to be done this way?"}, {"post_id": 27881, "ts": "2026-07-13T19:50:39Z", "hours": 0.7331, "text": "DevLog #2 Today I added 4 new commands to the bot. To be honest, it wasn’t very difficult. It was basically copying the code from the first command, changing the API, and adapting it to the particularities of each one. (Seriously… who decided that each API would return the data in a different way? 😭 I just wanted to grab a humble image.) The new commands are: 🦆 /koi-duck — shows a picture of a random duck. 🐱 /koi-cat — shows a picture of a random cat. 🐶 /koi-dog — shows a picture of a random dog. 🦊 /koi-fox — shows a picture of a random fox. It was a short devlog, but at least now the bot is becoming more fun."}, {"post_id": 27406, "ts": "2026-07-12T23:10:13Z", "hours": 1.0067, "text": "DevLog #1 For this fresh start, I’ve added two commands: /koi-ping — a command that makes the bot reply with “🏓 Pong!”. /koi-apod — fetches NASA’s Astronomy Picture of the Day (APOD) and sends the image along with its description. Well… I think that’s it for this devlog."}]...
|
Title: My first slack bot! by @AdaChan | Stardance Title: My first slack bot! by @AdaChan | Stardance
Devlogs:
DevLog #1 For this fresh start, I’ve added two commands: /koi-ping — a command that makes the bot reply with “🏓 Pong!”. /koi-apod — fetches NASA’s Astronomy Picture of the Day (APOD) and sends the image along with its description. Well… I think that’s it for this devlog.
DevLog #2 Today I added 4 new commands to the bot. To be honest, it wasn’t very difficult. It was basically copying the code from the first command, changing the API, and adapting it to the particularities of each one. (Seriously… who decided that each API would return the data in a different way? 😭 I just wanted to grab a humble image.) The new commands are: 🦆 /koi-duck — shows a picture of a random duck. 🐱 /koi-cat — shows a picture of a random cat. 🐶 /koi-dog — shows a picture of a random dog. 🦊 /koi-fox — shows a picture of a random fox. It was a short devlog, but at least now the bot is becoming more fun.
DevLog #3 So… continuing the animal saga, I present to you: /koi-sound . 🐾 This command makes the bot send a humble animal selection menu. Then, you just pick one (there are still only a few, hahaha), and the bot replies with an .mp3 file containing the chosen animal’s sound. The list of animals is still small, but I plan to add many more in future devlogs. And a quick rant: I hate path . 😭 Who decided that handling file paths had to be done this way?
DevLog #4 Today I added a very simple command: /koi-say . It does exactly what the name suggests: the bot repeats the message you type. Nothing spectacular, but it’s a classic, useful command for testing interactions. If you don’t type anything, the bot replies by letting you know that text is required. The message might seem a bit blunt… but remember: it’s just a koizinho . 😭 By the way, I was thinking about how to explain the bot’s name in English. I think the closest equivalent would be something like “little koi” . In Portuguese, we use the suffix -zinho to form a diminutive that often conveys affection or cuteness. So, koizinho would be something like a “little koi” or an affectionate way to refer to the bot.
DevLog #5 New command, wow!! 🎉🎉🎉🎉 Person: “Wait… isn’t that just /koi-say ?” Well… sort of. It’s basically an improved /koi-say . Meet the new command: /koi-tts . As the name suggests, TTS stands for Text to Speech . The bot takes the text you send, uses Microsoft Edge’s TTS voices to turn it into an MP3, and then sends the audio back to you. Pretty cool. =) (I hate path 😭)
DevLog #6 Okay… I finally finished the project’s README! 🎉 I think it turned out pretty cool; it’s not super professional yet, but I think it does a good job of showing what the bot can do. I might improve it in the future whenever I can shake off the laziness, haha. I also realized I used Axios quite a bit in this project. Most of the new commands rely on external APIs. There isn’t much else to add to this devlog; at least I’m happy it’s not just a bot that replies “pong” 😆
DevLog #7 The bot is finally online! 🚀 I deployed it to Hack Club Nest, so now it runs 24/7.
DevLog #8 I decided to continue developing the bot, so here’s what I’ve done since the last update: 1. Code organization I improved the project’s organization by separating command groups into different files. Now, each file has a specific responsibility: animals → animal-related commands, such as /koi-duck , /koi-cat , /koi-dog , and others. space → space-related commands, such as /koi-apod . I plan to add more commands in this category later. utility → general commands, such as /koi-say and /koi-tts . This has made the code much easier to maintain and allows for easier addition of new features. 2. Loading system for responses One thing that really bothered me was when a command took a while to respond. On Discord, when a bot is processing something, a “Bot is thinking…” message appears while it works. I couldn’t find an exact equivalent on Slack, so I decided to create my own system. Now, some commands send a loading message first—for example: 🦆 Looking for a duck… Once the command finishes, that message is updated with the final response. This makes for a much better experience; before, it used to look like the bot had stopped working lol. 3. Direct messages with the bot I finally managed to enable DMs for the bot! Now you can chat directly with Koizinho in private. It can already respond to simple messages, for example: User: Hi! Koizinho: Hello! I still want to improve this part. Maybe I’ll add some form of AI or a smarter conversation system in the future.
DevLog #9 I’m developing a new command called /koi-user . It displays information about the user you choose. Since the arguments of slash commands in Slack aren’t very organized (in the sense of having defined types), I had to work around the problem. In Discord, for example, you can define an argument as user_mention , so Discord itself understands that it’s a user. In Slack, it doesn’t work that way. You can’t even pass a mention as an argument to the command, lol. So the solution I found was to create a modal. When you use the command, a window opens with all the users in the workspace, and you can search by name or choose one from the list. After sending, the bot generates an image with some user information and sends the result to you. (Some text is still in Portuguese because I haven’t translated everything into English yet. ;-;)
DevLog #10 I’m changing the user info card. I’m now using Python to generate the images. Honestly, using the JS Canvas is a real pain, and Python’s Easy-PIL turns out to be much easier. Now, the tricky part will be handling the communication between the .js and .py files.
DevLog #11 Well, I finally finished the Easy-PIL part in Python! The card is ready now. I also set up the system so that data is automatically populated based on a JSON file. When someone uses the /koi-user command, it generates a JSON file with the selected user’s information, and then the Python script uses that data to create the card. I designed the card myself in Canva. I spent way too much time on something so simple XD, but I really liked the result!
DevLog #12 I discovered that it’s possible to make .py and .js interact with each other. Now I’m learning how this communication works and trying not to explode in the process. XD
DevLogs #13 I didn’t implement any new features today; I just fixed some bugs that were cropping up in Koizinho’s commands.
DevLog #14 Today I added two more simple commands /koi-rps and /koi-calc . /koi-calc actually already existed, but I had ended up deleting it. /koi-rps is a small Rock, Paper, Scissors game. The user chooses rock, paper, or scissors, and Koizinho makes a random choice. Then, the bot compares the two choices and announces whether the player won, lost, or tied.
DevLog #15 I’m reviewing some commands I’ve already implemented and fixing a few issues. Strangely, the bot is taking a while to respond; it keeps displaying the message /koi-calc failed because the app did not respond... repeatedly, yet a few seconds later, the bot actually executes the command which is really odd.
DevLog #16 Fixing bugs again. I gave up on using Python + JavaScript; honestly, it was getting too difficult. Now I need to sort out the positioning, because when I was porting the code from Python to JS, the elements ended up out of place. I’m not sure if Python and JS handle image pixels differently.
DevLog #17 Still struggling with this command ( /koi-user ), it was supposed to be ‘easy,’ but I just ended up complicating the code even further. Well, I’m still trying to organize the elements in the image and fix an error that prevents the bot from sending the card to the user, it’s getting really annoying (why does JS have to be like this?). I hope to finish this command soon; maybe DevLog 18 will be about that, but for now, I’ll keep working on it 🥀🙏
DevLog #18 So… this command is really frustrating me; every time I fix something, another error pops up, and I don’t know what to do. At least most of it is already done. I hope I can sort this out soon.
DevLog #19 I created a command called /koi-help that lists all the bot’s available commands. This will be useful since we already have quite a few commands; I plan to replace that wall of text with a menu where the user can choose a category (general, animals, utilities, games), and the bot will respond with the commands for that category to avoid cluttering the chat.
DevLog #20 I updated the project’s README; it remains quite simple because the bot is also simple, haha. I gave up on the /koi-user command for now, it was giving me too many headaches, so I’ll leave it for later.
DevLog #21 I made some adjustments, I think I’ll rewrite some of the bot’s commands, I fixed some existing errors (and created others =( unfortunately). But I think it’s getting better now.
DevLog #22 I finally got it working. I discovered the error was in how the commands were being loaded, since they were all being loaded from a “commands” folder via index.js , they were taking too long to respond; because of the response time limit, an error kept popping up. I managed to fix it, though, and now it works =) I also fixed some bugs in other commands.
Ships:
I created a Slack bot using JavaScript. My bot features nine commands, including /koi-ping, which replies with “Pong!” to check if the bot is online; /koi-apod, which uses the NASA API to send the Astronomy Picture of the Day; commands like /koi-cat, /koi-dog, /koi-fox, and /koi-duck, which use APIs to send random animal images; /koi-sound, which sends MP3 animal sounds; /koi-say, which repeats the user’s message; and /koi-tts, which converts text to speech using Microsoft Edge TTS. To develop the project, I used various APIs, primarily to fetch images from NASA and of animals. I also worked with audio files to implement the commands related to sounds and text-to-speech conversion. The biggest challenge during development was dealing with file paths. Honestly… who decided it had to work that way? 😭 I spent a long time trying to figure out why the files weren’t being found before I managed to organize everything correctly.
I made Koizinho, a Slack bot with several fun and useful commands. Some of my favorite commands are /koi-user, which generates a card with information about a selected user, /koi-sound, which lets you choose and listen to animal sounds, and /koi-tts, which converts text into spoken audio. The most challenging part was definitely /koi-user. I wanted the bot to generate a custom image with information about a user, but working with Canvas in JavaScript was much harder than I expected. I ran into a lot of errors, especially with positioning and generating the image correctly. I also experimented with Python and JavaScript communicating with each other before eventually deciding to keep the image generation in JavaScript. There were many moments where fixing one error somehow created another one. 😭 I’m proud that I managed to keep working on the project even when some parts became really frustrating. I learned a lot about Slack commands, modals, APIs, image generation, audio, and organizing a larger JavaScript project. /koi-user was especially satisfying because it went from being a huge mess of errors to actually working....
|
1792993952.189234
|
1793080352.189234
|
|
8752
|
NASA Data Analytics (Nebula Insights) by @cognitay NASA Data Analytics (Nebula Insights) by @cognitayohan | Stardance...
|
cognitayohan
|
2
|
2.27
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T17:54:15Z", "hours": 0.0, "multiplier": 5.7, "payout": 2, "blessing": "neutral", "text": "Ship #1: This project is a NASA data portal that fetches live-data from NASA’s Open Source API. While many projects do this as well in just grabbing data points, this project is a step-up from that- using the data points, I used smart regression analysis to predict future coordinate points. This project makes use of NASA API and Gemini API for analysis. Hope you enjoy this fun NASA Data Workspace project!", "repo": "https://github.com/robot3-track/rocket-data-view", "demo": "https://nebulainsights.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-07T00:46:54Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NASA Mission Analytics Workspace 🛰️ Project Overview The NASA Mission Analytics Workspace is a high-fidelity, real-time telemetry dashboard designed to centralize and visualize critical multi-stream data from diverse NASA API endpoints. The application provides researchers and space enthusiasts with an integrated mission control interface to monitor planetary conditions, track near-Earth objects, and audit severe space weather events in real time. By mapping data across complex, independent astronomical data systems into a unified analytics canvas, the workspace serves as a centralized hub for tracking cosmic anomalies and structural trends. 🚀 Core Features Multi-Stream Data Ingestion: Dynamic, context-aware swapping across four distinct NASA APIs: Near-Earth Object (NEO) tracking, Mars InSight atmospheric data, Astronomy Picture of the Day (APOD) metadata, and Space Weather Database of Notifications, Knowledge, and Information (DONKI). Predictive Failover Subsystems: Built-in telemetry simulation fallbacks for historical or offline data arrays (such as the concluded Mars InSight mission parameters) to ensure continuous chart rendering and unbroken timeline data. Automated Anomaly Audit: An integrated parsing matrix that scans inbound datasets to flag, count, and isolate critical risks—such as potentially hazardous asteroids or severe M/X-class solar flare events. Fluid Layout Architecture: A fully responsive interface utilizing shadcn/ui navigation structures and dynamic grid column allocation, allowing full operational tracking across standard desktop workstation arrays down to mobile touch viewports. 🛠️ Technical Stack & Architecture Frontend Framework: React with TypeScript for Type-safe architecture and structured telemetry models. Styling & Responsive Core: Tailwind CSS utilizing fluid padding profiles, aspect-ratio bounds, and flexbox wrap-fallbacks. Component Library: shadcn/ui (leveraging , state hooks, and native transition wrappers). Icons: Lucide React vector assets. System Status: Production build complete. Remote synchronization verified. All telemetry channels online.", "repo": "https://github.com/robot3-track/rocket-data-view", "demo": "https://nebulainsights.vercel.app/"}]...
|
[{"post_id": 26176, "ts": "202 [{"post_id": 26176, "ts": "2026-07-10T20:32:45Z", "hours": 0.2714, "text": "Devlog 3: Updated Readme file to reflect project goals, standards, license, and how to deploy when forking the project."}, {"post_id": 3955, "ts": "2026-06-07T02:43:56Z", "hours": 0.3, "text": "DevLog 2: Project Standalone Optimization & APOD Ingestion Fix Data Architecture: The Overview page chart safely handles dynamic switching across all four target NASA endpoints seamlessly. UI has been updated to match Design.MD standards and removed unnecessary features in cluttering."}, {"post_id": 3908, "ts": "2026-06-07T00:43:49Z", "hours": 1.5875, "text": "Devlog 1: NASA Mission Analytics Workspace The Goal: I wanted to build a unified mission control dashboard that pulls live space data from 4 completely different NASA APIs—tracking hazardous near-Earth asteroids, Mars weather, solar flares, and deep space imagery. Where it stands: Everything is pushed live to GitHub! Telemetry is online, the charts look stunning, and it functions great! Whether you’re inspecting space anomalies on a desktop monitor or on a phone screen, it functions just like how it should!"}]...
|
Title: NASA Data Analytics (Nebula Insights) by @c Title: NASA Data Analytics (Nebula Insights) by @cognitayohan | Stardance
Devlogs:
Devlog 1: NASA Mission Analytics Workspace The Goal: I wanted to build a unified mission control dashboard that pulls live space data from 4 completely different NASA APIs—tracking hazardous near-Earth asteroids, Mars weather, solar flares, and deep space imagery. Where it stands: Everything is pushed live to GitHub! Telemetry is online, the charts look stunning, and it functions great! Whether you’re inspecting space anomalies on a desktop monitor or on a phone screen, it functions just like how it should!
DevLog 2: Project Standalone Optimization & APOD Ingestion Fix Data Architecture: The Overview page chart safely handles dynamic switching across all four target NASA endpoints seamlessly. UI has been updated to match Design.MD standards and removed unnecessary features in cluttering.
Devlog 3: Updated Readme file to reflect project goals, standards, license, and how to deploy when forking the project.
Ships:
NASA Mission Analytics Workspace 🛰️ Project Overview The NASA Mission Analytics Workspace is a high-fidelity, real-time telemetry dashboard designed to centralize and visualize critical multi-stream data from diverse NASA API endpoints. The application provides researchers and space enthusiasts with an integrated mission control interface to monitor planetary conditions, track near-Earth objects, and audit severe space weather events in real time. By mapping data across complex, independent astronomical data systems into a unified analytics canvas, the workspace serves as a centralized hub for tracking cosmic anomalies and structural trends. 🚀 Core Features Multi-Stream Data Ingestion: Dynamic, context-aware swapping across four distinct NASA APIs: Near-Earth Object (NEO) tracking, Mars InSight atmospheric data, Astronomy Picture of the Day (APOD) metadata, and Space Weather Database of Notifications, Knowledge, and Information (DONKI). Predictive Failover Subsystems: Built-in telemetry simulation fallbacks for historical or offline data arrays (such as the concluded Mars InSight mission parameters) to ensure continuous chart rendering and unbroken timeline data. Automated Anomaly Audit: An integrated parsing matrix that scans inbound datasets to flag, count, and isolate critical risks—such as potentially hazardous asteroids or severe M/X-class solar flare events. Fluid Layout Architecture: A fully responsive interface utilizing shadcn/ui navigation structures and dynamic grid column allocation, allowing full operational tracking across standard desktop workstation arrays down to mobile touch viewports. 🛠️ Technical Stack & Architecture Frontend Framework: React with TypeScript for Type-safe architecture and structured telemetry models. Styling & Responsive Core: Tailwind CSS utilizing fluid padding profiles, aspect-ratio bounds, and flexbox wrap-fallbacks. Component Library: shadcn/ui (leveraging , state hooks, and native transition wrappers). Icons: Lucide React vector assets. System Status: Production build complete. Remote synchronization verified. All telemetry channels online.
Ship #1: This project is a NASA data portal that fetches live-data from NASA’s Open Source API. While many projects do this as well in just grabbing data points, this project is a step-up from that- using the data points, I used smart regression analysis to predict future coordinate points. This project makes use of NASA API and Gemini API for analysis. Hope you enjoy this fun NASA Data Workspace project!...
|
1792994024.4372854
|
1793080424.4372854
|
|
8856
|
The Ares Horizon by @alomnsh | Stardance
|
alomnsh
|
2
|
48.73
|
322
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-20T03:08:53Z", "hours": 19.0, "multiplier": 11.4, "payout": 217, "blessing": "neutral", "text": "What did you make? I made The Ares Horizon, a Python space adventure game where you play as a NASA Flight Director. Since my last ship, I over-hauled the game by adding a brand-new landing minigame with 3 difficulties, branch-linked storylines, and dynamic custom themes. What was challenging? Ditching Tkinter for Pygame was tough because I had to learn the library from scratch to eliminate bugs. I also lost 5 hours failing to host it on the web via noVNC/Docker, forcing me to stick to an .exe. Fixing cross-platform crashes and making it run smoothly on Python 3.14 was a huge headache. What are you proud of? I’m proud of building a robust Pygame + Tkinter interface with zero prior experience. The settings menu features a slick volume slider that changes color dynamically, a factory reset, and a text-speed slider. I also successfully added a seamless “Try Again” tracker without long loading screens. What should people know so they can test your project? Windows: Go to the Releases page and download the The.Ares.Horizon.exe file to play instantly. Mac/Linux: Follow the new README steps to install system dependencies (sdl2) and run inside a Python virtual environment. Python 3.14: Run pip install pygame --ce to avoid compilation errors. Warning: Turn down the audio in the custom Settings menu if the default launch mix is too loud.", "repo": "https://github.com/alomnsh/The-Ares-Horizon", "demo": "https://github.com/alomnsh/The-Ares-Horizon/releases/tag/v2.0.0"}, {"ship_num": 2, "ts": "2026-06-20T17:02:20Z", "hours": 12.0, "multiplier": 9.08, "payout": 105, "blessing": "neutral", "text": "I made my own choice python adventure game where the player takes a high-stake role of a Flight Director at NASA and there objective is to successfully launch, navigate and land a spacecraft on the surface of Mars. To play the game follow the steps in the README. (The game uses Desktop-Based GUI, so it cannot be hosted on clouds and has to run on your local computer). I am proud of how I made it look cinematic and similar to a NASA mission control terminal.", "repo": "https://github.com/alomnsh/The-Ares-Horizon", "demo": "https://github.com/alomnsh/The-Ares-Horizon/releases/tag/v2.0.0"}]...
|
[{"post_id": 68726, "ts": "202 [{"post_id": 68726, "ts": "2026-09-15T17:01:15Z", "hours": 2.5175, "text": "Devlog #16, posting this while at school 🏫 What I did: Fixed bugs in my minigame, there are still some left to resolve Fixed a bug where when you press try again, it put the user directly in the story mode even if they wished to play the mingame Fixed of bug of the emergency glow, it kept glowing after u pressed try again Rewrote parts of code I used AI in Removed and added new comments to make it more clear and not so chaotic Fixed the pygbag sizing issue Last thing, I previously had my setting.json file in the .gitignore for testing purposes and I forgot about it so my settings are what were seen by others instead of the factory settings they should have seen Notes: Fix minigame Optimize for low end devices Possibly add mobile or tablet support?? Make new v3.0.0 releases?? Releases for many OS??"}, {"post_id": 53416, "ts": "2026-08-23T23:10:43Z", "hours": 8.8311, "text": "Devlog #15, this is a big one What i did: So graphics are finally in I would say New hover effects like button glowing CRT lines, I first added them, didn’t go as planned removed em it the felt dead for some reason so added that back again Light mode The major one, improved the mini-game, a lot, it take up the whole screen now instead of just a section like it was earlier, it has added particle effects, and actual landing zone, star backgroud, fuel and velocity control The mini game looks real good but there are some bugs, many I would say I am currently working on fixing sizing issues with GitHub pages, I think pygbag is causing it via my deploy.yml Notes: When the bugs are removed and the sizing issue is fixed I think I will be ready to ship once more"}, {"post_id": 40503, "ts": "2026-08-04T02:29:20Z", "hours": 6.3825, "text": "Devlog #14 What I did: So after I 2nd ship, I went to AirVenture so no code there, It ruined my streak So I have finally, finally pushed the code on the web by making it entirely pygame then I ran pygbag so it is now finally live on GitHub Pages Proud of myself, there is still some work to do like fixing bugs Notes: My ship rating reasons suggested to add graphics so currently working on that I also have to improve the loading screen, looks like shit The biggest bug was getting the character and line spacing right, funny ik"}, {"post_id": 31582, "ts": "2026-07-20T02:55:39Z", "hours": 2.7858, "text": "Devlog 13 !! What’s New: I added Reset All Settings to default button, to reset every thing to the “Factory Setting” New setting, users can adjust how fast the typewriter writes on the screen If the user passes the mini game and lands successfully, they would unlock the option to just play the minigame instead of have to go through the the whole story again Notes: I promised that I will release web, I tried, failed miserably, so I am just releasing a new .exe I tried everything to pygame , didn’t work out, then tried to host it on noVNC, it acted up to, I finally gave up after 5 hrs of trying, didn’t count that because that was trial and error and not actual coding (although I did had to make and modify my Dockerfile like a 100 times)"}, {"post_id": 29177, "ts": "2026-07-15T22:03:47Z", "hours": 2.2292, "text": "Devlog #12 !! What I did: So as u guys know I added audio controls in the previous devlog, I made it even better now The settings menu is now in pygame instead of tkinter The slider changes color as the volume is changed (It looks so cool!!!!! ) There is a new “Mute All Sounds” check box Notes: tkinter sucks, I loved it at first it was easy but as my code becomes more complex it just causes unnecessary bugs, so I plan to switch entirely to pygame After I make the switch I can finally publish it to the web so you guys don’t have to download the source code or an .exe file (I was planning to do this, I got many reviews saying that a website would be better, so I am doing that)"}, {"post_id": 26902, "ts": "2026-07-11T23:05:32Z", "hours": 1.5653, "text": "Devlog #11 !!! What I did: So I switched from ctypes to the pygame audio engine this is so when my game is played on MacOS or Linux it doesn’t throw errors because ctypes is a Windows thing Added a settings menu to control the volume of the background music and the emergency sounds. The user preferences are saved using a .json file Updated my README.md so the instructions to how to play my game on another operating system aren’t broken Thanks to my ship suggestion, I am trying my best to implement those suggestions into my game and have already done so with a few of them!! What might be coming next: I hope that I can add to the settings menu so the user can control how they want the colors to look in the game, so basically full customization."}, {"post_id": 26133, "ts": "2026-07-10T19:03:00Z", "hours": 2.0886, "text": "My first ship is finally here, after 3 changes requested, I added a try again screen so the user doesn’t have to through the loading when they try again now it just shows there tries. Thanks for the idea from my first ship."}, {"post_id": 20472, "ts": "2026-07-02T02:15:56Z", "hours": 0.4544, "text": "Fixed the bug made the buttons disappear if your screen was too small or you weren’t fullscreened"}, {"post_id": 20339, "ts": "2026-07-01T22:18:29Z", "hours": 6.5228, "text": "v2.0.0 I think?? What’s New: New Landing minigame!! 3 difficulties The minigame features SPIKES!! Improved GUI Changes: I orginally started building my game on tkinter thinking it would be easy because my rest of the code was build on it, but I was wrong, it was so annoying to work with and caused so many bugs that I decided to switch to pygame I have never worked with pygame before so I ha to learn and then figure out a way to combine tkinter and pygame . Also, pygame is not supported in Python 3.14 so I had to do pip install pygame --ce the community edition I got it to work and I am so proud The video is a bit speed up"}, {"post_id": 16038, "ts": "2026-06-26T01:44:55Z", "hours": 1.09, "text": "I cleaned up the UI and linked the Solar Sails choice in branch 2 to the ending choice of branch 1. I know I promised that the update after the SFX one would be customization but I want to focus more on the game itself so I would just be adding a Dark and Light mode. And doing more customization options later."}, {"post_id": 14716, "ts": "2026-06-23T22:26:53Z", "hours": 2.4447, "text": "v 1.0.1 is incoming!! What’s New: Switched from the package of playsound to ctypes New SFXs, listen to them in the attachment (After this update rolls out, I will be working on given the user the freedom to customize how they want the game to look) Turn up your sound to listen to the sounds I cut out the parts where I selected options so that I don’t reveal the answers, if you want to try it out your self head over The Ares Horizon Repo"}, {"post_id": 12589, "ts": "2026-06-20T15:41:49Z", "hours": 1.0719, "text": "Finished my README and fixed crash bug with typewriter when the window is closed while it is typing"}, {"post_id": 11662, "ts": "2026-06-19T00:21:39Z", "hours": 1.5231, "text": "Currently working on my README for this project and before this I just fix a few things in my code. Added a background music loop that loops the audio forever and then fixed a crash bug"}, {"post_id": 10267, "ts": "2026-06-16T22:16:48Z", "hours": 4.3747, "text": "Added GUI to my games, fixed countless errors and bugs, added a loaded screen, Made it so that the buttons are interactive and only popup when the typing is finished. Added more colors to my text. Progress bar for the points."}, {"post_id": 8857, "ts": "2026-06-14T18:59:46Z", "hours": 3.4211, "text": "Finished all the choice, added typewriter function and color function. Changed how I want the text to be displayed when the code is running. Added background music. Made the background audio in Canva"}, {"post_id": 7134, "ts": "2026-06-11T22:21:25Z", "hours": 1.2161, "text": "Added 1st Choice Branch, worked on storyline, started to work on 2nd choice branch"}]...
|
Title: The Ares Horizon by @alomnsh | Stardance
D Title: The Ares Horizon by @alomnsh | Stardance
Devlogs:
Added 1st Choice Branch, worked on storyline, started to work on 2nd choice branch
Finished all the choice, added typewriter function and color function. Changed how I want the text to be displayed when the code is running. Added background music. Made the background audio in Canva
Added GUI to my games, fixed countless errors and bugs, added a loaded screen, Made it so that the buttons are interactive and only popup when the typing is finished. Added more colors to my text. Progress bar for the points.
Currently working on my README for this project and before this I just fix a few things in my code. Added a background music loop that loops the audio forever and then fixed a crash bug
Finished my README and fixed crash bug with typewriter when the window is closed while it is typing
v 1.0.1 is incoming!! What’s New: Switched from the package of playsound to ctypes New SFXs, listen to them in the attachment (After this update rolls out, I will be working on given the user the freedom to customize how they want the game to look) Turn up your sound to listen to the sounds I cut out the parts where I selected options so that I don’t reveal the answers, if you want to try it out your self head over The Ares Horizon Repo
I cleaned up the UI and linked the Solar Sails choice in branch 2 to the ending choice of branch 1. I know I promised that the update after the SFX one would be customization but I want to focus more on the game itself so I would just be adding a Dark and Light mode. And doing more customization options later.
v2.0.0 I think?? What’s New: New Landing minigame!! 3 difficulties The minigame features SPIKES!! Improved GUI Changes: I orginally started building my game on tkinter thinking it would be easy because my rest of the code was build on it, but I was wrong, it was so annoying to work with and caused so many bugs that I decided to switch to pygame I have never worked with pygame before so I ha to learn and then figure out a way to combine tkinter and pygame . Also, pygame is not supported in Python 3.14 so I had to do pip install pygame --ce the community edition I got it to work and I am so proud The video is a bit speed up
Fixed the bug made the buttons disappear if your screen was too small or you weren’t fullscreened
My first ship is finally here, after 3 changes requested, I added a try again screen so the user doesn’t have to through the loading when they try again now it just shows there tries. Thanks for the idea from my first ship.
Devlog #11 !!! What I did: So I switched from ctypes to the pygame audio engine this is so when my game is played on MacOS or Linux it doesn’t throw errors because ctypes is a Windows thing Added a settings menu to control the volume of the background music and the emergency sounds. The user preferences are saved using a .json file Updated my README.md so the instructions to how to play my game on another operating system aren’t broken Thanks to my ship suggestion, I am trying my best to implement those suggestions into my game and have already done so with a few of them!! What might be coming next: I hope that I can add to the settings menu so the user can control how they want the colors to look in the game, so basically full customization.
Devlog #12 !! What I did: So as u guys know I added audio controls in the previous devlog, I made it even better now The settings menu is now in pygame instead of tkinter The slider changes color as the volume is changed (It looks so cool!!!!! ) There is a new “Mute All Sounds” check box Notes: tkinter sucks, I loved it at first it was easy but as my code becomes more complex it just causes unnecessary bugs, so I plan to switch entirely to pygame After I make the switch I can finally publish it to the web so you guys don’t have to download the source code or an .exe file (I was planning to do this, I got many reviews saying that a website would be better, so I am doing that)
Devlog 13 !! What’s New: I added Reset All Settings to default button, to reset every thing to the “Factory Setting” New setting, users can adjust how fast the typewriter writes on the screen If the user passes the mini game and lands successfully, they would unlock the option to just play the minigame instead of have to go through the the whole story again Notes: I promised that I will release web, I tried, failed miserably, so I am just releasing a new .exe I tried everything to pygame , didn’t work out, then tried to host it on noVNC, it acted up to, I finally gave up after 5 hrs of trying, didn’t count that because that was trial and error and not actual coding (although I did had to make and modify my Dockerfile like a 100 times)
Devlog #14 What I did: So after I 2nd ship, I went to AirVenture so no code there, It ruined my streak So I have finally, finally pushed the code on the web by making it entirely pygame then I ran pygbag so it is now finally live on GitHub Pages Proud of myself, there is still some work to do like fixing bugs Notes: My ship rating reasons suggested to add graphics so currently working on that I also have to improve the loading screen, looks like shit The biggest bug was getting the character and line spacing right, funny ik
Devlog #15, this is a big one What i did: So graphics are finally in I would say New hover effects like button glowing CRT lines, I first added them, didn’t go as planned removed em it the felt dead for some reason so added that back again Light mode The major one, improved the mini-game, a lot, it take up the whole screen now instead of just a section like it was earlier, it has added particle effects, and actual landing zone, star backgroud, fuel and velocity control The mini game looks real good but there are some bugs, many I would say I am currently working on fixing sizing issues with GitHub pages, I think pygbag is causing it via my deploy.yml Notes: When the bugs are removed and the sizing issue is fixed I think I will be ready to ship once more
Devlog #16, posting this while at school 🏫 What I did: Fixed bugs in my minigame, there are still some left to resolve Fixed a bug where when you press try again, it put the user directly in the story mode even if they wished to play the mingame Fixed of bug of the emergency glow, it kept glowing after u pressed try again Rewrote parts of code I used AI in Removed and added new comments to make it more clear and not so chaotic Fixed the pygbag sizing issue Last thing, I previously had my setting.json file in the .gitignore for testing purposes and I forgot about it so my settings are what were seen by others instead of the factory settings they should have seen Notes: Fix minigame Optimize for low end devices Possibly add mobile or tablet support?? Make new v3.0.0 releases?? Releases for many OS??
Ships:
I made my own choice python adventure game where the player takes a high-stake role of a Flight Director at NASA and there objective is to successfully launch, navigate and land a spacecraft on the surface of Mars. To play the game follow the steps in the README. (The game uses Desktop-Based GUI, so it cannot be hosted on clouds and has to run on your local computer). I am proud of how I made it look cinematic and similar to a NASA mission control terminal.
What did you make? I made The Ares Horizon, a Python space adventure game where you play as a NASA Flight Director. Since my last ship, I over-hauled the game by adding a brand-new landing minigame with 3 difficulties, branch-linked storylines, and dynamic custom themes. What was challenging? Ditching Tkinter for Pygame was tough because I had to learn the library from scratch to eliminate bugs. I also lost 5 hours failing to host it on the web via noVNC/Docker, forcing me to stick to an .exe. Fixing cross-platform crashes and making it run smoothly on Python 3.14 was a huge headache. What are you proud of? I’m proud of building a robust Pygame + Tkinter interface with zero prior experience. The settings menu features a slick volume slider that changes color dynamically, a factory reset, and a text-speed slider. I also successfully added a seamless “Try Again” tracker without long loading screens. What should people know so they can test your project? Windows: Go to the Releases page and download the The.Ares.Horizon.exe file to play instantly. Mac/Linux: Follow the new README steps to install system dependencies (sdl2) and run inside a Python virtual environment. Python 3.14: Run pip install pygame --ce to avoid compilation errors. Warning: Turn down the audio in the custom Settings menu if the default launch mix is too loud....
|
1793000951.3744287
|
1793087351.3744287
|
|
9197
|
rustisay by @ttyChud | Stardance
|
ttyChud
|
2
|
10.0
|
82
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T10:00:22Z", "hours": 6.0, "multiplier": 5.85, "payout": 33, "blessing": "neutral", "text": "add the ability to use it in web instead of downloading it even tho both option are available and added the ability to output the generated the gif and be able to save it localy try fixing some windows issuess but i dont have an access so i dont know", "repo": "https://github.com/Himanshu121865/rustisay", "demo": "https://himanshu121865.github.io/rustisay/"}, {"ship_num": 2, "ts": "2026-06-08T19:56:24Z", "hours": 4.0, "multiplier": 8.56, "payout": 49, "blessing": "neutral", "text": "It’s a gif to ascii converter. it uses edge detection for more crisp ascii art, it automatically support color but if u wanna turn them off just use color flag . i have also added multiple txt support you can choose as per ur preference. for installation just do cargo install rustisay that’s it,", "repo": "https://github.com/Himanshu121865/rustisay", "demo": "https://himanshu121865.github.io/rustisay/"}]...
|
[{"post_id": 48008, "ts": "202 [{"post_id": 48008, "ts": "2026-08-16T09:12:34Z", "hours": 5.6686, "text": "it’s been such a long time since i have worked on this project i been wanting to add some feature like output to gif and a web ui using wasm so it’s finaly here i have add the abiltiy to save the output ascii to a gif file and i have also add a web version with rust wasm which is really fast but not as fast as when u install it in ur pc"}, {"post_id": 5099, "ts": "2026-06-08T19:45:07Z", "hours": 3.3975, "text": "ok, so finally it works now i have added only one algo and it edge detection. i wanted to start from and easy algo but f*ck it. it’s work but i didn’t add a way to output it to gif or anything."}, {"post_id": 3411, "ts": "2026-06-06T10:19:34Z", "hours": 0.7828, "text": "Im working on a gif to ascii art converter in rust. user can upload any gif they want and choose some options how they want to get converted. then it can play the gif as ascii or save at a prescribed output dir"}]...
|
Title: rustisay by @ttyChud | Stardance
Devlogs:
Title: rustisay by @ttyChud | Stardance
Devlogs:
Im working on a gif to ascii art converter in rust. user can upload any gif they want and choose some options how they want to get converted. then it can play the gif as ascii or save at a prescribed output dir
ok, so finally it works now i have added only one algo and it edge detection. i wanted to start from and easy algo but f*ck it. it’s work but i didn’t add a way to output it to gif or anything.
it’s been such a long time since i have worked on this project i been wanting to add some feature like output to gif and a web ui using wasm so it’s finaly here i have add the abiltiy to save the output ascii to a gif file and i have also add a web version with rust wasm which is really fast but not as fast as when u install it in ur pc
Ships:
It’s a gif to ascii converter. it uses edge detection for more crisp ascii art, it automatically support color but if u wanna turn them off just use color flag . i have also added multiple txt support you can choose as per ur preference. for installation just do cargo install rustisay that’s it,
add the ability to use it in web instead of downloading it even tho both option are available and added the ability to output the generated the gif and be able to save it localy try fixing some windows issuess but i dont have an access so i dont know...
|
1792860537.9088337
|
1793724537.9088337
|
|
9316
|
OMNI-Chess by @thestarviper | Stardance
|
thestarviper
|
2
|
102.0
|
1511
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T01:14:49Z", "hours": 63.0, "multiplier": 17.79, "payout": 873, "blessing": "neutral", "text": "I made a chess engine in raylib with puzzle functionality and a movelog with a nature theme. Migrating from pygame to raylib was a big challenge that took me a while to fix all the kinks. idk the leaves are hoverable for a cool fidget thing and have fun!", "repo": "https://github.com/TheStarViper/chess-eng", "demo": "https://thestarviper.itch.io/chess-engine"}, {"ship_num": 2, "ts": "2026-06-15T03:47:41Z", "hours": 39.0, "multiplier": 16.63, "payout": 638, "blessing": "neutral", "text": "I made a chess game where you locally 1v1 someone with a move log to see move history and all the special rules/draw conditions like 50 move rule, 3 fold, insufficient material, castling, enpessent. It was challenging doing the historical move rendering because you have to keep track of all the previous board positions and the checks and square highlights Im proud of the move log because its cool yall should know that it’s low res cuz it’s not that efficient and uses pygame and am working on a re-release utilizing raylib for more proformance", "repo": "https://github.com/TheStarViper/chess-eng", "demo": "https://thestarviper.itch.io/chess-engine"}]...
|
[{"post_id": 20435, "ts": "202 [{"post_id": 20435, "ts": "2026-07-02T00:59:11Z", "hours": 4.7919, "text": "UPDATE #13 This is the last update before i ship So basically this was just the last update for this project cuz i decided i would start work on a different project, the changes i made this update are just to get ready to ship and complete the project: removed fps counter removed openings and play menu removed variants from selection as they arent polished enough removed misc debug features audio bug fixed on button hovers audio bug fixed on puzzle win"}, {"post_id": 17944, "ts": "2026-06-28T22:04:11Z", "hours": 17.1667, "text": "UPDATE #12 added features added variants support added giveaway chess added duckchess (kinda) added the start of a play screen, still working on it not much yet added easing functions to some visuals so they appear instead of popping in fixed bugs/cleanup (like 50% of this devlog) split code back into multiple files fixed that puzzle code was directly in frame update loop tons of crash fixes todo with variants and puzzles animation broke on variants draw legal moves didn’t work on custom pieces future ideas clock bots particle system effects screen shake randomize leaves menu transitions i was mainly struggling to fix crash bugs this devlog as there were multiple that i had to fix, most notably there was a crash bug when swapping between the game and puzzle menus, and loading a new ruleset for variants. My current plan now is to finish the create game screen, then work on fixing the last duckchess bugs, programming a bot then variants + polish. I may ship again if i get a chance before i finish this though. Screenshot here shots duckchess in action but I made the duck sprite using AI just so we’re clear about that because i am bad at art."}, {"post_id": 15352, "ts": "2026-06-24T23:25:28Z", "hours": 9.0172, "text": "Update #11 Added Features added puzzle side menu added puzzle streak counter skip retry hint puzzle buttons sucess rate puzzle counter sound effect for hovering button puzzles are basically done Fixed Bugs 3 fold occured in puzzle mode if you made the same wrong move 3 times same thing with 50 move rule as 3 fold puzzle would start with you instead of the computer swaps turn on failed move animations didn’t work in puzzles fixed you can select the opponent’s pieces in the puzzle during animation if you hit a frameperfect from the animation finishing on the puzzle screen and switch to the game screen it moves the piece in the game screen if there was a piece on the starting tile same bug with next puzzle button leaves sfx looped infinitely Smart Bool I added a new datatype to make my life easier called a smartbool, this is basically a boolean with a third state called NewTrue which is only true for the first cycle the boolean is updated to true. This boolean is useful for when you want to play a sound effect on hover but if you use a traditional boolean it will play every frame. you can use it like a normal boolean too like smartbool = true; or if (smartbool){} . But this new datatype makes the code easier to understand for me. struct smartbool { enum State { False, NewTrue, True }; State state = False; void operator=(bool value) {this->set(value);} operator bool() const {return state != False; } bool is_new_true() const { return state == NewTrue; } void set(bool value) { if (value) { if (state == False) state = NewTrue; } else { state = False; } } void update() { if (state == NewTrue) { state = True; } } }; Future Ideas clock bots variants more moving graphics/sfx randomize leaves on borders menu transitions (maybe) finish polishing puzzles (pretty much done)"}, {"post_id": 13961, "ts": "2026-06-22T22:21:46Z", "hours": 16.5194, "text": "UPDATE #10 added features/changes added a sidebar added a settings page with the ability to toggle 50 move counter,3 fold counter,board markings with more settings to come like high contrast and animation speed added a makefile to compile code to test instead of running a bunch of commands back to back added puzzles to the puzzle tab pulls random puzzle out of a csv things before next ship more sfx click and drag to move piece sfx plays infinitely on hovers randomize leaves placements menu transitions polish puzzles page and get rid of bugs general ideas theme switcher animation speed control move clock In this update i messed up my codebase so massively bad trying to refactor the code so alot of my time was fixing the nuke i dropped into my codebase. uhhh one of the big bugs i had to squash before this that took eternity was playing sound effects would just crash the game. It turned out the reason was i didnt add the compile flag to my makefile causing the audio mixer to crash the game. After that i added sound effects back in and then started to work on puzzles. for puzzles i took the lichess puzzle database of 6m puzzles and condensed it down to 100k for file space. I pull a random row from this file to create the puzzle and it kinda works but its still in progress."}, {"post_id": 11768, "ts": "2026-06-19T04:42:16Z", "hours": 7.4614, "text": "UPDATE #9 I presented my changes in the stardance slack and was able to get some new ideas like adding a theme switcher. I added the leaves cuz i thought it would add to the theme and then after seeing the leaves, they looked very interactable so i made them interactable. idk thats about it changes/added features leaves on outside of board leaves enlarge on hover for fidgeting i guess idk its fun tho made move log more narrow to fit a sidebar on the left added a 3 fold repetition warning that appears after 2x repetition (make togglable) added a background i got from itchio made hover dots enlarge on hover again fixed animation issues changed board markers to inside the board like originally in python updated itchio page things before next ship add sound effects back click and drag to move piece add sidebar"}, {"post_id": 10951, "ts": "2026-06-17T23:23:52Z", "hours": 7.9317, "text": "UPDATE #8 This version is not live yet as there are a few bugs that need fixing still as the port from python introduced alot. Some things i liked about porting from python to c++ is that i was able to fine tune things more and use namespaces which i like. ENUMs are also a feature i like. changes/added features Updated graphics to use pieces from itchio 50 move rule counter under game log (i plan to make it togglable) says whos turn it is to play in top right ontop of the highlighting changed entire game to pixelart because i found some assets on itchio that i thought looked really nice things needed for next ship going to add a sidebar on the left side instead of the right side add sound effects back add a background click and drag to move piece animation issues fold repetition counter under move log make itchio page look better next devlog should be when i update the itchio page and other stuff also i spent closer to 15-16 hours on this cuz it includes the last devlog"}, {"post_id": 9054, "ts": "2026-06-15T03:36:13Z", "hours": 8.3464, "text": "UPDATE #7 i wanna have the time logged for shipping but basically all i did was change some file formats for web assembly and turned down the resolution so that it would automatically scale so that it’s playable. I’m currently in the process of converting the game from pygame to c++ raylib since i know c++ already and c++ is better for WASM thats about ittttttttt live ver: https://thestarviper.itch.io/chess-engine"}, {"post_id": 7870, "ts": "2026-06-13T03:53:24Z", "hours": 8.3592, "text": "UPDATE #6 fixed bugs: all game end conditions were broken move log scrollbar didn’t appear on pawn promotion move log didnt use proper notation canceling pawn promotion didnt undo move log canceling pawn promotion capture didnt undo capture when going back in move log, if there was a check the square didnt light red couldn’t change piece to move after selecting a piece added features/changes: promotion menu is inline column added sfx better sprites for pieces draw and resign buttons now use icons move log text now uses the Audiowide regular fond massive code restructure things needed for shipping: optimization, didn’t optimize since last devlog maybe learn WHAT DA HAIL bitboards are to optimize yk click and drag to move piece pieces flicker for a frame when transitioning from animation to static on the board"}, {"post_id": 6680, "ts": "2026-06-11T05:52:38Z", "hours": 3.0944, "text": "UPDATE #5 fixed bugs: checkmate didnt work (again) when king is in check the square didnt light red move log overflowed when filling up so i added a scroll feature added features/changes: promotion gui is now like chess.com and vertical move log is striped and alternates colors for each row board markings for the rows and columns things needed before shipping: optimization, still runs at like 45fps on itch.io sound effects maybe change fonts cuz im using default ugly ones draw/resign icons instead of text click and drag to move piece better sprites for pieces (BUG) can’t move a different piece after selecting one (BUG) draw conditions are broken (BUG) sidebar buttons are broken even though they dont do anything (BUG) when looking back in the move log when the king is in check the square stays red"}, {"post_id": 6058, "ts": "2026-06-10T05:41:11Z", "hours": 5.0128, "text": "UPDATE #4 I fixed preformance :D heres how: i drew the move log table 3x per frame instead of once so i made it do it once now was calculating if someone was in checkmate every frame which was checking if anyone had legal moves every single frame, changed it to check for checkmate on clicks which is every time someone made a move some of the stuff we were rendering were static background elements that never changed and they were being drawn every frame. So instead we render them once at the start and cache it so that we don’t render static elements so many times. (i accidentally changed the opacity of the background and dont feel like retaking the screenshot and accidentally moved the sidebar) FPS my machine 30-40 -> 200+ FPS itch.io 10 -> 45 we still have a ways to go to get a fully smooth experience but 10 to 45 fps from the demo link is much much more playable and i thought i would get a devlog out. next update ill continue to optimize and polish to get ready to ship!"}, {"post_id": 5727, "ts": "2026-06-09T17:02:19Z", "hours": 3.425, "text": "UPDATE #3 things added in this update: added a subtle background added a sidebar added “Game Log” text moved board and bar to the right a bit added a GitHub readme rounded corners of chess board and other stuff Issues: I started to notice the rendering of my chess pieces moving were slightly lagging, after doing a performance test of my code using python’s profile tool i noticed that my logic for getting legal moves was called 160k+ times and my pieces were rendered 50k+ times. This made my chess engine run at 30-50 fps so i will have to fix the performance issues soon. Next update will prolly be addressing these issues and adding more UI changes"}, {"post_id": 5349, "ts": "2026-06-09T02:49:21Z", "hours": 2.9911, "text": "UPDATE #2 things added in this update: created an itch.io page to demo the game by compiled the PYgame with pygbag added a move log with the ability to look back in time legal move dots now enlarge on hover i plan on actually making the itch.io page look good and actually add a readme to my github repo that looks good but i plan on doing that later. next update i think will be gui changes then after that i will work on QOL changes then feature additions like variants Fully functional game though and i did work on my laptop without wakatime so sad it wasnt tracked :c"}, {"post_id": 4605, "ts": "2026-06-07T23:34:09Z", "hours": 7.4347, "text": "UPDATE #1 I have created using pygame a chess engine complete with all of the rules of chess and is fully playable for local 1v1 with the features: on piece hover, piece tilts a bit piece moves to next square instead of teleporting checkmate resign and draw buttons stalemate 3 fold repetition 50 move rule en pessant castling captured pieces are shown on the side that captured them captured piece zone is aligned to board pawn promotion FUTURE IDEAS: SFX Better GUI on loss/draw screens Better GUI for promotion Main menu variants (atomic,duckchess,giveaway chess, Horde, etc) time control bots (pinging chess.com api idk how to code a chess bot from scratch) color change of boards better graphics for pieces move log when hovering on dot of the move you want to make the dot becomes bigge pull and drag pieces around board to make moves like chess.com"}]...
|
Title: OMNI-Chess by @thestarviper | Stardance
De Title: OMNI-Chess by @thestarviper | Stardance
Devlogs:
UPDATE #1 I have created using pygame a chess engine complete with all of the rules of chess and is fully playable for local 1v1 with the features: on piece hover, piece tilts a bit piece moves to next square instead of teleporting checkmate resign and draw buttons stalemate 3 fold repetition 50 move rule en pessant castling captured pieces are shown on the side that captured them captured piece zone is aligned to board pawn promotion FUTURE IDEAS: SFX Better GUI on loss/draw screens Better GUI for promotion Main menu variants (atomic,duckchess,giveaway chess, Horde, etc) time control bots (pinging chess.com api idk how to code a chess bot from scratch) color change of boards better graphics for pieces move log when hovering on dot of the move you want to make the dot becomes bigge pull and drag pieces around board to make moves like chess.com
UPDATE #2 things added in this update: created an itch.io page to demo the game by compiled the PYgame with pygbag added a move log with the ability to look back in time legal move dots now enlarge on hover i plan on actually making the itch.io page look good and actually add a readme to my github repo that looks good but i plan on doing that later. next update i think will be gui changes then after that i will work on QOL changes then feature additions like variants Fully functional game though and i did work on my laptop without wakatime so sad it wasnt tracked :c
UPDATE #3 things added in this update: added a subtle background added a sidebar added “Game Log” text moved board and bar to the right a bit added a GitHub readme rounded corners of chess board and other stuff Issues: I started to notice the rendering of my chess pieces moving were slightly lagging, after doing a performance test of my code using python’s profile tool i noticed that my logic for getting legal moves was called 160k+ times and my pieces were rendered 50k+ times. This made my chess engine run at 30-50 fps so i will have to fix the performance issues soon. Next update will prolly be addressing these issues and adding more UI changes
UPDATE #4 I fixed preformance :D heres how: i drew the move log table 3x per frame instead of once so i made it do it once now was calculating if someone was in checkmate every frame which was checking if anyone had legal moves every single frame, changed it to check for checkmate on clicks which is every time someone made a move some of the stuff we were rendering were static background elements that never changed and they were being drawn every frame. So instead we render them once at the start and cache it so that we don’t render static elements so many times. (i accidentally changed the opacity of the background and dont feel like retaking the screenshot and accidentally moved the sidebar) FPS my machine 30-40 -> 200+ FPS itch.io 10 -> 45 we still have a ways to go to get a fully smooth experience but 10 to 45 fps from the demo link is much much more playable and i thought i would get a devlog out. next update ill continue to optimize and polish to get ready to ship!
UPDATE #5 fixed bugs: checkmate didnt work (again) when king is in check the square didnt light red move log overflowed when filling up so i added a scroll feature added features/changes: promotion gui is now like chess.com and vertical move log is striped and alternates colors for each row board markings for the rows and columns things needed before shipping: optimization, still runs at like 45fps on itch.io sound effects maybe change fonts cuz im using default ugly ones draw/resign icons instead of text click and drag to move piece better sprites for pieces (BUG) can’t move a different piece after selecting one (BUG) draw conditions are broken (BUG) sidebar buttons are broken even though they dont do anything (BUG) when looking back in the move log when the king is in check the square stays red
UPDATE #6 fixed bugs: all game end conditions were broken move log scrollbar didn’t appear on pawn promotion move log didnt use proper notation canceling pawn promotion didnt undo move log canceling pawn promotion capture didnt undo capture when going back in move log, if there was a check the square didnt light red couldn’t change piece to move after selecting a piece added features/changes: promotion menu is inline column added sfx better sprites for pieces draw and resign buttons now use icons move log text now uses the Audiowide regular fond massive code restructure things needed for shipping: optimization, didn’t optimize since last devlog maybe learn WHAT DA HAIL bitboards are to optimize yk click and drag to move piece pieces flicker for a frame when transitioning from animation to static on the board
UPDATE #7 i wanna have the time logged for shipping but basically all i did was change some file formats for web assembly and turned down the resolution so that it would automatically scale so that it’s playable. I’m currently in the process of converting the game from pygame to c++ raylib since i know c++ already and c++ is better for WASM thats about ittttttttt live ver: https://thestarviper.itch.io/chess-engine
UPDATE #8 This version is not live yet as there are a few bugs that need fixing still as the port from python introduced alot. Some things i liked about porting from python to c++ is that i was able to fine tune things more and use namespaces which i like. ENUMs are also a feature i like. changes/added features Updated graphics to use pieces from itchio 50 move rule counter under game log (i plan to make it togglable) says whos turn it is to play in top right ontop of the highlighting changed entire game to pixelart because i found some assets on itchio that i thought looked really nice things needed for next ship going to add a sidebar on the left side instead of the right side add sound effects back add a background click and drag to move piece animation issues fold repetition counter under move log make itchio page look better next devlog should be when i update the itchio page and other stuff also i spent closer to 15-16 hours on this cuz it includes the last devlog
UPDATE #9 I presented my changes in the stardance slack and was able to get some new ideas like adding a theme switcher. I added the leaves cuz i thought it would add to the theme and then after seeing the leaves, they looked very interactable so i made them interactable. idk thats about it changes/added features leaves on outside of board leaves enlarge on hover for fidgeting i guess idk its fun tho made move log more narrow to fit a sidebar on the left added a 3 fold repetition warning that appears after 2x repetition (make togglable) added a background i got from itchio made hover dots enlarge on hover again fixed animation issues changed board markers to inside the board like originally in python updated itchio page things before next ship add sound effects back click and drag to move piece add sidebar
UPDATE #10 added features/changes added a sidebar added a settings page with the ability to toggle 50 move counter,3 fold counter,board markings with more settings to come like high contrast and animation speed added a makefile to compile code to test instead of running a bunch of commands back to back added puzzles to the puzzle tab pulls random puzzle out of a csv things before next ship more sfx click and drag to move piece sfx plays infinitely on hovers randomize leaves placements menu transitions polish puzzles page and get rid of bugs general ideas theme switcher animation speed control move clock In this update i messed up my codebase so massively bad trying to refactor the code so alot of my time was fixing the nuke i dropped into my codebase. uhhh one of the big bugs i had to squash before this that took eternity was playing sound effects would just crash the game. It turned out the reason was i didnt add the compile flag to my makefile causing the audio mixer to crash the game. After that i added sound effects back in and then started to work on puzzles. for puzzles i took the lichess puzzle database of 6m puzzles and condensed it down to 100k for file space. I pull a random row from this file to create the puzzle and it kinda works but its still in progress.
Update #11 Added Features added puzzle side menu added puzzle streak counter skip retry hint puzzle buttons sucess rate puzzle counter sound effect for hovering button puzzles are basically done Fixed Bugs 3 fold occured in puzzle mode if you made the same wrong move 3 times same thing with 50 move rule as 3 fold puzzle would start with you instead of the computer swaps turn on failed move animations didn’t work in puzzles fixed you can select the opponent’s pieces in the puzzle during animation if you hit a frameperfect from the animation finishing on the puzzle screen and switch to the game screen it moves the piece in the game screen if there was a piece on the starting tile same bug with next puzzle button leaves sfx looped infinitely Smart Bool I added a new datatype to make my life easier called a smartbool, this is basically a boolean with a third state called NewTrue which is only true for the first cycle the boolean is updated to true. This boolean is useful for when you want to play a sound effect on hover but if you use a traditional boolean it will play every frame. you can use it like a normal boolean too like smartbool = true; or if (smartbool){} . But this new datatype makes the code easier to understand for me. struct smartbool { enum State { False, NewTrue, True }; State state = False; void operator=(bool value) {this->set(value);} operator bool() const {return state != False; } bool is_new_true() const { return state == NewTrue; } void set(bool value) { if (value) { if (state == False) state = NewTrue; } else { state = False; } } void update() { if (state == NewTrue) { state = True; } } }; Future Ideas clock bots variants more moving graphics/sfx randomize leaves on borders menu transitions (maybe) finish polishing puzzles (pretty much done)
UPDATE #12 added features added variants support added giveaway chess added duckchess (kinda) added the start of a play screen, still working on it not much yet added easing functions to some visuals so they appear instead of popping in fixed bugs/cleanup (like 50% of this devlog) split code back into multiple files fixed that puzzle code was directly in frame update loop tons of crash fixes todo with variants and puzzles animation broke on variants draw legal moves didn’t work on custom pieces future ideas clock bots particle system effects screen shake randomize leaves menu transitions i was mainly struggling to fix crash bugs this devlog as there were multiple that i had to fix, most notably there was a crash bug when swapping between the game and puzzle menus, and loading a new ruleset for variants. My current plan now is to finish the create game screen, then work on fixing the last duckchess bugs, programming a bot then variants + polish. I may ship again if i get a chance before i finish this though. Screenshot here shots duckchess in action but I made the duck sprite using AI just so we’re clear about that because i am bad at art.
UPDATE #13 This is the last update before i ship So basically this was just the last update for this project cuz i decided i would start work on a different project, the changes i made this update are just to get ready to ship and complete the project: removed fps counter removed openings and play menu removed variants from selection as they arent polished enough removed misc debug features audio bug fixed on button hovers audio bug fixed on puzzle win
Ships:
I made a chess game where you locally 1v1 someone with a move log to see move history and all the special rules/draw conditions like 50 move rule, 3 fold, insufficient material, castling, enpessent. It was challenging doing the historical move rendering because you have to keep track of all the previous board positions and the checks and square highlights Im proud of the move log because its cool yall should know that it’s low res cuz it’s not that efficient and uses pygame and am working on a re-release utilizing raylib for more proformance
I made a chess engine in raylib with puzzle functionality and a movelog with a nature theme. Migrating from pygame to raylib was a big challenge that took me a while to fix all the kinks. idk the leaves are hoverable for a cool fidget thing and have fun!...
|
1793109315.790238
|
1793195715.790238
|
|
9406
|
MonkeySpeak by @hariharann | Stardance
|
hariharann
|
2
|
30.18
|
116
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T10:10:55Z", "hours": 12.0, "multiplier": 17.31, "payout": 63, "blessing": "neutral", "text": "monkeyspeak update is live 🙊 spoken monkeytype —> read prompts out loud, get scored on speed and clarity. v0 had the core loop. this ship adds the stuff that makes it feel like a real app. what’s new: leaderboard global board via supabase — nickname + emoji after a run, no signup home page 3-column layout with leaderboard, hero, and your personal best card your top score card still tracks local pb for the current duration, not whoever is #1 globally stats + profile /stats dashboard — streak, totals, recent runs, wpm charts, achievements profile hub drawer — activity heatmap, badges, lifetime stats everything uses the same minimal desk ui as home speech fixes try it: monkeyspeak-delta.vercel.app github.com/nothariharan/monkeyspeak", "repo": "https://github.com/nothariharan/monkeyspeak", "demo": "https://monkeyspeak-delta.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-08T05:14:08Z", "hours": 5.0, "multiplier": 15.16, "payout": 53, "blessing": "neutral", "text": "monkeyspeak v0 is live 🙊 been building this for a while — it’s the spoken equivalent of monkeytype. you get a prompt, hit the mic, read it out loud, and the app tracks how fast and how accurately you speak. what’s in v0: speed mode pick 15s, 30s, 60s, or 120s live net wpm (filler words like “um” and “uh” get stripped) sentences, numbers, or paste your own custom text words dissolve on screen as you nail them monkey mascot animates based on your speaking momentum personal bests per duration + prompt type clarity mode type or paste what you said word-level diff against the original prompt grades from s down to “needs work” practice mode that rebuilds a prompt from words you missed ui refresh new landing hero: “how fast⚡can you speak 🙊” the monkey mascot IS the start button now — click it to begin speech-themed doodles, clean flat design, no gradient bloat sprite animations via gsap under the hood next.js 14 + typescript + zustand web speech api by default (no api key needed) optional deepgram integration with server-side proxy (key never hits the browser) silero vad for voice activity detection try it: clone the repo, npm install, npm run dev, allow mic access, go. github.com/nothariharan/monkeyspeak", "repo": "https://github.com/nothariharan/monkeyspeak", "demo": "https://monkeyspeak-delta.vercel.app/"}]...
|
[{"post_id": 38169, "ts": "202 [{"post_id": 38169, "ts": "2026-07-31T12:59:08Z", "hours": 10.7647, "text": "CATCHUPPPP DEVLOG — i forgot to post so now u get EVERYTHING 🙊🗣️🗣️ ok so real talk i kinda… forgot to drop a proper stardance log for a while. hours kept stacking, i kept shipping, then the banner said “u hav 10h without a log” and im like oh. whole catchup dump. big one. sorry if i yap [ THE REASON FOR THIS WAS WAKATIME BTW it doesnt even properly update 🥀 sowwy i also lost like 1 more hr of time tho welp ] last time i teased something ghosty then went quiet. that ghosty thing shipped. clarity got ripped open and rebuilt. da engine board actually filters now. results dont look half done anymore. so thats where most of the hours went into. live: https://monkeyspeak-delta.vercel.app repo: https://github.com/nothariharan/monkeyspeak QUICK RECAP already shipped before this gap: spoken monkeytype core · deepgram on brave/edge · supabase speed board · /leaderboard hub + stats/profile · results rebuild. that thread is on the project page. this post is mainly everything after dat . THE ‘GHOSTYYYY’ ( finally ) last log said “something ghosty is next” then i disappeared lmao. ghost trace is live. u race a visual ghost that replays your own speed pb. not some random #1. just u vs past u. needs atleast one speed pb with a real timeline first. built: ghost mode next to speed/clarity · desk ui so it doesnt feel like another product · dual lanes that feel like a chase · local ghost race record · lean assets ( check the branches and prs for exact stuff ) go race yourself. weirdly motivational and slightly insulting when past-u is faster 👀👀 CLARITY GOT A WHOLE PERSONALITY NOW used to be the quiet sibling of speed. same desk family, placeholder vibes. scrapbook treatment later — now its actually fun to sit on. idle: 3-col scrapbook (engine board · center · side stack) · inspector monkey · legal pad prompt · privacy note that ur mic stays with the tool prompts that CYCLE: shuffle was cursed — sentences always “before you leave…”, twisters one fixed line. now ~30 curated pads across sentences/technical/tongue-twisters, scenes (office/clinic/travel/etc), signal chips, no instant repeat, custom still works. whole point is “can the tool hear the hard bits” engine board: config bar board prompt filters the left board. badge shows active filter. results: not just % + grade anymore — engine chip, correct/wrong/missed/extra, punctuation %, delta vs prior best, normal display font HOUSEKEEPING ( fr) pruned ~31mb orphan assets · slimmed sprite utils · typecheck · SESSION_SECRET same on vercel AND render or unset on both (one side = grants break quietly) · readme/comments less corporate. deployed. hard-refresh if cached. before → after last time clarity = paste + grade + sticky prompt + soft lock. now scrapbook + shuffle pads + board filters + current/top/tool + cancel + results that explain stuff. last time ghost = a wink. now u race past-u on the desk. so thats there. STILL COOKING 🍽️ harder clarity tiers · board rate limit if it gets silly · more ghost polish · daily clarity seed · kill leftover placeholder energy ok that was a lot of catchup for a monkey that just wants u to read words out loud. if ghost or clarity feels off lmk — especially brave ppl, i see u 🐒🐒🍌"}, {"post_id": 29280, "ts": "2026-07-16T02:57:57Z", "hours": 2.4197, "text": "da monkey upgradesss -> leaderboard + results shipped two big surface reworks this week. leaderboard got its own hub. rankings, filters, and personal stats live on one page now & ofc no more bouncing between /stats and a tiny home board. cleaner rows, mode/duration toggles, and your own numbers sitting under the global board. post-test results got rebuilt from scratch. one shared results view: wpm, accuracy, consistency, streak, and the session graph, instead of the old packed panel. same screen whether you just finished a run or are peeking at what a good score looks like. ( graph mite be reworked on again but eh ) mic still moves when you’re talking. words still have to earn their place. 👻 something ghosty is next. that’s all you’re getting its really cool trust 👀👀"}, {"post_id": 22028, "ts": "2026-07-04T08:41:44Z", "hours": 5.8111, "text": "UPDATEE:: — stats, brave stt actually works, hydration fix tl;dr deepgram stt works on brave now (and edge) — words dissolve, wpm moves, no more fake “google speech blocked” errors root cause: brave kills the vercel http audio bridge + we fell back to browser speech (which shields also blocks) fix: brave/edge → render websocket proxy ( wss://monkeyspeak.onrender.com/... ); chrome/firefox still use vercel bridge fixed utterance_end_ms=400 deepgram 400 spam (minimum is 1000 on live listen) fixed bridge sending keepalive json into the pcm stream (corrupted audio, empty transcripts) stats page + profile hub — streaks, achievements, session history, same minimal desk ui as home live: https://monkeyspeak-delta.vercel.app repo: https://github.com/nothariharan/monkeyspeak (commit might differ by the time u read — i keep pushing) CHANGES:: deepgram / stt (the painful part) routing by browser browser path brave / edge websocket → render proxy → deepgram chrome / firefox (prod) same-origin POST /api/deepgram/live bridge on vercel localhost ws://localhost:8080 when backend is up, else bridge 🐜🪲🐞 that made it look dead utterance_end_ms=400 — deepgram returns http 400 on live ws below 1000ms. was baked into client urls. clamped to 1000 everywhere (client, bridge, render backend, server.js) keepalive in pcm body — http bridge was writing {\"type\":\"KeepAlive\"} into the upload stream every 3s. deepgram got garbage bytes, transcripts stayed empty, no obvious error in ui brave + duplex fetch — bridge connects, mic on, waveform moving, but ndjson response never streams back. zero words dissolved bad fallback — deepgram fail → auto webspeech → brave shields block google → ui says google is blocked even though user picked deepgram. now we don’t fallback on brave/edge when deepgram is preferred other STT polish bridge waits for BridgeReady before marking session ok server-side keepalive via deepgram sdk on the bridge route (not in pcm stream) removed verbose [STT:deepgram] console spam from prod — debug only with NEXT_PUBLIC_DEBUG_STT=true gsap scale not eligible for reset warning fixed on momentum meter stats + profile new /stats dashboard — totals, streak, recent runs, wpm trend charts profile hub drawer — nickname, activity heatmap, achievement badges shared stats-* / desk css so stats doesn’t look like a different app achievements + streak logic with unit tests ( lib/achievements.ts , lib/stats/streak.ts ) UI / polish home + results + settings aligned to same minimal desk style daily challenge card, error/not-found pages match the rest monkey favicon + readme/docs polish Infra GET /api/deepgram/proxy-health — same-origin render health check (browser never hits render directly, no cors scream) render monkeyspeak-dg-proxy redeployed via render cli what actually happened on brave user picks deepgram → app tries vercel http bridge brave never delivers streaming ndjson reliably fallback kicks webspeech → shields block google ui shows “brave shields may be blocking google’s speech service” — confusing af because user didn’t pick browser mode fix was routing + stop lying via fallback. not more deepgram dashboard staring. what’s next (maybe) GHOST RACE — new mode where u speak against ur pb (most wanted) signed run tokens so leaderboard posts tie to a finished test shared rate limit (redis/kv) if leaderboard spam shows up vendor ort wasm properly so vad worker stops whining in console ok that was a lot of browser-specific nonsense for a monkey that just wants you to read words out loud 🐒🐒🍌"}, {"post_id": 7929, "ts": "2026-06-13T07:00:10Z", "hours": 2.9903, "text": "monkeyspeak devlog more fixes (leaderboard + home + cors bug) - ship soon trust .. tl;dr home page is a 3 column layout now — leaderboard on the left, hero in the middle, top score on the right global leaderboard via supabase — nickname + emoji after a run, no signup, same board for everyone on the site personal bests still local — top score card shows your best for the duration, not whoever is #1 globally supabase wired on vercel with service role key server side only ( /api/leaderboard get + post) cors scream from chrome fixed — browser no longer fetches render root directly for proxy health checks what i changed home page layout the thing ig what it does hero leaderboard duration tabs synced with config bar, crown svg for top spots, emoji avatars, your row pinned at the bottom even if you are not top 5 leaderboard save prompt pops after a speed run — pick name + icon (defaulted to hehe 🐵), saves to supabase, remembers name locally for next time top score card personal best for current duration + prompt type only visual cleanup removed hero doodles, tightened title spacing, consolidated duplicate hero css leaderboard rows used to live in zustand localStorage. ripped that out — supabase is source of truth now. name and emoji prefills still persist locally. global leaderboard backend new table leaderboard_entries in supabase (migration in supabase/migrations/001_leaderboard_entries.sql ) rls enabled, no anon policies — all reads/writes through next.js with SUPABASE_SERVICE_ROLE_KEY upsert rule matches old local behavior: same name + duration + prompt type (case insensitive) only updates if wpm goes up light rate limit on post (~30s per ip) — good enough for hobby scale, not fortress grade browser → GET/POST /api/leaderboard (vercel) ↓ service role supabase postgres render backend unchanged — still deepgram only, no db env vars there. cors fix (chrome (ofc brave as well) was mad again) production deepgram mode probes whether the render proxy is alive before connecting. that probe used to be a cross origin fetch at https://monkeyspeak.onrender.com/ from the vercel app. render cold starts and error pages often ship without cors headers even when express has origin: * — so chrome logged the whole blocked by cors policy thing and deepgram mode thought the proxy was dead. fix: new same origin route GET /api/deepgram/proxy-health on vercel. server checks render, browser never touches render over http cors. also slapped explicit options handling on the render backend for anything that still hits it directly. what’s next (maybe) signed run tokens so leaderboard posts are tied to an actual finished test shared rate limit (redis/kv) if spam shows up delete the testmonkey row sitting on prod from smoke testing render keep alive still on the list from v0.1 preview env on vercel for prs ok that was a lot of infra for a monkey with a crown svg but at least the board is real now. lmk in replies if you want the supabase dashboard walkthrough or the security fixes implemented properly."}, {"post_id": 6311, "ts": "2026-06-10T16:53:24Z", "hours": 2.9108, "text": "monkeyspeak final devlog before ship ( hopefully ) tl;dr so brave and edge broke everything ( ye read what broke for more info ) deepgram mode now transcribes live text again (words dissolve, wpm moves, momentum still reacts to your voice) brave and edge no longer hang for 25 seconds then fake a mic error production uses a render websocket proxy + vercel env, same path that worked locally github: nothariharan/monkeyspeak (commit 095b731 and earlier speech routing work on main ) live: monkeyspeak-delta.vercel.app what i changed speech routing (back to something that made sense) mode behavior browser web speech api only. no deepgram hijack on brave/edge mount. deepgram try deepgram first (proxy → bridge fallback on chrome only). if that fails, fall back to web speech with a clear error. the ui now shows errors for the provider that actually failed, not a generic “mic blocked” when stt died for other reasons. deepgram client hardening prefer var name ur wish websocket proxy over the vercel http bridge brave/edge without a reachable proxy: fail fast with a useful message (no 25s timeout) utterance_end_ms locked to 1000 everywhere (deepgram rejects live ws with 400 below that) bridge watchdog clears on BridgeReady , not on first random chunk server bridge waits for upstream deepgram before closing the socket the transcript fix (the big one) client parses deepgram json whether it arrives as a string , blob , or arraybuffer render proxy forwards deepgram replies as utf-8 text frames instead of opaque binary infra backend/ express + ws proxy deployable on render ( render.yaml included) set up env with ur var name at vercel redeployed frontend via vercel cli after env update small polish clearer vad fallback logs (worker load fail vs no voice detected vs timeout) config bar hint on brave/edge when browser mode is selected momentum sprites + gsap monkey states (from earlier in the sprint) what broke (and why it looked cursed) brave and edge block or mishandle the vercel http audio bridge (duplex fetch upload), so deepgram connections hung ~25s and never returned transcripts. those browsers also cannot open an authenticated websocket straight to api.deepgram.com , so they need the render ws proxy ( wss://…/api/deepgram/proxy ) instead of the chrome-friendly paths. even after the proxy worked, deepgram sent json in binary ws frames and the client ignored anything that was not a string, so words never updated until we parsed blob/arraybuffer payloads. what’s next (maybe) vendor ort wasm for vad so the worker stops complaining gsap scale split for clean console render keep-alive or paid instance if cold starts hurt demos preview env on vercel for pr deployments (production is wired today) sorry if i yapped a lot and the fixes where actually slighly more techy stuff so i didnt wanna yap abt that as wel so yeah if u want to know lmk in replies :)"}, {"post_id": 4727, "ts": "2026-06-08T05:13:13Z", "hours": 0.6281, "text": "reworked the ui and got monkeyspeak ready for v0 ship launch :)) it’s basically monkeytype but for your voice — read a prompt out loud, get scored on speed + clarity. features: speed mode: timed speaking tests (15s / 30s / 60s / 120s) with live wpm + word accuracy clarity mode: paste your transcript, get a word-by-word diff + letter grade click the monkey mascot to start (no separate mic button anymore lol) animated monkey companion that reacts to your speaking energy mid-test words dissolve on screen as you say them correctly personal bests saved locally browser speech api works out of the box, optional deepgram for better stt themes, accent colors, custom fonts keyboard shortcuts (enter to start, tab to reset, escape to stop) built with next.js, typescript, gsap, zustand. repo: github.com/nothariharan/monkeyspeak"}, {"post_id": 4678, "ts": "2026-06-08T02:28:55Z", "hours": 0.2814, "text": "made the ui more clean still settling the latency here and there current new approach i am building around is using the deepgram api key for initial purpose later trying to replicate what they do open to questions or recommendations for the whole stt etc."}, {"post_id": 4242, "ts": "2026-06-07T14:13:09Z", "hours": 0.8106, "text": "cooking up 🚀🔥 soon making it public just lots of latency issue in speaking to text conversion who knew it would be a pain but yeah let me know if u guys think of an alternative for it or anything at all thanks for reading :)"}, {"post_id": 4007, "ts": "2026-06-07T04:46:44Z", "hours": 2.0164, "text": "going with a much better ui soon launching :) 🚀 for yall to try it"}, {"post_id": 3451, "ts": "2026-06-06T12:11:33Z", "hours": 0.9194, "text": "built the first iteration of the website ! got lots of customizing options now i am working more towards reducing the latency between what u speak and what is being transcribed give me your opinions and recommendations :)"}]...
|
Title: MonkeySpeak by @hariharann | Stardance
Dev Title: MonkeySpeak by @hariharann | Stardance
Devlogs:
built the first iteration of the website ! got lots of customizing options now i am working more towards reducing the latency between what u speak and what is being transcribed give me your opinions and recommendations :)
going with a much better ui soon launching :) 🚀 for yall to try it
cooking up 🚀🔥 soon making it public just lots of latency issue in speaking to text conversion who knew it would be a pain but yeah let me know if u guys think of an alternative for it or anything at all thanks for reading :)
made the ui more clean still settling the latency here and there current new approach i am building around is using the deepgram api key for initial purpose later trying to replicate what they do open to questions or recommendations for the whole stt etc.
reworked the ui and got monkeyspeak ready for v0 ship launch :)) it’s basically monkeytype but for your voice — read a prompt out loud, get scored on speed + clarity. features: speed mode: timed speaking tests (15s / 30s / 60s / 120s) with live wpm + word accuracy clarity mode: paste your transcript, get a word-by-word diff + letter grade click the monkey mascot to start (no separate mic button anymore lol) animated monkey companion that reacts to your speaking energy mid-test words dissolve on screen as you say them correctly personal bests saved locally browser speech api works out of the box, optional deepgram for better stt themes, accent colors, custom fonts keyboard shortcuts (enter to start, tab to reset, escape to stop) built with next.js, typescript, gsap, zustand. repo: github.com/nothariharan/monkeyspeak
monkeyspeak final devlog before ship ( hopefully ) tl;dr so brave and edge broke everything ( ye read what broke for more info ) deepgram mode now transcribes live text again (words dissolve, wpm moves, momentum still reacts to your voice) brave and edge no longer hang for 25 seconds then fake a mic error production uses a render websocket proxy + vercel env, same path that worked locally github: nothariharan/monkeyspeak (commit 095b731 and earlier speech routing work on main ) live: monkeyspeak-delta.vercel.app what i changed speech routing (back to something that made sense) mode behavior browser web speech api only. no deepgram hijack on brave/edge mount. deepgram try deepgram first (proxy → bridge fallback on chrome only). if that fails, fall back to web speech with a clear error. the ui now shows errors for the provider that actually failed, not a generic “mic blocked” when stt died for other reasons. deepgram client hardening prefer var name ur wish websocket proxy over the vercel http bridge brave/edge without a reachable proxy: fail fast with a useful message (no 25s timeout) utterance_end_ms locked to 1000 everywhere (deepgram rejects live ws with 400 below that) bridge watchdog clears on BridgeReady , not on first random chunk server bridge waits for upstream deepgram before closing the socket the transcript fix (the big one) client parses deepgram json whether it arrives as a string , blob , or arraybuffer render proxy forwards deepgram replies as utf-8 text frames instead of opaque binary infra backend/ express + ws proxy deployable on render ( render.yaml included) set up env with ur var name at vercel redeployed frontend via vercel cli after env update small polish clearer vad fallback logs (worker load fail vs no voice detected vs timeout) config bar hint on brave/edge when browser mode is selected momentum sprites + gsap monkey states (from earlier in the sprint) what broke (and why it looked cursed) brave and edge block or mishandle the vercel http audio bridge (duplex fetch upload), so deepgram connections hung ~25s and never returned transcripts. those browsers also cannot open an authenticated websocket straight to api.deepgram.com , so they need the render ws proxy ( wss://…/api/deepgram/proxy ) instead of the chrome-friendly paths. even after the proxy worked, deepgram sent json in binary ws frames and the client ignored anything that was not a string, so words never updated until we parsed blob/arraybuffer payloads. what’s next (maybe) vendor ort wasm for vad so the worker stops complaining gsap scale split for clean console render keep-alive or paid instance if cold starts hurt demos preview env on vercel for pr deployments (production is wired today) sorry if i yapped a lot and the fixes where actually slighly more techy stuff so i didnt wanna yap abt that as wel so yeah if u want to know lmk in replies :)
monkeyspeak devlog more fixes (leaderboard + home + cors bug) - ship soon trust .. tl;dr home page is a 3 column layout now — leaderboard on the left, hero in the middle, top score on the right global leaderboard via supabase — nickname + emoji after a run, no signup, same board for everyone on the site personal bests still local — top score card shows your best for the duration, not whoever is #1 globally supabase wired on vercel with service role key server side only ( /api/leaderboard get + post) cors scream from chrome fixed — browser no longer fetches render root directly for proxy health checks what i changed home page layout the thing ig what it does hero leaderboard duration tabs synced with config bar, crown svg for top spots, emoji avatars, your row pinned at the bottom even if you are not top 5 leaderboard save prompt pops after a speed run — pick name + icon (defaulted to hehe 🐵), saves to supabase, remembers name locally for next time top score card personal best for current duration + prompt type only visual cleanup removed hero doodles, tightened title spacing, consolidated duplicate hero css leaderboard rows used to live in zustand localStorage. ripped that out — supabase is source of truth now. name and emoji prefills still persist locally. global leaderboard backend new table leaderboard_entries in supabase (migration in supabase/migrations/001_leaderboard_entries.sql ) rls enabled, no anon policies — all reads/writes through next.js with SUPABASE_SERVICE_ROLE_KEY upsert rule matches old local behavior: same name + duration + prompt type (case insensitive) only updates if wpm goes up light rate limit on post (~30s per ip) — good enough for hobby scale, not fortress grade browser → GET/POST /api/leaderboard (vercel) ↓ service role supabase postgres render backend unchanged — still deepgram only, no db env vars there. cors fix (chrome (ofc brave as well) was mad again) production deepgram mode probes whether the render proxy is alive before connecting. that probe used to be a cross origin fetch at https://monkeyspeak.onrender.com/ from the vercel app. render cold starts and error pages often ship without cors headers even when express has origin: * — so chrome logged the whole blocked by cors policy thing and deepgram mode thought the proxy was dead. fix: new same origin route GET /api/deepgram/proxy-health on vercel. server checks render, browser never touches render over http cors. also slapped explicit options handling on the render backend for anything that still hits it directly. what’s next (maybe) signed run tokens so leaderboard posts are tied to an actual finished test shared rate limit (redis/kv) if spam shows up delete the testmonkey row sitting on prod from smoke testing render keep alive still on the list from v0.1 preview env on vercel for prs ok that was a lot of infra for a monkey with a crown svg but at least the board is real now. lmk in replies if you want the supabase dashboard walkthrough or the security fixes implemented properly.
UPDATEE:: — stats, brave stt actually works, hydration fix tl;dr deepgram stt works on brave now (and edge) — words dissolve, wpm moves, no more fake “google speech blocked” errors root cause: brave kills the vercel http audio bridge + we fell back to browser speech (which shields also blocks) fix: brave/edge → render websocket proxy ( wss://monkeyspeak.onrender.com/... ); chrome/firefox still use vercel bridge fixed utterance_end_ms=400 deepgram 400 spam (minimum is 1000 on live listen) fixed bridge sending keepalive json into the pcm stream (corrupted audio, empty transcripts) stats page + profile hub — streaks, achievements, session history, same minimal desk ui as home live: https://monkeyspeak-delta.vercel.app repo: https://github.com/nothariharan/monkeyspeak (commit might differ by the time u read — i keep pushing) CHANGES:: deepgram / stt (the painful part) routing by browser browser path brave / edge websocket → render proxy → deepgram chrome / firefox (prod) same-origin POST /api/deepgram/live bridge on vercel localhost ws://localhost:8080 when backend is up, else bridge 🐜🪲🐞 that made it look dead utterance_end_ms=400 — deepgram returns http 400 on live ws below 1000ms. was baked into client urls. clamped to 1000 everywhere (client, bridge, render backend, server.js) keepalive in pcm body — http bridge was writing {"type":"KeepAlive"} into the upload stream every 3s. deepgram got garbage bytes, transcripts stayed empty, no obvious error in ui brave + duplex fetch — bridge connects, mic on, waveform moving, but ndjson response never streams back. zero words dissolved bad fallback — deepgram fail → auto webspeech → brave shields block google → ui says google is blocked even though user picked deepgram. now we don’t fallback on brave/edge when deepgram is preferred other STT polish bridge waits for BridgeReady before marking session ok server-side keepalive via deepgram sdk on the bridge route (not in pcm stream) removed verbose [STT:deepgram] console spam from prod — debug only with NEXT_PUBLIC_DEBUG_STT=true gsap scale not eligible for reset warning fixed on momentum meter stats + profile new /stats dashboard — totals, streak, recent runs, wpm trend charts profile hub drawer — nickname, activity heatmap, achievement badges shared stats-* / desk css so stats doesn’t look like a different app achievements + streak logic with unit tests ( lib/achievements.ts , lib/stats/streak.ts ) UI / polish home + results + settings aligned to same minimal desk style daily challenge card, error/not-found pages match the rest monkey favicon + readme/docs polish Infra GET /api/deepgram/proxy-health — same-origin render health check (browser never hits render directly, no cors scream) render monkeyspeak-dg-proxy redeployed via render cli what actually happened on brave user picks deepgram → app tries vercel http bridge brave never delivers streaming ndjson reliably fallback kicks webspeech → shields block google ui shows “brave shields may be blocking google’s speech service” — confusing af because user didn’t pick browser mode fix was routing + stop lying via fallback. not more deepgram dashboard staring. what’s next (maybe) GHOST RACE — new mode where u speak against ur pb (most wanted) signed run tokens so leaderboard posts tie to a finished test shared rate limit (redis/kv) if leaderboard spam shows up vendor ort wasm properly so vad worker stops whining in console ok that was a lot of browser-specific nonsense for a monkey that just wants you to read words out loud 🐒🐒🍌
da monkey upgradesss -> leaderboard + results shipped two big surface reworks this week. leaderboard got its own hub. rankings, filters, and personal stats live on one page now & ofc no more bouncing between /stats and a tiny home board. cleaner rows, mode/duration toggles, and your own numbers sitting under the global board. post-test results got rebuilt from scratch. one shared results view: wpm, accuracy, consistency, streak, and the session graph, instead of the old packed panel. same screen whether you just finished a run or are peeking at what a good score looks like. ( graph mite be reworked on again but eh ) mic still moves when you’re talking. words still have to earn their place. 👻 something ghosty is next. that’s all you’re getting its really cool trust 👀👀
CATCHUPPPP DEVLOG — i forgot to post so now u get EVERYTHING 🙊🗣️🗣️ ok so real talk i kinda… forgot to drop a proper stardance log for a while. hours kept stacking, i kept shipping, then the banner said “u hav 10h without a log” and im like oh. whole catchup dump. big one. sorry if i yap [ THE REASON FOR THIS WAS WAKATIME BTW it doesnt even properly update 🥀 sowwy i also lost like 1 more hr of time tho welp ] last time i teased something ghosty then went quiet. that ghosty thing shipped. clarity got ripped open and rebuilt. da engine board actually filters now. results dont look half done anymore. so thats where most of the hours went into. live: https://monkeyspeak-delta.vercel.app repo: https://github.com/nothariharan/monkeyspeak QUICK RECAP already shipped before this gap: spoken monkeytype core · deepgram on brave/edge · supabase speed board · /leaderboard hub + stats/profile · results rebuild. that thread is on the project page. this post is mainly everything after dat . THE ‘GHOSTYYYY’ ( finally ) last log said “something ghosty is next” then i disappeared lmao. ghost trace is live. u race a visual ghost that replays your own speed pb. not some random #1. just u vs past u. needs atleast one speed pb with a real timeline first. built: ghost mode next to speed/clarity · desk ui so it doesnt feel like another product · dual lanes that feel like a chase · local ghost race record · lean assets ( check the branches and prs for exact stuff ) go race yourself. weirdly motivational and slightly insulting when past-u is faster 👀👀 CLARITY GOT A WHOLE PERSONALITY NOW used to be the quiet sibling of speed. same desk family, placeholder vibes. scrapbook treatment later — now its actually fun to sit on. idle: 3-col scrapbook (engine board · center · side stack) · inspector monkey · legal pad prompt · privacy note that ur mic stays with the tool prompts that CYCLE: shuffle was cursed — sentences always “before you leave…”, twisters one fixed line. now ~30 curated pads across sentences/technical/tongue-twisters, scenes (office/clinic/travel/etc), signal chips, no instant repeat, custom still works. whole point is “can the tool hear the hard bits” engine board: config bar board prompt filters the left board. badge shows active filter. results: not just % + grade anymore — engine chip, correct/wrong/missed/extra, punctuation %, delta vs prior best, normal display font HOUSEKEEPING ( fr) pruned ~31mb orphan assets · slimmed sprite utils · typecheck · SESSION_SECRET same on vercel AND render or unset on both (one side = grants break quietly) · readme/comments less corporate. deployed. hard-refresh if cached. before → after last time clarity = paste + grade + sticky prompt + soft lock. now scrapbook + shuffle pads + board filters + current/top/tool + cancel + results that explain stuff. last time ghost = a wink. now u race past-u on the desk. so thats there. STILL COOKING 🍽️ harder clarity tiers · board rate limit if it gets silly · more ghost polish · daily clarity seed · kill leftover placeholder energy ok that was a lot of catchup for a monkey that just wants u to read words out loud. if ghost or clarity feels off lmk — especially brave ppl, i see u 🐒🐒🍌
Ships:
monkeyspeak v0 is live 🙊 been building this for a while — it’s the spoken equivalent of monkeytype. you get a prompt, hit the mic, read it out loud, and the app tracks how fast and how accurately you speak. what’s in v0: speed mode pick 15s, 30s, 60s, or 120s live net wpm (filler words like “um” and “uh” get stripped) sentences, numbers, or paste your own custom text words dissolve on screen as you nail them monkey mascot animates based on your speaking momentum personal bests per duration + prompt type clarity mode type or paste what you said word-level diff against the original prompt grades from s down to “needs work” practice mode that rebuilds a prompt from words you missed ui refresh new landing hero: “how fast⚡can you speak 🙊” the monkey mascot IS the start button now — click it to begin speech-themed doodles, clean flat design, no gradient bloat sprite animations via gsap under the hood next.js 14 + typescript + zustand web speech api by default (no api key needed) optional deepgram integration with server-side proxy (key never hits the browser) silero vad for voice activity detection try it: clone the repo, npm install, npm run dev, allow mic access, go. github.com/nothariharan/monkeyspeak
monkeyspeak update is live 🙊 spoken monkeytype —> read prompts out loud, get scored on speed and clarity. v0 had the core loop. this ship adds the stuff that makes it feel like a real app. what’s new: leaderboard global board via supabase — nickname + emoji after a run, no signup home page 3-column layout with leaderboard, hero, and your personal best card your top score card still tracks local pb for the current duration, not whoever is #1 globally stats + profile /stats dashboard — streak, totals, recent runs, wpm charts, achievements profile hub drawer — activity heatmap, badges, lifetime stats everything uses the same minimal desk ui as home speech fixes try it: monkeyspeak-delta.vercel.app github.com/nothariharan/monkeyspeak...
|
1793094624.7271302
|
1793181024.7271302
|
|
9443
|
Better Music by @muntean_andrew | Stardance
|
muntean_andrew
|
2
|
33.0
|
323
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T09:14:00Z", "hours": 20.0, "multiplier": 8.54, "payout": 202, "blessing": "neutral", "text": "I built Better Music, a lightweight music player designed for seamless audio playback and intuitive library management. It features an instant search-as-you-type engine, interactive queue management, customizable playlist/album details, detailed listening activity tracking, can read synced/unsynced lyrics tags from the music files and show them like Spotify, a “Permanent Queue” (PQ) feature for when you want listen to a list of particular songs for just that one moment and don’t want to create a whole new playlist for it and you can customize it’s color palette and even the base border radius to your liking in the settings. To bring this to life, I combined the desktop application capabilities of Electron with a robust local relational database powered by SQLite 3, all wrapped in a sleek, responsive frontend built using HTML5, CSS, SCSS and JavaScript. This is just an update and the majority of the time spent on the project was used to make improvements in the backend management of the song objects and to make the UI better reflect and update according to the data in the backend. But also I’ve added lyrics support and if your music files have lyrics tags embedded in them the app will take full advantage of them by enabling you to see each verse when it is singed and also skip to that one part you like the most just by clicking on your favorite line in the track. Testing the app is incredibly simple—there is no need to clone deep source code dependencies or set up a complex development build environment. Where to get it: Head straight over to the Releases section of this repository. How to run it: Download the compiled .zip file for your platform, extract its contents into any folder on your computer, and double-click the main application executable (e.g., Better-Music.exe). Note on Updates: If you are testing store-packaged builds or encountered deployment errors (like MSIX package revision conflicts in the Partner Center), utilizing the raw ZIP release is the fastest, cleanest way to experience the app right now.", "repo": "https://github.com/AliendsOG/Better-Music", "demo": "https://github.com/AliendsOG/Better-Music/releases/tag/better-music"}, {"ship_num": 2, "ts": "2026-06-15T15:17:37Z", "hours": 13.0, "multiplier": 9.67, "payout": 121, "blessing": "neutral", "text": "I built Better Music, a lightweight music player designed for seamless audio playback and intuitive library management. It features an instant search-as-you-type engine, interactive queue management, customizable playlist/album details, detailed listening activity tracking, a “Permanent Queue” (PQ) feature for when you want listen to a list of particular songs for just that one moment and don’t want to create a whole new playlist for it and you can customize it’s color palette to your liking in the settings. To bring this to life, I combined the desktop application capabilities of Electron with a robust local relational database powered by SQLite 3, all wrapped in a sleek, responsive frontend built using HTML5, CSS, SCSS and JavaScript. The challenging part was the steep learning curve as I hadn’t done anything on this scale before. I had to learn to connect the 2 Electron processes together seamlessly. Furthermore I had to dive into the world of databases with SQLite 3, which was uncharted territory for me. I had to use AI to help me learn these things and also to brainstorm ideas about hoe to optimize the app. For instance, when the idea of the search-as-you-type feature came up to me I envisioned a kind of tree structure with letters and that for every song, album, playlist name the app would create the branches in the tree so it would be a very fast and efficient search algorithm, and when I talked to the AI about it I found out that this kind of structure is called a trie. I am really proud that I’ve managed to build a clean, responsive and fast music player that tracks the user’s listening activity and stores it on device. Also it was very exciting when I tested the search feature and it worked perfectly. I’m also proud of the engineering journey itself. I utilized Gemini as an active learning collaborator to help me unpack the architectural patterns of Electron and master data persistence with SQLite 3. Turning that complex technical guidance into a functional, polished desktop product was incredibly rewarding. Testing the app is incredibly simple—there is no need to clone deep source code dependencies or set up a complex development build environment. Where to get it: Head straight over to the Releases section of this repository. How to run it: Download the compiled .zip file for your platform, extract its contents into any folder on your computer, and double-click the main application executable (e.g., Better-Music.exe). Note on Updates: If you are testing store-packaged builds or encountered deployment errors (like MSIX package revision conflicts in the Partner Center), utilizing the raw ZIP release is the fastest, cleanest way to experience the app right now.", "repo": "https://github.com/AliendsOG/Better-Music", "demo": "https://github.com/AliendsOG/Better-Music/releases/tag/better-music"}]...
|
[{"post_id": 74382, "ts": "202 [{"post_id": 74382, "ts": "2026-09-27T09:04:01Z", "hours": 1.0467, "text": "This is the last devlog before shipping the project update. This has been an exciting journey and I am very satisfied with the result! I do wish there would be a bit more time left for the event to continue so I could ship even more things but all good things must come to an end, and this one is a happy ending. I’ve made the necessary last minute touches to make sure that everything works as it should."}, {"post_id": 74114, "ts": "2026-09-26T18:26:03Z", "hours": 1.6697, "text": "Added new ways to customize the player to the user’s liking and fixed that prevented the app from reading the user_version of the database which in return made the app “update” the DB everytime it started."}, {"post_id": 73281, "ts": "2026-09-24T18:58:58Z", "hours": 0.4853, "text": "YEEEEEESS, FINALLLYYYYYY, we have synced lyrics in the app. I know it’s not the most glamorous UI at the moment, but it is still something, and the other music players don’t even do this, like at most they show the lyrics with the timestamps and that’s it, no scaling of the verse, nothing. In future updates certainly I’ll make the UI more polished because it need a lot of it. Still I am happy that I’ve made it this far and after a bit of clean up and maybe some optimizations I’ll ship the project."}, {"post_id": 73261, "ts": "2026-09-24T18:10:26Z", "hours": 1.5067, "text": "I’ve finally found the culprit that prevented me from getting the synced lyrics, now the app can read the synced lyrics from music filed. YEEEEEEE Now the “only” thing is to make the UI for them, which I hope would be easy and fast. 😅"}, {"post_id": 73191, "ts": "2026-09-24T15:40:21Z", "hours": 2.4517, "text": "Trying to add lyrics to the app. But it is a bit of a mess cause in the Samsung Music and Apple Music apps these files contain time stamps for each verse and so I was thinking to read those time stamps and to highlight the verse that is played at that time, but my app doesn’t read those things and I don’t know why. An explanation might be that those apps ping free open source databases of lyrics based on the song details, but I am not really sure."}, {"post_id": 69252, "ts": "2026-09-16T17:55:55Z", "hours": 4.7486, "text": "Another day, another restructuring I guess. 😅 I’ve decided to give each album an id instead of relying on it’s name as the identifier as I did previously. Also I’ve changed the Play function to work with song ids and album ids instead of names. This is because if the name of the song or the album had any of these 2 characters: ’ or “ it would mess up with the HTML structure and the song would not play if the user clicked on it. Not gonna lie, I think that my code now is a little spaghetti and for sure someone with more experience and knowledge on how to structure a music player would have done a much better job than me at this, but still. The main caveat that I think could appear in the future is that the Play function can’t take numbered ids for playlists and I have to rely in the playlist’s name because the function would have no way to distinguish between them at the moment and I don’t want to make another spaghetti to fix this. 😅 In other news, I have successfully changed the backend to update the DB version for the user of the older version of the app and to add the new “lyrics” column and also the app can read the embedded lyrics from the music files. Now the “only” thing remaining is to add the lyrics to the UI and to parse the strings and make the verses synchronize with the song and this feature would be fully implemented."}, {"post_id": 57422, "ts": "2026-08-29T15:54:13Z", "hours": 2.9864, "text": "After successfully changing the song objects management under the hood from the previous devlog I now added an indicator for which song is currently playing. For now I’ve just set the background of the song to be the primary color selected by the user. Also I’ve changed the border radius for everything to be based on one variable so that the user could change it in the settings (but didn’t yet implement the UI for that) cause everyone has their own preference for these things. The first screenshot is with the border radius set a bit higher (30px) than my default one (23px), and the second one is with the border radius set to 0. Additionally I am changing the SQLite db in the backend to support lyrics because I want to add them to the app."}, {"post_id": 56489, "ts": "2026-08-28T08:43:54Z", "hours": 4.7514, "text": "I am currently working on optimizing the code so that changes like adding songs to a playlist or liking a song update instantly across all pages because this was a flaw of my old architecture of the app cause I didn’t just have 1 list of song objects that every album and artist referenced to but instead every album and artist had their own song objects and the list of favorite songs was also composed of song object. So it was a mess of duplicate song objects. Now I am changing things so that there is only one list of song object and albums have just a list of song ids in them so they reference the song object list, this way each change is global. This would hopefully fix the current synchronization issues that sometimes occur in the current version. This change would also allow me to add an indicator that a song is playing when the user looks at an album from which a song plays currently. Additionally I want to add a listening history page where the user can see their listening activity on the app and also maybe add some rewards depending on how much time they spent listening to an artist or album to gamify the experience a little."}, {"post_id": 8658, "ts": "2026-06-14T11:47:22Z", "hours": 0.4289, "text": "Solving some App Manifest problems"}, {"post_id": 8040, "ts": "2026-06-13T12:20:46Z", "hours": 1.7347, "text": "Updating the package on the Microsoft Store"}, {"post_id": 7956, "ts": "2026-06-13T08:50:15Z", "hours": 1.2564, "text": "Added some customization options and a settings menu"}, {"post_id": 7328, "ts": "2026-06-12T06:33:15Z", "hours": 1.7297, "text": "Updating the interface a little"}, {"post_id": 4874, "ts": "2026-06-08T13:08:06Z", "hours": 3.1572, "text": "Implemented search functionality"}, {"post_id": 3541, "ts": "2026-06-06T15:01:03Z", "hours": 2.7919, "text": "Adding clear queue button and a Permanent Queue or Temporary Playlist feature that saves the songs that you add to the queue even after you listen to them so you can set it to repeat all and still have the songs that you wanted"}, {"post_id": 3394, "ts": "2026-06-06T09:28:56Z", "hours": 1.4672, "text": "I implemented the function of changing the name and cover of a playlist"}]...
|
Title: Better Music by @muntean_andrew | Stardance Title: Better Music by @muntean_andrew | Stardance
Devlogs:
I implemented the function of changing the name and cover of a playlist
Adding clear queue button and a Permanent Queue or Temporary Playlist feature that saves the songs that you add to the queue even after you listen to them so you can set it to repeat all and still have the songs that you wanted
Implemented search functionality
Updating the interface a little
Added some customization options and a settings menu
Updating the package on the Microsoft Store
Solving some App Manifest problems
I am currently working on optimizing the code so that changes like adding songs to a playlist or liking a song update instantly across all pages because this was a flaw of my old architecture of the app cause I didn’t just have 1 list of song objects that every album and artist referenced to but instead every album and artist had their own song objects and the list of favorite songs was also composed of song object. So it was a mess of duplicate song objects. Now I am changing things so that there is only one list of song object and albums have just a list of song ids in them so they reference the song object list, this way each change is global. This would hopefully fix the current synchronization issues that sometimes occur in the current version. This change would also allow me to add an indicator that a song is playing when the user looks at an album from which a song plays currently. Additionally I want to add a listening history page where the user can see their listening activity on the app and also maybe add some rewards depending on how much time they spent listening to an artist or album to gamify the experience a little.
After successfully changing the song objects management under the hood from the previous devlog I now added an indicator for which song is currently playing. For now I’ve just set the background of the song to be the primary color selected by the user. Also I’ve changed the border radius for everything to be based on one variable so that the user could change it in the settings (but didn’t yet implement the UI for that) cause everyone has their own preference for these things. The first screenshot is with the border radius set a bit higher (30px) than my default one (23px), and the second one is with the border radius set to 0. Additionally I am changing the SQLite db in the backend to support lyrics because I want to add them to the app.
Another day, another restructuring I guess. 😅 I’ve decided to give each album an id instead of relying on it’s name as the identifier as I did previously. Also I’ve changed the Play function to work with song ids and album ids instead of names. This is because if the name of the song or the album had any of these 2 characters: ’ or “ it would mess up with the HTML structure and the song would not play if the user clicked on it. Not gonna lie, I think that my code now is a little spaghetti and for sure someone with more experience and knowledge on how to structure a music player would have done a much better job than me at this, but still. The main caveat that I think could appear in the future is that the Play function can’t take numbered ids for playlists and I have to rely in the playlist’s name because the function would have no way to distinguish between them at the moment and I don’t want to make another spaghetti to fix this. 😅 In other news, I have successfully changed the backend to update the DB version for the user of the older version of the app and to add the new “lyrics” column and also the app can read the embedded lyrics from the music files. Now the “only” thing remaining is to add the lyrics to the UI and to parse the strings and make the verses synchronize with the song and this feature would be fully implemented.
Trying to add lyrics to the app. But it is a bit of a mess cause in the Samsung Music and Apple Music apps these files contain time stamps for each verse and so I was thinking to read those time stamps and to highlight the verse that is played at that time, but my app doesn’t read those things and I don’t know why. An explanation might be that those apps ping free open source databases of lyrics based on the song details, but I am not really sure.
I’ve finally found the culprit that prevented me from getting the synced lyrics, now the app can read the synced lyrics from music filed. YEEEEEEE Now the “only” thing is to make the UI for them, which I hope would be easy and fast. 😅
YEEEEEESS, FINALLLYYYYYY, we have synced lyrics in the app. I know it’s not the most glamorous UI at the moment, but it is still something, and the other music players don’t even do this, like at most they show the lyrics with the timestamps and that’s it, no scaling of the verse, nothing. In future updates certainly I’ll make the UI more polished because it need a lot of it. Still I am happy that I’ve made it this far and after a bit of clean up and maybe some optimizations I’ll ship the project.
Added new ways to customize the player to the user’s liking and fixed that prevented the app from reading the user_version of the database which in return made the app “update” the DB everytime it started.
This is the last devlog before shipping the project update. This has been an exciting journey and I am very satisfied with the result! I do wish there would be a bit more time left for the event to continue so I could ship even more things but all good things must come to an end, and this one is a happy ending. I’ve made the necessary last minute touches to make sure that everything works as it should.
Ships:
I built Better Music, a lightweight music player designed for seamless audio playback and intuitive library management. It features an instant search-as-you-type engine, interactive queue management, customizable playlist/album details, detailed listening activity tracking, a “Permanent Queue” (PQ) feature for when you want listen to a list of particular songs for just that one moment and don’t want to create a whole new playlist for it and you can customize it’s color palette to your liking in the settings. To bring this to life, I combined the desktop application capabilities of Electron with a robust local relational database powered by SQLite 3, all wrapped in a sleek, responsive frontend built using HTML5, CSS, SCSS and JavaScript. The challenging part was the steep learning curve as I hadn’t done anything on this scale before. I had to learn to connect the 2 Electron processes together seamlessly. Furthermore I had to dive into the world of databases with SQLite 3, which was uncharted territory for me. I had to use AI to help me learn these things and also to brainstorm ideas about hoe to optimize the app. For instance, when the idea of the search-as-you-type feature came up to me I envisioned a kind of tree structure with letters and that for every song, album, playlist name the app would create the branches in the tree so it would be a very fast and efficient search algorithm, and when I talked to the AI about it I found out that this kind of structure is called a trie. I am really proud that I’ve managed to build a clean, responsive and fast music player that tracks the user’s listening activity and stores it on device. Also it was very exciting when I tested the search feature and it worked perfectly. I’m also proud of the engineering journey itself. I utilized Gemini as an active learning collaborator to help me unpack the architectural patterns of Electron and master data persistence with SQLite 3. Turning that complex technical guidance into a functional, polished desktop product was incredibly rewarding. Testing the app is incredibly simple—there is no need to clone deep source code dependencies or set up a complex development build environment. Where to get it: Head straight over to the Releases section of this repository. How to run it: Download the compiled .zip file for your platform, extract its contents into any folder on your computer, and double-click the main application executable (e.g., Better-Music.exe). Note on Updates: If you are testing store-packaged builds or encountered deployment errors (like MSIX package revision conflicts in the Partner Center), utilizing the raw ZIP release is the fastest, cleanest way to experience the app right now.
I built Better Music, a lightweight music player designed for seamless audio playback and intuitive library management. It features an instant search-as-you-type engine, interactive queue management, customizable playlist/album details, detailed listening activity tracking, can read synced/unsynced lyrics tags from the music files and show them like Spotify, a “Permanent Queue” (PQ) feature for when you want listen to a list of particular songs for just that one moment and don’t want to create a whole new playlist for it and you can customize it’s color palette and even the base border radius to your liking in the settings. To bring this to life, I combined the desktop application capabilities of Electron with a robust local relational database powered by SQLite 3, all wrapped in a sleek, responsive frontend built using HTML5, CSS, SCSS and JavaScript. This is just an update and the majority of the time spent on the project was used to make improvements in the backend management of the song objects and to make the UI better reflect and update according to the data in the backend. But also I’ve added lyrics support and if your music files have lyrics tags embedded in them the app will take full advantage of them by enabling you to see each verse when it is singed and also skip to that one part you like the most just by clicking on your favorite line in the track. Testing the app is incredibly simple—there is no need to clone deep source code dependencies or set up a complex development build environment. Where to get it: Head straight over to the Releases section of this repository. How to run it: Download the compiled .zip file for your platform, extract its contents into any folder on your computer, and double-click the main application executable (e.g., Better-Music.exe). Note on Updates: If you are testing store-packaged builds or encountered deployment errors (like MSIX package revision conflicts in the Partner Center), utilizing the raw ZIP release is the fastest, cleanest way to experience the app right now....
|
1793065691.2060225
|
1793152091.2060225
|
|
9460
|
Ghostly Party by @foxors | Stardance
|
foxors
|
2
|
14.0
|
187
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T12:13:35Z", "hours": 6.0, "multiplier": 13.49, "payout": 80, "blessing": "neutral", "text": "A game written in html, css and js where you have to find a specific ghost in a picture with the fewest clicks and time as possible. The hardest thing was and still is for me the challenge to support a wide variate of browsers. Some don’t have an API point some do but only limited for privacy stuff etc. and some i can’t test because i don’t own a Mac nor a iPhone. Hope you will enjoy my small little game.", "repo": "https://codeberg.org/Foxors/Ghostly-party", "demo": "https://ghost.foxors.de"}, {"ship_num": 2, "ts": "2026-07-02T18:21:34Z", "hours": 8.0, "multiplier": 13.04, "payout": 107, "blessing": "neutral", "text": "I made a smoll random generated search picture game with GHOOOOSTs. Not creepy ghosts, just funny ghosts. I made it in pure HTML, CSS and JS fashion. Each time you play you will need to find a new specific ghost amongst others in a living room. When you find them you get shown how long you took and how many times you miss-clicked. The hardest part was to write the code to place the ghosts randomly without stacking on one another, while still guaranteeing that at least a few ghosts are always there. To not make it too hard or too easy. That you have to memorize the ghost you search, is by the way not a bug or a lack of testing. I thought it would be more fun if you had to memorize the ghost you search for while playing.", "repo": "https://codeberg.org/Foxors/Ghostly-party", "demo": "https://ghost.foxors.de"}]...
|
[{"post_id": 73952, "ts": "202 [{"post_id": 73952, "ts": "2026-09-26T12:05:09Z", "hours": 1.7142, "text": "Ready for ship 2 I fixed some minor issues and added a scoreboard at the end of each run. I also tried to make it more performant with small success. In this ship i have most of the feedback, from first ship, implemented and hope it is a better game now. I will probably stop with this ship for the time because i got my Minestom mini game server project right now which i need to finish."}, {"post_id": 28202, "ts": "2026-07-14T10:41:48Z", "hours": 4.2353, "text": "I am not finished yet First of all thanks to the feedback from some. It gave me a bit more motivation to work more on this project. Somebody bothered the loading timer after each round and guess what i also didn’t like that. So I fixed it. The cause was that each time a ghost was placed onto the canvas a new HTML image tag would have to be created, source set to the ghost image URL and than the script had to wait for the browser to load the image and only afterward it could place it onto the canvas. I fixed that by loading each image at the start of website loading. This way I already have all images loaded and only need to print them to the canvas no waiting needed. There was also this major randomness error. If you remember from an older post I did some random generator thing which makes it impossible to spawn too few ghosts while still allowing random positions on a mask without too much hugging each other. What i did not notice back then because of the mask, that if the mask isn’t applied the ghosts form a straight line from top left to bottom right. And guess what the error was: if (delta(g.x, x) < ghostSize / 2 || delta(g.y, y) < ghostSize / 2) vs if (delta(g.x, x) < ghostSize / 2 && delta(g.y, y) < ghostSize / 2) . I used and OR instead of and AND logic operator. It took me 30 mins to figure out :( Another person mentioned they had a optimization warning in their console. I did not had such a warning because I use Firefox personally. I also test on chromium but i don’t look into logs there, how ever now i did. The Dev tools of chromium really improved a lot, but i am still going to use Firefox as main browser. Well, I fixed all warnings chromium gave me. The context of a HTML canvas has an optimization flag in case you request data from it frequent what i do. I just had do set this option to true. Also the drawing part of the ghosts is now not blocking the main thread entirely with timeout calling the same function which acts like a for loop to distribute work over time. Otherwise the website would freeze for a second because printing images to a canvas is very sloww for some reason I don’t want to get into now. For the loading part i threw a bit CSS and HTML together making up a progress bar and added some random phrases so users don’t get bored. Furthermore instead of creating new HTML tags each scene change the code now already has them in the HTML code loaded but changes their visibility. In theory this should improve performance because the browser doesn’t have to create new elements each time."}, {"post_id": 20953, "ts": "2026-07-02T18:03:37Z", "hours": 1.3144, "text": "Last small improvements on my ghost game 👻 Code I reorganized parts of the code to make it, hopefully, more readable. Permission problems I have a browser with a bit more strict rules that broke my game. For that i made a check if the browser lies about color values of pixel and if that happens, we tell the user to please give us the permission. Canvas sizing Now after every try, of the game, the canvas resizes instead of only when reloading the page completely. What could be added? I had some ideas for what could be next. But i want to have a shipped project + move on with other projects. So i only list them here because i thought they are interesting. A seed calculated randomness generator to play against friends with same picture. More options of backgrounds and ghosts. Different ghost sizes. Different art styles. Dark mode."}, {"post_id": 19470, "ts": "2026-06-30T20:00:04Z", "hours": 0.6408, "text": "👀 Now you can actually play Ghostly party on the web I only did minor improvements today. In earlier versions of the game ghosts started plopping up on the canvas after one another and the worst part was that the ghost you should search for was always the first one because the browsers would use the cached version of the ghost, which obviously was way faster. To fix that i added a small loading screen which hides the canvas and makes a circle spin, in an CSS animation, until the canvas was finished drawing all the ghosts. There was also a dumb bug where i miscalculated the time the player took for a round I calculated Math.round(deltaTime / 60 * 100) / 100) when it should be Math.round(deltaTime / 60 * 10) / 100) . There was only one 0 too much. :[ Sometimes there are just those dumb bugs… I also finally deployed the game onto a web server, where it can now be played. https://ghost.foxors.de However before shipping i will try to find some bugs and add some icons and others stuff and generally try to polish up and tie loose ends together. Have a great day! or night or noon or whatever timezone you are in… :)"}, {"post_id": 18270, "ts": "2026-06-29T11:16:55Z", "hours": 1.4056, "text": "Hello, everybody! Today i fixed the width and height of the canvas. So that when you have a large screen you get a large canvas and if you have a smoll screen you get a smoll canvas. (Dynamic canvas size) I also fixed an issue where you couldn’t click the ghosts after scrolling, by taking scroll distance into account of the win condition check. I also made, just for fun, that when you find the right ghost and click on it. You get a zoomed in (cropped) image of them in the picture. Next thing would be to release it on my website…"}, {"post_id": 17051, "ts": "2026-06-27T17:59:26Z", "hours": 1.6925, "text": "I managed to implement the background. But wait! There are actually 2 backgrounds. One is a mask that masks specific areas, where ghosts are allowed to appear and the other one is the actual background with coloring. This should prevent ghosts from appearing at completely random nonsensical spots. I also programmed in that ghosts respect each other and spawn in some distance from one another, to not make it too crowded. But this created a new problem. The pseudo randomness is… well random. So there is a slight chance the ghost you need to find doesn’t even appear because you had bad luck. Furthermore many ghosts don’t appear. The script tries to spawn 50 total ghosts, in case one fails it will retry finding a position for that ghost 100 times before giving up and not spawning it. And out of the 50 only 10 manage to actually spawn. I will have to look into another solution to finding the random positions."}, {"post_id": 16932, "ts": "2026-06-27T14:23:01Z", "hours": 3.1883, "text": "I got many many drawings of a variety of ghosts from a relative and they remembered me of picture books where you would have to search a person or object among many in it. So i started programming a small website where you have to do exactly that. After showing it to the person who made the ghosts, they made more ghosts and a background. Now i will have to implement that :) For this to work i rewrote the entire thing with a canvas instead of plain images moved with transformation style sheet which makes it possible to implement the background. While I tried to I noticed that it was a bit scuffed working with images in canvas because you have to: Make a HTML image Let the browser load it And only afterwards you can put it on the canvas. But i still managed to pull it off."}]...
|
Title: Ghostly Party by @foxors | Stardance
Devlo Title: Ghostly Party by @foxors | Stardance
Devlogs:
I got many many drawings of a variety of ghosts from a relative and they remembered me of picture books where you would have to search a person or object among many in it. So i started programming a small website where you have to do exactly that. After showing it to the person who made the ghosts, they made more ghosts and a background. Now i will have to implement that :) For this to work i rewrote the entire thing with a canvas instead of plain images moved with transformation style sheet which makes it possible to implement the background. While I tried to I noticed that it was a bit scuffed working with images in canvas because you have to: Make a HTML image Let the browser load it And only afterwards you can put it on the canvas. But i still managed to pull it off.
I managed to implement the background. But wait! There are actually 2 backgrounds. One is a mask that masks specific areas, where ghosts are allowed to appear and the other one is the actual background with coloring. This should prevent ghosts from appearing at completely random nonsensical spots. I also programmed in that ghosts respect each other and spawn in some distance from one another, to not make it too crowded. But this created a new problem. The pseudo randomness is… well random. So there is a slight chance the ghost you need to find doesn’t even appear because you had bad luck. Furthermore many ghosts don’t appear. The script tries to spawn 50 total ghosts, in case one fails it will retry finding a position for that ghost 100 times before giving up and not spawning it. And out of the 50 only 10 manage to actually spawn. I will have to look into another solution to finding the random positions.
Hello, everybody! Today i fixed the width and height of the canvas. So that when you have a large screen you get a large canvas and if you have a smoll screen you get a smoll canvas. (Dynamic canvas size) I also fixed an issue where you couldn’t click the ghosts after scrolling, by taking scroll distance into account of the win condition check. I also made, just for fun, that when you find the right ghost and click on it. You get a zoomed in (cropped) image of them in the picture. Next thing would be to release it on my website…
👀 Now you can actually play Ghostly party on the web I only did minor improvements today. In earlier versions of the game ghosts started plopping up on the canvas after one another and the worst part was that the ghost you should search for was always the first one because the browsers would use the cached version of the ghost, which obviously was way faster. To fix that i added a small loading screen which hides the canvas and makes a circle spin, in an CSS animation, until the canvas was finished drawing all the ghosts. There was also a dumb bug where i miscalculated the time the player took for a round I calculated Math.round(deltaTime / 60 * 100) / 100) when it should be Math.round(deltaTime / 60 * 10) / 100) . There was only one 0 too much. :[ Sometimes there are just those dumb bugs… I also finally deployed the game onto a web server, where it can now be played. https://ghost.foxors.de However before shipping i will try to find some bugs and add some icons and others stuff and generally try to polish up and tie loose ends together. Have a great day! or night or noon or whatever timezone you are in… :)
Last small improvements on my ghost game 👻 Code I reorganized parts of the code to make it, hopefully, more readable. Permission problems I have a browser with a bit more strict rules that broke my game. For that i made a check if the browser lies about color values of pixel and if that happens, we tell the user to please give us the permission. Canvas sizing Now after every try, of the game, the canvas resizes instead of only when reloading the page completely. What could be added? I had some ideas for what could be next. But i want to have a shipped project + move on with other projects. So i only list them here because i thought they are interesting. A seed calculated randomness generator to play against friends with same picture. More options of backgrounds and ghosts. Different ghost sizes. Different art styles. Dark mode.
I am not finished yet First of all thanks to the feedback from some. It gave me a bit more motivation to work more on this project. Somebody bothered the loading timer after each round and guess what i also didn’t like that. So I fixed it. The cause was that each time a ghost was placed onto the canvas a new HTML image tag would have to be created, source set to the ghost image URL and than the script had to wait for the browser to load the image and only afterward it could place it onto the canvas. I fixed that by loading each image at the start of website loading. This way I already have all images loaded and only need to print them to the canvas no waiting needed. There was also this major randomness error. If you remember from an older post I did some random generator thing which makes it impossible to spawn too few ghosts while still allowing random positions on a mask without too much hugging each other. What i did not notice back then because of the mask, that if the mask isn’t applied the ghosts form a straight line from top left to bottom right. And guess what the error was: if (delta(g.x, x) < ghostSize / 2 || delta(g.y, y) < ghostSize / 2) vs if (delta(g.x, x) < ghostSize / 2 && delta(g.y, y) < ghostSize / 2) . I used and OR instead of and AND logic operator. It took me 30 mins to figure out :( Another person mentioned they had a optimization warning in their console. I did not had such a warning because I use Firefox personally. I also test on chromium but i don’t look into logs there, how ever now i did. The Dev tools of chromium really improved a lot, but i am still going to use Firefox as main browser. Well, I fixed all warnings chromium gave me. The context of a HTML canvas has an optimization flag in case you request data from it frequent what i do. I just had do set this option to true. Also the drawing part of the ghosts is now not blocking the main thread entirely with timeout calling the same function which acts like a for loop to distribute work over time. Otherwise the website would freeze for a second because printing images to a canvas is very sloww for some reason I don’t want to get into now. For the loading part i threw a bit CSS and HTML together making up a progress bar and added some random phrases so users don’t get bored. Furthermore instead of creating new HTML tags each scene change the code now already has them in the HTML code loaded but changes their visibility. In theory this should improve performance because the browser doesn’t have to create new elements each time.
Ready for ship 2 I fixed some minor issues and added a scoreboard at the end of each run. I also tried to make it more performant with small success. In this ship i have most of the feedback, from first ship, implemented and hope it is a better game now. I will probably stop with this ship for the time because i got my Minestom mini game server project right now which i need to finish.
Ships:
I made a smoll random generated search picture game with GHOOOOSTs. Not creepy ghosts, just funny ghosts. I made it in pure HTML, CSS and JS fashion. Each time you play you will need to find a new specific ghost amongst others in a living room. When you find them you get shown how long you took and how many times you miss-clicked. The hardest part was to write the code to place the ghosts randomly without stacking on one another, while still guaranteeing that at least a few ghosts are always there. To not make it too hard or too easy. That you have to memorize the ghost you search, is by the way not a bug or a lack of testing. I thought it would be more fun if you had to memorize the ghost you search for while playing.
A game written in html, css and js where you have to find a specific ghost in a picture with the fewest clicks and time as possible. The hardest thing was and still is for me the challenge to support a wide variate of browsers. Some don’t have an API point some do but only limited for privacy stuff etc. and some i can’t test because i don’t own a Mac nor a iPhone. Hope you will enjoy my small little game....
|
1793091205.0814056
|
1793177605.0814056
|
|
9500
|
Dasher_Slack-bot by @Dasher2801 | Stardance
|
|
2
|
2.37
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T10:02:58Z", "hours": 0.0, "multiplier": 1.03, "payout": 0, "blessing": "neutral", "text": "I improoved my slackbot, it reacts faster now and the offline error is fixed", "repo": "https://github.com/Dasher2801/Slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B9M0E4UUB"}, {"ship_num": 2, "ts": "2026-06-09T11:28:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ich habe einen Slack-bot entwickelt, der zwei Zahlen verrechnen kann egal ob +,-,* oder /. Er kann auch deinen aktuellen Ping anzeigen oder ganz simpel grüßen. Außerdem ist er 24/7 aktiv.", "repo": "https://github.com/Dasher2801/Slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0B9M0E4UUB"}]...
|
[{"post_id": 30047, "ts": "202 [{"post_id": 30047, "ts": "2026-07-17T09:59:09Z", "hours": 0.3692, "text": "I changed all the commands to /dashe-xxxxx, because some reviewer used not working commands of the other bots and said my commands don’t work. So I changed them to 100% unique commands"}, {"post_id": 19131, "ts": "2026-06-30T11:40:15Z", "hours": 0.2911, "text": "Der Bot antwortet jetzt wieder 24/7 und mit weniger delay"}, {"post_id": 5549, "ts": "2026-06-09T11:22:33Z", "hours": 0.2675, "text": "Der Bot läuft jetzt Rund um die Uhr 24/7"}, {"post_id": 5537, "ts": "2026-06-09T10:52:39Z", "hours": 1.6675, "text": "Ich arbeite an einem Slackbot, der 2 Zahlen addiren, substrahieren, multiplizieren oder dividieren kann. Er kann auch die Welt grüßen oder deinen aktuellen ping anzeigen."}]...
|
Title: Dasher_Slack-bot by @Dasher2801 | Stardance Title: Dasher_Slack-bot by @Dasher2801 | Stardance
Devlogs:
Ich arbeite an einem Slackbot, der 2 Zahlen addiren, substrahieren, multiplizieren oder dividieren kann. Er kann auch die Welt grüßen oder deinen aktuellen ping anzeigen.
Der Bot läuft jetzt Rund um die Uhr 24/7
Der Bot antwortet jetzt wieder 24/7 und mit weniger delay
I changed all the commands to /dashe-xxxxx, because some reviewer used not working commands of the other bots and said my commands don’t work. So I changed them to 100% unique commands
Ships:
Ich habe einen Slack-bot entwickelt, der zwei Zahlen verrechnen kann egal ob +,-,* oder /. Er kann auch deinen aktuellen Ping anzeigen oder ganz simpel grüßen. Außerdem ist er 24/7 aktiv.
I improoved my slackbot, it reacts faster now and the offline error is fixed...
|
1793102070.9530826
|
1793188470.9530826
|
|
9623
|
Doombot - Slack by @Imtiaz | Stardance
|
Imtiaz
|
2
|
4.0
|
8
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T06:07:48Z", "hours": 3.0, "multiplier": 2.84, "payout": 8, "blessing": "neutral", "text": "Doombot, Full Project, running on nest, working.", "repo": "https://github.com/imtua/doombot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}, {"ship_num": 2, "ts": "2026-08-01T01:48:00Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Done as it said, nest doing its work and mridu slack bot replying!", "repo": "https://github.com/imtua/doombot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 54208, "ts": "202 [{"post_id": 54208, "ts": "2026-08-25T02:59:15Z", "hours": 0.26, "text": "worked on the repo and readme file"}, {"post_id": 53784, "ts": "2026-08-24T14:12:22Z", "hours": 2.0833, "text": "Guess it works."}, {"post_id": 39231, "ts": "2026-08-02T02:00:29Z", "hours": 0.5914, "text": "Fixed everything it needed to be fixed. Now it’s working! Go to hack club workspace, head to #bot-spam and try /mridu-help."}, {"post_id": 9262, "ts": "2026-06-15T15:34:19Z", "hours": 0.2911, "text": "Added features!"}, {"post_id": 9199, "ts": "2026-06-15T13:18:00Z", "hours": 0.4108, "text": "Just completed the guide as the stardance guide says, ill take it now and start doing afterwards."}]...
|
Title: Doombot - Slack by @Imtiaz | Stardance
Dev Title: Doombot - Slack by @Imtiaz | Stardance
Devlogs:
Just completed the guide as the stardance guide says, ill take it now and start doing afterwards.
Added features!
Fixed everything it needed to be fixed. Now it’s working! Go to hack club workspace, head to #bot-spam and try /mridu-help.
Guess it works.
worked on the repo and readme file
Ships:
Done as it said, nest doing its work and mridu slack bot replying!
Doombot, Full Project, running on nest, working....
|
1792994153.39943
|
1793080553.39943
|
|
9935
|
FIFA 26 by @atharva02 | Stardance
|
atharva02
|
2
|
8.0
|
132
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T19:45:57Z", "hours": 4.0, "multiplier": 14.8, "payout": 65, "blessing": "neutral", "text": "This is the second ship on my project, if you didn’t review the first one, it’s a world cup simulator made using a Random Forest model and Poisson distribution model to generate scores. All matches were simulated locally to generate a consensus result base viewable across the site. The new feature, reason for reship, was the knockout matchups starting and now there is an interactive bracket so you can simulate your own games but also keep real results once they occur. The site is updated daily, either at the end of the day when matches are complete, or the next morning so expect changes depending on when you view the site. A challenging aspect this time around was organizing the bracket structure such that the teams flow downward when they win. Two things to note, the site does take a while to load the first time as it needs to gather all the data and simulation function, but there should be no other lag or problems once active. Lastly, though the third place matchup doesn’t show up at first, it appears after both semifinal matchups are simulated. Enjoy!", "repo": "https://github.com/atharva-277/FIFA-26", "demo": "https://fifa26.atharva02.hackclub.app/"}, {"ship_num": 2, "ts": "2026-06-15T18:56:57Z", "hours": 4.0, "multiplier": 15.16, "payout": 67, "blessing": "neutral", "text": "I made a project in honor of the FIFA 2026 World Cup. It simulates all 72 group stage matches, consolidates them into easy to read data, viewable on the website link, and allows you to simulate your own matchups as well. The link is live at: https://fifa-26.streamlit.app/ . Challenges occurred in this project in how the model was trained to simulate games with accuracy, converting the python script into a viewable website, and ensuring results were realistic and presentable. I am most proud of how users are able to make their own simulations within the website, but also be able to view a general view of data that was done through numerous simulations. For example, advancement probabilities for each team at each position in their group. Note, when opening the link for the first time, it may take a while to load as it needs to grab the data through the GitHub repo, but after loading, it shouldn’t have many delays.", "repo": "https://github.com/atharva-277/FIFA-26", "demo": "https://fifa26.atharva02.hackclub.app/"}]...
|
[{"post_id": 19454, "ts": "202 [{"post_id": 19454, "ts": "2026-06-30T19:37:29Z", "hours": 0.6628, "text": "First: Thank you everyone for their reviews on my first ship, this will likely be the last devlog for this project as it is a time-based project(can’t really update after the world cup ends) but I appreciate all the feedback. As for this current devlog, there was a small fix which needed to be done, I originally said on my last post that after a matchup occurs in real-time, it is locked and can’t be simulated anymore. This is not the case anymore and you have the option of locking/unlocking games that have occurred in real time already."}, {"post_id": 17376, "ts": "2026-06-28T04:24:43Z", "hours": 3.7322, "text": "The group stage just completed today, but luckily the knockout functionality was essentially all set to go. After inputting the matchups, the site now has new knockout features equipped. There is an interactive bracket, to simulate your own matchups that includes penalty shootouts, along with a simple page to display advancement probabilities to each round. Another ship should be out shortly to reflect these new changes."}, {"post_id": 8833, "ts": "2026-06-14T18:10:43Z", "hours": 1.7358, "text": "This might be the last devlog for a bit, but the project is officially live with the help of streamlit as this is a python project. The link is already live, so you can simulate your own matches and see what the consensus result was through multiple simulations. This project will be shipped soon but updated again for when the knockout stage matchups are set in stone. Attached is how it looks on the main page."}, {"post_id": 6564, "ts": "2026-06-11T00:53:35Z", "hours": 1.5986, "text": "Update: I added the FIFA rankings as another metric to simulate the games. I also strayed away from using the poisson model to predict outcome and now only use it for scoring purposes as the random forest model is much more accurate. Attached are the updated probabilities."}, {"post_id": 5767, "ts": "2026-06-09T17:51:15Z", "hours": 1.1308, "text": "So I recently decided to train a model to help predict the group stage matches for the FIFA world cup. It’s a combination of a Random Forest Model and Poisson Distribution to help predict the games. Currently I’m only training the model based off of a teams ELO and recent form(performance in past 5 games), but plan on adding FIFA’s point system as another metric. I attached the most common match result of each game after running the simulation 1000 times and the probability of where each team finishes this year(first, second, third qual., third elim., and fourth)"}]...
|
Title: FIFA 26 by @atharva02 | Stardance
Devlogs: Title: FIFA 26 by @atharva02 | Stardance
Devlogs:
So I recently decided to train a model to help predict the group stage matches for the FIFA world cup. It’s a combination of a Random Forest Model and Poisson Distribution to help predict the games. Currently I’m only training the model based off of a teams ELO and recent form(performance in past 5 games), but plan on adding FIFA’s point system as another metric. I attached the most common match result of each game after running the simulation 1000 times and the probability of where each team finishes this year(first, second, third qual., third elim., and fourth)
Update: I added the FIFA rankings as another metric to simulate the games. I also strayed away from using the poisson model to predict outcome and now only use it for scoring purposes as the random forest model is much more accurate. Attached are the updated probabilities.
This might be the last devlog for a bit, but the project is officially live with the help of streamlit as this is a python project. The link is already live, so you can simulate your own matches and see what the consensus result was through multiple simulations. This project will be shipped soon but updated again for when the knockout stage matchups are set in stone. Attached is how it looks on the main page.
The group stage just completed today, but luckily the knockout functionality was essentially all set to go. After inputting the matchups, the site now has new knockout features equipped. There is an interactive bracket, to simulate your own matchups that includes penalty shootouts, along with a simple page to display advancement probabilities to each round. Another ship should be out shortly to reflect these new changes.
First: Thank you everyone for their reviews on my first ship, this will likely be the last devlog for this project as it is a time-based project(can’t really update after the world cup ends) but I appreciate all the feedback. As for this current devlog, there was a small fix which needed to be done, I originally said on my last post that after a matchup occurs in real-time, it is locked and can’t be simulated anymore. This is not the case anymore and you have the option of locking/unlocking games that have occurred in real time already.
Ships:
I made a project in honor of the FIFA 2026 World Cup. It simulates all 72 group stage matches, consolidates them into easy to read data, viewable on the website link, and allows you to simulate your own matchups as well. The link is live at: https://fifa-26.streamlit.app/ . Challenges occurred in this project in how the model was trained to simulate games with accuracy, converting the python script into a viewable website, and ensuring results were realistic and presentable. I am most proud of how users are able to make their own simulations within the website, but also be able to view a general view of data that was done through numerous simulations. For example, advancement probabilities for each team at each position in their group. Note, when opening the link for the first time, it may take a while to load as it needs to grab the data through the GitHub repo, but after loading, it shouldn’t have many delays.
This is the second ship on my project, if you didn’t review the first one, it’s a world cup simulator made using a Random Forest model and Poisson distribution model to generate scores. All matches were simulated locally to generate a consensus result base viewable across the site. The new feature, reason for reship, was the knockout matchups starting and now there is an interactive bracket so you can simulate your own games but also keep real results once they occur. The site is updated daily, either at the end of the day when matches are complete, or the next morning so expect changes depending on when you view the site. A challenging aspect this time around was organizing the bracket structure such that the teams flow downward when they win. Two things to note, the site does take a while to load the first time as it needs to gather all the data and simulation function, but there should be no other lag or problems once active. Lastly, though the third place matchup doesn’t show up at first, it appears after both semifinal matchups are simulated. Enjoy!...
|
1792878726.7026663
|
1793742726.7026663
|
|
9936
|
Relay by @InvalidJoker | Stardance
|
InvalidJoker
|
2
|
27.0
|
411
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T21:09:50Z", "hours": 9.0, "multiplier": 17.24, "payout": 161, "blessing": "neutral", "text": "Relay v2? (if we can call it like that) Now that the base was solid and we had most of the features I focused on refining everything so I did exactly that: New UI Mutli Regional Relays Auto Updater QoL changes in general Have fun and try it out now: https://github.com/InvalidJoker/relay/tree/main#installation", "repo": "https://github.com/InvalidJoker/relay", "demo": "https://relay.koder.wtf"}, {"ship_num": 2, "ts": "2026-06-20T09:23:45Z", "hours": 18.0, "multiplier": 14.37, "payout": 250, "blessing": "neutral", "text": "Relay’s first ship I think Relay is finally ready for its first-ever ship! You can find instructions on how to use it at https://relay.koder.wtf For a long time, I’ve been looking for a nice solution to tunnel my local Minecraft servers and websites so I could share them with friends, and Relay is exactly that. Obviously, Relay isn’t even close to being finished yet and will continue to receive updates over time. :D So yeah, go ahead and give it a try! :p", "repo": "https://github.com/InvalidJoker/relay", "demo": "https://relay.koder.wtf"}]...
|
[{"post_id": 78872, "ts": "202 [{"post_id": 78872, "ts": "2026-10-11T20:45:08Z", "hours": 4.1264, "text": "Scaling Relay improve http performance add region based relay deployments some ui improvements add auto updater support Relay now supports choosing the best relay between multiple relays per “host”. Obv. we give you the freedom to say that you just want to have relay x and every feature we previously had will works as usual. I obv. did some more small changes as you can see above"}, {"post_id": 78115, "ts": "2026-10-09T16:31:40Z", "hours": 5.1892, "text": "Relay Rebranding I’ve completely rewritten the Relay website in Nuxt, fixing many bugs along the way and giving it a more polished, modern design that better fits the project. Check it out now at: https://relay.koder.wtf/"}, {"post_id": 12429, "ts": "2026-06-20T08:59:53Z", "hours": 2.8692, "text": "Relay is now public I think Relay has reached a point where I’m comfortable letting other people try it out. It’s now available at https://relay.koder.wtf/dashboard . The CLI supports Windows, macOS, and Linux, and can be installed with a simple script ( https://relay.koder.wtf/#how-it-works ). Currently, each user gets 2 reserved ports, 3 subdomains, and 1 completely custom domain. There’s still plenty of work ahead. Over the coming weeks, I’ll continue improving Relay and completely rework the dashboard, as it doesn’t look quite as polished as I’d like yet. I also plan to add a way for users to request additional subdomains directly through the platform. For now, I’d love for people to try it out and share their feedback."}, {"post_id": 11257, "ts": "2026-06-18T12:37:43Z", "hours": 6.2831, "text": "First Working Version I’ve got a first real version of Relay up and running :D The dashboard works, and both the HTTP and TCP proxy are stable. Next up is mostly cleanup: polishing the frontend, improving the CLI tools, and finally implementing run configurations so you can have a relay.toml file in your project and don’t have to type the entire command every time. After that, I’ll put together a demo deployment so people can actually try it out and break it a bit."}, {"post_id": 7483, "ts": "2026-06-12T14:20:09Z", "hours": 4.9442, "text": "I’ve started working on the frontend for Relay and made some structural changes. One major change is the removal of the dedicated Rust backend. All functionality is now handled directly within the Svelte application, simplifying development and deployment complexity. For the UI, I chose a minimal design built with shadcn-svelte. This gives Relay a clean, modern look. Upcoming Features: The dashboard will soon allow you to: Create and manage custom domains and subdomains Reserve specific ports for your projects, so you don’t have to send new ports to your friends everytime More updates soon :D"}, {"post_id": 4414, "ts": "2026-06-07T18:51:59Z", "hours": 2.6497, "text": "I wanted the CLI to be as intuitive as possible, so I came up with the following design. I’ve also made progress on building the Relay server itself. It now includes a communication layer for interacting with the CLI and supports client authentication."}, {"post_id": 4094, "ts": "2026-06-07T09:08:17Z", "hours": 0.7886, "text": "What is Relay? Relay is a TCP tunneling service. Unlike many other services on the market, it will be open-source and free to use (with some limitations, of course). We also plan to offer unique features, such as persistent domains, so your friends won’t have to update the URL every time they want to visit your site. Relay is currently a work in progress, so don’t expect anything too crazy just yet. I’ll keep you updated :)"}]...
|
Title: Relay by @InvalidJoker | Stardance
Devlogs Title: Relay by @InvalidJoker | Stardance
Devlogs:
What is Relay? Relay is a TCP tunneling service. Unlike many other services on the market, it will be open-source and free to use (with some limitations, of course). We also plan to offer unique features, such as persistent domains, so your friends won’t have to update the URL every time they want to visit your site. Relay is currently a work in progress, so don’t expect anything too crazy just yet. I’ll keep you updated :)
I wanted the CLI to be as intuitive as possible, so I came up with the following design. I’ve also made progress on building the Relay server itself. It now includes a communication layer for interacting with the CLI and supports client authentication.
I’ve started working on the frontend for Relay and made some structural changes. One major change is the removal of the dedicated Rust backend. All functionality is now handled directly within the Svelte application, simplifying development and deployment complexity. For the UI, I chose a minimal design built with shadcn-svelte. This gives Relay a clean, modern look. Upcoming Features: The dashboard will soon allow you to: Create and manage custom domains and subdomains Reserve specific ports for your projects, so you don’t have to send new ports to your friends everytime More updates soon :D
First Working Version I’ve got a first real version of Relay up and running :D The dashboard works, and both the HTTP and TCP proxy are stable. Next up is mostly cleanup: polishing the frontend, improving the CLI tools, and finally implementing run configurations so you can have a relay.toml file in your project and don’t have to type the entire command every time. After that, I’ll put together a demo deployment so people can actually try it out and break it a bit.
Relay is now public I think Relay has reached a point where I’m comfortable letting other people try it out. It’s now available at https://relay.koder.wtf/dashboard . The CLI supports Windows, macOS, and Linux, and can be installed with a simple script ( https://relay.koder.wtf/#how-it-works ). Currently, each user gets 2 reserved ports, 3 subdomains, and 1 completely custom domain. There’s still plenty of work ahead. Over the coming weeks, I’ll continue improving Relay and completely rework the dashboard, as it doesn’t look quite as polished as I’d like yet. I also plan to add a way for users to request additional subdomains directly through the platform. For now, I’d love for people to try it out and share their feedback.
Relay Rebranding I’ve completely rewritten the Relay website in Nuxt, fixing many bugs along the way and giving it a more polished, modern design that better fits the project. Check it out now at: https://relay.koder.wtf/
Scaling Relay improve http performance add region based relay deployments some ui improvements add auto updater support Relay now supports choosing the best relay between multiple relays per “host”. Obv. we give you the freedom to say that you just want to have relay x and every feature we previously had will works as usual. I obv. did some more small changes as you can see above
Ships:
Relay’s first ship I think Relay is finally ready for its first-ever ship! You can find instructions on how to use it at https://relay.koder.wtf For a long time, I’ve been looking for a nice solution to tunnel my local Minecraft servers and websites so I could share them with friends, and Relay is exactly that. Obviously, Relay isn’t even close to being finished yet and will continue to receive updates over time. :D So yeah, go ahead and give it a try! :p
Relay v2? (if we can call it like that) Now that the base was solid and we had most of the features I focused on refining everything so I did exactly that: New UI Mutli Regional Relays Auto Updater QoL changes in general Have fun and try it out now: https://github.com/InvalidJoker/relay/tree/main#installation...
|
1792997676.812085
|
1793084076.812085
|
|
10853
|
RoFind by @KERNL | Stardance
|
KERNL
|
2
|
30.71
|
381
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T10:42:53Z", "hours": 15.0, "multiplier": 16.85, "payout": 260, "blessing": "neutral", "text": "I have finally implemented a basic login feature! From the past submission this version a slight change has been merged: Game Submission now requires logging in! This due to a problem where anyone can spam submission. Some elements/redundancy has been removed in the code and the pages This login feature has been the hardest part yet since i haven’t tried login techniques before. I almost gave up on the project but decided to pivot into a more simplified login form first then secure it later!", "repo": "https://github.com/rofind-main/RoFind-Site", "demo": "https://ro-find.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-18T15:03:34Z", "hours": 14.0, "multiplier": 8.56, "payout": 121, "blessing": "neutral", "text": "RoFind is a community driven game discovery. RoFind features a game submission system so everyone can suggest any game they want everyone to experience too! Submitted games will be reviewed before making into the public list. Made with vanilla HTML, CSS, and JavaScript.", "repo": "https://github.com/rofind-main/RoFind-Site", "demo": "https://ro-find.vercel.app/"}]...
|
[{"post_id": 58208, "ts": "202 [{"post_id": 58208, "ts": "2026-08-30T15:49:43Z", "hours": 0.6919, "text": "8/30/26 - Game Card From a user review suggestion, I am now working on implementing the description when opening/clicking a game popup. Experimentation is my main process here since I am not a good UI designer and still looking for my style. Here is the preview of what is currently being developed. The idea here is that, in order to reduce screen clutter and make it a little more modern I have placed the game image behind the texts (inspired from other platforms, apps, designs). This should be done in just a week :). I can’t focus on this project i am addicted to osu!"}, {"post_id": 57221, "ts": "2026-08-29T10:07:28Z", "hours": 1.0158, "text": "8/29/26 - Submission fix & Future plans Thank you for all the generous comments about RoFind and the people who have tried my project! I have more plans to this project but in the mean time i will be focusing on life and taking a break a little bit from this project and expect it to be better in the future. I have fixed the ability to spam rate a game. I am also aware of other vulnerability on the project and i do have planned fixes and changes to it so stay tuned!"}, {"post_id": 52244, "ts": "2026-08-22T10:38:57Z", "hours": 3.0933, "text": "8/22/26 - User Profile I have finally found a way to implement user profiles by using OAuth (not really) but the idea is simple i only request the username and the user id and be saved locally since i don’t have much experience handling OAuth and security. I do plan on fixing that to be more secure and faster. !! Rating Collection & Comments will be implemented soon they are currently place holder to give you an idea what will be the user page hold !! Over all the plan is going okay(ish) in the roadmap. More features will be implemented!"}, {"post_id": 41255, "ts": "2026-08-05T11:08:33Z", "hours": 1.6106, "text": "8/6/26 - Login Feature I have been taking a break for a while (playing games) since this project is pretty heavy on my little brain to handle. Anyways, thanks to AI i have found a way how to handle Roblox OAuth and the login feature to be slowly worked on! I will also be reworking some things such us the popup system since i have multiple occurrences of popup tags on pages that totally sucks to find but also maintain when expanding the platform. I am currently aiming to earn a little more stardance currency (i forgot what its called) so i can buy a little more useful stuff :)"}, {"post_id": 20755, "ts": "2026-07-02T13:28:59Z", "hours": 1.4014, "text": "7/2/26 - Major Revamp I have decided to port the project into Next.js since scaling the project in the future is a pain. Further fixes will be pushed in the current Web version while also working on the revamped one!"}, {"post_id": 15618, "ts": "2026-06-25T12:23:10Z", "hours": 3.0064, "text": "6/25/26 - Users Login Update I have been having trouble on how user login would work where i wont really have much trouble maintaining the backend that much when the platform grows. Things i have been doing: Updating the homepage Updating the README credits User login OAuth and Redirects"}, {"post_id": 13648, "ts": "2026-06-22T12:20:25Z", "hours": 1.3939, "text": "6/22/26 - Submission Adjustments Thanks to @arma for finding a very confusing bug where the user would not see a “successful” message and if it failed. Things being currently worked on: User Login Backend and Frontend Performance Discord Webhook optimization (It is kinda just a spam at this point on my webhook)"}, {"post_id": 13057, "ts": "2026-06-21T11:09:55Z", "hours": 1.9503, "text": "6/21/26 - Adjustments I have made a few adjustments regarding the landing page and updated the information there. Also added some notes and updated some values on the demo page Review System Server Side IP and local based checking Custom popup added (from feedback thanks to thestarviper and Some1) (big thanks to people (especially reviewers) who commented on improving my project and my mistakes the goats)"}, {"post_id": 12962, "ts": "2026-06-21T06:46:15Z", "hours": 2.5372, "text": "6/21/26 - Review system It’s now working in the most barebone way possible Adjusted some styling to fit the overall aesthetic a little bit more More features will be worked on I am about to explode internally with this project"}, {"post_id": 12482, "ts": "2026-06-20T11:49:03Z", "hours": 0.4156, "text": "6/20/26 - Review system Got some start on review feature Still figuring out how ill take this one since i have never made/thought about a review thing Probably will take some days as i am quite busy at the moment:) Icons from LucideIcons"}, {"post_id": 11319, "ts": "2026-06-18T15:01:09Z", "hours": 1.1581, "text": "Web version is now functional (just missing searching and filtering and rate system) im working on it :)"}, {"post_id": 10588, "ts": "2026-06-17T12:25:50Z", "hours": 0.6583, "text": "I had some problems with the API im working on but ill get this done within a couple of days. my eyes got tired but i got the buttons working in the webhook"}, {"post_id": 10557, "ts": "2026-06-17T10:50:40Z", "hours": 3.415, "text": "Website Version - Submissions now implemented! Sent submissions is connected to a Discord webhook. I don’t know any other way to store the submitted tickets soooo i used Discord:)"}, {"post_id": 6234, "ts": "2026-06-10T14:12:26Z", "hours": 6.5742, "text": "Web Demo now available!"}, {"post_id": 4782, "ts": "2026-06-08T08:37:34Z", "hours": 2.0956, "text": "Changing card design"}, {"post_id": 4155, "ts": "2026-06-07T11:22:27Z", "hours": 0.3336, "text": "RoFind - Electron based Roblox community curated games list (Old Project)"}]...
|
Title: RoFind by @KERNL | Stardance
Devlogs:
RoFi Title: RoFind by @KERNL | Stardance
Devlogs:
RoFind - Electron based Roblox community curated games list (Old Project)
Changing card design
Web Demo now available!
Website Version - Submissions now implemented! Sent submissions is connected to a Discord webhook. I don’t know any other way to store the submitted tickets soooo i used Discord:)
I had some problems with the API im working on but ill get this done within a couple of days. my eyes got tired but i got the buttons working in the webhook
Web version is now functional (just missing searching and filtering and rate system) im working on it :)
6/20/26 - Review system Got some start on review feature Still figuring out how ill take this one since i have never made/thought about a review thing Probably will take some days as i am quite busy at the moment:) Icons from LucideIcons
6/21/26 - Review system It’s now working in the most barebone way possible Adjusted some styling to fit the overall aesthetic a little bit more More features will be worked on I am about to explode internally with this project
6/21/26 - Adjustments I have made a few adjustments regarding the landing page and updated the information there. Also added some notes and updated some values on the demo page Review System Server Side IP and local based checking Custom popup added (from feedback thanks to thestarviper and Some1) (big thanks to people (especially reviewers) who commented on improving my project and my mistakes the goats)
6/22/26 - Submission Adjustments Thanks to @arma for finding a very confusing bug where the user would not see a “successful” message and if it failed. Things being currently worked on: User Login Backend and Frontend Performance Discord Webhook optimization (It is kinda just a spam at this point on my webhook)
6/25/26 - Users Login Update I have been having trouble on how user login would work where i wont really have much trouble maintaining the backend that much when the platform grows. Things i have been doing: Updating the homepage Updating the README credits User login OAuth and Redirects
7/2/26 - Major Revamp I have decided to port the project into Next.js since scaling the project in the future is a pain. Further fixes will be pushed in the current Web version while also working on the revamped one!
8/6/26 - Login Feature I have been taking a break for a while (playing games) since this project is pretty heavy on my little brain to handle. Anyways, thanks to AI i have found a way how to handle Roblox OAuth and the login feature to be slowly worked on! I will also be reworking some things such us the popup system since i have multiple occurrences of popup tags on pages that totally sucks to find but also maintain when expanding the platform. I am currently aiming to earn a little more stardance currency (i forgot what its called) so i can buy a little more useful stuff :)
8/22/26 - User Profile I have finally found a way to implement user profiles by using OAuth (not really) but the idea is simple i only request the username and the user id and be saved locally since i don’t have much experience handling OAuth and security. I do plan on fixing that to be more secure and faster. !! Rating Collection & Comments will be implemented soon they are currently place holder to give you an idea what will be the user page hold !! Over all the plan is going okay(ish) in the roadmap. More features will be implemented!
8/29/26 - Submission fix & Future plans Thank you for all the generous comments about RoFind and the people who have tried my project! I have more plans to this project but in the mean time i will be focusing on life and taking a break a little bit from this project and expect it to be better in the future. I have fixed the ability to spam rate a game. I am also aware of other vulnerability on the project and i do have planned fixes and changes to it so stay tuned!
8/30/26 - Game Card From a user review suggestion, I am now working on implementing the description when opening/clicking a game popup. Experimentation is my main process here since I am not a good UI designer and still looking for my style. Here is the preview of what is currently being developed. The idea here is that, in order to reduce screen clutter and make it a little more modern I have placed the game image behind the texts (inspired from other platforms, apps, designs). This should be done in just a week :). I can’t focus on this project i am addicted to osu!
Ships:
RoFind is a community driven game discovery. RoFind features a game submission system so everyone can suggest any game they want everyone to experience too! Submitted games will be reviewed before making into the public list. Made with vanilla HTML, CSS, and JavaScript.
I have finally implemented a basic login feature! From the past submission this version a slight change has been merged: Game Submission now requires logging in! This due to a problem where anyone can spam submission. Some elements/redundancy has been removed in the code and the pages This login feature has been the hardest part yet since i haven’t tried login techniques before. I almost gave up on the project but decided to pivot into a more simplified login form first then secure it later!...
|
1793109117.3346848
|
1793195517.3346848
|
|
10862
|
Snake by @Danial | Stardance
|
Danial
|
2
|
18.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-07T07:59:19Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi everyone, I’m shipping snake version 1.0.1. Things that I added in this version make it somther, and easier to run", "repo": "https://github.com/Denial132/Snake", "demo": "https://github.com/Denial132/Snake-Demo/releases/tag/v1.0.1"}, {"ship_num": 2, "ts": "2026-07-06T09:41:43Z", "hours": 11.0, "multiplier": 4.18, "payout": 22, "blessing": "neutral", "text": "Snake Game – Final Submission This project is a classic Snake game developed in Python using Pygame. It includes a main menu, pause feature, adjustable sound and speed settings, score and high score tracking, restart functionality, and a game over screen. This is the final version of the project for submission.Thank you to anyone who was following the progression of the game!", "repo": "https://github.com/Denial132/Snake", "demo": "https://github.com/Denial132/Snake-Demo/releases/tag/v1.0.1"}]...
|
[{"post_id": 42486, "ts": "202 [{"post_id": 42486, "ts": "2026-08-07T07:56:29Z", "hours": 4.2364, "text": "🐍 Devlog: #9 This is going to be my last post until the next ship. Score tracking update for diffrent speed levels Pressing continue saves the last speed (So you can’t enter the game and get a high score for a higher speed) The snake won’t crash into itself if you’re trying to do a 180 turn Some complaints from the last ship Also fixed a lot of other bugs that I forgot"}, {"post_id": 25687, "ts": "2026-07-10T03:33:34Z", "hours": 2.7703, "text": "🐍 Devlog: #8 Cleaned up my Snake game repository by putting the README.md, Snake.py, save.json, background.mp3, and death.wav files into one main repository. I also fixed the README file name and prepared the repository and demo links for resubmission."}, {"post_id": 22792, "ts": "2026-07-05T11:36:59Z", "hours": 4.0142, "text": "🐍 Devlog #7 – Final Project In this last session, I finished my Snake game by fixing the last few bugs and making sure all features worked correctly. ✅ Final Changes Fixed the restart button and menu navigation. Made sure scores save correctly. Finished the sound and speed settings. Improved the controls and button layout. . Tested the game and fixed minor bugs. 📝 Reflection I’m really happy with the final game results. The game is now complete and ready for submission."}, {"post_id": 20712, "ts": "2026-07-02T11:43:04Z", "hours": 1.1889, "text": "🐍 Devlog #6 – Settings Menu (Sound & Speed) This update focused on adding and improving the settings menu to give players more control over gameplay, specifically sound and game speed. ⚙️ Settings Menu I implemented a settings menu where players can adjust key game options instead of everything being fixed in the code. 🔊 Sound Control I added a sound option that allows players to enable or disable game audio, making the experience more flexible depending on preference. ⚡ Speed Control I added a speed setting that changes how fast the Snake moves. The speed levels are slow, Normal, fast, and Extreme. 🧭 Menu Integration The settings menu is fully connected to the main menu and game loop, so changes apply correctly without breaking navigation or gameplay. 🧩 Stability I made sure settings updates don’t interfere with saving, restarting, or switching between menus. This might be my last update, unless I do some last minute changes tomorrow."}, {"post_id": 19934, "ts": "2026-07-01T11:38:44Z", "hours": 1.1478, "text": "🐍 Devlog #5– Snake Game Update This update focused on improving the game’s usability and adding a full interactive UI. ✨ What I added .Clickable menu buttons (New Game, Continue, Controls, Quit) .Clickable game over buttons (Restart, Menu) .A controls screen showing keybinds like movement, pause, and turbo .Support for both keyboard AND mouse input .Clear button labels that show controls (e.g. “Pause (P)”) .Improved menu navigation flow .Wider and easier-to-click buttons 🔊 Audio improvements .Background music system added .Music starts at volume 0 and fades in smoothly .Death sound effect plays when you lose 💾 Game system .Save and load system using save.json .High score tracking .Continue option added from menu 🐛 Bugs fixed .Fixed crashes from missing menu states .Fixed input not working in some screens .Improved game-over handling so it doesn’t freeze .Fixed snake movement issues after restart 🎯 Next steps .Add settings menu (sound on/off, speed control)"}, {"post_id": 19154, "ts": "2026-06-30T12:19:43Z", "hours": 1.1897, "text": "🐍 Devlog #5 – Polish + Game Improvements This update focused on improving the overall stability and feel of my Snake game. I fixed several issues in the game logic, including problems with saving the high score, menu flow, and game over handling. 💾 The save system now works properly and keeps the high score between sessions. The menu system has also been cleaned up so restarting or continuing a game no longer causes bugs or resets data incorrectly. 🐍 I also improved the gameplay experience by polishing movement, collision handling, and general game structure. The code is now more stable and easier to manage. 🎮 Overall, the game now feels more complete and consistent, with fewer bugs and smoother transitions between states like menu, gameplay, and game over. 🎵 Next update will include background music and a death sound to improve the game’s atmosphere."}, {"post_id": 18268, "ts": "2026-06-29T11:10:55Z", "hours": 1.3053, "text": "🐍 Devlog #4 – Save System + Progress Update This update added a full save system to my Snake game, so now the game remembers your progress even after you close it. 💾 What I added .A save system using JSON files Automatic saving during gameplay (mid-game autosave) Saving when: .You eat food .You hit game over .You quit the game .A working high score system .Game state saving (snake position, direction, and food position) 🔄 What changed Now the game doesn’t reset every time you open it. Instead, it loads your last session from a file called save.json. That means: .You can close the game anytime .Open it again and continue where you left off .Your high score stays saved permanently ⚙️ How it works The game stores all important data: .Score .High score .Snake body positions .Direction .Food location This data is written into a file using Python’s json module and reloaded when the game starts. 🎮 Result The game now feels much more like a real game instead of a restart-every-time project. Progress is saved automatically and reliably. 🚧 Next steps In the next update, I want to improve the game by adding: .A main menu (Start / Continue / Quit) .Better visuals or animations .Possibly sound effects .Cleaner restart system"}, {"post_id": 16158, "ts": "2026-06-26T08:25:15Z", "hours": 0.9467, "text": "🐍 Devlog #3: Snake Game – Game Over Update Additions: A Game Over system A control so the player can press R to restart the game or Q to quit. When restarting, the snake, score, direction, and food all reset properly. fixes: issues where the game would close instead of showing Game Over Next, I want to add increasing speed and a high score system."}, {"post_id": 15561, "ts": "2026-06-25T09:33:01Z", "hours": 0.6044, "text": "🐍 Devlog #2 – Snake Game Progress This week I improved my Snake game. I focused on fixing bugs and making the gameplay smoother. What I worked on: Adjusted the game speed because it was too fast at first Fixed movement and collision issues Improved how the snake grows when it eats food Cleaned up parts of the code to make it easier to understand What works now: Snake moves smoothly in all directions Food spawns correctly Score increases when food is eaten Game runs without crashing Problems I faced: The game speed felt uncontrollable at first, so I had to lower it Some collision detection bugs made the snake die randomly Next steps: Add a game over screen Add increasing difficulty over time Possibly add sound effects or a restart button"}, {"post_id": 14987, "ts": "2026-06-24T10:49:23Z", "hours": 0.5981, "text": "🐍 Devlog #1 – Starting My Python Snake Game. Today I started my new Python project: Snake I chose Snake because it’s a classic game that most of us have played before So far, I’ve created the project folder, set up my files, and started planning how the game will work. My first goal is to create the game window and get the snake moving smoothly with the arrow keys. Over the next few devlogs, I’ll add food, scoring, game-over detection, and polish the game with better graphics and features."}]...
|
Title: Snake by @Danial | Stardance
Devlogs:
🐍 De Title: Snake by @Danial | Stardance
Devlogs:
🐍 Devlog #1 – Starting My Python Snake Game. Today I started my new Python project: Snake I chose Snake because it’s a classic game that most of us have played before So far, I’ve created the project folder, set up my files, and started planning how the game will work. My first goal is to create the game window and get the snake moving smoothly with the arrow keys. Over the next few devlogs, I’ll add food, scoring, game-over detection, and polish the game with better graphics and features.
🐍 Devlog #2 – Snake Game Progress This week I improved my Snake game. I focused on fixing bugs and making the gameplay smoother. What I worked on: Adjusted the game speed because it was too fast at first Fixed movement and collision issues Improved how the snake grows when it eats food Cleaned up parts of the code to make it easier to understand What works now: Snake moves smoothly in all directions Food spawns correctly Score increases when food is eaten Game runs without crashing Problems I faced: The game speed felt uncontrollable at first, so I had to lower it Some collision detection bugs made the snake die randomly Next steps: Add a game over screen Add increasing difficulty over time Possibly add sound effects or a restart button
🐍 Devlog #3: Snake Game – Game Over Update Additions: A Game Over system A control so the player can press R to restart the game or Q to quit. When restarting, the snake, score, direction, and food all reset properly. fixes: issues where the game would close instead of showing Game Over Next, I want to add increasing speed and a high score system.
🐍 Devlog #4 – Save System + Progress Update This update added a full save system to my Snake game, so now the game remembers your progress even after you close it. 💾 What I added .A save system using JSON files Automatic saving during gameplay (mid-game autosave) Saving when: .You eat food .You hit game over .You quit the game .A working high score system .Game state saving (snake position, direction, and food position) 🔄 What changed Now the game doesn’t reset every time you open it. Instead, it loads your last session from a file called save.json. That means: .You can close the game anytime .Open it again and continue where you left off .Your high score stays saved permanently ⚙️ How it works The game stores all important data: .Score .High score .Snake body positions .Direction .Food location This data is written into a file using Python’s json module and reloaded when the game starts. 🎮 Result The game now feels much more like a real game instead of a restart-every-time project. Progress is saved automatically and reliably. 🚧 Next steps In the next update, I want to improve the game by adding: .A main menu (Start / Continue / Quit) .Better visuals or animations .Possibly sound effects .Cleaner restart system
🐍 Devlog #5 – Polish + Game Improvements This update focused on improving the overall stability and feel of my Snake game. I fixed several issues in the game logic, including problems with saving the high score, menu flow, and game over handling. 💾 The save system now works properly and keeps the high score between sessions. The menu system has also been cleaned up so restarting or continuing a game no longer causes bugs or resets data incorrectly. 🐍 I also improved the gameplay experience by polishing movement, collision handling, and general game structure. The code is now more stable and easier to manage. 🎮 Overall, the game now feels more complete and consistent, with fewer bugs and smoother transitions between states like menu, gameplay, and game over. 🎵 Next update will include background music and a death sound to improve the game’s atmosphere.
🐍 Devlog #5– Snake Game Update This update focused on improving the game’s usability and adding a full interactive UI. ✨ What I added .Clickable menu buttons (New Game, Continue, Controls, Quit) .Clickable game over buttons (Restart, Menu) .A controls screen showing keybinds like movement, pause, and turbo .Support for both keyboard AND mouse input .Clear button labels that show controls (e.g. “Pause (P)”) .Improved menu navigation flow .Wider and easier-to-click buttons 🔊 Audio improvements .Background music system added .Music starts at volume 0 and fades in smoothly .Death sound effect plays when you lose 💾 Game system .Save and load system using save.json .High score tracking .Continue option added from menu 🐛 Bugs fixed .Fixed crashes from missing menu states .Fixed input not working in some screens .Improved game-over handling so it doesn’t freeze .Fixed snake movement issues after restart 🎯 Next steps .Add settings menu (sound on/off, speed control)
🐍 Devlog #6 – Settings Menu (Sound & Speed) This update focused on adding and improving the settings menu to give players more control over gameplay, specifically sound and game speed. ⚙️ Settings Menu I implemented a settings menu where players can adjust key game options instead of everything being fixed in the code. 🔊 Sound Control I added a sound option that allows players to enable or disable game audio, making the experience more flexible depending on preference. ⚡ Speed Control I added a speed setting that changes how fast the Snake moves. The speed levels are slow, Normal, fast, and Extreme. 🧭 Menu Integration The settings menu is fully connected to the main menu and game loop, so changes apply correctly without breaking navigation or gameplay. 🧩 Stability I made sure settings updates don’t interfere with saving, restarting, or switching between menus. This might be my last update, unless I do some last minute changes tomorrow.
🐍 Devlog #7 – Final Project In this last session, I finished my Snake game by fixing the last few bugs and making sure all features worked correctly. ✅ Final Changes Fixed the restart button and menu navigation. Made sure scores save correctly. Finished the sound and speed settings. Improved the controls and button layout. . Tested the game and fixed minor bugs. 📝 Reflection I’m really happy with the final game results. The game is now complete and ready for submission.
🐍 Devlog: #8 Cleaned up my Snake game repository by putting the README.md, Snake.py, save.json, background.mp3, and death.wav files into one main repository. I also fixed the README file name and prepared the repository and demo links for resubmission.
🐍 Devlog: #9 This is going to be my last post until the next ship. Score tracking update for diffrent speed levels Pressing continue saves the last speed (So you can’t enter the game and get a high score for a higher speed) The snake won’t crash into itself if you’re trying to do a 180 turn Some complaints from the last ship Also fixed a lot of other bugs that I forgot
Ships:
Snake Game – Final Submission This project is a classic Snake game developed in Python using Pygame. It includes a main menu, pause feature, adjustable sound and speed settings, score and high score tracking, restart functionality, and a game over screen. This is the final version of the project for submission.Thank you to anyone who was following the progression of the game!
Hi everyone, I’m shipping snake version 1.0.1. Things that I added in this version make it somther, and easier to run...
|
1792875230.2863588
|
1793739230.2863588
|
|
11599
|
Student Hub by @EndLess9 | Stardance
|
EndLess9
|
2
|
5.0
|
21
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T04:06:48Z", "hours": 2.0, "multiplier": 2.85, "payout": 5, "blessing": "neutral", "text": "There are many productivity and tasks trackers, but the reason my website stands out if because my website makes it easier for students to start doing their work. It features 2 very important things. 1 is a class link and the other is the assignment link. The assignment link is something the student can add while making the assignment in Student Hub to quickly access it through this portal. Many productivity apps have this, but what they don’t have is the Class link, every assignment under it’s class has a Class-specific link attached to every assignment and exam for it. So the student doesn’t have to go through the trouble of opening something they need for every assignment/exam for that class.", "repo": "https://github.com/EndLessDude/Student-Hub", "demo": "https://student-hub-5a422.web.app/login"}, {"ship_num": 2, "ts": "2026-06-07T21:28:31Z", "hours": 3.0, "multiplier": 4.89, "payout": 16, "blessing": "neutral", "text": "I always struggled to stay on top of all my school work. I fixed this by making Student Hub. This website lets you easily track your assignments, exams, and reminders.", "repo": "https://github.com/EndLessDude/Student-Hub", "demo": "https://student-hub-5a422.web.app/login"}]...
|
[{"post_id": 12230, "ts": "202 [{"post_id": 12230, "ts": "2026-06-19T23:23:10Z", "hours": 0.9058, "text": "New Changes: New Login/Sign Up screen Fixed bugs in Home Page"}, {"post_id": 11724, "ts": "2026-06-19T02:57:43Z", "hours": 1.0272, "text": "Changes: By default Assignment and Exam tab’s filters will be set to “Pending”. Links added for a class will be automatically added to every assignment/exam for that class for easy access. You can now add links for an assignment and access them anytime. Calendar view for Assignments now works"}, {"post_id": 4449, "ts": "2026-06-07T19:30:41Z", "hours": 3.2561, "text": "Lately I’ve been working on making the dashboard better for users by adding a place for them to add Quick Links to pages such as: Google Classroom, Canvas, Gmail etc. This will be highly beneficial since by adding this users won’t have to do the extra work of manually opening pages they regularly need."}]...
|
Title: Student Hub by @EndLess9 | Stardance
Devlo Title: Student Hub by @EndLess9 | Stardance
Devlogs:
Lately I’ve been working on making the dashboard better for users by adding a place for them to add Quick Links to pages such as: Google Classroom, Canvas, Gmail etc. This will be highly beneficial since by adding this users won’t have to do the extra work of manually opening pages they regularly need.
Changes: By default Assignment and Exam tab’s filters will be set to “Pending”. Links added for a class will be automatically added to every assignment/exam for that class for easy access. You can now add links for an assignment and access them anytime. Calendar view for Assignments now works
New Changes: New Login/Sign Up screen Fixed bugs in Home Page
Ships:
I always struggled to stay on top of all my school work. I fixed this by making Student Hub. This website lets you easily track your assignments, exams, and reminders.
There are many productivity and tasks trackers, but the reason my website stands out if because my website makes it easier for students to start doing their work. It features 2 very important things. 1 is a class link and the other is the assignment link. The assignment link is something the student can add while making the assignment in Student Hub to quickly access it through this portal. Many productivity apps have this, but what they don’t have is the Class link, every assignment under it’s class has a Class-specific link attached to every assignment and exam for it. So the student doesn’t have to go through the trouble of opening something they need for every assignment/exam for that class....
|
1792878651.349388
|
1793742651.349388
|
|
11705
|
Aternos Discord Bot by @albertphu3 | Stardance
|
albertphu3
|
2
|
0.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T17:07:22Z", "hours": 0.0, "multiplier": 1.56, "payout": 0, "blessing": "neutral", "text": "Introduced new fetaures and windows support (BETA)", "repo": "https://github.com/albertphu07/neomc-an-Aternos-Discord-Bot", "demo": "https://discord.gg/kPVNEQzDBn"}, {"ship_num": 2, "ts": "2026-06-09T15:46:51Z", "hours": 0.0, "multiplier": 7.23, "payout": 2, "blessing": "neutral", "text": "Aternos Python Discord Bot that streamlines the Aternos experience! Allows for discord friend groups to quickly start and lightly manage a server! Requires some level of programming knowledge.", "repo": "https://github.com/albertphu07/neomc-an-Aternos-Discord-Bot", "demo": "https://discord.gg/kPVNEQzDBn"}]...
|
[{"post_id": 11936, "ts": "202 [{"post_id": 11936, "ts": "2026-06-19T13:59:41Z", "hours": 0.3119, "text": "Added new feature like help command"}, {"post_id": 5286, "ts": "2026-06-09T00:30:45Z", "hours": 0.2669, "text": "I love to play minecraft with my friends but i had one issue with Aternos not all my friends wanted to spend the time to start or create an Aternos account themselves so i created a discord bot for any discord friend group to use even larger servers! Simplifying the constant pings you used to get to start the server to a simple !start !stop !restart (etc) command! Hope Yall Like it!"}]...
|
Title: Aternos Discord Bot by @albertphu3 | Starda Title: Aternos Discord Bot by @albertphu3 | Stardance
Devlogs:
I love to play minecraft with my friends but i had one issue with Aternos not all my friends wanted to spend the time to start or create an Aternos account themselves so i created a discord bot for any discord friend group to use even larger servers! Simplifying the constant pings you used to get to start the server to a simple !start !stop !restart (etc) command! Hope Yall Like it!
Added new feature like help command
Ships:
Aternos Python Discord Bot that streamlines the Aternos experience! Allows for discord friend groups to quickly start and lightly manage a server! Requires some level of programming knowledge.
Introduced new fetaures and windows support (BETA)...
|
1792997409.5681837
|
1793083809.5681837
|
|
12086
|
Hand tracker by @Selim | Stardance
|
Selim
|
2
|
17.0
|
135
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:45:43Z", "hours": 15.0, "multiplier": 8.87, "payout": 118, "blessing": "neutral", "text": "I finished the wiring up the servos to the pca9685 board and connected the servos to my 3d printed hand model and its so much fun to use and mess around with, this project is by far my favourite. Its officially done and there are two ways to use it: you can use the website hand tracker just to mess around with it, see the values of the fingers and its reaction speed. Googles media pipe model has issues as you move your hand closer and further from the webcam but there’s nothing I can do to fix as it’s an issue with the model, not my code. grab a pico, pca9685 board, breadboard and some wires, 3d printer/ access to a 3d printer and build the whole project, I will attach the 3d model and wiring diagram once I finish them so anyone can build it from scratch and have their own robotic hand at home!", "repo": "https://github.com/Echo-Sel/Hand-Tracker", "demo": "https://echo-sel.github.io/Hand-Tracker/"}, {"ship_num": 2, "ts": "2026-06-16T21:54:43Z", "hours": 2.0, "multiplier": 9.65, "payout": 17, "blessing": "neutral", "text": "I’ve finally reached a point with this code as to where I feel comfortable moving onto reprinting the hand and cleaning it up, for a potential final product! So far the code can: ✅ Host a website ✅ connect with the browser and host port ✅ allow for webcam access and capture ✅ track finger movements and turn them into percentages (with an overlay) ✅ turns the percentages into numbers that it can decipher ✅ turns the numbers into servo values ✅ move the servo’s within a 5ms time frame (requires external hardware) Next steps: 📥 Motor smoothing to allow for more fluid movements Excluding the code im going to start working on the pcb and adjusting the CAD for the actual hand model to allow for a better looking build. Im really excited to see this project finally come to an end!", "repo": "https://github.com/Echo-Sel/Hand-Tracker", "demo": "https://echo-sel.github.io/Hand-Tracker/"}]...
|
[{"post_id": 60803, "ts": "202 [{"post_id": 60803, "ts": "2026-09-03T12:21:38Z", "hours": 2.9067, "text": "I finally finished all of the functional design for my code and refreshed my html! the big new stuff I changed was the switch over to tiny web and it felt soooo much cleaner and easier to use and just look at. Since the I changed the main structure it took me a while to re organize everything to work with tiny web. I added logging everywhere because I kept running into issues where my could would just stop working, and I refreshed the html because the old colours annoyed me. I think i’m almost done now and i’m so excited to put everything together and test it! (P.S look how much cleaner the terminal output looks im in awe)"}, {"post_id": 26950, "ts": "2026-07-12T01:24:31Z", "hours": 11.99, "text": "This hand code has been traumatizing me for too long, ive restructured it and began adding PID tuning for the motors to turn more smooth and human-like, ive also been trying to bug fix packet loss and random noise being sent back and forth, im going to begin working on the pcb and maybe a third version of the projects CAD! im really excited to finally be finished with the code and take a step back and look at what ive made, hopefully you can all take this step back with me"}, {"post_id": 8292, "ts": "2026-06-13T19:44:41Z", "hours": 1.3464, "text": "Webpage refresh: I added Css to make the website look a lot better and aesthetically pleasing, I also added a slider to allow multiple hands to be tracked. For my next steps I want to add different texts boxes for each hand as currently it gets the percent openness from the least number, not the average."}, {"post_id": 4658, "ts": "2026-06-08T02:01:56Z", "hours": 0.7225, "text": "This was my first ‘real’ project where I work on the design and printing, electrical and programming all of the same system, and its taken me all year but it has been one of the funnest things I’ve done in forever. Ive been working on this project on and off starting last summer, and it has been such an amazing learning experience, I’ve been working on the code recently but with the star dance challenge opening, I thought it would be good to post this here as I continue work on it. What I have here is going to be mainly focused on the programming until I feel good with it, then I’ll move on to and quickly finish the pcb. Please feel free to try out the hand tracking software and provide feedback!"}]...
|
Title: Hand tracker by @Selim | Stardance
Devlogs Title: Hand tracker by @Selim | Stardance
Devlogs:
This was my first ‘real’ project where I work on the design and printing, electrical and programming all of the same system, and its taken me all year but it has been one of the funnest things I’ve done in forever. Ive been working on this project on and off starting last summer, and it has been such an amazing learning experience, I’ve been working on the code recently but with the star dance challenge opening, I thought it would be good to post this here as I continue work on it. What I have here is going to be mainly focused on the programming until I feel good with it, then I’ll move on to and quickly finish the pcb. Please feel free to try out the hand tracking software and provide feedback!
Webpage refresh: I added Css to make the website look a lot better and aesthetically pleasing, I also added a slider to allow multiple hands to be tracked. For my next steps I want to add different texts boxes for each hand as currently it gets the percent openness from the least number, not the average.
This hand code has been traumatizing me for too long, ive restructured it and began adding PID tuning for the motors to turn more smooth and human-like, ive also been trying to bug fix packet loss and random noise being sent back and forth, im going to begin working on the pcb and maybe a third version of the projects CAD! im really excited to finally be finished with the code and take a step back and look at what ive made, hopefully you can all take this step back with me
I finally finished all of the functional design for my code and refreshed my html! the big new stuff I changed was the switch over to tiny web and it felt soooo much cleaner and easier to use and just look at. Since the I changed the main structure it took me a while to re organize everything to work with tiny web. I added logging everywhere because I kept running into issues where my could would just stop working, and I refreshed the html because the old colours annoyed me. I think i’m almost done now and i’m so excited to put everything together and test it! (P.S look how much cleaner the terminal output looks im in awe)
Ships:
I’ve finally reached a point with this code as to where I feel comfortable moving onto reprinting the hand and cleaning it up, for a potential final product! So far the code can: ✅ Host a website ✅ connect with the browser and host port ✅ allow for webcam access and capture ✅ track finger movements and turn them into percentages (with an overlay) ✅ turns the percentages into numbers that it can decipher ✅ turns the numbers into servo values ✅ move the servo’s within a 5ms time frame (requires external hardware) Next steps: 📥 Motor smoothing to allow for more fluid movements Excluding the code im going to start working on the pcb and adjusting the CAD for the actual hand model to allow for a better looking build. Im really excited to see this project finally come to an end!
I finished the wiring up the servos to the pca9685 board and connected the servos to my 3d printed hand model and its so much fun to use and mess around with, this project is by far my favourite. Its officially done and there are two ways to use it: you can use the website hand tracker just to mess around with it, see the values of the fingers and its reaction speed. Googles media pipe model has issues as you move your hand closer and further from the webcam but there’s nothing I can do to fix as it’s an issue with the model, not my code. grab a pico, pca9685 board, breadboard and some wires, 3d printer/ access to a 3d printer and build the whole project, I will attach the 3d model and wiring diagram once I finish them so anyone can build it from scratch and have their own robotic hand at home!...
|
1793098043.6039329
|
1793184443.6039329
|
|
12272
|
MotifDesigner by @zeankun | Stardance
|
zeankun
|
2
|
25.35
|
314
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T02:29:23Z", "hours": 7.0, "multiplier": 18.37, "payout": 134, "blessing": "neutral", "text": "Version 1.0 is now released! Horray! A lot of things have been added! Added snap to grid checkmark on inspector NEW WIDGET : Toggle/checkmark! Add confirming stuffs to your UI! Fixed units on most components New handles and dimension badge Creation, saving and loading in new MotifDesigner Visual Files ( .vfl )! with a visual parser And comes with a brand new visual file format to accompany: MotifDesigner Visual Files! What are those? These are MotifDesigner’s native format. They allow you to define UIs, either programatically or visually. Read more about the file format specification yourself, or have it as a complement for Claude or Claude Code via skills", "repo": "https://github.com/zeankundev/MotifDesigner", "demo": "https://github.com/zeankundev/MotifDesigner/releases/latest/"}, {"ship_num": 2, "ts": "2026-06-12T07:37:46Z", "hours": 17.0, "multiplier": 10.69, "payout": 180, "blessing": "neutral", "text": "This is MotifDesigner, a GUI editor for Motif (basically) in which you can edit your normal GUIs. Think of it as like the WinForms/Qt Creator of Motif! The goal is to actually bring modern UX to ancient looking software, and it’s actually quite fun! Behind all these are hours of debugging efforts, tens of segmentation fault crashes, tons of sacrificed memory for memory leak debugging, and lots of core dumps! I hope this project simplifies what GUI making is, or just making Motif development a bit easier while also looking ancient!", "repo": "https://github.com/zeankundev/MotifDesigner", "demo": "https://github.com/zeankundev/MotifDesigner/releases/latest/"}]...
|
[{"post_id": 24473, "ts": "202 [{"post_id": 24473, "ts": "2026-07-08T01:34:46Z", "hours": 1.3453, "text": "Now added live value editing! Double click (certain elements) to edit its value, and you can use your normal keyboard editing shortcuts. Yes, Home , End , Shift+arrow , Ctrl+A , etc, are supported! Hands off the mouse now! Being honest, this feature is mostly implemented by AI. Text logic and selection is a finicky subject to pick up, given the sheer complexity. But I want to make the value editing UX just like at home, like you would on Figma, and many more! Also, some quality of life updates: re-renders are now automatically scheduled based on your device’s refresh rate. You don’t need to wait for user input now, it happens automatically in the background. ( And yes, free (s) are excluded as usual. Double free() is usually the culprit and yeah, I’m bad at memory management )"}, {"post_id": 22554, "ts": "2026-07-05T02:26:15Z", "hours": 0.3092, "text": "Release 1.0 has been out now! MotifDesigner is usable for the general public now! You know what that means? Shipping time! Oh yeah, don’t forget to report bugs or issues here . Don’t be hesitant. It can be either via your AppImage or your local debug build"}, {"post_id": 22537, "ts": "2026-07-05T01:54:20Z", "hours": 0.5664, "text": "Made file specifications in Markdown, as well as a Claude skill (for you, vibecoders /j) so that Claude can generate proper visual files. No code changes, tho. Attached is an example where I instructed Claude to make a simple supermarket POS interface."}, {"post_id": 21485, "ts": "2026-07-03T13:49:15Z", "hours": 2.8694, "text": "Now the hardest part has been done: importing and parsing visual files! Here’s what I accomplished: Parsing of visual files Syntax errors and redundancy checks to ensure it is indeed the visual file you are opening Auto writing on save whenever you’ve opened something or has saved a new file! How does the MotifDesigner Visual File format work ( .vfl )? (for self programming the visual file) It’s like XML or HTML (whatever that correlates with both) except the tags don’t end in slashes. All visual files must have both [MotifDesignerVisualFile] and [EndMotifDesignerVisualFile] . This will contain two critical pieces of information: the Version parameter, which you must append (e.g. Version=0.5 ). It must be inside the VisualFile tag. the Widgets tag. Same, enclosed with EndWidgets . This will be the place where you will put your elements here. I’ll write more of the file specifications if I have more time Anyway, here’s a video to demonstrate!"}, {"post_id": 20763, "ts": "2026-07-02T13:41:43Z", "hours": 0.4028, "text": "Real thing now! You can now export visual files made by MotifDesigner! It will come in a user-friendly syntax, which is human and machine readable, which is much closer to something like XML! All that’s left is to: implement a parser to parse these visual files something to make the visual file editing complete before moving in to the IDE side of things"}, {"post_id": 20624, "ts": "2026-07-02T08:29:30Z", "hours": 1.0811, "text": "This one, by far the hardest feature to implement: the save dialog . It took me lots of work to do (most was AI assisted) that double frees were actually fired (despite deleting all free methods). Here’s what’s fully implemented: Autotemplating with a default filename Sticky file names, so your typed filename never gets lost (e.g. when changing directories) And lots of UX improvements for the save dialogs The rest are relatively easy to implement, as they require little work, such as the open file dialog, etc. Next steps Next, I hope that There will be basic visual file saving/exporting ( *.vfl ) Parser for those visual files (to open it) Lots of filesystem-related operations as well as a robust project management system"}, {"post_id": 19691, "ts": "2026-07-01T02:35:34Z", "hours": 0.2656, "text": "Oh yeah, I forgot to log this one, but it adds few QoL improvements. Now, it should feel more modern, hence to the Figma-style handle and nets, as well as adding the bottom blue badge to visualize the exact width without looking at the inspector ever again!"}, {"post_id": 14973, "ts": "2026-06-24T09:54:14Z", "hours": 0.6342, "text": "Some features for 0.8 will be on the works by now. This includes: Snap to Grid toggle Added toggle as a new component Overall bug fixes ;) There will be more during the actual 0.8 release so stay tuned"}, {"post_id": 7967, "ts": "2026-06-13T09:11:29Z", "hours": 0.7167, "text": "A lot screwed up, so I decided to fix a lot of them. These are just mostly bug fixes and only a few QoL changes. For those who are afraid of change: Labels should be more legible now (same background as the overall canvas) Forced .hpp file generation (because the header implementation is C++, we don’t want it to mix with C only code A lot of stubborness during code generation ;)"}, {"post_id": 7913, "ts": "2026-06-13T06:10:04Z", "hours": 0.5419, "text": "Hotfix 1 of v0.7 (0.71) is here. Nothing much here, just like the old 0.7 version, except this update are just bug fixes and few QoL improvements. If you are terrified of change, I’ll wrap up what’s changed in this hotfix: The handles and selection frames should no longer offset by now, it is near one-to-one on what you’ll be building at the end (including the header files :D) And yeah, the grid should be more visible now. At TextDialog.cpp , few improvements were made. The text field will focus first rather than the OK button, so you can type your header class right away, and press Enter when you’re all set!"}, {"post_id": 7337, "ts": "2026-06-12T07:29:23Z", "hours": 0.4667, "text": "Quality of life fixes, nothing big, just minor fixes before getting ready to ship at the first phase!"}, {"post_id": 7327, "ts": "2026-06-12T06:32:47Z", "hours": 1.2031, "text": "Finally, added one feature that is extremely important or else render MotifDesigner out of its core goals! Now, header ( *.h ) export is available, which means you can start using it as part of your project! Zero warnings, zero errors, it’s stable now (if there are errors or warnings in .h, it’s either your fault or just file a bug report)"}, {"post_id": 7270, "ts": "2026-06-12T03:52:20Z", "hours": 1.7183, "text": "Added a dialog later on for you to answer the questions it prompted you, as well as regex checking (this will be fixed into a more modular approach later on). Regexes still apply! I’ll probably finish a lot later on (including adding a new visual file, opening a visual file, etc). Right now, this could be the roadmap for future development from now: Current Goals: Implement exporting visual as .h file to be used Creating a new visual file, opening/parsing, and saving Future Goals: Fully implemented C++ editor inside of the designer Project system (a folder containing the visual file, C++ file and the automatically generated header file) Automatic X11/Xm/Xt download if you don’t have one (includes and libraries) In-IDE building with g++ and having the ability to run the result binary Packaging to AppImage with linuxdeploy and appimagetool Add Wakatime/Hackatime support /j (that will/won’t happen)"}, {"post_id": 6823, "ts": "2026-06-11T13:29:17Z", "hours": 2.2417, "text": "Lots of bug fixes (I forgot what I did for the past 2 hours logged T_T) but at least, most bugs were shot down and caught. Especially quick mouse kids, who just mess and drag widgets fast, now it’s “throttled” to a fixed 60fps. And also added status bar to highlight the user on what’s going on and what to do with the tool. Oh yeah, also added where you can use arrow keys to snappingly move between 10 units, just for convenience! (Excuse me, the cursor there is highly offset, I truly apologize for that TwT)"}, {"post_id": 6687, "ts": "2026-06-11T06:17:54Z", "hours": 3.6958, "text": "Finally, the feature we all be waiting for! The canvas! This took me a horrendous amount of time, but it sure was worth the experience It can now drag, scale, and do many transformations like a usual GUI builder would do! And yeah, there were a lot of hiccups (yeah, segfaults and coredump abortions) and managed to fix a lot of them if it weren’t for Claude! Yeah, basically, it looks like a functioning editor by now! Sure it was interesting!"}, {"post_id": 6113, "ts": "2026-06-10T08:44:45Z", "hours": 0.2511, "text": "Now added a check for illegal names using regex! This is done so that you won’t get programmatic errors later on when coding your app in C++ (everyone doesn’t want that!) so it’s better to stay off at the normal naming convention of C"}, {"post_id": 6054, "ts": "2026-06-10T05:17:49Z", "hours": 0.8317, "text": "Added new properties panel! This is to ensure precise modifications were being made so that you still have lots of control with the UI building process"}, {"post_id": 5556, "ts": "2026-06-09T11:47:50Z", "hours": 1.2603, "text": "A lot of things were done. First off, the menubar for your stuffs later on! You’ll do it there! Second, now there’s a toolbar (still WIP)! As well as a lot of segfaults along the way, we managed to get that working for the start of this!"}, {"post_id": 5494, "ts": "2026-06-09T09:26:59Z", "hours": 1.325, "text": "More work yay! Most of the time logged here is just a scrapped feature that will never make it (due to the nature of XmNotebook). Initially, I wanted to add a tab that can switch between the visual editor and the C++ code editor (WIP)! but yeah, I don’t want a flipbook like interface, so I’ll make it as two separate modules. But hey, at least we made progress!"}, {"post_id": 5371, "ts": "2026-06-09T03:39:09Z", "hours": 1.7375, "text": "Actually another long time to comply for shipping (a test one!) which are AppImages! I just don’t want to mess around with dependency hell when distributing an ELF binary (ugh dangerous) so AppImage was our way to go. First, it was a bit flawed, then with some help, we managed to get two variants, generic and IRIX (for those who run MaXX). Hopefully it will be done soon, as this is still a work in progress and should serve the instantaneous basis of my future MotifDesigner roadmap. Attached is the app tested on Ubuntu MATE at Deskterm."}, {"post_id": 4819, "ts": "2026-06-08T10:10:15Z", "hours": 1.0542, "text": "I know this may sound like a gimmick (given that I logged 1h on one specific window) but this was tedious to get into. The About section. It seems easy, if you think, but no! It’s actually really hard to get into without proper techniques and lots of tampering with the XPM pixmaps. Gemini couldn’t help so I reached over to Claude to help and here it is, 1h wasted on just an about section."}, {"post_id": 4762, "ts": "2026-06-08T07:17:56Z", "hours": 0.2944, "text": "Did some variations with the IMC test but this time with the actual X11 Motif window showing up. The same as before except this test is now in an X11 window 🙃"}, {"post_id": 4757, "ts": "2026-06-08T06:34:36Z", "hours": 0.4325, "text": "Doing some tests to actually ensure that inter-module communication is done effortlessly. I don’t want to write more bloat code that results in a bloated main.cpp that just “acts” as a middleman, just let the header files be the ones that’s fully responsible for the IMC calling"}, {"post_id": 4742, "ts": "2026-06-08T05:56:00Z", "hours": 0.3322, "text": "First project bootstrap! Horray!"}]...
|
Title: MotifDesigner by @zeankun | Stardance
Devl Title: MotifDesigner by @zeankun | Stardance
Devlogs:
First project bootstrap! Horray!
Doing some tests to actually ensure that inter-module communication is done effortlessly. I don’t want to write more bloat code that results in a bloated main.cpp that just “acts” as a middleman, just let the header files be the ones that’s fully responsible for the IMC calling
Did some variations with the IMC test but this time with the actual X11 Motif window showing up. The same as before except this test is now in an X11 window 🙃
I know this may sound like a gimmick (given that I logged 1h on one specific window) but this was tedious to get into. The About section. It seems easy, if you think, but no! It’s actually really hard to get into without proper techniques and lots of tampering with the XPM pixmaps. Gemini couldn’t help so I reached over to Claude to help and here it is, 1h wasted on just an about section.
Actually another long time to comply for shipping (a test one!) which are AppImages! I just don’t want to mess around with dependency hell when distributing an ELF binary (ugh dangerous) so AppImage was our way to go. First, it was a bit flawed, then with some help, we managed to get two variants, generic and IRIX (for those who run MaXX). Hopefully it will be done soon, as this is still a work in progress and should serve the instantaneous basis of my future MotifDesigner roadmap. Attached is the app tested on Ubuntu MATE at Deskterm.
More work yay! Most of the time logged here is just a scrapped feature that will never make it (due to the nature of XmNotebook). Initially, I wanted to add a tab that can switch between the visual editor and the C++ code editor (WIP)! but yeah, I don’t want a flipbook like interface, so I’ll make it as two separate modules. But hey, at least we made progress!
A lot of things were done. First off, the menubar for your stuffs later on! You’ll do it there! Second, now there’s a toolbar (still WIP)! As well as a lot of segfaults along the way, we managed to get that working for the start of this!
Added new properties panel! This is to ensure precise modifications were being made so that you still have lots of control with the UI building process
Now added a check for illegal names using regex! This is done so that you won’t get programmatic errors later on when coding your app in C++ (everyone doesn’t want that!) so it’s better to stay off at the normal naming convention of C
Finally, the feature we all be waiting for! The canvas! This took me a horrendous amount of time, but it sure was worth the experience It can now drag, scale, and do many transformations like a usual GUI builder would do! And yeah, there were a lot of hiccups (yeah, segfaults and coredump abortions) and managed to fix a lot of them if it weren’t for Claude! Yeah, basically, it looks like a functioning editor by now! Sure it was interesting!
Lots of bug fixes (I forgot what I did for the past 2 hours logged T_T) but at least, most bugs were shot down and caught. Especially quick mouse kids, who just mess and drag widgets fast, now it’s “throttled” to a fixed 60fps. And also added status bar to highlight the user on what’s going on and what to do with the tool. Oh yeah, also added where you can use arrow keys to snappingly move between 10 units, just for convenience! (Excuse me, the cursor there is highly offset, I truly apologize for that TwT)
Added a dialog later on for you to answer the questions it prompted you, as well as regex checking (this will be fixed into a more modular approach later on). Regexes still apply! I’ll probably finish a lot later on (including adding a new visual file, opening a visual file, etc). Right now, this could be the roadmap for future development from now: Current Goals: Implement exporting visual as .h file to be used Creating a new visual file, opening/parsing, and saving Future Goals: Fully implemented C++ editor inside of the designer Project system (a folder containing the visual file, C++ file and the automatically generated header file) Automatic X11/Xm/Xt download if you don’t have one (includes and libraries) In-IDE building with g++ and having the ability to run the result binary Packaging to AppImage with linuxdeploy and appimagetool Add Wakatime/Hackatime support /j (that will/won’t happen)
Finally, added one feature that is extremely important or else render MotifDesigner out of its core goals! Now, header ( *.h ) export is available, which means you can start using it as part of your project! Zero warnings, zero errors, it’s stable now (if there are errors or warnings in .h, it’s either your fault or just file a bug report)
Quality of life fixes, nothing big, just minor fixes before getting ready to ship at the first phase!
Hotfix 1 of v0.7 (0.71) is here. Nothing much here, just like the old 0.7 version, except this update are just bug fixes and few QoL improvements. If you are terrified of change, I’ll wrap up what’s changed in this hotfix: The handles and selection frames should no longer offset by now, it is near one-to-one on what you’ll be building at the end (including the header files :D) And yeah, the grid should be more visible now. At TextDialog.cpp , few improvements were made. The text field will focus first rather than the OK button, so you can type your header class right away, and press Enter when you’re all set!
A lot screwed up, so I decided to fix a lot of them. These are just mostly bug fixes and only a few QoL changes. For those who are afraid of change: Labels should be more legible now (same background as the overall canvas) Forced .hpp file generation (because the header implementation is C++, we don’t want it to mix with C only code A lot of stubborness during code generation ;)
Some features for 0.8 will be on the works by now. This includes: Snap to Grid toggle Added toggle as a new component Overall bug fixes ;) There will be more during the actual 0.8 release so stay tuned
Oh yeah, I forgot to log this one, but it adds few QoL improvements. Now, it should feel more modern, hence to the Figma-style handle and nets, as well as adding the bottom blue badge to visualize the exact width without looking at the inspector ever again!
This one, by far the hardest feature to implement: the save dialog . It took me lots of work to do (most was AI assisted) that double frees were actually fired (despite deleting all free methods). Here’s what’s fully implemented: Autotemplating with a default filename Sticky file names, so your typed filename never gets lost (e.g. when changing directories) And lots of UX improvements for the save dialogs The rest are relatively easy to implement, as they require little work, such as the open file dialog, etc. Next steps Next, I hope that There will be basic visual file saving/exporting ( *.vfl ) Parser for those visual files (to open it) Lots of filesystem-related operations as well as a robust project management system
Real thing now! You can now export visual files made by MotifDesigner! It will come in a user-friendly syntax, which is human and machine readable, which is much closer to something like XML! All that’s left is to: implement a parser to parse these visual files something to make the visual file editing complete before moving in to the IDE side of things
Now the hardest part has been done: importing and parsing visual files! Here’s what I accomplished: Parsing of visual files Syntax errors and redundancy checks to ensure it is indeed the visual file you are opening Auto writing on save whenever you’ve opened something or has saved a new file! How does the MotifDesigner Visual File format work ( .vfl )? (for self programming the visual file) It’s like XML or HTML (whatever that correlates with both) except the tags don’t end in slashes. All visual files must have both [MotifDesignerVisualFile] and [EndMotifDesignerVisualFile] . This will contain two critical pieces of information: the Version parameter, which you must append (e.g. Version=0.5 ). It must be inside the VisualFile tag. the Widgets tag. Same, enclosed with EndWidgets . This will be the place where you will put your elements here. I’ll write more of the file specifications if I have more time Anyway, here’s a video to demonstrate!
Made file specifications in Markdown, as well as a Claude skill (for you, vibecoders /j) so that Claude can generate proper visual files. No code changes, tho. Attached is an example where I instructed Claude to make a simple supermarket POS interface.
Release 1.0 has been out now! MotifDesigner is usable for the general public now! You know what that means? Shipping time! Oh yeah, don’t forget to report bugs or issues here . Don’t be hesitant. It can be either via your AppImage or your local debug build
Now added live value editing! Double click (certain elements) to edit its value, and you can use your normal keyboard editing shortcuts. Yes, Home , End , Shift+arrow , Ctrl+A , etc, are supported! Hands off the mouse now! Being honest, this feature is mostly implemented by AI. Text logic and selection is a finicky subject to pick up, given the sheer complexity. But I want to make the value editing UX just like at home, like you would on Figma, and many more! Also, some quality of life updates: re-renders are now automatically scheduled based on your device’s refresh rate. You don’t need to wait for user input now, it happens automatically in the background. ( And yes, free (s) are excluded as usual. Double free() is usually the culprit and yeah, I’m bad at memory management )
Ships:
This is MotifDesigner, a GUI editor for Motif (basically) in which you can edit your normal GUIs. Think of it as like the WinForms/Qt Creator of Motif! The goal is to actually bring modern UX to ancient looking software, and it’s actually quite fun! Behind all these are hours of debugging efforts, tens of segmentation fault crashes, tons of sacrificed memory for memory leak debugging, and lots of core dumps! I hope this project simplifies what GUI making is, or just making Motif development a bit easier while also looking ancient!
Version 1.0 is now released! Horray! A lot of things have been added! Added snap to grid checkmark on inspector NEW WIDGET : Toggle/checkmark! Add confirming stuffs to your UI! Fixed units on most components New handles and dimension badge Creation, saving and loading in new MotifDesigner Visual Files ( .vfl )! with a visual parser And comes with a brand new visual file format to accompany: MotifDesigner Visual Files! What are those? These are MotifDesigner’s native format. They allow you to define UIs, either programatically or visually. Read more about the file format specification yourself, or have it as a complement for Claude or Claude Code via skills...
|
1792994214.1753986
|
1793080614.1753986
|
|
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
|
|
13082
|
SimpleOS by @Abrowny2944 | Stardance
|
Abrowny2944
|
2
|
5.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T21:04:39Z", "hours": 1.0, "multiplier": 4.8, "payout": 5, "blessing": "neutral", "text": "I added an OS info page to settings, made a calculator app and a turbowarp packager app", "repo": "https://github.com/Abrowny2944/SimpleOS", "demo": "https://abrowny2944.neocities.org/SimpleOS"}, {"ship_num": 2, "ts": "2026-06-18T12:51:38Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WebOS called SimpleOS. There are four apps currently: *Info app *Document editor app *Weather app *Settings app You can change your wallpaper in the settings app or just select a solid color using the color picker. There is a working time and date display, a launcher menu that is currently empty except for the SimpleOS text that opens the info app. The wallpapers were made using a simulated environment.", "repo": "https://github.com/Abrowny2944/SimpleOS", "demo": "https://abrowny2944.neocities.org/SimpleOS"}]...
|
[{"post_id": 19519, "ts": "202 [{"post_id": 19519, "ts": "2026-06-30T20:56:14Z", "hours": 0.305, "text": "Added calculator app and turbowarp packager app"}, {"post_id": 18699, "ts": "2026-06-29T21:44:14Z", "hours": 0.7119, "text": "Added About page to settings app and update to settings app to allow multiple pages. Also an update to style of buttons inside of the settings app"}, {"post_id": 9525, "ts": "2026-06-15T21:57:39Z", "hours": 0.5111, "text": "I have added a settings app with 3 wallpaper options and a solid color option"}, {"post_id": 9403, "ts": "2026-06-15T19:06:20Z", "hours": 1.8269, "text": "Added 3 apps *Info app *Document editor app *Weather app Also a date and time display has been added to the taskbar"}, {"post_id": 5945, "ts": "2026-06-09T23:01:57Z", "hours": 1.5506, "text": "I have added a working launcher menu, a taskbar and a background image also I have added css styles to improve how the UI looks and for animations."}]...
|
Title: SimpleOS by @Abrowny2944 | Stardance
Devlo Title: SimpleOS by @Abrowny2944 | Stardance
Devlogs:
I have added a working launcher menu, a taskbar and a background image also I have added css styles to improve how the UI looks and for animations.
Added 3 apps *Info app *Document editor app *Weather app Also a date and time display has been added to the taskbar
I have added a settings app with 3 wallpaper options and a solid color option
Added About page to settings app and update to settings app to allow multiple pages. Also an update to style of buttons inside of the settings app
Added calculator app and turbowarp packager app
Ships:
I made a WebOS called SimpleOS. There are four apps currently: *Info app *Document editor app *Weather app *Settings app You can change your wallpaper in the settings app or just select a solid color using the color picker. There is a working time and date display, a launcher menu that is currently empty except for the SimpleOS text that opens the info app. The wallpapers were made using a simulated environment.
I added an OS info page to settings, made a calculator app and a turbowarp packager app...
|
1793109146.744406
|
1793195546.744406
|
|
13129
|
Moondew Mountains by @samriddhjoneja | Stardance
|
samriddhjoneja
|
2
|
14.0
|
59
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T17:17:18Z", "hours": 2.0, "multiplier": 5.52, "payout": 13, "blessing": "neutral", "text": "I made an rpg game . WASD or arrow keys to move, slay all the slimes in all the levels to win. the slimes might drop health. Added a main menu and made slimes more dangerous and fixed some bugs", "repo": "https://github.com/sj6258/Moondew--Mountains", "demo": "https://sj6258.itch.io/moondew-mountains"}, {"ship_num": 2, "ts": "2026-08-27T17:39:36Z", "hours": 12.0, "multiplier": 7.83, "payout": 46, "blessing": "neutral", "text": "I made an RPG game with cute retro graphics. The part which was really challenging and which i am proud of is making the collisions work for the enemy and the HUD heart health display system. WASD to move and E to attack. The goal is to eliminate all the enemies on all 3 levels", "repo": "https://github.com/sj6258/Moondew--Mountains", "demo": "https://sj6258.itch.io/moondew-mountains"}]...
|
[{"post_id": 59696, "ts": "202 [{"post_id": 59696, "ts": "2026-09-01T16:53:57Z", "hours": 2.3514, "text": "Made a Main Menu screen with a settings menu where you can control volume and adjust fullscreen Also changed enemy behaviour and made it more menacing. scaled it up and increase its sight. fixed a bug where the health wouldn’t get dropped correctly when enemy is killed"}, {"post_id": 55669, "ts": "2026-08-27T17:05:00Z", "hours": 0.8497, "text": "Designed th e health mechanics for the player Used the depiction of 5 hearts on the HUD for the player health where each half heart gets taken away for each slime hit. Fixed a bug where the player would get heart after the slime was defeated The slimes now have a 50 percent chance to drop a heart Finally finished my game"}, {"post_id": 55034, "ts": "2026-08-26T13:49:14Z", "hours": 1.3253, "text": "Made the health system for the player where the health gets reduced when damaged by a slime. Health does not regenerate when changing levels also added the UI for health as 5 hearts which deplete accordingly."}, {"post_id": 53721, "ts": "2026-08-24T12:02:27Z", "hours": 1.9056, "text": "Created the transitions between the levels and scenes so that when the player dies the screen fades away and restarts from level 1 Made the player death animation and coded it in the game Fixed a bug where the bridge in level 3 was not working properly Fixed another bug where the players health would remain the same after death and respawn. Added variables and elements for players health Also fixed the player taking damage sound"}, {"post_id": 48052, "ts": "2026-08-16T10:28:10Z", "hours": 1.0256, "text": "Completed Level design made level 2 and level 3. Also made transitions using gdscript and preload cmd. Finished combat mechanics only player health and slime damage is left fixed a bug where it wouldn’t changed scenes or get back to the root scene completed the levels by using a root scene and making inherited scenes . added a bridge sprite to the game"}, {"post_id": 47557, "ts": "2026-08-15T15:11:11Z", "hours": 1.0408, "text": "Started on level 2 and level 3 inherited from root level, made a change in scene transitions so that it changes it automatically using the level no. as int variable Changed Enemy behaviour and increased the detection range Fixed Combat bugs and the enemy would be thrown in the opposite direction"}, {"post_id": 46485, "ts": "2026-08-13T18:36:37Z", "hours": 2.235, "text": "Finished making the player and added a camera that moves with the player with limits. Made the root level from which scenes will be inherited and added overlay decoration Added Y-sorting so that the game feels 3D and normal Fixed collisions for slimes and decorations and also added world borders Fixed some bugs in combat and movement mechanics"}, {"post_id": 9489, "ts": "2026-06-15T20:49:00Z", "hours": 1.1489, "text": "Connected the signals for detection and attack Added attack mechanics to the player so now the player hits the slime and it takes damage and gets pushed back Added health to slime so that it plays destroyed animation after getting hit a few times and evaporates from the game"}, {"post_id": 4984, "ts": "2026-06-08T17:09:10Z", "hours": 2.0567, "text": "Started working on a top down role playing game with 3 levels and slimes as enemies to deal with. Imported the assets Added player and enemy sprites Made the animations for the player and sprites Added collisions and detection box"}]...
|
Title: Moondew Mountains by @samriddhjoneja | Star Title: Moondew Mountains by @samriddhjoneja | Stardance
Devlogs:
Started working on a top down role playing game with 3 levels and slimes as enemies to deal with. Imported the assets Added player and enemy sprites Made the animations for the player and sprites Added collisions and detection box
Connected the signals for detection and attack Added attack mechanics to the player so now the player hits the slime and it takes damage and gets pushed back Added health to slime so that it plays destroyed animation after getting hit a few times and evaporates from the game
Finished making the player and added a camera that moves with the player with limits. Made the root level from which scenes will be inherited and added overlay decoration Added Y-sorting so that the game feels 3D and normal Fixed collisions for slimes and decorations and also added world borders Fixed some bugs in combat and movement mechanics
Started on level 2 and level 3 inherited from root level, made a change in scene transitions so that it changes it automatically using the level no. as int variable Changed Enemy behaviour and increased the detection range Fixed Combat bugs and the enemy would be thrown in the opposite direction
Completed Level design made level 2 and level 3. Also made transitions using gdscript and preload cmd. Finished combat mechanics only player health and slime damage is left fixed a bug where it wouldn’t changed scenes or get back to the root scene completed the levels by using a root scene and making inherited scenes . added a bridge sprite to the game
Created the transitions between the levels and scenes so that when the player dies the screen fades away and restarts from level 1 Made the player death animation and coded it in the game Fixed a bug where the bridge in level 3 was not working properly Fixed another bug where the players health would remain the same after death and respawn. Added variables and elements for players health Also fixed the player taking damage sound
Made the health system for the player where the health gets reduced when damaged by a slime. Health does not regenerate when changing levels also added the UI for health as 5 hearts which deplete accordingly.
Designed th e health mechanics for the player Used the depiction of 5 hearts on the HUD for the player health where each half heart gets taken away for each slime hit. Fixed a bug where the player would get heart after the slime was defeated The slimes now have a 50 percent chance to drop a heart Finally finished my game
Made a Main Menu screen with a settings menu where you can control volume and adjust fullscreen Also changed enemy behaviour and made it more menacing. scaled it up and increase its sight. fixed a bug where the health wouldn’t get dropped correctly when enemy is killed
Ships:
I made an RPG game with cute retro graphics. The part which was really challenging and which i am proud of is making the collisions work for the enemy and the HUD heart health display system. WASD to move and E to attack. The goal is to eliminate all the enemies on all 3 levels
I made an rpg game . WASD or arrow keys to move, slay all the slimes in all the levels to win. the slimes might drop health. Added a main menu and made slimes more dangerous and fixed some bugs...
|
1793116477.9359643
|
1793202877.9359643
|
|
13370
|
Pi WebOS by @pi | Stardance
|
pi
|
2
|
15.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T21:29:52Z", "hours": 6.0, "multiplier": 4.0, "payout": 22, "blessing": "neutral", "text": "Welcome to Pi WebOS! This is my submission to the WebOS 2 Mission. I’ve created a paper-themed WebOS with many, many features, ranging from a mini browser to tiny micro-interactions like double clicking the title bar, or window positions being persistent. Made with pure HTML, CSS, and JS. The project has a built in, intuitive walkthrough, but I’ll also provide a feature list here. You can also watch the short demo attached (also visible on the README). Features Moveable, resizable, closable windows Window positions save on reload Correct Z ordering after opening a page Draggable files/apps on desktop [NEW] Double click menu bar to fullscreen window Window cannot leave desktop Window snaps back into frame Multiple Apps Text Documents (like this one!) (Mostly) Functional Browser Notes App Settings App [NEW] Menu bar Page Selector Fullscreen OS Browser/OS detection Links that open windows in the OS Keyboard shortcuts (Esc, Shift + Esc, Cmd + Z) [NEW] Customizable themes through the Settings app [NEW]", "repo": "https://github.com/anagram-of-pi/web-os-mission", "demo": "https://pi-os-mission.netlify.app"}, {"ship_num": 2, "ts": "2026-06-09T19:12:24Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is Pi WebOS, a website that mimics the look and feel of a OS with moveable, resizable, and closable windows that are both responsive and smooth. There are multiple apps, including a bare bones web browser! The website has many small quality of life features, such as windows snapping back into the desktop and windows being preserved on reload. It provides an intuitive walkthrough of almost every part of the OS and a feature list describing both the large things (like windows and apps) and the small QOL things (like links that open windows). This project was largely to improve my comfortability with JavaScript and CSS No AI was used to generate any code or text. AI was used to help debug and research.", "repo": "https://github.com/anagram-of-pi/web-os-mission", "demo": "https://pi-os-mission.netlify.app"}]...
|
[{"post_id": 17103, "ts": "202 [{"post_id": 17103, "ts": "2026-06-27T19:29:43Z", "hours": 0.9942, "text": "Custom themes! Sorry, this is a short devlog, but I just finished the tedious task of letting the JS update every color in the CSS via CSS variables. Luckily, I had thought ahead and made everything in the CSS already use a variable but there’s a lot of hardcoded values I had to manually input."}, {"post_id": 17060, "ts": "2026-06-27T18:15:07Z", "hours": 2.6006, "text": "Draggable files on the desktop :) . I really like how smooth and bouncy the animation is, and I’m really proud of how well I fit the files in with the rest of the theme. Double clicking gives a really satisfying fluid motion. Also, they open the windows :) . Sidenote, I added keyboard shortcuts! Notably, esc to close windows and cmd z to undo the closing. I really had to balance the command z because I didn’t want it to undo writing text, but I also didn’t want to completely disable command z on my page. text"}, {"post_id": 5970, "ts": "2026-06-10T00:25:40Z", "hours": 1.9894, "text": "Learned another basic JavaScript principle again (unpacking multiple value) :) Meanwhile, I could do this ten times faster in Python without having to look something up every minute or so."}, {"post_id": 5764, "ts": "2026-06-09T17:45:23Z", "hours": 2.4408, "text": "Browser in a website = (Pi WebOS)²"}, {"post_id": 5646, "ts": "2026-06-09T14:55:57Z", "hours": 2.4281, "text": "Behind the scenes there’s a lot that I’ve done. Mainly, the window content is actually styled (and a few new windows have been added!), but there a a ton of small things that had to get done first. There is a working (kind of) web browser that displays the url in an iframe, which is really cool, and actually not too difficult. It can’t display all sites because many popular sites intentionally disable being shown in an iframe, but it can go to hackclub.com."}, {"post_id": 5321, "ts": "2026-06-09T01:50:09Z", "hours": 2.7525, "text": "I’ve added more windows and some other miscellaneous features. There was a lot of debugging, and coincidentally also a lot of forgotten keywords, like “let”. I’m too used to Python. I haven’t styled the windows yet, though."}, {"post_id": 5231, "ts": "2026-06-08T22:50:24Z", "hours": 1.6692, "text": "Starting the WebOS basic mission. I have windows displaying, moving, and closable. Next is adding content to the windows, but also making the nav menu do stuff. I had a weird bug with the rem unit changing based on the parent height. If you know advanced CSS, you’ll understand why that’s strange :)"}]...
|
Title: Pi WebOS by @pi | Stardance
Devlogs:
Start Title: Pi WebOS by @pi | Stardance
Devlogs:
Starting the WebOS basic mission. I have windows displaying, moving, and closable. Next is adding content to the windows, but also making the nav menu do stuff. I had a weird bug with the rem unit changing based on the parent height. If you know advanced CSS, you’ll understand why that’s strange :)
I’ve added more windows and some other miscellaneous features. There was a lot of debugging, and coincidentally also a lot of forgotten keywords, like “let”. I’m too used to Python. I haven’t styled the windows yet, though.
Behind the scenes there’s a lot that I’ve done. Mainly, the window content is actually styled (and a few new windows have been added!), but there a a ton of small things that had to get done first. There is a working (kind of) web browser that displays the url in an iframe, which is really cool, and actually not too difficult. It can’t display all sites because many popular sites intentionally disable being shown in an iframe, but it can go to hackclub.com.
Browser in a website = (Pi WebOS)²
Learned another basic JavaScript principle again (unpacking multiple value) :) Meanwhile, I could do this ten times faster in Python without having to look something up every minute or so.
Draggable files on the desktop :) . I really like how smooth and bouncy the animation is, and I’m really proud of how well I fit the files in with the rest of the theme. Double clicking gives a really satisfying fluid motion. Also, they open the windows :) . Sidenote, I added keyboard shortcuts! Notably, esc to close windows and cmd z to undo the closing. I really had to balance the command z because I didn’t want it to undo writing text, but I also didn’t want to completely disable command z on my page. text
Custom themes! Sorry, this is a short devlog, but I just finished the tedious task of letting the JS update every color in the CSS via CSS variables. Luckily, I had thought ahead and made everything in the CSS already use a variable but there’s a lot of hardcoded values I had to manually input.
Ships:
This is Pi WebOS, a website that mimics the look and feel of a OS with moveable, resizable, and closable windows that are both responsive and smooth. There are multiple apps, including a bare bones web browser! The website has many small quality of life features, such as windows snapping back into the desktop and windows being preserved on reload. It provides an intuitive walkthrough of almost every part of the OS and a feature list describing both the large things (like windows and apps) and the small QOL things (like links that open windows). This project was largely to improve my comfortability with JavaScript and CSS No AI was used to generate any code or text. AI was used to help debug and research.
Welcome to Pi WebOS! This is my submission to the WebOS 2 Mission. I’ve created a paper-themed WebOS with many, many features, ranging from a mini browser to tiny micro-interactions like double clicking the title bar, or window positions being persistent. Made with pure HTML, CSS, and JS. The project has a built in, intuitive walkthrough, but I’ll also provide a feature list here. You can also watch the short demo attached (also visible on the README). Features Moveable, resizable, closable windows Window positions save on reload Correct Z ordering after opening a page Draggable files/apps on desktop [NEW] Double click menu bar to fullscreen window Window cannot leave desktop Window snaps back into frame Multiple Apps Text Documents (like this one!) (Mostly) Functional Browser Notes App Settings App [NEW] Menu bar Page Selector Fullscreen OS Browser/OS detection Links that open windows in the OS Keyboard shortcuts (Esc, Shift + Esc, Cmd + Z) [NEW] Customizable themes through the Settings app [NEW]...
|
1793090946.433897
|
1793177346.433897
|
|
13380
|
Planets flashcards & quiz by @Astronaut_ag | S Planets flashcards & quiz by @Astronaut_ag | Stardance...
|
Astronaut_ag
|
2
|
7.0
|
84
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T20:16:12Z", "hours": 1.0, "multiplier": 9.74, "payout": 8, "blessing": "neutral", "text": "This is a website about the Objects in our Solar System! People can click through 3 different flashcard sets to gain knowledge! Please suggest any changes/requests you have on this website! Thanks!!", "repo": "https://github.com/AstronautAG/planets-cards", "demo": "https://astronautag.github.io/planets-cards/"}, {"ship_num": 2, "ts": "2026-06-24T21:22:59Z", "hours": 6.0, "multiplier": 13.11, "payout": 76, "blessing": "neutral", "text": "This is a cool, interactive, and fun website where people can flip through flashcards to learn about space with a quiz for people to test their knowledge!", "repo": "https://github.com/AstronautAG/planets-cards", "demo": "https://astronautag.github.io/planets-cards/"}]...
|
[{"post_id": 30337, "ts": "202 [{"post_id": 30337, "ts": "2026-07-17T20:14:18Z", "hours": 0.8511, "text": "Devlog #4: Made user interface better! :D Special Thanks: First, I would like to thank everyone who reviewed my project and gave me the wonderful feedback. Really appreciate it!! Overview: Significantly upgraded user interface so the buttons stay in roughly the same spot and moved them inside the flashcards My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was how to keep the buttons in the same spot. I had to look up a lot of CSS stuff on websites like w3schools, but figuring it out was the best part! Lessons Learned: Learn a lot from sites like w3schools!! Play around with CSS elements until you get it to look how you want to Looking forward: I hope to publish this on GitHub as a new update, thanks for following my project!!"}, {"post_id": 14700, "ts": "2026-06-23T21:57:58Z", "hours": 1.3939, "text": "Devlog #3: I updated the User Interface which looks MUCH better (after some troubleshooting) :D Overview: Significantly upgraded user interface so it’s actually interactive My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was the User Interface. Before, the UI was pretty basic, and so the HTML and JavaScript had pretty simple variables and id’s for the styling in the CSS. But, when I went to upgrade, I had to change a bunch of variables, but I got it done. One challenge in particular was adding a progress bar to my quiz. Since I already had a structure inside my HTML and CSS, putting it there was not a problem. I thought I had it in the right spot for JavaScript. I was wrong. I spent 20 minutes debugging, then finally found out that it was in the wrong spot the whole time. It was in the function nextQuestion(index) instead of showQuestion(index). Lessons Learned: Keep a close eye on which function is which and keep code organized Debug carefully and don’t mix up different parts of the code Looking forward: I hope to publish this on GitHub now, thanks for following my project!!"}, {"post_id": 13404, "ts": "2026-06-21T23:04:32Z", "hours": 1.0369, "text": "Devlog #2: In this update, I added another flashcard set to my flashcard and quiz website. I edited the HTML, CSS, and JavaScript to make sure that it mirrored the other sets. One challenge with this was to keep each of the information on each flashcard separate. Each flashcard has an image, a title, and a short description specific to the object on the flashcard. Additionally, I had to add another function in JavaScript, but (as I mentioned in the last update), I kept the variables consistent across the functions. One thing I learned from today’s coding is that if the layout is kept consistent across the different flashcard sets and in CSS, it is easier to navigate and make more flashcard sets. In the next update, I plan to update the user interface to level up the experience. Thanks and see you in the next update!"}, {"post_id": 12799, "ts": "2026-06-20T22:40:18Z", "hours": 3.3878, "text": "Devlog #1: In this update, on my flashcard website, I added two flashcard sets. I also updated the user interface significantly, and I added a two-question quiz at the bottom of the page. I upgraded my CSS to show “blocks” (the flashcards) to make sure that the cards that were supposed to be hidden were hidden until the buttons were clicked. I also upgraded how the website looks by adding hover features as well as changing the background color and adding images to each flashcard. Overall, my biggest challenge was keeping ID’s and variables sorted from HTML to JavaScript for each of the flashcard sets. I solved this problem by sorting out each part of my JS into two categories for each set, changing the variable names to ones that made sense and were easy to keep track of (set1, container1, etc.), and finally updating the HTML with these new variables. I learned that keeping code organized from the start prevents problems later! I also learned the debugging process through the console in the website preview on my device. Another thing I learned is that divs in HTML can be extremely useful, especially when there are very similar elements on the page. For the future, I hope to add another flashcard set. Thanks and see you in the next update!"}]...
|
Title: Planets flashcards & quiz by @Astronaut Title: Planets flashcards & quiz by @Astronaut_ag | Stardance
Devlogs:
Devlog #1: In this update, on my flashcard website, I added two flashcard sets. I also updated the user interface significantly, and I added a two-question quiz at the bottom of the page. I upgraded my CSS to show “blocks” (the flashcards) to make sure that the cards that were supposed to be hidden were hidden until the buttons were clicked. I also upgraded how the website looks by adding hover features as well as changing the background color and adding images to each flashcard. Overall, my biggest challenge was keeping ID’s and variables sorted from HTML to JavaScript for each of the flashcard sets. I solved this problem by sorting out each part of my JS into two categories for each set, changing the variable names to ones that made sense and were easy to keep track of (set1, container1, etc.), and finally updating the HTML with these new variables. I learned that keeping code organized from the start prevents problems later! I also learned the debugging process through the console in the website preview on my device. Another thing I learned is that divs in HTML can be extremely useful, especially when there are very similar elements on the page. For the future, I hope to add another flashcard set. Thanks and see you in the next update!
Devlog #2: In this update, I added another flashcard set to my flashcard and quiz website. I edited the HTML, CSS, and JavaScript to make sure that it mirrored the other sets. One challenge with this was to keep each of the information on each flashcard separate. Each flashcard has an image, a title, and a short description specific to the object on the flashcard. Additionally, I had to add another function in JavaScript, but (as I mentioned in the last update), I kept the variables consistent across the functions. One thing I learned from today’s coding is that if the layout is kept consistent across the different flashcard sets and in CSS, it is easier to navigate and make more flashcard sets. In the next update, I plan to update the user interface to level up the experience. Thanks and see you in the next update!
Devlog #3: I updated the User Interface which looks MUCH better (after some troubleshooting) :D Overview: Significantly upgraded user interface so it’s actually interactive My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was the User Interface. Before, the UI was pretty basic, and so the HTML and JavaScript had pretty simple variables and id’s for the styling in the CSS. But, when I went to upgrade, I had to change a bunch of variables, but I got it done. One challenge in particular was adding a progress bar to my quiz. Since I already had a structure inside my HTML and CSS, putting it there was not a problem. I thought I had it in the right spot for JavaScript. I was wrong. I spent 20 minutes debugging, then finally found out that it was in the wrong spot the whole time. It was in the function nextQuestion(index) instead of showQuestion(index). Lessons Learned: Keep a close eye on which function is which and keep code organized Debug carefully and don’t mix up different parts of the code Looking forward: I hope to publish this on GitHub now, thanks for following my project!!
Devlog #4: Made user interface better! :D Special Thanks: First, I would like to thank everyone who reviewed my project and gave me the wonderful feedback. Really appreciate it!! Overview: Significantly upgraded user interface so the buttons stay in roughly the same spot and moved them inside the flashcards My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was how to keep the buttons in the same spot. I had to look up a lot of CSS stuff on websites like w3schools, but figuring it out was the best part! Lessons Learned: Learn a lot from sites like w3schools!! Play around with CSS elements until you get it to look how you want to Looking forward: I hope to publish this on GitHub as a new update, thanks for following my project!!
Ships:
This is a cool, interactive, and fun website where people can flip through flashcards to learn about space with a quiz for people to test their knowledge!
This is a website about the Objects in our Solar System! People can click through 3 different flashcard sets to gain knowledge! Please suggest any changes/requests you have on this website! Thanks!!...
|
1793112894.4983695
|
1793199294.4983695
|
|
13397
|
Portfolio by @AvaR | Stardance
|
AvaR
|
2
|
5.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T23:39:22Z", "hours": 1.0, "multiplier": 6.74, "payout": 7, "blessing": "neutral", "text": "Made a Coding Portfolio for myself which I’ve been meaning to do for a while now. In the future I will add images, and more projects :) Features: Separate Pages - Home, About Me, Projects Moveable Windows - Project Details Only Movable Windows Can Be Expanded and Minimized Scrolling available on minimized movable windows, and easily able to close movable windows whether expanded or minimized Working Contact Me Form that connects to my email Simplistic Navigation Bar", "repo": "https://github.com/AvaLR/WebOs-Project", "demo": "https://avalr.github.io/Coding-Portfolio/index.html"}, {"ship_num": 2, "ts": "2026-06-11T15:56:33Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a eportfolio page that I’ve been meaning to make for a while now. I’m really happy with how it turned out and I will definitely be adding new pages, projects, etc. in the future as it will change with what I do. I hope you enjoy how it looks and works. Below I added an image of my favorite feature. I created a similar one in 8th grade in code.org. It didn’t work though due to it not being able/not knowing how to attach it to my email. So i’m really happy to have a working version!", "repo": "https://github.com/AvaLR/WebOs-Project", "demo": "https://avalr.github.io/Coding-Portfolio/index.html"}]...
|
[{"post_id": 24418, "ts": "202 [{"post_id": 24418, "ts": "2026-07-07T23:26:11Z", "hours": 1.0558, "text": "Added moveable windows for project details that can scroll, expand/retract and be closed with ease :)"}, {"post_id": 6898, "ts": "2026-06-11T15:45:10Z", "hours": 1.0103, "text": "FINISHED!!! I love how it looks I will continue to add more projects and other updates to make it even BETTER! This is was a great relaxing project for me!"}, {"post_id": 6420, "ts": "2026-06-10T19:57:30Z", "hours": 1.8225, "text": "Got basically everything done! I need to add more projects (might do that as part of WebOS 2 tho so I can go ahead and ship this ) I also added a lovely form and attached it to formspree which was suprisingly easier than I had thought!"}, {"post_id": 5938, "ts": "2026-06-09T22:41:53Z", "hours": 1.3292, "text": "Started my own personal Coding portfolio through github codespaces. I’ve worked on it a LOT since this last work session but forgot to use lapse. So here is this update and then I’ll show the newest version in a little bit when I post another Devlog+. Below is a sneak peek. :)"}]...
|
Title: Portfolio by @AvaR | Stardance
Devlogs:
St Title: Portfolio by @AvaR | Stardance
Devlogs:
Started my own personal Coding portfolio through github codespaces. I’ve worked on it a LOT since this last work session but forgot to use lapse. So here is this update and then I’ll show the newest version in a little bit when I post another Devlog+. Below is a sneak peek. :)
Got basically everything done! I need to add more projects (might do that as part of WebOS 2 tho so I can go ahead and ship this ) I also added a lovely form and attached it to formspree which was suprisingly easier than I had thought!
FINISHED!!! I love how it looks I will continue to add more projects and other updates to make it even BETTER! This is was a great relaxing project for me!
Added moveable windows for project details that can scroll, expand/retract and be closed with ease :)
Ships:
I created a eportfolio page that I’ve been meaning to make for a while now. I’m really happy with how it turned out and I will definitely be adding new pages, projects, etc. in the future as it will change with what I do. I hope you enjoy how it looks and works. Below I added an image of my favorite feature. I created a similar one in 8th grade in code.org. It didn’t work though due to it not being able/not knowing how to attach it to my email. So i’m really happy to have a working version!
Made a Coding Portfolio for myself which I’ve been meaning to do for a while now. In the future I will add images, and more projects :) Features: Separate Pages - Home, About Me, Projects Moveable Windows - Project Details Only Movable Windows Can Be Expanded and Minimized Scrolling available on minimized movable windows, and easily able to close movable windows whether expanded or minimized Working Contact Me Form that connects to my email Simplistic Navigation Bar...
|
1793109245.5835774
|
1793195645.5835774
|
|
13455
|
My first slack bot! by @rehanhabbu | Stardance
|
rehanhabbu
|
2
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T19:14:51Z", "hours": 1.0, "multiplier": 1.13, "payout": 1, "blessing": "neutral", "text": "Slack Bot for StarDance: A custom Slack bot built for Stardance using Node.js, Slack’s Bolt framework, and Socket Mode. Mostly just fun commands. Commands /rsb-ping - Check the latency between your machine and Slack. /rsb-quest - Pulls a random side quest from the Bored API /rsb-coinflip - Flips a digital coin to settle arguments instantly. /rsb-countdown [YYYY-MM-DD] - Counts down the exact number of days left until the deadline. /rsb-help - Lists everything this construct can do. Also include QWEN2.0:5b AI model via DM’s to the bot, although it is extremely slow as it is running CPU only on nest. (Like VERY slow. I said hi at 11:50 and it responded at 12:44)", "repo": "https://github.com/Catsarepro21/Hackclubslacbot", "demo": "https://hackclub.enterprise.slack.com/archives/C08E083LZ9A"}, {"ship_num": 2, "ts": "2026-06-10T16:05:33Z", "hours": 1.0, "multiplier": 1.5, "payout": 1, "blessing": "neutral", "text": "I made a Slack Bot to do fun little commands. Things such as a coin flip, a time-till a date command, and a quest command that gives the user a random quest!", "repo": "https://github.com/Catsarepro21/Hackclubslacbot", "demo": "https://hackclub.enterprise.slack.com/archives/C08E083LZ9A"}]...
|
[{"post_id": 6904, "ts": "2026 [{"post_id": 6904, "ts": "2026-06-11T16:03:26Z", "hours": 0.6814, "text": "Fixed the demo URL by allowing direct messages to the bot and using that. Also because I can DM the bot now, I added an OLLAMA model running QWEN2:5b, although because it it running in CPU only mode it is extremally slow"}, {"post_id": 6292, "ts": "2026-06-10T16:04:24Z", "hours": 0.3361, "text": "Hosted the bot on nest and tested, works great!"}, {"post_id": 5929, "ts": "2026-06-09T22:08:02Z", "hours": 0.6567, "text": "Made the slack-bot and added some fun commands that I like, waiting on approval of Nest to finish this project!"}]...
|
Title: My first slack bot! by @rehanhabbu | Starda Title: My first slack bot! by @rehanhabbu | Stardance
Devlogs:
Made the slack-bot and added some fun commands that I like, waiting on approval of Nest to finish this project!
Hosted the bot on nest and tested, works great!
Fixed the demo URL by allowing direct messages to the bot and using that. Also because I can DM the bot now, I added an OLLAMA model running QWEN2:5b, although because it it running in CPU only mode it is extremally slow
Ships:
I made a Slack Bot to do fun little commands. Things such as a coin flip, a time-till a date command, and a quest command that gives the user a random quest!
Slack Bot for StarDance: A custom Slack bot built for Stardance using Node.js, Slack’s Bolt framework, and Socket Mode. Mostly just fun commands. Commands /rsb-ping - Check the latency between your machine and Slack. /rsb-quest - Pulls a random side quest from the Bored API /rsb-coinflip - Flips a digital coin to settle arguments instantly. /rsb-countdown [YYYY-MM-DD] - Counts down the exact number of days left until the deadline. /rsb-help - Lists everything this construct can do. Also include QWEN2.0:5b AI model via DM’s to the bot, although it is extremely slow as it is running CPU only on nest. (Like VERY slow. I said hi at 11:50 and it responded at 12:44)...
|
1793119789.9068098
|
1793206189.9068098
|
|
13539
|
MewoOS by @subhansh | Stardance
|
|
2
|
70.0
|
497
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T14:12:55Z", "hours": 56.0, "multiplier": 19.42, "payout": 497, "blessing": "neutral", "text": "Made the most productive web operating system ever created comes with a browser, terminal, music player, gallery, customizable wallpapers, draggable windows, and doomscroll — because no operating system is complete without destroying your attention span… built with react, typescript, and questionable life choices :3 new features :- functional file system voice assistant with vocal modulation and os control 4 desktop workspace mewo store (more apps that u can actually install !!)", "repo": "https://github.com/subhansh-dev/MewoOS", "demo": "https://mewoos.vercel.app"}, {"ship_num": 2, "ts": "2026-06-15T20:05:47Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made the most productive web operating system ever created comes with a browser, terminal, music player, gallery, customizable wallpapers, draggable windows, and doomscroll — because no operating system is complete without destroying your attention span and we must scroll and larp… built with react, typescript, and questionable life choices :3", "repo": "https://github.com/subhansh-dev/MewoOS", "demo": "https://mewoos.vercel.app"}]...
|
[{"post_id": 25288, "ts": "202 [{"post_id": 25288, "ts": "2026-07-09T14:01:57Z", "hours": 5.5736, "text": "final devlog for mewo os 🍓😺 okay so guess wat… i was debugging mewo again and again for a bug that wasnt even real 💔… what happened is.. i opened mewo saw that nothing is functional and i was like everything looks gud why its not wokring… and then i saw my mails and found out that vercel and supabase paused my web cause i ran out of the free tier 💔😭… anyways aside from this i added ts js for the vibes lol Window Switcher Open 2+ apps (e.g. Calculator + Terminal + Notes) Press Ctrl+Shift+A — overlay appears with all open windows Press Tab to cycle forward, Shift+Tab to cycle backward Release Shift or click a window to switch to it Escape to cancel also i did optimized mewo earlier but it was still lagging a bit cause of overlaying animations and effects so i fixed that too ts time redeployed on vercel again!! try it out ^-^ :- https://mewoos.vercel.app"}, {"post_id": 24814, "ts": "2026-07-08T16:49:19Z", "hours": 26.8408, "text": "MewoOS Devlog #8 🍓😺 Pixel Cat Redesign redesigned the pixel cat that follows ur cursor around the desktop. she looks way better now ngl…more detailed sprite, smoother animation, and shes silver now which fits the dark theme way more. u can click her to toggle between following ur cursor or staying pinned. small thing but it makes the whole desktop feel alive fr Meo Can Control The OS (waw..dem ) this ones big. meo can now literally control the whole os. tell her “open the calculator” and she opens it. “open the terminal” — done. “minimize all windows” — gone. she parses whatever u say and does OS actions through action tags. supports open, close, min, max, focus, minimizeAll, closeAll. feels like ur actually talking to the os not just a chatbot Voice & Emotions Rework improved meos voice n emotions big time. she now detects what ur saying and adjusts — happy, excited, concerned, playful, calm, tired, urgent. each one has its own rate, pitch, personality. the voice sounds way less robotic now and more natural. also fixed that annoying thing where the reply would show up in the chat 4 seconds before the tts spoke it. now they happen at the same time so its smooth 4 Desktop Workspaces added a desktop workspace system. u get 4 separate desktops switch between them with ctrl 1 2 3 4. each desktop has its own windows so u can have coding stuff on desktop 1 music and browser on desktop 2 etc. ctrl left right cycles between them. feels like a real os now not just a web page Mewo Store(new feature…yey) built a full app store for mewoos. premium dock style icons glassmorphism ui category filters search the works. and the apps u can actually install and they actually work when u open them Installable Apps weather — 5 cities 7 day forecast animated temp bars humidity wind stats kanban board — drag and drop 3 columns colored tags 7 pre loaded tasks focus timer — working pomodoro timer svg ring progress 3 modes focus short long session stats type racer — typing speed test real time character highlighting green red wpm calc 8 sentences paint studio — actual working canvas color picker brush size clear button u can draw on it image editor — 8 filter presets original warm cool b&w vintage vivid fade noir brightness contrast saturation sliders uses a real image Store Features when u install an app theres a progress bar animation then the app icon shows up in the dock with a premium dock style icon. and u can uninstall apps too removes from dock and closes any open windows…. mewo meow mewo"}, {"post_id": 22867, "ts": "2026-07-05T14:22:43Z", "hours": 23.1842, "text": "OKAAAA WE’RE BACCKKK.. aaa so i did all of the basic stuffs in the webos1 (mandatory features, basic glass morph for the windows, parallax effects on the wallpaper etc) so now in the part 2… its time to take this further… so i started with fixing the lag and some minor bugs and then we redesigned every window and dock with an aurora tint and enhanced glassmorphism with glare and then came the features that i added… i mean they are not complete but the base is ready the dock got upgraded added a Files app(new feature..yey) to the dock with a sky blue gradient icon. the file manager opens with a proper glassmorphic window. breadcrumbs for navigation, grid and list views, right click menus, inline rename… the whole deal. double click a file and it opens in an editor with Ctrl+S to save. tab inserts spaces. its got the mewoOS glass treatment on everything what is meo (new feature…yey) so meo is basically the AI assistant that lives inside MewoOS. think of it like Siri but actually useful and with personality….a menace on silicon. u tap the orb, speak to her, and she responds. she can open apps, close them, minimize, maximize — basically control the whole OS with voice. she has emotions too — happy, excited, concerned, playful, calm, tired, urgent — and her voice changes based on that. she roasts u but its from love. like a best friend who also happens to be an AI running inside an operating system the whole thing runs on Gemini — both the brain (chat) and the voice (TTS). she uses Gemini 2.5 Flash for thinking and Gemini 2.5 Flash Preview TTS for speaking back to u with different voices depending on her mood now the part that took forever — making meo actually work bruh so making meo work took some work… idk how many times i debugged for her to actually listen to me the STT problem so the original problem was the Web Speech API — that thing is just unreliable as hell. it only works in Chrome, needs HTTPS or localhost, and half the time it just doesnt fire onresult at all. like u speak, it says “listening…”, then nothing happens. the text never shows up. no transcription, no response, nothing i tried fixing it multiple times — started recognition immediately instead of waiting for mic permission, added error handling, changed the flow… still broken. the Web Speech API is just built different (bad different) so i ripped it out completely. replaced it with MediaRecorder + Gemini for transcription. now when u tap the orb it records audio using the MediaRecorder API, sends the audio blob to Gemini, and Gemini transcribes it. way more reliable because it doesnt depend on browser-specific speech engines. it just works the gemini model error THEN the gemini model error… we had the wrong model names everywhere lol the chat model was set to gemini-3.5-flash which literally doesnt exist the TTS was gemini-2.5-flash-preview-tts which kept failing silently and falling back to browser TTS the STT was using gemini-2.0-flash which was mid so we updated everything to the right models: chat: gemini-2.5-flash (the actual latest flash model) TTS: gemini-2.5-flash-preview-tts (the dedicated TTS model with audio output) STT: gemini-2.5-flash (for transcribing the recorded audio) and added detailed console logging so we can actually see whats happening when things break. because before it was just silently falling back to browser TTS and we had no idea why the final pipeline: u tap the orb MediaRecorder starts capturing audio from the mic waveforms animate while u speak u tap again to stop audio blob gets sent to Gemini for transcription transcription goes to Gemini for the actual response Gemini responds with text + emotion response gets spoken back using Gemini TTS with the right voice"}, {"post_id": 6232, "ts": "2026-06-10T14:05:36Z", "hours": 3.2247, "text": "devlog#6 added a guide app and 3 new live wallpapers with parallax effect restyled dock and app icons a bit new songs and covers feature to resize window’s length and breadth Go check it out!! :3 its done now (hopefully, i dont want more bugs 💔✌) https://mewoos.vercel.app"}, {"post_id": 6116, "ts": "2026-06-10T09:02:37Z", "hours": 4.6342, "text": "devlog #5 waawaw so i did a complete ui uphaul and polished everything and then added that analog watch and calendar too. also add parallax effect for the wallpapers, then added 2 more songs and then updated the song covers too. then fixed alot of bugs and animation issues. added 3 more static wallpapers and 3 new live wallpapers (ima show that in the next devlog). and then i also added a cute pet which follows ur cursor and if u tap on it u can make her sit!!, tap again and she will start following ur cursor again. should i add more reels tho ? 🥀"}, {"post_id": 5782, "ts": "2026-06-09T18:11:43Z", "hours": 0.6644, "text": "the most app is finally here 😭😭🥀…. drumrolls DOOMSCROLL! 🥀… y a u can now watch 38 exclusive reels on MewoOS now (gonna add more later 😺) and then i added 3 static interactive bagrounds and now working on live wallpapers too andd thennn aaaa ye i added those good looking app icons created from figma and agagin fixed allat of bugs ofc 🥀…. then improved the animations and glass morphism effect and restyled all of the panels and basically the whole ui lol 😭…. and added more gud pics in the gallery and the song count in the music player app went from 6 to 20!! and yes they are real songs and not js some random ahh chimes lol anddddd aaa idk more… maybe that was it for this devlog holdup now lemme cook the livewallpapers and polish things up"}, {"post_id": 5745, "ts": "2026-06-09T17:25:41Z", "hours": 3.8269, "text": "devlog #3 - MewoOS Added a booting animation and fixed allat of bugs and improved dock , animations , and ui (will show these in the next devlog)"}, {"post_id": 5555, "ts": "2026-06-09T11:47:16Z", "hours": 0.9858, "text": "Devlog 2 — MewoOS yayyayayay its finally coming together… basic version is done now ive add some more features and apps and just polish the whole ui a bit too should i add an app for doomscrolling 🥀 ? anyways heres the details of what it has rn :- -added an iframe browser because the jam said “be creative” and my creativity said “put the entire internet inside a window inside a fake OS inside a browser.” it loads Wikipedia and GitHub reliably. most other sites block iframes so its basically a very expensive Wikipedia viewer. but it works and im counting it as a feature also the basic version of music player was alr done but my first thought was “the music player needs REAL music” — not some placeholder beeps, actual songs. so i set up yt-dlp and went on a downloading spree at unholy hours. we got Cruel Angel’s Thesis, YOASOBI’s Idol, Ado’s Usseewa, Night Dancer, Fly Me to the Moon, Feeling Good by Nina Simone, Chopin Ballade No.4 in G minor, Rachmaninoff Piano Concerto No.2 (the full 37MB concerto because i have no concept of file size restraint), Paganini Caprice No.24, and some jazz tracks for the cultured folks. HTML5 audio API handles all of it — play, pause, skip, progress bar, the whole thing. no npm packages, no dependencies, just vibes and tags the UI went through approximately 47 iterations of “is this too pink” vs “is this dark enough” — settled on a deep black (#0A0709) with sakura pink accents and floating ambient glow orbs that drift around the screen like little ghosts of my questionable design choices. windows have glass panels with backdrop blur, the dock has custom SVG icons (not emojis, im not a monster), and the whole thing radiates “what if a gothic cathedral had a kawaii phase” energy 💔💔"}, {"post_id": 5528, "ts": "2026-06-09T10:39:01Z", "hours": 0.6197, "text": "wawawa basic frontend almost done (js have to polish it now )"}]...
|
Title: MewoOS by @subhansh | Stardance
Devlogs:
w Title: MewoOS by @subhansh | Stardance
Devlogs:
wawawa basic frontend almost done (js have to polish it now )
Devlog 2 — MewoOS yayyayayay its finally coming together… basic version is done now ive add some more features and apps and just polish the whole ui a bit too should i add an app for doomscrolling 🥀 ? anyways heres the details of what it has rn :- -added an iframe browser because the jam said “be creative” and my creativity said “put the entire internet inside a window inside a fake OS inside a browser.” it loads Wikipedia and GitHub reliably. most other sites block iframes so its basically a very expensive Wikipedia viewer. but it works and im counting it as a feature also the basic version of music player was alr done but my first thought was “the music player needs REAL music” — not some placeholder beeps, actual songs. so i set up yt-dlp and went on a downloading spree at unholy hours. we got Cruel Angel’s Thesis, YOASOBI’s Idol, Ado’s Usseewa, Night Dancer, Fly Me to the Moon, Feeling Good by Nina Simone, Chopin Ballade No.4 in G minor, Rachmaninoff Piano Concerto No.2 (the full 37MB concerto because i have no concept of file size restraint), Paganini Caprice No.24, and some jazz tracks for the cultured folks. HTML5 audio API handles all of it — play, pause, skip, progress bar, the whole thing. no npm packages, no dependencies, just vibes and tags the UI went through approximately 47 iterations of “is this too pink” vs “is this dark enough” — settled on a deep black (#0A0709) with sakura pink accents and floating ambient glow orbs that drift around the screen like little ghosts of my questionable design choices. windows have glass panels with backdrop blur, the dock has custom SVG icons (not emojis, im not a monster), and the whole thing radiates “what if a gothic cathedral had a kawaii phase” energy 💔💔
devlog #3 - MewoOS Added a booting animation and fixed allat of bugs and improved dock , animations , and ui (will show these in the next devlog)
the most app is finally here 😭😭🥀…. drumrolls DOOMSCROLL! 🥀… y a u can now watch 38 exclusive reels on MewoOS now (gonna add more later 😺) and then i added 3 static interactive bagrounds and now working on live wallpapers too andd thennn aaaa ye i added those good looking app icons created from figma and agagin fixed allat of bugs ofc 🥀…. then improved the animations and glass morphism effect and restyled all of the panels and basically the whole ui lol 😭…. and added more gud pics in the gallery and the song count in the music player app went from 6 to 20!! and yes they are real songs and not js some random ahh chimes lol anddddd aaa idk more… maybe that was it for this devlog holdup now lemme cook the livewallpapers and polish things up
devlog #5 waawaw so i did a complete ui uphaul and polished everything and then added that analog watch and calendar too. also add parallax effect for the wallpapers, then added 2 more songs and then updated the song covers too. then fixed alot of bugs and animation issues. added 3 more static wallpapers and 3 new live wallpapers (ima show that in the next devlog). and then i also added a cute pet which follows ur cursor and if u tap on it u can make her sit!!, tap again and she will start following ur cursor again. should i add more reels tho ? 🥀
devlog#6 added a guide app and 3 new live wallpapers with parallax effect restyled dock and app icons a bit new songs and covers feature to resize window’s length and breadth Go check it out!! :3 its done now (hopefully, i dont want more bugs 💔✌) https://mewoos.vercel.app
OKAAAA WE’RE BACCKKK.. aaa so i did all of the basic stuffs in the webos1 (mandatory features, basic glass morph for the windows, parallax effects on the wallpaper etc) so now in the part 2… its time to take this further… so i started with fixing the lag and some minor bugs and then we redesigned every window and dock with an aurora tint and enhanced glassmorphism with glare and then came the features that i added… i mean they are not complete but the base is ready the dock got upgraded added a Files app(new feature..yey) to the dock with a sky blue gradient icon. the file manager opens with a proper glassmorphic window. breadcrumbs for navigation, grid and list views, right click menus, inline rename… the whole deal. double click a file and it opens in an editor with Ctrl+S to save. tab inserts spaces. its got the mewoOS glass treatment on everything what is meo (new feature…yey) so meo is basically the AI assistant that lives inside MewoOS. think of it like Siri but actually useful and with personality….a menace on silicon. u tap the orb, speak to her, and she responds. she can open apps, close them, minimize, maximize — basically control the whole OS with voice. she has emotions too — happy, excited, concerned, playful, calm, tired, urgent — and her voice changes based on that. she roasts u but its from love. like a best friend who also happens to be an AI running inside an operating system the whole thing runs on Gemini — both the brain (chat) and the voice (TTS). she uses Gemini 2.5 Flash for thinking and Gemini 2.5 Flash Preview TTS for speaking back to u with different voices depending on her mood now the part that took forever — making meo actually work bruh so making meo work took some work… idk how many times i debugged for her to actually listen to me the STT problem so the original problem was the Web Speech API — that thing is just unreliable as hell. it only works in Chrome, needs HTTPS or localhost, and half the time it just doesnt fire onresult at all. like u speak, it says “listening…”, then nothing happens. the text never shows up. no transcription, no response, nothing i tried fixing it multiple times — started recognition immediately instead of waiting for mic permission, added error handling, changed the flow… still broken. the Web Speech API is just built different (bad different) so i ripped it out completely. replaced it with MediaRecorder + Gemini for transcription. now when u tap the orb it records audio using the MediaRecorder API, sends the audio blob to Gemini, and Gemini transcribes it. way more reliable because it doesnt depend on browser-specific speech engines. it just works the gemini model error THEN the gemini model error… we had the wrong model names everywhere lol the chat model was set to gemini-3.5-flash which literally doesnt exist the TTS was gemini-2.5-flash-preview-tts which kept failing silently and falling back to browser TTS the STT was using gemini-2.0-flash which was mid so we updated everything to the right models: chat: gemini-2.5-flash (the actual latest flash model) TTS: gemini-2.5-flash-preview-tts (the dedicated TTS model with audio output) STT: gemini-2.5-flash (for transcribing the recorded audio) and added detailed console logging so we can actually see whats happening when things break. because before it was just silently falling back to browser TTS and we had no idea why the final pipeline: u tap the orb MediaRecorder starts capturing audio from the mic waveforms animate while u speak u tap again to stop audio blob gets sent to Gemini for transcription transcription goes to Gemini for the actual response Gemini responds with text + emotion response gets spoken back using Gemini TTS with the right voice
MewoOS Devlog #8 🍓😺 Pixel Cat Redesign redesigned the pixel cat that follows ur cursor around the desktop. she looks way better now ngl…more detailed sprite, smoother animation, and shes silver now which fits the dark theme way more. u can click her to toggle between following ur cursor or staying pinned. small thing but it makes the whole desktop feel alive fr Meo Can Control The OS (waw..dem ) this ones big. meo can now literally control the whole os. tell her “open the calculator” and she opens it. “open the terminal” — done. “minimize all windows” — gone. she parses whatever u say and does OS actions through action tags. supports open, close, min, max, focus, minimizeAll, closeAll. feels like ur actually talking to the os not just a chatbot Voice & Emotions Rework improved meos voice n emotions big time. she now detects what ur saying and adjusts — happy, excited, concerned, playful, calm, tired, urgent. each one has its own rate, pitch, personality. the voice sounds way less robotic now and more natural. also fixed that annoying thing where the reply would show up in the chat 4 seconds before the tts spoke it. now they happen at the same time so its smooth 4 Desktop Workspaces added a desktop workspace system. u get 4 separate desktops switch between them with ctrl 1 2 3 4. each desktop has its own windows so u can have coding stuff on desktop 1 music and browser on desktop 2 etc. ctrl left right cycles between them. feels like a real os now not just a web page Mewo Store(new feature…yey) built a full app store for mewoos. premium dock style icons glassmorphism ui category filters search the works. and the apps u can actually install and they actually work when u open them Installable Apps weather — 5 cities 7 day forecast animated temp bars humidity wind stats kanban board — drag and drop 3 columns colored tags 7 pre loaded tasks focus timer — working pomodoro timer svg ring progress 3 modes focus short long session stats type racer — typing speed test real time character highlighting green red wpm calc 8 sentences paint studio — actual working canvas color picker brush size clear button u can draw on it image editor — 8 filter presets original warm cool b&w vintage vivid fade noir brightness contrast saturation sliders uses a real image Store Features when u install an app theres a progress bar animation then the app icon shows up in the dock with a premium dock style icon. and u can uninstall apps too removes from dock and closes any open windows…. mewo meow mewo
final devlog for mewo os 🍓😺 okay so guess wat… i was debugging mewo again and again for a bug that wasnt even real 💔… what happened is.. i opened mewo saw that nothing is functional and i was like everything looks gud why its not wokring… and then i saw my mails and found out that vercel and supabase paused my web cause i ran out of the free tier 💔😭… anyways aside from this i added ts js for the vibes lol Window Switcher Open 2+ apps (e.g. Calculator + Terminal + Notes) Press Ctrl+Shift+A — overlay appears with all open windows Press Tab to cycle forward, Shift+Tab to cycle backward Release Shift or click a window to switch to it Escape to cancel also i did optimized mewo earlier but it was still lagging a bit cause of overlaying animations and effects so i fixed that too ts time redeployed on vercel again!! try it out ^-^ :- https://mewoos.vercel.app
Ships:
Made the most productive web operating system ever created comes with a browser, terminal, music player, gallery, customizable wallpapers, draggable windows, and doomscroll — because no operating system is complete without destroying your attention span and we must scroll and larp… built with react, typescript, and questionable life choices :3
Made the most productive web operating system ever created comes with a browser, terminal, music player, gallery, customizable wallpapers, draggable windows, and doomscroll — because no operating system is complete without destroying your attention span… built with react, typescript, and questionable life choices :3 new features :- functional file system voice assistant with vocal modulation and os control 4 desktop workspace mewo store (more apps that u can actually install !!)...
|
1793091158.0281417
|
1793177558.0281417
|
|
13594
|
StardanceOS by @Sadiya | Stardance
|
Sadiya
|
2
|
8.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T19:10:11Z", "hours": 3.0, "multiplier": 6.82, "payout": 22, "blessing": "neutral", "text": "This is the same project I made in WebOS 1 but I added new features such as a calculator app, battery status and multiple background themes to switch from. The hardest part for me from doing this project was the CSS because my results did not come out as I expected. But at the end I was able to make something that I am proud of.", "repo": "https://github.com/sadiyameem/webos-stardance", "demo": "https://sadiyameem.github.io/webos-stardance/"}, {"ship_num": 2, "ts": "2026-06-17T22:57:32Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WebOS about Stardance. It has draggable windows, apps, dark mode, sound effects and a live clock. This is space-themed inspired by Stardance.", "repo": "https://github.com/sadiyameem/webos-stardance", "demo": "https://sadiyameem.github.io/webos-stardance/"}]...
|
[{"post_id": 21665, "ts": "202 [{"post_id": 21665, "ts": "2026-07-03T19:00:32Z", "hours": 1.1192, "text": "I added another feature which is a theme selector and I also change the apps emojis to icons. Since the video I recorded was too big I had to make it smaller so you may not see everything but I hope you still understand the idea of this feature."}, {"post_id": 20122, "ts": "2026-07-01T17:30:36Z", "hours": 0.5925, "text": "I added an another new feature which is a battery status"}, {"post_id": 18750, "ts": "2026-06-29T22:49:46Z", "hours": 0.8794, "text": "I added a new feature which is a calculator"}, {"post_id": 8395, "ts": "2026-06-13T23:27:45Z", "hours": 0.5144, "text": "I added a new features which is sound and it includes when opening windows, clicking the dark mode button, and closing the windows. Here is a video"}, {"post_id": 7782, "ts": "2026-06-13T00:10:39Z", "hours": 0.2756, "text": "I just finished my README and made a link for this project. The reason why the video is like this is because the one that I made was too big so this has to do."}, {"post_id": 6414, "ts": "2026-06-10T19:49:32Z", "hours": 1.1886, "text": "I have added a new feature. A dark mode button."}, {"post_id": 5714, "ts": "2026-06-09T16:41:50Z", "hours": 1.7844, "text": "This is my OS. It includes a desktop with apps, draggable windows, a top bar with clock. Each app is openable and moveable that can be closed. The main features of this project are draggable windows, open/close apps, clickable icons, and live clock."}, {"post_id": 5301, "ts": "2026-06-09T00:57:01Z", "hours": 0.735, "text": "I have rewrote the HTML and currently writing the CSS. I know something seems wrong and I am working on it. Here it is so far"}, {"post_id": 5248, "ts": "2026-06-08T23:15:42Z", "hours": 0.5861, "text": "This is a webos. This is just some of the text I may add and the background I chose. I couldn’t fit all of the text I added so this will do."}]...
|
Title: StardanceOS by @Sadiya | Stardance
Devlogs Title: StardanceOS by @Sadiya | Stardance
Devlogs:
This is a webos. This is just some of the text I may add and the background I chose. I couldn’t fit all of the text I added so this will do.
I have rewrote the HTML and currently writing the CSS. I know something seems wrong and I am working on it. Here it is so far
This is my OS. It includes a desktop with apps, draggable windows, a top bar with clock. Each app is openable and moveable that can be closed. The main features of this project are draggable windows, open/close apps, clickable icons, and live clock.
I have added a new feature. A dark mode button.
I just finished my README and made a link for this project. The reason why the video is like this is because the one that I made was too big so this has to do.
I added a new features which is sound and it includes when opening windows, clicking the dark mode button, and closing the windows. Here is a video
I added a new feature which is a calculator
I added an another new feature which is a battery status
I added another feature which is a theme selector and I also change the apps emojis to icons. Since the video I recorded was too big I had to make it smaller so you may not see everything but I hope you still understand the idea of this feature.
Ships:
I made a WebOS about Stardance. It has draggable windows, apps, dark mode, sound effects and a live clock. This is space-themed inspired by Stardance.
This is the same project I made in WebOS 1 but I added new features such as a calculator app, battery status and multiple background themes to switch from. The hardest part for me from doing this project was the CSS because my results did not come out as I expected. But at the end I was able to make something that I am proud of....
|
1792997432.9987462
|
1793083832.9987462
|
|
13632
|
PrismaOS by @reimunyancat | Stardance
|
reimunyancat
|
2
|
22.0
|
67
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T00:48:44Z", "hours": 6.0, "multiplier": 11.17, "payout": 67, "blessing": "neutral", "text": "PrismaOS is a desktop OS that runs in a browser tab. It was already a working shell after WebOS 1, so this round I went after the things that made it feel like a demo instead of a system: settings you can actually change, a way to get anywhere without the mouse, real files, and windows that behave. There are four new things since WebOS 1. Settings. A real preferences app. Four themes, four wallpapers (liquid, mesh, grid, solid), a custom accent color, and a lite mode that kills blur and background animation for weak machines. Everything writes to localStorage and restores before the first paint, so there is no flash of the wrong theme on reload. Spotlight. Press ctrl + K anywhere and you get fuzzy search over apps, themes and wallpapers. Arrow keys and enter, escape to close. It turned out to be the fastest way to use the whole OS and I now open everything with it. A virtual filesystem. There is an actual tree in memory with a Files app on top of it, and the terminal talks to the same tree. pwd, ls, cd, cat and open all work, and open hands the file to the Files app. One source of truth for two very different interfaces was the part I enjoyed most. Window snapping and global shortcuts. Drag a window to a screen edge and it snaps to half or a quarter with a preview overlay first. Plus keyboard shortcuts for closing, minimizing, cycling and resetting the layout. The hardest part was window state. Saved layouts only stored x and y, so on restore the width and height came back undefined and every clamp turned into NaN. Windows loaded at zero size in the top left corner and I stared at it for a while before I understood what I was looking at. The fix was merging saved values over the defaults instead of replacing them, and bumping the storage key. To test it: open the site, hit ctrl + K and type anything. Try the terminal with ls and cd System, then cat version. Drag a window into the left edge and let go. Open Settings and switch the wallpaper to liquid, then turn on lite mode and watch the blur disappear. If the layout ever gets messy, Settings has a reset button.", "repo": "https://github.com/reimunyancat/PrismaOS", "demo": "https://prisma-os-gamma.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-01T16:41:24Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built PrismaOS, a portfolio that boots and runs like a desktop OS inside a browser tab. Instead of a normal scrolling page, you get a boot sequence, a wallpaper, a menu bar with a live clock, and a dock. Every app opens as a real window you can drag around, focus, resize, and minimize, and the layout you leave behind is remembered. I didn’t want it to look like the guide, so I built my own visual language around a prism theme and shipped four switchable themes: aqua, graphite, midnight, and aurora. The dock has macOS-style cursor magnification, and the whole shell has its own glass look rather than the default one from the walkthrough. The feature the guide didn’t ask for is a working terminal. It’s not a prop. It runs help, about, projects, ls, open, theme, and fastfetch, it keeps command history, and it talks to the OS through a small syscall module so open terminal and theme aurora actually reach into the window manager and theme state. There are also two easter eggs in there for anyone who pokes around. My goal is to further develop it later into a portfolio site worthy of being featured on my GitHub profile.", "repo": "https://github.com/reimunyancat/PrismaOS", "demo": "https://prisma-os-gamma.vercel.app/"}]...
|
[{"post_id": 41646, "ts": "202 [{"post_id": 41646, "ts": "2026-08-06T00:25:20Z", "hours": 3.0592, "text": "Devlog #6 Last time I promised a virtual filesystem. It’s here — plus window snapping, which sneaked in because I got tired of dragging windows into place by hand. One tree, two apps The whole filesystem is a single fs.ts file: a nested tree of directories and files, no disk involved. What makes it worth building is that Files and the terminal both read from that same tree. Click into ~/Projects in Files, then type cd ~/Projects in the terminal, and you’re looking at the same list. Neither app owns the data, so they can’t drift apart. Files ended up as a three-pane Finder: places sidebar, listing, preview at the bottom. Folders are sorted before files, hidden dotfiles are filtered out unless you ask. App bundles carry an app field, so selecting Terminal.app and hitting “Open in app” launches the real window — the fake filesystem reaches back into the real OS, which is a nicer trick than it has any right to be. The terminal grew pwd , ls , cd , cat , and a smarter open . Path handling is the part nobody sees: one normalizePath swallows ~ , . , .. , and relative paths, spits out a clean absolute path, and every command routes through it. Write that once and cd ../../Users/nyancat just works. Skip it and you’re writing string hacks forever. I also stash the current directory on every input line, so scrolling back up shows the prompt exactly as it was — prism ~/Projects $ and not a rewritten one. Small thing. Feels wrong immediately when it’s missing. Throwing windows at walls Snapping turned out to be a two-line idea buried under a plumbing problem. Drop a window near the left edge and it fills the left half; right edge, right half; top edge, full screen. The catch: the drag hook only knew where the window ended up, not where the cursor was. Those are different by however far from the titlebar’s corner you happened to grab. Drag by the right side of the titlebar and the window’s own x never gets close to the left edge, so nothing snaps and you sit there wondering if you broke it. Fix was to pass the pointer coordinates along with the final position and judge the zone by the cursor. The bug I found while I was in there Opening the window manager back up, I noticed the layout restore was saved ?? app.initial — and move() only writes {x, y} . So move a window, close it, reopen: the saved partial wins, width and height come back undefined , Math.min(undefined, vw) gives NaN , and the window collapses to the size of its own text. It only shows up if you move a window without ever resizing it, which is why it survived this long. Merging over the defaults instead of replacing them fixes it, and I bumped the storage key to prisma-layout-v2 so old broken entries get ignored rather than restored. Where PrismaOS stands Virtual filesystem shared by Files and the terminal — same paths, same contents Files app: sidebar, listing, preview, and launching apps straight from bundles Terminal: pwd , ls (with -a ), cd , cat , open <app|file> Window snapping to left, right, and full screen, plus the layout NaN fix Next up Wrapping up. Version bump to 0.3.0, a pass over the leftovers, and shipping the whole thing."}, {"post_id": 40807, "ts": "2026-08-04T15:53:27Z", "hours": 1.4222, "text": "Devlog #5 Told you Spotlight was next. ctrl + K now pulls a command palette up over the desktop, and a set of global shortcuts came along for the ride. What I built Spotlight is one input that searches apps, themes, and wallpapers at the same time. The matching isn’t substring — it’s subsequence. Your letters just have to show up in order, so prj lands on Projects and mdn finds “Theme — midnight”. Type less, get more. That’s the whole pitch. It also isn’t a window. It’s an overlay sitting above the desktop, so it skips the window manager entirely — no z-index fights, no traffic lights, just a backdrop you click away from. Arrow keys move, Enter runs, Esc bails. Boringly predictable, which is exactly what a launcher should be. Same session added global hotkeys through a small useHotkeys hook: ctrl + K for Spotlight, ctrl + W closes the front window, ctrl + M minimizes it, ctrl + , opens Settings, and ctrl + ` cycles through windows. One listener registered on mount, handlers kept in a ref so nothing goes stale. The shortcut minefield Picking key combos for a web app is mostly a game of “what am I not allowed to touch”. ctrl + Tab and ctrl + N belong to the browser, period. That’s how window cycling ended up on the backtick — looks odd, but it sits right above Tab, so your finger barely moves. Accidentally ergonomic. Where PrismaOS stands ctrl + K palette: fuzzy search over apps, themes, wallpapers Global hotkeys: close, minimize, Settings, window cycling Spotlight is an overlay, not a window — the window manager never sees it Next up A virtual filesystem. One tree shared by a Finder-style Files app and the terminal, so cd -ing around and clicking through folders show you the exact same places."}, {"post_id": 40502, "ts": "2026-08-04T02:27:48Z", "hours": 1.5411, "text": "Devlog #4 WebOS 1 shipped, so now I’m on WebOS 2: four new features on top of the 0.2.0 baseline. First one up is a proper Settings app. Until now, the only way to reskin the desktop was typing theme aurora into the terminal like it’s 1995. Charming, but not exactly something you can show people. What I built The Settings window has five sections: theme, wallpaper, accent color, performance, and window layout. Everything routes through os.ts , the little kernel module that owns the document.documentElement attributes and localStorage — so whatever you pick survives a refresh, and restores before the first paint. The wallpaper system was the fun part. The desktop background is just a stack of CSS gradients, so switching wallpapers means flipping one data-wallpaper attribute and letting App.css restyle the whole thing. I added three new ones (mesh, grid, solid) on top of the default liquid. The accent picker is even lazier: it overrides a single --accent variable on top of whatever theme is active, so any accent mixes with any theme for free. I also gave lite mode (blur off, animations off) a manual override. It used to be purely automatic, based on hardware detection. Now if you flip it yourself, your choice wins over the heuristic. The facepalm Also settled something small but important: all UI strings ship in English by default, since this is a public portfolio. A language toggle can come later — English stays the default either way. Where PrismaOS stands Settings app: themes, wallpapers, accent colors, lite mode, layout reset Every choice persists via localStorage and restores before first paint New wallpapers: mesh, grid, solid (liquid stays the default) Next up Spotlight. ctrl + K, fuzzy search over apps, themes, and wallpapers — because clicking is effort."}, {"post_id": 38977, "ts": "2026-08-01T16:25:32Z", "hours": 7.0089, "text": "Devlog #3 Devlog #2 ended with a shell that read as a desktop but a dock where every icon opened a placeholder. This time I filled it in: the real apps, a terminal that can actually drive the OS, and the boot screen I said I’d redo. About, Projects, and Music are real windows now, all registered in one place and opened through the window manager. An app is just an entry — id, title, icon, component — so the dock, the terminal, and the logo menu all launch through the same path. Projects is the one with real structure: a card grid and a detail view off a single useState . I made the cards <button> instead of <div> after realizing I couldn’t tab to a project; that brought focus and Enter/Space back for free. The terminal was the part I cared about most. help , about , projects , ls , open , theme , fastfetch , clear , plus two easter eggs. Parsing was nothing — a split and a switch. The annoying part was that open terminal needs the window manager and theme aurora needs the theme state, both living way above the terminal. I didn’t want to prop-drill the whole WM into a leaf, so the shell talks to src/os.ts instead: import { launchApp , listApps , setTheme , THEMES } from \" ../os \" ; Small module, handlers registered at mount. open returns false for a missing app so I can print no such app instead of failing silently. Command history took two tries — the first walked off the end of the array and left undefined in the input; fix was making -1 mean “not browsing”. Boot screen: the old one was a pulsing logo and a 2400ms bar that measured nothing, opening into a shell with glass and a live clock. Now it prints staged log lines as the bar crosses them (mount display, load tokens, start WM, register apps, start prism-sh), the logo sits on a slow refraction sweep, and any click or key skips it. It only plays once per tab via sessionStorage , and prefers-reduced-motion takes the same fast path. Two bugs turned up prepping the build. npm run build died instantly: src/hooks/useWindows.ts(1,10): error TS6133: 'use' is declared but never read. An autocomplete import { use, ... } I never called. dev doesn’t typecheck, but build is tsc --noEmit && vite build with noUnusedLocals , so the first real build was the first warning. Six characters. The other: About’s only link was href=\"https//github.com/...\" — missing colon, so it read as a relative path and 404’d inside my own site. Clicked past it a dozen times."}, {"post_id": 35217, "ts": "2026-07-26T14:33:42Z", "hours": 2.8786, "text": "Devlog #2 Building my portfolio as an operating system that runs in a browser tab. Picking up from Devlog #1, where the desktop finally had bones — windows you could drag, focus, resize, and minimize — but nothing around them. An empty wallpaper with floating rectangles isn’t an OS; it’s a screensaver. This milestone is about the two pieces of chrome that make it read as a real desktop the instant it loads: the menu bar across the top and the dock along the bottom. A menu bar The menu bar is mostly static — a logo that drops open into an “About / Restart” menu, and the usual File / Edit / View / Help labels that don’t do much yet. The one part that has to feel alive is the clock in the top-right corner. A frozen clock immediately breaks the illusion, so it ticks once a second Nothing fancy — a setInterval that recomputes the formatted string every second and clears itself on unmount. The formatting is where I tripped. The crash that ate the whole screen I wanted the clock in Korean — “7월 26일 (일) 오후 11:24” — so I reached for the browser’s built-in localization instead of hand-formatting dates: const date = d . toLocaleDateString ( \" ko-KR \" , { month : \" short \" , day : \" numeric \" , weekday : \" short \" }) const time = d . toLocaleTimeString ( \" ko_KR \" , { hour : \" 2-digit \" , minute : \" 2-digit \" }) And the app went white. Not a subtly-wrong date — the entire MenuBar component threw and took the tree down with it: Uncaught RangeError: invalid language tag: \"ko_KR\" formatNow MenuBar.tsx:74 It took me an embarrassing minute because the two lines look identical at a glance. Look again: the date says ko-KR , the time says ko_KR . A hyphen on one line, an underscore on the next. The fix was one keystroke — underscore to hyphen — and the shell came back. Lesson filed away: locale tags are hyphenated, always, and Intl validates them strictly enough to crash. Two things to fix properly later — normalize the locale in one constant so I can’t typo it twice, and wrap the shell in an error boundary so a single throw dims one widget instead of nuking the screen. The dock The dock is the fun part. I wanted the macOS-style effect where icons swell as the cursor passes over them and the neighbors ease up too, so it feels like the row is being pushed under a magnifying glass rather than icons popping one at a time. On a trackpad-less touch screen there’s no hover state, so a finger tap would otherwise make the whole dock lurch to wherever you touched. Gating on pointerType === \"mouse\" keeps touch calm and leaves the magnification as a mouse-only flourish, which is exactly where it belongs. Where stands Menu bar with a working logo menu and a live, once-a-second clock. Clock is localized through Intl — after learning the hard way that the tag must be ko-KR , not ko_KR . Dock with smooth Gaussian cursor magnification and a subtle lift, mouse-only. The desktop finally reads as a desktop at first glance, even before any real apps exist. Next up The apps themselves — About and Projects as real windows wired into the window manager, replacing the placeholder stand-ins the dock currently launches. And, not incidentally, the boot sequence needs a proper redesign; the current one is placeholder-grade and doesn’t match the polish of the shell it opens into."}, {"post_id": 33791, "ts": "2026-07-24T00:13:15Z", "hours": 6.5044, "text": "Devlog #1 Building my portfolio as an operating system that runs in a browser tab. Why this exists When I first saw the brief, I honestly just planned to knock something out — the minimum that clears the requirements and move on. But somewhere between the first commit and the second, I changed my mind. If I’m going to build a website anyway, why not make it the website — my actual portfolio. So I decided to treat PrismaOS as the real thing and pour everything I have into it: a portfolio site that is itself the project. Every window, every pixel of the shell, is something I want to be proud to show. That reframing is why this repo suddenly has design tokens, four themes, and a genie animation nobody asked for. The concept: instead of a scrolling landing page, the visitor boots into a tiny web desktop — a menu bar, a dock, draggable windows — and explores my work the way you’d poke around someone’s actual computer. This milestone: the window manager Devlog #1 covers the skeleton — the part that makes it feel like an OS rather One source of truth Every window’s position, size, focus order (z-index), and minimized state lives in a single hook, useWindows . Components never track their own coordinates. Opening, closing, focusing, moving, and resizing all route through that one place. Dragging without dropping frames The naive approach — call setState on every pointer move — makes windows stutter because React re-renders on every pixel. So during a drag I don’t touch state at all. I mutate the DOM node directly ( el.style.left/top ) for a smooth 60fps, and only commit the final position to state when the pointer is released. The other trick is setPointerCapture . Once the pointer is captured, the drag keeps working even if the cursor flies outside the window — or outside the browser entirely. Touch gets the same behavior for free, since Pointer Events unify mouse and touch. handle . setPointerCapture ( e . pointerId ) // ...move: write to el.style directly (no re-render) // ...up: commit once via onDragEnd() Resizing from the bottom-right corner uses the exact same pattern: capture, mutate the DOM live, commit on release. Bug I caught Clicking any window brings it to the front by bumping a z-counter."}]...
|
Title: PrismaOS by @reimunyancat | Stardance
Devl Title: PrismaOS by @reimunyancat | Stardance
Devlogs:
Devlog #1 Building my portfolio as an operating system that runs in a browser tab. Why this exists When I first saw the brief, I honestly just planned to knock something out — the minimum that clears the requirements and move on. But somewhere between the first commit and the second, I changed my mind. If I’m going to build a website anyway, why not make it the website — my actual portfolio. So I decided to treat PrismaOS as the real thing and pour everything I have into it: a portfolio site that is itself the project. Every window, every pixel of the shell, is something I want to be proud to show. That reframing is why this repo suddenly has design tokens, four themes, and a genie animation nobody asked for. The concept: instead of a scrolling landing page, the visitor boots into a tiny web desktop — a menu bar, a dock, draggable windows — and explores my work the way you’d poke around someone’s actual computer. This milestone: the window manager Devlog #1 covers the skeleton — the part that makes it feel like an OS rather One source of truth Every window’s position, size, focus order (z-index), and minimized state lives in a single hook, useWindows . Components never track their own coordinates. Opening, closing, focusing, moving, and resizing all route through that one place. Dragging without dropping frames The naive approach — call setState on every pointer move — makes windows stutter because React re-renders on every pixel. So during a drag I don’t touch state at all. I mutate the DOM node directly ( el.style.left/top ) for a smooth 60fps, and only commit the final position to state when the pointer is released. The other trick is setPointerCapture . Once the pointer is captured, the drag keeps working even if the cursor flies outside the window — or outside the browser entirely. Touch gets the same behavior for free, since Pointer Events unify mouse and touch. handle . setPointerCapture ( e . pointerId ) // ...move: write to el.style directly (no re-render) // ...up: commit once via onDragEnd() Resizing from the bottom-right corner uses the exact same pattern: capture, mutate the DOM live, commit on release. Bug I caught Clicking any window brings it to the front by bumping a z-counter.
Devlog #2 Building my portfolio as an operating system that runs in a browser tab. Picking up from Devlog #1, where the desktop finally had bones — windows you could drag, focus, resize, and minimize — but nothing around them. An empty wallpaper with floating rectangles isn’t an OS; it’s a screensaver. This milestone is about the two pieces of chrome that make it read as a real desktop the instant it loads: the menu bar across the top and the dock along the bottom. A menu bar The menu bar is mostly static — a logo that drops open into an “About / Restart” menu, and the usual File / Edit / View / Help labels that don’t do much yet. The one part that has to feel alive is the clock in the top-right corner. A frozen clock immediately breaks the illusion, so it ticks once a second Nothing fancy — a setInterval that recomputes the formatted string every second and clears itself on unmount. The formatting is where I tripped. The crash that ate the whole screen I wanted the clock in Korean — “7월 26일 (일) 오후 11:24” — so I reached for the browser’s built-in localization instead of hand-formatting dates: const date = d . toLocaleDateString ( " ko-KR " , { month : " short " , day : " numeric " , weekday : " short " }) const time = d . toLocaleTimeString ( " ko_KR " , { hour : " 2-digit " , minute : " 2-digit " }) And the app went white. Not a subtly-wrong date — the entire MenuBar component threw and took the tree down with it: Uncaught RangeError: invalid language tag: "ko_KR" formatNow MenuBar.tsx:74 It took me an embarrassing minute because the two lines look identical at a glance. Look again: the date says ko-KR , the time says ko_KR . A hyphen on one line, an underscore on the next. The fix was one keystroke — underscore to hyphen — and the shell came back. Lesson filed away: locale tags are hyphenated, always, and Intl validates them strictly enough to crash. Two things to fix properly later — normalize the locale in one constant so I can’t typo it twice, and wrap the shell in an error boundary so a single throw dims one widget instead of nuking the screen. The dock The dock is the fun part. I wanted the macOS-style effect where icons swell as the cursor passes over them and the neighbors ease up too, so it feels like the row is being pushed under a magnifying glass rather than icons popping one at a time. On a trackpad-less touch screen there’s no hover state, so a finger tap would otherwise make the whole dock lurch to wherever you touched. Gating on pointerType === "mouse" keeps touch calm and leaves the magnification as a mouse-only flourish, which is exactly where it belongs. Where stands Menu bar with a working logo menu and a live, once-a-second clock. Clock is localized through Intl — after learning the hard way that the tag must be ko-KR , not ko_KR . Dock with smooth Gaussian cursor magnification and a subtle lift, mouse-only. The desktop finally reads as a desktop at first glance, even before any real apps exist. Next up The apps themselves — About and Projects as real windows wired into the window manager, replacing the placeholder stand-ins the dock currently launches. And, not incidentally, the boot sequence needs a proper redesign; the current one is placeholder-grade and doesn’t match the polish of the shell it opens into.
Devlog #3 Devlog #2 ended with a shell that read as a desktop but a dock where every icon opened a placeholder. This time I filled it in: the real apps, a terminal that can actually drive the OS, and the boot screen I said I’d redo. About, Projects, and Music are real windows now, all registered in one place and opened through the window manager. An app is just an entry — id, title, icon, component — so the dock, the terminal, and the logo menu all launch through the same path. Projects is the one with real structure: a card grid and a detail view off a single useState . I made the cards <button> instead of <div> after realizing I couldn’t tab to a project; that brought focus and Enter/Space back for free. The terminal was the part I cared about most. help , about , projects , ls , open , theme , fastfetch , clear , plus two easter eggs. Parsing was nothing — a split and a switch. The annoying part was that open terminal needs the window manager and theme aurora needs the theme state, both living way above the terminal. I didn’t want to prop-drill the whole WM into a leaf, so the shell talks to src/os.ts instead: import { launchApp , listApps , setTheme , THEMES } from " ../os " ; Small module, handlers registered at mount. open returns false for a missing app so I can print no such app instead of failing silently. Command history took two tries — the first walked off the end of the array and left undefined in the input; fix was making -1 mean “not browsing”. Boot screen: the old one was a pulsing logo and a 2400ms bar that measured nothing, opening into a shell with glass and a live clock. Now it prints staged log lines as the bar crosses them (mount display, load tokens, start WM, register apps, start prism-sh), the logo sits on a slow refraction sweep, and any click or key skips it. It only plays once per tab via sessionStorage , and prefers-reduced-motion takes the same fast path. Two bugs turned up prepping the build. npm run build died instantly: src/hooks/useWindows.ts(1,10): error TS6133: 'use' is declared but never read. An autocomplete import { use, ... } I never called. dev doesn’t typecheck, but build is tsc --noEmit && vite build with noUnusedLocals , so the first real build was the first warning. Six characters. The other: About’s only link was href="https//github.com/..." — missing colon, so it read as a relative path and 404’d inside my own site. Clicked past it a dozen times.
Devlog #4 WebOS 1 shipped, so now I’m on WebOS 2: four new features on top of the 0.2.0 baseline. First one up is a proper Settings app. Until now, the only way to reskin the desktop was typing theme aurora into the terminal like it’s 1995. Charming, but not exactly something you can show people. What I built The Settings window has five sections: theme, wallpaper, accent color, performance, and window layout. Everything routes through os.ts , the little kernel module that owns the document.documentElement attributes and localStorage — so whatever you pick survives a refresh, and restores before the first paint. The wallpaper system was the fun part. The desktop background is just a stack of CSS gradients, so switching wallpapers means flipping one data-wallpaper attribute and letting App.css restyle the whole thing. I added three new ones (mesh, grid, solid) on top of the default liquid. The accent picker is even lazier: it overrides a single --accent variable on top of whatever theme is active, so any accent mixes with any theme for free. I also gave lite mode (blur off, animations off) a manual override. It used to be purely automatic, based on hardware detection. Now if you flip it yourself, your choice wins over the heuristic. The facepalm Also settled something small but important: all UI strings ship in English by default, since this is a public portfolio. A language toggle can come later — English stays the default either way. Where PrismaOS stands Settings app: themes, wallpapers, accent colors, lite mode, layout reset Every choice persists via localStorage and restores before first paint New wallpapers: mesh, grid, solid (liquid stays the default) Next up Spotlight. ctrl + K, fuzzy search over apps, themes, and wallpapers — because clicking is effort.
Devlog #5 Told you Spotlight was next. ctrl + K now pulls a command palette up over the desktop, and a set of global shortcuts came along for the ride. What I built Spotlight is one input that searches apps, themes, and wallpapers at the same time. The matching isn’t substring — it’s subsequence. Your letters just have to show up in order, so prj lands on Projects and mdn finds “Theme — midnight”. Type less, get more. That’s the whole pitch. It also isn’t a window. It’s an overlay sitting above the desktop, so it skips the window manager entirely — no z-index fights, no traffic lights, just a backdrop you click away from. Arrow keys move, Enter runs, Esc bails. Boringly predictable, which is exactly what a launcher should be. Same session added global hotkeys through a small useHotkeys hook: ctrl + K for Spotlight, ctrl + W closes the front window, ctrl + M minimizes it, ctrl + , opens Settings, and ctrl + ` cycles through windows. One listener registered on mount, handlers kept in a ref so nothing goes stale. The shortcut minefield Picking key combos for a web app is mostly a game of “what am I not allowed to touch”. ctrl + Tab and ctrl + N belong to the browser, period. That’s how window cycling ended up on the backtick — looks odd, but it sits right above Tab, so your finger barely moves. Accidentally ergonomic. Where PrismaOS stands ctrl + K palette: fuzzy search over apps, themes, wallpapers Global hotkeys: close, minimize, Settings, window cycling Spotlight is an overlay, not a window — the window manager never sees it Next up A virtual filesystem. One tree shared by a Finder-style Files app and the terminal, so cd -ing around and clicking through folders show you the exact same places.
Devlog #6 Last time I promised a virtual filesystem. It’s here — plus window snapping, which sneaked in because I got tired of dragging windows into place by hand. One tree, two apps The whole filesystem is a single fs.ts file: a nested tree of directories and files, no disk involved. What makes it worth building is that Files and the terminal both read from that same tree. Click into ~/Projects in Files, then type cd ~/Projects in the terminal, and you’re looking at the same list. Neither app owns the data, so they can’t drift apart. Files ended up as a three-pane Finder: places sidebar, listing, preview at the bottom. Folders are sorted before files, hidden dotfiles are filtered out unless you ask. App bundles carry an app field, so selecting Terminal.app and hitting “Open in app” launches the real window — the fake filesystem reaches back into the real OS, which is a nicer trick than it has any right to be. The terminal grew pwd , ls , cd , cat , and a smarter open . Path handling is the part nobody sees: one normalizePath swallows ~ , . , .. , and relative paths, spits out a clean absolute path, and every command routes through it. Write that once and cd ../../Users/nyancat just works. Skip it and you’re writing string hacks forever. I also stash the current directory on every input line, so scrolling back up shows the prompt exactly as it was — prism ~/Projects $ and not a rewritten one. Small thing. Feels wrong immediately when it’s missing. Throwing windows at walls Snapping turned out to be a two-line idea buried under a plumbing problem. Drop a window near the left edge and it fills the left half; right edge, right half; top edge, full screen. The catch: the drag hook only knew where the window ended up, not where the cursor was. Those are different by however far from the titlebar’s corner you happened to grab. Drag by the right side of the titlebar and the window’s own x never gets close to the left edge, so nothing snaps and you sit there wondering if you broke it. Fix was to pass the pointer coordinates along with the final position and judge the zone by the cursor. The bug I found while I was in there Opening the window manager back up, I noticed the layout restore was saved ?? app.initial — and move() only writes {x, y} . So move a window, close it, reopen: the saved partial wins, width and height come back undefined , Math.min(undefined, vw) gives NaN , and the window collapses to the size of its own text. It only shows up if you move a window without ever resizing it, which is why it survived this long. Merging over the defaults instead of replacing them fixes it, and I bumped the storage key to prisma-layout-v2 so old broken entries get ignored rather than restored. Where PrismaOS stands Virtual filesystem shared by Files and the terminal — same paths, same contents Files app: sidebar, listing, preview, and launching apps straight from bundles Terminal: pwd , ls (with -a ), cd , cat , open <app|file> Window snapping to left, right, and full screen, plus the layout NaN fix Next up Wrapping up. Version bump to 0.3.0, a pass over the leftovers, and shipping the whole thing.
Ships:
I built PrismaOS, a portfolio that boots and runs like a desktop OS inside a browser tab. Instead of a normal scrolling page, you get a boot sequence, a wallpaper, a menu bar with a live clock, and a dock. Every app opens as a real window you can drag around, focus, resize, and minimize, and the layout you leave behind is remembered. I didn’t want it to look like the guide, so I built my own visual language around a prism theme and shipped four switchable themes: aqua, graphite, midnight, and aurora. The dock has macOS-style cursor magnification, and the whole shell has its own glass look rather than the default one from the walkthrough. The feature the guide didn’t ask for is a working terminal. It’s not a prop. It runs help, about, projects, ls, open, theme, and fastfetch, it keeps command history, and it talks to the OS through a small syscall module so open terminal and theme aurora actually reach into the window manager and theme state. There are also two easter eggs in there for anyone who pokes around. My goal is to further develop it later into a portfolio site worthy of being featured on my GitHub profile.
PrismaOS is a desktop OS that runs in a browser tab. It was already a working shell after WebOS 1, so this round I went after the things that made it feel like a demo instead of a system: settings you can actually change, a way to get anywhere without the mouse, real files, and windows that behave. There are four new things since WebOS 1. Settings. A real preferences app. Four themes, four wallpapers (liquid, mesh, grid, solid), a custom accent color, and a lite mode that kills blur and background animation for weak machines. Everything writes to localStorage and restores before the first paint, so there is no flash of the wrong theme on reload. Spotlight. Press ctrl + K anywhere and you get fuzzy search over apps, themes and wallpapers. Arrow keys and enter, escape to close. It turned out to be the fastest way to use the whole OS and I now open everything with it. A virtual filesystem. There is an actual tree in memory with a Files app on top of it, and the terminal talks to the same tree. pwd, ls, cd, cat and open all work, and open hands the file to the Files app. One source of truth for two very different interfaces was the part I enjoyed most. Window snapping and global shortcuts. Drag a window to a screen edge and it snaps to half or a quarter with a preview overlay first. Plus keyboard shortcuts for closing, minimizing, cycling and resetting the layout. The hardest part was window state. Saved layouts only stored x and y, so on restore the width and height came back undefined and every clamp turned into NaN. Windows loaded at zero size in the top left corner and I stared at it for a while before I understood what I was looking at. The fix was merging saved values over the defaults instead of replacing them, and bumping the storage key. To test it: open the site, hit ctrl + K and type anything. Try the terminal with ls and cd System, then cat version. Drag a window into the left edge and let go. Open Settings and switch the wallpaper to liquid, then turn on lite mode and watch the blur disappear. If the layout ever gets messy, Settings has a reset button....
|
1792878685.3973277
|
1793742685.3973277
|
|
13804
|
WebOS by @AdaChan | Stardance
|
AdaChan
|
2
|
19.81
|
87
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T14:42:06Z", "hours": 11.0, "multiplier": 8.22, "payout": 87, "blessing": "neutral", "text": "My Own WebOS For this project, I updated my WebOS by adding new applications and various features. First, I made some improvements to the NASA Viewer. It now displays more information about the “Image of the Day” and is free of the bugs it had before. Next, I created MiniTube, an app that uses the YouTube API to search for and watch videos directly within the WebOS. I also built a Pomodoro app to help manage study and break times. Another addition was a chatbot. While it currently only responds to simple questions and commands, I really enjoyed building it. I had previously created something similar in Python, so I adapted that same logic for JavaScript. I also added a Start button, which functions just like the Windows key; it opens a menu containing the list of applications and some settings. In the settings, users can now change the wallpaper and the taskbar color. These changes are saved using LocalStorage, so they persist even after closing the browser. Finally, I created a Help menu that serves as documentation for the WebOS, explaining what each app does and how to use them. Fixing bugs was the most challenging part, as several issues popped up during development. Even so, the chatbot was the feature I enjoyed building the most. You can try out the project here: https://hallow303.github.io/MyownWebOS/", "repo": "https://github.com/Hallow303/WebOS", "demo": "https://hallow303.github.io/WebOS/"}, {"ship_num": 2, "ts": "2026-06-16T01:02:39Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a webpage that simulates an operating system, all in a very simple way. It has 3 apps: a welcome app that simulates a notepad, a cat viewer that shows random cats, and one that shows cool facts about space. The app windows can be moved. The most challenging part was making things up, haha, because I didn’t know anything about JavaScript. I usually use Python for everything, and JavaScript is nothing like Python. I’m very proud of my cat app (who doesn’t like cats???). It’s also very difficult to make the site look good. I’m not very good at web design, so the site’s appearance is kind of poor, haha, mainly because CSS is very annoying. Overall, it’s been a really cool project to do.", "repo": "https://github.com/Hallow303/WebOS", "demo": "https://hallow303.github.io/WebOS/"}]...
|
[{"post_id": 37379, "ts": "202 [{"post_id": 37379, "ts": "2026-07-30T01:40:44Z", "hours": 0.9222, "text": "DevLog #12 Just testing a few things out. Basically, Svelte is very easy to understand, especially compared to the vanilla JavaScript I was using before. But there are quite a few things that are different."}, {"post_id": 36119, "ts": "2026-07-28T00:18:10Z", "hours": 0.3994, "text": "DevLog #11 I’m thinking about using Svelte to rewrite my entire WebOS simulator. I believe it will make the code much more organized, simplify maintenance, and speed up development compared to the current project."}, {"post_id": 34906, "ts": "2026-07-26T00:15:55Z", "hours": 0.4917, "text": "DevLog #10 Writing code… that’s about it. I decided to rewrite the WebOS from scratch and completely change its style. There isn’t much to show yet, but I hope the result will be worth it."}, {"post_id": 25965, "ts": "2026-07-10T14:30:37Z", "hours": 0.6869, "text": "DevLog #9 Today I finished the help section for My Own WebOS. I added documentation pages for all system applications, simply explaining what each one does and how to use it."}, {"post_id": 25320, "ts": "2026-07-09T15:19:46Z", "hours": 2.6825, "text": "DevLog #9 Apenas correções de bugs e pequenos ajustes."}, {"post_id": 19647, "ts": "2026-07-01T00:57:26Z", "hours": 5.1408, "text": "Devlog #8 Added some new stuff to the WebOS. This time I focused more on customization and making the system feel more alive. Now you can change the wallpaper and the taskbar color, which makes everything feel a bit more personal. I also added a functional chatbot (super basic for now lol), but it already works and can handle some simple commands. Current Apps Welcome - A simple app with some basic info about the project. Cat Viewer - Shows random cat pictures because every OS needs cats. NASA Viewer - Displays space-related images and information. MiniTube - A mini YouTube-like app inside the WebOS. Pomodoro - A productivity app with a timer to help focus. Start Menu I also added the Start button, basically inspired by the Windows key/start menu idea. When clicked, it opens a little menu with quick access to apps and system options: Help - Works like a mini documentation page for the WebOS. I made it with a sidebar-style layout, kinda like docs websites. Settings - Lets you change the wallpaper and taskbar color. Shutdown - Simulates shutting down the PC by turning the screen black and showing “Shutting down…” . Taskbar Improvements Now when an app is opened, its icon shows up in the taskbar. Overall, that’s pretty much what I worked on in this update."}, {"post_id": 18390, "ts": "2026-06-29T15:05:23Z", "hours": 0.7917, "text": "DevLog #7 I’ve started building the WebOS Settings area. So far, I’ve implemented two main options: Change the wallpaper Change the taskbar color Honestly, it’s not particularly pretty or practical yet, but it’s a start. To make things easier, I added the ability to change the wallpaper using an image URL, which makes the process faster and simpler. Also, all changes are saved to localStorage , which was the most practical way I found to persist the data. Window controls (inspired by macOS) I also added window control buttons based on Apple Inc.’s system: 🟥 Red → closes the window 🟨 Yellow → minimizes the window 🟩 Green → expands / toggles full screen Taskbar Now, when a window is opened, the app automatically appears on the taskbar. I haven’t managed to get the icons looking exactly how I wanted yet, so for now, I’ve just displayed the app name with a stylized border to maintain visual organization."}, {"post_id": 16284, "ts": "2026-06-26T14:08:52Z", "hours": 1.2553, "text": "DevLog #6 I removed the white border from the taskbar to make it more similar to the Windows XP layout. I also adjusted the clock to only show HH:mm to make it simpler and cleaner. I also added a chatbot, you can access it from the button in the right corner of the screen (the one with a speech bubble with a happy face 😄). How does the chatbot work? I made it very simple: The user types a message. The script checks whether a match exists in a JavaScript dictionary. \"hi\": \"Hello!\", \"hello\": \"Hi, how are you?\", \"hello\": \"Hey!\" If it finds a match, it returns the answer. If not, he responds with “I don’t understand.” There is also the Start button, its function is the same as the Win key on the keyboard: List applications Search for things Settings options It’s still just aesthetic, it has no real functionality, but I’m working on it. Firstly, I want to implement so that the user can change the wallpaper and customize the color of the taskbar."}, {"post_id": 9612, "ts": "2026-06-16T00:37:58Z", "hours": 2.3572, "text": "DevLog #4 Live Demo: https://hallow303.github.io/MyownWebOS/ I fixed the code errors and managed to get MyWebOS working better. I learned more about events, functions, and APIs, and practiced a lot of debugging. Now the project is more stable and ready to receive new ideas."}, {"post_id": 8105, "ts": "2026-06-13T15:01:47Z", "hours": 1.1264, "text": "Devlogs #3 Live Demo: https://hallow303.github.io/MyownWebOS/ I removed the music player app because it was giving me more trouble than I expected, lol. I decided to leave that for later and focus on other parts of the project. But, in return, I added a new app called NASA Viewer . It uses the NASA API to show the astronomical image of the day, along with the title and a short description. It was my first app using a real public API, so in addition to improving WebOS, I also learned more about fetch() , JSON, and how to work with external data. I still want to significantly improve the visuals and make everything look more like Windows XP."}, {"post_id": 6593, "ts": "2026-06-11T02:15:12Z", "hours": 0.755, "text": "Devlog #2 — Music Player Live Demo: https://hallow303.github.io/MyownWebOS/ Today I added a new application to my WebOS: a music player 🎵. For now it’s still quite simple and only has two songs, but it already works. Since I’m still learning CSS and JavaScript, some parts look a bit strange and need improvement. In the coming days I want to make the visual appearance nicer and continue adding features. My goal is to make WebOS look more and more like Windows XP, which is serving as inspiration for the project. There’s still a lot to improve, but I’m learning a lot during development."}, {"post_id": 5414, "ts": "2026-06-09T05:17:37Z", "hours": 2.5639, "text": "Development Diary #1 — My WebOS Demo Live Demo: https://hallow303.github.io/MyownWebOS/ I finished the first version of my WebOS demo. It now has two applications: Welcome: an application with a beginner’s guide and some system information Cat Viewer: an application that displays random images of cats During development, I realized that JavaScript is more difficult than I imagined, especially in the part about manipulating page elements and making the interface components work together. I still need to study more to better organize the code and understand how to structure larger projects without getting lost. Next goals: Create a calculator within WebOS Improve code organization Study more about DOM and events"}]...
|
Title: WebOS by @AdaChan | Stardance
Devlogs:
Dev Title: WebOS by @AdaChan | Stardance
Devlogs:
Development Diary #1 — My WebOS Demo Live Demo: https://hallow303.github.io/MyownWebOS/ I finished the first version of my WebOS demo. It now has two applications: Welcome: an application with a beginner’s guide and some system information Cat Viewer: an application that displays random images of cats During development, I realized that JavaScript is more difficult than I imagined, especially in the part about manipulating page elements and making the interface components work together. I still need to study more to better organize the code and understand how to structure larger projects without getting lost. Next goals: Create a calculator within WebOS Improve code organization Study more about DOM and events
Devlog #2 — Music Player Live Demo: https://hallow303.github.io/MyownWebOS/ Today I added a new application to my WebOS: a music player 🎵. For now it’s still quite simple and only has two songs, but it already works. Since I’m still learning CSS and JavaScript, some parts look a bit strange and need improvement. In the coming days I want to make the visual appearance nicer and continue adding features. My goal is to make WebOS look more and more like Windows XP, which is serving as inspiration for the project. There’s still a lot to improve, but I’m learning a lot during development.
Devlogs #3 Live Demo: https://hallow303.github.io/MyownWebOS/ I removed the music player app because it was giving me more trouble than I expected, lol. I decided to leave that for later and focus on other parts of the project. But, in return, I added a new app called NASA Viewer . It uses the NASA API to show the astronomical image of the day, along with the title and a short description. It was my first app using a real public API, so in addition to improving WebOS, I also learned more about fetch() , JSON, and how to work with external data. I still want to significantly improve the visuals and make everything look more like Windows XP.
DevLog #4 Live Demo: https://hallow303.github.io/MyownWebOS/ I fixed the code errors and managed to get MyWebOS working better. I learned more about events, functions, and APIs, and practiced a lot of debugging. Now the project is more stable and ready to receive new ideas.
DevLog #6 I removed the white border from the taskbar to make it more similar to the Windows XP layout. I also adjusted the clock to only show HH:mm to make it simpler and cleaner. I also added a chatbot, you can access it from the button in the right corner of the screen (the one with a speech bubble with a happy face 😄). How does the chatbot work? I made it very simple: The user types a message. The script checks whether a match exists in a JavaScript dictionary. "hi": "Hello!", "hello": "Hi, how are you?", "hello": "Hey!" If it finds a match, it returns the answer. If not, he responds with “I don’t understand.” There is also the Start button, its function is the same as the Win key on the keyboard: List applications Search for things Settings options It’s still just aesthetic, it has no real functionality, but I’m working on it. Firstly, I want to implement so that the user can change the wallpaper and customize the color of the taskbar.
DevLog #7 I’ve started building the WebOS Settings area. So far, I’ve implemented two main options: Change the wallpaper Change the taskbar color Honestly, it’s not particularly pretty or practical yet, but it’s a start. To make things easier, I added the ability to change the wallpaper using an image URL, which makes the process faster and simpler. Also, all changes are saved to localStorage , which was the most practical way I found to persist the data. Window controls (inspired by macOS) I also added window control buttons based on Apple Inc.’s system: 🟥 Red → closes the window 🟨 Yellow → minimizes the window 🟩 Green → expands / toggles full screen Taskbar Now, when a window is opened, the app automatically appears on the taskbar. I haven’t managed to get the icons looking exactly how I wanted yet, so for now, I’ve just displayed the app name with a stylized border to maintain visual organization.
Devlog #8 Added some new stuff to the WebOS. This time I focused more on customization and making the system feel more alive. Now you can change the wallpaper and the taskbar color, which makes everything feel a bit more personal. I also added a functional chatbot (super basic for now lol), but it already works and can handle some simple commands. Current Apps Welcome - A simple app with some basic info about the project. Cat Viewer - Shows random cat pictures because every OS needs cats. NASA Viewer - Displays space-related images and information. MiniTube - A mini YouTube-like app inside the WebOS. Pomodoro - A productivity app with a timer to help focus. Start Menu I also added the Start button, basically inspired by the Windows key/start menu idea. When clicked, it opens a little menu with quick access to apps and system options: Help - Works like a mini documentation page for the WebOS. I made it with a sidebar-style layout, kinda like docs websites. Settings - Lets you change the wallpaper and taskbar color. Shutdown - Simulates shutting down the PC by turning the screen black and showing “Shutting down…” . Taskbar Improvements Now when an app is opened, its icon shows up in the taskbar. Overall, that’s pretty much what I worked on in this update.
DevLog #9 Apenas correções de bugs e pequenos ajustes.
DevLog #9 Today I finished the help section for My Own WebOS. I added documentation pages for all system applications, simply explaining what each one does and how to use it.
DevLog #10 Writing code… that’s about it. I decided to rewrite the WebOS from scratch and completely change its style. There isn’t much to show yet, but I hope the result will be worth it.
DevLog #11 I’m thinking about using Svelte to rewrite my entire WebOS simulator. I believe it will make the code much more organized, simplify maintenance, and speed up development compared to the current project.
DevLog #12 Just testing a few things out. Basically, Svelte is very easy to understand, especially compared to the vanilla JavaScript I was using before. But there are quite a few things that are different.
Ships:
I created a webpage that simulates an operating system, all in a very simple way. It has 3 apps: a welcome app that simulates a notepad, a cat viewer that shows random cats, and one that shows cool facts about space. The app windows can be moved. The most challenging part was making things up, haha, because I didn’t know anything about JavaScript. I usually use Python for everything, and JavaScript is nothing like Python. I’m very proud of my cat app (who doesn’t like cats???). It’s also very difficult to make the site look good. I’m not very good at web design, so the site’s appearance is kind of poor, haha, mainly because CSS is very annoying. Overall, it’s been a really cool project to do.
My Own WebOS For this project, I updated my WebOS by adding new applications and various features. First, I made some improvements to the NASA Viewer. It now displays more information about the “Image of the Day” and is free of the bugs it had before. Next, I created MiniTube, an app that uses the YouTube API to search for and watch videos directly within the WebOS. I also built a Pomodoro app to help manage study and break times. Another addition was a chatbot. While it currently only responds to simple questions and commands, I really enjoyed building it. I had previously created something similar in Python, so I adapted that same logic for JavaScript. I also added a Start button, which functions just like the Windows key; it opens a menu containing the list of applications and some settings. In the settings, users can now change the wallpaper and the taskbar color. These changes are saved using LocalStorage, so they persist even after closing the browser. Finally, I created a Help menu that serves as documentation for the WebOS, explaining what each app does and how to use them. Fixing bugs was the most challenging part, as several issues popped up during development. Even so, the chatbot was the feature I enjoyed building the most. You can try out the project here: https://hallow303.github.io/MyownWebOS/...
|
1793091008.5220063
|
1793177408.5220063
|
|
13808
|
My very own WebOS by @mohitkrr2557 | Stardance
|
mohitkrr2557
|
2
|
205.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T23:55:17Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Cyber OS is a fully client-side, browser-based desktop OS simulation — built from scratch in vanilla HTML, CSS, and JavaScript, with zero frameworks, zero backend, and zero build step. It boots like a real machine: a login screen with custom profiles and emoji avatars, then a working desktop with draggable/resizable windows, a taskbar (search, start menu, system tray, flyouts for network/battery/volume), alt-tab switching, and snap layouts. Underneath that shell is a real virtual file system — files are persistent node objects you can actually create, open, edit, rename, and delete through File Explorer, not just decorative icons — plus a full app suite (Notepad, Calculator, To-Do, AI Chat, three different terminal shells, Paint, Media Player, Snipping Tool) and a Gaming Hub with 8 playable arcade games and persistent high scores. The newest piece, Brave, is a working in-OS browser: type any URL and it renders the live page, with real back/forward history and a clean fallback for sites that block embedding. The hardest part wasn’t any single feature — it was making the OS hold up under real use instead of just looking right in a screenshot. The file system needed an actual state machine: every file had to round-trip correctly through open → edit → save → delete → restore-from-recycle-bin without corrupting other files or colliding on names, all serialized into per-user local storage. Getting the animations to feel native took its own full pass — swapping synchronous style writes on every mouse move for transform updates inside the animation frame loop, and replacing scattered ad hoc transition values with one shared eased curve so windows, menus, and flyouts all move consistently instead of half snapping and half easing. Brave was its own rabbit hole — handling X-Frame-Options and CSP headers that block embedding without the iframe just going silently blank took a lot of trial and error to land on a clean “open in a new tab” fallback instead of a broken-looking pane. I’m proud that this stopped being a mock-up somewhere around the file system rewrite. Most “fake OS” projects let you click icons that don’t actually do anything; Cyber OS persists real state — files, sessions, high scores, notes, to-do items — all of it survives a refresh because it’s genuinely saved, not just rendered. ~205 hours across four devlogs went into getting from a static desktop image to something that behaves like a real, if small, operating system. Try it live, no install needed: https://mohitkrr2557.github.io/CyberOS/ . Sign in with any username — it spins up a fresh local profile — then open File Explorer and actually create, edit, and delete a file; drop into Space Notepad or the To-Do app and refresh to watch your state survive; launch a couple of games from the Gaming Hub; and try Brave with a real URL to see the live in-OS browser. Everything is stored locally to your own browser profile, so nothing you do will affect anyone else testing it.", "repo": "https://github.com/Mohitkrr2557/CyberOS", "demo": "https://mohitkrr2557.github.io/CyberOS/"}, {"ship_num": 2, "ts": "2026-06-27T14:30:14Z", "hours": 205.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Cyber OS — a browser-based desktop operating system simulation, built from scratch in vanilla HTML/CSS/JS with zero frameworks and no backend. Boot in as a Space Cadet, and you get a full desktop: draggable/resizable windows, a taskbar with live search, a start menu, alt-tab switching, and snap layouts — plus a real virtual file system where you can actually create, open, edit, and delete files (not just decorative icons). It comes loaded with built-in apps (Notepad, Calculator, To-Do, AI Chat, Terminal/PowerShell/Ubuntu shells, Paint, Media Player, Snipping Tool) and a Gaming Hub with 8 playable arcade games — Snake, 2048, Minesweeper, Blackjack, Pac-Man, and more — each with persistent high scores. Everything — user sessions, files, game scores — persists locally per profile, so it survives a refresh and feels like an actual OS rather than a mock-up. ~200 hours in so far, most recently spent building out the real file engine and smoothing every window/drag animation so it doesn’t feel laggy under real use. Built with: HTML5, CSS3 (custom theming engine), vanilla JavaScript, html2canvas.", "repo": "https://github.com/Mohitkrr2557/CyberOS", "demo": "https://mohitkrr2557.github.io/CyberOS/"}]...
|
[{"post_id": 17261, "ts": "202 [{"post_id": 17261, "ts": "2026-06-27T23:51:27Z", "hours": 0.2633, "text": "Today’s update closes one of the biggest gaps in Cyber OS’s in-browser experience: Brave is no longer a static prop showing a handful of hardcoded mock pages — type literally any URL into the address bar and it now resolves to a real page rendered live inside the browser window, with a proper loading state in the tab while it fetches and a working back/forward history stack once it’s in. Sites that refuse to be embedded (anything sending X-Frame-Options or a frame-ancestors CSP header) now fail gracefully into a clear “this site won’t load here — open it in a new tab” message instead of the silent blank pane the old build used to choke on. It sounds like a small change on paper, but it’s the difference between Brave being decoration on the desktop and an actual working browser — you can search, click through, and browse the real web without ever leaving the simulated OS."}, {"post_id": 16924, "ts": "2026-06-27T14:16:40Z", "hours": 162.6578, "text": "Cyber OS v2.1 Devlog: After roughly 150 hours since the last milestone, Cyber OS has moved from “looks like a desktop” to “behaves like one.” Where the previous release solved identity, session persistence, and the visual shell, this cycle was almost entirely focused on giving the file layer real teeth and giving the entire interaction surface a pass for latency, jank, and visual inconsistency. The result is a build that no longer just simulates file management and motion — it actually performs both. The single biggest structural addition is a genuine virtual file system sitting underneath File Explorer, replacing what was previously a static icon list with no backing state. Every file is now a real node object — name, type, parent-directory reference, content payload, and a last-modified timestamp — serialized directly into the user’s persistent profile store instead of hardcoded into the DOM. Opening a file resolves its type against an app-association table and routes the payload into the correct handler, so text-type nodes stream straight into Space Notepad’s editable surface with two-way binding: in-app edits write back to the node’s content field on a debounced save cycle rather than firing a disk write on every keystroke. Deletion no longer just yanks a DOM element; it stages the node into a true Recycle Bin queue with restore and permanent-purge paths, and renaming is now an in-place editable operation with collision checks against sibling nodes so a file can’t silently clobber another with the same name. None of this existed before — files were effectively props with no underlying state machine. Now they’re a small but real persistence layer with actual create, open, edit, and delete semantics behind it. On the visual side, the focus was smoothing every interaction that previously felt jarring or laggy under real use. Window open, close, and minimize transitions were rebuilt around a single eased transform-and-opacity curve instead of mismatched linear defaults, so windows scale and fade consistently rather than snapping into place. Drag and resize logic was rewritten to update transforms through the animation frame loop instead of writing styles synchronously on every pointer move, which cut visible stutter substantially on larger windows. Hover, focus, and active states across buttons, taskbar icons, and context menu items now pull from one shared elevation and shadow scale instead of ad hoc values scattered across components built at different times, so the desktop finally reads as one coherent surface instead of a patchwork of UI built in different sessions. Scrollbars, focus rings, and context menu animations were rebuilt to match the neon/glass aesthetic instead of falling back to browser defaults — one of the more obvious “unfinished” tells before, now gone. Underneath the visible layer, a meaningful share of those 150 hours went into cleanup nobody sees directly but that the whole experience depends on: debouncing the autosave scrapers so they stop thrashing local storage on every keystroke, validating file payloads before they ever reach the profile serializer so a malformed or oversized entry can’t corrupt a session, and trimming redundant reflows that were firing every time a window gained focus or a flyout opened. None of it shows up in a screenshot, but it’s the difference between an OS that feels responsive under sustained use and one that only feels responsive in a thirty-second demo. Taken together, the file engine and the motion pass were the two threads tying this update together — files now persist and behave like real file management instead of a mock-up, and the chrome around them finally moves the way a native desktop would. Next up: drag-and-drop file moves between folders, and carrying this same eased-transform approach into the snap-layout and alt-tab overlays, which still run on the older, snappier logic and now visibly lag behind everything else."}, {"post_id": 6576, "ts": "2026-06-11T01:33:05Z", "hours": 30.7583, "text": "I have officially completed a massive architectural refactor of Cyber OS v2.0, transforming a simple frontend mock-up into a highly interactive, stateful, and secure multi-user desktop simulation environment. This milestone release successfully bridges a secure boot kernel, an encrypted local file engine, and a fully reactive visual compositing layer. The core JS script now treats user sessions as persistent sandbox environments by running a secure boot cycle tied to browser local storage and custom profile serialization. To make the OS feel truly functional, I engineered automated data scrapers that continuously track and save a user’s local application modifications, including text inside the Space Notepad, active items within the Todo list, and chat logs inside the AI interface. These sessions are mapped directly to the authorized user’s profile and fully restored upon login, while strict kernel state flags manage layout depth and window minimizing queues. Visually, the entire desktop environment has been upgraded to a hardware-accelerated layout pipeline powered by a modular CSS variable architecture. This decoupled theme system allows the entire UI to instantly toggle between a neon terminal space and a sleek light mode theme through a single class injection. The styling rules supply high-fidelity interactive state vectors for active running applications, introducing translucent container overlays, distinct border changes, and neon glow vectors for active or minimized windows. Finally, the HTML scaffolding has been expanded to support modern desktop components, introducing a custom profile customizer on the boot screen and an advanced taskbar system. This taskbar hosts an active search utility, application launcher shortcuts, a terminal clock, and a hardware simulation tray complete with placeholder nodes for network, battery, and notification toggles. The system markup is fully optimized with hidden containment hooks, perfectly primed to anchor background canvas animation loops and edge-drag window snapping logic next. I am going to continue advancing this OS to reach a windows desktop experties!"}, {"post_id": 5780, "ts": "2026-06-09T18:10:25Z", "hours": 12.0811, "text": "Project Update: Cyber OS I’m stoked to share the progress on my custom WebOS! I’ve built a futuristic, space-themed desktop environment from scratch using pure HTML, CSS, and JavaScript, designed to feel like a high-performance digital cockpit running in the heart of a nebula. I’ve engineered a custom window manager that handles dragging, closing, and dynamic z-index layering. This is paired with a built-in utility suite featuring a Space Notepad for captain’s logs, a dynamic Star-Date Calendar, and a functional Todo list for managing station operations. Looking ahead, I’m preparing to launch a Wallpaper Engine for custom cosmic backgrounds and an AI Navigator Chatbot with a terminal-style interface. Can’t wait to see this OS fully powered up!"}]...
|
Title: My very own WebOS by @mohitkrr2557 | Starda Title: My very own WebOS by @mohitkrr2557 | Stardance
Devlogs:
Project Update: Cyber OS I’m stoked to share the progress on my custom WebOS! I’ve built a futuristic, space-themed desktop environment from scratch using pure HTML, CSS, and JavaScript, designed to feel like a high-performance digital cockpit running in the heart of a nebula. I’ve engineered a custom window manager that handles dragging, closing, and dynamic z-index layering. This is paired with a built-in utility suite featuring a Space Notepad for captain’s logs, a dynamic Star-Date Calendar, and a functional Todo list for managing station operations. Looking ahead, I’m preparing to launch a Wallpaper Engine for custom cosmic backgrounds and an AI Navigator Chatbot with a terminal-style interface. Can’t wait to see this OS fully powered up!
I have officially completed a massive architectural refactor of Cyber OS v2.0, transforming a simple frontend mock-up into a highly interactive, stateful, and secure multi-user desktop simulation environment. This milestone release successfully bridges a secure boot kernel, an encrypted local file engine, and a fully reactive visual compositing layer. The core JS script now treats user sessions as persistent sandbox environments by running a secure boot cycle tied to browser local storage and custom profile serialization. To make the OS feel truly functional, I engineered automated data scrapers that continuously track and save a user’s local application modifications, including text inside the Space Notepad, active items within the Todo list, and chat logs inside the AI interface. These sessions are mapped directly to the authorized user’s profile and fully restored upon login, while strict kernel state flags manage layout depth and window minimizing queues. Visually, the entire desktop environment has been upgraded to a hardware-accelerated layout pipeline powered by a modular CSS variable architecture. This decoupled theme system allows the entire UI to instantly toggle between a neon terminal space and a sleek light mode theme through a single class injection. The styling rules supply high-fidelity interactive state vectors for active running applications, introducing translucent container overlays, distinct border changes, and neon glow vectors for active or minimized windows. Finally, the HTML scaffolding has been expanded to support modern desktop components, introducing a custom profile customizer on the boot screen and an advanced taskbar system. This taskbar hosts an active search utility, application launcher shortcuts, a terminal clock, and a hardware simulation tray complete with placeholder nodes for network, battery, and notification toggles. The system markup is fully optimized with hidden containment hooks, perfectly primed to anchor background canvas animation loops and edge-drag window snapping logic next. I am going to continue advancing this OS to reach a windows desktop experties!
Cyber OS v2.1 Devlog: After roughly 150 hours since the last milestone, Cyber OS has moved from “looks like a desktop” to “behaves like one.” Where the previous release solved identity, session persistence, and the visual shell, this cycle was almost entirely focused on giving the file layer real teeth and giving the entire interaction surface a pass for latency, jank, and visual inconsistency. The result is a build that no longer just simulates file management and motion — it actually performs both. The single biggest structural addition is a genuine virtual file system sitting underneath File Explorer, replacing what was previously a static icon list with no backing state. Every file is now a real node object — name, type, parent-directory reference, content payload, and a last-modified timestamp — serialized directly into the user’s persistent profile store instead of hardcoded into the DOM. Opening a file resolves its type against an app-association table and routes the payload into the correct handler, so text-type nodes stream straight into Space Notepad’s editable surface with two-way binding: in-app edits write back to the node’s content field on a debounced save cycle rather than firing a disk write on every keystroke. Deletion no longer just yanks a DOM element; it stages the node into a true Recycle Bin queue with restore and permanent-purge paths, and renaming is now an in-place editable operation with collision checks against sibling nodes so a file can’t silently clobber another with the same name. None of this existed before — files were effectively props with no underlying state machine. Now they’re a small but real persistence layer with actual create, open, edit, and delete semantics behind it. On the visual side, the focus was smoothing every interaction that previously felt jarring or laggy under real use. Window open, close, and minimize transitions were rebuilt around a single eased transform-and-opacity curve instead of mismatched linear defaults, so windows scale and fade consistently rather than snapping into place. Drag and resize logic was rewritten to update transforms through the animation frame loop instead of writing styles synchronously on every pointer move, which cut visible stutter substantially on larger windows. Hover, focus, and active states across buttons, taskbar icons, and context menu items now pull from one shared elevation and shadow scale instead of ad hoc values scattered across components built at different times, so the desktop finally reads as one coherent surface instead of a patchwork of UI built in different sessions. Scrollbars, focus rings, and context menu animations were rebuilt to match the neon/glass aesthetic instead of falling back to browser defaults — one of the more obvious “unfinished” tells before, now gone. Underneath the visible layer, a meaningful share of those 150 hours went into cleanup nobody sees directly but that the whole experience depends on: debouncing the autosave scrapers so they stop thrashing local storage on every keystroke, validating file payloads before they ever reach the profile serializer so a malformed or oversized entry can’t corrupt a session, and trimming redundant reflows that were firing every time a window gained focus or a flyout opened. None of it shows up in a screenshot, but it’s the difference between an OS that feels responsive under sustained use and one that only feels responsive in a thirty-second demo. Taken together, the file engine and the motion pass were the two threads tying this update together — files now persist and behave like real file management instead of a mock-up, and the chrome around them finally moves the way a native desktop would. Next up: drag-and-drop file moves between folders, and carrying this same eased-transform approach into the snap-layout and alt-tab overlays, which still run on the older, snappier logic and now visibly lag behind everything else.
Today’s update closes one of the biggest gaps in Cyber OS’s in-browser experience: Brave is no longer a static prop showing a handful of hardcoded mock pages — type literally any URL into the address bar and it now resolves to a real page rendered live inside the browser window, with a proper loading state in the tab while it fetches and a working back/forward history stack once it’s in. Sites that refuse to be embedded (anything sending X-Frame-Options or a frame-ancestors CSP header) now fail gracefully into a clear “this site won’t load here — open it in a new tab” message instead of the silent blank pane the old build used to choke on. It sounds like a small change on paper, but it’s the difference between Brave being decoration on the desktop and an actual working browser — you can search, click through, and browse the real web without ever leaving the simulated OS.
Ships:
Cyber OS — a browser-based desktop operating system simulation, built from scratch in vanilla HTML/CSS/JS with zero frameworks and no backend. Boot in as a Space Cadet, and you get a full desktop: draggable/resizable windows, a taskbar with live search, a start menu, alt-tab switching, and snap layouts — plus a real virtual file system where you can actually create, open, edit, and delete files (not just decorative icons). It comes loaded with built-in apps (Notepad, Calculator, To-Do, AI Chat, Terminal/PowerShell/Ubuntu shells, Paint, Media Player, Snipping Tool) and a Gaming Hub with 8 playable arcade games — Snake, 2048, Minesweeper, Blackjack, Pac-Man, and more — each with persistent high scores. Everything — user sessions, files, game scores — persists locally per profile, so it survives a refresh and feels like an actual OS rather than a mock-up. ~200 hours in so far, most recently spent building out the real file engine and smoothing every window/drag animation so it doesn’t feel laggy under real use. Built with: HTML5, CSS3 (custom theming engine), vanilla JavaScript, html2canvas.
Cyber OS is a fully client-side, browser-based desktop OS simulation — built from scratch in vanilla HTML, CSS, and JavaScript, with zero frameworks, zero backend, and zero build step. It boots like a real machine: a login screen with custom profiles and emoji avatars, then a working desktop with draggable/resizable windows, a taskbar (search, start menu, system tray, flyouts for network/battery/volume), alt-tab switching, and snap layouts. Underneath that shell is a real virtual file system — files are persistent node objects you can actually create, open, edit, rename, and delete through File Explorer, not just decorative icons — plus a full app suite (Notepad, Calculator, To-Do, AI Chat, three different terminal shells, Paint, Media Player, Snipping Tool) and a Gaming Hub with 8 playable arcade games and persistent high scores. The newest piece, Brave, is a working in-OS browser: type any URL and it renders the live page, with real back/forward history and a clean fallback for sites that block embedding. The hardest part wasn’t any single feature — it was making the OS hold up under real use instead of just looking right in a screenshot. The file system needed an actual state machine: every file had to round-trip correctly through open → edit → save → delete → restore-from-recycle-bin without corrupting other files or colliding on names, all serialized into per-user local storage. Getting the animations to feel native took its own full pass — swapping synchronous style writes on every mouse move for transform updates inside the animation frame loop, and replacing scattered ad hoc transition values with one shared eased curve so windows, menus, and flyouts all move consistently instead of half snapping and half easing. Brave was its own rabbit hole — handling X-Frame-Options and CSP headers that block embedding without the iframe just going silently blank took a lot of trial and error to land on a clean “open in a new tab” fallback instead of a broken-looking pane. I’m proud that this stopped being a mock-up somewhere around the file system rewrite. Most “fake OS” projects let you click icons that don’t actually do anything; Cyber OS persists real state — files, sessions, high scores, notes, to-do items — all of it survives a refresh because it’s genuinely saved, not just rendered. ~205 hours across four devlogs went into getting from a static desktop image to something that behaves like a real, if small, operating system. Try it live, no install needed: https://mohitkrr2557.github.io/CyberOS/ . Sign in with any username — it spins up a fresh local profile — then open File Explorer and actually create, edit, and delete a file; drop into Space Notepad or the To-Do app and refresh to watch your state survive; launch a couple of games from the Gaming Hub; and try Brave with a real URL to see the live in-OS browser. Everything is stored locally to your own browser profile, so nothing you do will affect anyone else testing it....
|
1793066108.2494466
|
1793152508.2494466
|
|
13957
|
bbnOS by @not-willem | Stardance
|
not-willem
|
2
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T03:55:06Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an os called bbnOS because i can but it works pretty good and has draggable windows, a web browser and a terminal and you can upload single-file htmls yay", "repo": "https://github.com/not-willem/bbnOS", "demo": "https://not-willem.github.io/bbnOS/"}, {"ship_num": 2, "ts": "2026-06-22T01:08:47Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made bbnOS which is a pretty cool OS. also btw there are NOT draggable windows but I’ve built the UI to work around it and definitely not because I’m lazy lol Anyway I’ve implemented a terminal which SHOULD work but sometimes the curl command doesn’t but the rest is fine. Also you can install single file HTMLs from the personalization app so you can run some cool stuff on there. I’ve added the time and other things to and made it very visually appealing in general. Hope you’ll like it!", "repo": "https://github.com/not-willem/bbnOS", "demo": "https://not-willem.github.io/bbnOS/"}]...
|
[{"post_id": 16690, "ts": "202 [{"post_id": 16690, "ts": "2026-06-27T03:53:21Z", "hours": 0.8775, "text": "added draggable windows! now it is cooler"}, {"post_id": 7878, "ts": "2026-06-13T04:36:51Z", "hours": 2.1714, "text": "ok yay i think i’ve finished. so i added personalization where you can add apps and ive also added a way to change the background. currently theres no way to remove apps but i really cant be bothered to figure it out so you cant save apps either. maybe a little more coding would fix that but im just gonna stop instead of perfecting it too much. anyway you can check it out at https://github.com/not-willem/bbnOS have a good day!"}, {"post_id": 6674, "ts": "2026-06-11T05:40:57Z", "hours": 3.5769, "text": "Added ALOT to bbnOS but heres just a general description of it so far: bbnOS is a HTML based HTML “operating system” with features like a web browser and a terminal and much more to come ive gotten the web browser to work which right now is just https://flipgrid.cf/ and the terminal but im yet to actually make things close and scale around and drag around and fullscreen and minimise etc… hope everyone has a good day today!"}, {"post_id": 6005, "ts": "2026-06-10T02:09:20Z", "hours": 0.5975, "text": "lol bbnOS is looking actually fire"}, {"post_id": 5455, "ts": "2026-06-09T07:45:39Z", "hours": 0.6497, "text": "bbnOS"}]...
|
Title: bbnOS by @not-willem | Stardance
Devlogs:
Title: bbnOS by @not-willem | Stardance
Devlogs:
bbnOS
lol bbnOS is looking actually fire
Added ALOT to bbnOS but heres just a general description of it so far: bbnOS is a HTML based HTML “operating system” with features like a web browser and a terminal and much more to come ive gotten the web browser to work which right now is just https://flipgrid.cf/ and the terminal but im yet to actually make things close and scale around and drag around and fullscreen and minimise etc… hope everyone has a good day today!
ok yay i think i’ve finished. so i added personalization where you can add apps and ive also added a way to change the background. currently theres no way to remove apps but i really cant be bothered to figure it out so you cant save apps either. maybe a little more coding would fix that but im just gonna stop instead of perfecting it too much. anyway you can check it out at https://github.com/not-willem/bbnOS have a good day!
added draggable windows! now it is cooler
Ships:
I made bbnOS which is a pretty cool OS. also btw there are NOT draggable windows but I’ve built the UI to work around it and definitely not because I’m lazy lol Anyway I’ve implemented a terminal which SHOULD work but sometimes the curl command doesn’t but the rest is fine. Also you can install single file HTMLs from the personalization app so you can run some cool stuff on there. I’ve added the time and other things to and made it very visually appealing in general. Hope you’ll like it!
I made an os called bbnOS because i can but it works pretty good and has draggable windows, a web browser and a terminal and you can upload single-file htmls yay...
|
1792994193.7374763
|
1793080593.7374763
|
|
14014
|
My very own WebOS by @Churu | Stardance
|
Churu
|
2
|
5.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-10T08:59:02Z", "hours": 1.0, "multiplier": 1.45, "payout": 2, "blessing": "neutral", "text": "I built my first WebOS using some knowledge myself and also learning through the guide provided by HackClub. This is a WebOS that has helpful features like Weather and Todo list makers to keep u aware of your tasks. I First made a loading screen which is very easy to make all it needed was to use some HTML to make the loading screen appear and then all it needed was basic CSS for it cover the whole screen to give it a very cool effect and then i js took some help with javascript to make the bar load, also Made the whole inside as in the images below i have shown that all the apps i made via javascript are shown i used wttr API via wttr.in for weather broadcast and the thing is it does not require any API key and is totally free and works pretty good i mean it does sometimes show random weather but yeah it is a very good API that can be used. and For the images i js kept a web theme and a kind of a spiderman theme cuz it looks cool like that. Also I added a working terminal which currently has 4 commands but as its my first project hope its prettyu cool for my first project.", "repo": "https://github.com/jasersans1-create/CobWebOS", "demo": "https://cob-web-os.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-02T16:45:52Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built my first WebOS using some knowledge myself and also learning through the guide provided by HackClub. This is a WebOS that has helpful features like Weather and Todo list makers to keep u aware of your tasks. I First made a loading screen which is very easy to make all it needed was to use some HTML to make the loading screen appear and then all it needed was basic CSS for it cover the whole screen to give it a very cool effect and then i js took some help with javascript to make the bar load, also Made the whole inside as in the images below i have shown that all the apps i made via javascript are shown i used wttr API via wttr.in for weather broadcast and the thing is it does not require any API key and is totally free and works pretty good i mean it does sometimes show random weather but yeah it is a very good API that can be used. and For the images i js kept a web theme and a kind of a spiderman theme cuz it looks cool like that.", "repo": "https://github.com/jasersans1-create/CobWebOS", "demo": "https://cob-web-os.vercel.app/"}]...
|
[{"post_id": 25815, "ts": "202 [{"post_id": 25815, "ts": "2026-07-10T08:49:27Z", "hours": 0.4764, "text": "FINALLY FIXED EVERYTHING AND THANKS TO GOD MY TERMINALLL IS WORKING PROPERLY!!!! I currently only added 4 commands to it but i find it pretty cool for my first WebOS. Thankfully i hope i get reviewed good :)))"}, {"post_id": 25797, "ts": "2026-07-10T08:19:38Z", "hours": 0.9086, "text": "Tried adding a terminal application inside my WebOS with commands but accidentally ran into an error that restricts my Application opening, i.e i might have forgot to define div id properly , will fix it soon enough and come up with the terminal feature that works properly and name defined as “root@churu” want to give it the linux vibes yk."}, {"post_id": 20873, "ts": "2026-07-02T16:22:01Z", "hours": 3.8581, "text": "I First made a loading screen which is very easy to make all it needed was to use some HTML to make the loading screen appear and then all it needed was basic CSS for it cover the whole screen to give it a very cool effect and then i js took some help with javascript to make the bar load, also Made the whole inside as in the images below i have shown that all the apps i made via javascript are shown i used wttr API via wttr.in for weather broadcast and the thing is it does not require any API key and is totally free and works pretty good i mean it does sometimes show random weather but yeah it is a very good API that can be used. and For the images i js kept a web theme and a kind of a spiderman theme cuz it looks cool like that."}]...
|
Title: My very own WebOS by @Churu | Stardance
De Title: My very own WebOS by @Churu | Stardance
Devlogs:
I First made a loading screen which is very easy to make all it needed was to use some HTML to make the loading screen appear and then all it needed was basic CSS for it cover the whole screen to give it a very cool effect and then i js took some help with javascript to make the bar load, also Made the whole inside as in the images below i have shown that all the apps i made via javascript are shown i used wttr API via wttr.in for weather broadcast and the thing is it does not require any API key and is totally free and works pretty good i mean it does sometimes show random weather but yeah it is a very good API that can be used. and For the images i js kept a web theme and a kind of a spiderman theme cuz it looks cool like that.
Tried adding a terminal application inside my WebOS with commands but accidentally ran into an error that restricts my Application opening, i.e i might have forgot to define div id properly , will fix it soon enough and come up with the terminal feature that works properly and name defined as “root@churu” want to give it the linux vibes yk.
FINALLY FIXED EVERYTHING AND THANKS TO GOD MY TERMINALLL IS WORKING PROPERLY!!!! I currently only added 4 commands to it but i find it pretty cool for my first WebOS. Thankfully i hope i get reviewed good :)))
Ships:
I built my first WebOS using some knowledge myself and also learning through the guide provided by HackClub. This is a WebOS that has helpful features like Weather and Todo list makers to keep u aware of your tasks. I First made a loading screen which is very easy to make all it needed was to use some HTML to make the loading screen appear and then all it needed was basic CSS for it cover the whole screen to give it a very cool effect and then i js took some help with javascript to make the bar load, also Made the whole inside as in the images below i have shown that all the apps i made via javascript are shown i used wttr API via wttr.in for weather broadcast and the thing is it does not require any API key and is totally free and works pretty good i mean it does sometimes show random weather but yeah it is a very good API that can be used. and For the images i js kept a web theme and a kind of a spiderman theme cuz it looks cool like that.
I built my first WebOS using some knowledge myself and also learning through the guide provided by HackClub. This is a WebOS that has helpful features like Weather and Todo list makers to keep u aware of your tasks. I First made a loading screen which is very easy to make all it needed was to use some HTML to make the loading screen appear and then all it needed was basic CSS for it cover the whole screen to give it a very cool effect and then i js took some help with javascript to make the bar load, also Made the whole inside as in the images below i have shown that all the apps i made via javascript are shown i used wttr API via wttr.in for weather broadcast and the thing is it does not require any API key and is totally free and works pretty good i mean it does sometimes show random weather but yeah it is a very good API that can be used. and For the images i js kept a web theme and a kind of a spiderman theme cuz it looks cool like that. Also I added a working terminal which currently has 4 commands but as its my first project hope its prettyu cool for my first project....
|
1792878472.7196681
|
1793742472.7196681
|
|
14066
|
Janitor Space Program (J.S.P.) by @aloyak | Starda Janitor Space Program (J.S.P.) by @aloyak | Stardance...
|
aloyak
|
2
|
160.0
|
3078
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T13:40:57Z", "hours": 55.0, "multiplier": 18.95, "payout": 1041, "blessing": "neutral", "text": "This is my 3D exploration-sandbox game that I built with my custom game engine! I’ve added quite a lot of stuff like a simple exploration game mode that allows you to move around a hand-crafted solar system i called “Halcyon”. there are also a lot of other game modes you can try and have fun with before I finally add the campaign game mode for the final version! In the picture you can see an in-game screenshot of the player walking around the surface of the earth-like planet “Gaia”, hope you like my game! With <3, 4loyak!", "repo": "https://github.com/aloyak/jsp", "demo": "https://aloyak.itch.io/jsp"}, {"ship_num": 2, "ts": "2026-07-16T13:34:38Z", "hours": 105.0, "multiplier": 19.52, "payout": 2037, "blessing": "neutral", "text": "This is my 3D game about space exploration and kessler cascades, it has a campaign mode coming up but i havent finished that yet, for now enjoy the 3 game modes! i built this on top of my custom engine so its been a lot of hard work, please try it out!!!!", "repo": "https://github.com/aloyak/jsp", "demo": "https://aloyak.itch.io/jsp"}]...
|
[{"post_id": 48889, "ts": "202 [{"post_id": 48889, "ts": "2026-08-17T13:35:52Z", "hours": 3.9133, "text": "JSP! I’m back! and I finally have a new decent version that im probably gonna ship shortly after I publish this devlog. Its been so long since the last devlog because a number of factors, I had some vacations, my main pc is now just a steam deck connected to a monitor and also I’m kind of struggling to continue this project, I hope this isnt the last version but working on the project and adding or fixing things is very complicated and requires a lot of research to do it right, and it is exhausting What was added?? Included the new planet models to the halcyon system, you can now correctly explore them by using the new terrain system I added to the engine! Added some small help windows/hints for the new stuff before shipping! Fixed some audio bugs and added a sound effect for when you close a window Fixed the in-helmet HUD UI, the input vectors now correctly show the direction the thrust is being applied to, kinda like in Outer Wilds!! I’m most likely to be focusing on continuing the engine for a little bit, it really really does require some refactoring and I also need to clean some likely dead code or at least re-understand the code i wrote as it has lines from almost a 10 months ago! Hopefully someone could help and contribute to the project maybe or make something new out of it too! Im still planing on continuing to develop it but not at this pace considering im about to start college :))"}, {"post_id": 41224, "ts": "2026-08-05T09:35:20Z", "hours": 6.8169, "text": "J.S.P. Very exciting changes to the exploration mode yay !! I’ve been working on precisely TWO (2) things but one of them is way too early for me to be able to show you anything, more on that in the end Whats new? I’ve create a custom blender addon that lets me create procedural noise-based planets! It is really powerful and it gets you really good results for how simple it is really. In a way, its nothing but a vertex shader but coded in python lol It generates 3D spherical noise and applies it into an icosphere with a variety of parameters. Some of them arent precisely working but they are fine for now (specially the “ridged” option) You can try it yourself, its open source too! https://github.com/aloyak/JSP/blob/main/assets_src/blender/addons/planet_generator.py Terrain System I’m developing a way for the player to correctly collide with the geometry of these planets, but this is mostly engine-sided changes and I’m not very deep into it yet. I’m currently researching how to handle multi-threading async functions… more information about this in my latest engine’s devlog: https://stardance.hackclub.com/projects/1029/devlogs/34738 Known issues These are not really important right now, but for some reason I’ve realized that the splash screen takes different amounts of time depending on where you run the game?? what? A steam deck is around 3 seconds, my computer (the intended duration) is 4 seconds and in a friend’s laptop it is ~0.5 seconds"}, {"post_id": 39548, "ts": "2026-08-02T15:55:39Z", "hours": 7.1231, "text": "JSP We are SO back! I thought it would take me weeks to solve this issue but it wasnt that hard, thanks claude lol for helping. It’s not perfect just yet but its honestly crazy how my own engine managed to handle what im about to explain What took soo long The game now handles a transition from a global physics world to a new extra physics world that lives locally when the player enters a new planet (the origin of the new physics world would be the planet’s center), this means that you can perfectly walk on the surface of all the planets while they move around in the orbits without any weird behaviors This took a good amount of engine refactoring and a few changes to some systems (specially the floating origin) I need to fix a couple things like the drag when you are entering a planet, but that should be handled later on when you actually use a spaceship to enter and not just yourself with your spacesuit Other stuff that is cool Added a helmet overlay! (very inspired by outer wilds, id like some suggestions to make it more original honestly, but right now it decent). It is currently work in progress tho, and theres a lot of information missing… Small UI improvements: rounded borders, removed window’s transparency, added window close sound effects (need to find a better one tho), little better controller support… I just this idea to have vehicles but that will take super long, its added to the ideas file but thats certainty not being considered for short term, Any suggestions are welcome tho PD: video is very bad res bc i had to compress it unfortunately"}, {"post_id": 35908, "ts": "2026-07-27T17:18:56Z", "hours": 5.9792, "text": "JSP! I’ve finished porting the game to the new action based input system, its not great yet, theres a lot to polish but at least you can play 80% of the game just as good as with a keyboard/mouse (even better sometimes!) What’s the new input system? The game now asks for “actions” callbacks instead of directly asking for raw input. This new layer in the middle allows to make different devices have their own way to control each actions, so it now supports all the gamepads you probably have: xbox, playstation, steam, nintendo, generic ones too It is almost steam deck ready! Ive been playing this game on my steam deck and it works great! (you can get around 900 fps when unrestricted) Playing the game with a controller plus a little help from the little mouse trackpad really makes this game fun to play (100% coverage with this setup) Now i will finally start doing the boring physics stuff that will hopefully not take so long but idk, we’ll have to see Other stuff that was added Improved a bit the gravity based movement mode, it now adds the atmosphere’s drag gradually depending on its density, being the density higher the closer you are to the surface, this makes entering planets feel better Fixed some messed up formatting style in my code I dont know if start a new project for no more than 2 weeks and then go back, ive been having some cool new ideas but for now ill stick to this project PD: the picture is an old version (0.12.1), latest version with good controller support is 0.14.0"}, {"post_id": 34767, "ts": "2026-07-25T19:07:39Z", "hours": 8.6764, "text": "JSP Omg i need a break! just one more change bro and i will start doing the hard and boring stuff, just one more i swear! This sums up everything ive done for the past few hours, although the new improvements are actually quite important, i feel like im somewhat rushing them instead of focusing on the exploration mode New things!! Simple LOD system for planets, there wasnt a big performance change, but the model swap is very unnoticeable and nice so thats great! Added a simple spoiler warning to the exploration mode, the original idea was that you should unlock it after playing the campaign but i guess its fine lol I FIXED THE DEPTH BUFFER PRECISION ISSUE!!!! it was such a small change omg, i just dynamically changed the near plane of the camera based on how far you are to a planet, pretty nice WIP Work in progress: I’m porting the whole game to the new action-based input system so that the game supports controllers natively without any kind of steam layer on top, this is till very early and i still dont know how to make some stuff be fun to use with a controller…. I finish this, finish the two major things on the exploration mode that are 100% gonna be quick, make some decent amount of content for it, add the custom spaceship controller and launch system, make the first ~5 minutes of the campaign mode, and then SHIP THIS PROJECT (this will surely go as planned) PD: the video u see is completely controlled with my gamepad, not the best controls yet but its better than nothing!"}, {"post_id": 33389, "ts": "2026-07-23T09:24:10Z", "hours": 5.8975, "text": "JSP Worked on so many things before getting started with the complicated stuff, ill tell more about that in the bottom section, but for now, im pretty happy with what ive just added, even tho progress is pretty slow!!! What have i added? Full/complete atmospheric effect , it now not only looks good from outside, now from the inside too!!! Its a small trick but when the camera gets close enough to a planet, its atmosphere’s density scales up making the sky blue like here on earth or greatly improving the sunrises and sunsets , they do look beatiful Added floating origin: double precision was not enough so ive added a system that teleports all the entities in the scene when the player gets too far from the origin, this works surprisingly good and it was very simple to do, hopefully it wont break physics later on, but so far its great! This allows the solar system to go from ~10000 units wide to over ~3000000!! that is great! This was a engine-level change mostly tho You can finally use the planets you discover in the campaign mode in the sandbox mode Dynamic settings!!! I made it so that when you first load into the game, the UI scales to your resolution and your target fps are set to your monitor’s refresh rate, might not look like something important but this is actually HUGE Whats cooking up currently! Need a system to allow the player to be placed on top of moving planets (it currently works but breaks sometimes), and also to allow those planets to rotate. This will be achieved with a completely new physics world that will live localy on the closest planet the player is to Chunked mesh collider system i really dont know how to this, because of the terrain of my planets (TODO), collisions will be complicated to calculate, if you know about anything that could help, please send it!!! PD: I wish i could spend more time actually coding than thinking, if that were to be the case id have 300 hours+ in this project already"}, {"post_id": 32263, "ts": "2026-07-21T10:11:59Z", "hours": 8.1467, "text": "JSP This is one of the most exiting devlogs so far!! I’ve managed to get a very basic “solar system working, not all the time and of course it isnt perfect but it is really cool, heres its lore: (note that planets are placeholders right now, and distances/scale should be a lot bigger in the future) The “Halcyon” System Somewhere very very far from our current home, humanity has managed to establish a multi-planetary life in a new system after traveling for generations in their own space station The Halcyon system is composed of 5 planets (maybe more in the future) that orbit around a massive black hole (it doesnt have a name yet) “Gaia” is the earth-like planet whose own satellite, “Vesta”, is a red dwarf star that provides just enough light and heat in order to live (seen in the demo video) “Ying” and “Yan” (names will probably change), are two tiny planets that follow exact opposite orbits around the black hole, when one of them is at the perihelion, the other ones at the aphelion “Kepler” is a huge rocky planet at the outskirts of the system where small human colonies currently live Note that the campaign will be linear and happen entirely inside this place, but you will also have a “exploration” game mode that will allow you to find and see new secrets hidden… :)) Technical stuff (i.e. what was added) Created the base for the Halcyon System, planets follow a predetermined elliptical orbit in real-time. Note that for debugging, scale is around 10 to 100 times less! Added a simple physics based player controller, this took a lot of engine refactoring too. The player is affected by the gravity of the near planets and, when close enough to a planet’s surface, it is automatically aligned with the gravity vector and its also affected by the atmosphere’s drag (if theres any), this was by far the most difficult thing to do Added a little Free Camera controller as well What will be added in the future This is only the start . Theres still a few complicated things to do: Add double precision and floating origin to solve the problems that will appear when distances become as big as id like them to be Add a chunked collision mesh system for planets with complex geometry, like mountains or things like that. Right now they are all controlled by a simple kinematic sphere collider This system currently breaks the player movement when planets are moving, this is why i set “time scale” to 0. To fix this ive been thinking of creating a local physics world that sets the planet you are on to be the origin of the physics, making it look like if the planet was static, this will by by far what will take the most amount of work probably i also wanna update the atmospheric shader as it is by far the thing worsening the game’s performance, and id like to make the sky fully tint when your inside it PD: Thank you so much for all the people that support/follow this project, it already has 21 followers . thank you, really!"}, {"post_id": 30589, "ts": "2026-07-18T09:11:03Z", "hours": 8.3614, "text": "JSP I want to dedicate this devlog to @Rupnil as he always says that devlogs need to be 3-4 hours max, so i can explain why thats not always possible. Out of the 8 hours i devlog today, around 7.5 of them were spent ONLY debugging ONE SINGLE BUG for 2 whole days. I started losing my mind lmfao the bug: All the built-in and embedded textures became completely broken and ONLY on super specific conditions on certain parts and game modes. But the worst part was that rolling back to a version from days ago DID NOT solve the issue at all . I even considered that my GPU gave up on my and it was just showing gpu artifact slop in my screen the fix: Apparently there was a small bug with gpu memory allocation in the backend of dear imgui (apparently ONLY in the SDL2-OpenGL backend lmfao) and only for the docking branch of the repo. Rolling back to an old dear imgui version from the main branch solved the issue but damn. Ive also reported the issue as much as i could in the official repo. Pretty much, updating the engine to the latest version automatically updated its dependencies and thus leaked the bug to my game Appart from that I’ve spent a little bit on starting to develop the open-universe system where you can travel around planets! More on that in the next devlog probably. I already have though about the planet’s names, positions and stuff! pretty exiting!! PD: In the mean time ive also being updating the engine at the same time to improve the physics system, which is a lot better right now!"}, {"post_id": 29477, "ts": "2026-07-16T13:30:28Z", "hours": 4.3869, "text": "JSP Pre-ship checklist is complete! I’m so ready to ship the first version and start developing the campaign, which is the main thing of this game. I’ve actually started it a little bit, it now has an interior level system completely different to the gamemode system i had for the rest of the game, this is pretty exiting! stuff that ive done before shipping Built the game for windows, took a little bit but performance is 1:1 and everything works perfectly, the only thing was that i had to change the backend of the audio engine to use something else but that was fairly quick! Reduced the size of the game MASSIVELY , it went from around 350MB to ~35MB , thats literally 10 times less!! managed to do this by compressing the audio files, although the change is almost unnoticeable, and also making the engine bake some textures on build time, just like real fancy engines do! Changed a bit the main menu/ campaing mode but for now it is all a placeholder Created a new itch.io banner Made the HELP menu show up by default, i dont really like this but i think its probably the best for people to rate it nicely, wont be in the final version… Added a input mode (another one) to the spaceship building mode that allows you to hover the attachment points and it will tell you with a little popup what category of part can go there If you are rating my project, please ishowspeed i need this now in all fairness i hope people like my game! im not even close to finishing it lol Right after this first ship i will work on updating the engine to support new features that the campaign mode will certainty need 100%, like a working physics engine, ive thought of porting what i currently have to use a new one i found and that is getting very popular called “Box3D”, we’ll see, byeeeeeee"}, {"post_id": 27751, "ts": "2026-07-13T16:07:37Z", "hours": 7.2142, "text": "JSP https://github.com/aloyak/JSP https://aloyak.itch.io/jsp?secret=nkYXIEVo8woJvblBQRYMIrWSFc I feel like im getting very close to a first ever release and finally start with the campaign mode! I finished some polishing stuff and fixed a bit, i dont think the spacecraft builder mode is ready 100% but ill use it in the campaing mode either way so ill have to update it regardless I’ve officially published the github repository where you can check out the huge amount of code this project already has lol. I’ve also created a new itchio page, this is the secret link (for feedback): https://aloyak.itch.io/jsp?secret=nkYXIEVo8woJvblBQRYMIrWSFc added things: Published the github repo and the itchio page! With a lot of new screenshots and art. I’ve also added the source files of the textures (.xfc gimp files, including the itchio banners) as well as the 3D models I’ve made (in blender) which can all be found in the assets_src/ folder Added a way to delete different parts in the spaceship building mode Added a few new parts to the spaceship building mode, refactored the whole system to make it “easier” (not really) to add new parts and things Added a full README + LICENSE to the repo Added a new shader , it is the small fog that you see in the vide when building a spaceship in order to hide the lack of detail in the exterior, the shader fades out the more you look up so you can see the beautiful skybox Added load/saving to the spacecraft building game mode, you can now save your ship’s to load them later just like with planets and sandboxes Fix some memory management problems where i forgot to delete some pointers => no memory leaks or crashes! I dont think this will be the last devlog before the first ship, but maybe, who knows right? Looking forward to you all trying my game! (the part that is done) PD: 100 hours"}, {"post_id": 25218, "ts": "2026-07-09T10:34:55Z", "hours": 3.7989, "text": "JSP Can’t really express enough how much I enjoy making shaders, the look really good. i might make a video about it with the new hackclub video challenge, we might see, I’m kinda shy for these sort of things :)) Today’s devlog is pretty much to show only one thing. I’ve been doing some really small changes to UI, a few bug fixes but the important thing is the new Central Body system for the sandbox mode (the code is pretty rough right now but hopefully ill improve it), this now allows you to choose the central body that your planets will orbit around So now, instead of having only the sun in the middle you can now select a BLACK HOLE instead, which i think its a lot cooler. Note that the whole black hole is completely done by a single glsl fragment shader, how cool is that? I’ve reused a small amount of code from the atmosphere shader and then researched a bit on similar projects Apart from this I’ve also added a new “extra” option to allow the player to change the tint of the skybox, so you can create even weirder solar systems, any new suggestions on what else to add are welcome! After this im gonna do a small refactoring change that is really stupid and needs to be changed in the entire code base, its just a small thing with the new language system"}, {"post_id": 24594, "ts": "2026-07-08T09:29:46Z", "hours": 8.8931, "text": "JSP Worked on polishing and improving a few quality of life features and overall stability, also I took my time to translate every single text in the game to spanish, although the new dynamic language system should work for adding any new language fairly quickly. this is a very important change because doing this after the campaign would be a nightmare. language is also saved to settings new stuff Added a dynamic language system and support for playing the game in spanish, if you want any new languages or help translate and thus be added to the credits please reach out Added a full credits panel where it shows all the licenses and 3rd party code/art used, AI disclosure and other stuff Fixed some weird seg faults when going back to main menu from the blueprint view Updated all icons, all of them were used in the sandbox game mode Added some new settings to the blueprint view inside the spaceship building game mode What I wanna do now is to finally finish the spaceship sandbox finally but its taking longer than expected and it requires a lot of brainpower that many times is less appealing to do compared to playing persona 5 royal lmao. Note: once the source code is published, sending feedback, playtesting or translating would maybe mean that i put you in the credits! fr i might need some help tho"}, {"post_id": 22329, "ts": "2026-07-04T19:06:08Z", "hours": 7.0856, "text": "JSP I really enjoy creating and coding shaders and so i started adding some cool effects to the spacecraft editor, didnt really add any new parts but i think that what i added was pretty interesting. I’ve also been working on improving a bit the user experience and making things obvious to use without explaining anything, this is probably the most fun i had doing this project in a while :) what was added Added “Blueprint” view for your spaceship, watch the video to see what it is! currently very early version tho Added a help window that changes based on the gamemode Added geometry center (blue) and center of mass (yellow) to the spaceship Small fixes to transition between movesets Added a border shader to mark the bounds of the building workspace Added a few icons that really need some improvement The idea of the blueprint mode is to edit different things from the spaceship, and also to see the different stages of your little ship! more on this later, im not specially creative enough to write a lot today lol Ill also probably add a dynamic cursor system but idk"}, {"post_id": 20638, "ts": "2026-07-02T08:56:03Z", "hours": 6.5689, "text": "JSP Been working on the spaceship builder gamemode and its pretty fun! right now the system is very simple but solid. i had to model a couple test things and fix many bugs but it is going quite fast. The current system is a simple attachment-part system where each attachment holds up information about allowed part’s categories to attach and the normal vector of the attachment. Unfortunately removing parts is not really an option yet cuz i need to see how i will make that possible later on summary on new features: started the actual spaceship building gamemode, currently it features just basic part placement logic small changes to sound effects and music (not shown in the video) Apart from obvious structural changes, id also want to add some sort of customization to your spaceships, with different colors, flags, sigils idk. I dont want to make building a spaceship something hard but just a simple thing you do to have your own individual experience, obviously you wont be able to make some cursed stuff as it wont just fly into space without an engine, but the idea is that everything with enough parts should work"}, {"post_id": 18642, "ts": "2026-06-29T20:39:49Z", "hours": 3.7319, "text": "JSP Unfortunately hackatime doesnt support blender so the ~2.5 hours i spent modeling the assembly building for the spacecraft editor sandbox will not count but its fine. I’ve also done some deep debugging to the engine as it now supports embedded materials even when they dont have any texture, before this change everything looked like a wierd artifact in black/purple colors (check out the second image if ud like to see it, its pretty in a way) what was added/changed Created a not-final but decent model for the assembly building you will be creating your custom spaceship in Added first person camera control, that is used by this gamemode to get a different “perspective” on your awesome creation. you can toggle between the normal orbital view and the fp view some engine-level optimizations This now means im FREE… to actually start developing the spacecraft building sandbox, so we are back to it lol. im hoping it doesnt take me that much but i still need to finish to understand how exactly i want this to be as this is probably the only shared code that the campaign game mode will use, so i better make it good as it “counts” double PD: already said this, but the second screenshot is just so you comprehend what ive been struggling with for the past 48 hours :("}, {"post_id": 17110, "ts": "2026-06-27T19:42:28Z", "hours": 9.6172, "text": "JSP Huge progress!! (yes, really) I’ve made some cool stuff an this game now looks a lot more professional, these last changes we’re surprisingly fast and fun to do (finally for once lmao), although the following changes, most of them, are still work in progress. I’ve officially decided that I’m not gonna be updating the engine’s repository solely for this project as im a bit more focused on making my game work rather than making the engine reliable and well-structured for any usecase, even tho the engine will still recieve updates any way cuz i really need them for the game, but the main focus is to not suffocate the engine with specific jsp stuff. new stuff audio system: custom imgui wrapper that lets me make sound effects for buttons on hover and press + background music system that lets me control simple fade out and transition to other songs, currently only in the main menu user settings: instead of making the same json slop ive made for the rest of the load/saving stuff, i made a fancy system that lives in the engine’s core and that lets you save any kind of settings a lot easier. user settings are now correctly saved when changed on user/settings.json created a simple intro text for the first run that explains a some information made the settings window accessible from anywhere, not tied to the main menu anymore FANCY TRANSITIONS between gamemodes, it now fades in/out to black with a little loading icon in the bottom right corner, this took longer than id like to explain unfortunately added a color history for the paint tool in the planet sandbox improved atmosphere UI controls in the planet sandbox fix water shader sometimes rendering on top of an atmosphere As you might be able to guess, some of these changes weren’t really necessary but im sort of procrastinating so that i dont have to model the assembly building for the next game mode cuz i really suck at it and will be painful most likely I’ve though of adding a “first person view” move mode to the spacecraft sandbox as it would be cool to see your creation from an engineer’s point of view and also because that way i already will have coded the controls for the campaign :))"}, {"post_id": 15575, "ts": "2026-06-25T10:26:14Z", "hours": 5.6989, "text": "JSP Currently finishing the gravity sandbox gamemode! I still need to make quite a big change as im thinking of unifying the “gravity body” struct i use in the sandbox with the “planet component” i use in the rest of the game, so this will probably take a while but, for now, the sandbox game mode seems to be the next thing to be finished! new stuff! the gravity sandbox now has gravity!!!! note that it is not super realistic nasa-level simulation, i was thinking of something a lot more arcade. this is very well reflected in the fictional scale (its around 1:100000), because games must be fun first, then realistic if possible separated the gravity sandbox file to hold the built-in planet’s registry in a different file (its around ~1300 lines of code rn lol, after the simplification…) added a nice destroy animation for the planets, improved the velocity tool and made the selection tool follow the planets the intro animation now locks into the sun, which is now the origin of the scene + changes to the style of the sun added trails to the planets in the simulation (that you can toggle, of course) small UI improvements Whats next u say? applying the same load/save system that i used in the planet builder sandbox, only that now i wont have to create a vertex data to file system (yay) Im also starting to 3d model in blender the “assembly building” where you will be able to build your spaceships in the other game mode, but im really bad at it so ill leave it for later, once the spacecraft builder game mode is finished i will probably ship the first version"}, {"post_id": 13151, "ts": "2026-06-21T14:56:42Z", "hours": 10.1961, "text": "JSP I’ve officially finished the planet builder sandbox gamemode finally, probably will tweak a lot of things but the main stuff is done. i spent quite a lot trying to fix a problem with the depth texture that isnt even fixed right now lmao, quick explanation: distances are huge and so the depth texture loses a lot of precision, to combat this i decide to add reverse-z to the engine’s renderer but this didnt really solve the issue as it probably needs even more work adding an inifinite “far” plane or logarithmic depth but i think its fine for now, ill explain this more in depth with the next devlog on the origin engine. new features added oceans to the planet builder, very simple for now but as a first version i think it works just fine, i spent at least 8 hours with this already lol, added basic controls to the ui to modify the shader’s uniforms and hopefully its good enough added loading/saving to the planet builder and to the sandbox, you can now save your projects using json serialization, a geometry-to-file algorithm and a texture-to file algorithm. note that the planets you create in the planet builder can also be used in the gravity sandbox added the terrain tool so you can now modify the geometry of your planet as you like, creating mountains, valleys or oceans Next up is to finish the gravity sandbox gamemode, hopefully that should be a lot quicker as most of it is already done, but you know how this usually goes HELP: if you have any ideas on how to make the depth texture more precise given the huge distances please let me know, theres not a lot of information out there"}, {"post_id": 11875, "ts": "2026-06-19T10:45:42Z", "hours": 5.4583, "text": "JSP I’ve been stuck with a super upsetting bug with the engine’s render class and the ownership of the output buffer that made the engine’s sandbox editor be completely unusable for however long this “postprocessing pipeline update” lasted. it is now fixed and i could continue developing this game finally. As the engine now supports adding many layers of postprocessing on top of the main render pipeline, i started cooking up atmospheric and star shaders, although only the first one is finished. i ported the atmosphere shader from a tutorial posted by nvidia on atmospheric scattering from a many years ago but the end result is honestly amazing, way better than what i had in mind. This is supposed to give the same feeling as the atmospheres from outer wilds, which is part of my inspiration for this project (and also my fav game in general) new features add “Has atmosphere” option to the planet builder mode, with a lot of options and parameters to control and make your own planets, showcased in the video… made all entities with the planet component now have an option to show an atmosphere, although it is disabled by default. this results on the earth shown in the main menu to now also have a atmosphere I will be focusing on finishing the planet builder game mode first, as it is ~60% done (probably less), i just need to add the entire terrain tool and save the planet settings to a file to be able to use it later or use it in the gravity sandbox PD: i know it seems like im focusing too much into the small/extra gamemodes but this is supposed to function as a base for the campaign mode, which i dont think will be released in the first public version unfortunately"}, {"post_id": 10582, "ts": "2026-06-17T12:03:21Z", "hours": 4.9575, "text": "JSP Good but slow progress (im not finishing this game before stardance ends probably) I want to focus on having the 4 main gamemodes ready to have a good base for the camping, which is gonna be epic! new features/changes: wrote the story for the campaign mode, yet to be showcased, but it is pretty cool, more on that later removed the explore mode, this was a thing i had in mind at the very beginning of the development but it doesnt really fit my view right now, will make a comeback at some point, but the previous implementation was just a bunch of dead code created a simple spaceship building scene, wip as you can see in the video added a very simple splash screen improved the planet creation sandbox, now with a paint tool (a bit buggy, for now) that lets you generate a real-time texture and save it to a png file, biggest progress here was made in the engine itself actually. This took so much time fighting with translation of screen-space coords to world-space coords to UV coords, im actually impressed it even works lmao. this was almost gonna get scrapped till i realized the UV unwrapping of the sphere was a cubic projection and that was messing everything up I am struggling so much with blender and my sandbox, it looks like they hate each other, also WHY DOES BLENDER USE Z+ UP, anyway, stay tuned! Its hard to make devlogs when progress is so slow but i hope you like it PD: I just fixed the colors looking like confetti (look at the color of the blue paint brush), apparently i was multiplying the alpha channel by 255 in the texture class because of a previous implementation and that was causing some sort of overflow in the shaders, thus the weird colors, so paint tool is officially finished, hopefully"}, {"post_id": 9425, "ts": "2026-06-15T19:45:20Z", "hours": 8.1431, "text": "J.S.P. I’ve been making some progress in every direction while i find out exactly what i want this game to be. ive started writing the story for the campaign mode that i hope is about 3 to 4 hours. Overall the main progress of this devlog is summarized in a finished early version of the sandbox, although theres a lot to fix in it, the main stuff is done. Ive also started with the planet creation sandbox and focused on working into instancing even though it is not quite there yet (im thinking of removing the explore mode entirely or do it completely different) new features: improved sandbox mode with actual simulation (very early), a new intro animation, different tools to select, move and change the starting velocity of each planet set a base for both the planet and spacecraft creation sandboxes as these mechanics will make the development of the campaign a bit easier, hopefully created a simple logo, probably to be changed, i dont really like it but id appreciate feedback refactored the scale system to make working with different distances and planet’s radius a lot easier, this new system is so clean i actually love it As you can see progress is extremely slow, i want to make this right and also make sure that the project is well structured enough to hold up. Also did a simple check on performance and after a couple tweaks, average fps sit around 3000, fr, on my little rtx 3060 so thats great"}, {"post_id": 7522, "ts": "2026-06-12T15:45:45Z", "hours": 5.6847, "text": "JSP Today’s devlog is not so much focus into the progress but into some design decisions that made me had to restructure the project a quite a lot, ive got a new view of the project that i think will make it a lot more fun gamemodes: campaign: top secret for now explore: you can explore, find, filter and search up real-life satellites at their real position, this is mostly done already but i need to work on adding instancing to the engine because rendering ~14000 satellites is not something my little tiny engine can really handle right now, performance drops from ~1700 fps to 9 fps lol sandbox: no more real life stuff, distances are too big and not fun to play with, this is the main change. this means that the idea is to now not only allow to play around with 3d gravity and make solar systems, but also to create and design custom planets and spacecrafts (and save/load them to a custom json file that you can share or reuse) new features I want to showcase how the current sandbox mode is like right now, this is only a part of the final sandbox mode tho (read the previous paragraph for more info). I added this cool animation from the main menu, simple movement that scales with distance, and a placing-editing system that took way too long (i had to do matrix calculations lol, math does be useful sometimes), right now the only object you can place is the Earth, but you will be able to place pretty much anything and modify their mass, velocity or anything really I will now start with making instancing something real and not just a dead branch in the engine’s repo, but this means im gonna have to read some opengl documentation :( PD: the visual bug in the video is completely intentional"}, {"post_id": 6769, "ts": "2026-06-11T10:36:15Z", "hours": 7.2383, "text": "JSP I’ve been working on a lot of things and the project is taking a really nice shape! ive organized the game into different game modes that independently manage their needs in an organized way. Also ive made some progress with the real life satellites and made some nice main menu! new features: WIP: explore real time satellites and see them move as they are in real life, with custom orbit calculations, still in the works, getting fetched directly from the internet and cached every 24 hours Added a main menu, as the engine doesnt have any in-house UI system, Im using a modified dear imgui version that is holding up nicely, also added some placeholders for settings etc… Started a new gamemode: gravity sandbox, where you can play around with custom objects and real life planets and their gravitational interactions I also had to update the engine a bit to make it be able to handle quads and their operations. the idea is to finalize a working sandbox gamemode as that would set the base for many more complex features incoming"}, {"post_id": 6120, "ts": "2026-06-10T09:09:05Z", "hours": 6.2383, "text": "JSP A 3D pixelart videogame about space exploration where you have to save humanity from the Kessler effect, currently working on the “exploration” mode where you can find and explore all the satellites of earth (and later on the solar system) at their real time location. Current Features! I’ve made a simple system that gets the real life data of these satellites from CelesTrak’s Public TLE Text Files, which than caches them and are refreshed every 24 hours, so you can see the real-life position of, for example, the ISS Built using my own custom engine, actually been updating the engine while creating this because, lets say the engine isnt very “mature” yet, but its holding up nicely! Check out the ORIGIN engine at: https://origin.aloyak.dev The game will feature this little 3d pixel art style that i really like honestly. The hardest thing to do so far was to setup a fork of the engine so that i could work on the game without actually contributing to the engine itself at all. All these models used currently are from NASA themselves, so they should be pretty accurate! I’m thinking of maybe adding a web build but the more i try to make it work the more it breaks lol :( 🚀🚀"}]...
|
Title: Janitor Space Program (J.S.P.) by @aloyak | Title: Janitor Space Program (J.S.P.) by @aloyak | Stardance
Devlogs:
JSP A 3D pixelart videogame about space exploration where you have to save humanity from the Kessler effect, currently working on the “exploration” mode where you can find and explore all the satellites of earth (and later on the solar system) at their real time location. Current Features! I’ve made a simple system that gets the real life data of these satellites from CelesTrak’s Public TLE Text Files, which than caches them and are refreshed every 24 hours, so you can see the real-life position of, for example, the ISS Built using my own custom engine, actually been updating the engine while creating this because, lets say the engine isnt very “mature” yet, but its holding up nicely! Check out the ORIGIN engine at: https://origin.aloyak.dev The game will feature this little 3d pixel art style that i really like honestly. The hardest thing to do so far was to setup a fork of the engine so that i could work on the game without actually contributing to the engine itself at all. All these models used currently are from NASA themselves, so they should be pretty accurate! I’m thinking of maybe adding a web build but the more i try to make it work the more it breaks lol :( 🚀🚀
JSP I’ve been working on a lot of things and the project is taking a really nice shape! ive organized the game into different game modes that independently manage their needs in an organized way. Also ive made some progress with the real life satellites and made some nice main menu! new features: WIP: explore real time satellites and see them move as they are in real life, with custom orbit calculations, still in the works, getting fetched directly from the internet and cached every 24 hours Added a main menu, as the engine doesnt have any in-house UI system, Im using a modified dear imgui version that is holding up nicely, also added some placeholders for settings etc… Started a new gamemode: gravity sandbox, where you can play around with custom objects and real life planets and their gravitational interactions I also had to update the engine a bit to make it be able to handle quads and their operations. the idea is to finalize a working sandbox gamemode as that would set the base for many more complex features incoming
JSP Today’s devlog is not so much focus into the progress but into some design decisions that made me had to restructure the project a quite a lot, ive got a new view of the project that i think will make it a lot more fun gamemodes: campaign: top secret for now explore: you can explore, find, filter and search up real-life satellites at their real position, this is mostly done already but i need to work on adding instancing to the engine because rendering ~14000 satellites is not something my little tiny engine can really handle right now, performance drops from ~1700 fps to 9 fps lol sandbox: no more real life stuff, distances are too big and not fun to play with, this is the main change. this means that the idea is to now not only allow to play around with 3d gravity and make solar systems, but also to create and design custom planets and spacecrafts (and save/load them to a custom json file that you can share or reuse) new features I want to showcase how the current sandbox mode is like right now, this is only a part of the final sandbox mode tho (read the previous paragraph for more info). I added this cool animation from the main menu, simple movement that scales with distance, and a placing-editing system that took way too long (i had to do matrix calculations lol, math does be useful sometimes), right now the only object you can place is the Earth, but you will be able to place pretty much anything and modify their mass, velocity or anything really I will now start with making instancing something real and not just a dead branch in the engine’s repo, but this means im gonna have to read some opengl documentation :( PD: the visual bug in the video is completely intentional
J.S.P. I’ve been making some progress in every direction while i find out exactly what i want this game to be. ive started writing the story for the campaign mode that i hope is about 3 to 4 hours. Overall the main progress of this devlog is summarized in a finished early version of the sandbox, although theres a lot to fix in it, the main stuff is done. Ive also started with the planet creation sandbox and focused on working into instancing even though it is not quite there yet (im thinking of removing the explore mode entirely or do it completely different) new features: improved sandbox mode with actual simulation (very early), a new intro animation, different tools to select, move and change the starting velocity of each planet set a base for both the planet and spacecraft creation sandboxes as these mechanics will make the development of the campaign a bit easier, hopefully created a simple logo, probably to be changed, i dont really like it but id appreciate feedback refactored the scale system to make working with different distances and planet’s radius a lot easier, this new system is so clean i actually love it As you can see progress is extremely slow, i want to make this right and also make sure that the project is well structured enough to hold up. Also did a simple check on performance and after a couple tweaks, average fps sit around 3000, fr, on my little rtx 3060 so thats great
JSP Good but slow progress (im not finishing this game before stardance ends probably) I want to focus on having the 4 main gamemodes ready to have a good base for the camping, which is gonna be epic! new features/changes: wrote the story for the campaign mode, yet to be showcased, but it is pretty cool, more on that later removed the explore mode, this was a thing i had in mind at the very beginning of the development but it doesnt really fit my view right now, will make a comeback at some point, but the previous implementation was just a bunch of dead code created a simple spaceship building scene, wip as you can see in the video added a very simple splash screen improved the planet creation sandbox, now with a paint tool (a bit buggy, for now) that lets you generate a real-time texture and save it to a png file, biggest progress here was made in the engine itself actually. This took so much time fighting with translation of screen-space coords to world-space coords to UV coords, im actually impressed it even works lmao. this was almost gonna get scrapped till i realized the UV unwrapping of the sphere was a cubic projection and that was messing everything up I am struggling so much with blender and my sandbox, it looks like they hate each other, also WHY DOES BLENDER USE Z+ UP, anyway, stay tuned! Its hard to make devlogs when progress is so slow but i hope you like it PD: I just fixed the colors looking like confetti (look at the color of the blue paint brush), apparently i was multiplying the alpha channel by 255 in the texture class because of a previous implementation and that was causing some sort of overflow in the shaders, thus the weird colors, so paint tool is officially finished, hopefully
JSP I’ve been stuck with a super upsetting bug with the engine’s render class and the ownership of the output buffer that made the engine’s sandbox editor be completely unusable for however long this “postprocessing pipeline update” lasted. it is now fixed and i could continue developing this game finally. As the engine now supports adding many layers of postprocessing on top of the main render pipeline, i started cooking up atmospheric and star shaders, although only the first one is finished. i ported the atmosphere shader from a tutorial posted by nvidia on atmospheric scattering from a many years ago but the end result is honestly amazing, way better than what i had in mind. This is supposed to give the same feeling as the atmospheres from outer wilds, which is part of my inspiration for this project (and also my fav game in general) new features add “Has atmosphere” option to the planet builder mode, with a lot of options and parameters to control and make your own planets, showcased in the video… made all entities with the planet component now have an option to show an atmosphere, although it is disabled by default. this results on the earth shown in the main menu to now also have a atmosphere I will be focusing on finishing the planet builder game mode first, as it is ~60% done (probably less), i just need to add the entire terrain tool and save the planet settings to a file to be able to use it later or use it in the gravity sandbox PD: i know it seems like im focusing too much into the small/extra gamemodes but this is supposed to function as a base for the campaign mode, which i dont think will be released in the first public version unfortunately
JSP I’ve officially finished the planet builder sandbox gamemode finally, probably will tweak a lot of things but the main stuff is done. i spent quite a lot trying to fix a problem with the depth texture that isnt even fixed right now lmao, quick explanation: distances are huge and so the depth texture loses a lot of precision, to combat this i decide to add reverse-z to the engine’s renderer but this didnt really solve the issue as it probably needs even more work adding an inifinite “far” plane or logarithmic depth but i think its fine for now, ill explain this more in depth with the next devlog on the origin engine. new features added oceans to the planet builder, very simple for now but as a first version i think it works just fine, i spent at least 8 hours with this already lol, added basic controls to the ui to modify the shader’s uniforms and hopefully its good enough added loading/saving to the planet builder and to the sandbox, you can now save your projects using json serialization, a geometry-to-file algorithm and a texture-to file algorithm. note that the planets you create in the planet builder can also be used in the gravity sandbox added the terrain tool so you can now modify the geometry of your planet as you like, creating mountains, valleys or oceans Next up is to finish the gravity sandbox gamemode, hopefully that should be a lot quicker as most of it is already done, but you know how this usually goes HELP: if you have any ideas on how to make the depth texture more precise given the huge distances please let me know, theres not a lot of information out there
JSP Currently finishing the gravity sandbox gamemode! I still need to make quite a big change as im thinking of unifying the “gravity body” struct i use in the sandbox with the “planet component” i use in the rest of the game, so this will probably take a while but, for now, the sandbox game mode seems to be the next thing to be finished! new stuff! the gravity sandbox now has gravity!!!! note that it is not super realistic nasa-level simulation, i was thinking of something a lot more arcade. this is very well reflected in the fictional scale (its around 1:100000), because games must be fun first, then realistic if possible separated the gravity sandbox file to hold the built-in planet’s registry in a different file (its around ~1300 lines of code rn lol, after the simplification…) added a nice destroy animation for the planets, improved the velocity tool and made the selection tool follow the planets the intro animation now locks into the sun, which is now the origin of the scene + changes to the style of the sun added trails to the planets in the simulation (that you can toggle, of course) small UI improvements Whats next u say? applying the same load/save system that i used in the planet builder sandbox, only that now i wont have to create a vertex data to file system (yay) Im also starting to 3d model in blender the “assembly building” where you will be able to build your spaceships in the other game mode, but im really bad at it so ill leave it for later, once the spacecraft builder game mode is finished i will probably ship the first version
JSP Huge progress!! (yes, really) I’ve made some cool stuff an this game now looks a lot more professional, these last changes we’re surprisingly fast and fun to do (finally for once lmao), although the following changes, most of them, are still work in progress. I’ve officially decided that I’m not gonna be updating the engine’s repository solely for this project as im a bit more focused on making my game work rather than making the engine reliable and well-structured for any usecase, even tho the engine will still recieve updates any way cuz i really need them for the game, but the main focus is to not suffocate the engine with specific jsp stuff. new stuff audio system: custom imgui wrapper that lets me make sound effects for buttons on hover and press + background music system that lets me control simple fade out and transition to other songs, currently only in the main menu user settings: instead of making the same json slop ive made for the rest of the load/saving stuff, i made a fancy system that lives in the engine’s core and that lets you save any kind of settings a lot easier. user settings are now correctly saved when changed on user/settings.json created a simple intro text for the first run that explains a some information made the settings window accessible from anywhere, not tied to the main menu anymore FANCY TRANSITIONS between gamemodes, it now fades in/out to black with a little loading icon in the bottom right corner, this took longer than id like to explain unfortunately added a color history for the paint tool in the planet sandbox improved atmosphere UI controls in the planet sandbox fix water shader sometimes rendering on top of an atmosphere As you might be able to guess, some of these changes weren’t really necessary but im sort of procrastinating so that i dont have to model the assembly building for the next game mode cuz i really suck at it and will be painful most likely I’ve though of adding a “first person view” move mode to the spacecraft sandbox as it would be cool to see your creation from an engineer’s point of view and also because that way i already will have coded the controls for the campaign :))
JSP Unfortunately hackatime doesnt support blender so the ~2.5 hours i spent modeling the assembly building for the spacecraft editor sandbox will not count but its fine. I’ve also done some deep debugging to the engine as it now supports embedded materials even when they dont have any texture, before this change everything looked like a wierd artifact in black/purple colors (check out the second image if ud like to see it, its pretty in a way) what was added/changed Created a not-final but decent model for the assembly building you will be creating your custom spaceship in Added first person camera control, that is used by this gamemode to get a different “perspective” on your awesome creation. you can toggle between the normal orbital view and the fp view some engine-level optimizations This now means im FREE… to actually start developing the spacecraft building sandbox, so we are back to it lol. im hoping it doesnt take me that much but i still need to finish to understand how exactly i want this to be as this is probably the only shared code that the campaign game mode will use, so i better make it good as it “counts” double PD: already said this, but the second screenshot is just so you comprehend what ive been struggling with for the past 48 hours :(
JSP Been working on the spaceship builder gamemode and its pretty fun! right now the system is very simple but solid. i had to model a couple test things and fix many bugs but it is going quite fast. The current system is a simple attachment-part system where each attachment holds up information about allowed part’s categories to attach and the normal vector of the attachment. Unfortunately removing parts is not really an option yet cuz i need to see how i will make that possible later on summary on new features: started the actual spaceship building gamemode, currently it features just basic part placement logic small changes to sound effects and music (not shown in the video) Apart from obvious structural changes, id also want to add some sort of customization to your spaceships, with different colors, flags, sigils idk. I dont want to make building a spaceship something hard but just a simple thing you do to have your own individual experience, obviously you wont be able to make some cursed stuff as it wont just fly into space without an engine, but the idea is that everything with enough parts should work
JSP I really enjoy creating and coding shaders and so i started adding some cool effects to the spacecraft editor, didnt really add any new parts but i think that what i added was pretty interesting. I’ve also been working on improving a bit the user experience and making things obvious to use without explaining anything, this is probably the most fun i had doing this project in a while :) what was added Added “Blueprint” view for your spaceship, watch the video to see what it is! currently very early version tho Added a help window that changes based on the gamemode Added geometry center (blue) and center of mass (yellow) to the spaceship Small fixes to transition between movesets Added a border shader to mark the bounds of the building workspace Added a few icons that really need some improvement The idea of the blueprint mode is to edit different things from the spaceship, and also to see the different stages of your little ship! more on this later, im not specially creative enough to write a lot today lol Ill also probably add a dynamic cursor system but idk
JSP Worked on polishing and improving a few quality of life features and overall stability, also I took my time to translate every single text in the game to spanish, although the new dynamic language system should work for adding any new language fairly quickly. this is a very important change because doing this after the campaign would be a nightmare. language is also saved to settings new stuff Added a dynamic language system and support for playing the game in spanish, if you want any new languages or help translate and thus be added to the credits please reach out Added a full credits panel where it shows all the licenses and 3rd party code/art used, AI disclosure and other stuff Fixed some weird seg faults when going back to main menu from the blueprint view Updated all icons, all of them were used in the sandbox game mode Added some new settings to the blueprint view inside the spaceship building game mode What I wanna do now is to finally finish the spaceship sandbox finally but its taking longer than expected and it requires a lot of brainpower that many times is less appealing to do compared to playing persona 5 royal lmao. Note: once the source code is published, sending feedback, playtesting or translating would maybe mean that i put you in the credits! fr i might need some help tho
JSP Can’t really express enough how much I enjoy making shaders, the look really good. i might make a video about it with the new hackclub video challenge, we might see, I’m kinda shy for these sort of things :)) Today’s devlog is pretty much to show only one thing. I’ve been doing some really small changes to UI, a few bug fixes but the important thing is the new Central Body system for the sandbox mode (the code is pretty rough right now but hopefully ill improve it), this now allows you to choose the central body that your planets will orbit around So now, instead of having only the sun in the middle you can now select a BLACK HOLE instead, which i think its a lot cooler. Note that the whole black hole is completely done by a single glsl fragment shader, how cool is that? I’ve reused a small amount of code from the atmosphere shader and then researched a bit on similar projects Apart from this I’ve also added a new “extra” option to allow the player to change the tint of the skybox, so you can create even weirder solar systems, any new suggestions on what else to add are welcome! After this im gonna do a small refactoring change that is really stupid and needs to be changed in the entire code base, its just a small thing with the new language system
JSP https://github.com/aloyak/JSP https://aloyak.itch.io/jsp?secret=nkYXIEVo8woJvblBQRYMIrWSFc I feel like im getting very close to a first ever release and finally start with the campaign mode! I finished some polishing stuff and fixed a bit, i dont think the spacecraft builder mode is ready 100% but ill use it in the campaing mode either way so ill have to update it regardless I’ve officially published the github repository where you can check out the huge amount of code this project already has lol. I’ve also created a new itchio page, this is the secret link (for feedback): https://aloyak.itch.io/jsp?secret=nkYXIEVo8woJvblBQRYMIrWSFc added things: Published the github repo and the itchio page! With a lot of new screenshots and art. I’ve also added the source files of the textures (.xfc gimp files, including the itchio banners) as well as the 3D models I’ve made (in blender) which can all be found in the assets_src/ folder Added a way to delete different parts in the spaceship building mode Added a few new parts to the spaceship building mode, refactored the whole system to make it “easier” (not really) to add new parts and things Added a full README + LICENSE to the repo Added a new shader , it is the small fog that you see in the vide when building a spaceship in order to hide the lack of detail in the exterior, the shader fades out the more you look up so you can see the beautiful skybox Added load/saving to the spacecraft building game mode, you can now save your ship’s to load them later just like with planets and sandboxes Fix some memory management problems where i forgot to delete some pointers => no memory leaks or crashes! I dont think this will be the last devlog before the first ship, but maybe, who knows right? Looking forward to you all trying my game! (the part that is done) PD: 100 hours
JSP Pre-ship checklist is complete! I’m so ready to ship the first version and start developing the campaign, which is the main thing of this game. I’ve actually started it a little bit, it now has an interior level system completely different to the gamemode system i had for the rest of the game, this is pretty exiting! stuff that ive done before shipping Built the game for windows, took a little bit but performance is 1:1 and everything works perfectly, the only thing was that i had to change the backend of the audio engine to use something else but that was fairly quick! Reduced the size of the game MASSIVELY , it went from around 350MB to ~35MB , thats literally 10 times less!! managed to do this by compressing the audio files, although the change is almost unnoticeable, and also making the engine bake some textures on build time, just like real fancy engines do! Changed a bit the main menu/ campaing mode but for now it is all a placeholder Created a new itch.io banner Made the HELP menu show up by default, i dont really like this but i think its probably the best for people to rate it nicely, wont be in the final version… Added a input mode (another one) to the spaceship building mode that allows you to hover the attachment points and it will tell you with a little popup what category of part can go there If you are rating my project, please ishowspeed i need this now in all fairness i hope people like my game! im not even close to finishing it lol Right after this first ship i will work on updating the engine to support new features that the campaign mode will certainty need 100%, like a working physics engine, ive thought of porting what i currently have to use a new one i found and that is getting very popular called “Box3D”, we’ll see, byeeeeeee
JSP I want to dedicate this devlog to @Rupnil as he always says that devlogs need to be 3-4 hours max, so i can explain why thats not always possible. Out of the 8 hours i devlog today, around 7.5 of them were spent ONLY debugging ONE SINGLE BUG for 2 whole days. I started losing my mind lmfao the bug: All the built-in and embedded textures became completely broken and ONLY on super specific conditions on certain parts and game modes. But the worst part was that rolling back to a version from days ago DID NOT solve the issue at all . I even considered that my GPU gave up on my and it was just showing gpu artifact slop in my screen the fix: Apparently there was a small bug with gpu memory allocation in the backend of dear imgui (apparently ONLY in the SDL2-OpenGL backend lmfao) and only for the docking branch of the repo. Rolling back to an old dear imgui version from the main branch solved the issue but damn. Ive also reported the issue as much as i could in the official repo. Pretty much, updating the engine to the latest version automatically updated its dependencies and thus leaked the bug to my game Appart from that I’ve spent a little bit on starting to develop the open-universe system where you can travel around planets! More on that in the next devlog probably. I already have though about the planet’s names, positions and stuff! pretty exiting!! PD: In the mean time ive also being updating the engine at the same time to improve the physics system, which is a lot better right now!
JSP This is one of the most exiting devlogs so far!! I’ve managed to get a very basic “solar system working, not all the time and of course it isnt perfect but it is really cool, heres its lore: (note that planets are placeholders right now, and distances/scale should be a lot bigger in the future) The “Halcyon” System Somewhere very very far from our current home, humanity has managed to establish a multi-planetary life in a new system after traveling for generations in their own space station The Halcyon system is composed of 5 planets (maybe more in the future) that orbit around a massive black hole (it doesnt have a name yet) “Gaia” is the earth-like planet whose own satellite, “Vesta”, is a red dwarf star that provides just enough light and heat in order to live (seen in the demo video) “Ying” and “Yan” (names will probably change), are two tiny planets that follow exact opposite orbits around the black hole, when one of them is at the perihelion, the other ones at the aphelion “Kepler” is a huge rocky planet at the outskirts of the system where small human colonies currently live Note that the campaign will be linear and happen entirely inside this place, but you will also have a “exploration” game mode that will allow you to find and see new secrets hidden… :)) Technical stuff (i.e. what was added) Created the base for the Halcyon System, planets follow a predetermined elliptical orbit in real-time. Note that for debugging, scale is around 10 to 100 times less! Added a simple physics based player controller, this took a lot of engine refactoring too. The player is affected by the gravity of the near planets and, when close enough to a planet’s surface, it is automatically aligned with the gravity vector and its also affected by the atmosphere’s drag (if theres any), this was by far the most difficult thing to do Added a little Free Camera controller as well What will be added in the future This is only the start . Theres still a few complicated things to do: Add double precision and floating origin to solve the problems that will appear when distances become as big as id like them to be Add a chunked collision mesh system for planets with complex geometry, like mountains or things like that. Right now they are all controlled by a simple kinematic sphere collider This system currently breaks the player movement when planets are moving, this is why i set “time scale” to 0. To fix this ive been thinking of creating a local physics world that sets the planet you are on to be the origin of the physics, making it look like if the planet was static, this will by by far what will take the most amount of work probably i also wanna update the atmospheric shader as it is by far the thing worsening the game’s performance, and id like to make the sky fully tint when your inside it PD: Thank you so much for all the people that support/follow this project, it already has 21 followers . thank you, really!
JSP Worked on so many things before getting started with the complicated stuff, ill tell more about that in the bottom section, but for now, im pretty happy with what ive just added, even tho progress is pretty slow!!! What have i added? Full/complete atmospheric effect , it now not only looks good from outside, now from the inside too!!! Its a small trick but when the camera gets close enough to a planet, its atmosphere’s density scales up making the sky blue like here on earth or greatly improving the sunrises and sunsets , they do look beatiful Added floating origin: double precision was not enough so ive added a system that teleports all the entities in the scene when the player gets too far from the origin, this works surprisingly good and it was very simple to do, hopefully it wont break physics later on, but so far its great! This allows the solar system to go from ~10000 units wide to over ~3000000!! that is great! This was a engine-level change mostly tho You can finally use the planets you discover in the campaign mode in the sandbox mode Dynamic settings!!! I made it so that when you first load into the game, the UI scales to your resolution and your target fps are set to your monitor’s refresh rate, might not look like something important but this is actually HUGE Whats cooking up currently! Need a system to allow the player to be placed on top of moving planets (it currently works but breaks sometimes), and also to allow those planets to rotate. This will be achieved with a completely new physics world that will live localy on the closest planet the player is to Chunked mesh collider system i really dont know how to this, because of the terrain of my planets (TODO), collisions will be complicated to calculate, if you know about anything that could help, please send it!!! PD: I wish i could spend more time actually coding than thinking, if that were to be the case id have 300 hours+ in this project already
JSP Omg i need a break! just one more change bro and i will start doing the hard and boring stuff, just one more i swear! This sums up everything ive done for the past few hours, although the new improvements are actually quite important, i feel like im somewhat rushing them instead of focusing on the exploration mode New things!! Simple LOD system for planets, there wasnt a big performance change, but the model swap is very unnoticeable and nice so thats great! Added a simple spoiler warning to the exploration mode, the original idea was that you should unlock it after playing the campaign but i guess its fine lol I FIXED THE DEPTH BUFFER PRECISION ISSUE!!!! it was such a small change omg, i just dynamically changed the near plane of the camera based on how far you are to a planet, pretty nice WIP Work in progress: I’m porting the whole game to the new action-based input system so that the game supports controllers natively without any kind of steam layer on top, this is till very early and i still dont know how to make some stuff be fun to use with a controller…. I finish this, finish the two major things on the exploration mode that are 100% gonna be quick, make some decent amount of content for it, add the custom spaceship controller and launch system, make the first ~5 minutes of the campaign mode, and then SHIP THIS PROJECT (this will surely go as planned) PD: the video u see is completely controlled with my gamepad, not the best controls yet but its better than nothing!
JSP! I’ve finished porting the game to the new action based input system, its not great yet, theres a lot to polish but at least you can play 80% of the game just as good as with a keyboard/mouse (even better sometimes!) What’s the new input system? The game now asks for “actions” callbacks instead of directly asking for raw input. This new layer in the middle allows to make different devices have their own way to control each actions, so it now supports all the gamepads you probably have: xbox, playstation, steam, nintendo, generic ones too It is almost steam deck ready! Ive been playing this game on my steam deck and it works great! (you can get around 900 fps when unrestricted) Playing the game with a controller plus a little help from the little mouse trackpad really makes this game fun to play (100% coverage with this setup) Now i will finally start doing the boring physics stuff that will hopefully not take so long but idk, we’ll have to see Other stuff that was added Improved a bit the gravity based movement mode, it now adds the atmosphere’s drag gradually depending on its density, being the density higher the closer you are to the surface, this makes entering planets feel better Fixed some messed up formatting style in my code I dont know if start a new project for no more than 2 weeks and then go back, ive been having some cool new ideas but for now ill stick to this project PD: the picture is an old version (0.12.1), latest version with good controller support is 0.14.0
JSP We are SO back! I thought it would take me weeks to solve this issue but it wasnt that hard, thanks claude lol for helping. It’s not perfect just yet but its honestly crazy how my own engine managed to handle what im about to explain What took soo long The game now handles a transition from a global physics world to a new extra physics world that lives locally when the player enters a new planet (the origin of the new physics world would be the planet’s center), this means that you can perfectly walk on the surface of all the planets while they move around in the orbits without any weird behaviors This took a good amount of engine refactoring and a few changes to some systems (specially the floating origin) I need to fix a couple things like the drag when you are entering a planet, but that should be handled later on when you actually use a spaceship to enter and not just yourself with your spacesuit Other stuff that is cool Added a helmet overlay! (very inspired by outer wilds, id like some suggestions to make it more original honestly, but right now it decent). It is currently work in progress tho, and theres a lot of information missing… Small UI improvements: rounded borders, removed window’s transparency, added window close sound effects (need to find a better one tho), little better controller support… I just this idea to have vehicles but that will take super long, its added to the ideas file but thats certainty not being considered for short term, Any suggestions are welcome tho PD: video is very bad res bc i had to compress it unfortunately
J.S.P. Very exciting changes to the exploration mode yay !! I’ve been working on precisely TWO (2) things but one of them is way too early for me to be able to show you anything, more on that in the end Whats new? I’ve create a custom blender addon that lets me create procedural noise-based planets! It is really powerful and it gets you really good results for how simple it is really. In a way, its nothing but a vertex shader but coded in python lol It generates 3D spherical noise and applies it into an icosphere with a variety of parameters. Some of them arent precisely working but they are fine for now (specially the “ridged” option) You can try it yourself, its open source too! https://github.com/aloyak/JSP/blob/main/assets_src/blender/addons/planet_generator.py Terrain System I’m developing a way for the player to correctly collide with the geometry of these planets, but this is mostly engine-sided changes and I’m not very deep into it yet. I’m currently researching how to handle multi-threading async functions… more information about this in my latest engine’s devlog: https://stardance.hackclub.com/projects/1029/devlogs/34738 Known issues These are not really important right now, but for some reason I’ve realized that the splash screen takes different amounts of time depending on where you run the game?? what? A steam deck is around 3 seconds, my computer (the intended duration) is 4 seconds and in a friend’s laptop it is ~0.5 seconds
JSP! I’m back! and I finally have a new decent version that im probably gonna ship shortly after I publish this devlog. Its been so long since the last devlog because a number of factors, I had some vacations, my main pc is now just a steam deck connected to a monitor and also I’m kind of struggling to continue this project, I hope this isnt the last version but working on the project and adding or fixing things is very complicated and requires a lot of research to do it right, and it is exhausting What was added?? Included the new planet models to the halcyon system, you can now correctly explore them by using the new terrain system I added to the engine! Added some small help windows/hints for the new stuff before shipping! Fixed some audio bugs and added a sound effect for when you close a window Fixed the in-helmet HUD UI, the input vectors now correctly show the direction the thrust is being applied to, kinda like in Outer Wilds!! I’m most likely to be focusing on continuing the engine for a little bit, it really really does require some refactoring and I also need to clean some likely dead code or at least re-understand the code i wrote as it has lines from almost a 10 months ago! Hopefully someone could help and contribute to the project maybe or make something new out of it too! Im still planing on continuing to develop it but not at this pace considering im about to start college :))
Ships:
This is my 3D game about space exploration and kessler cascades, it has a campaign mode coming up but i havent finished that yet, for now enjoy the 3 game modes! i built this on top of my custom engine so its been a lot of hard work, please try it out!!!!
This is my 3D exploration-sandbox game that I built with my custom game engine! I’ve added quite a lot of stuff like a simple exploration game mode that allows you to move around a hand-crafted solar system i called “Halcyon”. there are also a lot of other game modes you can try and have fun with before I finally add the campaign game mode for the final version! In the picture you can see an in-game screenshot of the player walking around the surface of the earth-like planet “Gaia”, hope you like my game! With <3, 4loyak!...
|
1793098177.192302
|
1793184577.192302
|
|
14069
|
My very own WebOS by @tlevi | Stardance
|
tlevi
|
2
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T14:12:08Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finished my WebOS 2 mission. I added the following three features: A button that changes the background color randomly. A Terminal window. A Random Number Generator window with a Generate button. All three features are working successfully and have been integrated into the WebOS2 interface.", "repo": "https://github.com/TLevi74/webos", "demo": "https://tlevi74.github.io/webos/"}, {"ship_num": 2, "ts": "2026-06-15T20:44:02Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My Submission for the WebOS mission. This project was built with HTML, CSS, and JavaScript that mimics a desktop operating system. It features interactive windows for different sections: links, search tool, notes app, and an embedded YouTube video player. You can close the tabs, move them around, or minimize them by clicking on the tab names in the top left corner. Enjoy!", "repo": "https://github.com/TLevi74/webos", "demo": "https://tlevi74.github.io/webos/"}]...
|
[{"post_id": 15672, "ts": "202 [{"post_id": 15672, "ts": "2026-06-25T14:10:11Z", "hours": 0.5075, "text": "Added the last feature, which is a random number generator “app”. The project is finished, and ready for submission."}, {"post_id": 15651, "ts": "2026-06-25T13:31:48Z", "hours": 0.2636, "text": "I added a terminal window. You can type help for available commands. I will add one more final feature."}, {"post_id": 15644, "ts": "2026-06-25T13:16:03Z", "hours": 0.3214, "text": "I started working on the WebOS 2 Mission. I added a Change Background button, which changes the background color randomly. I also made some improvements to some of the movable windows. I will add 2 more new features"}, {"post_id": 5691, "ts": "2026-06-09T16:05:37Z", "hours": 1.4956, "text": "Devlog 3 & Final: The project is done! Improved draggable window system with better focus and z-index handling. Added 2 more windows with an extra functionality as stated in the guide. Finished the UI."}, {"post_id": 5620, "ts": "2026-06-09T14:26:37Z", "hours": 1.1275, "text": "Following up on the desktop layout in WebOS, I’ve added real interactivity to my project. Windows are now fully draggable across the screen, and the red close buttons successfully close them. With three apps completely done, the core window management works. Next up, I’ll be making some more apps!"}, {"post_id": 5546, "ts": "2026-06-09T11:15:34Z", "hours": 1.5558, "text": "Started the project today. Got the basic structure down — a desktop div, a window div, and a title bar. Wrote my first bit of CSS to make it sit in the middle of the screen. Then the fun part: making it actually drag. The first attempt sent the window flying off the screen immediately. Fixed that, and suddenly it was working. One moveable window. That’s it. I will add more features!"}]...
|
Title: My very own WebOS by @tlevi | Stardance
De Title: My very own WebOS by @tlevi | Stardance
Devlogs:
Started the project today. Got the basic structure down — a desktop div, a window div, and a title bar. Wrote my first bit of CSS to make it sit in the middle of the screen. Then the fun part: making it actually drag. The first attempt sent the window flying off the screen immediately. Fixed that, and suddenly it was working. One moveable window. That’s it. I will add more features!
Following up on the desktop layout in WebOS, I’ve added real interactivity to my project. Windows are now fully draggable across the screen, and the red close buttons successfully close them. With three apps completely done, the core window management works. Next up, I’ll be making some more apps!
Devlog 3 & Final: The project is done! Improved draggable window system with better focus and z-index handling. Added 2 more windows with an extra functionality as stated in the guide. Finished the UI.
I started working on the WebOS 2 Mission. I added a Change Background button, which changes the background color randomly. I also made some improvements to some of the movable windows. I will add 2 more new features
I added a terminal window. You can type help for available commands. I will add one more final feature.
Added the last feature, which is a random number generator “app”. The project is finished, and ready for submission.
Ships:
My Submission for the WebOS mission. This project was built with HTML, CSS, and JavaScript that mimics a desktop operating system. It features interactive windows for different sections: links, search tool, notes app, and an embedded YouTube video player. You can close the tabs, move them around, or minimize them by clicking on the tab names in the top left corner. Enjoy!
I finished my WebOS 2 mission. I added the following three features: A button that changes the background color randomly. A Terminal window. A Random Number Generator window with a Generate button. All three features are working successfully and have been integrated into the WebOS2 interface....
|
1793112543.9983191
|
1793198943.9983191
|
|
14070
|
Timetable by @omeriadon | Stardance
|
omeriadon
|
2
|
371.91
|
2591
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T09:11:11Z", "hours": 233.0, "multiplier": 18.49, "payout": 2143, "blessing": "neutral", "text": "This ship, I completely remade the app to work around accounts, and all the features that come with that I added a server, because it used to just store your timetable in your local storage and that was quite boring honestly creating a server for this has allowed me to add accounts, notifications, live activities, friends, shared events, multiple devices in the same account, and has made the website much easier to make (still in development, thats why the top devlogs are talking about the website not the app) The app now has all of this: Grades, track the score of all of your subjects notifications for each subject you have and your events etc live activity throughout each school day telling you your subjects etc sharing your location, subjects, and more with friends widgets that show your your subjects, upcoming events, and your friends’ schedules lots of administration options to manage pretty much everything, including who else is admin lol full support for siri, shortcuts, spotlight, and apple intelligence a full apple watch app btw i know 350 hours on a timetable app sounds insane (😭) but its because this project has 4 different aspects: swiftui client for iPhone, iPad, and mac swiftui client for apple watch a website client (still in development) the server that handles everything, and the database i promise it does more than just tell you your subjects 🙏", "repo": "https://github.com/omeriadon/Timetable", "demo": "https://testflight.apple.com/join/DDUXPSq3"}, {"ship_num": 2, "ts": "2026-07-15T13:35:31Z", "hours": 94.0, "multiplier": 9.5, "payout": 448, "blessing": "neutral", "text": "So I made a timetable app for my school, super-specialised and for ios, watchos, and macos. its got live activities and notifications to show you current and next subjects throughout the school day, widgets for your weekly schedule, ability to see your friends’ timetables, and server sync. and apple intelligence support!", "repo": "https://github.com/omeriadon/Timetable", "demo": "https://testflight.apple.com/join/DDUXPSq3"}]...
|
[{"post_id": 65346, "ts": "202 [{"post_id": 65346, "ts": "2026-09-10T13:08:58Z", "hours": 8.2983, "text": "Continuing the assorted improvements to the app: Fixed stacked drawers so nested drawer state updates reactively. Reworked the Friends page into shared List, ListSection, ListRow, and Card components. Preserved friend drag-and-drop ordering within the new layout. Improved timetable UX: i fixed the lesson selection in week view correctly aligned the “now” indicator in today view restricted timetable mode navigation to mobile through CSS, cos desktop already has the sidebar improved planner event styling. made the drawer compenent animate in and out, something i lost from the react -> solid migration I also added a reusable event-tag selection row with symbols and selected-state feedback."}, {"post_id": 62745, "ts": "2026-09-06T08:06:14Z", "hours": 5.9261, "text": "As well as migrating to Tanstack, I wanted even more speed, just for fun at this point honestly, so I decided to move to SolidJS from React. Its decently faster while looking similar to react, and it has some syntax stuff that i much prefer over react. this is basically just adding some margin for me to make bad code The end product looks identical so theres not much to show.. apart from the migration, I’ve also been designing the new landing page, which will also use the 3d model thing. the big question is figuring out how to make the 3d markers for each classroom register correctly, because i need to show a pin for each user at the right place, from swiftui, and somehow embed it into a realitykit 3d model. but im sure this use case has been done many times before so i can find something online!"}, {"post_id": 60821, "ts": "2026-09-03T13:24:26Z", "hours": 7.5314, "text": "Im making a 3d model of the school. this is so that i can show a whole literal map of the campus in the app, and then you can see where each user is, in 3d! i could even reexport it for the website, potentially its going to be interactive and everything"}, {"post_id": 59542, "ts": "2026-09-01T12:52:51Z", "hours": 1.2314, "text": "ok so i think i have optimised it as much as i can lol tanstack clearly was a good idea, it just needed some optimisations!"}, {"post_id": 59501, "ts": "2026-09-01T11:30:41Z", "hours": 8.1464, "text": "I did a few things in this devlog, got quite carried away frankly. So I migrated the codebase from Next.js to Tanstack. The reason was that i was seeing a lot of speed concerns, especially on the landing page. it was just lagging so much. i tried it on all my devices on all the browsers and it was there half the time. after a lot of commenting things out i just couldnt find a bug, so now i moved to tanstack. hopefully taht will remove at least some problems. in any case, i got bored of next.js and tanstack is a different framework to play with and make use of!! also, i continued the landing page by adding cards for each item. i don’t really like it right now, but i have established that i need to add these cards, if not in a different UI. The titles of each card are just image-masks, of Apple wallpapers! i went through some archive and picked out the ones i like, and applied a brightness 200% filter, and they look really nice now. after i finish the landing page im gonna work on rehauling the rest of the ui to be more intuitive and actually usable"}, {"post_id": 57354, "ts": "2026-08-29T14:02:16Z", "hours": 2.4136, "text": "I really wanted the first screen for timetable to look really really interesting and unique and instantly recognisable as Timetable, so i made the text instead of a boring white, it now has 3 really nice effects applied: A grain overlay, or noise, which in this case doesn’t make it look paper but looks nice nonetheless Its not flat white, its white at the top and goes to brown at the bottom, more noticeable when you close up. subtle but also nice The “white” isn’t even white. Its a particular white image i had a lot of difficulty in obtaining. it is the third screenshot, the “white” png. Its an .avif , and it uses some HDR-capable color space format something, which on compatible browsers make the timetable text show considerably brighter than everywhere else on your screen, which makes it really pop! i plan on using this effect in other places as well across the landing page to make it just pop a bit more. (the 4th image shows the white pixel showing as 1.25. anything above 1 is hdr.)"}, {"post_id": 57217, "ts": "2026-08-29T10:04:27Z", "hours": 1.4844, "text": "I added a title to the lading site, but as you can see its not just any title. it uses this package called fitty to make the text size up to the full width of the page, and it does indeed look massive. and it also goes under the rectangles of the logo, so its like an apple depth effect you get on iphone lockscreens i found the website really laggy while scrolling somewhere while finishing of the main interactive icon, and i couldnt figure out why after removing everything that could have been gpu intensive (my gpu was spiking to 80% while just scrolling) so after all that my most likely theory is that the lag is just my computer and not the website (or both 😭😭) also when i made that main art, i made the border radii use px units, which made it look quite deformed on smaller screens, since the rectangle’s size is relative to screen width, whereas border radius is constant… so i went and fixed that too"}, {"post_id": 56944, "ts": "2026-08-28T23:37:12Z", "hours": 1.0728, "text": "After much trying to make glass, yet again, i failed. So now im just using blur and these edge effects, and i think it looks nice! theres even a hover eect, as shown in the second screenshot (class details show and the rectangle rotates a bit randomly)"}, {"post_id": 56543, "ts": "2026-08-28T10:38:02Z", "hours": 8.8014, "text": "I started to make the landing page, and i decided, after very much research from other landing sites I’ve seen, that the main item should be an interactive timetable, a version of the app icon. but interactive and glassy. im trying to recreate everything in css but its not looking as smooth and polished as real liquid glass does so ye. im kinda getting close though! I also added a navbar item that just is the link to actually open timetable, and when you hover it shows options to either open the app in testflight or open the web version which just redirects to /login. and its background switches to black when you start scrolling, which will make more sense later. i haven’t really planned the rest of the landing page, and i might remove this entire component if i find a good liquid glass implementation i can use, especially with bouncy animations etc. but yeah. (worst part is i might even just go change the entire app icon in a week so that kinda wastes all this time 😭😭😭)"}, {"post_id": 53528, "ts": "2026-08-24T03:23:23Z", "hours": 5.4669, "text": "I have started using the shared components around the website, and its actually looking pretty nice! most importantly, these components can be changed once and work everywhere and i removed the drawers i was using everywhere, and i also made said drawers wider while i was rehauling the drawers i also kinda broke their animations and i don’t know how to fix it 😭 the whole website looks really basic now, since its obviously using now the shard unstyled components, and i was thinking about the theme and decided maybe it should be unstyled, and only the user’s own events and content etc can have colours."}, {"post_id": 52138, "ts": "2026-08-22T07:15:18Z", "hours": 9.6475, "text": "I think I have finished making all of the shared components I put everything inside accordions to organise the test components Overlays get the same translucency and outline every other component gets I think im happy with how the lists look, finally the option selectors are really really hot!!! The first page I have remade is the About view, which shows this badge if you are on localhost lol i also had to move the contributors up to the server instead of hardcoding them so that both website and app can see it And a really nice little animated gradient thingy for the about view!!"}, {"post_id": 51517, "ts": "2026-08-21T08:53:31Z", "hours": 3.9036, "text": "I have pretty much finished the components, I’m going to now go and add the other shared components and improve them too. then im gonna go through the css files and clear anything that is unused or overcomplicated, and then i can start remaking the website!"}, {"post_id": 51022, "ts": "2026-08-20T14:43:48Z", "hours": 7.9519, "text": "So the previous UI was really ugly, to be honest, so i decided I am oing to scrap half of the design and completely unstyle the entire app while making everything as standardised as possible, by trying to only use reused components as much as possible. So I spent all today stripping out components I didn’t need, then take the surviving components and adjusting them to my use case and making then look as nice as I can. alert dialogs drawers buttons lists section cards switches I have also decided to stop using tailwind because its quite simply messy and much more confusing than just moduled css, so ye"}, {"post_id": 50337, "ts": "2026-08-19T14:34:49Z", "hours": 5.8117, "text": "I’m still working on making the UI look much better, and I’m still figuring out some website stuff like how i should wire up the sidebar tabs as well as having like a nice homepage to advertise everything the app does, which will be a really fun sub-project. Turns out making nice looking lists in react is much harder than it looks, as shown below 😭 one problem is that each symbol has a different aspect ratio so i dont even know how to fit them nicely And unlike swiftui, its raelly raelly hard to stay consistent in your css and to keep using the ui tokens instead of making custom css everywhere. it looks like the website is gonna be harder than the app to make after all 😔 this classes card though, for example, i think its pretty much almost done. i might need a few more borders to make it look glassy and stuff but it looks exactly like the ios version, which is the end goal! And I added the animations to the classes card, again exactly like the iphone app. i also got a vscode extension that shows you all of your unused css classes, i highly recommend getting one and purging your codebase!"}, {"post_id": 50037, "ts": "2026-08-19T02:03:20Z", "hours": 11.0747, "text": "So I’ve made the first version of the website, it’s really insanely buggy and broken, but the ui is there. so have the html good but no i need to really tweak the css to make it look nice, apple-style. i also need to figure out how to make loading states look nice, since unlike the the swiftui app, i can’t cache anything to not show loading state. in the plus side i dont have to deal with offline state, though. the sidebar and the toolbar are finished, and look really nice. the sidebar has an effect (from ipados) that basically reflects the content in a subtle blurred way, to make it feel like glass while not actually rendering anything expensive. The toolbar is just glass buttons + a black fade effect + progressives blur, also tuned to look like ipados. the icon in the sidebar is pretty ugly honestly so i need to replace that with the non-bordered icon. The other problem i am dealing with is that we are planning a complete redesign of the entire swiftui app, and obviously that has to propagate to the website, so any work i do now is kinda gonna be half wasted, depending on what the redesign actually looks like."}, {"post_id": 47872, "ts": "2026-08-16T03:56:44Z", "hours": 0.5908, "text": "And now it scales up and down and stuff!!! I still can’t believe this is just html and css and js 😭 Theres so many parameters to tweak to make it feel right, its so finicky And depending on the size of the glass, you have to change the numbers, its kinda confusing honestly"}, {"post_id": 47804, "ts": "2026-08-16T00:37:23Z", "hours": 0.8556, "text": "Its nice and squishy now! It uses gsap for this as well gsap is a great framework ngl"}, {"post_id": 47523, "ts": "2026-08-15T14:19:10Z", "hours": 4.8103, "text": "Hehehehe I’ve got a working version of liquid glass It uses gsap, which is nice the second image is an earlier version 😭"}, {"post_id": 47363, "ts": "2026-08-15T08:10:22Z", "hours": 1.1444, "text": "The website is alive! I got a screenshot of an iOS26 sidebar, and i am copying it, as you can see. looks nice i think"}, {"post_id": 47332, "ts": "2026-08-15T06:41:25Z", "hours": 2.6325, "text": "Ok so after a bunch of wrestling with nginx and bun and next.js, i have added the website! its at https://timetable.adonis.pt/ and the current api has been moved to https://timetable.adonis.pt/api Its the usual next.js thing. and it uses bun. my design idea for this is to look like its an ipad app, essentially, and im going to see exactly how far i can take the mimicking, maybe i can even add liquid glass to the web 💀 So yeah no more app building, now its website! It’s gonna be so much easier as well because I aleady have the backend done and tested, so this should be all design which will be really fun."}, {"post_id": 46919, "ts": "2026-08-14T13:55:04Z", "hours": 0.3047, "text": "new icons. the old one that now supports light mode was kinda ugly."}, {"post_id": 46909, "ts": "2026-08-14T13:32:29Z", "hours": 7.6422, "text": "A somewhat interesting devlog this time. I spend a good 2 hours just trying to make live activities work. the miserable part is that they were already working before 😭 I dont even know what I did but it broke. And while i was trying to make a debug button to start a live activity, yeah it just wasn’t working. all kinds of problems with not submitting a good APNs token. and i had to like stop activities before starting new ones and stuff it was just in general really annoying. there was even more problems but its too much to say here 😔 anyway, i have started cleaning up the app. no more big features, to be honest, until i add a website for this thing!! should be really easy since the backend is clearly all done lol events can show weather for them, such as the athletics carnival i removed the ridiculous backgrounds i allowed users to choose, theres no only solid black/white and paper. more reasonable, i think. as part of my optimisation, i removed settings i found useless. haptics are now always on, and highlighting the current day is always on. profile pictures can now have their foreground colour set, like the Monogram can have its colour optimised.you can see the average for when your friends arrive to school per day, instead of in total. developer settings also got reorganised, more settings only show to developers. yet again cleaning up the app experience. the location status was a bit unreliable, if users were offline, etc, so i added multiple ways the app pushes updates to the server, and queued statuses when the device was offline. i also refined the actual radius for what counts as within 5 / 10 minutes, should be a bit better. i havent thought about people who live within 10 minutes, thats an interesting case the subject editors grid also looks nicer (still needs more improvement though the tabview now hides while scrolling, like it collapses into the corner, like apple apps! you can manually turn off sharing your status, for privacy reasons. and some more things i forgot 🥹 im so excited for this thing to actually launch!!!!!"}, {"post_id": 46297, "ts": "2026-08-13T13:01:18Z", "hours": 1.3272, "text": "I spent some time to work on this search button and its animation. idk if the video plays, but it uses apples glass effect transitions! I also made the confirmation dialogs for removing and reporting a friend better, before they just popped up in the middle of the screen, now it comes out of the menu (also found another ios27 beta bug 😐)"}, {"post_id": 46263, "ts": "2026-08-13T11:41:36Z", "hours": 2.4739, "text": "So supporting light mode calls for an icon redesign, at least just for light mode, and here they are! Though to be honest, the entire app is gonna need a redesign, because I need to rename it from Timetable, because it has expanded into doing so much more, and timetable is a bit of a boring name. finding names is so insanely annoying though, but oh well."}, {"post_id": 45744, "ts": "2026-08-12T13:04:58Z", "hours": 2.6161, "text": "I added custom backgrounds! Theres the paper backgrounds i added recently, and then the solid colours, and then also some of the really nice apple ones idk what they are called (i hope apple doesnt copyright me 😭) so yeah it applies to all backgrounds in the app i think it merges really nice with the liquid glass and blur backgrounds different views have it also shows on watch i also added an option to choose how far forward you see events. theres also even more statistics for what app version people are using!"}, {"post_id": 45684, "ts": "2026-08-12T10:26:42Z", "hours": 1.3586, "text": "You can now edit the foreground colours for your profile picture monogram i also completed light mode support for widgets"}, {"post_id": 45645, "ts": "2026-08-12T08:44:01Z", "hours": 2.0167, "text": "I added accessibility improvements, mainly like labels and tags and stuff, for use with voice over etc. this was triggered by me installing a developer process into my app which allowed me to iterate on design faster, and it depended on accessibility elements to discover each element. (the purple thing lets you tap elements and comment on them) i also tried a new background for the cards, as you can see below, its just glass and i think it looks pretty nice"}, {"post_id": 45165, "ts": "2026-08-11T14:09:40Z", "hours": 9.5667, "text": "Big update! Light mode! The app used to be dark mode only, it let me make it look much more pixel-perfect and refine colours and stuff, but its kinda obvious you cant keep the app dark mode only, its just not good. so i went through everything, adding light mode versions of paper, text, glass, etc. took me quite a bit of time because i was trying to maintain consistency while doing it, which included alot of redoing things and creating view modifiers and manually applying each one, etc i also added weatherkit, its just a single line in the today tab, but its nice. while adding light mode support, i found a really nice blur view i could add to lists, so now each lists’s background is nothing other than a blur! i also decided to make all backgrounds made out of paper, and i think it looks nice? theres also now a statistics page for deices and os versions and builds and stuff, itll be more useful later. as well as knowing when your friends arrive to school, i added the ability to know when they are within 5 or 10 mins, and to send notifications for that. average arrival also is split by day now, because people arrive to school at different times per day theres a new tab picker, which you can see int eh controls, its much more glassy than the last one, which is really really playful and stuff! i still have more work to do in terms of ui work, excluding light mode refinements, like notifications and widgets, but yeah."}, {"post_id": 43989, "ts": "2026-08-09T14:04:31Z", "hours": 1.73, "text": "I added a new devices statistics view. or more accurately, i expanded it. before, it just shows device platforms. now, it shows the os version, minor os version, and if it is a beta or not. i also added support for iOS 26 (previous builds only supported OS27 or later). this involved me just making some features not work on os26 😐 and supporting anything before OS26 would probably be legitimately impossible, so yeah not that."}, {"post_id": 43936, "ts": "2026-08-09T11:55:31Z", "hours": 1.5656, "text": "I also made some improvements to the card height for the user’s own item. before, it was just the full width. Halfway while I was working on that, my TabView suddenly froze for a straight 20 seconds every time i changed the tab. this was very weird, and the CPU shows 0% usage, so I was quite surprised. After a large round of commenting things out and seeing what broke, I found it was a single .glassEffect() that I was using for the progress marker. I have no idea how a glass effect can make an entire tabview freeze, but fine. i replaced it with a simple red colour, as shown below, with a stroke and shadow, and i think it looks fine now."}, {"post_id": 43850, "ts": "2026-08-09T08:59:50Z", "hours": 1.6619, "text": "there is a new progress background: its not a background! inspired by the app icon / ios app, the progress view is now this marker thingy which fits into the app’s theme much nicer I’ve also been tweaking the font sizing, image sizing, padding, and gaps between the items here to make sure they look good at all possible subejct names etc. i also had to fight a bit with the safe area of the view, you can see in the image below the name “bob” ends slightly above the text, took me a lot longer than expected to fix that"}, {"post_id": 43782, "ts": "2026-08-09T06:43:26Z", "hours": 7.4142, "text": "I started work on rehauling the watchOS app And I really like how it’s coming out The watch is supposed to distill down the information the user needs, so i picked the current and next period, time, and their location. all these elements are glassy and stuff, so they are clickable, and its in a tabview that scrolls between each card. The first tab is the week view for the user. so I spent a good 2 hours trying to make a ScrollView work, but it didnt. sometimes the views teleported, some lagged, some glitched, and it was overall insanely annoying. so I moved to a tabview, which was considerably more stable, but removed the animations I wanted. it had its own animations which were fine, but yeah. Also, fonts also reflect on the watch! the one in the screenshots below is the expanded style, which to be honest isnt that good on watch since the watch is constrained as is, but yeah. The glass timetable actually looks insane I am still thinking of how to include other content, like grades maybe, and other things, but i dont want to make it too dense and slow"}, {"post_id": 43264, "ts": "2026-08-08T12:54:21Z", "hours": 3.6083, "text": "You can now change the font! this took more work than you would expect, because i did a find on the project and saw there were like 60 references to .monospaced, and each one had to be manually upgraded to dynamically apply font. i also tried to make the rounded font expanded, but after some inspection i found it doesnt even have a .expanded variant 😐 so the options i ended up with were monospaced, rounded, and expanded. no normal font. it just looks boring at this point. below is the same screen with each option! widgets also get the fonts, and they look actually insane ngl"}, {"post_id": 43093, "ts": "2026-08-08T05:35:22Z", "hours": 2.4481, "text": "improving the friend detail view the padding is so much nicer, and the detail view also shows more info and in a better way the week subtab shows a similar timetable to the user’s own, and shows more info. and some more statistics lol"}, {"post_id": 42989, "ts": "2026-08-08T00:22:14Z", "hours": 1.9642, "text": "I decided to remove created timetables. they just don’t work anymore with the Friends concept, which makes it really annoying to adjacently share other timetables alongside having friends. its a shame, i wish it could have worked, maybe ill add it again later. oh well. im still just combing through the app and fixing all the little things i see: grade tracker gets a next item in the top for the top 4 subjects, which is important for atar. improved the friend detail view a bit better, because the old one had not enough information and was displaying badly.added more statistics to administration view cos its fun lol the tag selector view was improved, looks nicer and is a tiny bit more legible nowi changed the grade tracker weighting from semester to year. apparently thats the norm more friend detail view improvements"}, {"post_id": 42669, "ts": "2026-08-07T14:52:24Z", "hours": 2.3131, "text": "Grade tracker!!! I know this is a very cliche topic but I had to implement this because it integrates so seamlessly with the app for example, it already knows your subjects (duh) and when you input the date of your assessment, it also knows which period of the day that is, because it knows your subjects! (duh) I also added ATAR, sthe user can set goals and stuff for what they want to achieve."}, {"post_id": 42589, "ts": "2026-08-07T12:33:01Z", "hours": 1.0975, "text": "some ui improvements (that weird box in the account view is Metal debug overlay, not my app)"}, {"post_id": 42549, "ts": "2026-08-07T11:27:09Z", "hours": 5.165, "text": "lots of little things instead of one big feature: i used to send emails, and i reached limits on the email provider so i had to move to only sending notifications, like device notifications. i still need an alternative, im looking through options now there used to be different settings view between iPhone and iPad, so i consolidated them into one view.you can now see your friend’s status as on or off campus. this uses location to check when you reach school or leave. this also allows some cool statistics like average school arrival time!there is better moderation, it shows in the admins view and lets the admin block or do nothing about the account. it will be expanded later to have more features and actions and stuff you can request to change your friends-since tag, also approved by admin.i deleted all (most) references to #if os(macOS) , since there is no more macOS build, its just iPad running on mac. small ui improvements: added search to some more administration views tapping an existing photo pro allows crop the tabview gets tab transitions, like the ones iOS 26 had (that ios27 removed 😡)year-level tags are separated from other tags expanded statistics!added archived events - events in the past - plus an option to automatically delete old events added a button to reset tips, since the app is getting more and more complicated the onboarding is less condensed, when that permission is first needed, its permission sheet request shows.more stuff gets cached in Defaults, making it more offline-safe.and some toolbar and blur and navigation title stuff."}, {"post_id": 41948, "ts": "2026-08-06T14:06:53Z", "hours": 1.2208, "text": "user account data now has highlighted rows for faster navigation user reports look much better, as well as friends-since requests reporting or sending feedback sends notifications instead of emails, now"}, {"post_id": 41911, "ts": "2026-08-06T12:53:26Z", "hours": 4.0961, "text": "Few things! Adminsitration gets new items for reported users and freinds-since requests sections in adminstration statistics for number of users, etc you can now see your status and other people’s status, like on or off campus new page that asks for location access ofc (ill move it into the onboarding later improved the add a friend sheet admins get emails for reported users, etc"}, {"post_id": 41764, "ts": "2026-08-06T04:50:27Z", "hours": 8.5058, "text": "I finished the refactoring for now, to make the app multi platform. So then i did some more brainstorming and I have consolidated what is the next few features I need to do tips, to tell the user about features the app has they sound easy but each tip needs rules and parameters and all kinds of obscure annoying things, so its going to be harder than it looks my first tip shown below An indicator next to each friend about their status, which is going to take the user’s location, taken in the background, to tell if they are on campus or off campus So from this you can tell when a user arrives at school or if they are sick iOS provides a function that will call my app, from the background, every time the user crosses a specific map polygon (The school). so i dont even need to do any map processing, my app just gets called every time the device goes in or out of school! plus i can add cool related features like the user’s average arrival time to school, which will be pretty cool!"}, {"post_id": 40724, "ts": "2026-08-04T13:16:45Z", "hours": 3.6128, "text": "Still just refactoring and remaking the app. i decided to remove OS 26 compatibility, because there is just too many APIs and stuff the images below are some stuff I’ve been refining: dragging friends around sideays iphone support (same thing as macOS + iPadOS) but I’ve decided now to not work on macOS (which is just iPadOS) and ipad until i perfect iphone and watch. should be fun!"}, {"post_id": 40093, "ts": "2026-08-03T14:09:54Z", "hours": 0.6797, "text": "its getting there! mac catalyst is definitely better than trying to make native macOS work. swiftui isnt really making it any better, its really really restrictive in terms of how i can structure my app. like for example that right column, has so many glitches that i cant really find solutions to because the bugs aren’t in my code, its infuriating."}, {"post_id": 40069, "ts": "2026-08-03T13:17:55Z", "hours": 1.1419, "text": "working with macOS is infuriating me, so i decided im going to make the macos app actually be mac catalyst, so its technically just running an ipad app. which makes sense. still needs alot more work, this refactor is proving very very annoying"}, {"post_id": 40036, "ts": "2026-08-03T11:53:01Z", "hours": 1.3019, "text": "first version of timetable for macos 😭 its really ugly and lwk broken. so im gonna spend the next few hours fixing this incredibly “interesting” UI."}, {"post_id": 39979, "ts": "2026-08-03T10:13:36Z", "hours": 3.41, "text": "So so far up to now, I have completely neglected everything other than iPhone. i needed this so that i could focus on making iphone as seamless and intuitive and possible, and to push features faster. so now i have to go and basically remove all of the non-iPhone code and replace it with iphone code, and then try to make that work multiplatform. so i decided iphone is going to remain as a tabview, for now at least, but ipados, macos, and big iphones can use a navigation split view, shown below. so a sidebar and main view and an inspector on the right sometimes."}, {"post_id": 39467, "ts": "2026-08-02T13:08:27Z", "hours": 0.6319, "text": "I checked the localisation and it went down to 25%, so I went and pushed that back up to 100%. and the friend detail view has been improved a bit more"}, {"post_id": 39451, "ts": "2026-08-02T12:29:09Z", "hours": 0.3811, "text": "before and after some small ui improvements!!"}, {"post_id": 39440, "ts": "2026-08-02T12:06:26Z", "hours": 0.6767, "text": "i just read an article that said @Environment(\\.dismiss) is bad for performance dismiss() is a very simple and fast way to make a sheet or other modal view dismiss , but because its so simple and dynamic, that introduces lots of bugs apparently. so I had to go through all the sheets and this time replace dismiss() with better state management. i hope ill notice the performance improvements!"}, {"post_id": 39417, "ts": "2026-08-02T11:25:42Z", "hours": 1.5344, "text": "some people were saying that it was really annoying that you could drag anywhere in a sheet to dismiss the sheet, you would be halfway through something and then you have to restart. so i went through all the sheets in the app and checked if they needed to remove this swiping. luckily it only needed one modifier per sheet. also, more tester feedback was that i shouldnt have sections for tags, so yeah i did that. also, now that there is a concept known as friends, instead of just shared timetables, i removed the option to allow people to have their timetables searched publicly. i havent figured out what i want for specific created timetables, i might lwk have to just remove that also users now have to fill in what year group they are when onboarding. for tags."}, {"post_id": 39252, "ts": "2026-08-02T03:22:29Z", "hours": 3.0194, "text": "friends detail view shows a bit more content, and is redesigned for more paper you can reorder the badges around now for priority when they show in their overlay event tags editor looks a bit nicer plus, users can edit their year group after signing in."}, {"post_id": 38922, "ts": "2026-08-01T14:51:06Z", "hours": 2.6803, "text": "So the header in settings now reflects with your pfp colours for the profile editor, i made it now scrolling so that you could fit in all of the various options, like animation speed and noise and stuff. when you click on a class in today view, it shows some more details about the class like teacher and location. friends view also looks a bit nicer, both the list view and the detail view."}, {"post_id": 38829, "ts": "2026-08-01T12:04:02Z", "hours": 1.9464, "text": "Given the theme of this app, paper, widgets now get paper too! settings for profiles has been updated too you can now select black → white in the colour selector. friend detail view still kinda looks a bit empty and bland, im not quite sure how to make it feel alive"}, {"post_id": 38704, "ts": "2026-08-01T07:32:35Z", "hours": 4.1875, "text": "you can add special badges to people now, for like early birds or something idk. the profile picutre bakground has been upgraded a bit, but im going to have to fork the repo and adjust it myself, its currently not looking like a gradient but a single noisy colour, im gonna fix that."}, {"post_id": 38184, "ts": "2026-07-31T13:32:47Z", "hours": 0.5325, "text": "The bottom colour grid is concentric to the device!!! although making the white outlines also behave nicely is proving really really hard, as you can see below"}, {"post_id": 38170, "ts": "2026-07-31T13:00:49Z", "hours": 3.5731, "text": "I’ve been busy remaking the profile editor, its coming together really nicely. that profile picture at the top is designed so that lets the other components take up their space, and then the pfp takes up the rest of the space. this allows the same view to not scroll while working on different phones and text sizes etc. and the background is animated!!!"}, {"post_id": 37968, "ts": "2026-07-31T01:17:27Z", "hours": 5.3656, "text": "I made this widget, which is kinda like a summary widget for the user. it requires this large widget size to fit everything, and its goign to be more dynamic than the other widget which always show the same layout. i haven’t thought exactly how i’m going to do it though, below is a rough first version."}, {"post_id": 37025, "ts": "2026-07-29T14:32:52Z", "hours": 1.9747, "text": "i added a section in teh administration to be able to turn off the server for everyone except for me, so that i can maintain the server and test it. and also a section to manage other admins."}, {"post_id": 36962, "ts": "2026-07-29T11:55:40Z", "hours": 7.3492, "text": "so me and my friend did some more brainstorming focussing on the new friends tab, and how friend accounts work, and profiles and pfps etc. we also aggregated a list of bugs and UI glitches in the app that still need fixing. the current first version is (moderately) broken 😭"}, {"post_id": 35775, "ts": "2026-07-27T12:45:52Z", "hours": 1.9714, "text": "Me and my friend did a bit of brainstorming, to get ideas on how to improve the app UI, UX and future features. cos we are planning a future release hopefully. so we gained a good idea of consolidating friends into a more clear friends tab, combingin the currently spread-around-everywhere friends stuff."}, {"post_id": 35475, "ts": "2026-07-26T22:47:13Z", "hours": 2.4061, "text": "I made some UX adjsutments in the settings app, added some images, reordered haptics, etc the planner sub-tab has been rehauled, and shows items chronologically instead of in sections, which i thought was more intuitive. it still needs much more thought though, im not sure how to space them out since some gaps are months long."}, {"post_id": 35175, "ts": "2026-07-26T13:01:49Z", "hours": 2.2025, "text": "Theres now brown and white paper combined. its an interesting ui concept, makes no sense in real life, but i think it looks nonetheless! it definitely creates an app theme, regardless of if this theme looks good or not…"}, {"post_id": 35092, "ts": "2026-07-26T09:28:27Z", "hours": 4.1481, "text": "As usual, I did a very assorted bunch of things: new admin tab so that i can change stuff without having to go onto my mac and hardcode stuff today view looks like paper - reminscient of the app icon! new about view the popover for subject details is smaller, removing bloat and a bunch of server improvements due to all of my users finding bugs and stuff!"}, {"post_id": 34919, "ts": "2026-07-26T00:43:54Z", "hours": 4.7894, "text": "I have expanded the home tab!! Theres three tabs at the top, today, week, and upcoming. week is what it already was upcoming shows term dates, no school days, school events, and also the users own personal events they make. the today view is a bit ugly but its sort of there! there also an admin page now, so that i dont have to hardcode term dates etc, i can just send them as api requests (for admin accounts only lol)"}, {"post_id": 34560, "ts": "2026-07-25T11:50:05Z", "hours": 0.755, "text": "Message extension got improved, it now checks if you have enabled sharing before allowing you to even sahre it, and tells"}, {"post_id": 34551, "ts": "2026-07-25T11:04:40Z", "hours": 0.5589, "text": "I’m adding countdowns everywhere, even when school is out, so that you can count the hours until your next period"}, {"post_id": 34537, "ts": "2026-07-25T10:29:10Z", "hours": 0.6072, "text": "This is currently the message extension ui. kinda ugly. that needs fixing I also updated the created timetables detail view, and (ignore the screenshot) removes the save button cos no one is going to remember to press save when they change details, so this should save some frustration."}, {"post_id": 34523, "ts": "2026-07-25T09:48:04Z", "hours": 1.6383, "text": "I improved the UI for this view, to better show classroom and teacher labels. I also renamed “Authored” to “Created”, apparently its better copy, according to my friend. The settings got cleaned up a bit, and importing from calendar again needs confirmation"}, {"post_id": 34495, "ts": "2026-07-25T08:06:40Z", "hours": 1.9119, "text": "I found an xcode bug, something to do with compilation errors for incorrect architecture, i dont get it but i gave apple feedback."}, {"post_id": 34418, "ts": "2026-07-25T03:27:42Z", "hours": 0.5558, "text": "So I made a few more adjustments like removing the APNs registration page from onboarding to make onboarding even more seamless Not important though. I discovered a really annoying problem: When I try to add iPad support, build fails because its trying to embed the watch app which obviously doesnt work on ipad. and xcode isnt letting me fix that. 😐"}, {"post_id": 34073, "ts": "2026-07-24T15:06:09Z", "hours": 4.9253, "text": "I made some UI rehauls again lol Current day receives theis blur effect which kinda looks like real light bouncing inside a box under the current day The accent colour of the app is now brown, as I am trying to make the app feel more like paper, which will become more obvious as i later add paper elements and views inside the app. My last update released a new account backend, which meant some users were not able to log in, so i decided to nuke the database and reset everything 💀 but anyway it worked and i upgraded the server to be better at handling this The sheet to add a shared timetable is improved, with blur effects and stuff, and that tiemtable preview has gotten much better it was pretty bad before ngl"}, {"post_id": 33492, "ts": "2026-07-23T14:13:01Z", "hours": 6.9467, "text": "I did a bunch of things: current day highlight in ios improve the notification early sending, to allow users to send notifications at multiple offsets remake the ui for share timetable sheet also the ui for the link customisation, tinted mint for whatever reason sharing links is now a URL, which prompts you to open the app but uses decently ugly html, ill fix later. New icon for apple watch that is optimised for the smaller display size (just made the components bigger and removed some duplicate elements added some mroe developer items at the bottom, doesnt serve much purpose just looks cool lol i removed the status badges that show success, cos i thought they would annoy the user with too many success alerts, and success when you are toggling settings doesnt really need alerts, so yeah. i also hit a bug where notifications would send twice, i had to improve the apns token system to not duplicate tokens for a device. on startup the app shows “restoring account…” every time, so i had to cache the profile data to make it stay signed in until explicitly signed out. its kinda hard to see in the screenshot but there is progressivew blur at the bottom and top, looks nice"}, {"post_id": 32346, "ts": "2026-07-21T13:36:10Z", "hours": 3.2925, "text": "I had a bug where the device could receive 2 notifications and live activities for each device, so I had to remake the APNs (apple push notification service) token management. I also added a highlight around the current day, with the setting to disable it. i thought a stroke was better than a fill because its less overwhelming and doesn’t break the ui style."}, {"post_id": 32261, "ts": "2026-07-21T10:07:38Z", "hours": 2.5917, "text": "😍"}, {"post_id": 31757, "ts": "2026-07-20T12:16:31Z", "hours": 0.9472, "text": "As you saw before the onboarding UI was a bit broken, so I went through and fixed it up and also trimmed down how many pgaes it has. Those bottom buttons aren’t concentric for some reason, even though I am using the built-in toolbar API, so I can’t fix it. Oh well. And it’s done to 8 pages, from 13. I still have som non-UI bugs to fix."}, {"post_id": 31728, "ts": "2026-07-20T11:15:51Z", "hours": 3.0553, "text": "Updated splash screen Notificaitons now have threads (each school day is a thread) macos window size animation fixed (the macos window resizes depending on the current state of the app, like currently selected tab etc. fixed some bugs in live activities and server authentication"}, {"post_id": 31613, "ts": "2026-07-20T04:58:28Z", "hours": 2.3833, "text": "Fixed some server bugs, a user reported getting “forbidden” status messages, turns out I forgot to migrate the database 😐 And other UI refinements: Tab bar uses monospace font version and build in settings feedback sheet"}, {"post_id": 31570, "ts": "2026-07-20T02:25:41Z", "hours": 0.5333, "text": "Plus a version for debug builds, I think they came out really nice!!"}, {"post_id": 31548, "ts": "2026-07-20T01:23:34Z", "hours": 0.4489, "text": "I think this is pretty much it."}, {"post_id": 31538, "ts": "2026-07-20T00:55:26Z", "hours": 0.7164, "text": "I think I’m getting there"}, {"post_id": 31518, "ts": "2026-07-20T00:10:10Z", "hours": 0.2719, "text": "I think I’ve locked in to this one. Now I need to figure out what to actually put on the papar, im thinking it has to be a kind of simplifed version of the existing main UI of my app. something kinda like a calendar schedule"}, {"post_id": 31513, "ts": "2026-07-19T23:53:55Z", "hours": 0.6131, "text": "So many variants! and idk which one is best"}, {"post_id": 31504, "ts": "2026-07-19T23:17:08Z", "hours": 2.4258, "text": "Many many iterations later… I’m leaning towards that paper one, it looks really tasteful i think. im not sure what to put on the paper though"}, {"post_id": 31176, "ts": "2026-07-19T11:22:39Z", "hours": 0.635, "text": "I think they are coming along really nicely!!!! The watchOS version has bigger title text and less handwriting rows cos its a smaller display size, i really like this 😃 the refraction effects 👌"}, {"post_id": 31171, "ts": "2026-07-19T10:43:22Z", "hours": 0.2894, "text": "I think it’s looking preetty good so far"}, {"post_id": 31156, "ts": "2026-07-19T10:22:03Z", "hours": 0.3833, "text": "More experiments, cos the previous multicolour outline was kinda ugly, now i’m thinking of adding the fake handwriting instead, it might look nice"}, {"post_id": 31145, "ts": "2026-07-19T09:51:42Z", "hours": 6.1353, "text": "I needed a new design system for my app, currently it was just a font and thats about it. Below are some experimental app icons I’ve been tweaking in sigma, they are made out of “paper” and represent a new theme I could use, which is literal paper as the design language. I think it could merge with Liquid Glass really nicely if done properly. Otherwise, other improvements: New App Intents for Apple Intelligence Allow users to set a custom share link URL, for example timetable.adonis.pt/sharedtimetable/adon’s_timetable More server tests + server improvements due to finding bugs in tests"}, {"post_id": 30567, "ts": "2026-07-18T07:42:48Z", "hours": 0.7647, "text": "I have also decided to remove Apple wallet integration, it just kinda got too messy. so im now going to revert (yes, revert 😭) back to an iMessage extension that lets you share timetables with a link. it fixes some annoying things that wallet integration has, like syncing etc. I can even allow custom link urls for a shared timetable!"}, {"post_id": 30552, "ts": "2026-07-18T06:53:52Z", "hours": 4.8108, "text": "I got carried away, since right now I am just going through and fixing the feedback my beta users gave me, starting with these: improving the onboarding flow to decrease the amount of pages, and condense some other pages, since testers said there were too many. Upgrade the server so that it only allows iOS to make changes to anything, since watchos and ipados and macos can only view, not edit. i added some tests, using codex, on the server. I’m getting tired of manually debugging every single problem I find by hand, I just make tests and its a much easier way of guaranteeing your server works perfectly. the client app is going to be much harder to add tests to, though. and more other random stuff I found and UI fixes etc. The screenshots are some broken UI stuff I found, I can’t really show you server bugs other than these error alerts. Going good so far though, can’t wait to release this as a v3!"}, {"post_id": 30017, "ts": "2026-07-17T08:18:20Z", "hours": 1.2478, "text": "After releasing v2 testflight, my friends pointed out a very large amounts of bugs in the app 😭 so I am now just trying to fix everything they pointed out. I’m pretty sure the server doesn’t have any issues, so at least that’s good. First bug is this bottom bar looks horrendous, This was fine for me cos I set my dynamic text size to small 😭"}, {"post_id": 28834, "ts": "2026-07-15T10:39:28Z", "hours": 2.2433, "text": "I made some final refinements to make sure account management on macOS works, so that my users can actually use the app, and then some other UI refinements, mainly for settings. there are a bunch of weird things i am yet to fix, but im really tired and just want to get this app out, so ill fix them later."}, {"post_id": 26526, "ts": "2026-07-11T11:56:12Z", "hours": 0.4547, "text": "I added some more pages to the onboarding, since that’s the only way I can show users how the app works cos it ngl is kinda obscure. i also added a report feedback or bug button, which needs some ui adjustments bruh"}, {"post_id": 26359, "ts": "2026-07-11T03:14:52Z", "hours": 1.1214, "text": "I can’t really show you haptics but i added haptics to buttons and the status badges. not much to say honestly. theres a toggle in settings to turn that on and off."}, {"post_id": 25978, "ts": "2026-07-10T14:57:41Z", "hours": 0.8503, "text": "I;m nearly read to release version 2 of the app, so i made a list of final tweaks and little improvements to make it as best I can, i think i can release it in a few days."}, {"post_id": 25832, "ts": "2026-07-10T09:47:11Z", "hours": 3.5725, "text": "I improved the friends subjects widgets with concentric corners and stuff."}, {"post_id": 24646, "ts": "2026-07-08T11:25:32Z", "hours": 2.6925, "text": "I think I have built out pretty much all of the projects, but i need to fix the abundance of bugs and problems that i have. the first one was fixing a problem with server syncing, and making watch depend on signing in on the phone, not by itself."}, {"post_id": 23437, "ts": "2026-07-06T12:20:38Z", "hours": 1.6219, "text": "I refined the live activities (that background is for recess and lunch, even though this preview text says before school)"}, {"post_id": 23389, "ts": "2026-07-06T09:53:29Z", "hours": 8.7292, "text": "I added live activities, although they are currently kinda ugly and need much improvement. I also made the watch app independent, because it doesnt need the iphone much really, it can just contact the server. i still have more work in making the server work better and stop giving me random errors, but yeah."}, {"post_id": 22056, "ts": "2026-07-04T09:37:57Z", "hours": 2.8419, "text": "In the onboarding I added pages to teach the user the features of the app, but I havent finished it yet. it needs a few more pages and refinement for smalelr phone screens"}, {"post_id": 21441, "ts": "2026-07-03T12:12:36Z", "hours": 6.5136, "text": "I have added an onboarding view that i really like, its very colourful and stuff. i also improved the server to be able to send notifications to users, to tell them when their next class is."}, {"post_id": 20474, "ts": "2026-07-02T02:23:36Z", "hours": 3.1183, "text": "I added notifications to the app, so that people can receive information in the form of notifications as well as live activities and app intents and widgets. I also improved the share pass button in the prominent tab bar, so that you see this sheet to select what pass you want to share, not just the user’s own timetable."}, {"post_id": 19907, "ts": "2026-07-01T10:45:28Z", "hours": 0.4294, "text": "Much better blur, although the server is taking a full 2.5 seconds to send back the pass, and i need to reduce that as much as possible"}, {"post_id": 19874, "ts": "2026-07-01T09:07:49Z", "hours": 0.5289, "text": "The timetable has some shadow behind it. I wanted to make the card HDR, but after a lot of experimenting i found apple doesn’t let you use hdr in your app like this, so i had to instead do this shadow 😐"}, {"post_id": 19839, "ts": "2026-07-01T07:27:59Z", "hours": 5.4344, "text": "I finished the search view, and i spent a very long time on perfecting some visual animations and stuff. when you click on a search result it separately animates the title in. also, before you search anything, i thought instead of showing most downloaded timetables or something i show this really squishy and fun pokemon-style timetable wallet pass. the settings view has also been improved a bit, to make some settings more clear, but i still need to refine it alot further to get it working really nicely."}, {"post_id": 19231, "ts": "2026-06-30T14:26:57Z", "hours": 3.5647, "text": "I did some debugging and made quite a lot more endpoints, I think I’m ready to move on to making the app."}, {"post_id": 18340, "ts": "2026-06-29T13:38:09Z", "hours": 5.9711, "text": "It took quite some time, but i got some really nice looking status badges! I’m really proud of how they came out, they look very juicy, and i cant show it here but i promise its very touchable and squishy and animated! 🥰"}, {"post_id": 17491, "ts": "2026-06-28T09:18:06Z", "hours": 1.3717, "text": "I’ve built a few endpoints and documented them in rapidapi, ready to import into the client app."}, {"post_id": 17396, "ts": "2026-06-28T04:54:23Z", "hours": 2.2958, "text": "I finally got the server working! took a really long time to get https working though, nginx was impressively difficult"}, {"post_id": 16990, "ts": "2026-06-27T15:55:13Z", "hours": 3.0039, "text": "I have started building the server, using swift vapor. i chose vapor because it is written with swift, like my project, which made it easier to share code between the two files."}, {"post_id": 16274, "ts": "2026-06-26T13:42:03Z", "hours": 4.8597, "text": "Xcode seems to have become extremely broken or something, i spent the last 4 hours trying to make my widget work but Xcode kept erroring out and eating memory swap, and now i have some trouble with making the imported timetables actually show up in the widgets i already made 😡"}, {"post_id": 15592, "ts": "2026-06-25T11:12:59Z", "hours": 0.6642, "text": "I changed the blur effect to this, which i think is much better, because it has less blur, and doesnt add an ugly grey tint, so black background stays black background."}, {"post_id": 15058, "ts": "2026-06-24T13:45:05Z", "hours": 0.5081, "text": "I added this blur effect behind the share sheet, and I think it looks really nice. I had to import a package to get a blur this clear"}, {"post_id": 15044, "ts": "2026-06-24T13:04:35Z", "hours": 1.7442, "text": "I added a share button in the bottom left, which allows the user to share their timetable in one press, using the .prominent Tab style so that it looks seperate from the other tabs while still looking consistent."}, {"post_id": 13120, "ts": "2026-06-21T13:40:22Z", "hours": 1.0011, "text": "So added the ability to share timetables using apple wallet, along with sending them using messages, i think that background will need to get fixed for readability, but otherwise, i like it alot."}, {"post_id": 13066, "ts": "2026-06-21T11:31:59Z", "hours": 3.4256, "text": "I added some App Intents, below is my current subject intent, and also a list of received timetables intent. It took a lot longer than expected because the app intents framework was quite confusing to get working, but i got a nice UI in the end."}, {"post_id": 12370, "ts": "2026-06-20T05:56:30Z", "hours": 1.4289, "text": "I upgraded the watch views, like making the progress rectangle rounded, and this very colourful background for when its recess and lunch"}, {"post_id": 11882, "ts": "2026-06-19T11:15:08Z", "hours": 2.4344, "text": "I updated the background of the window, including in light mode, and I also remade the icon. The settings also looks much better than it was before, and I made a nice window animation for when you click a slot to see what your friends have."}, {"post_id": 9773, "ts": "2026-06-16T06:48:43Z", "hours": 1.3667, "text": "I made some refinements to the watchOS and iOS app, including design and performance."}, {"post_id": 9217, "ts": "2026-06-15T14:09:02Z", "hours": 0.8633, "text": "I made some design adjustments to the macOS app, giving it a blur background. Also, the weekly shedule widget has had its corner radiuses and colours adjusted to be less harsh and look better."}, {"post_id": 9192, "ts": "2026-06-15T13:10:48Z", "hours": 0.2592, "text": "I added some buttons and refined the UI of settings view"}, {"post_id": 9182, "ts": "2026-06-15T12:32:38Z", "hours": 0.5969, "text": "I continued to refine the design of the macOS widget, and I really like it now."}, {"post_id": 9098, "ts": "2026-06-15T06:29:44Z", "hours": 3.9675, "text": "I fixed the widget extension problem by making two widget extensions, one for watch and one for other platforms, and made them use identical code. And then I refined the widget design for macOS and iOS and i think they look really nice now."}, {"post_id": 7893, "ts": "2026-06-13T05:18:30Z", "hours": 0.5119, "text": "I added support for these widgets from only watch to iphone and ipad and macOS, and currently they are ugly and unrefined, so I’m going to fix them now."}, {"post_id": 7438, "ts": "2026-06-12T11:50:09Z", "hours": 3.1881, "text": "I ported the app over to macOS, which was harder than I thought because there was a lot of code throughout every screen that was for connecting iphone to apple watch or some other iOS-only thing, which I had to conditionally compile out for macOS. then I needed to refine the views to work on macOS well, for example the class editor sheet used a sidebar instead of the scrolling tabview on iOS. There’s still more work to do to refine it more and get CloudKit working so that the timetable syncs across devices."}, {"post_id": 6885, "ts": "2026-06-11T15:22:19Z", "hours": 2.7783, "text": "I added these views to the watch, so you can see how much time is left in a session for yourself, and also for others. i also refined the timetable view to not use so much glass because it was lagging the TabView. The main clock uses a liquid glass background against the background progressview, and what class is next."}, {"post_id": 6796, "ts": "2026-06-11T12:06:20Z", "hours": 0.8469, "text": "I fixed the sync button visuals, it now has a blur replace transition effect. the timetable comparison view also blurs in and out when you click around"}, {"post_id": 6781, "ts": "2026-06-11T11:08:53Z", "hours": 2.6286, "text": "I moved the sync button to settings, so that the toolbar in the timetable tab could be removed. this is to make way for this new bottom half of the screen that shows other people’s timetables when you click on the slot in the top half, replacing the previous system of letting you select someone else and see their whole timetable covering your timetable. this system lets you view your own timetable and compare it with everyone else’s at a particular period. It uses a soft scroll edge effect at the bottom, and a hard effect at the top, which i think looks really nice. the second image shows the content scrolling under the timetable, which i really liked."}, {"post_id": 6247, "ts": "2026-06-10T14:30:26Z", "hours": 0.8989, "text": "I’m just refining the software a but before I start adding Siri support and improving Messages import/export flow. I fixed this comparison view, improved the class editor to show the glass nicer, and the settings toolbar has a gradient blur effect instead of hard blur, which was made the new default toolbar background style, which imo is ugly."}, {"post_id": 6208, "ts": "2026-06-10T12:53:06Z", "hours": 4.0678, "text": "I renamed PMS Timetable to Timetable, which took more time than I expected cos it was embedded in like every single file and I even had to go through binary files and just delete all the instances of “pms” . then this managed to corrupt Xcode and make it crash every time I opened it, and i had to delete some stuff to fix that. Now I’m on the OS27 version and I’m going to start fixing some UI."}]...
|
Title: Timetable by @omeriadon | Stardance
Devlog Title: Timetable by @omeriadon | Stardance
Devlogs:
I renamed PMS Timetable to Timetable, which took more time than I expected cos it was embedded in like every single file and I even had to go through binary files and just delete all the instances of “pms” . then this managed to corrupt Xcode and make it crash every time I opened it, and i had to delete some stuff to fix that. Now I’m on the OS27 version and I’m going to start fixing some UI.
I’m just refining the software a but before I start adding Siri support and improving Messages import/export flow. I fixed this comparison view, improved the class editor to show the glass nicer, and the settings toolbar has a gradient blur effect instead of hard blur, which was made the new default toolbar background style, which imo is ugly.
I moved the sync button to settings, so that the toolbar in the timetable tab could be removed. this is to make way for this new bottom half of the screen that shows other people’s timetables when you click on the slot in the top half, replacing the previous system of letting you select someone else and see their whole timetable covering your timetable. this system lets you view your own timetable and compare it with everyone else’s at a particular period. It uses a soft scroll edge effect at the bottom, and a hard effect at the top, which i think looks really nice. the second image shows the content scrolling under the timetable, which i really liked.
I fixed the sync button visuals, it now has a blur replace transition effect. the timetable comparison view also blurs in and out when you click around
I added these views to the watch, so you can see how much time is left in a session for yourself, and also for others. i also refined the timetable view to not use so much glass because it was lagging the TabView. The main clock uses a liquid glass background against the background progressview, and what class is next.
I ported the app over to macOS, which was harder than I thought because there was a lot of code throughout every screen that was for connecting iphone to apple watch or some other iOS-only thing, which I had to conditionally compile out for macOS. then I needed to refine the views to work on macOS well, for example the class editor sheet used a sidebar instead of the scrolling tabview on iOS. There’s still more work to do to refine it more and get CloudKit working so that the timetable syncs across devices.
I added support for these widgets from only watch to iphone and ipad and macOS, and currently they are ugly and unrefined, so I’m going to fix them now.
I fixed the widget extension problem by making two widget extensions, one for watch and one for other platforms, and made them use identical code. And then I refined the widget design for macOS and iOS and i think they look really nice now.
I continued to refine the design of the macOS widget, and I really like it now.
I added some buttons and refined the UI of settings view
I made some design adjustments to the macOS app, giving it a blur background. Also, the weekly shedule widget has had its corner radiuses and colours adjusted to be less harsh and look better.
I made some refinements to the watchOS and iOS app, including design and performance.
I updated the background of the window, including in light mode, and I also remade the icon. The settings also looks much better than it was before, and I made a nice window animation for when you click a slot to see what your friends have.
I upgraded the watch views, like making the progress rectangle rounded, and this very colourful background for when its recess and lunch
I added some App Intents, below is my current subject intent, and also a list of received timetables intent. It took a lot longer than expected because the app intents framework was quite confusing to get working, but i got a nice UI in the end.
So added the ability to share timetables using apple wallet, along with sending them using messages, i think that background will need to get fixed for readability, but otherwise, i like it alot.
I added a share button in the bottom left, which allows the user to share their timetable in one press, using the .prominent Tab style so that it looks seperate from the other tabs while still looking consistent.
I added this blur effect behind the share sheet, and I think it looks really nice. I had to import a package to get a blur this clear
I changed the blur effect to this, which i think is much better, because it has less blur, and doesnt add an ugly grey tint, so black background stays black background.
Xcode seems to have become extremely broken or something, i spent the last 4 hours trying to make my widget work but Xcode kept erroring out and eating memory swap, and now i have some trouble with making the imported timetables actually show up in the widgets i already made 😡
I have started building the server, using swift vapor. i chose vapor because it is written with swift, like my project, which made it easier to share code between the two files.
I finally got the server working! took a really long time to get https working though, nginx was impressively difficult
I’ve built a few endpoints and documented them in rapidapi, ready to import into the client app.
It took quite some time, but i got some really nice looking status badges! I’m really proud of how they came out, they look very juicy, and i cant show it here but i promise its very touchable and squishy and animated! 🥰
I did some debugging and made quite a lot more endpoints, I think I’m ready to move on to making the app.
I finished the search view, and i spent a very long time on perfecting some visual animations and stuff. when you click on a search result it separately animates the title in. also, before you search anything, i thought instead of showing most downloaded timetables or something i show this really squishy and fun pokemon-style timetable wallet pass. the settings view has also been improved a bit, to make some settings more clear, but i still need to refine it alot further to get it working really nicely.
The timetable has some shadow behind it. I wanted to make the card HDR, but after a lot of experimenting i found apple doesn’t let you use hdr in your app like this, so i had to instead do this shadow 😐
Much better blur, although the server is taking a full 2.5 seconds to send back the pass, and i need to reduce that as much as possible
I added notifications to the app, so that people can receive information in the form of notifications as well as live activities and app intents and widgets. I also improved the share pass button in the prominent tab bar, so that you see this sheet to select what pass you want to share, not just the user’s own timetable.
I have added an onboarding view that i really like, its very colourful and stuff. i also improved the server to be able to send notifications to users, to tell them when their next class is.
In the onboarding I added pages to teach the user the features of the app, but I havent finished it yet. it needs a few more pages and refinement for smalelr phone screens
I added live activities, although they are currently kinda ugly and need much improvement. I also made the watch app independent, because it doesnt need the iphone much really, it can just contact the server. i still have more work in making the server work better and stop giving me random errors, but yeah.
I refined the live activities (that background is for recess and lunch, even though this preview text says before school)
I think I have built out pretty much all of the projects, but i need to fix the abundance of bugs and problems that i have. the first one was fixing a problem with server syncing, and making watch depend on signing in on the phone, not by itself.
I improved the friends subjects widgets with concentric corners and stuff.
I;m nearly read to release version 2 of the app, so i made a list of final tweaks and little improvements to make it as best I can, i think i can release it in a few days.
I can’t really show you haptics but i added haptics to buttons and the status badges. not much to say honestly. theres a toggle in settings to turn that on and off.
I added some more pages to the onboarding, since that’s the only way I can show users how the app works cos it ngl is kinda obscure. i also added a report feedback or bug button, which needs some ui adjustments bruh
I made some final refinements to make sure account management on macOS works, so that my users can actually use the app, and then some other UI refinements, mainly for settings. there are a bunch of weird things i am yet to fix, but im really tired and just want to get this app out, so ill fix them later.
After releasing v2 testflight, my friends pointed out a very large amounts of bugs in the app 😭 so I am now just trying to fix everything they pointed out. I’m pretty sure the server doesn’t have any issues, so at least that’s good. First bug is this bottom bar looks horrendous, This was fine for me cos I set my dynamic text size to small 😭
I got carried away, since right now I am just going through and fixing the feedback my beta users gave me, starting with these: improving the onboarding flow to decrease the amount of pages, and condense some other pages, since testers said there were too many. Upgrade the server so that it only allows iOS to make changes to anything, since watchos and ipados and macos can only view, not edit. i added some tests, using codex, on the server. I’m getting tired of manually debugging every single problem I find by hand, I just make tests and its a much easier way of guaranteeing your server works perfectly. the client app is going to be much harder to add tests to, though. and more other random stuff I found and UI fixes etc. The screenshots are some broken UI stuff I found, I can’t really show you server bugs other than these error alerts. Going good so far though, can’t wait to release this as a v3!
I have also decided to remove Apple wallet integration, it just kinda got too messy. so im now going to revert (yes, revert 😭) back to an iMessage extension that lets you share timetables with a link. it fixes some annoying things that wallet integration has, like syncing etc. I can even allow custom link urls for a shared timetable!
I needed a new design system for my app, currently it was just a font and thats about it. Below are some experimental app icons I’ve been tweaking in sigma, they are made out of “paper” and represent a new theme I could use, which is literal paper as the design language. I think it could merge with Liquid Glass really nicely if done properly. Otherwise, other improvements: New App Intents for Apple Intelligence Allow users to set a custom share link URL, for example timetable.adonis.pt/sharedtimetable/adon’s_timetable More server tests + server improvements due to finding bugs in tests
More experiments, cos the previous multicolour outline was kinda ugly, now i’m thinking of adding the fake handwriting instead, it might look nice
I think it’s looking preetty good so far
I think they are coming along really nicely!!!! The watchOS version has bigger title text and less handwriting rows cos its a smaller display size, i really like this 😃 the refraction effects 👌
Many many iterations later… I’m leaning towards that paper one, it looks really tasteful i think. im not sure what to put on the paper though
So many variants! and idk which one is best
I think I’ve locked in to this one. Now I need to figure out what to actually put on the papar, im thinking it has to be a kind of simplifed version of the existing main UI of my app. something kinda like a calendar schedule
I think I’m getting there
I think this is pretty much it.
Plus a version for debug builds, I think they came out really nice!!
Fixed some server bugs, a user reported getting “forbidden” status messages, turns out I forgot to migrate the database 😐 And other UI refinements: Tab bar uses monospace font version and build in settings feedback sheet
Updated splash screen Notificaitons now have threads (each school day is a thread) macos window size animation fixed (the macos window resizes depending on the current state of the app, like currently selected tab etc. fixed some bugs in live activities and server authentication
As you saw before the onboarding UI was a bit broken, so I went through and fixed it up and also trimmed down how many pgaes it has. Those bottom buttons aren’t concentric for some reason, even though I am using the built-in toolbar API, so I can’t fix it. Oh well. And it’s done to 8 pages, from 13. I still have som non-UI bugs to fix.
😍
I had a bug where the device could receive 2 notifications and live activities for each device, so I had to remake the APNs (apple push notification service) token management. I also added a highlight around the current day, with the setting to disable it. i thought a stroke was better than a fill because its less overwhelming and doesn’t break the ui style.
I did a bunch of things: current day highlight in ios improve the notification early sending, to allow users to send notifications at multiple offsets remake the ui for share timetable sheet also the ui for the link customisation, tinted mint for whatever reason sharing links is now a URL, which prompts you to open the app but uses decently ugly html, ill fix later. New icon for apple watch that is optimised for the smaller display size (just made the components bigger and removed some duplicate elements added some mroe developer items at the bottom, doesnt serve much purpose just looks cool lol i removed the status badges that show success, cos i thought they would annoy the user with too many success alerts, and success when you are toggling settings doesnt really need alerts, so yeah. i also hit a bug where notifications would send twice, i had to improve the apns token system to not duplicate tokens for a device. on startup the app shows “restoring account…” every time, so i had to cache the profile data to make it stay signed in until explicitly signed out. its kinda hard to see in the screenshot but there is progressivew blur at the bottom and top, looks nice
I made some UI rehauls again lol Current day receives theis blur effect which kinda looks like real light bouncing inside a box under the current day The accent colour of the app is now brown, as I am trying to make the app feel more like paper, which will become more obvious as i later add paper elements and views inside the app. My last update released a new account backend, which meant some users were not able to log in, so i decided to nuke the database and reset everything 💀 but anyway it worked and i upgraded the server to be better at handling this The sheet to add a shared timetable is improved, with blur effects and stuff, and that tiemtable preview has gotten much better it was pretty bad before ngl
So I made a few more adjustments like removing the APNs registration page from onboarding to make onboarding even more seamless Not important though. I discovered a really annoying problem: When I try to add iPad support, build fails because its trying to embed the watch app which obviously doesnt work on ipad. and xcode isnt letting me fix that. 😐
I found an xcode bug, something to do with compilation errors for incorrect architecture, i dont get it but i gave apple feedback.
I improved the UI for this view, to better show classroom and teacher labels. I also renamed “Authored” to “Created”, apparently its better copy, according to my friend. The settings got cleaned up a bit, and importing from calendar again needs confirmation
This is currently the message extension ui. kinda ugly. that needs fixing I also updated the created timetables detail view, and (ignore the screenshot) removes the save button cos no one is going to remember to press save when they change details, so this should save some frustration.
I’m adding countdowns everywhere, even when school is out, so that you can count the hours until your next period
Message extension got improved, it now checks if you have enabled sharing before allowing you to even sahre it, and tells
I have expanded the home tab!! Theres three tabs at the top, today, week, and upcoming. week is what it already was upcoming shows term dates, no school days, school events, and also the users own personal events they make. the today view is a bit ugly but its sort of there! there also an admin page now, so that i dont have to hardcode term dates etc, i can just send them as api requests (for admin accounts only lol)
As usual, I did a very assorted bunch of things: new admin tab so that i can change stuff without having to go onto my mac and hardcode stuff today view looks like paper - reminscient of the app icon! new about view the popover for subject details is smaller, removing bloat and a bunch of server improvements due to all of my users finding bugs and stuff!
Theres now brown and white paper combined. its an interesting ui concept, makes no sense in real life, but i think it looks nonetheless! it definitely creates an app theme, regardless of if this theme looks good or not…
I made some UX adjsutments in the settings app, added some images, reordered haptics, etc the planner sub-tab has been rehauled, and shows items chronologically instead of in sections, which i thought was more intuitive. it still needs much more thought though, im not sure how to space them out since some gaps are months long.
Me and my friend did a bit of brainstorming, to get ideas on how to improve the app UI, UX and future features. cos we are planning a future release hopefully. so we gained a good idea of consolidating friends into a more clear friends tab, combingin the currently spread-around-everywhere friends stuff.
so me and my friend did some more brainstorming focussing on the new friends tab, and how friend accounts work, and profiles and pfps etc. we also aggregated a list of bugs and UI glitches in the app that still need fixing. the current first version is (moderately) broken 😭
i added a section in teh administration to be able to turn off the server for everyone except for me, so that i can maintain the server and test it. and also a section to manage other admins.
I made this widget, which is kinda like a summary widget for the user. it requires this large widget size to fit everything, and its goign to be more dynamic than the other widget which always show the same layout. i haven’t thought exactly how i’m going to do it though, below is a rough first version.
I’ve been busy remaking the profile editor, its coming together really nicely. that profile picture at the top is designed so that lets the other components take up their space, and then the pfp takes up the rest of the space. this allows the same view to not scroll while working on different phones and text sizes etc. and the background is animated!!!
The bottom colour grid is concentric to the device!!! although making the white outlines also behave nicely is proving really really hard, as you can see below
you can add special badges to people now, for like early birds or something idk. the profile picutre bakground has been upgraded a bit, but im going to have to fork the repo and adjust it myself, its currently not looking like a gradient but a single noisy colour, im gonna fix that.
Given the theme of this app, paper, widgets now get paper too! settings for profiles has been updated too you can now select black → white in the colour selector. friend detail view still kinda looks a bit empty and bland, im not quite sure how to make it feel alive
So the header in settings now reflects with your pfp colours for the profile editor, i made it now scrolling so that you could fit in all of the various options, like animation speed and noise and stuff. when you click on a class in today view, it shows some more details about the class like teacher and location. friends view also looks a bit nicer, both the list view and the detail view.
friends detail view shows a bit more content, and is redesigned for more paper you can reorder the badges around now for priority when they show in their overlay event tags editor looks a bit nicer plus, users can edit their year group after signing in.
some people were saying that it was really annoying that you could drag anywhere in a sheet to dismiss the sheet, you would be halfway through something and then you have to restart. so i went through all the sheets in the app and checked if they needed to remove this swiping. luckily it only needed one modifier per sheet. also, more tester feedback was that i shouldnt have sections for tags, so yeah i did that. also, now that there is a concept known as friends, instead of just shared timetables, i removed the option to allow people to have their timetables searched publicly. i havent figured out what i want for specific created timetables, i might lwk have to just remove that also users now have to fill in what year group they are when onboarding. for tags.
i just read an article that said @Environment(\.dismiss) is bad for performance dismiss() is a very simple and fast way to make a sheet or other modal view dismiss , but because its so simple and dynamic, that introduces lots of bugs apparently. so I had to go through all the sheets and this time replace dismiss() with better state management. i hope ill notice the performance improvements!
before and after some small ui improvements!!
I checked the localisation and it went down to 25%, so I went and pushed that back up to 100%. and the friend detail view has been improved a bit more
So so far up to now, I have completely neglected everything other than iPhone. i needed this so that i could focus on making iphone as seamless and intuitive and possible, and to push features faster. so now i have to go and basically remove all of the non-iPhone code and replace it with iphone code, and then try to make that work multiplatform. so i decided iphone is going to remain as a tabview, for now at least, but ipados, macos, and big iphones can use a navigation split view, shown below. so a sidebar and main view and an inspector on the right sometimes.
first version of timetable for macos 😭 its really ugly and lwk broken. so im gonna spend the next few hours fixing this incredibly “interesting” UI.
working with macOS is infuriating me, so i decided im going to make the macos app actually be mac catalyst, so its technically just running an ipad app. which makes sense. still needs alot more work, this refactor is proving very very annoying
its getting there! mac catalyst is definitely better than trying to make native macOS work. swiftui isnt really making it any better, its really really restrictive in terms of how i can structure my app. like for example that right column, has so many glitches that i cant really find solutions to because the bugs aren’t in my code, its infuriating.
Still just refactoring and remaking the app. i decided to remove OS 26 compatibility, because there is just too many APIs and stuff the images below are some stuff I’ve been refining: dragging friends around sideays iphone support (same thing as macOS + iPadOS) but I’ve decided now to not work on macOS (which is just iPadOS) and ipad until i perfect iphone and watch. should be fun!
I finished the refactoring for now, to make the app multi platform. So then i did some more brainstorming and I have consolidated what is the next few features I need to do tips, to tell the user about features the app has they sound easy but each tip needs rules and parameters and all kinds of obscure annoying things, so its going to be harder than it looks my first tip shown below An indicator next to each friend about their status, which is going to take the user’s location, taken in the background, to tell if they are on campus or off campus So from this you can tell when a user arrives at school or if they are sick iOS provides a function that will call my app, from the background, every time the user crosses a specific map polygon (The school). so i dont even need to do any map processing, my app just gets called every time the device goes in or out of school! plus i can add cool related features like the user’s average arrival time to school, which will be pretty cool!
Few things! Adminsitration gets new items for reported users and freinds-since requests sections in adminstration statistics for number of users, etc you can now see your status and other people’s status, like on or off campus new page that asks for location access ofc (ill move it into the onboarding later improved the add a friend sheet admins get emails for reported users, etc
user account data now has highlighted rows for faster navigation user reports look much better, as well as friends-since requests reporting or sending feedback sends notifications instead of emails, now
lots of little things instead of one big feature: i used to send emails, and i reached limits on the email provider so i had to move to only sending notifications, like device notifications. i still need an alternative, im looking through options now there used to be different settings view between iPhone and iPad, so i consolidated them into one view.you can now see your friend’s status as on or off campus. this uses location to check when you reach school or leave. this also allows some cool statistics like average school arrival time!there is better moderation, it shows in the admins view and lets the admin block or do nothing about the account. it will be expanded later to have more features and actions and stuff you can request to change your friends-since tag, also approved by admin.i deleted all (most) references to #if os(macOS) , since there is no more macOS build, its just iPad running on mac. small ui improvements: added search to some more administration views tapping an existing photo pro allows crop the tabview gets tab transitions, like the ones iOS 26 had (that ios27 removed 😡)year-level tags are separated from other tags expanded statistics!added archived events - events in the past - plus an option to automatically delete old events added a button to reset tips, since the app is getting more and more complicated the onboarding is less condensed, when that permission is first needed, its permission sheet request shows.more stuff gets cached in Defaults, making it more offline-safe.and some toolbar and blur and navigation title stuff.
some ui improvements (that weird box in the account view is Metal debug overlay, not my app)
Grade tracker!!! I know this is a very cliche topic but I had to implement this because it integrates so seamlessly with the app for example, it already knows your subjects (duh) and when you input the date of your assessment, it also knows which period of the day that is, because it knows your subjects! (duh) I also added ATAR, sthe user can set goals and stuff for what they want to achieve.
I decided to remove created timetables. they just don’t work anymore with the Friends concept, which makes it really annoying to adjacently share other timetables alongside having friends. its a shame, i wish it could have worked, maybe ill add it again later. oh well. im still just combing through the app and fixing all the little things i see: grade tracker gets a next item in the top for the top 4 subjects, which is important for atar. improved the friend detail view a bit better, because the old one had not enough information and was displaying badly.added more statistics to administration view cos its fun lol the tag selector view was improved, looks nicer and is a tiny bit more legible nowi changed the grade tracker weighting from semester to year. apparently thats the norm more friend detail view improvements
improving the friend detail view the padding is so much nicer, and the detail view also shows more info and in a better way the week subtab shows a similar timetable to the user’s own, and shows more info. and some more statistics lol
You can now change the font! this took more work than you would expect, because i did a find on the project and saw there were like 60 references to .monospaced, and each one had to be manually upgraded to dynamically apply font. i also tried to make the rounded font expanded, but after some inspection i found it doesnt even have a .expanded variant 😐 so the options i ended up with were monospaced, rounded, and expanded. no normal font. it just looks boring at this point. below is the same screen with each option! widgets also get the fonts, and they look actually insane ngl
I started work on rehauling the watchOS app And I really like how it’s coming out The watch is supposed to distill down the information the user needs, so i picked the current and next period, time, and their location. all these elements are glassy and stuff, so they are clickable, and its in a tabview that scrolls between each card. The first tab is the week view for the user. so I spent a good 2 hours trying to make a ScrollView work, but it didnt. sometimes the views teleported, some lagged, some glitched, and it was overall insanely annoying. so I moved to a tabview, which was considerably more stable, but removed the animations I wanted. it had its own animations which were fine, but yeah. Also, fonts also reflect on the watch! the one in the screenshots below is the expanded style, which to be honest isnt that good on watch since the watch is constrained as is, but yeah. The glass timetable actually looks insane I am still thinking of how to include other content, like grades maybe, and other things, but i dont want to make it too dense and slow
there is a new progress background: its not a background! inspired by the app icon / ios app, the progress view is now this marker thingy which fits into the app’s theme much nicer I’ve also been tweaking the font sizing, image sizing, padding, and gaps between the items here to make sure they look good at all possible subejct names etc. i also had to fight a bit with the safe area of the view, you can see in the image below the name “bob” ends slightly above the text, took me a lot longer than expected to fix that
I also made some improvements to the card height for the user’s own item. before, it was just the full width. Halfway while I was working on that, my TabView suddenly froze for a straight 20 seconds every time i changed the tab. this was very weird, and the CPU shows 0% usage, so I was quite surprised. After a large round of commenting things out and seeing what broke, I found it was a single .glassEffect() that I was using for the progress marker. I have no idea how a glass effect can make an entire tabview freeze, but fine. i replaced it with a simple red colour, as shown below, with a stroke and shadow, and i think it looks fine now.
I added a new devices statistics view. or more accurately, i expanded it. before, it just shows device platforms. now, it shows the os version, minor os version, and if it is a beta or not. i also added support for iOS 26 (previous builds only supported OS27 or later). this involved me just making some features not work on os26 😐 and supporting anything before OS26 would probably be legitimately impossible, so yeah not that.
Big update! Light mode! The app used to be dark mode only, it let me make it look much more pixel-perfect and refine colours and stuff, but its kinda obvious you cant keep the app dark mode only, its just not good. so i went through everything, adding light mode versions of paper, text, glass, etc. took me quite a bit of time because i was trying to maintain consistency while doing it, which included alot of redoing things and creating view modifiers and manually applying each one, etc i also added weatherkit, its just a single line in the today tab, but its nice. while adding light mode support, i found a really nice blur view i could add to lists, so now each lists’s background is nothing other than a blur! i also decided to make all backgrounds made out of paper, and i think it looks nice? theres also now a statistics page for deices and os versions and builds and stuff, itll be more useful later. as well as knowing when your friends arrive to school, i added the ability to know when they are within 5 or 10 mins, and to send notifications for that. average arrival also is split by day now, because people arrive to school at different times per day theres a new tab picker, which you can see int eh controls, its much more glassy than the last one, which is really really playful and stuff! i still have more work to do in terms of ui work, excluding light mode refinements, like notifications and widgets, but yeah.
I added accessibility improvements, mainly like labels and tags and stuff, for use with voice over etc. this was triggered by me installing a developer process into my app which allowed me to iterate on design faster, and it depended on accessibility elements to discover each element. (the purple thing lets you tap elements and comment on them) i also tried a new background for the cards, as you can see below, its just glass and i think it looks pretty nice
You can now edit the foreground colours for your profile picture monogram i also completed light mode support for widgets
I added custom backgrounds! Theres the paper backgrounds i added recently, and then the solid colours, and then also some of the really nice apple ones idk what they are called (i hope apple doesnt copyright me 😭) so yeah it applies to all backgrounds in the app i think it merges really nice with the liquid glass and blur backgrounds different views have it also shows on watch i also added an option to choose how far forward you see events. theres also even more statistics for what app version people are using!
So supporting light mode calls for an icon redesign, at least just for light mode, and here they are! Though to be honest, the entire app is gonna need a redesign, because I need to rename it from Timetable, because it has expanded into doing so much more, and timetable is a bit of a boring name. finding names is so insanely annoying though, but oh well.
I spent some time to work on this search button and its animation. idk if the video plays, but it uses apples glass effect transitions! I also made the confirmation dialogs for removing and reporting a friend better, before they just popped up in the middle of the screen, now it comes out of the menu (also found another ios27 beta bug 😐)
A somewhat interesting devlog this time. I spend a good 2 hours just trying to make live activities work. the miserable part is that they were already working before 😭 I dont even know what I did but it broke. And while i was trying to make a debug button to start a live activity, yeah it just wasn’t working. all kinds of problems with not submitting a good APNs token. and i had to like stop activities before starting new ones and stuff it was just in general really annoying. there was even more problems but its too much to say here 😔 anyway, i have started cleaning up the app. no more big features, to be honest, until i add a website for this thing!! should be really easy since the backend is clearly all done lol events can show weather for them, such as the athletics carnival i removed the ridiculous backgrounds i allowed users to choose, theres no only solid black/white and paper. more reasonable, i think. as part of my optimisation, i removed settings i found useless. haptics are now always on, and highlighting the current day is always on. profile pictures can now have their foreground colour set, like the Monogram can have its colour optimised.you can see the average for when your friends arrive to school per day, instead of in total. developer settings also got reorganised, more settings only show to developers. yet again cleaning up the app experience. the location status was a bit unreliable, if users were offline, etc, so i added multiple ways the app pushes updates to the server, and queued statuses when the device was offline. i also refined the actual radius for what counts as within 5 / 10 minutes, should be a bit better. i havent thought about people who live within 10 minutes, thats an interesting case the subject editors grid also looks nicer (still needs more improvement though the tabview now hides while scrolling, like it collapses into the corner, like apple apps! you can manually turn off sharing your status, for privacy reasons. and some more things i forgot 🥹 im so excited for this thing to actually launch!!!!!
new icons. the old one that now supports light mode was kinda ugly.
Ok so after a bunch of wrestling with nginx and bun and next.js, i have added the website! its at https://timetable.adonis.pt/ and the current api has been moved to https://timetable.adonis.pt/api Its the usual next.js thing. and it uses bun. my design idea for this is to look like its an ipad app, essentially, and im going to see exactly how far i can take the mimicking, maybe i can even add liquid glass to the web 💀 So yeah no more app building, now its website! It’s gonna be so much easier as well because I aleady have the backend done and tested, so this should be all design which will be really fun.
The website is alive! I got a screenshot of an iOS26 sidebar, and i am copying it, as you can see. looks nice i think
Hehehehe I’ve got a working version of liquid glass It uses gsap, which is nice the second image is an earlier version 😭
Its nice and squishy now! It uses gsap for this as well gsap is a great framework ngl
And now it scales up and down and stuff!!! I still can’t believe this is just html and css and js 😭 Theres so many parameters to tweak to make it feel right, its so finicky And depending on the size of the glass, you have to change the numbers, its kinda confusing honestly
So I’ve made the first version of the website, it’s really insanely buggy and broken, but the ui is there. so have the html good but no i need to really tweak the css to make it look nice, apple-style. i also need to figure out how to make loading states look nice, since unlike the the swiftui app, i can’t cache anything to not show loading state. in the plus side i dont have to deal with offline state, though. the sidebar and the toolbar are finished, and look really nice. the sidebar has an effect (from ipados) that basically reflects the content in a subtle blurred way, to make it feel like glass while not actually rendering anything expensive. The toolbar is just glass buttons + a black fade effect + progressives blur, also tuned to look like ipados. the icon in the sidebar is pretty ugly honestly so i need to replace that with the non-bordered icon. The other problem i am dealing with is that we are planning a complete redesign of the entire swiftui app, and obviously that has to propagate to the website, so any work i do now is kinda gonna be half wasted, depending on what the redesign actually looks like.
I’m still working on making the UI look much better, and I’m still figuring out some website stuff like how i should wire up the sidebar tabs as well as having like a nice homepage to advertise everything the app does, which will be a really fun sub-project. Turns out making nice looking lists in react is much harder than it looks, as shown below 😭 one problem is that each symbol has a different aspect ratio so i dont even know how to fit them nicely And unlike swiftui, its raelly raelly hard to stay consistent in your css and to keep using the ui tokens instead of making custom css everywhere. it looks like the website is gonna be harder than the app to make after all 😔 this classes card though, for example, i think its pretty much almost done. i might need a few more borders to make it look glassy and stuff but it looks exactly like the ios version, which is the end goal! And I added the animations to the classes card, again exactly like the iphone app. i also got a vscode extension that shows you all of your unused css classes, i highly recommend getting one and purging your codebase!
So the previous UI was really ugly, to be honest, so i decided I am oing to scrap half of the design and completely unstyle the entire app while making everything as standardised as possible, by trying to only use reused components as much as possible. So I spent all today stripping out components I didn’t need, then take the surviving components and adjusting them to my use case and making then look as nice as I can. alert dialogs drawers buttons lists section cards switches I have also decided to stop using tailwind because its quite simply messy and much more confusing than just moduled css, so ye
I have pretty much finished the components, I’m going to now go and add the other shared components and improve them too. then im gonna go through the css files and clear anything that is unused or overcomplicated, and then i can start remaking the website!
I think I have finished making all of the shared components I put everything inside accordions to organise the test components Overlays get the same translucency and outline every other component gets I think im happy with how the lists look, finally the option selectors are really really hot!!! The first page I have remade is the About view, which shows this badge if you are on localhost lol i also had to move the contributors up to the server instead of hardcoding them so that both website and app can see it And a really nice little animated gradient thingy for the about view!!
I have started using the shared components around the website, and its actually looking pretty nice! most importantly, these components can be changed once and work everywhere and i removed the drawers i was using everywhere, and i also made said drawers wider while i was rehauling the drawers i also kinda broke their animations and i don’t know how to fix it 😭 the whole website looks really basic now, since its obviously using now the shard unstyled components, and i was thinking about the theme and decided maybe it should be unstyled, and only the user’s own events and content etc can have colours.
I started to make the landing page, and i decided, after very much research from other landing sites I’ve seen, that the main item should be an interactive timetable, a version of the app icon. but interactive and glassy. im trying to recreate everything in css but its not looking as smooth and polished as real liquid glass does so ye. im kinda getting close though! I also added a navbar item that just is the link to actually open timetable, and when you hover it shows options to either open the app in testflight or open the web version which just redirects to /login. and its background switches to black when you start scrolling, which will make more sense later. i haven’t really planned the rest of the landing page, and i might remove this entire component if i find a good liquid glass implementation i can use, especially with bouncy animations etc. but yeah. (worst part is i might even just go change the entire app icon in a week so that kinda wastes all this time 😭😭😭)
After much trying to make glass, yet again, i failed. So now im just using blur and these edge effects, and i think it looks nice! theres even a hover eect, as shown in the second screenshot (class details show and the rectangle rotates a bit randomly)
I added a title to the lading site, but as you can see its not just any title. it uses this package called fitty to make the text size up to the full width of the page, and it does indeed look massive. and it also goes under the rectangles of the logo, so its like an apple depth effect you get on iphone lockscreens i found the website really laggy while scrolling somewhere while finishing of the main interactive icon, and i couldnt figure out why after removing everything that could have been gpu intensive (my gpu was spiking to 80% while just scrolling) so after all that my most likely theory is that the lag is just my computer and not the website (or both 😭😭) also when i made that main art, i made the border radii use px units, which made it look quite deformed on smaller screens, since the rectangle’s size is relative to screen width, whereas border radius is constant… so i went and fixed that too
I really wanted the first screen for timetable to look really really interesting and unique and instantly recognisable as Timetable, so i made the text instead of a boring white, it now has 3 really nice effects applied: A grain overlay, or noise, which in this case doesn’t make it look paper but looks nice nonetheless Its not flat white, its white at the top and goes to brown at the bottom, more noticeable when you close up. subtle but also nice The “white” isn’t even white. Its a particular white image i had a lot of difficulty in obtaining. it is the third screenshot, the “white” png. Its an .avif , and it uses some HDR-capable color space format something, which on compatible browsers make the timetable text show considerably brighter than everywhere else on your screen, which makes it really pop! i plan on using this effect in other places as well across the landing page to make it just pop a bit more. (the 4th image shows the white pixel showing as 1.25. anything above 1 is hdr.)
I did a few things in this devlog, got quite carried away frankly. So I migrated the codebase from Next.js to Tanstack. The reason was that i was seeing a lot of speed concerns, especially on the landing page. it was just lagging so much. i tried it on all my devices on all the browsers and it was there half the time. after a lot of commenting things out i just couldnt find a bug, so now i moved to tanstack. hopefully taht will remove at least some problems. in any case, i got bored of next.js and tanstack is a different framework to play with and make use of!! also, i continued the landing page by adding cards for each item. i don’t really like it right now, but i have established that i need to add these cards, if not in a different UI. The titles of each card are just image-masks, of Apple wallpapers! i went through some archive and picked out the ones i like, and applied a brightness 200% filter, and they look really nice now. after i finish the landing page im gonna work on rehauling the rest of the ui to be more intuitive and actually usable
ok so i think i have optimised it as much as i can lol tanstack clearly was a good idea, it just needed some optimisations!
Im making a 3d model of the school. this is so that i can show a whole literal map of the campus in the app, and then you can see where each user is, in 3d! i could even reexport it for the website, potentially its going to be interactive and everything
As well as migrating to Tanstack, I wanted even more speed, just for fun at this point honestly, so I decided to move to SolidJS from React. Its decently faster while looking similar to react, and it has some syntax stuff that i much prefer over react. this is basically just adding some margin for me to make bad code The end product looks identical so theres not much to show.. apart from the migration, I’ve also been designing the new landing page, which will also use the 3d model thing. the big question is figuring out how to make the 3d markers for each classroom register correctly, because i need to show a pin for each user at the right place, from swiftui, and somehow embed it into a realitykit 3d model. but im sure this use case has been done many times before so i can find something online!
Continuing the assorted improvements to the app: Fixed stacked drawers so nested drawer state updates reactively. Reworked the Friends page into shared List, ListSection, ListRow, and Card components. Preserved friend drag-and-drop ordering within the new layout. Improved timetable UX: i fixed the lesson selection in week view correctly aligned the “now” indicator in today view restricted timetable mode navigation to mobile through CSS, cos desktop already has the sidebar improved planner event styling. made the drawer compenent animate in and out, something i lost from the react -> solid migration I also added a reusable event-tag selection row with symbols and selected-state feedback.
Ships:
So I made a timetable app for my school, super-specialised and for ios, watchos, and macos. its got live activities and notifications to show you current and next subjects throughout the school day, widgets for your weekly schedule, ability to see your friends’ timetables, and server sync. and apple intelligence support!
This ship, I completely remade the app to work around accounts, and all the features that come with that I added a server, because it used to just store your timetable in your local storage and that was quite boring honestly creating a server for this has allowed me to add accounts, notifications, live activities, friends, shared events, multiple devices in the same account, and has made the website much easier to make (still in development, thats why the top devlogs are talking about the website not the app) The app now has all of this: Grades, track the score of all of your subjects notifications for each subject you have and your events etc live activity throughout each school day telling you your subjects etc sharing your location, subjects, and more with friends widgets that show your your subjects, upcoming events, and your friends’ schedules lots of administration options to manage pretty much everything, including who else is admin lol full support for siri, shortcuts, spotlight, and apple intelligence a full apple watch app btw i know 350 hours on a timetable app sounds insane (😭) but its because this project has 4 different aspects: swiftui client for iPhone, iPad, and mac swiftui client for apple watch a website client (still in development) the server that handles everything, and the database i promise it does more than just tell you your subjects 🙏...
|
1792878455.271768
|
1793742455.271768
|
|
14117
|
Making my first portfolio! by @wiiuavi | Stardance
|
wiiuavi
|
2
|
11.0
|
102
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T21:32:24Z", "hours": 6.0, "multiplier": 10.23, "payout": 76, "blessing": "neutral", "text": "Made an informal portfolio site. This ship was more about fixing the things that I got wrong last time after looking at feedback (mobile support, sounds, favicon, more stuff, more projects, links dont work, boxes overlap each other, ect) Its minecraft themed :) best experience on pc but now mobile can enjoy too! Oh and maybe domain too!", "repo": "https://github.com/wiiuavi/web-portfolio", "demo": "https://wiiuavi.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-21T21:31:58Z", "hours": 5.0, "multiplier": 5.71, "payout": 26, "blessing": "neutral", "text": "I made my own web portfolio! I can add the rest of the projects I do here (for style points ofc), themed around my favourite game! went semi-heavy on animations, 2nd time using html/css/js to quite the learning curve! (maybe a rocket-themed section for stardance next?)", "repo": "https://github.com/wiiuavi/web-portfolio", "demo": "https://wiiuavi.vercel.app/"}]...
|
[{"post_id": 29774, "ts": "202 [{"post_id": 29774, "ts": "2026-07-16T21:29:27Z", "hours": 1.1611, "text": "Added sounds, both for mobile and pc (spent a lot of time trynna make it work out the box, but sound needs user interaction to work, so js dropped it. added slideshow img too, and favicon (small stuff here and there)"}, {"post_id": 29045, "ts": "2026-07-15T18:15:16Z", "hours": 2.6442, "text": "fixed a lot of bugs that arised from previous commit and rest of the reviews. made the hamburger button actually work, game mobile some hovers which actually worked, fixed the more coming soon overlay, basically everything in the last devlog but way better."}, {"post_id": 28448, "ts": "2026-07-14T18:14:10Z", "hours": 2.3592, "text": "I spent way longer than i shouldve fixing some bugs, made a hamburger menu for mobile, also gave mobile some of the pc animations. I spent quite a while trying to fix the scrollshow at the bottom, even with ai, it wouldn’t work, idk why. also made it way easier to add projects easily and made everything neater, following vote reviews"}, {"post_id": 13353, "ts": "2026-06-21T21:27:42Z", "hours": 0.7961, "text": "Added a scrollshow + farewell note on it, (gif is very slow), site is way better than gif, as you scroll, next image is displayed. (and fixed bugs + footer position)"}, {"post_id": 11941, "ts": "2026-06-19T14:04:32Z", "hours": 1.2772, "text": "Got a About me section and contact me section going, fixed some animations, fixed majority of navbar shortcuts, added some new animations…"}, {"post_id": 10832, "ts": "2026-06-17T19:30:54Z", "hours": 0.5925, "text": "Got the site up on Vercel, added the “projects” area where I can add the other stuff imma make during stardance (and after), got some sick pop-out cards for projects with diff colour shadows. (mainly trying to makesure everything is flexible, so i can easily add any future projects)"}, {"post_id": 10560, "ts": "2026-06-17T10:57:03Z", "hours": 1.9544, "text": "Achieved creating a template-page for my web-portfolio, tried out a few different themes and settled with a mc-themed one. Got the homepage going, with a working navbar that fades in when scrolling away from homepage hero-image, and working (very basic) footer. Todo: add more content, fix navbar when zooming in too much add different sections (projects, cv, other) add contacts (github, dc)"}]...
|
Title: Making my first portfolio! by @wiiuavi | St Title: Making my first portfolio! by @wiiuavi | Stardance
Devlogs:
Achieved creating a template-page for my web-portfolio, tried out a few different themes and settled with a mc-themed one. Got the homepage going, with a working navbar that fades in when scrolling away from homepage hero-image, and working (very basic) footer. Todo: add more content, fix navbar when zooming in too much add different sections (projects, cv, other) add contacts (github, dc)
Got the site up on Vercel, added the “projects” area where I can add the other stuff imma make during stardance (and after), got some sick pop-out cards for projects with diff colour shadows. (mainly trying to makesure everything is flexible, so i can easily add any future projects)
Got a About me section and contact me section going, fixed some animations, fixed majority of navbar shortcuts, added some new animations…
Added a scrollshow + farewell note on it, (gif is very slow), site is way better than gif, as you scroll, next image is displayed. (and fixed bugs + footer position)
I spent way longer than i shouldve fixing some bugs, made a hamburger menu for mobile, also gave mobile some of the pc animations. I spent quite a while trying to fix the scrollshow at the bottom, even with ai, it wouldn’t work, idk why. also made it way easier to add projects easily and made everything neater, following vote reviews
fixed a lot of bugs that arised from previous commit and rest of the reviews. made the hamburger button actually work, game mobile some hovers which actually worked, fixed the more coming soon overlay, basically everything in the last devlog but way better.
Added sounds, both for mobile and pc (spent a lot of time trynna make it work out the box, but sound needs user interaction to work, so js dropped it. added slideshow img too, and favicon (small stuff here and there)
Ships:
I made my own web portfolio! I can add the rest of the projects I do here (for style points ofc), themed around my favourite game! went semi-heavy on animations, 2nd time using html/css/js to quite the learning curve! (maybe a rocket-themed section for stardance next?)
Made an informal portfolio site. This ship was more about fixing the things that I got wrong last time after looking at feedback (mobile support, sounds, favicon, more stuff, more projects, links dont work, boxes overlap each other, ect) Its minecraft themed :) best experience on pc but now mobile can enjoy too! Oh and maybe domain too!...
|
1792875267.8995152
|
1793739267.8995152
|
|
14184
|
Website by @ghx312 | Stardance
|
ghx312
|
2
|
16.0
|
55
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T05:58:52Z", "hours": 14.0, "multiplier": 3.57, "payout": 49, "blessing": "neutral", "text": "This is my personal website where I post things that I feel are interesting. This time I have added the following notes onto my website. They are mostly about cryptography (Practice and study of hiding information so that only authorized people can read or use it) I try my best to make everything understandable but sometimes it still remainds abit abstract. Introduction to Qubits CHSH Game (Introduction, Explaination, Derivation of Optimal Strategy, Clear Explaination of solution + DEMO Code) LLL Reduction Algorithm (Introduction, Derivation, and Application + DEMO Code) CryptoHack Modular Arithmetic Course Guide CryptoHack Guide for Modular Arithmetic and Public-Key Cryptography Introduction to ZKPs Proof of knowledge (Completeness, Soundness, Zero-Knowledge) Schnorr’s Protocol + Sigma Protocols Special Soundness + Rewinding Honest Verifier Zero Knowledge (HVZK) + Special Honest Verifier Zero Knowledge (SHVZK) Non-Interactive Zero Knowledge (NIZK) + Forgery, Random Oracle (RO) and Programmable Random Oracles (PRO) Girault’s Identification Protocols OR Proofs Perdersen Commitments Okamoto’s Identification Protocol Proof of Equal Commitments (PoEC), PoEC w Different Binding Generators, Proof of Squared Commitments Blum’s Protocol for Hamiltonian Cycles Universal Composability Fischlin Transform I will be finishing up ZKPs soon adding SNARKs, ZK-SNARKs (Groth16) Thanks for rating 🌞", "repo": "https://github.com/ghx312/ghx312.github.io", "demo": "https://ghx312.github.io/"}, {"ship_num": 2, "ts": "2026-07-03T14:28:20Z", "hours": 2.0, "multiplier": 3.65, "payout": 6, "blessing": "neutral", "text": "This is my personal website where I put things that I find interesting and some knowledge that I would like to share with everyone.", "repo": "https://github.com/ghx312/ghx312.github.io", "demo": "https://ghx312.github.io/"}]...
|
[{"post_id": 61984, "ts": "202 [{"post_id": 61984, "ts": "2026-09-05T05:48:56Z", "hours": 4.0114, "text": "Added notes for Zero-Knowledge Proofs Includes: Introduction to ZKPs Proof of knowledge (Completeness, Soundness, Zero-Knowledge) Schnorr’s Protocol + Sigma Protocols Special Soundness + Rewinding Honest Verifier Zero Knowledge (HVZK) + Special Honest Verifier Zero Knowledge (SHVZK) Non-Interactive Zero Knowledge (NIZK) + Forgery, Random Oracle (RO) and Programmable Random Oracles (PRO) Girault’s Identification Protocols OR Proofs Perdersen Commitments Okamoto’s Identification Protocol Proof of Equal Commitments (PoEC), PoEC w Different Binding Generators, Proof of Squared Commitments Blum’s Protocol for Hamiltonian Cycles Universal Composability Fischlin Transform To be added: SNARKs, ZK-SNARKs (Groth16)"}, {"post_id": 41754, "ts": "2026-08-06T04:39:43Z", "hours": 5.0628, "text": "CryptoHack Guide for Modular Arithmetic and Public-Key Cryptography"}, {"post_id": 32231, "ts": "2026-07-21T08:29:03Z", "hours": 4.6275, "text": "DEVLOG#1 Added a few segments: Introduction to Qubits CHSH Game (Introduction, Explaination, Derivation of Optimal Strategy, Clear Explaination of solution + DEMO Code) LLL Reduction Algorithm (Introduction, Derivation, and Application + DEMO Code) CryptoHack Modular Arithmetic Course Guide"}, {"post_id": 21499, "ts": "2026-07-03T14:14:56Z", "hours": 1.7014, "text": "AAβ-Cryptosystem Notes I recently stumbled upon a cryptographic system using Diophantine Equations. I have never heard of such a system before and it intrigued me, so I decided to learn what it was. Today I just added the notes and information that I have learnt from this cryptosystem onto my personal website."}]...
|
Title: Website by @ghx312 | Stardance
Devlogs:
AA Title: Website by @ghx312 | Stardance
Devlogs:
AAβ-Cryptosystem Notes I recently stumbled upon a cryptographic system using Diophantine Equations. I have never heard of such a system before and it intrigued me, so I decided to learn what it was. Today I just added the notes and information that I have learnt from this cryptosystem onto my personal website.
DEVLOG#1 Added a few segments: Introduction to Qubits CHSH Game (Introduction, Explaination, Derivation of Optimal Strategy, Clear Explaination of solution + DEMO Code) LLL Reduction Algorithm (Introduction, Derivation, and Application + DEMO Code) CryptoHack Modular Arithmetic Course Guide
CryptoHack Guide for Modular Arithmetic and Public-Key Cryptography
Added notes for Zero-Knowledge Proofs Includes: Introduction to ZKPs Proof of knowledge (Completeness, Soundness, Zero-Knowledge) Schnorr’s Protocol + Sigma Protocols Special Soundness + Rewinding Honest Verifier Zero Knowledge (HVZK) + Special Honest Verifier Zero Knowledge (SHVZK) Non-Interactive Zero Knowledge (NIZK) + Forgery, Random Oracle (RO) and Programmable Random Oracles (PRO) Girault’s Identification Protocols OR Proofs Perdersen Commitments Okamoto’s Identification Protocol Proof of Equal Commitments (PoEC), PoEC w Different Binding Generators, Proof of Squared Commitments Blum’s Protocol for Hamiltonian Cycles Universal Composability Fischlin Transform To be added: SNARKs, ZK-SNARKs (Groth16)
Ships:
This is my personal website where I put things that I find interesting and some knowledge that I would like to share with everyone.
This is my personal website where I post things that I feel are interesting. This time I have added the following notes onto my website. They are mostly about cryptography (Practice and study of hiding information so that only authorized people can read or use it) I try my best to make everything understandable but sometimes it still remainds abit abstract. Introduction to Qubits CHSH Game (Introduction, Explaination, Derivation of Optimal Strategy, Clear Explaination of solution + DEMO Code) LLL Reduction Algorithm (Introduction, Derivation, and Application + DEMO Code) CryptoHack Modular Arithmetic Course Guide CryptoHack Guide for Modular Arithmetic and Public-Key Cryptography Introduction to ZKPs Proof of knowledge (Completeness, Soundness, Zero-Knowledge) Schnorr’s Protocol + Sigma Protocols Special Soundness + Rewinding Honest Verifier Zero Knowledge (HVZK) + Special Honest Verifier Zero Knowledge (SHVZK) Non-Interactive Zero Knowledge (NIZK) + Forgery, Random Oracle (RO) and Programmable Random Oracles (PRO) Girault’s Identification Protocols OR Proofs Perdersen Commitments Okamoto’s Identification Protocol Proof of Equal Commitments (PoEC), PoEC w Different Binding Generators, Proof of Squared Commitments Blum’s Protocol for Hamiltonian Cycles Universal Composability Fischlin Transform I will be finishing up ZKPs soon adding SNARKs, ZK-SNARKs (Groth16) Thanks for rating 🌞...
|
1793087256.0048842
|
1793173656.0048842
|
|
14278
|
KlassicOS by @Wirenux | Stardance
|
Wirenux
|
2
|
11.0
|
51
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T15:58:21Z", "hours": 3.0, "multiplier": 18.98, "payout": 51, "blessing": "neutral", "text": "KlassicOS is a web-based OS that recreates the KDE 1.0 desktop experience directly in the browser. Using a VM to experience old OS is heavy, and most “Web OS” projects rely on “bloated” modern frameworks like React. I wanted to bring back the look of early Linux without all the VM things. I built the entire system from scratch using pure HTML, CSS, and Vanilla JavaScript, bundled with Vite (to publish it on Vercel & for dev) . I coded a custom DOM-based window manager to handle dragging, resizing, and z-index stacking with classic 3D borders. To make it authentic, I added an AMIBIOS boot sequence + a real-time RAM check and SVG Energy Star logo. I also designed a modular app registry to manage and launch the system’s built-in software. This includes functional recreations of KCalc, KWrite, and a custom Netscape Navigator. It even features Konsole, a working bash-like terminal emulator inspired by my bare-metal OS project, NoxOS. Everything runs entirely client-side, keeping the architecture as snappy and lightweight like the 90s systems.", "repo": "https://github.com/wirenux/KlassicOS", "demo": "https://klassic-os.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-16T05:57:33Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve make web-based Operating System (OS) that recreates the classic look and feel of KDE 1.0. KlassicOS is build with HTML, CSS, and vanilla JavaScript. The difficult part of this project was finding idea off apps I can include and the Window Management. In this os there is 4 main application, KWrite to write some text, Konsole the terminal, Netscape Navigator the browser and System Info who just print the project info :-)", "repo": "https://github.com/wirenux/KlassicOS", "demo": "https://klassic-os.vercel.app/"}]...
|
[{"post_id": 16980, "ts": "202 [{"post_id": 16980, "ts": "2026-06-27T15:48:29Z", "hours": 0.3497, "text": "Updated the README to ship ! Link: https://github.com/wirenux/KlassicOS"}, {"post_id": 16965, "ts": "2026-06-27T15:23:33Z", "hours": 0.7669, "text": "Just add a fake BIOS loading screen"}, {"post_id": 16780, "ts": "2026-06-27T07:47:22Z", "hours": 0.4325, "text": "I now have a right-click menu with the ability to change the background theme"}, {"post_id": 16769, "ts": "2026-06-27T07:19:32Z", "hours": 1.2081, "text": "Add a the calculator app + custom width & height for application (+ some little invisible fix)"}, {"post_id": 7496, "ts": "2026-06-12T14:37:41Z", "hours": 0.3783, "text": "Add full system info app"}, {"post_id": 7430, "ts": "2026-06-12T11:38:41Z", "hours": 0.7919, "text": "Ready to be Ship ! https://github.com/wirenux/KlassicOS"}, {"post_id": 7391, "ts": "2026-06-12T10:03:27Z", "hours": 0.6486, "text": "Konsole v0.X.X-UNSTABLE now work :"}, {"post_id": 7371, "ts": "2026-06-12T09:03:28Z", "hours": 0.3386, "text": "There now is Desktop Shorcut"}, {"post_id": 7366, "ts": "2026-06-12T08:39:26Z", "hours": 0.3542, "text": "Now have resizable window"}, {"post_id": 7355, "ts": "2026-06-12T08:15:35Z", "hours": 0.6769, "text": "Just move the task bar to the top like the real KDE 1.0. Now the Netscape browser work (can browse button actually do things)"}, {"post_id": 6869, "ts": "2026-06-11T14:58:01Z", "hours": 1.2189, "text": "Just add Netscape Navigator. I’ve recreated all of the ui element in pure js + css combo ! Now i just need to add an iframe to display actual webpages."}, {"post_id": 6772, "ts": "2026-06-11T10:49:42Z", "hours": 0.3106, "text": "I just add an invisible change, now the apps are in differents files. So the whole “OS” logic is in 216 lines of JS 😂"}, {"post_id": 6766, "ts": "2026-06-11T10:27:49Z", "hours": 0.5286, "text": "Now have taskbar and focused windows"}, {"post_id": 6383, "ts": "2026-06-10T18:58:17Z", "hours": 0.265, "text": "Added: Multiple windows (text editor, system info) + “startup-menu”"}, {"post_id": 5852, "ts": "2026-06-09T20:01:18Z", "hours": 0.4806, "text": "Dragable window are now up !"}, {"post_id": 5707, "ts": "2026-06-09T16:32:16Z", "hours": 0.9108, "text": "I’m now able to spawn windows with the original KDE 1.0 style"}, {"post_id": 5675, "ts": "2026-06-09T15:35:10Z", "hours": 0.7547, "text": "Now have, background gradient + taskbar"}]...
|
Title: KlassicOS by @Wirenux | Stardance
Devlogs: Title: KlassicOS by @Wirenux | Stardance
Devlogs:
Now have, background gradient + taskbar
I’m now able to spawn windows with the original KDE 1.0 style
Dragable window are now up !
Added: Multiple windows (text editor, system info) + “startup-menu”
Now have taskbar and focused windows
I just add an invisible change, now the apps are in differents files. So the whole “OS” logic is in 216 lines of JS 😂
Just add Netscape Navigator. I’ve recreated all of the ui element in pure js + css combo ! Now i just need to add an iframe to display actual webpages.
Just move the task bar to the top like the real KDE 1.0. Now the Netscape browser work (can browse button actually do things)
Now have resizable window
There now is Desktop Shorcut
Konsole v0.X.X-UNSTABLE now work :
Ready to be Ship ! https://github.com/wirenux/KlassicOS
Add full system info app
Add a the calculator app + custom width & height for application (+ some little invisible fix)
I now have a right-click menu with the ability to change the background theme
Just add a fake BIOS loading screen
Updated the README to ship ! Link: https://github.com/wirenux/KlassicOS
Ships:
I’ve make web-based Operating System (OS) that recreates the classic look and feel of KDE 1.0. KlassicOS is build with HTML, CSS, and vanilla JavaScript. The difficult part of this project was finding idea off apps I can include and the Window Management. In this os there is 4 main application, KWrite to write some text, Konsole the terminal, Netscape Navigator the browser and System Info who just print the project info :-)
KlassicOS is a web-based OS that recreates the KDE 1.0 desktop experience directly in the browser. Using a VM to experience old OS is heavy, and most “Web OS” projects rely on “bloated” modern frameworks like React. I wanted to bring back the look of early Linux without all the VM things. I built the entire system from scratch using pure HTML, CSS, and Vanilla JavaScript, bundled with Vite (to publish it on Vercel & for dev) . I coded a custom DOM-based window manager to handle dragging, resizing, and z-index stacking with classic 3D borders. To make it authentic, I added an AMIBIOS boot sequence + a real-time RAM check and SVG Energy Star logo. I also designed a modular app registry to manage and launch the system’s built-in software. This includes functional recreations of KCalc, KWrite, and a custom Netscape Navigator. It even features Konsole, a working bash-like terminal emulator inspired by my bare-metal OS project, NoxOS. Everything runs entirely client-side, keeping the architecture as snappy and lightweight like the 90s systems....
|
1793087584.820904
|
1793173984.820904
|
|
14330
|
J.A.R.V.I.S. (but for NASA) by @prajithvishnur | S J.A.R.V.I.S. (but for NASA) by @prajithvishnur | Stardance...
|
prajithvishnur
|
2
|
9.0
|
114
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T18:30:46Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built an AI jarvis (its rate limited because i cant pay right now sorry) but I think its really cool! its hosted on vercel!", "repo": "https://github.com/prajith-vishnu/stardance-jarvis", "demo": "https://stardancejarvis.vercel.app"}, {"ship_num": 2, "ts": "2026-06-17T16:46:47Z", "hours": 7.0, "multiplier": 15.92, "payout": 114, "blessing": "neutral", "text": "I built an AI Jarvis that is purely for NASA-based queries. It gives real-time updates using multiple NASA APIs. My biggest problem was figuring out APIs and using Google Gemini as the base for this project. My biggest limitation is that I can’t pay for the better version, so I run into my Gemini limits pretty fast. I hope you enjoy!", "repo": "https://github.com/prajith-vishnu/stardance-jarvis", "demo": "https://stardancejarvis.vercel.app"}]...
|
[{"post_id": 25433, "ts": "202 [{"post_id": 25433, "ts": "2026-07-09T18:16:51Z", "hours": 1.9306, "text": "I got the project hosted onto vercel"}, {"post_id": 10730, "ts": "2026-06-17T16:44:34Z", "hours": 0.3333, "text": "Added a couple of late-minute changes to make it work better overall. Might add a backup api key later. Shipping for now!"}, {"post_id": 6923, "ts": "2026-06-11T16:27:56Z", "hours": 1.3964, "text": "Made final tweaks. The app looks kinda awesome. Only downside is that it has Gemini free api limits…. but I think it’s almost ready to ship!"}, {"post_id": 6429, "ts": "2026-06-10T20:15:13Z", "hours": 3.7769, "text": "Finally got it published on a website. Looking good. Worked on improving the ui. I think it’s going pretty well."}, {"post_id": 5928, "ts": "2026-06-09T22:04:47Z", "hours": 0.96, "text": "Working on getting the project put on a website. Everything seems to be going well so far. i worked on trying to make everything look cool and professional. I hope this goes well!"}, {"post_id": 5744, "ts": "2026-06-09T17:24:16Z", "hours": 0.2981, "text": "For the second major phase of my Stardance project, I transformed my local python program from a basic command-line interface into an immersive NASA Mission Control simulator. I learned a lot about python and API keys. I overhauled the user experience by building a retro-futuristic ASCII art boot banner, integrating ANSI color matrices for a custom green and cyan HUD terminal, and restructuring the system prompt to promote the operator to “Flight Director.” Technically, I expanded the architecture to dual-query multiple NASA assets simultaneously, including live orbital asteroid defense feeds and deep-space candidate star monitoring, while maintaining a persistent chat state pipeline so the assistant retains context across multiple telemetry commands. I hope to improve this so much and turn it into a website. Right now its talking using my mac."}, {"post_id": 5728, "ts": "2026-06-09T17:02:34Z", "hours": 0.4303, "text": "For my first devlog, I successfully built and launched the initial prototype of my JARVIS AI assistant using Python on macOS. By integrating NASA’s open APIs with the Google-GenAI SDK running a gemini-2.5-flash model, I created a continuous terminal chat loop that behaves exactly like Tony Stark’s sophisticated assistant. Despite hitting a package namespace conflict and a temporary 503 server capacity spike, the script’s exception handling kept the program alive, ultimately delivering a live, in-character briefing on NASA’s current Mars and Artemis missions."}]...
|
Title: J.A.R.V.I.S. (but for NASA) by @prajithvish Title: J.A.R.V.I.S. (but for NASA) by @prajithvishnur | Stardance
Devlogs:
For my first devlog, I successfully built and launched the initial prototype of my JARVIS AI assistant using Python on macOS. By integrating NASA’s open APIs with the Google-GenAI SDK running a gemini-2.5-flash model, I created a continuous terminal chat loop that behaves exactly like Tony Stark’s sophisticated assistant. Despite hitting a package namespace conflict and a temporary 503 server capacity spike, the script’s exception handling kept the program alive, ultimately delivering a live, in-character briefing on NASA’s current Mars and Artemis missions.
For the second major phase of my Stardance project, I transformed my local python program from a basic command-line interface into an immersive NASA Mission Control simulator. I learned a lot about python and API keys. I overhauled the user experience by building a retro-futuristic ASCII art boot banner, integrating ANSI color matrices for a custom green and cyan HUD terminal, and restructuring the system prompt to promote the operator to “Flight Director.” Technically, I expanded the architecture to dual-query multiple NASA assets simultaneously, including live orbital asteroid defense feeds and deep-space candidate star monitoring, while maintaining a persistent chat state pipeline so the assistant retains context across multiple telemetry commands. I hope to improve this so much and turn it into a website. Right now its talking using my mac.
Working on getting the project put on a website. Everything seems to be going well so far. i worked on trying to make everything look cool and professional. I hope this goes well!
Finally got it published on a website. Looking good. Worked on improving the ui. I think it’s going pretty well.
Made final tweaks. The app looks kinda awesome. Only downside is that it has Gemini free api limits…. but I think it’s almost ready to ship!
Added a couple of late-minute changes to make it work better overall. Might add a backup api key later. Shipping for now!
I got the project hosted onto vercel
Ships:
I built an AI Jarvis that is purely for NASA-based queries. It gives real-time updates using multiple NASA APIs. My biggest problem was figuring out APIs and using Google Gemini as the base for this project. My biggest limitation is that I can’t pay for the better version, so I run into my Gemini limits pretty fast. I hope you enjoy!
I built an AI jarvis (its rate limited because i cant pay right now sorry) but I think its really cool! its hosted on vercel!...
|
1793084147.8355317
|
1793170547.8355317
|
|
14349
|
RetrOS by @SirYanni | Stardance
|
SirYanni
|
2
|
6.0
|
10
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-01T18:47:51Z", "hours": 1.0, "multiplier": 7.55, "payout": 10, "blessing": "neutral", "text": "For WebOS 2, I made four for additions to RetrOS, wich are a new font, a calculator (!!!), an export feature for MicroMemo and a Taskbar. For further info on the apps, please see the last devlog. I’m really proud of how this turned out, and will definitely continue building on this. Hope y’all enjoy it!", "repo": "https://github.com/siryanni/RetrOS", "demo": "https://siryanni.github.io/RetrOS/"}, {"ship_num": 2, "ts": "2026-06-16T13:40:13Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "RetrOS shipping I made a Retro-Themed WebOS (hence the name), using the given Guide. I myself added my own apps, such as HobbyTrack, MicroMemo, PixelPainter and RetroPet. I am really proud of integrating HobbyTrack, as I find it very useful, and hope yall will too! The Project was a very fun journey, especially considering it was my (kind of) first real HTML Project. I hope enjoy using RetrOS just as much as I do.", "repo": "https://github.com/siryanni/RetrOS", "demo": "https://siryanni.github.io/RetrOS/"}]...
|
[{"post_id": 20178, "ts": "202 [{"post_id": 20178, "ts": "2026-07-01T18:44:02Z", "hours": 1.3281, "text": "WebOS 2 RetrOS additions Today I added 4 new features: New Font! New App, the “Calc-95” A Taskbar Export feature for MicroMemo 1. The new font The new System-Font is now “VT323” 2.Calc-95 The new app, “Calc-95” is a basic calculator using Js-logic 3.The Taskbar The new Taskbar allows to minimize apps and see wich are currently open, as before you could only overlap apps wich just wasnt great tbh. 4.Export for MicroMemo You can now export your notes written in MicroMemo using the “export” button, wich will then download a .txt to save any important notes! Hope yall enjoy the features I made for WebOS 2, cya!"}, {"post_id": 9933, "ts": "2026-06-16T13:34:18Z", "hours": 0.9514, "text": "Finalized the new Apps! I just pushed the final updates for RetrOS. PixelPaint and RetroPet are officially implemented, working and the design look clean with the new icons! Also cleaned up some code before pushing everything to GitHub. The project is basically done now and ready for review. Thanks for checking out RetrOS!"}, {"post_id": 7090, "ts": "2026-06-11T21:18:54Z", "hours": 1.8456, "text": "Got A LOT done today I managed to finalize HobbyTrack and overhauled my Code to make it mor comfortable for me to keep building on it. Im going to add 1-2 more Apps the coming days, tho so far the GitHub Pages Site is now up and running, so feel free to go test RetrOS! ( Also learned how to use Markdown as you can see hehe )"}, {"post_id": 6442, "ts": "2026-06-10T20:34:45Z", "hours": 1.4033, "text": "Did a “little” rebranding, just felt more appropriate. Hope yall like the new RetrOS as much as I do! (vers0.1.5)"}, {"post_id": 5867, "ts": "2026-06-09T20:20:23Z", "hours": 1.1867, "text": "Got alot done, following the tutorial helps!"}]...
|
Title: RetrOS by @SirYanni | Stardance
Devlogs:
G Title: RetrOS by @SirYanni | Stardance
Devlogs:
Got alot done, following the tutorial helps!
Did a “little” rebranding, just felt more appropriate. Hope yall like the new RetrOS as much as I do! (vers0.1.5)
Got A LOT done today I managed to finalize HobbyTrack and overhauled my Code to make it mor comfortable for me to keep building on it. Im going to add 1-2 more Apps the coming days, tho so far the GitHub Pages Site is now up and running, so feel free to go test RetrOS! ( Also learned how to use Markdown as you can see hehe )
Finalized the new Apps! I just pushed the final updates for RetrOS. PixelPaint and RetroPet are officially implemented, working and the design look clean with the new icons! Also cleaned up some code before pushing everything to GitHub. The project is basically done now and ready for review. Thanks for checking out RetrOS!
WebOS 2 RetrOS additions Today I added 4 new features: New Font! New App, the “Calc-95” A Taskbar Export feature for MicroMemo 1. The new font The new System-Font is now “VT323” 2.Calc-95 The new app, “Calc-95” is a basic calculator using Js-logic 3.The Taskbar The new Taskbar allows to minimize apps and see wich are currently open, as before you could only overlap apps wich just wasnt great tbh. 4.Export for MicroMemo You can now export your notes written in MicroMemo using the “export” button, wich will then download a .txt to save any important notes! Hope yall enjoy the features I made for WebOS 2, cya!
Ships:
RetrOS shipping I made a Retro-Themed WebOS (hence the name), using the given Guide. I myself added my own apps, such as HobbyTrack, MicroMemo, PixelPainter and RetroPet. I am really proud of integrating HobbyTrack, as I find it very useful, and hope yall will too! The Project was a very fun journey, especially considering it was my (kind of) first real HTML Project. I hope enjoy using RetrOS just as much as I do.
For WebOS 2, I made four for additions to RetrOS, wich are a new font, a calculator (!!!), an export feature for MicroMemo and a Taskbar. For further info on the apps, please see the last devlog. I’m really proud of how this turned out, and will definitely continue building on this. Hope y’all enjoy it!...
|
1792993826.8900516
|
1793080226.8900516
|
|
14362
|
BeachBunnyOS by @Sabrina | Stardance
|
Sabrina
|
2
|
12.58
|
86
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-30T01:10:33Z", "hours": 6.0, "multiplier": 11.35, "payout": 86, "blessing": "neutral", "text": "I added 3 new apps to my website!! 1st-ly a guestbook, as most good indie sites should have. I made the api myself and it is running on nest. Please dont spam it,,, but feel free to leave positive messages or constructive criticism there! I WILL read it 2nd-ly a visitor counter + flag collector using flagcounter.com Everytime someone visits my site and loads the image it will count the user and we can all see how far around the globe my website has reached! (Can we get every single country?? 👀) 3rd-ly a countdown until android becomes a lockdown platform in 2027, provided by keepandroidopen.org Also along the way I applied and was accepted into many webrings. At this moment im in the following: transing the internet hotline webring html energy webring cd ring vocaloid webring the no ai webring wii ring I’m probably gonna reorganize the ordering of the webring since it is currently in the order i joined, and not in the order of which i like the most if you know of a swedish webring (that isn’t the eurowebring) or a swedish speaking/learning webring let me know i want to join!! Or we can start one, either is fine!!", "repo": "https://github.com/BoomBoomMushroom/BeachBunnyWebOS", "demo": "https://sabrinaa.page"}, {"ship_num": 2, "ts": "2026-06-11T20:07:14Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "BeachBunnyOS!! This was just gonna be a website that looks like an OS but I’ve turned it into my personal website and am gonna use it as I websurf (you should try it, it’s really fun. Surf via the webrings on my website as a good starting point) My most favorite part is the net neighbors window. I like how I can scroll in it and my neighbors’ badges make it truely feel like a website I would find when surfing The most challenging part was the little buttons at the top because they would not cooperate for a while. they for some reason each wanted a certain size in their div, and it would cause the clock to go to 2 line and expand the top bar making it ugly, but I figured if i just constrain the text overflow making it only 1 line then it works out fine. This is truely the website of the #1 beach bunny fan. okay byeeee", "repo": "https://github.com/BoomBoomMushroom/BeachBunnyWebOS", "demo": "https://sabrinaa.page"}]...
|
[{"post_id": 44890, "ts": "202 [{"post_id": 44890, "ts": "2026-08-10T22:50:36Z", "hours": 1.5836, "text": "Hate messages/speech Over the past few days ive been waking up to some transphobic messages left in my guestbook and so Ive have decided to go on and add a filter to my guestbook. If I detect a black listed word (currently the 2 trans slurs and the f slur) it will auto sort it into the filtered webhook and makes sure it never saved that message to my server. Also I have created a honeypot webhook as well so it will put any honeypot messages into there and the reason for it. Hopefully it’ll help me understand what some spammed messages would look like Still, if I receive any hateful, bigoted, transphobic, queerphobic, and other fucked up messages I WILL be deleting them!! (so please dont send them) How my guestbook works Also since I saw someone ask in my voting response about how the guestbook works and if its a static website I have answers for you! I made a server hosted on nest (so free for us hackclubbers) that receives POST requests when you fill out the form and does all the checks and stuff, then saves it to a json file. When you load my website it will automatically ask the same server for the contents of the json file and display all the messages! (Now with 100% less bigotry) Ok love you guys stay safe out there"}, {"post_id": 37364, "ts": "2026-07-30T01:02:18Z", "hours": 0.5917, "text": "I was added to the vocaloid webring, no ai webring, and the wii ring!! I also added my 3rd new app (for webos 2) where it shows the countdown until android become a lock-down platform I also added a visitor count to see who all joins, and to collect flags for each new country that visits, currently im at 22 w/ the rankings being the US, France, Germany, Argentina, China, and Switzerland, then the other 16 flags have only appeared once Thats about it for right now, hopefully ill add some more cool information later, byeeee"}, {"post_id": 31599, "ts": "2026-07-20T04:05:22Z", "hours": 3.2508, "text": "I organized my webrings into joined and applied! Currently im in 5 atm, transing the internet, hotline ring, html energy, cdring, and the vocaloid webring I also created a guestbook completely from scratch! Source code at /guestbook I had to add 2 antibot measures #1) a honeypot field. a field that humans cannot see. off screen very far away, but if a webscraper sees it, it will fill it out and then my server will see that and ignore it #2) human only answerable question. I made the question be a part of the website that everyone visiting will find out, and so answering this question will be lightwork for anyone with at least 10 braincells, but a web scraper will (hopefully) have no clue Oh also my guestbook sends a discord message via a webhook everytime someone writes in it, so I can see every new entry w/o needing to look at my website every hour next i kinda to add a live chat. rtc or something? It’ll be like a guestbook only I can respond to people to make feel more connected"}, {"post_id": 31391, "ts": "2026-07-19T18:34:09Z", "hours": 1.705, "text": "I finally made a button! I added a robotx.txt and ai.txt to block web scrapers for LLMs I also applied to all the webrings i had previously, and added new webrings i found! Feel free to comment your website and i’ll check it out, and maybe add you to my net neighbors Next I want to make a guest book (from scratch?) The new webrings i added were: hotline webring DS Ring DroidRing IndieRing Computering Webring HTML Energy Webring Webmaster Webring"}, {"post_id": 7107, "ts": "2026-06-11T21:35:30Z", "hours": 0.8867, "text": "I fixed the webring app from spawning super high up to where you cant drag it. still an issue if the tab is like 100px tall, but like dont do that Also the domain after “free buttons” is really slow but it works for me I have also updated the readme to be better"}, {"post_id": 7033, "ts": "2026-06-11T19:52:36Z", "hours": 2.4344, "text": "I added 2 new apps. An about me and a net neighbors section. I added a bunch of image buttons to my top bar, they show stuff about me, like pc gamer, cat owner, etc. I added a font for the windows. I have 3 net neighbors, which is so cool! I need to later make a button of my own and get a domain so i can join webrings and so I can finish my link section and allow people to link to me and have me as their net neighbor My 2 custom features not in the tutorial is that everytime you open playlist.bb it changes it’s icon. the other one is that if you click a window it becomes the top window instead now, instead of needing to reopen it to be on top."}, {"post_id": 6561, "ts": "2026-06-11T00:47:46Z", "hours": 0.3036, "text": "I added webrings to my site, when i eventually finish it fully ill apply to join them!!"}, {"post_id": 6527, "ts": "2026-06-10T23:41:14Z", "hours": 0.9408, "text": "I added the first app. I created a framework for adding apps and you can drag them around, select them, double click to open them, and they open windows (and possivly do anything since it just calls a function)"}, {"post_id": 5902, "ts": "2026-06-09T21:31:35Z", "hours": 1.4717, "text": "Made a window, a wallpaper, and a top bar that displays the time Next up im going to work on adding apps, and hopefully later ill add a boot screen!"}]...
|
Title: BeachBunnyOS by @Sabrina | Stardance
Devlo Title: BeachBunnyOS by @Sabrina | Stardance
Devlogs:
Made a window, a wallpaper, and a top bar that displays the time Next up im going to work on adding apps, and hopefully later ill add a boot screen!
I added the first app. I created a framework for adding apps and you can drag them around, select them, double click to open them, and they open windows (and possivly do anything since it just calls a function)
I added webrings to my site, when i eventually finish it fully ill apply to join them!!
I added 2 new apps. An about me and a net neighbors section. I added a bunch of image buttons to my top bar, they show stuff about me, like pc gamer, cat owner, etc. I added a font for the windows. I have 3 net neighbors, which is so cool! I need to later make a button of my own and get a domain so i can join webrings and so I can finish my link section and allow people to link to me and have me as their net neighbor My 2 custom features not in the tutorial is that everytime you open playlist.bb it changes it’s icon. the other one is that if you click a window it becomes the top window instead now, instead of needing to reopen it to be on top.
I fixed the webring app from spawning super high up to where you cant drag it. still an issue if the tab is like 100px tall, but like dont do that Also the domain after “free buttons” is really slow but it works for me I have also updated the readme to be better
I finally made a button! I added a robotx.txt and ai.txt to block web scrapers for LLMs I also applied to all the webrings i had previously, and added new webrings i found! Feel free to comment your website and i’ll check it out, and maybe add you to my net neighbors Next I want to make a guest book (from scratch?) The new webrings i added were: hotline webring DS Ring DroidRing IndieRing Computering Webring HTML Energy Webring Webmaster Webring
I organized my webrings into joined and applied! Currently im in 5 atm, transing the internet, hotline ring, html energy, cdring, and the vocaloid webring I also created a guestbook completely from scratch! Source code at /guestbook I had to add 2 antibot measures #1) a honeypot field. a field that humans cannot see. off screen very far away, but if a webscraper sees it, it will fill it out and then my server will see that and ignore it #2) human only answerable question. I made the question be a part of the website that everyone visiting will find out, and so answering this question will be lightwork for anyone with at least 10 braincells, but a web scraper will (hopefully) have no clue Oh also my guestbook sends a discord message via a webhook everytime someone writes in it, so I can see every new entry w/o needing to look at my website every hour next i kinda to add a live chat. rtc or something? It’ll be like a guestbook only I can respond to people to make feel more connected
I was added to the vocaloid webring, no ai webring, and the wii ring!! I also added my 3rd new app (for webos 2) where it shows the countdown until android become a lock-down platform I also added a visitor count to see who all joins, and to collect flags for each new country that visits, currently im at 22 w/ the rankings being the US, France, Germany, Argentina, China, and Switzerland, then the other 16 flags have only appeared once Thats about it for right now, hopefully ill add some more cool information later, byeeee
Hate messages/speech Over the past few days ive been waking up to some transphobic messages left in my guestbook and so Ive have decided to go on and add a filter to my guestbook. If I detect a black listed word (currently the 2 trans slurs and the f slur) it will auto sort it into the filtered webhook and makes sure it never saved that message to my server. Also I have created a honeypot webhook as well so it will put any honeypot messages into there and the reason for it. Hopefully it’ll help me understand what some spammed messages would look like Still, if I receive any hateful, bigoted, transphobic, queerphobic, and other fucked up messages I WILL be deleting them!! (so please dont send them) How my guestbook works Also since I saw someone ask in my voting response about how the guestbook works and if its a static website I have answers for you! I made a server hosted on nest (so free for us hackclubbers) that receives POST requests when you fill out the form and does all the checks and stuff, then saves it to a json file. When you load my website it will automatically ask the same server for the contents of the json file and display all the messages! (Now with 100% less bigotry) Ok love you guys stay safe out there
Ships:
BeachBunnyOS!! This was just gonna be a website that looks like an OS but I’ve turned it into my personal website and am gonna use it as I websurf (you should try it, it’s really fun. Surf via the webrings on my website as a good starting point) My most favorite part is the net neighbors window. I like how I can scroll in it and my neighbors’ badges make it truely feel like a website I would find when surfing The most challenging part was the little buttons at the top because they would not cooperate for a while. they for some reason each wanted a certain size in their div, and it would cause the clock to go to 2 line and expand the top bar making it ugly, but I figured if i just constrain the text overflow making it only 1 line then it works out fine. This is truely the website of the #1 beach bunny fan. okay byeeee
I added 3 new apps to my website!! 1st-ly a guestbook, as most good indie sites should have. I made the api myself and it is running on nest. Please dont spam it,,, but feel free to leave positive messages or constructive criticism there! I WILL read it 2nd-ly a visitor counter + flag collector using flagcounter.com Everytime someone visits my site and loads the image it will count the user and we can all see how far around the globe my website has reached! (Can we get every single country?? 👀) 3rd-ly a countdown until android becomes a lockdown platform in 2027, provided by keepandroidopen.org Also along the way I applied and was accepted into many webrings. At this moment im in the following: transing the internet hotline webring html energy webring cd ring vocaloid webring the no ai webring wii ring I’m probably gonna reorganize the ordering of the webring since it is currently in the order i joined, and not in the order of which i like the most if you know of a swedish webring (that isn’t the eurowebring) or a swedish speaking/learning webring let me know i want to join!! Or we can start one, either is fine!!...
|
1793087770.2753165
|
1793174170.2753165
|
|
14457
|
Sailos by @sailor_lucas | Stardance
|
sailor_lucas
|
2
|
12.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T19:43:01Z", "hours": 1.0, "multiplier": 4.1, "payout": 6, "blessing": "neutral", "text": "i made an webos for sailors featuring a weather app and a map you can draw on it was super cool to learn how to use apis", "repo": "https://github.com/lucasvaneijk/SailOS", "demo": "https://sailos.netlify.app/"}, {"ship_num": 2, "ts": "2026-06-19T12:53:45Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an webOS for sailors it includes the weather all over the world and a map you can draw on it was really cool to learn about api and how to use them. i am happy how it turned out", "repo": "https://github.com/lucasvaneijk/SailOS", "demo": "https://sailos.netlify.app/"}]...
|
[{"post_id": 13301, "ts": "202 [{"post_id": 13301, "ts": "2026-06-21T19:40:17Z", "hours": 1.4314, "text": "after the review i updated the ui of the weather app and updated the readme i also translated some accidental dutch that i put in there"}, {"post_id": 11818, "ts": "2026-06-19T07:26:41Z", "hours": 0.4772, "text": "i used ai to add drawing to the map becouse i could not find how to do it online and ai gave really vage ansers so i had ai do it and it works really good also added an favicon in the browser"}, {"post_id": 11493, "ts": "2026-06-18T19:35:28Z", "hours": 0.8417, "text": "added all the basic functionality for the map incuding the expanding the closing and the icon"}, {"post_id": 11190, "ts": "2026-06-18T09:43:10Z", "hours": 4.6214, "text": "Weatherapp: The weatherapp now actually works. it uses openmeteo to get the weatherforecast. it includes the windspeed, the gusts, the direction of the wind and the tempature. it goes up to 7 days. I still need to work on the design but it does function . Mapapp: I added a map to see where youre sailing. It uses openstreetmaps for the map. you can put in the place and it goes to that place. I want to add a way to draw on the map and I need to update the design a LOT!"}, {"post_id": 9328, "ts": "2026-06-15T17:22:30Z", "hours": 5.455, "text": "The first background is done and I added the first outlines of a app. it does not yet have content in the app but it is almost ready to add content to app. it can already expand unexpand and is closable and openable i am still working on making it unexpand correctly."}]...
|
Title: Sailos by @sailor_lucas | Stardance
Devlog Title: Sailos by @sailor_lucas | Stardance
Devlogs:
The first background is done and I added the first outlines of a app. it does not yet have content in the app but it is almost ready to add content to app. it can already expand unexpand and is closable and openable i am still working on making it unexpand correctly.
Weatherapp: The weatherapp now actually works. it uses openmeteo to get the weatherforecast. it includes the windspeed, the gusts, the direction of the wind and the tempature. it goes up to 7 days. I still need to work on the design but it does function . Mapapp: I added a map to see where youre sailing. It uses openstreetmaps for the map. you can put in the place and it goes to that place. I want to add a way to draw on the map and I need to update the design a LOT!
added all the basic functionality for the map incuding the expanding the closing and the icon
i used ai to add drawing to the map becouse i could not find how to do it online and ai gave really vage ansers so i had ai do it and it works really good also added an favicon in the browser
after the review i updated the ui of the weather app and updated the readme i also translated some accidental dutch that i put in there
Ships:
I made an webOS for sailors it includes the weather all over the world and a map you can draw on it was really cool to learn about api and how to use them. i am happy how it turned out
i made an webos for sailors featuring a weather app and a map you can draw on it was super cool to learn how to use apis...
|
1793084243.1105928
|
1793170643.1105928
|
|
14492
|
Tides simulation by @kuba_ch101 | Stardance
|
kuba_ch101
|
2
|
70.0
|
1308
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T17:20:40Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ship #2 Many peaple in the reviews suggested adding some type of tutorial, so I added one. It was written with no AI, there might still be some grammar mistakes, but I hope the tutorial will be helpful.", "repo": "https://github.com/kubach101/tides-symulation", "demo": "https://kubach101.github.io/tides-symulation/"}, {"ship_num": 2, "ts": "2026-09-09T18:13:23Z", "hours": 67.0, "multiplier": 19.43, "payout": 1308, "blessing": "neutral", "text": "I made a simualation of tides generated on a planet by a satelite. I made it in C and OpenGL which I compiled(using emscriptem) to WebAssembly and WebGL. Then I added controls to make it interractive. I am verry proud that I menaged to compute the shape of the water almost entirely on a GPU shader. I also made a custom camera system which enables rotating along vectors other than the 3 main axes. The simulation isnt super accurate but it can serve for eg. educational purposes.", "repo": "https://github.com/kubach101/tides-symulation", "demo": "https://kubach101.github.io/tides-symulation/"}]...
|
[{"post_id": 82696, "ts": "202 [{"post_id": 82696, "ts": "2026-10-25T16:56:20Z", "hours": 0.7083, "text": "Added a reopening button for the tutorial and polished other things, project ready to ship :)"}, {"post_id": 71044, "ts": "2026-09-20T07:39:59Z", "hours": 1.6219, "text": "I added the tutorial, I wrote it by myself so there might be some uncought mistakes left, since English is not my native language. I think I explained it well and now the what some simulation parameters doshould be clear. Drawing is also made by me."}, {"post_id": 66249, "ts": "2026-09-11T23:31:02Z", "hours": 0.7003, "text": "Hello everyone It is my first devlog after the ship. People who rated my project had a great suggestion to make a tutorial, so I got to work. It will be in a form of a toggled window with instructions and explanations."}, {"post_id": 64810, "ts": "2026-09-09T14:19:19Z", "hours": 3.5808, "text": "I added different screen size support and a mobile layout. I also chaneged the UI SO now the whole canvas is likę a trackpad and you can zoom with scroll/fingers"}, {"post_id": 40430, "ts": "2026-08-03T22:52:15Z", "hours": 1.4511, "text": "I wrote the readme and I am almost ready to ship! Photos of progress:"}, {"post_id": 39663, "ts": "2026-08-02T19:50:11Z", "hours": 2.835, "text": "I improved the camera movement by making the rotation not based on the 3 main axes and instead based on the new ones created by the movement on the touchpad. It was quite hard to integrate everything but now the camera moves verry smooth. I also fixed a bug in the fragment shader which was breaking the alpha value of the oceanand now it looks much better."}, {"post_id": 38164, "ts": "2026-07-31T12:42:44Z", "hours": 9.9228, "text": "I added a UI to the web page! It features: -camera controls: rotating, zooming and home position -simulation parameters which you can change with sliders. Everything is conected to the simulation via “cwrap”, which makes you able to use some of your functions, from the c program, in java script. I went through multiple layout and I am still not shure if I will keep this one. This was my first time building something like this so I took some help from the AI while making the trackpad and the sliders."}, {"post_id": 30380, "ts": "2026-07-17T21:15:25Z", "hours": 3.7669, "text": "I added a trail behind the satelite to make this more interesting and a direction indicator(which you can turn off) so you know where the satelite is when you zoom in. I also started working on the shell file which basically grabs the render and ads html features. All the info and other thing will be in this grey area(for now, maybe I will change them later)."}, {"post_id": 29838, "ts": "2026-07-16T23:55:00Z", "hours": 2.7969, "text": "BIG NEWS! I was finally able to convert my C code to WASM using emscripten. I run it on local hosted server but I still cant make it work on github pages. I also moved part of physics calculations to a specified shader which should significantly boost the performace."}, {"post_id": 29122, "ts": "2026-07-15T19:47:38Z", "hours": 6.1136, "text": "I optimized my simulation and added a camera orientation indicator(top-right corner). It was much harder than I expected but It looks cool."}, {"post_id": 16529, "ts": "2026-06-26T21:50:43Z", "hours": 2.1425, "text": "I am now working on rewriting may program so I can later convert it to WASM using emscriptem. I also made the satelite distance modifiable."}, {"post_id": 15170, "ts": "2026-06-24T17:22:23Z", "hours": 1.9231, "text": "Added an option for user input. Now I will focus on adding friction to the moving ocean."}, {"post_id": 14889, "ts": "2026-06-24T05:27:16Z", "hours": 3.1589, "text": "I fixed some scaling bugs, but there still some left and i cant figure how to fix them. I also need to add friction soon. View after fixing radious bug:"}, {"post_id": 13728, "ts": "2026-06-22T14:36:56Z", "hours": 1.1089, "text": "I replaced some floats with doubles for better precision and improved the information tab."}, {"post_id": 13324, "ts": "2026-06-21T20:22:08Z", "hours": 6.9411, "text": "Made a huge rework today: -Reworked the entire pipeline and data structures to make code cleaner and more efficient. -Fixed some physics mistakes with scales I made before. -Fixed rendering bug which appeared when I chaned rendering order to a propper one."}, {"post_id": 12781, "ts": "2026-06-20T21:58:28Z", "hours": 1.9731, "text": "Made a custom Information tab, It shows simulation data. This took me some time, but I am happy with the results."}, {"post_id": 12635, "ts": "2026-06-20T17:10:22Z", "hours": 2.8864, "text": "I added camera movement, for now the camera is centered on the planet but I might change it in the future. I neede to add and rework few functions to make this work. There was also a major problem, which I learnt is called “gimbal lock”. Before I fixed It the camera was getting flipped when It rotated 90 degrees. There is also a zoom option(2’nd picture)."}, {"post_id": 12466, "ts": "2026-06-20T11:04:40Z", "hours": 3.9556, "text": "I scaled everything to real proportions of earth and moon. Improved pipeline by adding rendering functions and reducing the number of shaders. Made the moon orbit, to see it move I added a second time scale(not based on SI) to make the orbits fast without affecting other scales. I still need to correct the water based on updated moon position."}, {"post_id": 11516, "ts": "2026-06-18T20:13:46Z", "hours": 3.4372, "text": "Finaly the geometry is calculated by the satelite’s gravity. In a normal scenario the wouldn’t be visible in that scale so I needed to bring the moon verry close to the planet(It is now invisible) and increese its mass. I am planning to make a zoom options so the deformations will be vissible even with the real data"}, {"post_id": 7363, "ts": "2026-06-12T08:29:15Z", "hours": 0.3783, "text": "I tested the fluid deformation in real time(made a small menu to debug it). It wasnt calculated based on physics, i was just incrementing position(this is position of the right peak, the rest is calculated based on that). Of course i needed to scale it a bit, so you can see the water deformation. It looks realy cool when the water is “streched” too much:"}, {"post_id": 7128, "ts": "2026-06-11T22:11:05Z", "hours": 2.5839, "text": "Fixed a huge geometry bug, made a shader for the water layer. The hardest part was configuring the pipeline so that the water layer and core don’t interfere whith themselfs and break. Current view:"}, {"post_id": 6862, "ts": "2026-06-11T14:49:20Z", "hours": 1.865, "text": "I improved my shader for solid bodies: -shading responds to motion(previously it looked like the light sorce was moving with the object) -now the shading is done per pixel(not per vertex) -a bit of color is added to the opposite side Here you can see before and after:"}, {"post_id": 6373, "ts": "2026-06-10T18:47:00Z", "hours": 2.5058, "text": "Today i focused on the physics part of the fluid shape. I used quadrupolar tidal bulge approximation via P₂ Legendre polynomial. In terms of physics it sounds complicated, but was easier than i exepected. However I spend a lot of time trying to get the geometry right, becaose my sphere generating algorithm is pretty weird."}, {"post_id": 5897, "ts": "2026-06-09T21:18:17Z", "hours": 1.9833, "text": "Made basic pipeline for my symulation, improved shader use by creating helpful functions. This will be the core of the planet(it wont change geometry) so that was the easier part."}]...
|
Title: Tides simulation by @kuba_ch101 | Stardance Title: Tides simulation by @kuba_ch101 | Stardance
Devlogs:
Made basic pipeline for my symulation, improved shader use by creating helpful functions. This will be the core of the planet(it wont change geometry) so that was the easier part.
Today i focused on the physics part of the fluid shape. I used quadrupolar tidal bulge approximation via P₂ Legendre polynomial. In terms of physics it sounds complicated, but was easier than i exepected. However I spend a lot of time trying to get the geometry right, becaose my sphere generating algorithm is pretty weird.
I improved my shader for solid bodies: -shading responds to motion(previously it looked like the light sorce was moving with the object) -now the shading is done per pixel(not per vertex) -a bit of color is added to the opposite side Here you can see before and after:
Fixed a huge geometry bug, made a shader for the water layer. The hardest part was configuring the pipeline so that the water layer and core don’t interfere whith themselfs and break. Current view:
I tested the fluid deformation in real time(made a small menu to debug it). It wasnt calculated based on physics, i was just incrementing position(this is position of the right peak, the rest is calculated based on that). Of course i needed to scale it a bit, so you can see the water deformation. It looks realy cool when the water is “streched” too much:
Finaly the geometry is calculated by the satelite’s gravity. In a normal scenario the wouldn’t be visible in that scale so I needed to bring the moon verry close to the planet(It is now invisible) and increese its mass. I am planning to make a zoom options so the deformations will be vissible even with the real data
I scaled everything to real proportions of earth and moon. Improved pipeline by adding rendering functions and reducing the number of shaders. Made the moon orbit, to see it move I added a second time scale(not based on SI) to make the orbits fast without affecting other scales. I still need to correct the water based on updated moon position.
I added camera movement, for now the camera is centered on the planet but I might change it in the future. I neede to add and rework few functions to make this work. There was also a major problem, which I learnt is called “gimbal lock”. Before I fixed It the camera was getting flipped when It rotated 90 degrees. There is also a zoom option(2’nd picture).
Made a custom Information tab, It shows simulation data. This took me some time, but I am happy with the results.
Made a huge rework today: -Reworked the entire pipeline and data structures to make code cleaner and more efficient. -Fixed some physics mistakes with scales I made before. -Fixed rendering bug which appeared when I chaned rendering order to a propper one.
I replaced some floats with doubles for better precision and improved the information tab.
I fixed some scaling bugs, but there still some left and i cant figure how to fix them. I also need to add friction soon. View after fixing radious bug:
Added an option for user input. Now I will focus on adding friction to the moving ocean.
I am now working on rewriting may program so I can later convert it to WASM using emscriptem. I also made the satelite distance modifiable.
I optimized my simulation and added a camera orientation indicator(top-right corner). It was much harder than I expected but It looks cool.
BIG NEWS! I was finally able to convert my C code to WASM using emscripten. I run it on local hosted server but I still cant make it work on github pages. I also moved part of physics calculations to a specified shader which should significantly boost the performace.
I added a trail behind the satelite to make this more interesting and a direction indicator(which you can turn off) so you know where the satelite is when you zoom in. I also started working on the shell file which basically grabs the render and ads html features. All the info and other thing will be in this grey area(for now, maybe I will change them later).
I added a UI to the web page! It features: -camera controls: rotating, zooming and home position -simulation parameters which you can change with sliders. Everything is conected to the simulation via “cwrap”, which makes you able to use some of your functions, from the c program, in java script. I went through multiple layout and I am still not shure if I will keep this one. This was my first time building something like this so I took some help from the AI while making the trackpad and the sliders.
I improved the camera movement by making the rotation not based on the 3 main axes and instead based on the new ones created by the movement on the touchpad. It was quite hard to integrate everything but now the camera moves verry smooth. I also fixed a bug in the fragment shader which was breaking the alpha value of the oceanand now it looks much better.
I wrote the readme and I am almost ready to ship! Photos of progress:
I added different screen size support and a mobile layout. I also chaneged the UI SO now the whole canvas is likę a trackpad and you can zoom with scroll/fingers
Hello everyone It is my first devlog after the ship. People who rated my project had a great suggestion to make a tutorial, so I got to work. It will be in a form of a toggled window with instructions and explanations.
I added the tutorial, I wrote it by myself so there might be some uncought mistakes left, since English is not my native language. I think I explained it well and now the what some simulation parameters doshould be clear. Drawing is also made by me.
Added a reopening button for the tutorial and polished other things, project ready to ship :)
Ships:
I made a simualation of tides generated on a planet by a satelite. I made it in C and OpenGL which I compiled(using emscriptem) to WebAssembly and WebGL. Then I added controls to make it interractive. I am verry proud that I menaged to compute the shape of the water almost entirely on a GPU shader. I also made a custom camera system which enables rotating along vectors other than the 3 main axes. The simulation isnt super accurate but it can serve for eg. educational purposes.
Ship #2 Many peaple in the reviews suggested adding some type of tutorial, so I added one. It was written with no AI, there might still be some grammar mistakes, but I hope the tutorial will be helpful....
|
1793004909.373205
|
1793091309.373205
|
|
14523
|
kOS by @kaansen9611 | Stardance
|
kaansen9611
|
2
|
6.0
|
9
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-14T07:29:46Z", "hours": 2.0, "multiplier": 3.55, "payout": 9, "blessing": "neutral", "text": "I built kOS a web based operating system that runs entirely in the browser using HTML, CSS, and JavaScript. It has a boot screen, login system, draggable windows, a terminal, calculator, notes, weather app, aboutme app and settings. The most challenging parts were making the boot screen and the login system. I spent a lot of time learning how to build these features and used resources such as W3Schools and the DEV Community to better understand the concepts and solve problems I encountered.", "repo": "https://github.com/KaanSen9611/kOS", "demo": "https://kaansen9611.github.io/kOS/"}, {"ship_num": 2, "ts": "2026-06-25T11:14:10Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "kOS is a browser-based desktop environment I built using only HTML, CSS, and vanilla JavaScript. It simulates a lightweight operating system inside the browser with a custom window system and multiple apps like Notes, Weather, About Me, and a Calculator. My goal with this project was to explore how far I could push a desktop-like experience using only frontend technologies, without any frameworks or backend.One of the hardest parts for me was designing a consistent window system that works across all apps and keeps everything stable while still being interactive. I also struggled a bit with drag behavior, window positioning, and making sure different apps don’t break the overall layout. Working through those issues helped me understand DOM manipulation, event handling, and frontend structure much better.Overall, this project is a small OS simulation that runs entirely in the browser and reflects my progress in UI design, JavaScript logic, and building interactive systems.", "repo": "https://github.com/KaanSen9611/kOS", "demo": "https://kaansen9611.github.io/kOS/"}]...
|
[{"post_id": 28134, "ts": "202 [{"post_id": 28134, "ts": "2026-07-14T07:17:51Z", "hours": 2.4081, "text": "I added a simple boot screen and a login page + a new settings app and a new terminal"}, {"post_id": 15585, "ts": "2026-06-25T10:52:45Z", "hours": 0.4011, "text": "I added a calculator app to my kOS OS project. It is built using only HTML, CSS, and vanilla JavaScript."}, {"post_id": 15570, "ts": "2026-06-25T10:03:29Z", "hours": 0.5808, "text": "Added weather app and made the notes app better"}, {"post_id": 15252, "ts": "2026-06-24T19:22:32Z", "hours": 0.6981, "text": "I developed applications for kOS."}, {"post_id": 14997, "ts": "2026-06-24T11:34:16Z", "hours": 2.4311, "text": "Today I built the first major UI system for the kOS project. The goal wasn’t just to create a simple webpage, but to design something that feels like a real operating system interface. Right now, the system has a draggable window. It can be opened and closed, and it starts centered on the screen. There is also a top bar with a live clock that updates in real time. The UI has been redesigned using a glassmorphism style. Both the top bar and the window header are transparent with blur effects, so the background is visible through them. This gives the whole interface a more modern OS-like feel. The close button is a simple red X and it works properly. The open/close system is stable, and the window resets its position when reopened. Next steps will likely include a taskbar, multiple window support, and a desktop icon system to turn this into a more complete web-based OS experience."}]...
|
Title: kOS by @kaansen9611 | Stardance
Devlogs:
T Title: kOS by @kaansen9611 | Stardance
Devlogs:
Today I built the first major UI system for the kOS project. The goal wasn’t just to create a simple webpage, but to design something that feels like a real operating system interface. Right now, the system has a draggable window. It can be opened and closed, and it starts centered on the screen. There is also a top bar with a live clock that updates in real time. The UI has been redesigned using a glassmorphism style. Both the top bar and the window header are transparent with blur effects, so the background is visible through them. This gives the whole interface a more modern OS-like feel. The close button is a simple red X and it works properly. The open/close system is stable, and the window resets its position when reopened. Next steps will likely include a taskbar, multiple window support, and a desktop icon system to turn this into a more complete web-based OS experience.
I developed applications for kOS.
Added weather app and made the notes app better
I added a calculator app to my kOS OS project. It is built using only HTML, CSS, and vanilla JavaScript.
I added a simple boot screen and a login page + a new settings app and a new terminal
Ships:
kOS is a browser-based desktop environment I built using only HTML, CSS, and vanilla JavaScript. It simulates a lightweight operating system inside the browser with a custom window system and multiple apps like Notes, Weather, About Me, and a Calculator. My goal with this project was to explore how far I could push a desktop-like experience using only frontend technologies, without any frameworks or backend.One of the hardest parts for me was designing a consistent window system that works across all apps and keeps everything stable while still being interactive. I also struggled a bit with drag behavior, window positioning, and making sure different apps don’t break the overall layout. Working through those issues helped me understand DOM manipulation, event handling, and frontend structure much better.Overall, this project is a small OS simulation that runs entirely in the browser and reflects my progress in UI design, JavaScript logic, and building interactive systems.
I built kOS a web based operating system that runs entirely in the browser using HTML, CSS, and JavaScript. It has a boot screen, login system, draggable windows, a terminal, calculator, notes, weather app, aboutme app and settings. The most challenging parts were making the boot screen and the login system. I spent a lot of time learning how to build these features and used resources such as W3Schools and the DEV Community to better understand the concepts and solve problems I encountered....
|
1793094609.8259044
|
1793181009.8259044
|
|
14627
|
ManentiOS by @Manenti | Stardance
|
Manenti
|
2
|
8.0
|
23
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T18:06:57Z", "hours": 2.0, "multiplier": 9.37, "payout": 23, "blessing": "neutral", "text": "For this update, I improved ManentiOS , my personal web operating system that runs directly in the browser. The project already had a login-style screen, draggable windows, desktop icons, and apps like FrostLog, Calculator, and Projects. In this mission, I added three new major features: IceDock , a bottom dock for quickly opening apps; a Settings app for changing the visual mode and ambient effects; and a Command Palette with Ctrl + K to search and launch apps faster. The most challenging part was making these new features feel connected to the rest of the OS instead of just being extra buttons on the screen. I had to organize the app list better, connect multiple components to the same open-window logic, manage visual customization through state, and make sure the dock, command palette, settings app, windows, and desktop icons all worked together smoothly. I am proud that ManentiOS now feels much more like a real operating system. The IceDock makes app navigation easier, the Settings app adds personalization, and the Command Palette makes the experience feel more advanced and polished. I am also proud of the winter-tech identity of the project, with cold colors, rain/snow effects, glass-style windows, and a calm futuristic atmosphere. To test the project, open the live demo and enter ManentiOS from the login screen. You can open apps from the desktop icons or from the IceDock, use Ctrl + K to open the Command Palette and search for apps, and open the Settings app to switch between visual modes and ambient effects like snow, rain, or none. You can also drag windows around, close and reopen them, and explore the Projects app to see my portfolio inside the OS.", "repo": "https://github.com/noname697/ManentiOS", "demo": "https://manenti-os.vercel.app"}, {"ship_num": 2, "ts": "2026-06-16T01:20:11Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "For this project, I made ManentiOS , a personal web operating system that runs directly in the browser. It includes a login-style onboarding screen, a desktop interface, draggable and closable windows, a top bar with a clock, and multiple apps such as FrostLog, Calculator, and a Projects portfolio app. The most challenging part was simulating the behavior of a real operating system inside a website. I had to learn how to manage draggable windows, opening and closing apps, window layering with z-index, desktop icons, and React state across different components. I had never built anything like an OS interface before, so figuring out how all these pieces should work together was a big challenge. I am most proud that I was able to create something that actually feels like a small operating system. I also like the visual identity I built for it, mixing a winter, forest, rain-inspired atmosphere with a clean technological interface. This project helped me practice React, TailwindCSS, componentization, UI design, and interactive front-end logic. To test the project, open the live demo, go through the login-style screen, and enter ManentiOS. You can click or double-click the desktop icons to open apps, drag the windows around, close them, reopen them, and explore the Projects app to see some of my other work.", "repo": "https://github.com/noname697/ManentiOS", "demo": "https://manenti-os.vercel.app"}]...
|
[{"post_id": 16380, "ts": "202 [{"post_id": 16380, "ts": "2026-06-26T17:37:56Z", "hours": 2.4972, "text": "For this new mission, I added three major updates to ManentiOS to make it feel more complete as a web operating system. First, I created IceDock , a bottom dock that lets users quickly open apps and see which apps are currently active. Then, I added a Settings app, where users can customize the visual mode and switch ambient effects like snow, rain, or no effect. I also implemented a Command Palette with Ctrl + K , allowing users to search and open apps quickly from anywhere on the desktop. These updates made ManentiOS feel more like a real OS, with better navigation, customization, and a more polished winter-tech experience."}, {"post_id": 6585, "ts": "2026-06-11T02:04:32Z", "hours": 0.7689, "text": "Since the last dev log, I improved the first screen of ManentiOS by turning it into a login-style onboarding page inspired by Windows, but with the winter-tech visual identity of the project. I also made the buttons functional, allowing users to enter the OS normally or open specific apps directly, like the Projects app and FrostLog. After that, I worked on the portfolio experience by improving the Projects app and filling it with my best GitHub projects, including ManentiOS, PoupApp, Manenti Slack Bot, Custom Macropad, and other web/full-stack projects. Now ManentiOS has a stronger first impression, a more useful portfolio section, and feels much more like a complete personal WebOS."}, {"post_id": 6568, "ts": "2026-06-11T01:01:02Z", "hours": 1.5039, "text": "Since the last dev log, I completed the final WebOS tutorial step by building more advanced apps for ManentiOS. This stage was more open-ended, so I decided to create two useful apps: a Calculator and a Projects portfolio app. I added new desktop icons, connected them to draggable app windows, and improved the window system to support multiple apps more easily. The Calculator now performs basic operations, while the Projects app showcases my work inside the OS."}, {"post_id": 6520, "ts": "2026-06-10T23:22:25Z", "hours": 1.0767, "text": "Since the last dev log, I created the first real app for ManentiOS: FrostLog, a winter-tech journal app with selectable entries, a desktop icon, and its own draggable window. This followed the tutorial step focused on adding the first app to the WebOS. I also improved the desktop behavior by fixing the z-index system, so app windows now appear in front of desktop icons while the top bar stays above everything. ManentiOS now feels more like a real WebOS, with icons, apps, draggable windows, and better window layering."}, {"post_id": 6450, "ts": "2026-06-10T21:04:51Z", "hours": 0.7406, "text": "Since the last dev log, I continued developing ManentiOS by following the next WebOS tutorial step and adapting it to my React + TailwindCSS structure. The goal was to make the desktop window feel more like a real operating system window. I created a reusable OSWindow component with support for dragging, closing, and reopening windows. I also updated the desktop so the welcome window can be opened again from the top bar by clicking on ManentiOS. Instead of using plain JavaScript with querySelector, I used React state, props, refs, and pointer events to keep the logic more organized and component-based."}, {"post_id": 6425, "ts": "2026-06-10T20:12:28Z", "hours": 1.1056, "text": "Since the last dev log, I continued working on ManentiOS by defining a stronger visual direction for the project: a winter-inspired interface with forests, rain, landscapes, and a subtle technological touch. I also moved on to the second part of the WebOS tutorial and adapted the concepts from HTML, CSS, and JavaScript into my current React + JSX + TailwindCSS structure. Instead of using plain HTML and inline styles, I planned the desktop as reusable components. I created the idea for the main desktop screen, including a background wallpaper, a glass-style welcome window, a top bar, and a live clock using React state and effects. This keeps the project aligned with the tutorial while making the code cleaner and more scalable."}, {"post_id": 6362, "ts": "2026-06-10T18:26:32Z", "hours": 1.1214, "text": "Today I started working on ManentiOS, my personal web operating system. I chose the main theme, created a futuristic project banner, and wrote a short description for the project. I also built the first onboarding screen using React, JSX, and TailwindCSS. Then, I organized the code into reusable components like FeatureCard, ActionButton, and Onboarding. So far, the project has a clear identity, a visual style, and the beginning of a clean, componentized interface. My next step is to build the main desktop screen and add interactive apps."}]...
|
Title: ManentiOS by @Manenti | Stardance
Devlogs: Title: ManentiOS by @Manenti | Stardance
Devlogs:
Today I started working on ManentiOS, my personal web operating system. I chose the main theme, created a futuristic project banner, and wrote a short description for the project. I also built the first onboarding screen using React, JSX, and TailwindCSS. Then, I organized the code into reusable components like FeatureCard, ActionButton, and Onboarding. So far, the project has a clear identity, a visual style, and the beginning of a clean, componentized interface. My next step is to build the main desktop screen and add interactive apps.
Since the last dev log, I continued working on ManentiOS by defining a stronger visual direction for the project: a winter-inspired interface with forests, rain, landscapes, and a subtle technological touch. I also moved on to the second part of the WebOS tutorial and adapted the concepts from HTML, CSS, and JavaScript into my current React + JSX + TailwindCSS structure. Instead of using plain HTML and inline styles, I planned the desktop as reusable components. I created the idea for the main desktop screen, including a background wallpaper, a glass-style welcome window, a top bar, and a live clock using React state and effects. This keeps the project aligned with the tutorial while making the code cleaner and more scalable.
Since the last dev log, I continued developing ManentiOS by following the next WebOS tutorial step and adapting it to my React + TailwindCSS structure. The goal was to make the desktop window feel more like a real operating system window. I created a reusable OSWindow component with support for dragging, closing, and reopening windows. I also updated the desktop so the welcome window can be opened again from the top bar by clicking on ManentiOS. Instead of using plain JavaScript with querySelector, I used React state, props, refs, and pointer events to keep the logic more organized and component-based.
Since the last dev log, I created the first real app for ManentiOS: FrostLog, a winter-tech journal app with selectable entries, a desktop icon, and its own draggable window. This followed the tutorial step focused on adding the first app to the WebOS. I also improved the desktop behavior by fixing the z-index system, so app windows now appear in front of desktop icons while the top bar stays above everything. ManentiOS now feels more like a real WebOS, with icons, apps, draggable windows, and better window layering.
Since the last dev log, I completed the final WebOS tutorial step by building more advanced apps for ManentiOS. This stage was more open-ended, so I decided to create two useful apps: a Calculator and a Projects portfolio app. I added new desktop icons, connected them to draggable app windows, and improved the window system to support multiple apps more easily. The Calculator now performs basic operations, while the Projects app showcases my work inside the OS.
Since the last dev log, I improved the first screen of ManentiOS by turning it into a login-style onboarding page inspired by Windows, but with the winter-tech visual identity of the project. I also made the buttons functional, allowing users to enter the OS normally or open specific apps directly, like the Projects app and FrostLog. After that, I worked on the portfolio experience by improving the Projects app and filling it with my best GitHub projects, including ManentiOS, PoupApp, Manenti Slack Bot, Custom Macropad, and other web/full-stack projects. Now ManentiOS has a stronger first impression, a more useful portfolio section, and feels much more like a complete personal WebOS.
For this new mission, I added three major updates to ManentiOS to make it feel more complete as a web operating system. First, I created IceDock , a bottom dock that lets users quickly open apps and see which apps are currently active. Then, I added a Settings app, where users can customize the visual mode and switch ambient effects like snow, rain, or no effect. I also implemented a Command Palette with Ctrl + K , allowing users to search and open apps quickly from anywhere on the desktop. These updates made ManentiOS feel more like a real OS, with better navigation, customization, and a more polished winter-tech experience.
Ships:
For this project, I made ManentiOS , a personal web operating system that runs directly in the browser. It includes a login-style onboarding screen, a desktop interface, draggable and closable windows, a top bar with a clock, and multiple apps such as FrostLog, Calculator, and a Projects portfolio app. The most challenging part was simulating the behavior of a real operating system inside a website. I had to learn how to manage draggable windows, opening and closing apps, window layering with z-index, desktop icons, and React state across different components. I had never built anything like an OS interface before, so figuring out how all these pieces should work together was a big challenge. I am most proud that I was able to create something that actually feels like a small operating system. I also like the visual identity I built for it, mixing a winter, forest, rain-inspired atmosphere with a clean technological interface. This project helped me practice React, TailwindCSS, componentization, UI design, and interactive front-end logic. To test the project, open the live demo, go through the login-style screen, and enter ManentiOS. You can click or double-click the desktop icons to open apps, drag the windows around, close them, reopen them, and explore the Projects app to see some of my other work.
For this update, I improved ManentiOS , my personal web operating system that runs directly in the browser. The project already had a login-style screen, draggable windows, desktop icons, and apps like FrostLog, Calculator, and Projects. In this mission, I added three new major features: IceDock , a bottom dock for quickly opening apps; a Settings app for changing the visual mode and ambient effects; and a Command Palette with Ctrl + K to search and launch apps faster. The most challenging part was making these new features feel connected to the rest of the OS instead of just being extra buttons on the screen. I had to organize the app list better, connect multiple components to the same open-window logic, manage visual customization through state, and make sure the dock, command palette, settings app, windows, and desktop icons all worked together smoothly. I am proud that ManentiOS now feels much more like a real operating system. The IceDock makes app navigation easier, the Settings app adds personalization, and the Command Palette makes the experience feel more advanced and polished. I am also proud of the winter-tech identity of the project, with cold colors, rain/snow effects, glass-style windows, and a calm futuristic atmosphere. To test the project, open the live demo and enter ManentiOS from the login screen. You can open apps from the desktop icons or from the IceDock, use Ctrl + K to open the Command Palette and search for apps, and open the Settings app to switch between visual modes and ambient effects like snow, rain, or none. You can also drag windows around, close and reopen them, and explore the Projects app to see my portfolio inside the OS....
|
1792994126.3619957
|
1793080526.3619957
|
|
14692
|
PastelNet:OS by @nic | Stardance
|
nic
|
2
|
25.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T01:46:38Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PastelNET://OS – A cyberpunk & vaporwave-inspired operating system that runs directly on your browser. Includes 7 applications; including a calculator, gallery, notes, and music player. No need to download any scripts or plugins, as it runs directly on the web, hosted by Github Pages. This is my first attempt at a functional website using JavaScript, designed as a tribute to my love for Cyberpunk Edgerunners. Application List: Welcome Menu: introductory message User Menu: user name input Messages: interactive fake email Music Player: play music Calculator: calculate basic math problems Notes: write notes Gallery: browse through photos Hand-coded using vanilla HTML, CSS, and JS, no frameworks. Built for the Stardance WebOS 2 mission.", "repo": "https://github.com/sodahaunted/pastelnet.os", "demo": "https://sodahaunted.github.io/pastelnet.os/"}, {"ship_num": 2, "ts": "2026-08-11T04:31:25Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A custom OS built with HTML, CSS and JavaScript. Inspired by old vaporwave and cyberpunk styles. Currently features 3 working applications, including a welcome menu, user menu and messages. A beginner web developer’s first attempt at JavaScript presented as a homage to Cyberpunk 2077.", "repo": "https://github.com/sodahaunted/pastelnet.os", "demo": "https://sodahaunted.github.io/pastelnet.os/"}]...
|
[{"post_id": 82503, "ts": "202 [{"post_id": 82503, "ts": "2026-10-25T01:26:02Z", "hours": 2.5319, "text": "pastelnetOS #9 - the completed version After many hours of reformatting code, designing application windows, and crying over CSS, I’ve finally finished PastelNetOS. It’s been a long time in the works, but I’m happy it reached a stage where I feel confident enough to ship it. Final Additions: I finished up the last three applications: the music player, notes, and gallery. I had some issues with the music player and figuring out how to get it functioning properly, but I soon figured it out after digging through a few GitHub repos and Google searches. I originally intended to make a dedicated Spotify-inspired MP3 player, but I ran out of time and just decided to make it as simple and functional as possible. The notes app is also a bit wonky, but what matters is that it works. It’s not completely unusable, but I don’t ever see myself using it in an urgent situation (lol) Challenges: I mentioned it before on a previous devlog, but I was running out of motivation to continue with this project near the end. I realized I didn’t enjoy it as much as I’d hoped, and I found myself working on other projects instead. I think it was mainly my lack of creativity and the repetitiveness of the site, and realizing I didn’t have enough prior coding knowledge to achieve some of the things I wanted to build. School was also a huge factor, as I hadn’t anticipated getting so busy in just a few weeks. I kind of underestimated how much free time I’d have to work on side projects in the first place. In conclusion, I’m glad that my biggest project for Stardance is finally complete, and I can get my certificate for 30 hours of approved work!"}, {"post_id": 80283, "ts": "2026-10-17T03:05:46Z", "hours": 3.3061, "text": "PastelnetOS #8 - calculator app! Additions made my first fully interactive application for PastelOS (with some help from YouTube) learned a bit more about JavaScript Challenges low-key kind of losing my motivation for this project; Stardance is almost over, but I’ve barely made any progress in the past month maybe set a time limit for myself? See how much progress I can make in (x) amount of hours and just finish it before it gets dragged on too long been too focused on making it look ‘polished’ instead of adding new features I feel like my devlogs have been pretty empty compared to some of my other projects, but that’s mainly due to programming feeling really repetitive and me feeling like I’m at the point where minor bugs and issues aren’t noteworthy enough to write down anymore. I see them more like a regular part of programming, and they can be easily fixed in a few minutes"}, {"post_id": 59247, "ts": "2026-08-31T22:41:34Z", "hours": 3.08, "text": "pastelnetOS #7 - nothingburger another long wait . . . Additions: The user menu finally works. I wrote an entire JS script by myself for once and its functional!! the name that you input shows up afterwards when you recieve the welcome message. Challenges: Learning JavaScript is very difficult. I have #code channel on slack and my 1 friend that knows JS on speed dial I tried making a sidebar but it still didnt work I want the sidebar to have the mp3 player, calculator, and notes to make things look clean i might add a terminal but lowk idk how to program that"}, {"post_id": 52692, "ts": "2026-08-22T23:36:38Z", "hours": 2.6781, "text": "pastelOS #6 - refined UI (1.0.6) PastelNetOS patch notes feat new icons (this one has like 0 progress done): Additions: Made some new app icons for the main layout! I didn’t really like the old ones since the font and shape(?) felt a bit out of place, and I want it to look cohesive as possible Also fixed some colouring and styling errors here and there; trying to make it look polished (though there are still only 3 apps) fixed some internal code that messed up the CSS during bug fixing Challenges: This was originally going to be a JavaScript-heavy update with more interactive features, but I still couldn’t figure out any of the code… I think I might need to go back to elementary coding classes because it took me an hour just to change the colour of the window when clicked and I didn’t even like it so I just reverted it back later 💔 I still have to fix the z-index issue and make selected windows a different colour, but JS has genuinely been a pain to learn from scratch so in the span of almost 3 hours i literally only changed the app icons. 😐 at least i got dynamic close buttons now 😭"}, {"post_id": 44991, "ts": "2026-08-11T03:51:25Z", "hours": 2.3292, "text": "pastelOS #5 - 1.0.4 feat email the messages/email app is now functional! if you click the scam link, it sends you to a fake blue screen page. updates: finally fixed topbar font updated README file updates welcome menu text to match better with the OS theme and ui better hover indicator when selecting an app working user menu i can’t believe it took me 12 hours to just make 3 apps 💔💔💔 i need to lock in for webOS 2"}, {"post_id": 39880, "ts": "2026-08-03T04:53:34Z", "hours": 2.0519, "text": "pastelOS #4 - (1.0.3 FIXED DRAG) after many hours and days, i finally fixed it. the windows are draggable. what a journey new features (alpha 1.0.3): text boxes are now transparent, inspired by liquid glass app icons are now presented in a list-type menu, similar to the cyberpunk 2077 menu in-game!! new background (old one was crusty) timer finally works DRAGGING WINDOWS FINALLY WORKS got rid of the goofy ahh ‘currently active’ text on the topbar i dont even know how i got them to work. i made a thousand and one commits on github and somehow the stars aligned and my code is working. haha ha ha ha it took me an embarrassingly long amount of time to fix this but like… as long as it works bro"}, {"post_id": 38483, "ts": "2026-07-31T21:50:04Z", "hours": 3.3581, "text": "pastelOS #3 - i hate github years will be taken off my life for how long it took for me to fix my darn github page. i hate using it. i would’ve stuck to neocities if a git repo wasnt required for stardance projects. anyways, i fixed the random merge issue i had where i accidentally opened too many branches and my dev branch and main branch were out of sync. im just gonna do everything on my main branch now. nuclear level threat incoming. for some reason my github codespace preview is different than what shows up on my site so i gotta fix that. sucks because my window drag script finally works but it doesnt even show up properly 😭 ❓ but for now, im gonna take a break demo link (alpha 1.0.1: https://sodahaunted.github.io/pastelnet.os/ )"}, {"post_id": 37955, "ts": "2026-07-31T00:30:31Z", "hours": 2.1869, "text": "pastelOS #2 still working on the os jam tutorial! got a pretty scuffed layout, the photos are wip for now i’m just playing around with the css to make it look nicer heres the absolute alpha 1.0 version of pastelOS (its ugly ik) finally fixed the javascript file that didn’t let me close the window properly?? it was because my js file loaded faster than my index.html which was a huge problem this is why you code everything in one long index.html instead of breaking it up lmao i want this to still be cyberpunk/vaporwave themed but im figuring out the ui and realizing it might be more advanced than what i know how to make i made some physical sketches to try and find the theme and plan out apps i wanna make a type of fortune teller would be pretty cool based on an rng system, higher number results in a good fortune while low number results in a bad one maybe a scam email app based on those fake messages you get in cyberpunk 2077 (?) i want an mp3 player 100%, idk what songs to put on it tho maybe some 2022 drift phonk for old times sake 😭 😭 😭 TBH i dont even know what i’m going to name this OS yet, pastelnet seems kinda off but CyberOS already exists its been over a week and im still not done this aaaa"}, {"post_id": 27852, "ts": "2026-07-13T19:04:39Z", "hours": 2.6103, "text": "pastelOS #1 playing around with github (first time using it) and css while finishing the jam tutorial its coming along well but hopefully i can fix it so it looks better later"}]...
|
Title: PastelNet:OS by @nic | Stardance
Devlogs:
Title: PastelNet:OS by @nic | Stardance
Devlogs:
pastelOS #1 playing around with github (first time using it) and css while finishing the jam tutorial its coming along well but hopefully i can fix it so it looks better later
pastelOS #2 still working on the os jam tutorial! got a pretty scuffed layout, the photos are wip for now i’m just playing around with the css to make it look nicer heres the absolute alpha 1.0 version of pastelOS (its ugly ik) finally fixed the javascript file that didn’t let me close the window properly?? it was because my js file loaded faster than my index.html which was a huge problem this is why you code everything in one long index.html instead of breaking it up lmao i want this to still be cyberpunk/vaporwave themed but im figuring out the ui and realizing it might be more advanced than what i know how to make i made some physical sketches to try and find the theme and plan out apps i wanna make a type of fortune teller would be pretty cool based on an rng system, higher number results in a good fortune while low number results in a bad one maybe a scam email app based on those fake messages you get in cyberpunk 2077 (?) i want an mp3 player 100%, idk what songs to put on it tho maybe some 2022 drift phonk for old times sake 😭 😭 😭 TBH i dont even know what i’m going to name this OS yet, pastelnet seems kinda off but CyberOS already exists its been over a week and im still not done this aaaa
pastelOS #3 - i hate github years will be taken off my life for how long it took for me to fix my darn github page. i hate using it. i would’ve stuck to neocities if a git repo wasnt required for stardance projects. anyways, i fixed the random merge issue i had where i accidentally opened too many branches and my dev branch and main branch were out of sync. im just gonna do everything on my main branch now. nuclear level threat incoming. for some reason my github codespace preview is different than what shows up on my site so i gotta fix that. sucks because my window drag script finally works but it doesnt even show up properly 😭 ❓ but for now, im gonna take a break demo link (alpha 1.0.1: https://sodahaunted.github.io/pastelnet.os/ )
pastelOS #4 - (1.0.3 FIXED DRAG) after many hours and days, i finally fixed it. the windows are draggable. what a journey new features (alpha 1.0.3): text boxes are now transparent, inspired by liquid glass app icons are now presented in a list-type menu, similar to the cyberpunk 2077 menu in-game!! new background (old one was crusty) timer finally works DRAGGING WINDOWS FINALLY WORKS got rid of the goofy ahh ‘currently active’ text on the topbar i dont even know how i got them to work. i made a thousand and one commits on github and somehow the stars aligned and my code is working. haha ha ha ha it took me an embarrassingly long amount of time to fix this but like… as long as it works bro
pastelOS #5 - 1.0.4 feat email the messages/email app is now functional! if you click the scam link, it sends you to a fake blue screen page. updates: finally fixed topbar font updated README file updates welcome menu text to match better with the OS theme and ui better hover indicator when selecting an app working user menu i can’t believe it took me 12 hours to just make 3 apps 💔💔💔 i need to lock in for webOS 2
pastelOS #6 - refined UI (1.0.6) PastelNetOS patch notes feat new icons (this one has like 0 progress done): Additions: Made some new app icons for the main layout! I didn’t really like the old ones since the font and shape(?) felt a bit out of place, and I want it to look cohesive as possible Also fixed some colouring and styling errors here and there; trying to make it look polished (though there are still only 3 apps) fixed some internal code that messed up the CSS during bug fixing Challenges: This was originally going to be a JavaScript-heavy update with more interactive features, but I still couldn’t figure out any of the code… I think I might need to go back to elementary coding classes because it took me an hour just to change the colour of the window when clicked and I didn’t even like it so I just reverted it back later 💔 I still have to fix the z-index issue and make selected windows a different colour, but JS has genuinely been a pain to learn from scratch so in the span of almost 3 hours i literally only changed the app icons. 😐 at least i got dynamic close buttons now 😭
pastelnetOS #7 - nothingburger another long wait . . . Additions: The user menu finally works. I wrote an entire JS script by myself for once and its functional!! the name that you input shows up afterwards when you recieve the welcome message. Challenges: Learning JavaScript is very difficult. I have #code channel on slack and my 1 friend that knows JS on speed dial I tried making a sidebar but it still didnt work I want the sidebar to have the mp3 player, calculator, and notes to make things look clean i might add a terminal but lowk idk how to program that
PastelnetOS #8 - calculator app! Additions made my first fully interactive application for PastelOS (with some help from YouTube) learned a bit more about JavaScript Challenges low-key kind of losing my motivation for this project; Stardance is almost over, but I’ve barely made any progress in the past month maybe set a time limit for myself? See how much progress I can make in (x) amount of hours and just finish it before it gets dragged on too long been too focused on making it look ‘polished’ instead of adding new features I feel like my devlogs have been pretty empty compared to some of my other projects, but that’s mainly due to programming feeling really repetitive and me feeling like I’m at the point where minor bugs and issues aren’t noteworthy enough to write down anymore. I see them more like a regular part of programming, and they can be easily fixed in a few minutes
pastelnetOS #9 - the completed version After many hours of reformatting code, designing application windows, and crying over CSS, I’ve finally finished PastelNetOS. It’s been a long time in the works, but I’m happy it reached a stage where I feel confident enough to ship it. Final Additions: I finished up the last three applications: the music player, notes, and gallery. I had some issues with the music player and figuring out how to get it functioning properly, but I soon figured it out after digging through a few GitHub repos and Google searches. I originally intended to make a dedicated Spotify-inspired MP3 player, but I ran out of time and just decided to make it as simple and functional as possible. The notes app is also a bit wonky, but what matters is that it works. It’s not completely unusable, but I don’t ever see myself using it in an urgent situation (lol) Challenges: I mentioned it before on a previous devlog, but I was running out of motivation to continue with this project near the end. I realized I didn’t enjoy it as much as I’d hoped, and I found myself working on other projects instead. I think it was mainly my lack of creativity and the repetitiveness of the site, and realizing I didn’t have enough prior coding knowledge to achieve some of the things I wanted to build. School was also a huge factor, as I hadn’t anticipated getting so busy in just a few weeks. I kind of underestimated how much free time I’d have to work on side projects in the first place. In conclusion, I’m glad that my biggest project for Stardance is finally complete, and I can get my certificate for 30 hours of approved work!
Ships:
A custom OS built with HTML, CSS and JavaScript. Inspired by old vaporwave and cyberpunk styles. Currently features 3 working applications, including a welcome menu, user menu and messages. A beginner web developer’s first attempt at JavaScript presented as a homage to Cyberpunk 2077.
PastelNET://OS – A cyberpunk & vaporwave-inspired operating system that runs directly on your browser. Includes 7 applications; including a calculator, gallery, notes, and music player. No need to download any scripts or plugins, as it runs directly on the web, hosted by Github Pages. This is my first attempt at a functional website using JavaScript, designed as a tribute to my love for Cyberpunk Edgerunners. Application List: Welcome Menu: introductory message User Menu: user name input Messages: interactive fake email Music Player: play music Calculator: calculate basic math problems Notes: write notes Gallery: browse through photos Hand-coded using vanilla HTML, CSS, and JS, no frameworks. Built for the Stardance WebOS 2 mission....
|
1792993939.927218
|
1793080339.927218
|
|
14731
|
Twinx - OS by @twinx | Stardance
|
twinx
|
2
|
5.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T09:10:40Z", "hours": 2.0, "multiplier": 4.44, "payout": 4, "blessing": "neutral", "text": "So few changes i think i added i don’t remember but were good unfortunately i switched to different desktop environment and me dumb i didn’t even pushed it to github.Leave that what’s new i added ? A dock at bottom for apps. A snake game which includes a snake and apple , i think everyone knows it :). A music player using my personal API", "repo": "https://github.com/Philast-015/OS/", "demo": "https://twinx-os.pages.dev/"}, {"ship_num": 2, "ts": "2026-06-16T04:18:12Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey i made a web OS , it include features such as code editor , note saver , pixel editor and a terminal with a menu bar that appears when clicking the windows key or super key.The challenging part was to make the pixel editor.", "repo": "https://github.com/Philast-015/OS/", "demo": "https://twinx-os.pages.dev/"}]...
|
[{"post_id": 29880, "ts": "202 [{"post_id": 29880, "ts": "2026-07-17T01:26:38Z", "hours": 0.8308, "text": "Made this music player app using API from my site i.e. teenapi so i made a music player around it also it is not in picture but i made a dock for app."}, {"post_id": 16092, "ts": "2026-06-26T05:00:05Z", "hours": 0.4986, "text": "Added a user menu which includes two user : root guest i haven’t added the password for testing of course."}, {"post_id": 16080, "ts": "2026-06-26T04:20:38Z", "hours": 0.485, "text": "Added a snake game with score board and restart option"}, {"post_id": 7528, "ts": "2026-06-12T16:01:10Z", "hours": 0.8583, "text": "added menu and a pixel editor. Where you can make a pixel art and export."}, {"post_id": 7294, "ts": "2026-06-12T04:56:08Z", "hours": 0.4719, "text": "made the terminal and code editor.Just the editor doesn’t support highlights."}, {"post_id": 6035, "ts": "2026-06-10T04:02:05Z", "hours": 1.4633, "text": "Made the basic thing which was listed on guide.With apps like terminal and text editor will add the func to open them later."}]...
|
Title: Twinx - OS by @twinx | Stardance
Devlogs:
Title: Twinx - OS by @twinx | Stardance
Devlogs:
Made the basic thing which was listed on guide.With apps like terminal and text editor will add the func to open them later.
made the terminal and code editor.Just the editor doesn’t support highlights.
added menu and a pixel editor. Where you can make a pixel art and export.
Added a snake game with score board and restart option
Added a user menu which includes two user : root guest i haven’t added the password for testing of course.
Made this music player app using API from my site i.e. teenapi so i made a music player around it also it is not in picture but i made a dock for app.
Ships:
Hey i made a web OS , it include features such as code editor , note saver , pixel editor and a terminal with a menu bar that appears when clicking the windows key or super key.The challenging part was to make the pixel editor.
So few changes i think i added i don’t remember but were good unfortunately i switched to different desktop environment and me dumb i didn’t even pushed it to github.Leave that what’s new i added ? A dock at bottom for apps. A snake game which includes a snake and apple , i think everyone knows it :). A music player using my personal API...
|
1793109090.8432038
|
1793195490.8432038
|
|
15256
|
the way to teal(just kill) by @love | Stardance
|
love
|
2
|
60.67
|
877
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T00:30:44Z", "hours": 23.0, "multiplier": 18.83, "payout": 413, "blessing": "neutral", "text": "this is a movement shooter made in godot 4.6 about a blue man in a green world, i really poured my soul into it so i hope you like it:)", "repo": "https://github.com/IDoTweaks/the-way-to-teal-just-kill-", "demo": "https://idotweaks.itch.io/the-way-to-tealjust-kill"}, {"ship_num": 2, "ts": "2026-06-21T13:09:47Z", "hours": 25.0, "multiplier": 18.23, "payout": 464, "blessing": "neutral", "text": "i made a speedrunning game inspired by a song, i will add more bosses and levels but now its in a state i very much like because this is my first game that i actually like i focused on the game feel way more than the looks and it shows its so fun i made a ghost system without any tutorial something i could never dream of this project let me see that i can build things on my own also i am aiming for a 3d printer so i need like 3x the hours so expect updates!", "repo": "https://github.com/IDoTweaks/the-way-to-teal-just-kill-", "demo": "https://idotweaks.itch.io/the-way-to-tealjust-kill"}]...
|
[{"post_id": 31312, "ts": "202 [{"post_id": 31312, "ts": "2026-07-19T16:42:06Z", "hours": 4.2094, "text": "DEVLOG 18 - ig we got a lot of art now new things in the game so pretty much all i did was new ui, make the game fit into a cartoon art style and some cover art for it new itch.io page the itch.io page sucked so i made it again and its so much better now check it out so as always the downloadable version is much better but there is still web support try it out: https://idotweaks.itch.io/the-way-to-tealjust-kill AND I LEFT SOME OF THE ART HERE SO YOU CAN SEE"}, {"post_id": 30937, "ts": "2026-07-18T22:54:39Z", "hours": 8.4639, "text": "DEVLOG 17 - i cant stop working on this last devlog i said i am done with the game but after those reviews i just cant stop key insights from the reviews so the main complains are that the game isnt visually appealing in some devices it ran poorly some mechanics arent clear/ need better tutorial the sfx are annoying (also there were some balancing issues and little bugs) i still got a little less than 19 per hour meaning people really did like it and it needs little changes so what did i change? i changed the tutorial to MAKE you do each mechanic and added a ghost that shows you how to do it new sfx i changed all the art style to be cartoonist i buffed the shotgun i did so much more but its so little that i cant point to each one so lets just say qol changes planning next i have already made 2 mini bosses and currently am working on some more enemy types, i will change the current levels to be the story mode with added story and dialogue and add a completly new mode which i will talk about in later devlogs"}, {"post_id": 28633, "ts": "2026-07-15T00:29:18Z", "hours": 1.1447, "text": "mini DEVLOG 16 - da final straw important if you rate it please download it, the web version is much much worse new levels added levels 7-9 unfortunate losses: sadly the styling system was very bad and i couldnt make it work so i just took it out something i had to add you could cheese everything with the dashes so im sorry… i added stamina da end so yeah i wont work on this project anymore prob but i am starting my own asm docs! be sure to stay updated!"}, {"post_id": 28494, "ts": "2026-07-14T19:34:05Z", "hours": 5.3678, "text": "DEVLOG 15 - boss redesign boss update the boss now attacks with a couple of new attacks! you can see them in the video AND a new paralysis system da cool af part so the boss now takes you to his office where he will offer you a deal: for 20% of your health you can get your paralysis level down! ui update so it looks better now, thats it XD UPDATE! so it is now updated in both github and itch.io but its very bad in the web versionT_T please just download itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill github: https://github.com/IDoTweaks/the-way-to-teal-just-kill-/releases/tag/NEWEST video btw the video was compressed and then converted so its low quality"}, {"post_id": 26518, "ts": "2026-07-11T11:21:23Z", "hours": 5.4061, "text": "DEVLOG 14 - the project is super star! boss update the current boss is very lazy in design so i decided to change it completely! with a snake boss, what i did is create a self generating floor and a snake with custom pathfinding boring technical stuff the floor has a function that does holes in it and makes sure the snake cannot get soft locked(since it cant pass through its own body) then the snake turns its positon + the player’s position into a tile in the map and using breadth first search from the head’s tile to the player’s tile it finds the next tile it needs to travel to this sounds so simple why did it take 5 hours? the reason is that this mf floor does not like generating how i want it to and i am very bad at algorithms so i had to try again and again and again and then i had to do the same thing with the snake because i havnt touched bfs in like 1.5 years THANKS FOR THE SUPER STAR as you can see while i was on vacation this project got a super star! i am very grateful for it! when will it be in the game? as you can see in the video it just follows the player right now, it has no attacks or something like it so i hope i can get it done by the end of this week(its saturday now so by next saturday) and it isnt wired into the game yet so its still just the old boss"}, {"post_id": 17327, "ts": "2026-06-28T02:11:05Z", "hours": 11.3172, "text": "DEVLOG 13 - UPDATE 1.1! this is a large update 1.1 basically doubles the size of the game and makes it actually feel good to play heres everything: enemies/combat added 4 new enemy types: the charger (rushes you and dashes), the drone (flies around and shoots), the exploder (runs at you and goes boom), and the sniper (snipes. very creative ik) added a sniper weapon for the player too shotgun and sniper now play a little reload animation between shots the new style system grading is no longer based on time insted its based on a style meter that is affected by cool things like no scoping in the air your final grade now mixes score + style + your final health ranking up the meter pops and flashes like super cool game feel hit-stop on kills(like a tiny freeze frame) FOV widens when you’re moving fast and stuff like that low health throws up a red vignette and getting hit shows an arrow pointing at whoever hit you combo kills rise in pitch the longer chain camera rolls when you strafe and dips when you land levels redesigned level 1 from scratch added levels 2 through 6 added a proper boss fight at the end added a tutorial UI + quality of life completely new UI that looks 10x better weapon indicator in the side added sound effects and music pause menu, switching weapons with the scroll wheel, on screen enemy counter settings menu for sensitivity, fov, volume, resolution, etc progress (and your best-run ghosts) now save locally web version web version is now fixed BUT its still a desktop game so its worse download github release: https://github.com/IDoTweaks/the-way-to-teal-just-kill-/releases/tag/NEWEST itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill yeah thats it now go kill stuff"}, {"post_id": 13096, "ts": "2026-06-21T13:00:34Z", "hours": 2.7217, "text": "DEVLOG - 12 shipping soon notes if a reviewer sees this: i got a report about some web problems which did not happen to me, if you see the textures as too dark tho try downloading it i was not able to test the mac version as well changes i made a readme for the github added a text of damage done above enemies added a mage type enemy that shoots projectiles SHIPPING after this im shipping this so make sure to look at my github + itch.io github: https://github.com/IDoTweaks/the-way-to-teal-just-kill- itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill"}, {"post_id": 12239, "ts": "2026-06-19T23:54:55Z", "hours": 4.3089, "text": "DEVLOG - 11 (THE GAME IS ALMOST COMPLETE) + WINNER ANNOUNCEMENT so in the competition the only person that submitted a score was in the comments and late but he is now the winner:) @Connor you won! i will add you to the game soon major things i added: a ghost of your best run that plays back (if anyone is wondering i spent like an hour making it record every input with a timestamp and the WAY easier approach i ended up using is just saving the position + rotation + weapon used every frame (if animations were important to me i would have added them its not that hard) ground slam that does damage to enemies a jump orb to make levels feel less slow minor things i added: a health bar fixed enemies to know attack with a cooldown added a death screen now the enemies have black hands because animating csg shapes is expensive the state of the game now the game now is in what i feel full technicality ready the only things needed are: more levels, bosses, more enemies, more obstacles and interesting things in general and maybe a 3rd gun but other than that its basically ready so dont forget to playtest and lmk DOWNLOAD itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill side note:D also im the developer of the game so its not that hard for me to get s+ and im sure you can too so just spam ground slam its op(expect a patch soon🫣🫣🫣)so here is a clip of me getting s+ plus you can see the ghost after"}, {"post_id": 11305, "ts": "2026-06-18T14:29:13Z", "hours": 0.5894, "text": "THE TOURNAMENT IS STARTING NOW! as you can see in the last devlog the tournament said in it is starting right now! explanation this is a speedrunning competition in my 1 level demo game(very early in development) in that game you cant even die yet so go wild rules the clips must be unedited(unless you add like an edit of lebron and then its fine) submissions end when this post reaches 24 hours/2:30 pm utc and will be sent directly to me on slack/discord(which you can find in my bio) exploits are allowed! runs can only be in the current build in itch.io -runs that are on linux/windows must not use the web version because its super bad changes this version press r to restart + finished the end gui + fixed some score calculation bugs controls: wasd + space - normal movement ngl ctrl - slide lmb - shoot(with shotgun you get knockback btw) shift - dash 1/2 - switch weapons r - restart winner the winner will be the one with highest score by the end of the 24 hours/2:30 pm utc or the first person to reach a perfect score and he will win being inside the game + in the next devlog itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill now for the general stuff my discord: swiftfishi3 my slack: loveTheGodotDeveloper (if there will be any edits i will put them here) for now take a look at my fastest run(you have to wait a bit and its mid development)- runs can only be in the current build in itch.io like and repost so more people see it:D"}, {"post_id": 10797, "ts": "2026-06-17T18:26:42Z", "hours": 2.7661, "text": "DEVLOG - 10 this is a large milestone! COMPETITION ANNOUNCEMENT AT THE END i updated the map textures to a retro-ish style and updated the bullet holes and steps to look much better too! i added a timer and score with a grading system that allows for better speedrunning! i added a custom finish level orb with a custom shader that makes it look super cool look at this gameplay it looks like a real game! now the competition: so the competition will start in the next devlog because i plan to add a restart button to make it easier to speedrun and more now THE WINNER AND PRIZE: the winner will be the person that will get the highest score in 24 hours after the devlog is posted or the first person to get a perfect score of 20k(which is very hard gl) and the prize will be (imagine a drum roll) yeah you will just be on a wall or something its not that huge i will also write about you in the next devlog if thats important to you CLARIFICATIONS BECAUSE CLAUDE SAID THIS DEVLOG IS SHIT: 1.the competition will not be in the current build and will be submitted directly to me through slack/discord with the name you have in stardance 2.the prize is shit idk why claude treats it like i should try to deceive you into thinking its good, its bad i promise 3.if someone sends me they got a 20k score it will end idk whats confusing about it anyway only like 3 people will submit probably itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill (textures in web version are bugged please download!) if you have anything to say about this devlog you may comment it and i will ignore it(unless its a real question) anyway look at this clippp its happening now look at next devlog!"}, {"post_id": 10574, "ts": "2026-06-17T11:42:16Z", "hours": 1.5328, "text": "DEVLOG - 09 i added a shotgun! the shotgun has a large cooldown + it applies force on you! + itch.io update IF YOU DONT CARE ABOUT THE TECHNICAL STUFF WATCH THE VIDEO DOWN HERE TO JUST SEE THE COOL SHOTGUN it was much easier to implement because all i did was add a bunch of raycasts and randomize them with this simple code: func randomizeRays(): var i : int = 0 for ray in children: if ray is RayCast3D: ray.target_position.x = orgPos[i] + randf_range(-spread,spread) i+=1 ray.target_position.y = orgPos[i] + randf_range(-spread,spread) i+=1 the actual hard part was getting both guns to work with eachother but i managed to do that the force function was also interesting because i use a chartacterbody3d in godot i have to make this stuff myself with basically only velocity so the code is pretty easy to understand i dont think i need to explain much func _applyForce(point :Vector3,force , maxRange:float = 10): var dir = global_position - point var dist = dir.length() if dist > maxRange: return dir = dir.normalized() var fallOff = clamp(1 - (dist/ maxRange),0,1) velocity += dir * force * fallOff knockbackTimer = KNOCKBACK_LOCK_TIME also the game is now updated and free on itch.io! link: https://idotweaks.itch.io/the-way-to-tealjust-kill (please download it its much better than the web version because i cant solve some web specific bugs)"}, {"post_id": 9462, "ts": "2026-06-15T20:27:16Z", "hours": 1.6878, "text": "DEVLOG - 08 added an interesting navigation optimization script i encountered some lag even with 4 enemies so sadly i had to optimize it on the bright side i saw yesterday a video about exactly that and omfg it saved me and explains the general idea of what i do its just that i do it worse and in a different way video: https://www.youtube.com/watch?v=BPNr_txi6TU&t=813s time 33(already in link) how it works? ok so its not the MOST OPTIMAL but it is good i mean i can every time an enemy die to resort it blah blah blah and use the modulo but this works good enough even though i spent half an hour fixing a bug that doesnt exist(turns out if you select a navigation region and bake navigation mesh it does that to all regions and not just the one you selected) but for some reason i did have to use a raycast down the enemy’s feet for it to work so they wont fall probably because of friction so anyways here is the code: extends Node3D var tickAssigned = [] var tickCount = [] var currentTick = 0; var tickTimer = 0.0 const TICK_RATE = 0.025 func _ready() -> void: tickAssigned.resize(navObjects.size()) tickAssigned.fill(0) tickCount.resize(20); tickCount.fill(0) var length = navObjects.size() for i in tickAssigned.size(): tickAssigned[i] = -1 var num = 20.0 /length var current = 0.0 for i in length: if current >= 20: current -= 20 tickAssigned[i] = int(current) tickCount[int(current)]+=1 current += num``` # Called every frame. 'delta' is the elapsed time since the previous frame. ```func _process(delta: float) -> void: tickTimer +=delta if tickTimer < TICK_RATE: return tickTimer = 0.0 var tickDelta = TICK_RATE var count = 0 for entity in navObjects: if entity != null: if tickAssigned[count] == currentTick: var target = entity.target if target != null: var navAgent = entity.navAgent var mode = entity.mode var gotShot = entity.gotShot var SPEED = entity.SPEED var accelaration = entity.accelaration var velocity = entity.velocity if mode == \"chase\" or gotShot: navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z) var dir = (navAgent.get_next_path_position() - entity.global_position).normalized() print(entity.name, navAgent.get_next_path_position()) entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration) entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true) entity.shouldMove = true elif mode == \"attack\": navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z) var dir = (navAgent.get_next_path_position() - entity.global_position).normalized() print(entity.name, navAgent.get_next_path_position()) entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration) entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true) entity.shouldMove = true count+=1 currentTick +=1 if currentTick >= 20: currentTick = 0 #@onready var body =$body #@onready var explosionParticles = preload(\"res://Particles/enemyExplode.tscn\") #var particleInstance #@export var navAgent : NavigationAgent3D #@export var damage = 10 #@export var accelaration = 10 #var target #var mode : String = \"idle\" #var gotShot = false``` and the enemy code is too long so i cant put it here also here is a clip of the current state of the game"}, {"post_id": 9354, "ts": "2026-06-15T18:10:19Z", "hours": 2.9417, "text": "DEVLOG - 07 added vertical dash wall jumping and started with the tutorial level today i wanted to design the first level so i looked up what good level builders there are and saw trenchbroom and after like an hour of trying to make it work on fedora i gave up and tried something called cyclops but it doesnt support my current godot version so i spent MORE TIME diving into its code because there was only 1 small error(or so i thought) which i managed to fix but then every like 3 minutes of using it it just crashed so i guess im sticking with normal godot AND it took me like 20 versions and about 5 commits that i thought i fixed it to get to a working version of the 4 line code that lets me dash vertically but setting it up based on camera lets you dash up and gain insane momentum instantly so i tried a system of my own which calculated you vertical velocity using your horizontal one and tried a bunch of formulas and ended up with this fine version so the wall jumping was very easy to do because i just reflect the current movement and add a boost the hard part was that every time before hitting the wall i would already switch in my keyboard to the other other direction so to deal with that i “predicted the future” like i did with the slopes so that the movement feels smoother but to deal with the problem of the keyboard switching i also checked for the opposite directions(which is bassicly copy paste with minuses)so here is the code for that: if is_on_floor(): canWallJump = false return var veloc = Vector3(velocity.x,velocity.y,velocity.z) #var future = self.global_position + veloc for i in get_slide_collision_count(): var collision = get_slide_collision(i) if collision.get_normal().y < .3: wallNormal = collision.get_normal() canWallJump = true return if veloc.length() > 0.5: var spaceState = get_world_3d().direct_space_state var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + veloc.normalized() * 1.2) ray.exclude = [self.get_rid()] var hit = spaceState.intersect_ray(ray) if hit and hit.normal.y < .3: wallNormal = hit.normal canWallJump = true return var altVeloc = Vector3(-velocity.x,velocity.y,velocity.z) if altVeloc.length() > 0.5: var spaceState = get_world_3d().direct_space_state var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2) ray.exclude = [self.get_rid()] var hit = spaceState.intersect_ray(ray) if hit and hit.normal.y < .3: wallNormal = hit.normal canWallJump = true return altVeloc = Vector3(velocity.x,velocity.y,-velocity.z) if altVeloc.length() > 0.5: var spaceState = get_world_3d().direct_space_state var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2) ray.exclude = [self.get_rid()] var hit = spaceState.intersect_ray(ray) if hit and hit.normal.y < .3: wallNormal = hit.normal canWallJump = true return canWallJump = false``` anyway here is a clip of the tutorial level now(compressed cause it was somehow 155mb): **NOTE**: it will be updated on itch.io after i finish making this tutorial level im just a little tired today and couldnt work on the project yesterday so i uploaded this devlog early"}, {"post_id": 8257, "ts": "2026-06-13T18:56:58Z", "hours": 1.4006, "text": "DEVLOG - 06 added a main menu! now as you can see THERE IS A MAIN MENU and it doesnt work very good on linux but my eye hurts so thats a problem for tommorow and let me know how it is on windows itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill"}, {"post_id": 8086, "ts": "2026-06-13T14:35:14Z", "hours": 2.2019, "text": "DEVLOG - 05 (it should’ve taken like 30 minutes wth) i added enemies that chase you and animations to your movements the animations were the easy part… but can someone tell me why godot uses the exact same shader to all of my models? so it took me like 50 god damn minutes to realise i need to just duplicate it and then i had a typo and i thought duplicating it doesnt work because of that so i gave up and sent it to chatgpt AND THEN I WAS RIGHT I DO NEED TO DUPLICATE IT anyways here is a clip of the game now and you have to like it ALSO SPECIAL THANKS TO CONNOR - thank him he is the reason the downloads now work in itch.io at least thats what i hope because if they dont idfk what to do itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill"}, {"post_id": 7998, "ts": "2026-06-13T10:48:12Z", "hours": 1.0583, "text": "DEVLOG - 04 HUGE MILESTONE movement is now finished with all new momentum logic and added dashing wait… why wont you just see for your selves? try out the movement in the link here and tell me if you like it:) https://idotweaks.itch.io/the-way-to-tealjust-kill note: i added downloadable versions and a web version the game is generally for windows/linux(i am on linux so i kinda have to XD) so i will not be fixing any only web only bugs anyways i have to put an image here so watch my first attempt of a crosshairT_T"}, {"post_id": 7964, "ts": "2026-06-13T09:10:34Z", "hours": 0.4461, "text": "mini devlog - 03.5 i wanted some art to the game so i made this banner it isnt proffesional at all and took me a damn hour for something thats kinda bad but this is what i cam up with i hope you like it (if you are interested in the project go check out my profile:)"}, {"post_id": 7754, "ts": "2026-06-12T23:03:36Z", "hours": 0.6658, "text": "DEVLOG - 03 added enemies that turn teal with time read devlog 00 to understand the game:) for this game i didnt want a boring health bar what i wanted was a visual indicator and well the green enemies are the health bar now you can see easily how much health they have as you can see in the video its a simple use of shaders and its my first time! I REALLY HATE THOSE but it works also look at those particles(i<3particles) –please like if you liked it and comment suggestions it really makes me feel better and improve the game"}, {"post_id": 7503, "ts": "2026-06-12T14:46:54Z", "hours": 1.8969, "text": "DEVLOG - 02 (still day one of the project i just do a lot:) IF YOU DONT KNOW WHAT THE GAME IS ABOUT GO TO DEVLOG - 00 added teal footsteps and teal bullet holes to emphasize the mix of blue and green it was implemented using decals which it is the first time i use them so they arent the greatest as you may have noticed i also added a gun with a simple animation+particles and a raycast currently it has nothing to shoot at but i might fix it soon… so the basics are done but i do need to add movement like double jump because after all it is a movement shooter and figure out how i can copy ultrakill’s movement so my game doesnt feel so “slow” next devlog will probably be today againT_T i just cant stop working on itttt"}, {"post_id": 7442, "ts": "2026-06-12T12:05:00Z", "hours": 0.9031, "text": "DEVLOG - 01 – how the way to teal(just kill) calculates sliding i added sliding and right now it isnt as smooth and polished as it might be at the end but i came up with a method that works quite well and im certain i will use it until the end how it works : if you are sliding a script checks what will be your position if you will continue in your current motion without changing the y if you wont be on the ground it means you will probably be on a slope how do we know how “sloppy”(hehe just like the game) it is? we shoot a raycast starting at the player’s feet down about 5 units(you may do whatever number you like) afterwards we check the position in which the raycast intersected with the floor and use it to calculate the force/boost we will give the player using that i can calculate everything i need to slide the player note :if you end up using it check my github because in the code you will need to adjust some things like more downward force in order for the player to not fly anyway here is a clip of it in action the game is in a newborn stage so no judging! –CODE TIME– (I NEVER USE COMMENTS BE GRATEFUL) #calculate the position in the future var horizontalVel = Vector3(velocity.x,0,velocity.z) var future = feet.global_position + horizontalVel #raycast prep var spaceState = get_world_3d().direct_space_state #starting above the future pos in case of upward slopes var rayStart = future + Vector3(0,1,0) var rayEnd = future + Vector3(0,-5,0) #setUp rayCast var rayQuery = PhysicsRayQueryParameters3D.create(rayStart,rayEnd) #so we dont hit ourselves xd rayQuery.exclude = [self.get_rid()] #now lets shoot this bad boyyy var intersect = spaceState.intersect_ray(rayQuery) #results time!!!! if intersect: #we want to return the distance from now to the future return feet.global_position.y - intersect.position.y else: #if it hits nothing we are fucking flying lets return so fucking much return 0```"}, {"post_id": 7416, "ts": "2026-06-12T10:55:30Z", "hours": 0.325, "text": "devlog - 00 today i thought about the idea of the game it will be inspired by a song i heard as a kid of a green man in a green world and he encounters a blue man “from a whole different story” the story is that you are a blue man who is sick from the inequality so you go to a mission killing all the green top % to get to a teal world from which comes the name: the way to teal(just kill) it will be a movement shooter made in godot i will try to create the assets myself but i might end up using some free models for now we will just use this bean with hands"}]...
|
Title: the way to teal(just kill) by @love | Stard Title: the way to teal(just kill) by @love | Stardance
Devlogs:
devlog - 00 today i thought about the idea of the game it will be inspired by a song i heard as a kid of a green man in a green world and he encounters a blue man “from a whole different story” the story is that you are a blue man who is sick from the inequality so you go to a mission killing all the green top % to get to a teal world from which comes the name: the way to teal(just kill) it will be a movement shooter made in godot i will try to create the assets myself but i might end up using some free models for now we will just use this bean with hands
DEVLOG - 01 – how the way to teal(just kill) calculates sliding i added sliding and right now it isnt as smooth and polished as it might be at the end but i came up with a method that works quite well and im certain i will use it until the end how it works : if you are sliding a script checks what will be your position if you will continue in your current motion without changing the y if you wont be on the ground it means you will probably be on a slope how do we know how “sloppy”(hehe just like the game) it is? we shoot a raycast starting at the player’s feet down about 5 units(you may do whatever number you like) afterwards we check the position in which the raycast intersected with the floor and use it to calculate the force/boost we will give the player using that i can calculate everything i need to slide the player note :if you end up using it check my github because in the code you will need to adjust some things like more downward force in order for the player to not fly anyway here is a clip of it in action the game is in a newborn stage so no judging! –CODE TIME– (I NEVER USE COMMENTS BE GRATEFUL) #calculate the position in the future var horizontalVel = Vector3(velocity.x,0,velocity.z) var future = feet.global_position + horizontalVel #raycast prep var spaceState = get_world_3d().direct_space_state #starting above the future pos in case of upward slopes var rayStart = future + Vector3(0,1,0) var rayEnd = future + Vector3(0,-5,0) #setUp rayCast var rayQuery = PhysicsRayQueryParameters3D.create(rayStart,rayEnd) #so we dont hit ourselves xd rayQuery.exclude = [self.get_rid()] #now lets shoot this bad boyyy var intersect = spaceState.intersect_ray(rayQuery) #results time!!!! if intersect: #we want to return the distance from now to the future return feet.global_position.y - intersect.position.y else: #if it hits nothing we are fucking flying lets return so fucking much return 0```
DEVLOG - 02 (still day one of the project i just do a lot:) IF YOU DONT KNOW WHAT THE GAME IS ABOUT GO TO DEVLOG - 00 added teal footsteps and teal bullet holes to emphasize the mix of blue and green it was implemented using decals which it is the first time i use them so they arent the greatest as you may have noticed i also added a gun with a simple animation+particles and a raycast currently it has nothing to shoot at but i might fix it soon… so the basics are done but i do need to add movement like double jump because after all it is a movement shooter and figure out how i can copy ultrakill’s movement so my game doesnt feel so “slow” next devlog will probably be today againT_T i just cant stop working on itttt
DEVLOG - 03 added enemies that turn teal with time read devlog 00 to understand the game:) for this game i didnt want a boring health bar what i wanted was a visual indicator and well the green enemies are the health bar now you can see easily how much health they have as you can see in the video its a simple use of shaders and its my first time! I REALLY HATE THOSE but it works also look at those particles(i<3particles) –please like if you liked it and comment suggestions it really makes me feel better and improve the game
mini devlog - 03.5 i wanted some art to the game so i made this banner it isnt proffesional at all and took me a damn hour for something thats kinda bad but this is what i cam up with i hope you like it (if you are interested in the project go check out my profile:)
DEVLOG - 04 HUGE MILESTONE movement is now finished with all new momentum logic and added dashing wait… why wont you just see for your selves? try out the movement in the link here and tell me if you like it:) https://idotweaks.itch.io/the-way-to-tealjust-kill note: i added downloadable versions and a web version the game is generally for windows/linux(i am on linux so i kinda have to XD) so i will not be fixing any only web only bugs anyways i have to put an image here so watch my first attempt of a crosshairT_T
DEVLOG - 05 (it should’ve taken like 30 minutes wth) i added enemies that chase you and animations to your movements the animations were the easy part… but can someone tell me why godot uses the exact same shader to all of my models? so it took me like 50 god damn minutes to realise i need to just duplicate it and then i had a typo and i thought duplicating it doesnt work because of that so i gave up and sent it to chatgpt AND THEN I WAS RIGHT I DO NEED TO DUPLICATE IT anyways here is a clip of the game now and you have to like it ALSO SPECIAL THANKS TO CONNOR - thank him he is the reason the downloads now work in itch.io at least thats what i hope because if they dont idfk what to do itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill
DEVLOG - 06 added a main menu! now as you can see THERE IS A MAIN MENU and it doesnt work very good on linux but my eye hurts so thats a problem for tommorow and let me know how it is on windows itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill
DEVLOG - 07 added vertical dash wall jumping and started with the tutorial level today i wanted to design the first level so i looked up what good level builders there are and saw trenchbroom and after like an hour of trying to make it work on fedora i gave up and tried something called cyclops but it doesnt support my current godot version so i spent MORE TIME diving into its code because there was only 1 small error(or so i thought) which i managed to fix but then every like 3 minutes of using it it just crashed so i guess im sticking with normal godot AND it took me like 20 versions and about 5 commits that i thought i fixed it to get to a working version of the 4 line code that lets me dash vertically but setting it up based on camera lets you dash up and gain insane momentum instantly so i tried a system of my own which calculated you vertical velocity using your horizontal one and tried a bunch of formulas and ended up with this fine version so the wall jumping was very easy to do because i just reflect the current movement and add a boost the hard part was that every time before hitting the wall i would already switch in my keyboard to the other other direction so to deal with that i “predicted the future” like i did with the slopes so that the movement feels smoother but to deal with the problem of the keyboard switching i also checked for the opposite directions(which is bassicly copy paste with minuses)so here is the code for that: if is_on_floor(): canWallJump = false return var veloc = Vector3(velocity.x,velocity.y,velocity.z) #var future = self.global_position + veloc for i in get_slide_collision_count(): var collision = get_slide_collision(i) if collision.get_normal().y < .3: wallNormal = collision.get_normal() canWallJump = true return if veloc.length() > 0.5: var spaceState = get_world_3d().direct_space_state var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + veloc.normalized() * 1.2) ray.exclude = [self.get_rid()] var hit = spaceState.intersect_ray(ray) if hit and hit.normal.y < .3: wallNormal = hit.normal canWallJump = true return var altVeloc = Vector3(-velocity.x,velocity.y,velocity.z) if altVeloc.length() > 0.5: var spaceState = get_world_3d().direct_space_state var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2) ray.exclude = [self.get_rid()] var hit = spaceState.intersect_ray(ray) if hit and hit.normal.y < .3: wallNormal = hit.normal canWallJump = true return altVeloc = Vector3(velocity.x,velocity.y,-velocity.z) if altVeloc.length() > 0.5: var spaceState = get_world_3d().direct_space_state var ray = PhysicsRayQueryParameters3D.create(global_position,global_position + altVeloc.normalized() * 1.2) ray.exclude = [self.get_rid()] var hit = spaceState.intersect_ray(ray) if hit and hit.normal.y < .3: wallNormal = hit.normal canWallJump = true return canWallJump = false``` anyway here is a clip of the tutorial level now(compressed cause it was somehow 155mb): **NOTE**: it will be updated on itch.io after i finish making this tutorial level im just a little tired today and couldnt work on the project yesterday so i uploaded this devlog early
DEVLOG - 08 added an interesting navigation optimization script i encountered some lag even with 4 enemies so sadly i had to optimize it on the bright side i saw yesterday a video about exactly that and omfg it saved me and explains the general idea of what i do its just that i do it worse and in a different way video: https://www.youtube.com/watch?v=BPNr_txi6TU&t=813s time 33(already in link) how it works? ok so its not the MOST OPTIMAL but it is good i mean i can every time an enemy die to resort it blah blah blah and use the modulo but this works good enough even though i spent half an hour fixing a bug that doesnt exist(turns out if you select a navigation region and bake navigation mesh it does that to all regions and not just the one you selected) but for some reason i did have to use a raycast down the enemy’s feet for it to work so they wont fall probably because of friction so anyways here is the code: extends Node3D var tickAssigned = [] var tickCount = [] var currentTick = 0; var tickTimer = 0.0 const TICK_RATE = 0.025 func _ready() -> void: tickAssigned.resize(navObjects.size()) tickAssigned.fill(0) tickCount.resize(20); tickCount.fill(0) var length = navObjects.size() for i in tickAssigned.size(): tickAssigned[i] = -1 var num = 20.0 /length var current = 0.0 for i in length: if current >= 20: current -= 20 tickAssigned[i] = int(current) tickCount[int(current)]+=1 current += num``` # Called every frame. 'delta' is the elapsed time since the previous frame. ```func _process(delta: float) -> void: tickTimer +=delta if tickTimer < TICK_RATE: return tickTimer = 0.0 var tickDelta = TICK_RATE var count = 0 for entity in navObjects: if entity != null: if tickAssigned[count] == currentTick: var target = entity.target if target != null: var navAgent = entity.navAgent var mode = entity.mode var gotShot = entity.gotShot var SPEED = entity.SPEED var accelaration = entity.accelaration var velocity = entity.velocity if mode == "chase" or gotShot: navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z) var dir = (navAgent.get_next_path_position() - entity.global_position).normalized() print(entity.name, navAgent.get_next_path_position()) entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration) entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true) entity.shouldMove = true elif mode == "attack": navAgent.target_position = Vector3(target.global_position.x,target.global_position.y,target.global_position.z) var dir = (navAgent.get_next_path_position() - entity.global_position).normalized() print(entity.name, navAgent.get_next_path_position()) entity.velocity = velocity.lerp(dir * SPEED, tickDelta * accelaration) entity.look_at(Vector3(target.global_position.x,entity.global_position.y,target.global_position.z),Vector3.UP,true) entity.shouldMove = true count+=1 currentTick +=1 if currentTick >= 20: currentTick = 0 #@onready var body =$body #@onready var explosionParticles = preload("res://Particles/enemyExplode.tscn") #var particleInstance #@export var navAgent : NavigationAgent3D #@export var damage = 10 #@export var accelaration = 10 #var target #var mode : String = "idle" #var gotShot = false``` and the enemy code is too long so i cant put it here also here is a clip of the current state of the game
DEVLOG - 09 i added a shotgun! the shotgun has a large cooldown + it applies force on you! + itch.io update IF YOU DONT CARE ABOUT THE TECHNICAL STUFF WATCH THE VIDEO DOWN HERE TO JUST SEE THE COOL SHOTGUN it was much easier to implement because all i did was add a bunch of raycasts and randomize them with this simple code: func randomizeRays(): var i : int = 0 for ray in children: if ray is RayCast3D: ray.target_position.x = orgPos[i] + randf_range(-spread,spread) i+=1 ray.target_position.y = orgPos[i] + randf_range(-spread,spread) i+=1 the actual hard part was getting both guns to work with eachother but i managed to do that the force function was also interesting because i use a chartacterbody3d in godot i have to make this stuff myself with basically only velocity so the code is pretty easy to understand i dont think i need to explain much func _applyForce(point :Vector3,force , maxRange:float = 10): var dir = global_position - point var dist = dir.length() if dist > maxRange: return dir = dir.normalized() var fallOff = clamp(1 - (dist/ maxRange),0,1) velocity += dir * force * fallOff knockbackTimer = KNOCKBACK_LOCK_TIME also the game is now updated and free on itch.io! link: https://idotweaks.itch.io/the-way-to-tealjust-kill (please download it its much better than the web version because i cant solve some web specific bugs)
DEVLOG - 10 this is a large milestone! COMPETITION ANNOUNCEMENT AT THE END i updated the map textures to a retro-ish style and updated the bullet holes and steps to look much better too! i added a timer and score with a grading system that allows for better speedrunning! i added a custom finish level orb with a custom shader that makes it look super cool look at this gameplay it looks like a real game! now the competition: so the competition will start in the next devlog because i plan to add a restart button to make it easier to speedrun and more now THE WINNER AND PRIZE: the winner will be the person that will get the highest score in 24 hours after the devlog is posted or the first person to get a perfect score of 20k(which is very hard gl) and the prize will be (imagine a drum roll) yeah you will just be on a wall or something its not that huge i will also write about you in the next devlog if thats important to you CLARIFICATIONS BECAUSE CLAUDE SAID THIS DEVLOG IS SHIT: 1.the competition will not be in the current build and will be submitted directly to me through slack/discord with the name you have in stardance 2.the prize is shit idk why claude treats it like i should try to deceive you into thinking its good, its bad i promise 3.if someone sends me they got a 20k score it will end idk whats confusing about it anyway only like 3 people will submit probably itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill (textures in web version are bugged please download!) if you have anything to say about this devlog you may comment it and i will ignore it(unless its a real question) anyway look at this clippp its happening now look at next devlog!
THE TOURNAMENT IS STARTING NOW! as you can see in the last devlog the tournament said in it is starting right now! explanation this is a speedrunning competition in my 1 level demo game(very early in development) in that game you cant even die yet so go wild rules the clips must be unedited(unless you add like an edit of lebron and then its fine) submissions end when this post reaches 24 hours/2:30 pm utc and will be sent directly to me on slack/discord(which you can find in my bio) exploits are allowed! runs can only be in the current build in itch.io -runs that are on linux/windows must not use the web version because its super bad changes this version press r to restart + finished the end gui + fixed some score calculation bugs controls: wasd + space - normal movement ngl ctrl - slide lmb - shoot(with shotgun you get knockback btw) shift - dash 1/2 - switch weapons r - restart winner the winner will be the one with highest score by the end of the 24 hours/2:30 pm utc or the first person to reach a perfect score and he will win being inside the game + in the next devlog itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill now for the general stuff my discord: swiftfishi3 my slack: loveTheGodotDeveloper (if there will be any edits i will put them here) for now take a look at my fastest run(you have to wait a bit and its mid development)- runs can only be in the current build in itch.io like and repost so more people see it:D
DEVLOG - 11 (THE GAME IS ALMOST COMPLETE) + WINNER ANNOUNCEMENT so in the competition the only person that submitted a score was in the comments and late but he is now the winner:) @Connor you won! i will add you to the game soon major things i added: a ghost of your best run that plays back (if anyone is wondering i spent like an hour making it record every input with a timestamp and the WAY easier approach i ended up using is just saving the position + rotation + weapon used every frame (if animations were important to me i would have added them its not that hard) ground slam that does damage to enemies a jump orb to make levels feel less slow minor things i added: a health bar fixed enemies to know attack with a cooldown added a death screen now the enemies have black hands because animating csg shapes is expensive the state of the game now the game now is in what i feel full technicality ready the only things needed are: more levels, bosses, more enemies, more obstacles and interesting things in general and maybe a 3rd gun but other than that its basically ready so dont forget to playtest and lmk DOWNLOAD itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill side note:D also im the developer of the game so its not that hard for me to get s+ and im sure you can too so just spam ground slam its op(expect a patch soon🫣🫣🫣)so here is a clip of me getting s+ plus you can see the ghost after
DEVLOG - 12 shipping soon notes if a reviewer sees this: i got a report about some web problems which did not happen to me, if you see the textures as too dark tho try downloading it i was not able to test the mac version as well changes i made a readme for the github added a text of damage done above enemies added a mage type enemy that shoots projectiles SHIPPING after this im shipping this so make sure to look at my github + itch.io github: https://github.com/IDoTweaks/the-way-to-teal-just-kill- itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill
DEVLOG 13 - UPDATE 1.1! this is a large update 1.1 basically doubles the size of the game and makes it actually feel good to play heres everything: enemies/combat added 4 new enemy types: the charger (rushes you and dashes), the drone (flies around and shoots), the exploder (runs at you and goes boom), and the sniper (snipes. very creative ik) added a sniper weapon for the player too shotgun and sniper now play a little reload animation between shots the new style system grading is no longer based on time insted its based on a style meter that is affected by cool things like no scoping in the air your final grade now mixes score + style + your final health ranking up the meter pops and flashes like super cool game feel hit-stop on kills(like a tiny freeze frame) FOV widens when you’re moving fast and stuff like that low health throws up a red vignette and getting hit shows an arrow pointing at whoever hit you combo kills rise in pitch the longer chain camera rolls when you strafe and dips when you land levels redesigned level 1 from scratch added levels 2 through 6 added a proper boss fight at the end added a tutorial UI + quality of life completely new UI that looks 10x better weapon indicator in the side added sound effects and music pause menu, switching weapons with the scroll wheel, on screen enemy counter settings menu for sensitivity, fov, volume, resolution, etc progress (and your best-run ghosts) now save locally web version web version is now fixed BUT its still a desktop game so its worse download github release: https://github.com/IDoTweaks/the-way-to-teal-just-kill-/releases/tag/NEWEST itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill yeah thats it now go kill stuff
DEVLOG 14 - the project is super star! boss update the current boss is very lazy in design so i decided to change it completely! with a snake boss, what i did is create a self generating floor and a snake with custom pathfinding boring technical stuff the floor has a function that does holes in it and makes sure the snake cannot get soft locked(since it cant pass through its own body) then the snake turns its positon + the player’s position into a tile in the map and using breadth first search from the head’s tile to the player’s tile it finds the next tile it needs to travel to this sounds so simple why did it take 5 hours? the reason is that this mf floor does not like generating how i want it to and i am very bad at algorithms so i had to try again and again and again and then i had to do the same thing with the snake because i havnt touched bfs in like 1.5 years THANKS FOR THE SUPER STAR as you can see while i was on vacation this project got a super star! i am very grateful for it! when will it be in the game? as you can see in the video it just follows the player right now, it has no attacks or something like it so i hope i can get it done by the end of this week(its saturday now so by next saturday) and it isnt wired into the game yet so its still just the old boss
DEVLOG 15 - boss redesign boss update the boss now attacks with a couple of new attacks! you can see them in the video AND a new paralysis system da cool af part so the boss now takes you to his office where he will offer you a deal: for 20% of your health you can get your paralysis level down! ui update so it looks better now, thats it XD UPDATE! so it is now updated in both github and itch.io but its very bad in the web versionT_T please just download itch.io: https://idotweaks.itch.io/the-way-to-tealjust-kill github: https://github.com/IDoTweaks/the-way-to-teal-just-kill-/releases/tag/NEWEST video btw the video was compressed and then converted so its low quality
mini DEVLOG 16 - da final straw important if you rate it please download it, the web version is much much worse new levels added levels 7-9 unfortunate losses: sadly the styling system was very bad and i couldnt make it work so i just took it out something i had to add you could cheese everything with the dashes so im sorry… i added stamina da end so yeah i wont work on this project anymore prob but i am starting my own asm docs! be sure to stay updated!
DEVLOG 17 - i cant stop working on this last devlog i said i am done with the game but after those reviews i just cant stop key insights from the reviews so the main complains are that the game isnt visually appealing in some devices it ran poorly some mechanics arent clear/ need better tutorial the sfx are annoying (also there were some balancing issues and little bugs) i still got a little less than 19 per hour meaning people really did like it and it needs little changes so what did i change? i changed the tutorial to MAKE you do each mechanic and added a ghost that shows you how to do it new sfx i changed all the art style to be cartoonist i buffed the shotgun i did so much more but its so little that i cant point to each one so lets just say qol changes planning next i have already made 2 mini bosses and currently am working on some more enemy types, i will change the current levels to be the story mode with added story and dialogue and add a completly new mode which i will talk about in later devlogs
DEVLOG 18 - ig we got a lot of art now new things in the game so pretty much all i did was new ui, make the game fit into a cartoon art style and some cover art for it new itch.io page the itch.io page sucked so i made it again and its so much better now check it out so as always the downloadable version is much better but there is still web support try it out: https://idotweaks.itch.io/the-way-to-tealjust-kill AND I LEFT SOME OF THE ART HERE SO YOU CAN SEE
Ships:
i made a speedrunning game inspired by a song, i will add more bosses and levels but now its in a state i very much like because this is my first game that i actually like i focused on the game feel way more than the looks and it shows its so fun i made a ghost system without any tutorial something i could never dream of this project let me see that i can build things on my own also i am aiming for a 3d printer so i need like 3x the hours so expect updates!
this is a movement shooter made in godot 4.6 about a blue man in a green world, i really poured my soul into it so i hope you like it:)...
|
1793000990.3584545
|
1793087390.3584545
|