|
34134
|
SlopUI by @racek256 | Stardance
|
racek256
|
1
|
95.0
|
1637
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T15:49:06Z", "hours": 95.0, "multiplier": 17.25, "payout": 1637, "blessing": "neutral", "text": "I made SlopUI, a local and private AI assistant interface featuring Slopper as your assistant. Just a few features to flag: memory, MCPs, a mobile page, and much more. The best part of this project is probably the local web search and memory engine, since they required me to benchmark multiple solutions and system prompts and iterate on result quality. The most challenging part was building the frontend. I am not a designer, so I had some trouble with the design, but I managed to get a design I am happy with. Mostly in dark mode, the light mode is not so great.", "repo": "https://github.com/racek256/SlopUI", "demo": "https://slop.racek.xyz"}]...
|
[{"post_id": 79066, "ts": "202 [{"post_id": 79066, "ts": "2026-10-12T15:39:34Z", "hours": 2.4158, "text": "devlog 12 Memory engine finished and deployed Few of AI assisted bug fixes README.md + docs/ + License Pre ship fixes and stuff"}, {"post_id": 78753, "ts": "2026-10-11T14:39:37Z", "hours": 9.5125, "text": "Devlog 11 Today I’ve been cooking hard. Currently I’m working on the memory engine for SlopUI. The architecture is quite simple: A cheap extractor analyzes all conversations, extracts context, and suggests memories. All context gets passed to a smarter filter that has tools to directly manage the entire memory system: add, edit, remove, and list memories. All saved memories get embedded and saved into the DB. Search uses an embedder + reranker for quick lookup. Search takes around 0.5s per message, but I’ll optimize it before the next devlog. I’ve also improved the mobile version of SlopUI and added PWA support so you can install it similarly to a normal app. The memory engine is still in development, and I have a few experimental ideas in mind that might make the memory crazy good. But first I need to finish it."}, {"post_id": 77122, "ts": "2026-10-05T18:18:31Z", "hours": 10.3761, "text": "Ups, looks like I overshot the 10 hours again and Stardance is forcing me to make another devlog. I guess it’s time for DEVLOG 10 You don’t have to stare into a white screen anymore thanks to my genius invention dark mode (I know it still looks terrible, I’m not a designer) configuration was migrated to a config.yaml file with more configuration options websearch got improved (I know I’m saying this every devlog and I’m probably gonna keep saying it even in the following ones) sidebar has an option to pin/unpin chat Discord OAuth is implemented and it’s used even on the demo deployment https://slop.racek.xyz more stable generation"}, {"post_id": 69094, "ts": "2026-09-16T11:14:35Z", "hours": 8.8664, "text": "Devlog 9 Yupiiii another version focused on stability and it is looking stable Generation is now separated from Request so even when connection dies frontend can reconnect without user noticing Full File Uploading support for basic text and image formats websearch, webfetch functions are stable enough to be considered usable websearch has gained massive speed improvements although it will improve even further in the future Frontend Polish, fixes and stuff ( the boring stuff that actually makes this app usable ) here is picture of slopper saying hello although it didn’t really understood what devlog means:"}, {"post_id": 63767, "ts": "2026-09-07T18:44:22Z", "hours": 9.16, "text": "Devlog 8 This version is mostly Quality of Life improvements and stability, but it really improves a lot. This update brings: Backend Working config.json file for basic model configuration Not crashing every second prompt webfetch/websearch somewhat faster and not crashing anymore Better security Improved SearXNG default configuration Frontend Mobile interface — the webpage finally works on phones Regeneration — now, even when the backend throws an error, the frontend gives you the option to retry the request Reasoning popup — you can now see what the model is actually thinking about WIP File attachments — frontend part finished, not wired into the backend I’m probably going to stop working on new features and rather start finishing this project up, so probably another QoL update will be next, alongside one last large feature I need to do: proper demo account creation, ’cause right now demo mode is just one large shared account. I know, pretty bad."}, {"post_id": 54052, "ts": "2026-08-24T20:18:35Z", "hours": 8.8131, "text": "devlog 7 In this version I finally added full MCP support. Websearch also got a few improvements, plus the full Lightpanda browser through MCP integration. Backend has improved stability. I have started on the mobile interface, although it’s not yet ready. I’ve also started working on the config system, for now most of it is in .env, but soon I’m gonna replace it with a proper .yaml file."}, {"post_id": 45845, "ts": "2026-08-12T15:56:54Z", "hours": 9.0239, "text": "Devlog 6 The demo is finally out on slop.racek.xyz. The demo won’t have all the features of the full dev build, because my server isn’t able to run proper embedding and reranking models. That’s why the demo relies on the Tavily API for web searches, it’s nearly identical. The harness is finally starting to come together. I implemented just two tools: websearch and webfetch . This took me so long because I wasn’t only adding those tools, but also benchmarking different embedding and reranking models, so I can be sure I’m not losing performance for no reason. The websearch tool is definitely going to go through more improvements, but for now this is the version I’m okay with and the AI also seems to like it (yes I asked it)"}, {"post_id": 44544, "ts": "2026-08-10T11:38:58Z", "hours": 8.0272, "text": "Devlog 5 After some time, I’m back with new features and improvements. I finally added a Reasoning/Websearch indicator so users can see what the AI is currently doing. This gives users a sense that something is happening, which makes the entire process feel faster. I’ve also removed the search button from the sidebar since I’m not going to work on it anytime soon. I’ll probably implement it for the second release, but not right now. If everything goes correctly, today I hope to release a demo with DeepSeek V4 Flash as a free model. All I need to do before releasing the demo is: Finish demo sign-in Fix a few frontend bugs Add rate limiting to the backend Deploy on my server After releasing the demo, I’ll have a really basic AI chat interface: you send a message, the AI responds. It has one tool, websearch . That’s why after releasing the demo, I want to focus on the harness and make it actually good. I’m definitely going to do a SearXNG implementation for the websearch tool (currently it uses the Tavily API) and implement a custom page loader/parser and some basic RAG. I haven’t used RAG for a long time, so I’m going to have to do some research on it. I definitely want to add more tools later on, but I’ll keep that for future devlogs."}, {"post_id": 40010, "ts": "2026-08-03T11:13:25Z", "hours": 9.7369, "text": "Devlog 4 Holy moly, it’s again another 9 hours. Thankfully, I finally have something to talk about in this devlog. I’m getting really close to publishing the demo page. I have a mostly working frontend, and the backend has just a few bugs I need to handle. I’m still missing rate limiting and model verification on the backend. For now, the harness has just one websearch tool. in the future, I want to add much more and make it a full harness, but for the first release I hope this is enough. One last feature I want to implement on the frontend is displaying the harness state, so instead of showing the user a simple loader, they will see what’s currently happening in the harness — what the agent is reasoning about, and so on. So the plan for now is: Complete frontend integration Fix backend bugs Display harness state on frontend Release public demo page with rate limiting Improve harness Ship first release"}, {"post_id": 36988, "ts": "2026-07-29T12:53:51Z", "hours": 9.6169, "text": "Devlog 3 After a week I’m finally back home and continuing my work on this project. I noticed I’ve already gone 9 hours without a devlog, but I don’t have much to talk about yet. Well, I started working on the backend — it’s taking quite slow because I’m giving it the proper time to ensure its security and ease of implementation for the frontend. I guess I’ll just list the stuff I have implemented or am working on implementing: JWT Authentication (finished) Conversation Branching (finished) AI Harness (mostly finished) DB implementation (mostly implemented) Rate limiting (not yet) API User focused / Authentication (finished) Inference / AI (not started yet) Still got some work to do, but the backend is getting close to finished. The last step will be frontend API implementation, and the project will be ready for demo deployment. I’ll probably launch the public demo without the need to create an account, with free inference on DeepSeek v4 Flash. I’ll use the OpenCode Zen API for that because they offer free DeepSeek v4 Flash inference. I hate the person who tought is good idea to block publishing copied messages i didn’t use AI to write it but i wrote it in my code editor and now i have to rewrite this entire message cause stardance thinks i AI generated this."}, {"post_id": 29121, "ts": "2026-07-15T19:46:05Z", "hours": 5.9314, "text": "Devlog 2 The frontend is finally in a usable state, which means I can finally start working on the backend. I intentionally kept the frontend simple no special features yet. I have plenty of ideas for special features and improvements, but my first priority is getting the application into a polished, presentable state. Once that’s done, I’ll start experimenting with those ideas. Now, let’s talk about the backend. What do I actually want? I’ll probably use basic Python with SQLite. There’s no need for a separate database for this project. The backend will include simple JWT authentication, response streaming, model selection, and some basic rate limiting. Once everything is working reliably, I’ll start thinking about building a custom harness or maybe even experimenting with some multi-agent workflows. But first, I don’t want to get sidetracked, I want to finish the base application."}, {"post_id": 27824, "ts": "2026-07-13T18:26:21Z", "hours": 3.8267, "text": "Devlog #1 I’m starting with a simple agentic web interface. For the first release, I want to focus mainly on the user interface and finishing the frontend. The backend will just be a simple API or an Ollama proxy with rate limiting. I also want to create a custom harness in Python, but not for the first release. I prepared some design files beforehand, but they look bad, so I’m not really following them much. If I don’t mess up the UI, it should come out looking okay, but I’m a bit more worried about the UX. I like putting animations everywhere, which always absolutely ruins UX, so I’ll try to be more conservative with them this time. I’m working on the frontend mostly without AI, using it only as interactive documentation. I’m hoping to get the frontend into a usable form asap so I can start working on other features and the custom harness."}]...
|
Title: SlopUI by @racek256 | Stardance
Devlogs:
D Title: SlopUI by @racek256 | Stardance
Devlogs:
Devlog #1 I’m starting with a simple agentic web interface. For the first release, I want to focus mainly on the user interface and finishing the frontend. The backend will just be a simple API or an Ollama proxy with rate limiting. I also want to create a custom harness in Python, but not for the first release. I prepared some design files beforehand, but they look bad, so I’m not really following them much. If I don’t mess up the UI, it should come out looking okay, but I’m a bit more worried about the UX. I like putting animations everywhere, which always absolutely ruins UX, so I’ll try to be more conservative with them this time. I’m working on the frontend mostly without AI, using it only as interactive documentation. I’m hoping to get the frontend into a usable form asap so I can start working on other features and the custom harness.
Devlog 2 The frontend is finally in a usable state, which means I can finally start working on the backend. I intentionally kept the frontend simple no special features yet. I have plenty of ideas for special features and improvements, but my first priority is getting the application into a polished, presentable state. Once that’s done, I’ll start experimenting with those ideas. Now, let’s talk about the backend. What do I actually want? I’ll probably use basic Python with SQLite. There’s no need for a separate database for this project. The backend will include simple JWT authentication, response streaming, model selection, and some basic rate limiting. Once everything is working reliably, I’ll start thinking about building a custom harness or maybe even experimenting with some multi-agent workflows. But first, I don’t want to get sidetracked, I want to finish the base application.
Devlog 3 After a week I’m finally back home and continuing my work on this project. I noticed I’ve already gone 9 hours without a devlog, but I don’t have much to talk about yet. Well, I started working on the backend — it’s taking quite slow because I’m giving it the proper time to ensure its security and ease of implementation for the frontend. I guess I’ll just list the stuff I have implemented or am working on implementing: JWT Authentication (finished) Conversation Branching (finished) AI Harness (mostly finished) DB implementation (mostly implemented) Rate limiting (not yet) API User focused / Authentication (finished) Inference / AI (not started yet) Still got some work to do, but the backend is getting close to finished. The last step will be frontend API implementation, and the project will be ready for demo deployment. I’ll probably launch the public demo without the need to create an account, with free inference on DeepSeek v4 Flash. I’ll use the OpenCode Zen API for that because they offer free DeepSeek v4 Flash inference. I hate the person who tought is good idea to block publishing copied messages i didn’t use AI to write it but i wrote it in my code editor and now i have to rewrite this entire message cause stardance thinks i AI generated this.
Devlog 4 Holy moly, it’s again another 9 hours. Thankfully, I finally have something to talk about in this devlog. I’m getting really close to publishing the demo page. I have a mostly working frontend, and the backend has just a few bugs I need to handle. I’m still missing rate limiting and model verification on the backend. For now, the harness has just one websearch tool. in the future, I want to add much more and make it a full harness, but for the first release I hope this is enough. One last feature I want to implement on the frontend is displaying the harness state, so instead of showing the user a simple loader, they will see what’s currently happening in the harness — what the agent is reasoning about, and so on. So the plan for now is: Complete frontend integration Fix backend bugs Display harness state on frontend Release public demo page with rate limiting Improve harness Ship first release
Devlog 5 After some time, I’m back with new features and improvements. I finally added a Reasoning/Websearch indicator so users can see what the AI is currently doing. This gives users a sense that something is happening, which makes the entire process feel faster. I’ve also removed the search button from the sidebar since I’m not going to work on it anytime soon. I’ll probably implement it for the second release, but not right now. If everything goes correctly, today I hope to release a demo with DeepSeek V4 Flash as a free model. All I need to do before releasing the demo is: Finish demo sign-in Fix a few frontend bugs Add rate limiting to the backend Deploy on my server After releasing the demo, I’ll have a really basic AI chat interface: you send a message, the AI responds. It has one tool, websearch . That’s why after releasing the demo, I want to focus on the harness and make it actually good. I’m definitely going to do a SearXNG implementation for the websearch tool (currently it uses the Tavily API) and implement a custom page loader/parser and some basic RAG. I haven’t used RAG for a long time, so I’m going to have to do some research on it. I definitely want to add more tools later on, but I’ll keep that for future devlogs.
Devlog 6 The demo is finally out on slop.racek.xyz. The demo won’t have all the features of the full dev build, because my server isn’t able to run proper embedding and reranking models. That’s why the demo relies on the Tavily API for web searches, it’s nearly identical. The harness is finally starting to come together. I implemented just two tools: websearch and webfetch . This took me so long because I wasn’t only adding those tools, but also benchmarking different embedding and reranking models, so I can be sure I’m not losing performance for no reason. The websearch tool is definitely going to go through more improvements, but for now this is the version I’m okay with and the AI also seems to like it (yes I asked it)
devlog 7 In this version I finally added full MCP support. Websearch also got a few improvements, plus the full Lightpanda browser through MCP integration. Backend has improved stability. I have started on the mobile interface, although it’s not yet ready. I’ve also started working on the config system, for now most of it is in .env, but soon I’m gonna replace it with a proper .yaml file.
Devlog 8 This version is mostly Quality of Life improvements and stability, but it really improves a lot. This update brings: Backend Working config.json file for basic model configuration Not crashing every second prompt webfetch/websearch somewhat faster and not crashing anymore Better security Improved SearXNG default configuration Frontend Mobile interface — the webpage finally works on phones Regeneration — now, even when the backend throws an error, the frontend gives you the option to retry the request Reasoning popup — you can now see what the model is actually thinking about WIP File attachments — frontend part finished, not wired into the backend I’m probably going to stop working on new features and rather start finishing this project up, so probably another QoL update will be next, alongside one last large feature I need to do: proper demo account creation, ’cause right now demo mode is just one large shared account. I know, pretty bad.
Devlog 9 Yupiiii another version focused on stability and it is looking stable Generation is now separated from Request so even when connection dies frontend can reconnect without user noticing Full File Uploading support for basic text and image formats websearch, webfetch functions are stable enough to be considered usable websearch has gained massive speed improvements although it will improve even further in the future Frontend Polish, fixes and stuff ( the boring stuff that actually makes this app usable ) here is picture of slopper saying hello although it didn’t really understood what devlog means:
Ups, looks like I overshot the 10 hours again and Stardance is forcing me to make another devlog. I guess it’s time for DEVLOG 10 You don’t have to stare into a white screen anymore thanks to my genius invention dark mode (I know it still looks terrible, I’m not a designer) configuration was migrated to a config.yaml file with more configuration options websearch got improved (I know I’m saying this every devlog and I’m probably gonna keep saying it even in the following ones) sidebar has an option to pin/unpin chat Discord OAuth is implemented and it’s used even on the demo deployment https://slop.racek.xyz more stable generation
Devlog 11 Today I’ve been cooking hard. Currently I’m working on the memory engine for SlopUI. The architecture is quite simple: A cheap extractor analyzes all conversations, extracts context, and suggests memories. All context gets passed to a smarter filter that has tools to directly manage the entire memory system: add, edit, remove, and list memories. All saved memories get embedded and saved into the DB. Search uses an embedder + reranker for quick lookup. Search takes around 0.5s per message, but I’ll optimize it before the next devlog. I’ve also improved the mobile version of SlopUI and added PWA support so you can install it similarly to a normal app. The memory engine is still in development, and I have a few experimental ideas in mind that might make the memory crazy good. But first I need to finish it.
devlog 12 Memory engine finished and deployed Few of AI assisted bug fixes README.md + docs/ + License Pre ship fixes and stuff
Ships:
I made SlopUI, a local and private AI assistant interface featuring Slopper as your assistant. Just a few features to flag: memory, MCPs, a mobile page, and much more. The best part of this project is probably the local web search and memory engine, since they required me to benchmark multiple solutions and system prompts and iterate on result quality. The most challenging part was building the frontend. I am not a designer, so I had some trouble with the design, but I managed to get a design I am happy with. Mostly in dark mode, the light mode is not so great....
|
1793008322.2191775
|
1793094722.2191775
|
|
50489
|
Fluetro OS by @TonyStark965 | Stardance
|
TonyStark965
|
2
|
95.0
|
669
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T19:26:09Z", "hours": 36.0, "multiplier": 18.53, "payout": 669, "blessing": "neutral", "text": "I have now made Fluetro OS into a much more complete OS experience. It now has a working Browser, AI Brief, and some games, along with the previous Paint, Memo and Calculator apps. It now also includes a Boot screen and a Restart function, along with automatic and more consistent Accent Color theming throughout the UI. Also, the UI is now much more consistent with its icons and design. The biggest challenge for me was trying to “not” make silly mistakes, I’d forget a comma or a semi-colon somewhere or misspell something and it’d break the whole system. I especially had trouble with the animations and different app states. I am especially proud of how much the OS has evolved through the span of only a month, I tried my best to make it feel usable and interactive. To test it, just click try project and use it. The AI Brief feature will ask you for your location permission and if denied will resort to IP-based location, but the built-in weather system of the OS will require you to add your own location from the Quick Settings.", "repo": "https://github.com/TonyStark965-404/Fluetro-OS", "demo": "https://fluetro-os.vercel.app"}, {"ship_num": 2, "ts": "2026-08-18T18:02:07Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A WebOS inspired heavily from the Metro aesthetic from Windows 8/8.1 and Fluent Design aesthetic from Windows 11. Has multiple working apps, working login screen and desktop elements. Will get an update in the future for WebOS 2, with a working Start Screen inspired menu.", "repo": "https://github.com/TonyStark965-404/Fluetro-OS", "demo": "https://fluetro-os.vercel.app"}]...
|
[{"post_id": 82753, "ts": "202 [{"post_id": 82753, "ts": "2026-10-25T18:58:08Z", "hours": 3.4086, "text": "Fluetro OS DevLog 063 Redesigns, yayyy New stuff/changelog Files app now has Breadcrumbs design in the address bar instead of the normal “ \" style, you can’t click on them to change locations though, it just looks cleaner, and when you click it, it turns back to the “ \" style where you can edit stuff Quick settings redesign including all icons More additions to quick settings Find now supports keyboard input to select and launch items Did the HTML and CSS for some other little features that’ll be added All selection is now themed using Accent Color Added a text at the bottom of the Boot Screen prompting you to go Fullscreen mode “Escape” button on the keyboard can now be used to exit any input type box, like the Address Bar in the Files App, or the Custom Accent color and Weather location fields in the Settings app. Added an Easter egg (not gonna show that though) Fixes As I said under “New stuff”, Find now supports keyboard input and at first, it was glitching out randomly highlighting stuff, but now it’s fixed Fixed the issue with the Game Bar background so now the Games Library area has a whole background covering up the rest of the app. Fixed an issue where the Memo and the Find Recent searches list wasn’t actually being cleared on Shutdown/Restart, it was actually not being loaded the next boot. Fixed an issue which caused the “non-existent location error” to not pop up when you entered a non-existent address in the Files app’s address bar Fixed and issue where the window contents would overflow invisibly at the bottom and cause issues with the padding and margins Current issues/bugs I only did the HTML and CSS for the upcoming features, so they don’t actually work at this point, since I didn’t do the JS part."}, {"post_id": 82079, "ts": "2026-10-23T19:37:19Z", "hours": 3.6169, "text": "Fluetro OS DevLog 062 I said I’d work slowly and post one DevLog a day, I guess one of them was a lie New stuff/changelog Removed the toggle to show them from settings and scrapped the idea Added the OS logo to the About section in Settings Added a macOS Finder-like search bar, called “Find” Added a toggle for “Find” in the quick settings Made “Find” actually work Made “Find” actually update the suggestions with the app you last opened via it at the top Made the toggle functionality stay even after a restart/shutdown using localStorage Added an option in settings to clear recent searched apps during a restart/shutdown Changed the icons in the Quick Settings panel to use images of Windows 11’s Fluent Emojis, before they used Emojis which looked good on my end, but probably won’t on Linux or macOS. And yes, the search bar has animations, but its position is fixed cuz it looks good over there Fixes Fixed an issue, where checking the option to clear memo on shutdown/restart would clear it instantly Fixed multiple issues noticed regarding “Find” during its development Changed Daily Brief to load Dynamically when the app opens, to preserve Privacy further unless someone decides to open it manually rather than it just running in the background all INVISIBLE style. Current bugs/issues “Find” can’t browse through the File system, this is intended cuz “Find” is supposed to be a launcher for your apps There’s another issue, but it is going to be an easter egg"}, {"post_id": 81842, "ts": "2026-10-22T18:10:01Z", "hours": 2.5019, "text": "Fluetro OS DevLog 061 File system complete, but still much more is left New stuff/changelog Added some sample video files (these are a surprise, I already ruined it for the images, but won’t for the videos) Added a working video player, but unfortunately, it doesn’t have a queue, so you open a video file and it plays that file Added a Pomodoro timer, based on cutepomodorotimer.com All music, images, and videos are now cloud-based, and thus will not be uploaded to the Project’s GitHub page The text at the top left now responds to the currently open and focused app Added icons for User folders Added an indicator when refreshing in the Files app Fixes Fixed an issue where the Dock would remain stretched if you closed an app while it was maximized Fixed an issue where you couldn’t name 2 different files of different types the same, so if a Folder is named “F1” you couldn’t name a file in the same directory as “F1” Fixed another issue in which naming a file the same as an app’s executable file would give it the same icon Sort option is now disabled in the Gallery and Home page of the Files app Photo viewer no longer uses random arrangement of photos, instead uses an ascending alphabetical order Current issues/bugs None encountered at this point in time"}, {"post_id": 81637, "ts": "2026-10-21T20:43:24Z", "hours": 3.0775, "text": "Fluetro OS DevLog 060 More stuff, but nothing major New stuff/changelog So, the Photo Viewer app now supports moving between images inside the same folder, and it’s like that cuz it’s inspired by Windows Photo Viewer, and yes, it also supports your keyboard’s arrow keys There’s now a Text Editor embedded inside the Files app to edit your Text Files that you create There’re now some sample images in the Images folder, and thus in the gallery Gallery elements can now be selected and have their own context menus, which is literally the same as all the preloaded folders and files Fixes The Navigation pane in the Settings app now reacts to you scrolling in the app, so it highlights the corresponding panel button Current issues/bugs The sort button in the gallery does nothing, so it’s deprecated for that area, and gallery will be arranged by order of importance"}, {"post_id": 80967, "ts": "2026-10-19T12:42:55Z", "hours": 4.0289, "text": "Fluetro OS DevLog 059 Settings app almost complete, only 2 settings left New stuff/changelog Navigation for the Settings app works now Custom accent no longer allows pure black/pure white and only allows 6-digit Hex codes All settings are now persistent throughout restarts and shutdowns Stretch dock to max width when an app is maximized works, even with multiple apps open Clear memo on Shutdown/Restart works too Added working Stardance and Github Page links to About section Show highlight for open apps option works too, so you can turn it off to get only a sleek border around the running app icon in the dock, instead of the full background The reset option works now too, and it also asks for confirmation Added tick marks to options that are turned on Added calculation logic to get the nice gradient in the lock screen according to the Custom accent too Fixes Fixed an issue where the running app highlight would appear even when the option was unchecked Fixed an issue with setting persistence which was caused due to some options being on by default Fixed an issue where the dock would get an awkward position when being stretched due to a maximized app Fixed an issue where multiple windows with some being maximized would glitch out the dock and make it toggle between its stretched and unstretched state Fixed an issue where the Window wouldn’t take up all of the screen when maximized if stretch dock option was checked Fixed an issue where the error windows would appear in the dock between Gaming Hub and Music player instead of appearing at the end of the dock Fixed the Songs in Music Player queue so they appear alphabetically Fixed an issue where you could put transparency values into hex for the accent to get a transparent color Fixed another issue with the clock Flyout which caused the Calendar to appear slightly off Fixed the issue from my previous DevLog which talked about the Lock Screen Gradient not being coded properly Current issues/bugs I haven’t implemented the Desktop icons yet, so the option in Settings remains unusable I also haven’t done the Privacy Policy or the Window for it, so that option remains unused too"}, {"post_id": 80221, "ts": "2026-10-16T19:47:20Z", "hours": 3.18, "text": "Fluetro OS DevLog 058 More settings that actually work New stuff/changelog All the settings in the Personalization area work, including custom Accent colors and custom wallpapers All the settings in the Time and Date area work (24-hr format added from feedback) Only the double-click title bar to maximize option works in the Interface section Multiple changes in HTML to accommodate the custom wallpapers and CSS designs for different areas Fixes Fixed an issue where the settings window would lag when trying to do anything with it, like resize/maximize/minimize/close etc. Fixed an issue with the margins and padding in the Clock Flyout caused by the weird CSS code that I did for the it during the initial stages since I didn’t know that much about CSS yet Current issues/bugs If you select a custom wallpaper, then switch back to a preloaded wallpaper, and then try to go back to your custom one, you’ll be prompted to choose a new one, but you can just close the window if you don’t want to choose a new one Some of the settings in the Interface and Time & Date sections aren’t retained after a Fluetro restart The gradient in the left side lock screen isn’t coded properly so a section of it uses the default colors, resulting in weird gradients according to the custom accent used, this doesn’t happen in the case of Automatic Accents though Note: The Automatic Accent system is reserved only for the preloaded wallpapers and is disabled for custom ones"}, {"post_id": 79390, "ts": "2026-10-13T19:39:21Z", "hours": 1.5175, "text": "Fluetro OS DevLog 057 Finally finished adding all the settings options New stuff added/changelog Added settings for Interface, Privacy & Security and the About sections Did the CSS for all the above-mentioned areas Made the Location bar work using JS and made it sync with the one in Quick Settings (shown in video) Fixes Fixed the weird gaps and padding in some areas of the settings app Current issues/bugs Most of the settings are not yet functional Note The Personalization area might get Radio buttons (or menus) while the other sections will get checkboxes"}, {"post_id": 78834, "ts": "2026-10-11T18:39:29Z", "hours": 1.9053, "text": "Fluetro OS DevLog 056 More Settings New Stuff added/changelog Added some more settings Did the JS for the Wallpapers so they actually work now Fixes Found an issue that causes lag and no animations when trying to open the wallpaper change menu from quick settings or the settings app, it’s now fixed, I did it by rendering the options beforehand. I tried to fix this issue thinking it was settings app-only but had to give up on it since none of my attempts to fix it worked, then I found out the same was happening in the quick settings wallpaper picker, this was probably because it goes through the code and tries to render the image using JS, and it can’t do it before the app opening animation finishes. Current issues/bugs There is no CSS for the new settings areas that have been added There’s no JS for the new settings areas that have been added Note I am thinking of making a pack that can make Windows 11 feel like Fluetro, so please let me know if anyone would like that."}, {"post_id": 78291, "ts": "2026-10-10T09:45:59Z", "hours": 2.3794, "text": "Fluetro OS DevLog 055 CSS stuff New stuff added/changelog Did the CSS for the Settings app Revamped some designs for the Gaming Hub and Settings when maximized so they don’t look weird Did a roadmap for all the settings to add Fixes Fixed some of the jumpy and jittery elements in the UI Current issues/bugs I still haven’t done anything about the JavaScript part of the Settings app so for now, everything is only visual Fun Fact The UI for this project was inspired by a leaked screenshot of a concept Windows version that surfaced online, I tried to remake that in my Windows 11 system and had a screenshot, finally found it and it’s attached below. The dock is inspired by a DeviantArt Post I saw a few years ago (I think it was called Fluent Big Sur). The top Bar UI of the OS is inspired by the new “Dock” feature added to Microsoft PowerToys and how I arranged it when I first enabled it (image attached)"}, {"post_id": 77915, "ts": "2026-10-08T19:01:41Z", "hours": 2.3003, "text": "Fluetro OS DevLog 054 Mostly improvements New stuff added Maximizing/restoring down now has animations and they don’t interfere with the resizing scenario like earlier, this took so long to implement because my first ever project that involved JavaScript was just this year, so I am still learning. Revamped the Gaming Hub Added a Settings app, and hooked it to the Quick Settings panel so it can also be opened from there Fixes For some reason the animations weren’t working for all the windows, so I checked and tried lots of different stuff, and then found out that there was no height and width parameters for most of the windows, so I added some and that fixed the animations Current bugs/issues I just started working on the Settings app, so it’s really unfinished (shown in the video)"}, {"post_id": 77783, "ts": "2026-10-08T08:24:58Z", "hours": 2.73, "text": "Fluetro OS DevLog 053 Music to my ears New stuff added Added a Music Player with working Play/Pause, seekBar, Previous/Next and Queue Added music in Audio Folder in the Files App Redid almost all the Files App icons with higher quality versions Changed the Details Pane text to a more appropriate one Added a Supabase fetch system for the Music Clicking “Previous” while being on the 1st music in the Queue results in restarting that song Clicking “Next” while being on the last music in the Queue results in restarting that song Fixes Fixed some issues with the un-resizable windows, which could be resized earlier, they just didn’t show the custom cursors Fixed jumpy windows Fixed Music Player issues that I encountered along the way, like the Play/Pause buttons not rendering properly or the SeekBar jumping Current issues/bugs The Music takes some time to load, but it mostly depends on your internet connection The Queue is still custom arranged, and not alphabetically sorted"}, {"post_id": 76238, "ts": "2026-10-02T20:12:22Z", "hours": 1.7733, "text": "Fluetro OS DevLog 052 Well, this is embarrassing New Stuff added Browser has its own custom accent color now (like how browsers on Windows have) The Photo Viewer icon stuck in the dock is now gone and appears only when Photo Viewer is called Fixes Fixed the issue with the dock padding when Photo Viewer wasn’t called Stuff that happened Tried to add a dynamic accent color sync system for the browser, it worked to some extent, but it won’t instantly sync if you changed the wallpaper to change the accent color, but would sync that accent color after a restart, so I had to remove it. Will try to implement it later though. I have been working on a Music Player app (as I said that there will be one in a future update), wasted a lot of time debugging it trying to find out why the music wasn’t playing, turns out, the Integrated Browser in VS Code doesn’t allow intregated <audio> elements. Tried in my default browser (and brave), works as intended. (Please ignore the bright blue background, it’s just a placeholder)"}, {"post_id": 75373, "ts": "2026-09-29T21:32:07Z", "hours": 1.0592, "text": "Fluetro OS DevLog 051 Lost my 25-day Streak New Stuff added Photo viewer that can open photos from the gallery and adjusts according to image size Fixes Fixed the Delete system, so now it deletes only what you want to delete, and it’s now persistent so it stays that way even after a page refresh/restart Current bugs/issues The issue with the sub-folders not opening after the parent folder is renamed still exists"}, {"post_id": 75005, "ts": "2026-09-28T20:36:29Z", "hours": 1.6364, "text": "Fluetro OS DevLog 050 Half-century DevLog? Really? New Stuff added The rename function works now Delete button kinda works Yeah that’s about it Fixes The rename function was really hard to implement, so there were lots of glitches and issues and stuff, I did manage to fix most of them, the rename box was originally meant to show over the existing file name, I did do some research to see if I could get it to work this way, but since I couldn’t get it working, I had to improvise and do the separate rename section. Tried to make the rename system be inside one single eventListener but couldn’t get it to work that way, had to create a separate function to call along with Pressing the rename and delete buttons no longer remove the selected state from the item. Current bugs/issues Clicking delete doesn’t dismiss the context menu (easy fix but it’s here because it’s just my current progress) Clicking delete for one item deletes all the items in the folder Delete is temporary and resets on refresh (for now at least) Nested Folders don’t work if you rename the parent folder (for example, in the video I rename a folder, then the folder inside it doesn’t open. This is fixed on a restart/webpage refresh)"}, {"post_id": 73741, "ts": "2026-09-25T20:19:36Z", "hours": 1.6108, "text": "Fluetro OS DevLog 049 Very little progress, since most of the time just went into debugging and fixing stuff, tried using Copilot in VS Code but it’s New stuff The context menu is finally aligned The context menu got icons now Made the delete button have a red icon and red text The open button in the context menu finally works Had to redo the file handling system so the open button system can be implemented easier Fixes Broke everything, yeah, literally the whole OS, while trying to redo the file handler because I was removing some lines (individual EventListeners) and putting them under one roof, but I forgot some brackets, since I couldn’t fix it easily, I tried to use Copilot (the one inside VS Code) to find out what’s causing the error, dude literally said that there’s an error in these lines, no elaboration or fix so I had to get the code from my backup and redo everything very carefully, so now it’s ok I have never positioned an element inside another element that can be resized, so this was new and challenging for me to align the context menu nicely with respect to the files window and its variable size system, it took some time, but I did it. Current issues/bugs Rename and Delete buttons are still to be implemented"}, {"post_id": 72767, "ts": "2026-09-23T18:21:02Z", "hours": 2.7964, "text": "Fluetro OS DevLog 048 Late DevLog, couple of improvements, mostly fixes Was supposed to upload a DevLog yesterday but had some issues with the internet (had to ditch the router), probably some coding time isn’t event logged New Features added/changelog Revamped the File Management system so now the sub directory system actually works, like you create a “New Folder” in one directory, and one in another, and now they both don’t overlap/refer to the same directory Added icons inside the Sort Menu Added a context menu for files/folders (the positioning is broken since the css isn’t done correctly, because I’ll probably be using some inspiration from Fluent New Tab for the dynamic positioning) The context menu for files/folders behaves differently according to if the Folder/File mentioned is a System one or User Created You can now un-select items by clicking somewhere else inside the app, this even updates the details pane accordingly Added custom “Date modified” parameters, so they correspond to when the file/folder was created Internal Storage now shows Size as 23.4 GB / 512 GB Removed Trash Changed the animation for the details bar (“Name | Size ….” bar) at the top to just minimize in height and not width too. Fixes As I said in changelog, the folder directories don’t overlap now I made lots of errors while trying to get this new directory system to work, like the folder numbering not working correctly, like there’s a folder: “Internal Storage\\New Folder (2)”, and then you try to go to downloads and create a folder, and then it’s named “New Folder (3)” There was also an issue where the address bar pointed to somewhere else rather than the original path for that directory (so I had to combine multiple arrays for directory system to one, which is part of the Revamped file system) Fixed a background size inconsistency in the gallery section Fixed the status bar in gallery saying “undefined items” Fixed the context menus being transparent instead of blurry (for Files and Browser), so now they’re opaque like Chrome or Edge or Safari Removed all pointer events from the details bar at the top, so it no longer shows the hand pointing cursor when hovering Current issues/bugs The file/folder context menu is positioned oddly and doesn’t have any icons The details pane icons are blurred since it uses the 32x32 icons I used in the file/folder icons"}, {"post_id": 71945, "ts": "2026-09-21T20:29:43Z", "hours": 2.5697, "text": "Fluetro OS DevLog 047 One step closer to finishing the Files app New Features added New File and New Folder options that actually work (with icons BTW) New File can only be used to create text files, and the get the Type as Text File, and a .txt extension User Created files/folders now stay even after a restart/page refresh (like in your browser, not the files or browser app of Fluetro) Removed the size detail for folders since most OSes don’t even show it Sorting actually works, but it’s only Ascending or Descending, only based off of the Item name Clicking the dock icon now instantly focus the corresponding window, except for errors Added an actually working address bar, inspired by the older Windows (like XP), which can also take user input to go to said location Putting in an invalid location in the address bar gives an error box, like the System or unsupported file type errors Fixes Fixed issues that I faced while implementing the Dynamic Naming Process for the User Created files, like adding the extension for the Text Files Fixed an issue with the sorting logic, where, since I copied most of the logic from the ascending system to the descending system, I left the button click listener for the ascending system, in the descending system, so for some time, clicking ascending just sorted the items in descending Current issues/bugs The Sort and New Menus don’t close if I click anywhere else in the files app You can’t unselect an item The Gallery Status bar shows “undefined items” Note Added the Gallery Screenshot promised in my last DevLog"}, {"post_id": 71137, "ts": "2026-09-20T10:43:54Z", "hours": 1.8961, "text": "Fluetro OS DevLog 046 Frequency of DevLogs has plummeted, but Files app is almost complete## New Features Added Preview Pane changed to Details Pane Details Pane actually works No Details Pane in Gallery .exe files open the corresponding app Added a scrollbar for the apps folder since it has way too many items Made the Files Status bar independent of the files body, so it doesn’t go away when scrolling Made the Details area on top (Name, Size etc.) independent of the files body, so they don’t go away when scrolling Added a select system which triggers the details pane Details pane won’t show up after coming back from gallery if you disabled it previously, otherwise it will Fixes Made a mess while trying to move the Status and Details areas, noticed it was because I had a part of js coded into the details area for future purposes(sorting), so I removed it and now it’s just cosmetic and does nothing else, and the status bar was appended to the main files body, which I changed to another div that contains the file operations area (New, Sort etc.), the details area and the files body Broke the details pane while trying to use querySelector to check if Gallery is active and the button is disabled or not, fixed it by switching to contains Fixed the padding and margin for the Details Pane to match the height of the Files main area Current issues/bugs I was thinking of adding Windows-style breadcrumb address bar, but that’s very problematic, and might not even suit it well, so I’ll be adding a retro-style “ \" system for the address bar There’s still no new and sort system Note I forgot to add the screenshot of gallery, and now it’s only allowing me to replace the existing files and not add more"}, {"post_id": 70266, "ts": "2026-09-18T20:45:45Z", "hours": 1.3344, "text": "Fluetro OS DevLog 045 Adding the preloaded files and folders was easy (which I did before), but now progress has been slowed, again New Features added Menus for Sorting and New File/Folder creation Different states for the New and Sort By buttons Removed Search Bar (too complicated to implement) Removed View option (still complicated to implement, might add it again later on) Removed Up one level button (most complicated) Added an error window that shows up when you try to open up a file that’s not supported by any existing app Fixes I wasted a lot of time trying to fix the issue in the css that was causing the weird position for the menus, turns out the css wasn’t the issue at all and it was actually the HTMl since I put the menus outside the upper button panel handler I also wasted a lot of time trying the hit-and-run approach for the perfect height and width for the unsupported file type error box Fixed the corner radius for the System Menu (even though barely noticeable) Current issues/bugs You can still go inside .exe files, since they’re still treated as folders (actually the type doesn’t matter for them, since the code is really simple for the folders and items) Something weird is going on with the padding for the sort and new menu buttons, and they don’t have blur either"}, {"post_id": 69786, "ts": "2026-09-17T19:49:54Z", "hours": 2.5436, "text": "Fluetro OS DevLog 044 Lot of progress New Features added An actual File System with lots of Files, including Apps and User Files Custom .igr File extension and “Integration” type for Games files Working Navigation buttons, except the “Up one level button” Double-click system for files/folders Different file/item types and different icons for each one Disabled states for navigation buttons when not available/applicable Fully redesigned “Access Denied” error box Access Denied error integration when trying to access System Files Separate dock icon with running status for the error box Connected Navigation panel to individual folders/locations Animations on the error icon on the dock when it appears and disappears Animations on dock for expanding and shrinking to make room for the error icon Fixes Minor fixes regarding the UI like hover effect for the OK button in System info box and corner radius adjustment in certain areas Fixed the weird padding at the right side of the dock due to appearance and disappearance of the error icon Current bugs/issues As I said earlier, the Up one level button doesn’t work Address bar still need a lot of work Search is still just a placeholder Preview pane is still in the works I didn’t add the sounds, and I’ll probably add them last, because being forced to hear those sounds every time I restart Fluetro for debugging will become irritating fast There’s no scroll bar in the Files App Note The animation looks jittery, but it’s due to some issue with Snipping Tool, it’s really smooth in reality"}, {"post_id": 68751, "ts": "2026-09-15T17:53:25Z", "hours": 1.6878, "text": "Fluetro OS DevLog 043 Slow and steady progress New Features added Toggleable Navigation and Preview Panes Slight Redesigns for Browser, Paint and Gaming Hub Games Minor redesigns for all tooltips Animations while enabling or disabling the Navigation and Preview panes Made iframe based windows easier to resize and move Fixes Fixed an issue where the hover of an object inside the files body would get cut off Fixed an issue where the Close button tooltip would get cut off Current issues/bugs Resizing the AI/Daily Brief app is slow and kind of jittery The items inside the files body currently do nothing There’s no active state in the Navigation pane for the folder you’re currently in"}, {"post_id": 68209, "ts": "2026-09-14T18:16:14Z", "hours": 1.7369, "text": "Fluetro OS DevLog 042 Well, at least this is better than the last time New features added Placeholder for Preview Pane Working Navigation Panel Working Gallery, currently only shows the preloaded wallpapers and I plan to add more images, maybe some taken by me A different screen for visiting empty folders Changing address bar icons according to the folder you visit Changing address bar text according to the folder you visit Added Trash (Recycle Bin), only as a Navigation Panel location for now Fixes I checked the feedback and found out Minesweeper was not working for the current version of Fluetro, so I checked and found out that vercel is case sensitive and so it didn’t work, I fixed it now Yes, I’ll be adding almost all the features from feedback like making the dock auto-hide on maximize for more usable screen real estate Fixed multiple errors that I made while trying to make this update to the Files app, mostly by missing an “=” sign or a “.” at places. These errors basically broke everything, making everything non-interactable. Current issues/bugs: IDK how I got the Details and stuff at the top to get working, but now I can’t get the content to adjust according to it, so it breaks whenever the window is maximized (screenshot attached)"}, {"post_id": 67268, "ts": "2026-09-13T10:38:04Z", "hours": 1.9453, "text": "Fluetro OS DevLog 041 Very little progress New features added Added an operations section (new, sort by and view) Added what’s supposed to be a details panel Added a status bar Added placeholder content Added the top bar for the content, with separators Current issues/bugs This is really complicated and all this time I am using up, is just for debugging, which is crazy The details pane is still blank Nothing does anything, since I have only managed to do the css and html so far"}, {"post_id": 66856, "ts": "2026-09-12T19:50:02Z", "hours": 2.5003, "text": "Fluetro OS DevLog 040 Exact reason why I delayed the development for the Files App New Features added Scrapped the plan for making the Files app iframe based Added the Files app code directly into Fluetro code for better OS integration Added Navigation pane containing all important OS locations Added a main section for the app, where the content will be shown Also fixed dark mode for the app Removed the Work in Progress window for the Files App Fixes Fixed the backgrounds for the different app elements Current issues/bugs I have been working on this for almost 2.5 hours and managed to come only this far, nothing else is done, no JavaScript, or system, only the visual app is present, and opens on clicking the files icon on the dock Should I change the icons in the Navigation panel to colorful ones?"}, {"post_id": 66078, "ts": "2026-09-11T17:22:25Z", "hours": 0.2631, "text": "Fluetro OS DevLog 039 First DevLog after 2nd ship New Features added Started working on the Files app, so now it only has a really basic design, mostly taken from the WebOS Browser project (image attached), it currently does nothing, and is just a blank slate What’s in the works? Made some sounds for the UI like Startup, login, and shutdown Got a new roadmap and a whole list of features to add next"}, {"post_id": 65544, "ts": "2026-09-10T19:07:37Z", "hours": 0.2592, "text": "Fluetro OS DevLog 038 Did some last-minute changes New Features added Now you can actually see what wallpaper you have selected The Calculator now follows the accent colors for more buttons Note for reviewers Some browsers may currently display phishing or scam warnings when accessing my GitHub Pages websites. These appear to be false positives. My projects are designed with a privacy-focused approach and do not intentionally collect sensitive user information. I have already reported the issue and am currently waiting for the warnings to be reviewed and resolved."}, {"post_id": 65493, "ts": "2026-09-10T17:48:19Z", "hours": 0.7078, "text": "Fluetro OS DevLog 037 Final DevLog before 2nd Ship New Features added New favicon Automatic Accent colors for the 4 preloaded wallpapers The accent colors not only affect the active toggles, but also affect the TopBar/System Menu Logo, the seconds hand of the clock, the today indicator of the calendar, the separators in the dock and the Welcome/Lock Screen too New spinning design for the Signing out/shutting down/restarting screens Fixed the default window sizing for the browser Removed the “…” from the above-mentioned screens There’s also an accent2 for the gradient design, and it will be customizable in later versions Removed a really light color that was present at 50% Fixes The lock screen gradient is now smoother, and the text is easier to read due the color removal. Fixed the tooltip artifact issue from my Last DevLog Current issues/bugs Opening Files no longer shows Work in Progress but shows “This Location is System Protected”, this was due to me making an error screen for situations where the user tries to access stuff in the OS that they’re not supposed to. But since it’s already there, it stays. It will be fixed in a later release. What’s next? Ship #2"}, {"post_id": 65463, "ts": "2026-09-10T16:38:29Z", "hours": 1.4742, "text": "Fluetro OS DevLog 036 Redesigns, features, and animations New Features added Minimized and open running states for the dock icon, inspired by Windows 11 Redesigned the logo again, and made it perfect this time Redesigned running design for dock icons along with a custom hover design for that state. Redesigned Boot Screen inspired by macOS and Windows 7 Redesigned System information window Animations for the different app states in the dock A restart function that shuts down and reloads the page Redesigned Dark Mode Redesigned accent color Fixes Fixed an issue where Signing out won’t close any open apps Fixed an issue where the running states would be jumping around when switching (made this issue while trying to add the different states) Current issues/bugs There is an issue with tooltips where a line with the tooltip color appears and stays until another tooltip appears What’s next? I’ll probably be implementing an automatic accent color system for the present 4 wallpapers before the second ship. What the 3rd ship will include will be included in the README."}, {"post_id": 64964, "ts": "2026-09-09T18:20:34Z", "hours": 1.5181, "text": "Fluetro OS DevLog 035 Redesign and more stuff New Features added Boot Screen Redesigned logo and Lock screen inspired by the default wallpaper Transitions and Animations for Boot Screen No pointer in Boot Screen Fixes Fixed an issue where Escape and Function Keys won’t work, this was due to a misplaced exclamation mark 😐 Fixed the lock screen animations which I broke while trying to add the Boot Screen Current issues/bugs There’s something wrong with the Sign Out option, since it’s keeping the apps open when signed out What’s Next? I’ll probably be adding a restart option, and then do a 2nd ship, there’ll also be a 3rd ship with the Files App, which is possibly the hardest thing to do (at least for me) in this project."}, {"post_id": 64427, "ts": "2026-09-08T19:56:33Z", "hours": 0.4503, "text": "Fluetro OS DevLog 034 Some changes New Features added Added icons to the System Menu Full logo redesign Finished on a new color scheme Animation when hovering on or pressing the Continue button on Welcome screen Fixes Fixed the animation system for the Continue button on the Welcome Screen Finalized the new color scheme Current bugs/issues I still don’t know if this color scheme is better than the original one(1st image)"}, {"post_id": 64403, "ts": "2026-09-08T19:09:41Z", "hours": 0.9294, "text": "Fluetro OS DevLog 033 Some redesigns New Features added Better logo design Fixes Fixed an issue where the running state of the app won’t show but instead make the tooltips of that app have its color. Current issues/bugs This is an issue, I am thinking of giving the OS a better and more premium color identity, should I stick with the old color design or the new one, or if someone could provide any new suggestions, that would be nice too."}, {"post_id": 63479, "ts": "2026-09-07T11:13:23Z", "hours": 0.6122, "text": "Fluetro OS DevLog 032 Huge addition New Features added Browser is no longer a Work in Progress Fixes Spent a lot of time trying to figure out how to send the theme from the OS to the Browser, since earlier that part of the code was handled inside the Gaming Hub code. So yeah, that’s just about what I did for the latest logged time"}, {"post_id": 63078, "ts": "2026-09-06T17:50:18Z", "hours": 1.0811, "text": "Fluetro OS DevLog 031 More icons and some small additions New Features added Added arrows for the buttons for changing Calendar Month in the Time & Date flyout Added tooltips for all the buttons in the TopBar that can open flyouts Themed the tooltips Made the topbar tooltips not open if a flyout is open Added tooltips to dock icons Fixes Fixed the gap and alignment of the buttons used to change months in the calendar Fixed the weird pill-shaped today indicator in the calendar flyout Fixed positioning issues with the tooltips Fixed the issue of the System Menu not having any background blur Current issues/bugs Have added too much animations/fancy stuff/polish instead of adding actual features Next target The Fluetro Browser"}, {"post_id": 62987, "ts": "2026-09-06T15:37:52Z", "hours": 0.4775, "text": "Fluetro OS DevLog 030 More icons New features added Replaced the icon for the Continue button at the login screen Replaced the icon for the exit game button in Gaming Hub Added animations to the exit game button Overhauled the calculator with icons Fixes Fixed the dark mode color for the percentage operator, it became invisible during dark mode Made the exit game button in Gaming Hub show up only when a game is running Fixed the AC button being too bold Current issues/bugs Need to add more icons for the Weather flyout"}, {"post_id": 62956, "ts": "2026-09-06T14:51:43Z", "hours": 0.4186, "text": "Fluetro OS DevLog 029 More icons and more fixes New features added Redid the Weather flyout with the new icons Fixes Wasted a lot of time trying to rotate the icon for the refresh button, then I realized that something called “rotate” exists for html, but then the icon was off-center so I had to go through a bunch of margin length and stuff just to get it to be centered Fixed the issue of the Calculator taking input when not focused Current issues/bugs There are many more buttons left where I need to add icons, and many more that need changing Will add the browser as soon as my work on WebOS Browser is completed, meanwhile I am working on a file structure for the Files app."}, {"post_id": 62937, "ts": "2026-09-06T14:13:14Z", "hours": 0.7372, "text": "Fluetro OS DevLog 028 I’m back to Fluetro OS after working on Fluent New Tab for some time, I’ll also be working on my WebOS Browser project alongside this. New Features added Didn’t do anything much, just learned about Lucide Replaced all window control icons Replaced the Quick Settings icon Added Keyboard input to the calculator Fixes Fixed the “%” button in the calculator having the wrong color Current issues/bugs The keyboard takes input unless you are typing anywhere else"}, {"post_id": 58204, "ts": "2026-08-30T15:45:07Z", "hours": 0.6964, "text": "Fluetro OS DevLog 027 •OK, so I’m back to Fluetro OS after working on some other projects like Fluent 2048 and Fluent Minesweeper (which I did because working on games inside the code of Fluetro was problematic due to having so much code for the OS itself) •As I said I did make those games for this and will be adding those here, so I did. •So now there’s a total of 5 simple and easily recognizable games in Gaming Hub. •I am thinking of doing a 2nd ship of this today, but should I? I did add 3 features and plan on adding more later. •The Fluent 2048 and Minesweeper games are a different version of what I’ve uploaded as separate projects, so they might look “a bit” different."}, {"post_id": 55114, "ts": "2026-08-26T16:01:31Z", "hours": 0.6219, "text": "Fluetro OS DevLog 026 •Added the custom version of Fluent Minesweeper •Added an animation while changing from Dark Mode to Light Mode and vice-versa •Working on a new logo for the OS •Working on more custom games and features"}, {"post_id": 54494, "ts": "2026-08-25T14:47:09Z", "hours": 0.9369, "text": "Fluetro OS DevLog 025 •Added a Last Played section to Gaming Hub showing the game last played by the user •Added the “My Games” heading •Edited the Work in Progress Windows to behave differently (for a future purpose)"}, {"post_id": 54418, "ts": "2026-08-25T12:52:02Z", "hours": 0.6103, "text": "Fluetro OS DevLog 024 •Added Chrome Dino as a game •Added Surf (from MS Edge) as a game •Fixed an issue where the bottom of the window would not be visible (especially Minecraft Classic) •Fixed multiple UI issues and bugs in Gaming Hub •Added icons for all the games and Gaming Hub"}, {"post_id": 54374, "ts": "2026-08-25T10:47:47Z", "hours": 1.3764, "text": "Fluetro OS DevLog 023 •Scrapped the previous games because those websites refused to work with iframe •Added Minesweeper instead of GTA: Vice City •Added Minecraft Classic •Added Separators in the Dock (forgot to mention in previous DevLog) •Added an issue where the top has a lot of extra padding •Thinking of taking another break to create my own Minesweeper and other games/apps to add here"}, {"post_id": 54334, "ts": "2026-08-25T09:11:48Z", "hours": 0.7736, "text": "Fluetro OS DevLog 022 •Added Dock and Title Bar icons for Daily Brief •Made Memo resizable and have maximize/restore down functions •Added a Gaming Hub for games to be added"}, {"post_id": 54290, "ts": "2026-08-25T07:25:05Z", "hours": 0.4281, "text": "Fluetro OS DevLog 021 First DevLog for WebOS 2 project •Added an AI Brief app using iframe (app created by one of my friends) •This app uses an approximate in-browser location from your IP, so the Weather in my topBar is different than what’s shown here."}, {"post_id": 54077, "ts": "2026-08-24T21:04:58Z", "hours": 1.9297, "text": "Fluetro OS DevLog 020 This might be my last DevLog to this project before uploading this to GitHub and Shipping •Added a new Logo, with a stylized F •Added actual icons to the Dock and Title Bar •Replaced the settings icon placeholder emoji with an actual icon •Turned Memo into an actual Memo, so it’s not resizable and doesn’t have Maximize/Restore Down buttons •Added some more text to the System Info box"}, {"post_id": 53954, "ts": "2026-08-24T17:42:33Z", "hours": 1.6442, "text": "Fluetro OS DevLog 019 •Added Nicer animations to Flyouts •Added a separate menu for Sign out and Shut down at OS logo on TopBar •Moved System Info to OS Name text on TopBar •Tried to add Window Maximize/Restore Down animations but messed it up •Added a transition while changing wallpapers •Fixed the issue where a window would jump to the left while resizing/dragging"}, {"post_id": 53862, "ts": "2026-08-24T15:48:40Z", "hours": 0.8386, "text": "Fluetro OS DevLog 018 •Added a Weather Section in Settings •Added the option to change the weather by adding your own location yourself (so no location tracking involved) •Found out that JSPaint (the paint app integration) has multiple themes including Modern ones"}, {"post_id": 53338, "ts": "2026-08-23T20:30:52Z", "hours": 2.0442, "text": "Fluetro OS DevLog 017 •Added working weather using Open Meteo API (currently fixed to Los Angeles only) •Added working weather to Top Bar •Added a Signing Out screen •Added animations to the Signing out and Shutting down screens •Added animations while Logging in"}, {"post_id": 53253, "ts": "2026-08-23T18:10:22Z", "hours": 1.3803, "text": "Fluetro OS DevLog 016 •Added Calculator •Added Paint (JS Paint Integration via iframe) •Made sure the calculator cannot be resized or maximized, so it’s a fixed size."}, {"post_id": 52973, "ts": "2026-08-23T10:55:55Z", "hours": 1.4153, "text": "Fluetro OS DevLog 015 •Added “Work in Progress” placeholders for apps that will be added in a future update (WebOS 2). •Added a working Memo that stores text in localStorage, thus making the text Persistent. •Added running indicators for apps that are open/minimized. •Fixed the title bar padding."}, {"post_id": 52919, "ts": "2026-08-23T09:20:40Z", "hours": 1.4139, "text": "Fluetro OS DevLog 014 •I’m back to working on Fluetro OS again •Added active states to buttons •Made the Weather button work •Added working Weather Flyout •Added animations to the Weather Flyout •Added bunch of placeholder text for the weather"}, {"post_id": 51108, "ts": "2026-08-20T16:35:55Z", "hours": 1.6989, "text": "Fluetro OS Devlog 013 •Added Animations and Transitions to Logon Screen. •Added Animations and Transitions to all the Flyouts. •Added Hover Effects to OS Name button on TopBar. •Tried to add a Logon Screen to Desktop Transition but failed."}, {"post_id": 50908, "ts": "2026-08-20T11:41:57Z", "hours": 0.5647, "text": "Fluetro OS Devlog 012 •Fixed the Clock Flyout •Gave the Clock Flyout a redesign. •Added working Weather to TopBar. •Fixed the problem of UI elements/text being selected while clicking and dragging."}, {"post_id": 50881, "ts": "2026-08-20T10:40:20Z", "hours": 0.57, "text": "Fluetro OS Devlog 011 •Managed to kind of fix the Clock Flyout. •Added Dark Mode to the Clock Flyout. •Added Hover effects to the clock in the topBar."}, {"post_id": 50858, "ts": "2026-08-20T09:30:34Z", "hours": 1.1558, "text": "Fluetro OS Devlog 010 •Added a Expandable Clock Section to the TopBar clock (currently kind of broken). •Added Hover to TopBar weather section."}, {"post_id": 50823, "ts": "2026-08-20T08:04:49Z", "hours": 0.6014, "text": "Fluetro OS Devlog 009 •Added Resizable Windows. •Added Draggable Windows. •Added Animations to the Dock."}, {"post_id": 50813, "ts": "2026-08-20T07:16:04Z", "hours": 1.2939, "text": "Fluetro OS Devlog 008 •Broke the Window Controls but managed to fix them. •Fixed Padding for the Dock. •Made sure maximized windows don’t overlap the Top Bar or Dock."}, {"post_id": 50794, "ts": "2026-08-20T05:50:00Z", "hours": 0.9014, "text": "Fluetro OS Devlog 007 •Added Focused and Unfocused states to the Windows. •Fixed the Corner Radius for many UI elements. •Fixed Title bar height. •Made the Windows draggable using the Title Bar."}, {"post_id": 50619, "ts": "2026-08-19T20:58:07Z", "hours": 1.4964, "text": "Fluetro OS Devlog 006 •Added a Working Window •Fixed the TopBar Clock •Added a working Shutdown Sequence •Added System Info (basic and needs more work)"}, {"post_id": 50554, "ts": "2026-08-19T19:17:37Z", "hours": 1.3172, "text": "Fluetro OS Devlog 005 •Added working Dark Mode and Wallpaper Picker. •Added working Sign Out and Shut down options. •Introduced more bugs and issues to fix."}, {"post_id": 50506, "ts": "2026-08-19T17:55:21Z", "hours": 1.7083, "text": "Fluetro OS Devlog 004 •Started from Scratch •Working on giving this a MacOS+Windows+OneUI esque feel •Finished the Welcome Screen •Partial Success regarding the Top Bar, Dock and Apps"}, {"post_id": 49717, "ts": "2026-08-18T17:05:34Z", "hours": 0.5936, "text": "Fluetro OS devlog 003 •Added actual Photo Wallpapers (from Unsplash). •Fixed the issues with some of the app icons. •Updated the System Info."}, {"post_id": 49694, "ts": "2026-08-18T16:16:29Z", "hours": 1.2136, "text": "Fleutro OS Devlog 002. •Added a Shutdown sequence. •Managed to fix the small UI issues and bugs. •Added a Sign out and Shutdown option inside the OS Menu. •Added working System info and Power off button to the Lock Screen. •Added some more apps in the Store •Added indicators for Minimized apps"}, {"post_id": 49102, "ts": "2026-08-17T18:41:47Z", "hours": 0.9647, "text": "Managed to make a lot of Progress, right now the Logon screen and the desktop work with all the apps being functional. Am working on getting a working version of the Start Screen-like Interface."}]...
|
Title: Fluetro OS by @TonyStark965 | Stardance
De Title: Fluetro OS by @TonyStark965 | Stardance
Devlogs:
Managed to make a lot of Progress, right now the Logon screen and the desktop work with all the apps being functional. Am working on getting a working version of the Start Screen-like Interface.
Fleutro OS Devlog 002. •Added a Shutdown sequence. •Managed to fix the small UI issues and bugs. •Added a Sign out and Shutdown option inside the OS Menu. •Added working System info and Power off button to the Lock Screen. •Added some more apps in the Store •Added indicators for Minimized apps
Fluetro OS devlog 003 •Added actual Photo Wallpapers (from Unsplash). •Fixed the issues with some of the app icons. •Updated the System Info.
Fluetro OS Devlog 004 •Started from Scratch •Working on giving this a MacOS+Windows+OneUI esque feel •Finished the Welcome Screen •Partial Success regarding the Top Bar, Dock and Apps
Fluetro OS Devlog 005 •Added working Dark Mode and Wallpaper Picker. •Added working Sign Out and Shut down options. •Introduced more bugs and issues to fix.
Fluetro OS Devlog 006 •Added a Working Window •Fixed the TopBar Clock •Added a working Shutdown Sequence •Added System Info (basic and needs more work)
Fluetro OS Devlog 007 •Added Focused and Unfocused states to the Windows. •Fixed the Corner Radius for many UI elements. •Fixed Title bar height. •Made the Windows draggable using the Title Bar.
Fluetro OS Devlog 008 •Broke the Window Controls but managed to fix them. •Fixed Padding for the Dock. •Made sure maximized windows don’t overlap the Top Bar or Dock.
Fluetro OS Devlog 009 •Added Resizable Windows. •Added Draggable Windows. •Added Animations to the Dock.
Fluetro OS Devlog 010 •Added a Expandable Clock Section to the TopBar clock (currently kind of broken). •Added Hover to TopBar weather section.
Fluetro OS Devlog 011 •Managed to kind of fix the Clock Flyout. •Added Dark Mode to the Clock Flyout. •Added Hover effects to the clock in the topBar.
Fluetro OS Devlog 012 •Fixed the Clock Flyout •Gave the Clock Flyout a redesign. •Added working Weather to TopBar. •Fixed the problem of UI elements/text being selected while clicking and dragging.
Fluetro OS Devlog 013 •Added Animations and Transitions to Logon Screen. •Added Animations and Transitions to all the Flyouts. •Added Hover Effects to OS Name button on TopBar. •Tried to add a Logon Screen to Desktop Transition but failed.
Fluetro OS DevLog 014 •I’m back to working on Fluetro OS again •Added active states to buttons •Made the Weather button work •Added working Weather Flyout •Added animations to the Weather Flyout •Added bunch of placeholder text for the weather
Fluetro OS DevLog 015 •Added “Work in Progress” placeholders for apps that will be added in a future update (WebOS 2). •Added a working Memo that stores text in localStorage, thus making the text Persistent. •Added running indicators for apps that are open/minimized. •Fixed the title bar padding.
Fluetro OS DevLog 016 •Added Calculator •Added Paint (JS Paint Integration via iframe) •Made sure the calculator cannot be resized or maximized, so it’s a fixed size.
Fluetro OS DevLog 017 •Added working weather using Open Meteo API (currently fixed to Los Angeles only) •Added working weather to Top Bar •Added a Signing Out screen •Added animations to the Signing out and Shutting down screens •Added animations while Logging in
Fluetro OS DevLog 018 •Added a Weather Section in Settings •Added the option to change the weather by adding your own location yourself (so no location tracking involved) •Found out that JSPaint (the paint app integration) has multiple themes including Modern ones
Fluetro OS DevLog 019 •Added Nicer animations to Flyouts •Added a separate menu for Sign out and Shut down at OS logo on TopBar •Moved System Info to OS Name text on TopBar •Tried to add Window Maximize/Restore Down animations but messed it up •Added a transition while changing wallpapers •Fixed the issue where a window would jump to the left while resizing/dragging
Fluetro OS DevLog 020 This might be my last DevLog to this project before uploading this to GitHub and Shipping •Added a new Logo, with a stylized F •Added actual icons to the Dock and Title Bar •Replaced the settings icon placeholder emoji with an actual icon •Turned Memo into an actual Memo, so it’s not resizable and doesn’t have Maximize/Restore Down buttons •Added some more text to the System Info box
Fluetro OS DevLog 021 First DevLog for WebOS 2 project •Added an AI Brief app using iframe (app created by one of my friends) •This app uses an approximate in-browser location from your IP, so the Weather in my topBar is different than what’s shown here.
Fluetro OS DevLog 022 •Added Dock and Title Bar icons for Daily Brief •Made Memo resizable and have maximize/restore down functions •Added a Gaming Hub for games to be added
Fluetro OS DevLog 023 •Scrapped the previous games because those websites refused to work with iframe •Added Minesweeper instead of GTA: Vice City •Added Minecraft Classic •Added Separators in the Dock (forgot to mention in previous DevLog) •Added an issue where the top has a lot of extra padding •Thinking of taking another break to create my own Minesweeper and other games/apps to add here
Fluetro OS DevLog 024 •Added Chrome Dino as a game •Added Surf (from MS Edge) as a game •Fixed an issue where the bottom of the window would not be visible (especially Minecraft Classic) •Fixed multiple UI issues and bugs in Gaming Hub •Added icons for all the games and Gaming Hub
Fluetro OS DevLog 025 •Added a Last Played section to Gaming Hub showing the game last played by the user •Added the “My Games” heading •Edited the Work in Progress Windows to behave differently (for a future purpose)
Fluetro OS DevLog 026 •Added the custom version of Fluent Minesweeper •Added an animation while changing from Dark Mode to Light Mode and vice-versa •Working on a new logo for the OS •Working on more custom games and features
Fluetro OS DevLog 027 •OK, so I’m back to Fluetro OS after working on some other projects like Fluent 2048 and Fluent Minesweeper (which I did because working on games inside the code of Fluetro was problematic due to having so much code for the OS itself) •As I said I did make those games for this and will be adding those here, so I did. •So now there’s a total of 5 simple and easily recognizable games in Gaming Hub. •I am thinking of doing a 2nd ship of this today, but should I? I did add 3 features and plan on adding more later. •The Fluent 2048 and Minesweeper games are a different version of what I’ve uploaded as separate projects, so they might look “a bit” different.
Fluetro OS DevLog 028 I’m back to Fluetro OS after working on Fluent New Tab for some time, I’ll also be working on my WebOS Browser project alongside this. New Features added Didn’t do anything much, just learned about Lucide Replaced all window control icons Replaced the Quick Settings icon Added Keyboard input to the calculator Fixes Fixed the “%” button in the calculator having the wrong color Current issues/bugs The keyboard takes input unless you are typing anywhere else
Fluetro OS DevLog 029 More icons and more fixes New features added Redid the Weather flyout with the new icons Fixes Wasted a lot of time trying to rotate the icon for the refresh button, then I realized that something called “rotate” exists for html, but then the icon was off-center so I had to go through a bunch of margin length and stuff just to get it to be centered Fixed the issue of the Calculator taking input when not focused Current issues/bugs There are many more buttons left where I need to add icons, and many more that need changing Will add the browser as soon as my work on WebOS Browser is completed, meanwhile I am working on a file structure for the Files app.
Fluetro OS DevLog 030 More icons New features added Replaced the icon for the Continue button at the login screen Replaced the icon for the exit game button in Gaming Hub Added animations to the exit game button Overhauled the calculator with icons Fixes Fixed the dark mode color for the percentage operator, it became invisible during dark mode Made the exit game button in Gaming Hub show up only when a game is running Fixed the AC button being too bold Current issues/bugs Need to add more icons for the Weather flyout
Fluetro OS DevLog 031 More icons and some small additions New Features added Added arrows for the buttons for changing Calendar Month in the Time & Date flyout Added tooltips for all the buttons in the TopBar that can open flyouts Themed the tooltips Made the topbar tooltips not open if a flyout is open Added tooltips to dock icons Fixes Fixed the gap and alignment of the buttons used to change months in the calendar Fixed the weird pill-shaped today indicator in the calendar flyout Fixed positioning issues with the tooltips Fixed the issue of the System Menu not having any background blur Current issues/bugs Have added too much animations/fancy stuff/polish instead of adding actual features Next target The Fluetro Browser
Fluetro OS DevLog 032 Huge addition New Features added Browser is no longer a Work in Progress Fixes Spent a lot of time trying to figure out how to send the theme from the OS to the Browser, since earlier that part of the code was handled inside the Gaming Hub code. So yeah, that’s just about what I did for the latest logged time
Fluetro OS DevLog 033 Some redesigns New Features added Better logo design Fixes Fixed an issue where the running state of the app won’t show but instead make the tooltips of that app have its color. Current issues/bugs This is an issue, I am thinking of giving the OS a better and more premium color identity, should I stick with the old color design or the new one, or if someone could provide any new suggestions, that would be nice too.
Fluetro OS DevLog 034 Some changes New Features added Added icons to the System Menu Full logo redesign Finished on a new color scheme Animation when hovering on or pressing the Continue button on Welcome screen Fixes Fixed the animation system for the Continue button on the Welcome Screen Finalized the new color scheme Current bugs/issues I still don’t know if this color scheme is better than the original one(1st image)
Fluetro OS DevLog 035 Redesign and more stuff New Features added Boot Screen Redesigned logo and Lock screen inspired by the default wallpaper Transitions and Animations for Boot Screen No pointer in Boot Screen Fixes Fixed an issue where Escape and Function Keys won’t work, this was due to a misplaced exclamation mark 😐 Fixed the lock screen animations which I broke while trying to add the Boot Screen Current issues/bugs There’s something wrong with the Sign Out option, since it’s keeping the apps open when signed out What’s Next? I’ll probably be adding a restart option, and then do a 2nd ship, there’ll also be a 3rd ship with the Files App, which is possibly the hardest thing to do (at least for me) in this project.
Fluetro OS DevLog 036 Redesigns, features, and animations New Features added Minimized and open running states for the dock icon, inspired by Windows 11 Redesigned the logo again, and made it perfect this time Redesigned running design for dock icons along with a custom hover design for that state. Redesigned Boot Screen inspired by macOS and Windows 7 Redesigned System information window Animations for the different app states in the dock A restart function that shuts down and reloads the page Redesigned Dark Mode Redesigned accent color Fixes Fixed an issue where Signing out won’t close any open apps Fixed an issue where the running states would be jumping around when switching (made this issue while trying to add the different states) Current issues/bugs There is an issue with tooltips where a line with the tooltip color appears and stays until another tooltip appears What’s next? I’ll probably be implementing an automatic accent color system for the present 4 wallpapers before the second ship. What the 3rd ship will include will be included in the README.
Fluetro OS DevLog 037 Final DevLog before 2nd Ship New Features added New favicon Automatic Accent colors for the 4 preloaded wallpapers The accent colors not only affect the active toggles, but also affect the TopBar/System Menu Logo, the seconds hand of the clock, the today indicator of the calendar, the separators in the dock and the Welcome/Lock Screen too New spinning design for the Signing out/shutting down/restarting screens Fixed the default window sizing for the browser Removed the “…” from the above-mentioned screens There’s also an accent2 for the gradient design, and it will be customizable in later versions Removed a really light color that was present at 50% Fixes The lock screen gradient is now smoother, and the text is easier to read due the color removal. Fixed the tooltip artifact issue from my Last DevLog Current issues/bugs Opening Files no longer shows Work in Progress but shows “This Location is System Protected”, this was due to me making an error screen for situations where the user tries to access stuff in the OS that they’re not supposed to. But since it’s already there, it stays. It will be fixed in a later release. What’s next? Ship #2
Fluetro OS DevLog 038 Did some last-minute changes New Features added Now you can actually see what wallpaper you have selected The Calculator now follows the accent colors for more buttons Note for reviewers Some browsers may currently display phishing or scam warnings when accessing my GitHub Pages websites. These appear to be false positives. My projects are designed with a privacy-focused approach and do not intentionally collect sensitive user information. I have already reported the issue and am currently waiting for the warnings to be reviewed and resolved.
Fluetro OS DevLog 039 First DevLog after 2nd ship New Features added Started working on the Files app, so now it only has a really basic design, mostly taken from the WebOS Browser project (image attached), it currently does nothing, and is just a blank slate What’s in the works? Made some sounds for the UI like Startup, login, and shutdown Got a new roadmap and a whole list of features to add next
Fluetro OS DevLog 040 Exact reason why I delayed the development for the Files App New Features added Scrapped the plan for making the Files app iframe based Added the Files app code directly into Fluetro code for better OS integration Added Navigation pane containing all important OS locations Added a main section for the app, where the content will be shown Also fixed dark mode for the app Removed the Work in Progress window for the Files App Fixes Fixed the backgrounds for the different app elements Current issues/bugs I have been working on this for almost 2.5 hours and managed to come only this far, nothing else is done, no JavaScript, or system, only the visual app is present, and opens on clicking the files icon on the dock Should I change the icons in the Navigation panel to colorful ones?
Fluetro OS DevLog 041 Very little progress New features added Added an operations section (new, sort by and view) Added what’s supposed to be a details panel Added a status bar Added placeholder content Added the top bar for the content, with separators Current issues/bugs This is really complicated and all this time I am using up, is just for debugging, which is crazy The details pane is still blank Nothing does anything, since I have only managed to do the css and html so far
Fluetro OS DevLog 042 Well, at least this is better than the last time New features added Placeholder for Preview Pane Working Navigation Panel Working Gallery, currently only shows the preloaded wallpapers and I plan to add more images, maybe some taken by me A different screen for visiting empty folders Changing address bar icons according to the folder you visit Changing address bar text according to the folder you visit Added Trash (Recycle Bin), only as a Navigation Panel location for now Fixes I checked the feedback and found out Minesweeper was not working for the current version of Fluetro, so I checked and found out that vercel is case sensitive and so it didn’t work, I fixed it now Yes, I’ll be adding almost all the features from feedback like making the dock auto-hide on maximize for more usable screen real estate Fixed multiple errors that I made while trying to make this update to the Files app, mostly by missing an “=” sign or a “.” at places. These errors basically broke everything, making everything non-interactable. Current issues/bugs: IDK how I got the Details and stuff at the top to get working, but now I can’t get the content to adjust according to it, so it breaks whenever the window is maximized (screenshot attached)
Fluetro OS DevLog 043 Slow and steady progress New Features added Toggleable Navigation and Preview Panes Slight Redesigns for Browser, Paint and Gaming Hub Games Minor redesigns for all tooltips Animations while enabling or disabling the Navigation and Preview panes Made iframe based windows easier to resize and move Fixes Fixed an issue where the hover of an object inside the files body would get cut off Fixed an issue where the Close button tooltip would get cut off Current issues/bugs Resizing the AI/Daily Brief app is slow and kind of jittery The items inside the files body currently do nothing There’s no active state in the Navigation pane for the folder you’re currently in
Fluetro OS DevLog 044 Lot of progress New Features added An actual File System with lots of Files, including Apps and User Files Custom .igr File extension and “Integration” type for Games files Working Navigation buttons, except the “Up one level button” Double-click system for files/folders Different file/item types and different icons for each one Disabled states for navigation buttons when not available/applicable Fully redesigned “Access Denied” error box Access Denied error integration when trying to access System Files Separate dock icon with running status for the error box Connected Navigation panel to individual folders/locations Animations on the error icon on the dock when it appears and disappears Animations on dock for expanding and shrinking to make room for the error icon Fixes Minor fixes regarding the UI like hover effect for the OK button in System info box and corner radius adjustment in certain areas Fixed the weird padding at the right side of the dock due to appearance and disappearance of the error icon Current bugs/issues As I said earlier, the Up one level button doesn’t work Address bar still need a lot of work Search is still just a placeholder Preview pane is still in the works I didn’t add the sounds, and I’ll probably add them last, because being forced to hear those sounds every time I restart Fluetro for debugging will become irritating fast There’s no scroll bar in the Files App Note The animation looks jittery, but it’s due to some issue with Snipping Tool, it’s really smooth in reality
Fluetro OS DevLog 045 Adding the preloaded files and folders was easy (which I did before), but now progress has been slowed, again New Features added Menus for Sorting and New File/Folder creation Different states for the New and Sort By buttons Removed Search Bar (too complicated to implement) Removed View option (still complicated to implement, might add it again later on) Removed Up one level button (most complicated) Added an error window that shows up when you try to open up a file that’s not supported by any existing app Fixes I wasted a lot of time trying to fix the issue in the css that was causing the weird position for the menus, turns out the css wasn’t the issue at all and it was actually the HTMl since I put the menus outside the upper button panel handler I also wasted a lot of time trying the hit-and-run approach for the perfect height and width for the unsupported file type error box Fixed the corner radius for the System Menu (even though barely noticeable) Current issues/bugs You can still go inside .exe files, since they’re still treated as folders (actually the type doesn’t matter for them, since the code is really simple for the folders and items) Something weird is going on with the padding for the sort and new menu buttons, and they don’t have blur either
Fluetro OS DevLog 046 Frequency of DevLogs has plummeted, but Files app is almost complete## New Features Added Preview Pane changed to Details Pane Details Pane actually works No Details Pane in Gallery .exe files open the corresponding app Added a scrollbar for the apps folder since it has way too many items Made the Files Status bar independent of the files body, so it doesn’t go away when scrolling Made the Details area on top (Name, Size etc.) independent of the files body, so they don’t go away when scrolling Added a select system which triggers the details pane Details pane won’t show up after coming back from gallery if you disabled it previously, otherwise it will Fixes Made a mess while trying to move the Status and Details areas, noticed it was because I had a part of js coded into the details area for future purposes(sorting), so I removed it and now it’s just cosmetic and does nothing else, and the status bar was appended to the main files body, which I changed to another div that contains the file operations area (New, Sort etc.), the details area and the files body Broke the details pane while trying to use querySelector to check if Gallery is active and the button is disabled or not, fixed it by switching to contains Fixed the padding and margin for the Details Pane to match the height of the Files main area Current issues/bugs I was thinking of adding Windows-style breadcrumb address bar, but that’s very problematic, and might not even suit it well, so I’ll be adding a retro-style “ " system for the address bar There’s still no new and sort system Note I forgot to add the screenshot of gallery, and now it’s only allowing me to replace the existing files and not add more
Fluetro OS DevLog 047 One step closer to finishing the Files app New Features added New File and New Folder options that actually work (with icons BTW) New File can only be used to create text files, and the get the Type as Text File, and a .txt extension User Created files/folders now stay even after a restart/page refresh (like in your browser, not the files or browser app of Fluetro) Removed the size detail for folders since most OSes don’t even show it Sorting actually works, but it’s only Ascending or Descending, only based off of the Item name Clicking the dock icon now instantly focus the corresponding window, except for errors Added an actually working address bar, inspired by the older Windows (like XP), which can also take user input to go to said location Putting in an invalid location in the address bar gives an error box, like the System or unsupported file type errors Fixes Fixed issues that I faced while implementing the Dynamic Naming Process for the User Created files, like adding the extension for the Text Files Fixed an issue with the sorting logic, where, since I copied most of the logic from the ascending system to the descending system, I left the button click listener for the ascending system, in the descending system, so for some time, clicking ascending just sorted the items in descending Current issues/bugs The Sort and New Menus don’t close if I click anywhere else in the files app You can’t unselect an item The Gallery Status bar shows “undefined items” Note Added the Gallery Screenshot promised in my last DevLog
Fluetro OS DevLog 048 Late DevLog, couple of improvements, mostly fixes Was supposed to upload a DevLog yesterday but had some issues with the internet (had to ditch the router), probably some coding time isn’t event logged New Features added/changelog Revamped the File Management system so now the sub directory system actually works, like you create a “New Folder” in one directory, and one in another, and now they both don’t overlap/refer to the same directory Added icons inside the Sort Menu Added a context menu for files/folders (the positioning is broken since the css isn’t done correctly, because I’ll probably be using some inspiration from Fluent New Tab for the dynamic positioning) The context menu for files/folders behaves differently according to if the Folder/File mentioned is a System one or User Created You can now un-select items by clicking somewhere else inside the app, this even updates the details pane accordingly Added custom “Date modified” parameters, so they correspond to when the file/folder was created Internal Storage now shows Size as 23.4 GB / 512 GB Removed Trash Changed the animation for the details bar (“Name | Size ….” bar) at the top to just minimize in height and not width too. Fixes As I said in changelog, the folder directories don’t overlap now I made lots of errors while trying to get this new directory system to work, like the folder numbering not working correctly, like there’s a folder: “Internal Storage\New Folder (2)”, and then you try to go to downloads and create a folder, and then it’s named “New Folder (3)” There was also an issue where the address bar pointed to somewhere else rather than the original path for that directory (so I had to combine multiple arrays for directory system to one, which is part of the Revamped file system) Fixed a background size inconsistency in the gallery section Fixed the status bar in gallery saying “undefined items” Fixed the context menus being transparent instead of blurry (for Files and Browser), so now they’re opaque like Chrome or Edge or Safari Removed all pointer events from the details bar at the top, so it no longer shows the hand pointing cursor when hovering Current issues/bugs The file/folder context menu is positioned oddly and doesn’t have any icons The details pane icons are blurred since it uses the 32x32 icons I used in the file/folder icons
Fluetro OS DevLog 049 Very little progress, since most of the time just went into debugging and fixing stuff, tried using Copilot in VS Code but it’s New stuff The context menu is finally aligned The context menu got icons now Made the delete button have a red icon and red text The open button in the context menu finally works Had to redo the file handling system so the open button system can be implemented easier Fixes Broke everything, yeah, literally the whole OS, while trying to redo the file handler because I was removing some lines (individual EventListeners) and putting them under one roof, but I forgot some brackets, since I couldn’t fix it easily, I tried to use Copilot (the one inside VS Code) to find out what’s causing the error, dude literally said that there’s an error in these lines, no elaboration or fix so I had to get the code from my backup and redo everything very carefully, so now it’s ok I have never positioned an element inside another element that can be resized, so this was new and challenging for me to align the context menu nicely with respect to the files window and its variable size system, it took some time, but I did it. Current issues/bugs Rename and Delete buttons are still to be implemented
Fluetro OS DevLog 050 Half-century DevLog? Really? New Stuff added The rename function works now Delete button kinda works Yeah that’s about it Fixes The rename function was really hard to implement, so there were lots of glitches and issues and stuff, I did manage to fix most of them, the rename box was originally meant to show over the existing file name, I did do some research to see if I could get it to work this way, but since I couldn’t get it working, I had to improvise and do the separate rename section. Tried to make the rename system be inside one single eventListener but couldn’t get it to work that way, had to create a separate function to call along with Pressing the rename and delete buttons no longer remove the selected state from the item. Current bugs/issues Clicking delete doesn’t dismiss the context menu (easy fix but it’s here because it’s just my current progress) Clicking delete for one item deletes all the items in the folder Delete is temporary and resets on refresh (for now at least) Nested Folders don’t work if you rename the parent folder (for example, in the video I rename a folder, then the folder inside it doesn’t open. This is fixed on a restart/webpage refresh)
Fluetro OS DevLog 051 Lost my 25-day Streak New Stuff added Photo viewer that can open photos from the gallery and adjusts according to image size Fixes Fixed the Delete system, so now it deletes only what you want to delete, and it’s now persistent so it stays that way even after a page refresh/restart Current bugs/issues The issue with the sub-folders not opening after the parent folder is renamed still exists
Fluetro OS DevLog 052 Well, this is embarrassing New Stuff added Browser has its own custom accent color now (like how browsers on Windows have) The Photo Viewer icon stuck in the dock is now gone and appears only when Photo Viewer is called Fixes Fixed the issue with the dock padding when Photo Viewer wasn’t called Stuff that happened Tried to add a dynamic accent color sync system for the browser, it worked to some extent, but it won’t instantly sync if you changed the wallpaper to change the accent color, but would sync that accent color after a restart, so I had to remove it. Will try to implement it later though. I have been working on a Music Player app (as I said that there will be one in a future update), wasted a lot of time debugging it trying to find out why the music wasn’t playing, turns out, the Integrated Browser in VS Code doesn’t allow intregated <audio> elements. Tried in my default browser (and brave), works as intended. (Please ignore the bright blue background, it’s just a placeholder)
Fluetro OS DevLog 053 Music to my ears New stuff added Added a Music Player with working Play/Pause, seekBar, Previous/Next and Queue Added music in Audio Folder in the Files App Redid almost all the Files App icons with higher quality versions Changed the Details Pane text to a more appropriate one Added a Supabase fetch system for the Music Clicking “Previous” while being on the 1st music in the Queue results in restarting that song Clicking “Next” while being on the last music in the Queue results in restarting that song Fixes Fixed some issues with the un-resizable windows, which could be resized earlier, they just didn’t show the custom cursors Fixed jumpy windows Fixed Music Player issues that I encountered along the way, like the Play/Pause buttons not rendering properly or the SeekBar jumping Current issues/bugs The Music takes some time to load, but it mostly depends on your internet connection The Queue is still custom arranged, and not alphabetically sorted
Fluetro OS DevLog 054 Mostly improvements New stuff added Maximizing/restoring down now has animations and they don’t interfere with the resizing scenario like earlier, this took so long to implement because my first ever project that involved JavaScript was just this year, so I am still learning. Revamped the Gaming Hub Added a Settings app, and hooked it to the Quick Settings panel so it can also be opened from there Fixes For some reason the animations weren’t working for all the windows, so I checked and tried lots of different stuff, and then found out that there was no height and width parameters for most of the windows, so I added some and that fixed the animations Current bugs/issues I just started working on the Settings app, so it’s really unfinished (shown in the video)
Fluetro OS DevLog 055 CSS stuff New stuff added/changelog Did the CSS for the Settings app Revamped some designs for the Gaming Hub and Settings when maximized so they don’t look weird Did a roadmap for all the settings to add Fixes Fixed some of the jumpy and jittery elements in the UI Current issues/bugs I still haven’t done anything about the JavaScript part of the Settings app so for now, everything is only visual Fun Fact The UI for this project was inspired by a leaked screenshot of a concept Windows version that surfaced online, I tried to remake that in my Windows 11 system and had a screenshot, finally found it and it’s attached below. The dock is inspired by a DeviantArt Post I saw a few years ago (I think it was called Fluent Big Sur). The top Bar UI of the OS is inspired by the new “Dock” feature added to Microsoft PowerToys and how I arranged it when I first enabled it (image attached)
Fluetro OS DevLog 056 More Settings New Stuff added/changelog Added some more settings Did the JS for the Wallpapers so they actually work now Fixes Found an issue that causes lag and no animations when trying to open the wallpaper change menu from quick settings or the settings app, it’s now fixed, I did it by rendering the options beforehand. I tried to fix this issue thinking it was settings app-only but had to give up on it since none of my attempts to fix it worked, then I found out the same was happening in the quick settings wallpaper picker, this was probably because it goes through the code and tries to render the image using JS, and it can’t do it before the app opening animation finishes. Current issues/bugs There is no CSS for the new settings areas that have been added There’s no JS for the new settings areas that have been added Note I am thinking of making a pack that can make Windows 11 feel like Fluetro, so please let me know if anyone would like that.
Fluetro OS DevLog 057 Finally finished adding all the settings options New stuff added/changelog Added settings for Interface, Privacy & Security and the About sections Did the CSS for all the above-mentioned areas Made the Location bar work using JS and made it sync with the one in Quick Settings (shown in video) Fixes Fixed the weird gaps and padding in some areas of the settings app Current issues/bugs Most of the settings are not yet functional Note The Personalization area might get Radio buttons (or menus) while the other sections will get checkboxes
Fluetro OS DevLog 058 More settings that actually work New stuff/changelog All the settings in the Personalization area work, including custom Accent colors and custom wallpapers All the settings in the Time and Date area work (24-hr format added from feedback) Only the double-click title bar to maximize option works in the Interface section Multiple changes in HTML to accommodate the custom wallpapers and CSS designs for different areas Fixes Fixed an issue where the settings window would lag when trying to do anything with it, like resize/maximize/minimize/close etc. Fixed an issue with the margins and padding in the Clock Flyout caused by the weird CSS code that I did for the it during the initial stages since I didn’t know that much about CSS yet Current issues/bugs If you select a custom wallpaper, then switch back to a preloaded wallpaper, and then try to go back to your custom one, you’ll be prompted to choose a new one, but you can just close the window if you don’t want to choose a new one Some of the settings in the Interface and Time & Date sections aren’t retained after a Fluetro restart The gradient in the left side lock screen isn’t coded properly so a section of it uses the default colors, resulting in weird gradients according to the custom accent used, this doesn’t happen in the case of Automatic Accents though Note: The Automatic Accent system is reserved only for the preloaded wallpapers and is disabled for custom ones
Fluetro OS DevLog 059 Settings app almost complete, only 2 settings left New stuff/changelog Navigation for the Settings app works now Custom accent no longer allows pure black/pure white and only allows 6-digit Hex codes All settings are now persistent throughout restarts and shutdowns Stretch dock to max width when an app is maximized works, even with multiple apps open Clear memo on Shutdown/Restart works too Added working Stardance and Github Page links to About section Show highlight for open apps option works too, so you can turn it off to get only a sleek border around the running app icon in the dock, instead of the full background The reset option works now too, and it also asks for confirmation Added tick marks to options that are turned on Added calculation logic to get the nice gradient in the lock screen according to the Custom accent too Fixes Fixed an issue where the running app highlight would appear even when the option was unchecked Fixed an issue with setting persistence which was caused due to some options being on by default Fixed an issue where the dock would get an awkward position when being stretched due to a maximized app Fixed an issue where multiple windows with some being maximized would glitch out the dock and make it toggle between its stretched and unstretched state Fixed an issue where the Window wouldn’t take up all of the screen when maximized if stretch dock option was checked Fixed an issue where the error windows would appear in the dock between Gaming Hub and Music player instead of appearing at the end of the dock Fixed the Songs in Music Player queue so they appear alphabetically Fixed an issue where you could put transparency values into hex for the accent to get a transparent color Fixed another issue with the clock Flyout which caused the Calendar to appear slightly off Fixed the issue from my previous DevLog which talked about the Lock Screen Gradient not being coded properly Current issues/bugs I haven’t implemented the Desktop icons yet, so the option in Settings remains unusable I also haven’t done the Privacy Policy or the Window for it, so that option remains unused too
Fluetro OS DevLog 060 More stuff, but nothing major New stuff/changelog So, the Photo Viewer app now supports moving between images inside the same folder, and it’s like that cuz it’s inspired by Windows Photo Viewer, and yes, it also supports your keyboard’s arrow keys There’s now a Text Editor embedded inside the Files app to edit your Text Files that you create There’re now some sample images in the Images folder, and thus in the gallery Gallery elements can now be selected and have their own context menus, which is literally the same as all the preloaded folders and files Fixes The Navigation pane in the Settings app now reacts to you scrolling in the app, so it highlights the corresponding panel button Current issues/bugs The sort button in the gallery does nothing, so it’s deprecated for that area, and gallery will be arranged by order of importance
Fluetro OS DevLog 061 File system complete, but still much more is left New stuff/changelog Added some sample video files (these are a surprise, I already ruined it for the images, but won’t for the videos) Added a working video player, but unfortunately, it doesn’t have a queue, so you open a video file and it plays that file Added a Pomodoro timer, based on cutepomodorotimer.com All music, images, and videos are now cloud-based, and thus will not be uploaded to the Project’s GitHub page The text at the top left now responds to the currently open and focused app Added icons for User folders Added an indicator when refreshing in the Files app Fixes Fixed an issue where the Dock would remain stretched if you closed an app while it was maximized Fixed an issue where you couldn’t name 2 different files of different types the same, so if a Folder is named “F1” you couldn’t name a file in the same directory as “F1” Fixed another issue in which naming a file the same as an app’s executable file would give it the same icon Sort option is now disabled in the Gallery and Home page of the Files app Photo viewer no longer uses random arrangement of photos, instead uses an ascending alphabetical order Current issues/bugs None encountered at this point in time
Fluetro OS DevLog 062 I said I’d work slowly and post one DevLog a day, I guess one of them was a lie New stuff/changelog Removed the toggle to show them from settings and scrapped the idea Added the OS logo to the About section in Settings Added a macOS Finder-like search bar, called “Find” Added a toggle for “Find” in the quick settings Made “Find” actually work Made “Find” actually update the suggestions with the app you last opened via it at the top Made the toggle functionality stay even after a restart/shutdown using localStorage Added an option in settings to clear recent searched apps during a restart/shutdown Changed the icons in the Quick Settings panel to use images of Windows 11’s Fluent Emojis, before they used Emojis which looked good on my end, but probably won’t on Linux or macOS. And yes, the search bar has animations, but its position is fixed cuz it looks good over there Fixes Fixed an issue, where checking the option to clear memo on shutdown/restart would clear it instantly Fixed multiple issues noticed regarding “Find” during its development Changed Daily Brief to load Dynamically when the app opens, to preserve Privacy further unless someone decides to open it manually rather than it just running in the background all INVISIBLE style. Current bugs/issues “Find” can’t browse through the File system, this is intended cuz “Find” is supposed to be a launcher for your apps There’s another issue, but it is going to be an easter egg
Fluetro OS DevLog 063 Redesigns, yayyy New stuff/changelog Files app now has Breadcrumbs design in the address bar instead of the normal “ " style, you can’t click on them to change locations though, it just looks cleaner, and when you click it, it turns back to the “ " style where you can edit stuff Quick settings redesign including all icons More additions to quick settings Find now supports keyboard input to select and launch items Did the HTML and CSS for some other little features that’ll be added All selection is now themed using Accent Color Added a text at the bottom of the Boot Screen prompting you to go Fullscreen mode “Escape” button on the keyboard can now be used to exit any input type box, like the Address Bar in the Files App, or the Custom Accent color and Weather location fields in the Settings app. Added an Easter egg (not gonna show that though) Fixes As I said under “New stuff”, Find now supports keyboard input and at first, it was glitching out randomly highlighting stuff, but now it’s fixed Fixed the issue with the Game Bar background so now the Games Library area has a whole background covering up the rest of the app. Fixed an issue where the Memo and the Find Recent searches list wasn’t actually being cleared on Shutdown/Restart, it was actually not being loaded the next boot. Fixed an issue which caused the “non-existent location error” to not pop up when you entered a non-existent address in the Files app’s address bar Fixed and issue where the window contents would overflow invisibly at the bottom and cause issues with the padding and margins Current issues/bugs I only did the HTML and CSS for the upcoming features, so they don’t actually work at this point, since I didn’t do the JS part.
Ships:
A WebOS inspired heavily from the Metro aesthetic from Windows 8/8.1 and Fluent Design aesthetic from Windows 11. Has multiple working apps, working login screen and desktop elements. Will get an update in the future for WebOS 2, with a working Start Screen inspired menu.
I have now made Fluetro OS into a much more complete OS experience. It now has a working Browser, AI Brief, and some games, along with the previous Paint, Memo and Calculator apps. It now also includes a Boot screen and a Restart function, along with automatic and more consistent Accent Color theming throughout the UI. Also, the UI is now much more consistent with its icons and design. The biggest challenge for me was trying to “not” make silly mistakes, I’d forget a comma or a semi-colon somewhere or misspell something and it’d break the whole system. I especially had trouble with the animations and different app states. I am especially proud of how much the OS has evolved through the span of only a month, I tried my best to make it feel usable and interactive. To test it, just click try project and use it. The AI Brief feature will ask you for your location permission and if denied will resort to IP-based location, but the built-in weather system of the OS will require you to add your own location from the Quick Settings....
|
1792990264.209012
|
1793076664.209012
|
|
4719
|
Scoutmaster 2.0 by @Zee | Stardance
|
Zee
|
0
|
94.63
|
0
|
[]
|
[{"post_id": 65679, "ts": "202 [{"post_id": 65679, "ts": "2026-09-11T00:05:40Z", "hours": 4.6714, "text": "Devlog 17 Now that this webapp is in its final stages of completion, I have just been completing todo list items really, these were: Fixing double websocket connect bug Adding update current team for summary to server Added functionality to settings menu Made competitions pull from an actual API instead of a json saved inside the project files Now the main items left are: Path scouting for auto Finish landing page"}, {"post_id": 61154, "ts": "2026-09-03T22:30:36Z", "hours": 5.5403, "text": "Devlog 16 I just boosted the security of the tool quite a bit, now with rate limiting, aggressive schema validation, and payload size limits. The issue before was that you could spam stuff no problem, but now there is a ton of resistance, and very strict limits. I still have more plans to make it even more secure as well. I also setup meta tags so now supposedly when you send a link depending on the platform, it will show this image and a description as well. An example of some of the new aggressive schema validation is: class QuestionChanges ( StrictModel ): title : Str | None = None type : ( Literal [ \" ln \" , \" sn \" , \" cb \" , \" a \" , \" img \" , \" n \" , \" mc \" , \" sc \" , \" r \" , \" st \" ] | None ) = None opt : dict [ Annotated [ str , StringConstraints ( pattern = r \" ^[0-9]$ \" )], Annotated [ str , Field ( max_length = 50 )]] | None = Field ( default = None , max_length = 10 ) minmax : Annotated [ list [ Annotated [ int , Field ( ge =- 99999 , le = 99999 )]], Field ( min_length = 2 , max_length = 2 )] | None = None stars : Annotated [ int , Field ( ge = 0 , le = 10 )] | None = None I setup two different rate limiting systems, these include ones for the websocket, where each individual message type can get its own rate limit (some things should be easily called 500 times in a minute, while others should NOT be called more than 10) @ws_limit ( maxCalls = 500 , window = 60 ) async def handleUpdateTeamQuestion ( @ws_limit ( maxCalls = 8 , window = 60 ) async def handleCompCodeChange ( Window being time in seconds, maxCalls being the max calls in that window. This still needs more testing to make sure edge cases that are actually possible to do using the UI are not blocked by this security, but most regular use seems to not be affected."}, {"post_id": 59831, "ts": "2026-09-01T20:09:55Z", "hours": 5.2906, "text": "Devlog 15 I have now finished the following tasks: Inviting members Uninviting members Kicking members out of group Most of the UI to do with the member system (only joining a group left) I have also added these improvements to the backend related things: The front end no longer assumes that a user is in a group and instead calls a server endpoint to check first on sign in The front end now connects on loading of the dashboard page instead of loading on the sign in page, which is to fix a current issue where if the user is already signed in but on the landing page, it makes them re-sign in, but soon it will just be a button saying “go to dash” Added UI for loading hydration for dash Made it so the add match/add team buttons were only visible to admins I now pretty much don’t have too much to do, instead it will simply be finishing touches and a little bit of work with the joining system: Make the UI for creating a group Make the UI for joining a group actually work Add rate limiting Sync settings with database Publish"}, {"post_id": 56176, "ts": "2026-08-27T20:14:15Z", "hours": 3.9831, "text": "Devlog 14 I have now fully finished the summary team page UI as well. Now there are charts that show the points of each individual match, and then also each individual method of scoring. I also added two new screens for when a team is in first or last, if a team is in first, then there are no teams above to accept/reject, so it shows a little bit of text, if a team is in last, there is no team below to pick, so they have a separate message. I also took the time to add the flags bit beside a team’s name in the summary page too so it can match prescout. With all of the above, I also completed the mobile UI equivalent."}, {"post_id": 54640, "ts": "2026-08-25T17:45:02Z", "hours": 8.1594, "text": "Devlog 13 ALL. SERVER. SYNC. IS. DONE. I have finished every single piece of work needed to sync the server with the client at all times. I am now getting close to the finish line for this project. I added info toasts for some new things, rather than just showing the success toast for an action a user may not have actually done themselves for things like adding teams and matches. There are now very few tasks left really, they are: Fully localize everything Add French Add mobile UI to summary Add custom competition handling for summary Add a favicon Fix dark mode glitches on sign in/sign up pages"}, {"post_id": 50586, "ts": "2026-08-19T19:50:31Z", "hours": 6.155, "text": "Devlog 12 This devlog is now much more about the server side of things as that has been my focus right now. The way this all works is I have a realtime python server connect to my database and all clients. Clients are put into a realtime channel with all their teammates. When the first user of a team joins, the python server pulls all that team’s scouting data from the database and keeps it in memory. This is to speed up request response times. When a second, third, fourth, so on, user of a team joins, the server instead just gives them the data it has in memory instead of the database. To keep this all in sync, the server updates its version of that group’s data as soon as it is successfully saved to the database. It takes time to set this all up, and the parts of synchronization that I have completed so far are: Competition code changes Setting competitions to custom Adding an individual team Adding teams from API at the start Adding an individual match Adding matches from API at the start I have done one thing for the UI though, and that is finally adding a 404 page. I designed this 404 with the magnifying glass in the middle as the 0."}, {"post_id": 46008, "ts": "2026-08-12T21:28:56Z", "hours": 0.9444, "text": "Devlog 11 I usually space out my devlogs more, but I have now managed to get the base connection. This went by rather flawlessly due to now having the ability to use a python server for websockets, rather than the old system of having to use SQL requests with a million different RPC functions (sometimes causing queries to take up to 500ms on average) now taking only 100ms on average. This uses a simple system to take the JWT token from the user, validate it from the server to find the user id, then checks the database to see what group the user is in, then checks the group to make sure that the user is actually in that group, and if all those conditions are met, the user will connect to the websocket. If the user is the first one in the websocket, it right now just prints it, but it is designed to soon be used for a new feature. Soon, when a user joins a websocket and is the first one there, the server will load all that group’s data from the database, the reason for this is to have lightning fast connection and also make it possible to synchronize all users’ data in real time. (Whenever a user makes a change, it would update the server’s copy, and also push that change to the database)"}, {"post_id": 45166, "ts": "2026-08-11T14:13:17Z", "hours": 3.3492, "text": "Devlog 10 I have now finished the skeleton UI for the summary tab. I originally ran into some issues because I had tried to make one table with one map and just change the data for it, but that went horribly wrong because it made the code so janky and I had to write a ton of spaghetti code for it. In the end, I decided to switch to this system instead, where there are 3 completely separate tables for each tab, that get rendered in conditionally. { currentTab == 0 ? ( < Tab1 sorted = { sorted } sortBy = { sortBy } setSortBy = { setSortBy } setSortDown = { setSortDown } sortDown = { sortDown } selected = { selected } /> ) : currentTab == 1 ? ( < Tab2 teamsBelow = { teamsBelow } /> ) : ( < Tab3 teamsAbove = { teamsAbove } /> )} This way allowed me to have more freedom and more organization with the code. I also originally ran into an issue with my rendering system for picks. When a team would set their pick order, originally to preserve the order they had in mind, the site would check all teams in the picks array, and if they were below, they would render them in. This caused an issue where if a team changed ranks through a competition, the teams below would change, and some might not render, which caused a problem in that the indexes for the reordering were off, and it would reorder the ones at the top that were not visible to the user. In the end I fixed this by simply filtering out and deleting the ones that were no longer a valid pick. updateSummary ({ picks : [ ... summary . picks . filter (( pick ) => below . includes ( pick )), ... below . filter (( team ) => ! summary . picks . includes ( team )), ], }); My goals now are to get a start on the backend part so that the main structure of the site can be complete. The tasks that would be left after that are: Polishing the summary page UI Making the mobile UI for the summary page Adding the new setting to set user’s team number by default so they don’t have to constantly set it from the tab Landing page improvements"}, {"post_id": 44669, "ts": "2026-08-10T16:15:28Z", "hours": 4.81, "text": "Devlog 9 I have now done a lot of work in relation to the summary page, the hardest part is now pretty much done (the all teams page). The parts left now are the top picks page, and the accept/reject page. I have also done some work that isn’t specifically for the summary page too. Now, setting a competition will make it so the FTCScout api will actually pull the teams and matches in the competition. The only steps left before synchronization now are those previously mentioned summary pages, and the mobile UI for all summary pages."}, {"post_id": 43486, "ts": "2026-08-08T19:40:09Z", "hours": 3.4014, "text": "Devlog 8 This is now where things are really starting to pick up. With the entire match scouting page done, there is now only summary, and then it is time to work on the synchronization. I was thinking about leaving the score page empty, but instead I decided to just put what would be there for FTC Decode, I will later switch it to Biobuzz when the game is known."}, {"post_id": 32018, "ts": "2026-07-20T21:46:48Z", "hours": 3.5639, "text": "Devlog 7 I have now finished the team prescout page for both phones and desktop, this is where scouts can fill in those questions from earlier. I didn’t really run into much issues, but I implemented a special system to make sure that this fill in works with my current question structure. The original issue The original issue with this system is that if a question is edited, it keeps its question id, and if a user edits the question type, that means that what was once a multiple choice, can now be a note, which would completely mess it up if a user opens a team to check on the data. The solution? If a user enters a team page with an invalid question, the question will be reset to its default, so a string will be reset to “”, a number input will be reset to 0, etc. Now this means the prescout page is pretty much completely done, and I now have to start on the match scouting page."}, {"post_id": 31565, "ts": "2026-07-20T02:20:22Z", "hours": 1.3606, "text": "Devlog 6 I have now finished the phone UI for the prescouting page, meaning the last step of this page is officially complete. The next tasks are the individual team pages and the start of the match scouting page."}, {"post_id": 31396, "ts": "2026-07-19T18:47:10Z", "hours": 4.8928, "text": "Devlog 5 I have now finished the following tasks: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question The tasks I have left related to the question management system are: Translation keys Create the phone UI I also hit a small hiccup along the way of adding these features where I discovered due to my localstorage structure, whenever a competition is switched, the questions are all deleted (now fixed by not just using a blank localstorage.clear()) New Code /** * Creates the base skeleton structure for localstorage * * @param {boolean} force - Force overwrite of existing localstorage or not */ export function createSkeleton ( force : boolean ) { const existing = localStorage . getItem ( \" data \" ); if ( existing && ! force ) { return ; } let setPrescout = { structure : {}, sections : { \" 0 \" : { title : \" Section 1 \" , headersize : 1 , questions : [], index : 0 , }, }, }; if ( existing ) { const parsed = JSON . parse ( existing ); setPrescout . structure = parsed . prescout . structure ; setPrescout . sections = parsed . prescout . sections ; } const skeleton : LocalStorageData = { compkey : \"\" , custom : false , prescout : { structure : setPrescout . structure , sections : setPrescout . sections , teams : {}, }, match : {}, }; localStorage . setItem ( \" data \" , JSON . stringify ( skeleton )); resetAllStates (); }"}, {"post_id": 30267, "ts": "2026-07-17T18:16:39Z", "hours": 7.7772, "text": "Devlog 4 I have spent almost 8 hours working on one feature and one feature alone. That feature is this drag and drop organizer for questions. This lets the user drag around the order of questions to rearrange them, and also drag around the order of sections. The reason this took so long was because the original library I was using (dnd-kit) for drag and drop made it a complete nightmare to try and do anything, it did not have a way to tell what items were where, as it would literally just change the HTML rather than give any data. Once I switched to hello pangea dnd, it all started fitting together. It actually gave me a way to see what changes occurred, save them, and then that updates the UI. Now my next tasks are: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question Translation keys Create the phone UI"}, {"post_id": 28962, "ts": "2026-07-15T16:08:33Z", "hours": 3.4122, "text": "Devlog 3 I have learned my mistake, so now I will be aiming for a devlog every 3-4 hours instead. I have now made it so that the progress bar for teams scouted actually shows the real progress so far of scouting, and the lights actually react to that team’s scouting progress. (I have not made the system to add questions yet, so technically all teams are fully scouted (0/0 questions answered)). I have also started work on the question organization menu. It will be a drag and drop menu to let users arrange and edit questions how they want, with a button at the bottom to edit questions. The images attached below show the progress bar and drag and drop menu (ignore the dummy data put for now, I will replace that with actual data later), and the dropdown menu, which will be for selecting question type soon. I have also attached a very rough sketch of what the draggable question and section divs themselves will look like. (the blue and red is just to indicate different colors, it is not the final color)"}, {"post_id": 28423, "ts": "2026-07-14T17:37:05Z", "hours": 15.4136, "text": "Devlog 2 So far I have now completed the main job of the competition tab, which is to handle adding custom matches and teams. One of the major issues I came along was that the UI was ugly , the modals were bland, and I wanted to add more depth, so I added that highlight in the middle which lifts the interactable content up. I had issues with the height of the modal being either too tall or too short depending on the device screen. I solved this one by making a simple new function that helps decide if the modal needs to be bumped up in height or not /** * Returns whether the current screen height is \"akward\", <= 700px for phones/tablets, and <= 899px for desktop * * @returns true | false */ export function useIsAkwardHeight (): true | false { if ( useScreenType () != \" desktop \" ) { const isAkwardHeight = useMediaQuery ({ query : \" (max-height: 700px) \" }); return isAkwardHeight ; } else { const isAkwardHeight = useMediaQuery ({ query : \" (max-height: 899px) \" }); return isAkwardHeight ; } } An example of it being used: < div className = \" desktop-warningpopup \" id = \" avoidwarningpopupheight \" style = { specifyCustomCountry ? { height : useIsAkwardHeight () ? \" 55vh \" : \" 40vh \" } : { height : useIsAkwardHeight () ? \" 40vh \" : \" 25vh \" } } > One big thing I have done in the past bit of time (I did not know that anything after 10 hours is voided, meaning I just wasted like 5 hours 😭) is the organization of a lot of the code. I also organized a lot of the CSS into barrel files so that the CSS files are not thousands of lines long anymore. I have also started work on the prescouting tab (finally) and with that I have got the UI for the progress bar of teams scouted, and also the table of teams. One big thing I have now put in this project is persisting settings, and one big settings function. export const useSettings = create ( persist < { isLightMode : boolean ; flipTheme : () => void ; isCustomCountry : boolean ; flipCustomCountry : () => void ; } > ( ( set ) => ({ isLightMode : true , flipTheme : () => { set (( state ) => ({ isLightMode : ! state . isLightMode , })); }, isCustomCountry : false , flipCustomCountry : () => { set (( state ) => ({ isCustomCountry : ! state . isCustomCountry , })); }, }), { name : \" settings \" }, ), );"}, {"post_id": 14615, "ts": "2026-06-23T19:57:27Z", "hours": 11.9042, "text": "Devlog 1 This is my first devlog here, so I will explain a little bit about what this project is. Scoutmaster is a First Tech Challenge scouting tool designed to make scouting at competitions easier for teams. It has prescouting, which is basically scouting teams’ abilities before matches start to see what features they may have that might not be seen in matches, and then match scouting which lets scouts figure out exaclty how many points on average each team scores on their own, to make alliance selection at the end much easier. The original Scoutmaster did that, but in a very primitive way, the UI was not that good, and there were many bugs. This prompted me to rebuild it from the ground up, and fix those bugs along the way with what I have learned since then. So far, I have put in about 12 hours into this project. Within this time, I have managed to get a start on: Landing Page for both Desktop and Phone Dashboard for Desktop and Phone Initial API structure { \"compkey\": \"CAONBOQ\", \"custom\": false, \"prescout\": { \"structure\": { \"numOfQuestions\": 6, // the type of questions \"questionorder\": [\"lt\", \"st\", \"cb\", \"r\", \"auto\", \"picture\"], }, \"teams\": { \"1\": { // for images, the image name will be Scouting team number - picof Scouted team number, so XXXXX-picof-XXXXX \"data\": [ \"lorem ipsum\", \"situm dilor\", true, 213, \"IMAGINEANSVGPATHRIGHTHERE\", \"16423-picof1.png\", ], \"matchesIn\": [1, 5, 67], }, \"2\": {}, \"3\": {}, }, }, \"matchscout\": { \"Q1\": { \"highlighted\": [true, true, false, true], \"teams\": [1234, 1222, 1223, 1313], \"red1\": [45, 45, 45, 45], \"red2\": [55, 55, 55, 55], \"blue1\": [555, 555, 555, 555], \"blue2\": [1, 1, 1, 1], }, \"Q2\": { \"highlighted\": [true, true, false, true], \"teams\": [1234, 1222, 1223, 1313], \"red1\": [45, 45, 45, 45], \"red2\": [55, 55, 55, 55], \"blue1\": [555, 555, 555, 555], \"blue2\": [1, 1, 1, 1], }, }, } This is the initial API structure of what this tool will be using. This is designed to allow for both official competitions and custom ones, a feature not previously included in the original Scoutmaster. The plan now is to continue making the dashboard, and then afterwards, once the full dashboard works with localstorage, begin working on the backend to actually make it synchronize across devices."}]...
|
Title: Scoutmaster 2.0 by @Zee | Stardance
Devlog Title: Scoutmaster 2.0 by @Zee | Stardance
Devlogs:
Devlog 1 This is my first devlog here, so I will explain a little bit about what this project is. Scoutmaster is a First Tech Challenge scouting tool designed to make scouting at competitions easier for teams. It has prescouting, which is basically scouting teams’ abilities before matches start to see what features they may have that might not be seen in matches, and then match scouting which lets scouts figure out exaclty how many points on average each team scores on their own, to make alliance selection at the end much easier. The original Scoutmaster did that, but in a very primitive way, the UI was not that good, and there were many bugs. This prompted me to rebuild it from the ground up, and fix those bugs along the way with what I have learned since then. So far, I have put in about 12 hours into this project. Within this time, I have managed to get a start on: Landing Page for both Desktop and Phone Dashboard for Desktop and Phone Initial API structure { "compkey": "CAONBOQ", "custom": false, "prescout": { "structure": { "numOfQuestions": 6, // the type of questions "questionorder": ["lt", "st", "cb", "r", "auto", "picture"], }, "teams": { "1": { // for images, the image name will be Scouting team number - picof Scouted team number, so XXXXX-picof-XXXXX "data": [ "lorem ipsum", "situm dilor", true, 213, "IMAGINEANSVGPATHRIGHTHERE", "16423-picof1.png", ], "matchesIn": [1, 5, 67], }, "2": {}, "3": {}, }, }, "matchscout": { "Q1": { "highlighted": [true, true, false, true], "teams": [1234, 1222, 1223, 1313], "red1": [45, 45, 45, 45], "red2": [55, 55, 55, 55], "blue1": [555, 555, 555, 555], "blue2": [1, 1, 1, 1], }, "Q2": { "highlighted": [true, true, false, true], "teams": [1234, 1222, 1223, 1313], "red1": [45, 45, 45, 45], "red2": [55, 55, 55, 55], "blue1": [555, 555, 555, 555], "blue2": [1, 1, 1, 1], }, }, } This is the initial API structure of what this tool will be using. This is designed to allow for both official competitions and custom ones, a feature not previously included in the original Scoutmaster. The plan now is to continue making the dashboard, and then afterwards, once the full dashboard works with localstorage, begin working on the backend to actually make it synchronize across devices.
Devlog 2 So far I have now completed the main job of the competition tab, which is to handle adding custom matches and teams. One of the major issues I came along was that the UI was ugly , the modals were bland, and I wanted to add more depth, so I added that highlight in the middle which lifts the interactable content up. I had issues with the height of the modal being either too tall or too short depending on the device screen. I solved this one by making a simple new function that helps decide if the modal needs to be bumped up in height or not /** * Returns whether the current screen height is "akward", <= 700px for phones/tablets, and <= 899px for desktop * * @returns true | false */ export function useIsAkwardHeight (): true | false { if ( useScreenType () != " desktop " ) { const isAkwardHeight = useMediaQuery ({ query : " (max-height: 700px) " }); return isAkwardHeight ; } else { const isAkwardHeight = useMediaQuery ({ query : " (max-height: 899px) " }); return isAkwardHeight ; } } An example of it being used: < div className = " desktop-warningpopup " id = " avoidwarningpopupheight " style = { specifyCustomCountry ? { height : useIsAkwardHeight () ? " 55vh " : " 40vh " } : { height : useIsAkwardHeight () ? " 40vh " : " 25vh " } } > One big thing I have done in the past bit of time (I did not know that anything after 10 hours is voided, meaning I just wasted like 5 hours 😭) is the organization of a lot of the code. I also organized a lot of the CSS into barrel files so that the CSS files are not thousands of lines long anymore. I have also started work on the prescouting tab (finally) and with that I have got the UI for the progress bar of teams scouted, and also the table of teams. One big thing I have now put in this project is persisting settings, and one big settings function. export const useSettings = create ( persist < { isLightMode : boolean ; flipTheme : () => void ; isCustomCountry : boolean ; flipCustomCountry : () => void ; } > ( ( set ) => ({ isLightMode : true , flipTheme : () => { set (( state ) => ({ isLightMode : ! state . isLightMode , })); }, isCustomCountry : false , flipCustomCountry : () => { set (( state ) => ({ isCustomCountry : ! state . isCustomCountry , })); }, }), { name : " settings " }, ), );
Devlog 3 I have learned my mistake, so now I will be aiming for a devlog every 3-4 hours instead. I have now made it so that the progress bar for teams scouted actually shows the real progress so far of scouting, and the lights actually react to that team’s scouting progress. (I have not made the system to add questions yet, so technically all teams are fully scouted (0/0 questions answered)). I have also started work on the question organization menu. It will be a drag and drop menu to let users arrange and edit questions how they want, with a button at the bottom to edit questions. The images attached below show the progress bar and drag and drop menu (ignore the dummy data put for now, I will replace that with actual data later), and the dropdown menu, which will be for selecting question type soon. I have also attached a very rough sketch of what the draggable question and section divs themselves will look like. (the blue and red is just to indicate different colors, it is not the final color)
Devlog 4 I have spent almost 8 hours working on one feature and one feature alone. That feature is this drag and drop organizer for questions. This lets the user drag around the order of questions to rearrange them, and also drag around the order of sections. The reason this took so long was because the original library I was using (dnd-kit) for drag and drop made it a complete nightmare to try and do anything, it did not have a way to tell what items were where, as it would literally just change the HTML rather than give any data. Once I switched to hello pangea dnd, it all started fitting together. It actually gave me a way to see what changes occurred, save them, and then that updates the UI. Now my next tasks are: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question Translation keys Create the phone UI
Devlog 5 I have now finished the following tasks: Ability to edit question extra fields (e.g. min/max of a slider question) Ability to delete a section Ability to add a section Ability to edit a section Ability to add a question The tasks I have left related to the question management system are: Translation keys Create the phone UI I also hit a small hiccup along the way of adding these features where I discovered due to my localstorage structure, whenever a competition is switched, the questions are all deleted (now fixed by not just using a blank localstorage.clear()) New Code /** * Creates the base skeleton structure for localstorage * * @param {boolean} force - Force overwrite of existing localstorage or not */ export function createSkeleton ( force : boolean ) { const existing = localStorage . getItem ( " data " ); if ( existing && ! force ) { return ; } let setPrescout = { structure : {}, sections : { " 0 " : { title : " Section 1 " , headersize : 1 , questions : [], index : 0 , }, }, }; if ( existing ) { const parsed = JSON . parse ( existing ); setPrescout . structure = parsed . prescout . structure ; setPrescout . sections = parsed . prescout . sections ; } const skeleton : LocalStorageData = { compkey : "" , custom : false , prescout : { structure : setPrescout . structure , sections : setPrescout . sections , teams : {}, }, match : {}, }; localStorage . setItem ( " data " , JSON . stringify ( skeleton )); resetAllStates (); }
Devlog 6 I have now finished the phone UI for the prescouting page, meaning the last step of this page is officially complete. The next tasks are the individual team pages and the start of the match scouting page.
Devlog 7 I have now finished the team prescout page for both phones and desktop, this is where scouts can fill in those questions from earlier. I didn’t really run into much issues, but I implemented a special system to make sure that this fill in works with my current question structure. The original issue The original issue with this system is that if a question is edited, it keeps its question id, and if a user edits the question type, that means that what was once a multiple choice, can now be a note, which would completely mess it up if a user opens a team to check on the data. The solution? If a user enters a team page with an invalid question, the question will be reset to its default, so a string will be reset to “”, a number input will be reset to 0, etc. Now this means the prescout page is pretty much completely done, and I now have to start on the match scouting page.
Devlog 8 This is now where things are really starting to pick up. With the entire match scouting page done, there is now only summary, and then it is time to work on the synchronization. I was thinking about leaving the score page empty, but instead I decided to just put what would be there for FTC Decode, I will later switch it to Biobuzz when the game is known.
Devlog 9 I have now done a lot of work in relation to the summary page, the hardest part is now pretty much done (the all teams page). The parts left now are the top picks page, and the accept/reject page. I have also done some work that isn’t specifically for the summary page too. Now, setting a competition will make it so the FTCScout api will actually pull the teams and matches in the competition. The only steps left before synchronization now are those previously mentioned summary pages, and the mobile UI for all summary pages.
Devlog 10 I have now finished the skeleton UI for the summary tab. I originally ran into some issues because I had tried to make one table with one map and just change the data for it, but that went horribly wrong because it made the code so janky and I had to write a ton of spaghetti code for it. In the end, I decided to switch to this system instead, where there are 3 completely separate tables for each tab, that get rendered in conditionally. { currentTab == 0 ? ( < Tab1 sorted = { sorted } sortBy = { sortBy } setSortBy = { setSortBy } setSortDown = { setSortDown } sortDown = { sortDown } selected = { selected } /> ) : currentTab == 1 ? ( < Tab2 teamsBelow = { teamsBelow } /> ) : ( < Tab3 teamsAbove = { teamsAbove } /> )} This way allowed me to have more freedom and more organization with the code. I also originally ran into an issue with my rendering system for picks. When a team would set their pick order, originally to preserve the order they had in mind, the site would check all teams in the picks array, and if they were below, they would render them in. This caused an issue where if a team changed ranks through a competition, the teams below would change, and some might not render, which caused a problem in that the indexes for the reordering were off, and it would reorder the ones at the top that were not visible to the user. In the end I fixed this by simply filtering out and deleting the ones that were no longer a valid pick. updateSummary ({ picks : [ ... summary . picks . filter (( pick ) => below . includes ( pick )), ... below . filter (( team ) => ! summary . picks . includes ( team )), ], }); My goals now are to get a start on the backend part so that the main structure of the site can be complete. The tasks that would be left after that are: Polishing the summary page UI Making the mobile UI for the summary page Adding the new setting to set user’s team number by default so they don’t have to constantly set it from the tab Landing page improvements
Devlog 11 I usually space out my devlogs more, but I have now managed to get the base connection. This went by rather flawlessly due to now having the ability to use a python server for websockets, rather than the old system of having to use SQL requests with a million different RPC functions (sometimes causing queries to take up to 500ms on average) now taking only 100ms on average. This uses a simple system to take the JWT token from the user, validate it from the server to find the user id, then checks the database to see what group the user is in, then checks the group to make sure that the user is actually in that group, and if all those conditions are met, the user will connect to the websocket. If the user is the first one in the websocket, it right now just prints it, but it is designed to soon be used for a new feature. Soon, when a user joins a websocket and is the first one there, the server will load all that group’s data from the database, the reason for this is to have lightning fast connection and also make it possible to synchronize all users’ data in real time. (Whenever a user makes a change, it would update the server’s copy, and also push that change to the database)
Devlog 12 This devlog is now much more about the server side of things as that has been my focus right now. The way this all works is I have a realtime python server connect to my database and all clients. Clients are put into a realtime channel with all their teammates. When the first user of a team joins, the python server pulls all that team’s scouting data from the database and keeps it in memory. This is to speed up request response times. When a second, third, fourth, so on, user of a team joins, the server instead just gives them the data it has in memory instead of the database. To keep this all in sync, the server updates its version of that group’s data as soon as it is successfully saved to the database. It takes time to set this all up, and the parts of synchronization that I have completed so far are: Competition code changes Setting competitions to custom Adding an individual team Adding teams from API at the start Adding an individual match Adding matches from API at the start I have done one thing for the UI though, and that is finally adding a 404 page. I designed this 404 with the magnifying glass in the middle as the 0.
Devlog 13 ALL. SERVER. SYNC. IS. DONE. I have finished every single piece of work needed to sync the server with the client at all times. I am now getting close to the finish line for this project. I added info toasts for some new things, rather than just showing the success toast for an action a user may not have actually done themselves for things like adding teams and matches. There are now very few tasks left really, they are: Fully localize everything Add French Add mobile UI to summary Add custom competition handling for summary Add a favicon Fix dark mode glitches on sign in/sign up pages
Devlog 14 I have now fully finished the summary team page UI as well. Now there are charts that show the points of each individual match, and then also each individual method of scoring. I also added two new screens for when a team is in first or last, if a team is in first, then there are no teams above to accept/reject, so it shows a little bit of text, if a team is in last, there is no team below to pick, so they have a separate message. I also took the time to add the flags bit beside a team’s name in the summary page too so it can match prescout. With all of the above, I also completed the mobile UI equivalent.
Devlog 15 I have now finished the following tasks: Inviting members Uninviting members Kicking members out of group Most of the UI to do with the member system (only joining a group left) I have also added these improvements to the backend related things: The front end no longer assumes that a user is in a group and instead calls a server endpoint to check first on sign in The front end now connects on loading of the dashboard page instead of loading on the sign in page, which is to fix a current issue where if the user is already signed in but on the landing page, it makes them re-sign in, but soon it will just be a button saying “go to dash” Added UI for loading hydration for dash Made it so the add match/add team buttons were only visible to admins I now pretty much don’t have too much to do, instead it will simply be finishing touches and a little bit of work with the joining system: Make the UI for creating a group Make the UI for joining a group actually work Add rate limiting Sync settings with database Publish
Devlog 16 I just boosted the security of the tool quite a bit, now with rate limiting, aggressive schema validation, and payload size limits. The issue before was that you could spam stuff no problem, but now there is a ton of resistance, and very strict limits. I still have more plans to make it even more secure as well. I also setup meta tags so now supposedly when you send a link depending on the platform, it will show this image and a description as well. An example of some of the new aggressive schema validation is: class QuestionChanges ( StrictModel ): title : Str | None = None type : ( Literal [ " ln " , " sn " , " cb " , " a " , " img " , " n " , " mc " , " sc " , " r " , " st " ] | None ) = None opt : dict [ Annotated [ str , StringConstraints ( pattern = r " ^[0-9]$ " )], Annotated [ str , Field ( max_length = 50 )]] | None = Field ( default = None , max_length = 10 ) minmax : Annotated [ list [ Annotated [ int , Field ( ge =- 99999 , le = 99999 )]], Field ( min_length = 2 , max_length = 2 )] | None = None stars : Annotated [ int , Field ( ge = 0 , le = 10 )] | None = None I setup two different rate limiting systems, these include ones for the websocket, where each individual message type can get its own rate limit (some things should be easily called 500 times in a minute, while others should NOT be called more than 10) @ws_limit ( maxCalls = 500 , window = 60 ) async def handleUpdateTeamQuestion ( @ws_limit ( maxCalls = 8 , window = 60 ) async def handleCompCodeChange ( Window being time in seconds, maxCalls being the max calls in that window. This still needs more testing to make sure edge cases that are actually possible to do using the UI are not blocked by this security, but most regular use seems to not be affected.
Devlog 17 Now that this webapp is in its final stages of completion, I have just been completing todo list items really, these were: Fixing double websocket connect bug Adding update current team for summary to server Added functionality to settings menu Made competitions pull from an actual API instead of a json saved inside the project files Now the main items left are: Path scouting for auto Finish landing page...
|
1792583394.538645
|
1793188194.538645
|
|
42543
|
UwUConverter by @CherryMG | Stardance
|
CherryMG
|
1
|
94.31
|
236
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-03T20:42:34Z", "hours": 12.0, "multiplier": 19.47, "payout": 236, "blessing": "neutral", "text": "How UwUConverter meets the criteria Clear quality-of-life improvement UwUConverter makes file conversion much faster by adding conversion options directly to the Windows right-click menu. Instead of opening a website or separate program, users can right-click a file and choose an output format. Working and usable project The project is already functional and packaged with a Windows installer and uninstaller. It supports video, audio, images, RAW files, documents, and spreadsheets. Effort and thoughtful execution I built the conversion system, format-specific context menus, Windows Registry integration, icon installation, packaged executable, installer, uninstall cleanup, README, license, and automated GitHub builds. Clear problem being solved Most file converters require extra software, uploads, ads, or several manual steps. UwUConverter keeps the process local, private, and available directly in File Explorer. Minimum 3 hours spent The project took well over three hours as you may see due to testing formats, codecs, document libraries, packaging, Registry commands, installer behavior, and release automation. Three out of many major QoL improvements Right-click conversion Convert files without opening another program. Many formats in one tool Supports common media, image, document, and spreadsheet formats. Local and private Files stay on the user’s computer instead of being uploaded. Current release UwUConverter supports formats including MP4, MKV, WebM, MP3, WAV, FLAC, OPUS, PNG, JPG, PDF, DOCX, ODT, TXT, XLSX, XLS, ODS, CSV, and TSV. It also includes a Windows installer, uninstaller, automatic context-menu setup, command-line support, and GitHub release builds. This is only the first ship This is only the first ship. I will add: A GUI More extensions Settings and presets Compression options Video, audio, and image quality controls Batch conversion Better progress information Safer output naming Better format compatibility detection Improved document and spreadsheet support Linux support", "repo": "https://github.com/CherryMakesGames/uwuconverter", "demo": "https://github.com/CherryMakesGames/UwUConverter/releases"}]...
|
[{"post_id": 51924, "ts": "202 [{"post_id": 51924, "ts": "2026-08-21T20:56:53Z", "hours": 2.2078, "text": "Update 22 Modern Context Menu works now! I am going to work on making a better installer and more functionality related to archives"}, {"post_id": 51696, "ts": "2026-08-21T14:55:10Z", "hours": 8.8081, "text": "Update 21 I am about to finish the release as I realized the issue with windows comes with the weird way of creating app certificates and “trusting” them."}, {"post_id": 49845, "ts": "2026-08-18T19:56:43Z", "hours": 5.4158, "text": "Update 20 You know how Windows 11 has this new modern context menu? Yeah! I forgot about that because like any normal person I use the extended one as default:) I now found out that the tool in fact does not show up on the modern context menu, and that is because windows decided to make that a fancy shmancy system which I will let google overview explain: The modern context menu uses a different mechanism: an IExplorerCommand COM shell extension registered through package identity, usually via an MSIX/sparse package. So after reading through all the blabber and a lot of forum posts, I realize! I am fucked! I need to learn how to wrap up some small .dll that will do all the exposing of things to the modern menu. Please, can you all quit windows and go to linux instead so I don’t have to fuck with this?"}, {"post_id": 49235, "ts": "2026-08-17T22:09:57Z", "hours": 0.6669, "text": "Why does this cost money, let me publish my god damn extension"}, {"post_id": 49128, "ts": "2026-08-17T19:21:13Z", "hours": 7.5067, "text": "Update 19 Now, I can finally place my hand on your shoulder, and say I managed to “sort of” get the new feature working! The feature being, browser integration. Now, you may ask yourself, Cherry, what the fuck do you mean browser integration, what are you doing in my house? And to these I say, hear me out, and don’t worry about it. This has been suggested to me and long story short it is a feature that will detect the web browsers that are on your device and allow you to install a connection between them and the app via native messaging so as to be able to for example, right click any image in google images, whether a png, ico or webp, select “UwUConverter Download” and then select from the dropdown of fileformats to download as. This is to furthermore decrease the hassle in daily life file downloads. I plan to also just add a “quick download button” which will download the image as a png no matter what, and an option to set a filename before downloading."}, {"post_id": 47802, "ts": "2026-08-16T00:27:08Z", "hours": 8.6306, "text": "Update 18 I’m mostly writing this update so soon due to devlog limits. I am currently working on implementing browser integration via a browser extension that connects to the application via native messaging allowing you to download files directly in the format you want instead of that pescy .webp or .ico. The reason why I am doing this not “just as an extension” is the fact that this way you can already utilize the tool that you likely already have downloaded (UwUConverter) and support filetypes that are not natively supported by the browser view as that would be a limitation if I had done it without native messaging. I hope to push this soon!"}, {"post_id": 47027, "ts": "2026-08-14T16:54:17Z", "hours": 3.1928, "text": "Update 17 I added batch conversion without requiring to use the entire folder. It took surprisingly a long time to get working with filtering “accidental misselections” like having images and videos together for conversion."}, {"post_id": 46457, "ts": "2026-08-13T17:54:18Z", "hours": 9.1389, "text": "Update 16 I was about to yell and scream and say fuck this project however I finally got an autoupdater working along with support for right click decompression on linux. Added archive decompression to linux Added archive decompression to windows Added cli archive management including compression Added an autoupdater, and manual updates with cli Fixed multiple minor issues related to document conversion Fixed minor issue relating to cli archive management Fixed ssl errors Fixed install errors with certain network types New release avalaible on github in a few minutes Enjoy the product of my suffering:))"}, {"post_id": 45090, "ts": "2026-08-11T11:12:48Z", "hours": 3.2989, "text": "Update 15 Added full support for extraction of compressed archives in rclick menu."}, {"post_id": 44247, "ts": "2026-08-09T21:32:49Z", "hours": 4.1947, "text": "Update 14 I have added 7-zip support for the cli version of the tool, it comes bundled in with the project in their lightweight cli free to use for commercial use version. What is funny, I will not be able to support compressing into rar because: “the actual RAR compression/creation algorithm is controlled by RARLAB. Their license explicitly says the RAR compression algorithm is proprietary and may not be recreated from the UnRAR/WinRAR code without permission” It is such bullshit but okay ig, if that’s needed lol Luckily, I have never ran into someone willingly using .rar. Create + extract/list/test now supports: 7z zip tar gzip / gz bzip2 / bz2 xz wim Extraction/list/test additionally supports: rar cab iso arj lzh lzma rpm dmg xar"}, {"post_id": 43985, "ts": "2026-08-09T13:56:51Z", "hours": 7.2667, "text": "Update 13 Added early 3D model conversion support for OBJ, STL, PLY, and GLB, including CLI and batch conversion. One issue I ran into was that 3D formats don’t all represent the same information. Converting something like a GLB scene to STL can’t preserve materials, textures, object hierarchy, animations, etc. STL is basically just mesh geometry. For now, UwUConverter merges multi-object scenes when exporting to simpler single-mesh formats like STL/PLY and accepts that some scene data will be lost. I am also in the process of expanding the cli system for 7-zip integration with the goal of replacing winrar:)"}, {"post_id": 43332, "ts": "2026-08-08T15:09:27Z", "hours": 6.0364, "text": "Update 12 I am preparing to expand this project massively so I have created a cli version workin both on windows and linux which aims to: Give more freedom with conversion Allow the app to be used in professional workflows Simplify batch image processing And allow for more configuration Potentially implement this as an API"}, {"post_id": 42553, "ts": "2026-08-07T11:34:56Z", "hours": 0.9842, "text": "Update 11 As some people requested, I added .tif and .tiff file formats, it was very simple, just a small pillow library connection."}, {"post_id": 42322, "ts": "2026-08-07T00:08:16Z", "hours": 4.9922, "text": "Update 10 After a lot of struggle, I managed to make batch converting file folders possible. It is not yet multithreaded, however it will be in the future. Since batch conversion might require more arguments, pressing the Convert with UwUConverter button in the rclick menu opens a small UI that gives you a list of possible options. Furthermore, I plan to implement compressing to zips, decompressing etc. soon. Either way, what changed is: Added batch file conversion with custom settings including: File Format, if you are to Replace/Place new files beside/create a new folder, and Which category you convert from (also if you want logs) Fixed Linux issues, rclick menu was not resetting after updates. Created a UI for Batch Conversion."}, {"post_id": 41346, "ts": "2026-08-05T14:35:30Z", "hours": 6.5417, "text": "Update 9 Linux Was Not Just Another Build After getting the Windows version into a much better state, I started working on Linux support. I originally thought this would mostly mean running PyInstaller on Linux and uploading another executable. The actual problem was the right-click menu. On Windows, UwUConverter uses Registry entries to add actions to File Explorer. Linux does not have one equivalent system. The desktop matters, but the file manager matters even more, and different file managers expect completely different integrations. Nautilus, Nemo, and Caja can use executable scripts placed in their own script folders. Dolphin uses KDE service-menu .desktop files instead. Because of that, I could not simply replace winreg and call Linux support finished. The first job was stopping Linux from importing the Windows-only Registry code. I added a platform layer that selects make_key.py on Windows and linux_menu.py on Linux. The next thign was recreating the existing menu structure without maintaining a completely separate Linux conversion list. The Linux integration now reads the same file_types.py definitions and generates the correct scripts or Dolphin service menus from them. Nautilus, Nemo, and Caja were relatively straightforward once the script generator worked. Dolphin needed separate MIME-type mappings, executable .desktop files, KDE-specific submenu fields, and its own installation folder. Compression also caused more trouble than expected. My first presets used fixed quality values, so different options sometimes produced almost identical files. Some videos even became larger after compression because the original was already more efficiently encoded. I changed the system to offer: Lossless optimization Compress by 25% Compress by 50% Compress by 75% The percentage modes aim for a target size based on the source file. Video compression now estimates a bitrate from the source duration and size, while image compression searches for a suitable quality or palette level. What changed Added experimental Linux builds Added a platform-specific menu layer Added Nautilus support for GNOME Added Nemo support for Cinnamon Added Caja support for MATE Added Dolphin service menus for KDE Plasma Added lossless, 25%, 50%, and 75% compression options Expanded the README with Linux instructions Current state Windows is still the main and most tested version. It has the Inno Setup installer, automatic context-menu registration, and uninstall cleanup. Linux can now be built with PyInstaller and can generate integrations for Nautilus, Nemo, Caja, and Dolphin. The next step is testing it on Ubuntu, Linux Mint, Fedora, Arch-based systems such as CachyOS, and multiple desktop environments."}, {"post_id": 40751, "ts": "2026-08-04T14:13:14Z", "hours": 2.2033, "text": "Update 8 This update started because the right-click menu was getting crowded, and compression was one of the biggest missing features. While adding it, I ended up cleaning up a lot more than expected, reorganizing the menus, splitting parts of the converter into separate modules, and making the project easier to maintain. Something I did not mention earlier is that UwUConverter now has a full Windows installer built with Inno Setup. It installs the application into a permanent folder, registers the right-click menu, and includes proper uninstall support. Added four compression options: lossless, 25%, 50%, and 75% Reorganized the right-click menu into clearer conversion and compression categories Improved the README structure and readability Split more of the converter into separate modules Improved the installation and release process"}, {"post_id": 40507, "ts": "2026-08-04T02:50:33Z", "hours": 0.7094, "text": "Update 8 I am trying to get compressing files to work but atp I will have to spend an hour making an actual filetree instead of all in one python file"}, {"post_id": 40442, "ts": "2026-08-03T23:16:53Z", "hours": 0.5164, "text": "What is this project?"}, {"post_id": 40340, "ts": "2026-08-03T19:42:26Z", "hours": 3.7503, "text": "Update 7 Added support for a lot of types of data related to documents etc. .docx .txt .odt .pdf (for documents and sheets) .csv .ods .tsv .xls .xlsx"}, {"post_id": 39736, "ts": "2026-08-02T21:56:00Z", "hours": 0.9539, "text": "Update 6 First Pre-Release of UwUConverter Small summary I have wanted to learn how to do a proper github action automation and well, I’ve got it done! That means now I will periodically release versions of this app now:)"}, {"post_id": 39698, "ts": "2026-08-02T20:42:10Z", "hours": 2.4986, "text": "Update 5 To UwUConverter I added integration of a lot more file formats and conversions Added support for audio formats as .ogg .mp3 .wav .flac Allowed conversion from video to audio Added the ability to convert image formats as .png .jpg .jpeg .webp .ico Added the ability to convert from image to PDF"}, {"post_id": 39497, "ts": "2026-08-02T14:23:15Z", "hours": 0.3783, "text": "Update 4 UwU"}, {"post_id": 39482, "ts": "2026-08-02T13:38:10Z", "hours": 2.0897, "text": "Update 3 The new feature File converters have been added for: .mp4 .mov .kmv .webm .avi All work correctly now, and relatively fast except .webm, but let’s be real, who in their right mind uses .webm."}, {"post_id": 38974, "ts": "2026-08-01T16:24:13Z", "hours": 1.4639, "text": "Update 1 I’ve got some of my first file conversions working Completed my system for attaching path Started my ffmpeg (pyav to be specific) system"}, {"post_id": 38547, "ts": "2026-08-01T00:42:00Z", "hours": 1.0081, "text": "Update 0 Took me an hour to figure out 40 lines of code… I started on my system for creating regedit attachments so when I rclick my file proper conversions show up."}]...
|
Title: UwUConverter by @CherryMG | Stardance
Devl Title: UwUConverter by @CherryMG | Stardance
Devlogs:
Update 0 Took me an hour to figure out 40 lines of code… I started on my system for creating regedit attachments so when I rclick my file proper conversions show up.
Update 1 I’ve got some of my first file conversions working Completed my system for attaching path Started my ffmpeg (pyav to be specific) system
Update 3 The new feature File converters have been added for: .mp4 .mov .kmv .webm .avi All work correctly now, and relatively fast except .webm, but let’s be real, who in their right mind uses .webm.
Update 4 UwU
Update 5 To UwUConverter I added integration of a lot more file formats and conversions Added support for audio formats as .ogg .mp3 .wav .flac Allowed conversion from video to audio Added the ability to convert image formats as .png .jpg .jpeg .webp .ico Added the ability to convert from image to PDF
Update 6 First Pre-Release of UwUConverter Small summary I have wanted to learn how to do a proper github action automation and well, I’ve got it done! That means now I will periodically release versions of this app now:)
Update 7 Added support for a lot of types of data related to documents etc. .docx .txt .odt .pdf (for documents and sheets) .csv .ods .tsv .xls .xlsx
What is this project?
Update 8 I am trying to get compressing files to work but atp I will have to spend an hour making an actual filetree instead of all in one python file
Update 8 This update started because the right-click menu was getting crowded, and compression was one of the biggest missing features. While adding it, I ended up cleaning up a lot more than expected, reorganizing the menus, splitting parts of the converter into separate modules, and making the project easier to maintain. Something I did not mention earlier is that UwUConverter now has a full Windows installer built with Inno Setup. It installs the application into a permanent folder, registers the right-click menu, and includes proper uninstall support. Added four compression options: lossless, 25%, 50%, and 75% Reorganized the right-click menu into clearer conversion and compression categories Improved the README structure and readability Split more of the converter into separate modules Improved the installation and release process
Update 9 Linux Was Not Just Another Build After getting the Windows version into a much better state, I started working on Linux support. I originally thought this would mostly mean running PyInstaller on Linux and uploading another executable. The actual problem was the right-click menu. On Windows, UwUConverter uses Registry entries to add actions to File Explorer. Linux does not have one equivalent system. The desktop matters, but the file manager matters even more, and different file managers expect completely different integrations. Nautilus, Nemo, and Caja can use executable scripts placed in their own script folders. Dolphin uses KDE service-menu .desktop files instead. Because of that, I could not simply replace winreg and call Linux support finished. The first job was stopping Linux from importing the Windows-only Registry code. I added a platform layer that selects make_key.py on Windows and linux_menu.py on Linux. The next thign was recreating the existing menu structure without maintaining a completely separate Linux conversion list. The Linux integration now reads the same file_types.py definitions and generates the correct scripts or Dolphin service menus from them. Nautilus, Nemo, and Caja were relatively straightforward once the script generator worked. Dolphin needed separate MIME-type mappings, executable .desktop files, KDE-specific submenu fields, and its own installation folder. Compression also caused more trouble than expected. My first presets used fixed quality values, so different options sometimes produced almost identical files. Some videos even became larger after compression because the original was already more efficiently encoded. I changed the system to offer: Lossless optimization Compress by 25% Compress by 50% Compress by 75% The percentage modes aim for a target size based on the source file. Video compression now estimates a bitrate from the source duration and size, while image compression searches for a suitable quality or palette level. What changed Added experimental Linux builds Added a platform-specific menu layer Added Nautilus support for GNOME Added Nemo support for Cinnamon Added Caja support for MATE Added Dolphin service menus for KDE Plasma Added lossless, 25%, 50%, and 75% compression options Expanded the README with Linux instructions Current state Windows is still the main and most tested version. It has the Inno Setup installer, automatic context-menu registration, and uninstall cleanup. Linux can now be built with PyInstaller and can generate integrations for Nautilus, Nemo, Caja, and Dolphin. The next step is testing it on Ubuntu, Linux Mint, Fedora, Arch-based systems such as CachyOS, and multiple desktop environments.
Update 10 After a lot of struggle, I managed to make batch converting file folders possible. It is not yet multithreaded, however it will be in the future. Since batch conversion might require more arguments, pressing the Convert with UwUConverter button in the rclick menu opens a small UI that gives you a list of possible options. Furthermore, I plan to implement compressing to zips, decompressing etc. soon. Either way, what changed is: Added batch file conversion with custom settings including: File Format, if you are to Replace/Place new files beside/create a new folder, and Which category you convert from (also if you want logs) Fixed Linux issues, rclick menu was not resetting after updates. Created a UI for Batch Conversion.
Update 11 As some people requested, I added .tif and .tiff file formats, it was very simple, just a small pillow library connection.
Update 12 I am preparing to expand this project massively so I have created a cli version workin both on windows and linux which aims to: Give more freedom with conversion Allow the app to be used in professional workflows Simplify batch image processing And allow for more configuration Potentially implement this as an API
Update 13 Added early 3D model conversion support for OBJ, STL, PLY, and GLB, including CLI and batch conversion. One issue I ran into was that 3D formats don’t all represent the same information. Converting something like a GLB scene to STL can’t preserve materials, textures, object hierarchy, animations, etc. STL is basically just mesh geometry. For now, UwUConverter merges multi-object scenes when exporting to simpler single-mesh formats like STL/PLY and accepts that some scene data will be lost. I am also in the process of expanding the cli system for 7-zip integration with the goal of replacing winrar:)
Update 14 I have added 7-zip support for the cli version of the tool, it comes bundled in with the project in their lightweight cli free to use for commercial use version. What is funny, I will not be able to support compressing into rar because: “the actual RAR compression/creation algorithm is controlled by RARLAB. Their license explicitly says the RAR compression algorithm is proprietary and may not be recreated from the UnRAR/WinRAR code without permission” It is such bullshit but okay ig, if that’s needed lol Luckily, I have never ran into someone willingly using .rar. Create + extract/list/test now supports: 7z zip tar gzip / gz bzip2 / bz2 xz wim Extraction/list/test additionally supports: rar cab iso arj lzh lzma rpm dmg xar
Update 15 Added full support for extraction of compressed archives in rclick menu.
Update 16 I was about to yell and scream and say fuck this project however I finally got an autoupdater working along with support for right click decompression on linux. Added archive decompression to linux Added archive decompression to windows Added cli archive management including compression Added an autoupdater, and manual updates with cli Fixed multiple minor issues related to document conversion Fixed minor issue relating to cli archive management Fixed ssl errors Fixed install errors with certain network types New release avalaible on github in a few minutes Enjoy the product of my suffering:))
Update 17 I added batch conversion without requiring to use the entire folder. It took surprisingly a long time to get working with filtering “accidental misselections” like having images and videos together for conversion.
Update 18 I’m mostly writing this update so soon due to devlog limits. I am currently working on implementing browser integration via a browser extension that connects to the application via native messaging allowing you to download files directly in the format you want instead of that pescy .webp or .ico. The reason why I am doing this not “just as an extension” is the fact that this way you can already utilize the tool that you likely already have downloaded (UwUConverter) and support filetypes that are not natively supported by the browser view as that would be a limitation if I had done it without native messaging. I hope to push this soon!
Update 19 Now, I can finally place my hand on your shoulder, and say I managed to “sort of” get the new feature working! The feature being, browser integration. Now, you may ask yourself, Cherry, what the fuck do you mean browser integration, what are you doing in my house? And to these I say, hear me out, and don’t worry about it. This has been suggested to me and long story short it is a feature that will detect the web browsers that are on your device and allow you to install a connection between them and the app via native messaging so as to be able to for example, right click any image in google images, whether a png, ico or webp, select “UwUConverter Download” and then select from the dropdown of fileformats to download as. This is to furthermore decrease the hassle in daily life file downloads. I plan to also just add a “quick download button” which will download the image as a png no matter what, and an option to set a filename before downloading.
Why does this cost money, let me publish my god damn extension
Update 20 You know how Windows 11 has this new modern context menu? Yeah! I forgot about that because like any normal person I use the extended one as default:) I now found out that the tool in fact does not show up on the modern context menu, and that is because windows decided to make that a fancy shmancy system which I will let google overview explain: The modern context menu uses a different mechanism: an IExplorerCommand COM shell extension registered through package identity, usually via an MSIX/sparse package. So after reading through all the blabber and a lot of forum posts, I realize! I am fucked! I need to learn how to wrap up some small .dll that will do all the exposing of things to the modern menu. Please, can you all quit windows and go to linux instead so I don’t have to fuck with this?
Update 21 I am about to finish the release as I realized the issue with windows comes with the weird way of creating app certificates and “trusting” them.
Update 22 Modern Context Menu works now! I am going to work on making a better installer and more functionality related to archives
Ships:
How UwUConverter meets the criteria Clear quality-of-life improvement UwUConverter makes file conversion much faster by adding conversion options directly to the Windows right-click menu. Instead of opening a website or separate program, users can right-click a file and choose an output format. Working and usable project The project is already functional and packaged with a Windows installer and uninstaller. It supports video, audio, images, RAW files, documents, and spreadsheets. Effort and thoughtful execution I built the conversion system, format-specific context menus, Windows Registry integration, icon installation, packaged executable, installer, uninstall cleanup, README, license, and automated GitHub builds. Clear problem being solved Most file converters require extra software, uploads, ads, or several manual steps. UwUConverter keeps the process local, private, and available directly in File Explorer. Minimum 3 hours spent The project took well over three hours as you may see due to testing formats, codecs, document libraries, packaging, Registry commands, installer behavior, and release automation. Three out of many major QoL improvements Right-click conversion Convert files without opening another program. Many formats in one tool Supports common media, image, document, and spreadsheet formats. Local and private Files stay on the user’s computer instead of being uploaded. Current release UwUConverter supports formats including MP4, MKV, WebM, MP3, WAV, FLAC, OPUS, PNG, JPG, PDF, DOCX, ODT, TXT, XLSX, XLS, ODS, CSV, and TSV. It also includes a Windows installer, uninstaller, automatic context-menu setup, command-line support, and GitHub release builds. This is only the first ship This is only the first ship. I will add: A GUI More extensions Settings and presets Compression options Video, audio, and image quality controls Batch conversion Better progress information Safer output naming Better format compatibility detection Improved document and spreadsheet support Linux support...
|
1792878778.9386644
|
1793742778.9386644
|
|
14390
|
Pygame Platformer by @nishchaybhudia | Stardance
|
nishchaybhudia
|
1
|
94.0
|
850
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T14:16:32Z", "hours": 94.0, "multiplier": 9.02, "payout": 850, "blessing": "neutral", "text": "What I made: an “impossible” platformer in Python/pygame — 4 characters each with their own move (dash, wall cling, ground pound, frog leap), 2 player mode, 5 levels, and traps like saws, a sliding rock head and a swinging spiked ball. Packaged it so it also runs in a browser through GitHub Pages, not just as a local script. What was challenging: making the abilities feel actually different from each other but still fair took a lot of back and forth, and the web version being randomly laggy took a while to actually track down instead of just guessing. Turned out it was checking collisions against every object in the whole level every single frame instead of just the stuff near the player, plus redrawing the background from scratch 238 times a frame. What I’m proud of: getting it running properly in a browser instead of just as a local file makes it feel like an actual finished thing rather than a script sitting on my laptop. It’s still a bit laggy on the GitHub Pages version, but running it locally on my own machine there’s no lag at all, so the game itself is solid — it’s specifically the web packaging that still needs work.", "repo": "https://github.com/Hidden-Ghost-123/Impossible-Platformer", "demo": "https://hidden-ghost-123.github.io/Impossible-Platformer/"}]...
|
[{"post_id": 30143, "ts": "202 [{"post_id": 30143, "ts": "2026-07-17T14:12:03Z", "hours": 0.0, "text": "i worked on switching from itch.io to the github web to host my game"}, {"post_id": 30081, "ts": "2026-07-17T11:48:40Z", "hours": 2.0, "text": "i turned my code into a format that can be uploaded onto itch.io so i can begin getting ready for shipping this project … i then lowered the spiked swinging balls so its possible to jump across the gap in level 5 when finsihing the level … have a look !!"}, {"post_id": 29748, "ts": "2026-07-16T20:49:48Z", "hours": 2.0, "text": "i fixed placement of traps and enemies to make the levels dooable and also make the levels harder … im also planning to add and have started to add different level screens , so each level takes you to a different screen each time you complete it … also i made it so that you have to collect 40% of the coins available in each level to move onto the next level so dont be skipping coins … i also made all the characters have double jump because i felt bad for all you guys that will be playing the game …"}, {"post_id": 29437, "ts": "2026-07-16T11:48:28Z", "hours": 6.0, "text": "i have nearly finished the game !!! We’re getting really close to finishing the game now! This session was focused on adding the final gameplay features before polishing everything up.The biggest addition was the 2-player system, which is now fully implemented. It still needs a few tweaks and bug fixes, but the core mechanics are working well and make the game much more enjoyable.I also added a sprite selection screen, allowing players to choose their character before starting. Each sprite now has its own unique special ability, making every character feel different and encouraging players to experiment with different playstyles.Content-wise, I created two brand new levels, giving players more challenges to complete. To make these levels more interesting, I also introduced two new trap types along with another enemy variant, adding more variety and requiring players to think more carefully about how they progress through each stage.At this point, the game is almost complete. The remaining work is mainly polishing, balancing gameplay, fixing bugs, and making sure everything feels smooth before the final release."}, {"post_id": 29080, "ts": "2026-07-15T18:49:01Z", "hours": 1.0, "text": "i have fully gone over each level refining the placement of each and every object … i then played the game multiple times just to make sure it is actually possible …. i set up the code so that i can begin adding the abilities for each new characer … i then made sure there are no bugs so that when the second player is added nothing silly happens because there will be more inputs and more possibility of things going pear shaped … i know this is a boring devlog but it is neccesary … please come back for the next one it will be good .. i promise …"}, {"post_id": 28971, "ts": "2026-07-15T16:19:35Z", "hours": 4.0, "text": "ok … lets get this going … today i done a full code run thru as i could not find out why the player was still being immune to the spikes when double jumping .. but its now fixed .. not suprising for a genuis like me lol …. anyways - then i added yet ANOTHER level … making it the hardest one yet which includes all the traps and enemies and hard to reach coins .. i then implemented a theash hold which makes it so you have to get a certain amount of coins befroet the checkpoint activates … then i added a sprite selector to make it so that the player can choose the sprite and each sprite has a special move … still not yet fully decided the moves but they will be decided soon - hopefully next devloog … then i went ahead and tried to add a 2 player mode where 2 players can play on the same keyboard (player 1 : up , left , right ) (player 2 : w, a ,d) … there are a total of 6 enemies to face throughout … lets get this going .. we are nearly there at he end …. woooooooooooooooohooooo"}, {"post_id": 28530, "ts": "2026-07-14T20:49:52Z", "hours": 1.0, "text": "i finished working on the level i was working on in the previous devlog . i then came across a major issue … if i spam doublejump on spikes - i dont die … like i become superman - not good at all … i had to fix this , and i fixed it to have a longer cooldown when using you double jump so , basically you have enough time for your sprite to hit the trap …"}, {"post_id": 28441, "ts": "2026-07-14T18:04:24Z", "hours": 3.0, "text": "i feel like a real dev that spends hours in the cave and comes out with 2-3 new features lol … today i worked on yet another level and added some new respawning and eliminating animations … i also animated the coins and added some secret special easter eggs within the game … you will need to wait for the game to be fully developed before finding out … again - any other features be sure to comment below on what features to add ."}, {"post_id": 27784, "ts": "2026-07-13T17:18:47Z", "hours": 1.0, "text": "i worked on implementing the new traps i mensioned in the previous devlog … i then continued adding a new level … this then led me to an idea of a level selector so you can replay levels if you wanted to . - genuis …. which i started to implement … thanks ;)"}, {"post_id": 27621, "ts": "2026-07-13T11:24:44Z", "hours": 6.0, "text": "i worked on creating a token/coin that you collect while trying to complete the level , i am debating wether to have a coin threthhold . so if you dont collect x amount of coints in the level you cannot activate the checkpoint … i also worked on a reset character reset game , resume interface where you can click esc to pause then you have the 3 options … i then created more sprites for the user to select what chatacter they want to play as … i am looking at adding different powers for each character in the next devlog … i added another level and i added smarter and more enemies that come to delete you off the game … lol … let me know what else i should add !!!….also i almost forgot , i added some new traps that i havnt put in the game yet but i have added the backend logic for - cant wait … thanks again!!"}, {"post_id": 27061, "ts": "2026-07-12T08:34:30Z", "hours": 4.0, "text": "Another long session finished. This time it was all about the little details that make a game actually feel good to play. I spent most of the time polishing existing features rather than adding new ones. I adjusted movement, tweaked animations, cleaned up the UI, and made small improvements throughout the game that most players probably won’t even notice—but together they make a huge difference.I also tracked down a few more bugs that somehow managed to sneak in. There were some visual glitches, a couple of edge cases where objects weren’t behaving correctly, and a few issues with level transitions. After a lot of testing (and breaking the game several times), everything is now much more stable.It’s funny because I barely added any “new” content today, but the game honestly feels so much smoother than it did this morning. I guess this is what real game development is like—hours of polishing for improvements that are hard to see but easy to feel.Anyway… that’s another 5 hours gone. Time to call it a day. Thanks for watching, and I’ll see you in the next devlog!"}, {"post_id": 26162, "ts": "2026-07-10T19:59:54Z", "hours": 5.0, "text": "i5 hours later … and this devlog is mainly focused on polishing, fixing bugs and making the game feel much smoother. First, I spent a lot of time going through the code and cleaning up some problems that were starting to appear as the game got bigger. I improved the overall efficiency of the game by removing unnecessary checks, optimising some of the update loops and making sure objects were not being processed when they did not need to be. This should help the game run better, especially when more enemies and level elements are added later. …. Next, I worked on fixing a bunch of smaller bugs that were affecting gameplay. I fixed some collision issues where the player could sometimes get stuck inside blocks, improved the respawn system so the player resets properly every time, and fixed some problems with the enemy behaviour after the player dies. There were also some annoying issues with jumping and movement that caused inconsistent results, so I spent time making the controls feel more reliable. …. WOW , i feel like a real game dev working ovetime lol …. Thank you , see you in the next one . that was a mouthful …"}, {"post_id": 25962, "ts": "2026-07-10T14:24:35Z", "hours": 6.0, "text": "wow this is going to be a big devlog ! …. first i created a homescreen that players can log in / sign up for future scoreboard featuers …. and possible 2 player or singleplayer selector ….. next i began adding sound effects to the game - like when you die and respawn and jump - there is a delay but i will fix that in the next devlog …. then i made the enemy smarter and i decided to allow it to pass through block like a ghost …. the only block it doesnt pass through is you so it can elimiate you when its hitbox crosses your hitbox …. i then fixed some major respawning and hit box bugs that come about after double jumping which took FOREVER ….i finished completing level 2 which i have to say , well done to the creator of the game lol because this game is going to be epic !!! , see you in the next one !"}, {"post_id": 25467, "ts": "2026-07-09T19:06:53Z", "hours": 1.0, "text": "i worked on improving the self moving enemy … im still deciding wether to give it the ability ro move through objects or if i should have it move like a nomral player … i managed to get it to float so it can easily move terrain and it has got immunity to traps so it can even follow you through traps … but (theres always a but) you can easily get rid of the enemy by jumping over it from left to right a few times …. i want to fix this in the next devlog …"}, {"post_id": 25409, "ts": "2026-07-09T17:46:48Z", "hours": 4.0, "text": "i worked on creating the program that works in the background … it is a program that powers and gives the enemy its own brain… it follows the enemy (YOU!) , i am working on making it smarter and faster - its a bit dopey at the moment :( ….. the enemy kills you just by you touching it or it touching you - still working on that (give it some time !!) ….. i then worked on making the second level (i made it hard for you , yes YOU) …. hopefully we have a little enemy running around next devlog ?!"}, {"post_id": 25212, "ts": "2026-07-09T10:19:56Z", "hours": 1.0, "text": "i fully fixed the trampoline bug that gives you immunity to traps after jumping on it [i actually did now :) ] …. i then had some trouble with making more objects with the new layout of the code …. i then got around that and began tweaking the first level and planning the second level . i then began addind a enemy block - the green one in the image , and a new spikey enemy which follows you like a mario bloomba . i havnt added the logic for this but i will hope to add it in the next devlog :-)"}, {"post_id": 24783, "ts": "2026-07-08T16:08:59Z", "hours": 2.0, "text": "i worked on fixing the oop problem i had in the previous devlog … i then changed the whole structure of the code to make it easy to read and add changes in future devlogs …. i then added the animation for the trampolines and tested them … they change your gravity when you jump on them making it like a trampoline u jump on … there is a image attached of me testing one over a floor of spikes … the animation works perfectly now …. and before u would survive afrer falling on spikes when coming off the trampoline for some reason , i have that fixed now …… i hope ;D"}, {"post_id": 24663, "ts": "2026-07-08T12:11:27Z", "hours": 1.0, "text": "i finished creating the first level … and the checkpoint actually works !!!, . i then had a problem with the creation of the objects , i decided to change the way the objects are created from lists into OOP , so classed and objects , this then broke my entire game :( …. i began fixing this and will hopefully be finished by the next devlog …. ;)"}, {"post_id": 24318, "ts": "2026-07-07T20:28:29Z", "hours": 2.0, "text": "i worked on adding more the very first level , i made it decently simple with a hint* double jump involved … i fixed the saw animation as it looked like it was a glitchy looped gif but now a smooth continuos animation …. i added a wall of blocks so you cannot go the other way …. i am hoping to replace this with a wall of invisible blocks which you cannot pass instead of visible blocks …. i also want the platform to extend on for many more blocks which i added which allows me to create more levels in sequence . next i hope to finish level 2 so i have 2 fully working levels to play . the end goal is “impossible” levels which are close to impossible to complete and keep sane while playing them"}, {"post_id": 24014, "ts": "2026-07-07T09:24:56Z", "hours": 1.0, "text": "i worked on fixing major respawning bugs , the character respawns back where it is supposed to respawn but the character sprite disppears , this was really hard and long to debug . i also created the animation for the saw trap which allows the saw blade to spin which makes the game more realsitic and enjoyable to play"}, {"post_id": 23671, "ts": "2026-07-06T19:40:44Z", "hours": 4.0, "text": "i continued creating the level … i added 2 paths , a harder bottom path with required speed and accuracy or a easier top path which is easier but requires patience …. i am yet to finish the top layer on the level as i need to code the logic and animation for the trampoline which will be the core for most of the game … it gives you a jump boost + float which allows you to travel quite some distance when jumping off of it . the flame of the fire wasnt dealing damage so i fixed that by updating its hitbox . i then added a standing player animation so it moves up and down as if its breathing when idle …."}, {"post_id": 23498, "ts": "2026-07-06T14:52:42Z", "hours": 8.0, "text": "i worked on a log in / sign up screen which authenticates users before they play the game to allow for future add ons such as leaderboards etc etc … i then added trap logic and a checkpoint flag which i didnt quite get to work … hopefully i get it to work in the next devlog , this will allow me to create lots of levels … i also added spikes with spike logic .. so if the player touches any part of the spikes the spirte detects it and the character respawns to the latest touches checkpoint … i later want to add lives so if u fail more than 3 times you respawn right back to the very beginning …. i also added 2 more traps that are spinning saws and a fire … which opperate the same way spikes do but are of different dimentions - the fire is smaller and the saw is bigger and wider … a mixture of these will hopefully begin to create a really hard level to completre … i also added double jump for the character / fixed double jump …. to stop players from abbusing double jump there is a small cooldown for double jump so its not exploited …. for the next devlog i would like to create a working level with a checkpoit that works on the other end ."}, {"post_id": 12434, "ts": "2026-06-20T09:23:44Z", "hours": 1.0, "text": "I started by creating a new object type called Checkpoint. Unlike blocks and traps, checkpoints don’t damage the player. Instead they: Detect collision with the player Store a respawn location Become “activated” when touched This is the first non-hazard interactive object in the game. Added Respawn Position Variable Previously the player always returned to:"}, {"post_id": 11898, "ts": "2026-06-19T12:00:48Z", "hours": 1.0, "text": "Added Collision-Based Damage System Until now, traps were purely visual. The player could walk through fire without consequence. I extended the collision system so that objects can now affect the player based on their name property. This is the first time the game starts behaving like an actual platformer. Introduced make_hit() Logic Instead of instantly killing the player, I added a hit state system: Player gets flagged as hit Small delay before respawn logic runs Allows future animation / sound integration This also prepares the system for: spikes saws lava checkpoints First Basic Death/Respawn Logic At this stage, respawning is still very simple: If player touches hazard → reset position No checkpoint system yet No lives system yet But this is the foundation for it. Problems Encountered Problem 1: Player kept dying multiple times per frame Cause Collision was being detected continuously every loop tick. Fix Added a simple hit lock"}, {"post_id": 11842, "ts": "2026-06-19T08:41:11Z", "hours": 1.0, "text": "Now that the level system is working, the next logical feature would be the first hazard. At this point in development, most students don’t immediately build fire, saws, spikes, trampolines, checkpoints, menus, sounds, etc. Instead, they usually start by experimenting with one animated trap to learn how animated world objects work. The fire trap is the most likely candidate because it uses the same sprite-sheet system you’ve already built for the player."}, {"post_id": 10676, "ts": "2026-06-17T15:13:38Z", "hours": 1.0, "text": "After implementing the camera system, I noticed that the level still looked very basic because platforms were being drawn as plain black rectangles. During this development session I focused on creating a more professional level system using actual game assets. I created a general-purpose Object class that could be used as the foundation for future game elements such as blocks, traps, checkpoints, and interactive objects. This significantly improved the organisation of the project and reduced code duplication. I then created a Block class which inherits from the Object class. Instead of drawing rectangles, blocks now load an image from the terrain sprite sheet. This made the level look much closer to the final game. To support this, I also created a helper function called get_block() which extracts a specific terrain tile from the terrain sprite sheet and scales it appropriately."}, {"post_id": 10569, "ts": "2026-06-17T11:30:01Z", "hours": 1.0, "text": "up until this point the game world was effectively limited to a single screen. While the player could move and jump on platforms, the entire level was always visible at once. To fix this and move closer to a real platformer, I implemented a camera system using an offset value (offset_x). This allows the player to move through a much larger world while the screen follows them smoothly. Instead of drawing everything at fixed positions, all objects are now rendered relative to the camera position. This is one of the most important structural changes in the entire project, because it transforms the game from a “static scene” into a scrolling level. Problems Encountered Problem 1: Everything moved incorrectly after adding camera After introducing offset_x, all objects appeared shifted or misaligned. Cause: Objects were still being drawn using absolute coordinates. Fix: Updated draw calls to subtract camera offset:"}, {"post_id": 10064, "ts": "2026-06-16T17:20:33Z", "hours": 2.0, "text": "focused on expanding the system into a full animation framework. Instead of using one image, I implemented a sprite sheet loader that splits images into multiple frames. This allows the character to animate smoothly while running, jumping, and idling. A major improvement in this session was introducing direction-based sprite flipping, which means the same animation can be reused for left and right movement without duplicating assets. I also started restructuring the Player class so that animation is handled separately from movement logic. This makes the code much more scalable for future additions like enemies and traps. Problems Encountered Problem 1: Sprite sheets not splitting correctly At first, animations were broken because frames were not being sliced properly. Cause: Incorrect calculation of sprite width division."}, {"post_id": 9840, "ts": "2026-06-16T09:28:01Z", "hours": 1.0, "text": "I spent this development session researching sprite sheets and learning how animations are typically handled in platformer games. I downloaded the character assets and experimented with loading images into Pygame. To avoid repeating code for every animation, I created a function that loads images from a folder and stores them in a dictionary. This will eventually become the foundation of the final load_sprite_sheets() function used throughout the project. I also replaced the rectangle with a single idle sprite. At this stage there are no animations yet—the player simply displays one image. Problems Encountered Problem 1: Images not loading When first attempting to load the sprite, Pygame returned a file path error. Cause The image folder was not in the same location as the Python file. Fix Used the os.path.join() function to create file paths more reliably."}, {"post_id": 9481, "ts": "2026-06-15T20:42:32Z", "hours": 1.0, "text": "introducing platform objects. Instead of relying only on the bottom of the screen as a floor, I created a simple Block system. Each block represents a solid object in the world that the player can stand on. This required restructuring collision logic so that the player is no longer only interacting with the screen boundary, but with multiple objects. I also started separating the world into a list of objects, which is an important step toward building full levels later. Key Improvements Made …: Added Block System A simple block class was introduced to represent platforms. Object List System Instead of hardcoding collisions, all blocks are stored in a list so the level can be expanded easily. Basic Collision Detection A simple collision check was added to stop the player falling through platforms. Problems Encountered … Problem : Player clipping through platforms When first adding blocks, the player would sometimes fall through them or “stick” inside them. Cause: Collision was only being checked after movement, not corrected properly. Fix: Added positional correction after detecting collision:"}, {"post_id": 9250, "ts": "2026-06-15T15:11:22Z", "hours": 1.0, "text": "started turning the simple movement demo into a real platformer by adding physics. The first majour feature added was gravity. Instead of the player staying in the air after a jump or falling instantly at a fixed speed, I introduced a vertical velocity system. This allows the player to accelerate downwards over time, making movement feel more natural. After implementing gravity, i added a jump system. When the player presses the space bar or up arrow key, an upward velocity is applied. Gravity then gradually pulls the player back down. However, after adding jumping and gravity, the player was able to fall infinitely off the screen. To fix this, I implemented a basic floor collision system using the bottom of the screen as a temporary ground. This ensured the player always lands correctly and resets vertical velocity when touching the ground."}, {"post_id": 9204, "ts": "2026-06-15T13:33:17Z", "hours": 1.0, "text": "focused on making the game interactive by allowing the player to move around the screen. I first created a player velocity constant which controls the movement speed of the player. Using a constant means the speed can easily be adjusted later without modifying multiple parts of the code. I then implemented keyboard input detection using pygame.key.get_pressed(). This allowed the left and right arrow keys to move the player across the screen. To improve code organisation I added movement methods inside the Player class rather than directly modifying the player’s position inside the main game loop. This makes the program easier to maintain as more functionality is added later."}, {"post_id": 6761, "ts": "2026-06-11T10:15:09Z", "hours": 1.0, "text": "Objectives : Add FPS control Create project constants Improve game loop structure Add a background colour Prepare the codebase for future player development Progress. After successfully creating the game window, (after a long long time) I focused on improving the structure of the program. A frame rate limit was added using “ pygame.time.Clock() “to ensure the game runs consistently on different computers. I created constants for the screen width, screen height and fps rather than hard coding values throughout the program. This will make future changes easier. I also replaced the plain black screen with a temporary sky blue background. This makes the project feel more like a game environment and provides a better foundation for testing future features. Although no player has been added yet, the game loop is now stable and organised enough to begin implementing movement systems. Problems Encountered Initially the game was running as fast as the computer would allow, causing unnecessary CPU usage. Adding FPS control fixed this issue and ensures consistent performance. Testing Performed Verified the game window opens correctly. Verified the frame rate remains stable at 60 fps. Confirmed the window closes without errors. Next Steps Create the player object. Draw the player on screen. Begin implementing horizontal movement using keyboard controls."}, {"post_id": 6405, "ts": "2026-06-10T19:33:44Z", "hours": 0.0, "text": "I started the project by setting up the basic Pygame environment. The first goal was simply to get a window appearing on screen. After importing Pygame and initialising it, I created a 1000×800 game window and added a title to the window. I then created a basic game loop which keeps the program running until the player closes the window. At this stage there are no graphics, characters or levels. The project currently only displays a blank screen. Problems Encountered No major issues were encountered during this stage. The main focus was confirming that Pygame was installed correctly and that the game window could be opened and closed safely."}]...
|
Title: Pygame Platformer by @nishchaybhudia | Star Title: Pygame Platformer by @nishchaybhudia | Stardance
Devlogs:
I started the project by setting up the basic Pygame environment. The first goal was simply to get a window appearing on screen. After importing Pygame and initialising it, I created a 1000×800 game window and added a title to the window. I then created a basic game loop which keeps the program running until the player closes the window. At this stage there are no graphics, characters or levels. The project currently only displays a blank screen. Problems Encountered No major issues were encountered during this stage. The main focus was confirming that Pygame was installed correctly and that the game window could be opened and closed safely.
Objectives : Add FPS control Create project constants Improve game loop structure Add a background colour Prepare the codebase for future player development Progress. After successfully creating the game window, (after a long long time) I focused on improving the structure of the program. A frame rate limit was added using “ pygame.time.Clock() “to ensure the game runs consistently on different computers. I created constants for the screen width, screen height and fps rather than hard coding values throughout the program. This will make future changes easier. I also replaced the plain black screen with a temporary sky blue background. This makes the project feel more like a game environment and provides a better foundation for testing future features. Although no player has been added yet, the game loop is now stable and organised enough to begin implementing movement systems. Problems Encountered Initially the game was running as fast as the computer would allow, causing unnecessary CPU usage. Adding FPS control fixed this issue and ensures consistent performance. Testing Performed Verified the game window opens correctly. Verified the frame rate remains stable at 60 fps. Confirmed the window closes without errors. Next Steps Create the player object. Draw the player on screen. Begin implementing horizontal movement using keyboard controls.
focused on making the game interactive by allowing the player to move around the screen. I first created a player velocity constant which controls the movement speed of the player. Using a constant means the speed can easily be adjusted later without modifying multiple parts of the code. I then implemented keyboard input detection using pygame.key.get_pressed(). This allowed the left and right arrow keys to move the player across the screen. To improve code organisation I added movement methods inside the Player class rather than directly modifying the player’s position inside the main game loop. This makes the program easier to maintain as more functionality is added later.
started turning the simple movement demo into a real platformer by adding physics. The first majour feature added was gravity. Instead of the player staying in the air after a jump or falling instantly at a fixed speed, I introduced a vertical velocity system. This allows the player to accelerate downwards over time, making movement feel more natural. After implementing gravity, i added a jump system. When the player presses the space bar or up arrow key, an upward velocity is applied. Gravity then gradually pulls the player back down. However, after adding jumping and gravity, the player was able to fall infinitely off the screen. To fix this, I implemented a basic floor collision system using the bottom of the screen as a temporary ground. This ensured the player always lands correctly and resets vertical velocity when touching the ground.
introducing platform objects. Instead of relying only on the bottom of the screen as a floor, I created a simple Block system. Each block represents a solid object in the world that the player can stand on. This required restructuring collision logic so that the player is no longer only interacting with the screen boundary, but with multiple objects. I also started separating the world into a list of objects, which is an important step toward building full levels later. Key Improvements Made …: Added Block System A simple block class was introduced to represent platforms. Object List System Instead of hardcoding collisions, all blocks are stored in a list so the level can be expanded easily. Basic Collision Detection A simple collision check was added to stop the player falling through platforms. Problems Encountered … Problem : Player clipping through platforms When first adding blocks, the player would sometimes fall through them or “stick” inside them. Cause: Collision was only being checked after movement, not corrected properly. Fix: Added positional correction after detecting collision:
I spent this development session researching sprite sheets and learning how animations are typically handled in platformer games. I downloaded the character assets and experimented with loading images into Pygame. To avoid repeating code for every animation, I created a function that loads images from a folder and stores them in a dictionary. This will eventually become the foundation of the final load_sprite_sheets() function used throughout the project. I also replaced the rectangle with a single idle sprite. At this stage there are no animations yet—the player simply displays one image. Problems Encountered Problem 1: Images not loading When first attempting to load the sprite, Pygame returned a file path error. Cause The image folder was not in the same location as the Python file. Fix Used the os.path.join() function to create file paths more reliably.
focused on expanding the system into a full animation framework. Instead of using one image, I implemented a sprite sheet loader that splits images into multiple frames. This allows the character to animate smoothly while running, jumping, and idling. A major improvement in this session was introducing direction-based sprite flipping, which means the same animation can be reused for left and right movement without duplicating assets. I also started restructuring the Player class so that animation is handled separately from movement logic. This makes the code much more scalable for future additions like enemies and traps. Problems Encountered Problem 1: Sprite sheets not splitting correctly At first, animations were broken because frames were not being sliced properly. Cause: Incorrect calculation of sprite width division.
up until this point the game world was effectively limited to a single screen. While the player could move and jump on platforms, the entire level was always visible at once. To fix this and move closer to a real platformer, I implemented a camera system using an offset value (offset_x). This allows the player to move through a much larger world while the screen follows them smoothly. Instead of drawing everything at fixed positions, all objects are now rendered relative to the camera position. This is one of the most important structural changes in the entire project, because it transforms the game from a “static scene” into a scrolling level. Problems Encountered Problem 1: Everything moved incorrectly after adding camera After introducing offset_x, all objects appeared shifted or misaligned. Cause: Objects were still being drawn using absolute coordinates. Fix: Updated draw calls to subtract camera offset:
After implementing the camera system, I noticed that the level still looked very basic because platforms were being drawn as plain black rectangles. During this development session I focused on creating a more professional level system using actual game assets. I created a general-purpose Object class that could be used as the foundation for future game elements such as blocks, traps, checkpoints, and interactive objects. This significantly improved the organisation of the project and reduced code duplication. I then created a Block class which inherits from the Object class. Instead of drawing rectangles, blocks now load an image from the terrain sprite sheet. This made the level look much closer to the final game. To support this, I also created a helper function called get_block() which extracts a specific terrain tile from the terrain sprite sheet and scales it appropriately.
Now that the level system is working, the next logical feature would be the first hazard. At this point in development, most students don’t immediately build fire, saws, spikes, trampolines, checkpoints, menus, sounds, etc. Instead, they usually start by experimenting with one animated trap to learn how animated world objects work. The fire trap is the most likely candidate because it uses the same sprite-sheet system you’ve already built for the player.
Added Collision-Based Damage System Until now, traps were purely visual. The player could walk through fire without consequence. I extended the collision system so that objects can now affect the player based on their name property. This is the first time the game starts behaving like an actual platformer. Introduced make_hit() Logic Instead of instantly killing the player, I added a hit state system: Player gets flagged as hit Small delay before respawn logic runs Allows future animation / sound integration This also prepares the system for: spikes saws lava checkpoints First Basic Death/Respawn Logic At this stage, respawning is still very simple: If player touches hazard → reset position No checkpoint system yet No lives system yet But this is the foundation for it. Problems Encountered Problem 1: Player kept dying multiple times per frame Cause Collision was being detected continuously every loop tick. Fix Added a simple hit lock
I started by creating a new object type called Checkpoint. Unlike blocks and traps, checkpoints don’t damage the player. Instead they: Detect collision with the player Store a respawn location Become “activated” when touched This is the first non-hazard interactive object in the game. Added Respawn Position Variable Previously the player always returned to:
i worked on a log in / sign up screen which authenticates users before they play the game to allow for future add ons such as leaderboards etc etc … i then added trap logic and a checkpoint flag which i didnt quite get to work … hopefully i get it to work in the next devlog , this will allow me to create lots of levels … i also added spikes with spike logic .. so if the player touches any part of the spikes the spirte detects it and the character respawns to the latest touches checkpoint … i later want to add lives so if u fail more than 3 times you respawn right back to the very beginning …. i also added 2 more traps that are spinning saws and a fire … which opperate the same way spikes do but are of different dimentions - the fire is smaller and the saw is bigger and wider … a mixture of these will hopefully begin to create a really hard level to completre … i also added double jump for the character / fixed double jump …. to stop players from abbusing double jump there is a small cooldown for double jump so its not exploited …. for the next devlog i would like to create a working level with a checkpoit that works on the other end .
i continued creating the level … i added 2 paths , a harder bottom path with required speed and accuracy or a easier top path which is easier but requires patience …. i am yet to finish the top layer on the level as i need to code the logic and animation for the trampoline which will be the core for most of the game … it gives you a jump boost + float which allows you to travel quite some distance when jumping off of it . the flame of the fire wasnt dealing damage so i fixed that by updating its hitbox . i then added a standing player animation so it moves up and down as if its breathing when idle ….
i worked on fixing major respawning bugs , the character respawns back where it is supposed to respawn but the character sprite disppears , this was really hard and long to debug . i also created the animation for the saw trap which allows the saw blade to spin which makes the game more realsitic and enjoyable to play
i worked on adding more the very first level , i made it decently simple with a hint* double jump involved … i fixed the saw animation as it looked like it was a glitchy looped gif but now a smooth continuos animation …. i added a wall of blocks so you cannot go the other way …. i am hoping to replace this with a wall of invisible blocks which you cannot pass instead of visible blocks …. i also want the platform to extend on for many more blocks which i added which allows me to create more levels in sequence . next i hope to finish level 2 so i have 2 fully working levels to play . the end goal is “impossible” levels which are close to impossible to complete and keep sane while playing them
i finished creating the first level … and the checkpoint actually works !!!, . i then had a problem with the creation of the objects , i decided to change the way the objects are created from lists into OOP , so classed and objects , this then broke my entire game :( …. i began fixing this and will hopefully be finished by the next devlog …. ;)
i worked on fixing the oop problem i had in the previous devlog … i then changed the whole structure of the code to make it easy to read and add changes in future devlogs …. i then added the animation for the trampolines and tested them … they change your gravity when you jump on them making it like a trampoline u jump on … there is a image attached of me testing one over a floor of spikes … the animation works perfectly now …. and before u would survive afrer falling on spikes when coming off the trampoline for some reason , i have that fixed now …… i hope ;D
i fully fixed the trampoline bug that gives you immunity to traps after jumping on it [i actually did now :) ] …. i then had some trouble with making more objects with the new layout of the code …. i then got around that and began tweaking the first level and planning the second level . i then began addind a enemy block - the green one in the image , and a new spikey enemy which follows you like a mario bloomba . i havnt added the logic for this but i will hope to add it in the next devlog :-)
i worked on creating the program that works in the background … it is a program that powers and gives the enemy its own brain… it follows the enemy (YOU!) , i am working on making it smarter and faster - its a bit dopey at the moment :( ….. the enemy kills you just by you touching it or it touching you - still working on that (give it some time !!) ….. i then worked on making the second level (i made it hard for you , yes YOU) …. hopefully we have a little enemy running around next devlog ?!
i worked on improving the self moving enemy … im still deciding wether to give it the ability ro move through objects or if i should have it move like a nomral player … i managed to get it to float so it can easily move terrain and it has got immunity to traps so it can even follow you through traps … but (theres always a but) you can easily get rid of the enemy by jumping over it from left to right a few times …. i want to fix this in the next devlog …
wow this is going to be a big devlog ! …. first i created a homescreen that players can log in / sign up for future scoreboard featuers …. and possible 2 player or singleplayer selector ….. next i began adding sound effects to the game - like when you die and respawn and jump - there is a delay but i will fix that in the next devlog …. then i made the enemy smarter and i decided to allow it to pass through block like a ghost …. the only block it doesnt pass through is you so it can elimiate you when its hitbox crosses your hitbox …. i then fixed some major respawning and hit box bugs that come about after double jumping which took FOREVER ….i finished completing level 2 which i have to say , well done to the creator of the game lol because this game is going to be epic !!! , see you in the next one !
i5 hours later … and this devlog is mainly focused on polishing, fixing bugs and making the game feel much smoother. First, I spent a lot of time going through the code and cleaning up some problems that were starting to appear as the game got bigger. I improved the overall efficiency of the game by removing unnecessary checks, optimising some of the update loops and making sure objects were not being processed when they did not need to be. This should help the game run better, especially when more enemies and level elements are added later. …. Next, I worked on fixing a bunch of smaller bugs that were affecting gameplay. I fixed some collision issues where the player could sometimes get stuck inside blocks, improved the respawn system so the player resets properly every time, and fixed some problems with the enemy behaviour after the player dies. There were also some annoying issues with jumping and movement that caused inconsistent results, so I spent time making the controls feel more reliable. …. WOW , i feel like a real game dev working ovetime lol …. Thank you , see you in the next one . that was a mouthful …
Another long session finished. This time it was all about the little details that make a game actually feel good to play. I spent most of the time polishing existing features rather than adding new ones. I adjusted movement, tweaked animations, cleaned up the UI, and made small improvements throughout the game that most players probably won’t even notice—but together they make a huge difference.I also tracked down a few more bugs that somehow managed to sneak in. There were some visual glitches, a couple of edge cases where objects weren’t behaving correctly, and a few issues with level transitions. After a lot of testing (and breaking the game several times), everything is now much more stable.It’s funny because I barely added any “new” content today, but the game honestly feels so much smoother than it did this morning. I guess this is what real game development is like—hours of polishing for improvements that are hard to see but easy to feel.Anyway… that’s another 5 hours gone. Time to call it a day. Thanks for watching, and I’ll see you in the next devlog!
i worked on creating a token/coin that you collect while trying to complete the level , i am debating wether to have a coin threthhold . so if you dont collect x amount of coints in the level you cannot activate the checkpoint … i also worked on a reset character reset game , resume interface where you can click esc to pause then you have the 3 options … i then created more sprites for the user to select what chatacter they want to play as … i am looking at adding different powers for each character in the next devlog … i added another level and i added smarter and more enemies that come to delete you off the game … lol … let me know what else i should add !!!….also i almost forgot , i added some new traps that i havnt put in the game yet but i have added the backend logic for - cant wait … thanks again!!
i worked on implementing the new traps i mensioned in the previous devlog … i then continued adding a new level … this then led me to an idea of a level selector so you can replay levels if you wanted to . - genuis …. which i started to implement … thanks ;)
i feel like a real dev that spends hours in the cave and comes out with 2-3 new features lol … today i worked on yet another level and added some new respawning and eliminating animations … i also animated the coins and added some secret special easter eggs within the game … you will need to wait for the game to be fully developed before finding out … again - any other features be sure to comment below on what features to add .
i finished working on the level i was working on in the previous devlog . i then came across a major issue … if i spam doublejump on spikes - i dont die … like i become superman - not good at all … i had to fix this , and i fixed it to have a longer cooldown when using you double jump so , basically you have enough time for your sprite to hit the trap …
ok … lets get this going … today i done a full code run thru as i could not find out why the player was still being immune to the spikes when double jumping .. but its now fixed .. not suprising for a genuis like me lol …. anyways - then i added yet ANOTHER level … making it the hardest one yet which includes all the traps and enemies and hard to reach coins .. i then implemented a theash hold which makes it so you have to get a certain amount of coins befroet the checkpoint activates … then i added a sprite selector to make it so that the player can choose the sprite and each sprite has a special move … still not yet fully decided the moves but they will be decided soon - hopefully next devloog … then i went ahead and tried to add a 2 player mode where 2 players can play on the same keyboard (player 1 : up , left , right ) (player 2 : w, a ,d) … there are a total of 6 enemies to face throughout … lets get this going .. we are nearly there at he end …. woooooooooooooooohooooo
i have fully gone over each level refining the placement of each and every object … i then played the game multiple times just to make sure it is actually possible …. i set up the code so that i can begin adding the abilities for each new characer … i then made sure there are no bugs so that when the second player is added nothing silly happens because there will be more inputs and more possibility of things going pear shaped … i know this is a boring devlog but it is neccesary … please come back for the next one it will be good .. i promise …
i have nearly finished the game !!! We’re getting really close to finishing the game now! This session was focused on adding the final gameplay features before polishing everything up.The biggest addition was the 2-player system, which is now fully implemented. It still needs a few tweaks and bug fixes, but the core mechanics are working well and make the game much more enjoyable.I also added a sprite selection screen, allowing players to choose their character before starting. Each sprite now has its own unique special ability, making every character feel different and encouraging players to experiment with different playstyles.Content-wise, I created two brand new levels, giving players more challenges to complete. To make these levels more interesting, I also introduced two new trap types along with another enemy variant, adding more variety and requiring players to think more carefully about how they progress through each stage.At this point, the game is almost complete. The remaining work is mainly polishing, balancing gameplay, fixing bugs, and making sure everything feels smooth before the final release.
i fixed placement of traps and enemies to make the levels dooable and also make the levels harder … im also planning to add and have started to add different level screens , so each level takes you to a different screen each time you complete it … also i made it so that you have to collect 40% of the coins available in each level to move onto the next level so dont be skipping coins … i also made all the characters have double jump because i felt bad for all you guys that will be playing the game …
i turned my code into a format that can be uploaded onto itch.io so i can begin getting ready for shipping this project … i then lowered the spiked swinging balls so its possible to jump across the gap in level 5 when finsihing the level … have a look !!
i worked on switching from itch.io to the github web to host my game
Ships:
What I made: an “impossible” platformer in Python/pygame — 4 characters each with their own move (dash, wall cling, ground pound, frog leap), 2 player mode, 5 levels, and traps like saws, a sliding rock head and a swinging spiked ball. Packaged it so it also runs in a browser through GitHub Pages, not just as a local script. What was challenging: making the abilities feel actually different from each other but still fair took a lot of back and forth, and the web version being randomly laggy took a while to actually track down instead of just guessing. Turned out it was checking collisions against every object in the whole level every single frame instead of just the stuff near the player, plus redrawing the background from scratch 238 times a frame. What I’m proud of: getting it running properly in a browser instead of just as a local file makes it feel like an actual finished thing rather than a script sitting on my laptop. It’s still a bit laggy on the GitHub Pages version, but running it locally on my own machine there’s no lag at all, so the game itself is solid — it’s specifically the web packaging that still needs work....
|
1792878778.141592
|
1793742778.141592
|
|
38844
|
Aftersignal by @Metaldness | Stardance
|
Metaldness
|
0
|
93.32
|
0
|
[]
|
[{"post_id": 61953, "ts": "202 [{"post_id": 61953, "ts": "2026-09-05T04:15:11Z", "hours": 8.1078, "text": "Was burnt out, took a break while working on other projects, we’re back"}, {"post_id": 46685, "ts": "2026-08-14T03:52:46Z", "hours": 9.9178, "text": "Fixed all of my static 2d UIs, also setup the scee for my act2. It’s all coming together"}, {"post_id": 46116, "ts": "2026-08-13T03:47:17Z", "hours": 11.1589, "text": "Made alot of changes to my act 1 and my default models after doing play through, noticed bugs, errors and things that needed to be fixed: the player’s fov was not built models lagged when i moved close to them too many repititive stuffs"}, {"post_id": 45271, "ts": "2026-08-11T16:52:41Z", "hours": 8.3789, "text": "I implemented a patrol drone AI and made changes to my initial player controller logic"}, {"post_id": 44385, "ts": "2026-08-10T03:01:05Z", "hours": 10.6622, "text": "Wing 1 is playable from start to finish. You can now run through the whole loop from reading the manifest to solving the wall mystery, checking Farrow’s research, and cycling through the airlock."}, {"post_id": 43457, "ts": "2026-08-08T18:38:07Z", "hours": 9.28, "text": "After hours, i finally got the animation to work, it turns out there was a couple of reasons: The models i was using were not fully rigged, about 3 of them. I did think about creating my model from scratch, but my pc cant handle blender lmao My code didnt load the running animation in-game, so i was stuck at the idle animation and kept going back and forth in mixamo before figuring that out Anyway, with the animation done, and the main problems out of the way, its time for me to start the main story. made some edits, i wanted to start with “no combat”, but that felt too boring, even for me"}, {"post_id": 42506, "ts": "2026-08-07T09:17:47Z", "hours": 12.5711, "text": "Imported custom 3D player models into Godot and setup the character animation system. To be honest, this took way too much time than anticipated, probably the hardest part of this project so far and I’m yet to finish it. I never knew animating was this hard. Off to bed."}, {"post_id": 42059, "ts": "2026-08-06T16:45:32Z", "hours": 15.5536, "text": "Act 1 is officially fully playable from the spawn point all the way to the research airlock. Everything is locked in and running smoothly in Godot."}, {"post_id": 36187, "ts": "2026-07-28T03:26:19Z", "hours": 4.9617, "text": "Devlog: Wing 1’s first working puzzle Big session. Got the real environment loaded in and built the first actual puzzle end to end. Swapped the gray test room for a proper Quaternius sci fi kit. Spent a good chunk of time fixing Godot 3 to 4 compatibility errors buried in the asset files before the room would even load clean. Connected the storage room to a hallway with a real junction and capped the unused openings. Then built the puzzle itself. One player finds a code on a chest, the other enters it on a keypad to unlock a door. Reused the interaction system and networking patterns from earlier. Also caught a couple of new multiplayer bugs, the door wasn’t opening for the second player since the unlock only happened locally, and a scene loading timing issue once the real environment made the level slower to load. The recording below is just me walking through it solo to show the loop. The actual game is built for two players finding and sharing the code together, that part already works, just wasn’t on camera this time. Next up: more puzzle polish, then pushing further into Wing 1. SORRY FOR THE LAG"}, {"post_id": 34266, "ts": "2026-07-24T20:26:41Z", "hours": 1.0286, "text": "Spent this session getting two players actually connected in Godot, then making it look right. Getting connected hit four bugs in a row: a wrong node path, duplicate spawner nodes causing an already in use error, a frozen client screen caused by multiplayer authority never actually replicating to clients (fixed by having each peer derive authority from the player node name), and players falling through the floor since spawn positions were randomized on the server but never synced to the client. Making it visible closed a few more gaps: gave each player a distinct color, fixed a camera setting that was accidentally hiding both players bodies instead of just your own, and added a MultiplayerSynchronizer so position and rotation actually sync instead of the other player staying frozen at spawn. End result: two players can host and join, see each other in different colors, and watch each other move in real time. Lesson learned: in Godot multiplayer, only scene structure replicates automatically. Anything computed in code needs to be recalculated the same way on every peer, or explicitly synced. Next up: proximity or radio chat."}, {"post_id": 33838, "ts": "2026-07-24T02:35:36Z", "hours": 1.1061, "text": "Spent today actually getting Godot set up and building the first real chunk of Aftersignal. Got a first-person controller working walk, look around, jump. Took embarrassingly long to figure out why I kept falling through the floor before realizing CSG boxes don’t have collision on by default, you have to turn it on manually per shape. Once that clicked, movement + collision just worked. Threw a colored capsule on the player since I don’t have a real model yet good enough for now, planning to swap in a proper one later once more of the actual gameplay is in. Biggest chunk of today was building out interaction. Camera shoots a raycast forward, and there’s a base Interactable class any object can extend. Built three versions to make sure it wasn’t just working for one hardcoded thing: a terminal, a log with its own custom message, and a pickup that deletes itself from the world when you grab it. Also added a “Press E to interact” prompt that shows up when you’re actually looking at something had a dumb bug where it just stayed on screen the whole time, turned out to be a typo in my own code, felt good catching that myself. Next: multiplayer. Getting two people actually in the same station at the same time."}, {"post_id": 33789, "ts": "2026-07-24T00:09:54Z", "hours": 0.5936, "text": "walking movement, collision, interaction system,"}]...
|
Title: Aftersignal by @Metaldness | Stardance
Dev Title: Aftersignal by @Metaldness | Stardance
Devlogs:
walking movement, collision, interaction system,
Spent today actually getting Godot set up and building the first real chunk of Aftersignal. Got a first-person controller working walk, look around, jump. Took embarrassingly long to figure out why I kept falling through the floor before realizing CSG boxes don’t have collision on by default, you have to turn it on manually per shape. Once that clicked, movement + collision just worked. Threw a colored capsule on the player since I don’t have a real model yet good enough for now, planning to swap in a proper one later once more of the actual gameplay is in. Biggest chunk of today was building out interaction. Camera shoots a raycast forward, and there’s a base Interactable class any object can extend. Built three versions to make sure it wasn’t just working for one hardcoded thing: a terminal, a log with its own custom message, and a pickup that deletes itself from the world when you grab it. Also added a “Press E to interact” prompt that shows up when you’re actually looking at something had a dumb bug where it just stayed on screen the whole time, turned out to be a typo in my own code, felt good catching that myself. Next: multiplayer. Getting two people actually in the same station at the same time.
Spent this session getting two players actually connected in Godot, then making it look right. Getting connected hit four bugs in a row: a wrong node path, duplicate spawner nodes causing an already in use error, a frozen client screen caused by multiplayer authority never actually replicating to clients (fixed by having each peer derive authority from the player node name), and players falling through the floor since spawn positions were randomized on the server but never synced to the client. Making it visible closed a few more gaps: gave each player a distinct color, fixed a camera setting that was accidentally hiding both players bodies instead of just your own, and added a MultiplayerSynchronizer so position and rotation actually sync instead of the other player staying frozen at spawn. End result: two players can host and join, see each other in different colors, and watch each other move in real time. Lesson learned: in Godot multiplayer, only scene structure replicates automatically. Anything computed in code needs to be recalculated the same way on every peer, or explicitly synced. Next up: proximity or radio chat.
Devlog: Wing 1’s first working puzzle Big session. Got the real environment loaded in and built the first actual puzzle end to end. Swapped the gray test room for a proper Quaternius sci fi kit. Spent a good chunk of time fixing Godot 3 to 4 compatibility errors buried in the asset files before the room would even load clean. Connected the storage room to a hallway with a real junction and capped the unused openings. Then built the puzzle itself. One player finds a code on a chest, the other enters it on a keypad to unlock a door. Reused the interaction system and networking patterns from earlier. Also caught a couple of new multiplayer bugs, the door wasn’t opening for the second player since the unlock only happened locally, and a scene loading timing issue once the real environment made the level slower to load. The recording below is just me walking through it solo to show the loop. The actual game is built for two players finding and sharing the code together, that part already works, just wasn’t on camera this time. Next up: more puzzle polish, then pushing further into Wing 1. SORRY FOR THE LAG
Act 1 is officially fully playable from the spawn point all the way to the research airlock. Everything is locked in and running smoothly in Godot.
Imported custom 3D player models into Godot and setup the character animation system. To be honest, this took way too much time than anticipated, probably the hardest part of this project so far and I’m yet to finish it. I never knew animating was this hard. Off to bed.
After hours, i finally got the animation to work, it turns out there was a couple of reasons: The models i was using were not fully rigged, about 3 of them. I did think about creating my model from scratch, but my pc cant handle blender lmao My code didnt load the running animation in-game, so i was stuck at the idle animation and kept going back and forth in mixamo before figuring that out Anyway, with the animation done, and the main problems out of the way, its time for me to start the main story. made some edits, i wanted to start with “no combat”, but that felt too boring, even for me
Wing 1 is playable from start to finish. You can now run through the whole loop from reading the manifest to solving the wall mystery, checking Farrow’s research, and cycling through the airlock.
I implemented a patrol drone AI and made changes to my initial player controller logic
Made alot of changes to my act 1 and my default models after doing play through, noticed bugs, errors and things that needed to be fixed: the player’s fov was not built models lagged when i moved close to them too many repititive stuffs
Fixed all of my static 2d UIs, also setup the scee for my act2. It’s all coming together
Was burnt out, took a break while working on other projects, we’re back...
|
1792749271.4623196
|
1793354071.4623196
|
|
19004
|
MEDIKILL by @Vini | Stardance
|
Vini
|
1
|
93.0
|
809
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T07:48:13Z", "hours": 93.0, "multiplier": 11.54, "payout": 809, "blessing": "neutral", "text": "In this project I have made a fully functioning FPS featuring all the stuff you would want from one (disclaimer: its a very buggy game). I would say the most difficult part of this project was the enemy AI which works perfectly now it has running away chasing and patrolling and idle state. The most annoying part of making this game was all the light baking issues there so annoying and took me like 9 hours to get working barley passible. Turns out PB mesh’s don’t like light baking. Please actually read the readme and play the game. I hope you have a great day also you’re a good person. (Hopefully)", "repo": "https://github.com/wildevi26250-tech/FPSNoir", "demo": "https://play.unity.com/en/games/3177c58f-2173-45c1-a5f3-a427582aac1a/medikill"}]...
|
[{"post_id": 60692, "ts": "202 [{"post_id": 60692, "ts": "2026-09-03T07:34:29Z", "hours": 3.8858, "text": "Bug fixing First bug was being able to just hold w and stick to the walls Second was all the lighting issues And third im working on the ending for this short shooter Ima ship soon AND YES I KNOW ITS KINDA A BAD GAME!"}, {"post_id": 38661, "ts": "2026-08-01T05:13:50Z", "hours": 9.8042, "text": "Features added Tried to add online features got that working But then all of my game wouldnt work with the new online stuff so im glad I made a backup Finished a new level Light baking failures took up 3 hours Took a break to play hollow knight"}, {"post_id": 27943, "ts": "2026-07-13T21:42:59Z", "hours": 3.3411, "text": "Features added Muzzle Flash that actually looks good Crouching but as you see in the video it also squishes the gun which isn’t ideal Worked out a few bugs eg. being able to walk through a certain wall Stardance will not get me again I will post all my devlogs on time Pushing to git now"}, {"post_id": 27006, "ts": "2026-07-12T04:32:41Z", "hours": 29.1331, "text": "Features added Slow motion for the tutorial Tutorial text Procedural weapon bob \\ sway Fire wall running Bullet time while in air or wall running Again kinda mad because I kept forgetting to post devlogs and im only getting 10 hours out of what should be 30 Added crates Added new section to the level where you can wall run and shoot enemys All of this is demonstrated in the video bellow (please watch it) Thought of a better name and idea for the game"}, {"post_id": 16545, "ts": "2026-06-26T22:10:46Z", "hours": 20.6192, "text": "Features added New weapon sniper ADS system works perfectly (yes I know the sniper looks ugly) Reload animations working also perfectly SFX is going well although my footsteps still sound horrible Full level lighting and enemys now working fully Kinda mad because i didnt know that you had to post a devlog every 10 hours Otherwise everything is great"}, {"post_id": 12910, "ts": "2026-06-21T04:23:14Z", "hours": 4.3881, "text": "Added fully working guns and enemy script first level and some ui Still working on a github repo sry"}, {"post_id": 12427, "ts": "2026-06-20T08:51:25Z", "hours": 6.9508, "text": "basic gun script working and picking up and dropping now working enemy sort of working but no attacking yet working on getting a demo site up"}, {"post_id": 11501, "ts": "2026-06-18T19:57:13Z", "hours": 15.2369, "text": "Basic movement working did have it already working crouching and slope movement and sprint but had to scrap after data got corrupted working on adding in guns now"}]...
|
Title: MEDIKILL by @Vini | Stardance
Devlogs:
Bas Title: MEDIKILL by @Vini | Stardance
Devlogs:
Basic movement working did have it already working crouching and slope movement and sprint but had to scrap after data got corrupted working on adding in guns now
basic gun script working and picking up and dropping now working enemy sort of working but no attacking yet working on getting a demo site up
Added fully working guns and enemy script first level and some ui Still working on a github repo sry
Features added New weapon sniper ADS system works perfectly (yes I know the sniper looks ugly) Reload animations working also perfectly SFX is going well although my footsteps still sound horrible Full level lighting and enemys now working fully Kinda mad because i didnt know that you had to post a devlog every 10 hours Otherwise everything is great
Features added Slow motion for the tutorial Tutorial text Procedural weapon bob \ sway Fire wall running Bullet time while in air or wall running Again kinda mad because I kept forgetting to post devlogs and im only getting 10 hours out of what should be 30 Added crates Added new section to the level where you can wall run and shoot enemys All of this is demonstrated in the video bellow (please watch it) Thought of a better name and idea for the game
Features added Muzzle Flash that actually looks good Crouching but as you see in the video it also squishes the gun which isn’t ideal Worked out a few bugs eg. being able to walk through a certain wall Stardance will not get me again I will post all my devlogs on time Pushing to git now
Features added Tried to add online features got that working But then all of my game wouldnt work with the new online stuff so im glad I made a backup Finished a new level Light baking failures took up 3 hours Took a break to play hollow knight
Bug fixing First bug was being able to just hold w and stick to the walls Second was all the lighting issues And third im working on the ending for this short shooter Ima ship soon AND YES I KNOW ITS KINDA A BAD GAME!
Ships:
In this project I have made a fully functioning FPS featuring all the stuff you would want from one (disclaimer: its a very buggy game). I would say the most difficult part of this project was the enemy AI which works perfectly now it has running away chasing and patrolling and idle state. The most annoying part of making this game was all the light baking issues there so annoying and took me like 9 hours to get working barley passible. Turns out PB mesh’s don’t like light baking. Please actually read the readme and play the game. I hope you have a great day also you’re a good person. (Hopefully)...
|
1792997308.8353095
|
1793083708.8353095
|
|
30862
|
Psync by @jacobjuneau | Stardance
|
jacobjuneau
|
1
|
93.0
|
1577
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T22:18:47Z", "hours": 93.0, "multiplier": 16.94, "payout": 1577, "blessing": "neutral", "text": "Note: Very untested, only try with projects you have backups of! Psync was designed to solve the problem of my laptop having limited storage and my with to be able to use my nas semi-transparently without the use of automountd or fuse both of which I have tried and deployed in other scenarios and neither of which are resiliant to not being able to contact the NFS server when on different networks. So i made Psync which uses encryption which make me feel secure enough to open it up to the internet instead of unauthenticated NFS.", "repo": "https://github.com/jacobjuneau6/Psync", "demo": "https://crates.io/crates/pwr-cli"}]...
|
[{"post_id": 26707, "ts": "202 [{"post_id": 26707, "ts": "2026-07-11T17:33:03Z", "hours": 2.0, "text": "Add bash tab completion script for pwr CLI commands Provide a bash completion function for all pwr subcommands and their flags. The completion script maps each subcommand to its valid arguments: init completes –server-host, –server-port, –psk, and –local-root; archive, restore, and ensure complete directory paths; status and list offer –recursive/-r; log provides –errors/-e and –project; shell completes bash, zsh, fish, and –init. The completion is installed via ‘source <(pwr completions bash)’ in .bashrc."}, {"post_id": 26622, "ts": "2026-07-11T15:31:34Z", "hours": 2.0, "text": "Document required parentheses around impl Trait syntax in handler signatures The Rust 2024 edition requires explicit parentheses around compound trait bounds in function argument position. Without them, ‘&mut impl Read + Write’ is ambiguous: it could parse as ‘(&mut impl Read) + Write’ (a mutable reference to a type implementing Read, with an additional Write bound) or ‘&mut (impl Read + Write)’ (a mutable reference to a type implementing both). The compiler requires the latter to be written with parentheses. Add a module-level doc comment explaining this so future maintainers do not attempt to remove the parentheses."}, {"post_id": 26556, "ts": "2026-07-11T13:30:09Z", "hours": 2.0, "text": "Add end-to-end integration tests for full client-server lifecycle Implement two end-to-end tests using paired in-memory byte streams (Pipe struct implementing Read+Write via Arc<Mutex<Vec») that simulate a complete client-server interaction without network dependencies. test_full_client_server_archive_restore_cycle creates a multi-file project directory, generates age encryption keys and a PSK, runs the archive pipeline to produce an encrypted blob, then spawns two threads for client and server communicating through paired pipes. The client performs the full protocol sequence: Handshake with HMAC-SHA256 proof, ArchiveRequest with project metadata, chunked data transfer with 1 MiB chunks and zero-length EOF marker, and ArchiveComplete with SHA-256 hash. The server thread receives the Handshake, verifies the client proof, responds with its own server proof for mutual authentication, reads the ArchiveRequest, receives all chunks via the 4-byte length-prefixed streaming protocol, and acknowledges ArchiveComplete. After both threads join, assertions verify the server received the exact encrypted blob, decryption succeeds, and the local project metadata transitions correctly through local → archived → placeholder states with .project.toml file survival. test_end_to_end_hash_verification_prevents_corruption validates that tampering with a single byte of the encrypted archive produces a different SHA-256 hash, ensuring integrity violations are detectable before extraction."}, {"post_id": 26393, "ts": "2026-07-11T04:56:13Z", "hours": 2.0, "text": "Add operation progress overlay to TUI and wire pwr tui subcommand in CLI Implement an OperationOverlay screen for the ratatui-based TUI that renders a centered modal dialog with a progress gauge, transfer statistics, and a cancel prompt during archive and restore operations. The overlay displays the operation name and project name in the title bar, a cyan progress gauge driven by the bytes_done/bytes_total ratio, a statistics line showing human-readable byte counts with percentage, and a status line that changes between ‘Press Esc to cancel’ during transfer, ‘Transfer complete’ on success, and red error text on failure. The format_size helper converts byte counts to GB/MB/KB/B with one decimal place. The handle_input method maps Escape to cancellation and Enter to dismissal after completion. Wire the pwr tui subcommand into the CLI behind the tui feature flag. The Commands enum gains a Tui variant gated by #[cfg(feature = “tui”)], the dispatch match arm calls cmd_tui(), and the tui module is conditionally compiled. Building without –features tui produces a CLI-only binary; building with the flag includes the ratatui and crossterm dependencies and the tui module, enabling pwr tui to launch the interactive interface."}, {"post_id": 26352, "ts": "2026-07-11T02:54:46Z", "hours": 1.9667, "text": "Annotate session state structs with allow(dead_code) for future use The ArchiveSession and RestoreSession structs in the handler state machine contain fields (session_id, file_count, compression, bytes_received, bytes_sent) that are stored for future use in resume-after-interruption logic and detailed transfer statistics. Currently they are only written during state transitions but not yet read back. Add #[allow(dead_code)] annotations to suppress compiler warnings while keeping the fields available for the planned transfer progress tracking and interrupted archive resume features."}, {"post_id": 26283, "ts": "2026-07-11T00:05:32Z", "hours": 2.0333, "text": "Fix warning: remove unused variable and clean up imports Remove the unused config variable clone from the listener accept loop where it was captured by the thread closure but never referenced. Remove the unused PrivateKeyDer import from rustls pki_types. Prefix the catch-all match variable with underscore to suppress the unused variable warning in the dispatch function. Keep the required parentheses around impl Trait syntax in argument position as required by Rust 2024 edition for disambiguation. Add MIT LICENSE file."}, {"post_id": 26236, "ts": "2026-07-10T22:03:06Z", "hours": 2.0, "text": "Add systemd service unit and deployment guides for server and client Create a hardened systemd service unit for pwr-server with security directives including NoNewPrivileges, PrivateTmp, ProtectSystem=strict, ProtectHome=yes, and read-only access to config and certificate paths with read-write access only to the project storage directory. The service runs as the pwr system user, restarts on failure with a 5-second delay, and logs to journald. Resource limits cap file descriptors at 4096 and memory at 512 MB. Add docs/server-setup.md covering the complete Debian 12 deployment workflow: installing build dependencies, compiling with cargo, initializing the server to generate TLS certificates and PSK, creating the storage directory with correct ownership, installing and enabling the systemd service, verifying the listener with ss, configuring firewall rules for nftables and iptables, and troubleshooting common issues. Add docs/client-setup.md covering the Arch Linux client workflow: building the binary, running pwr init with server host and PSK, setting up shell integration for bash, zsh, and fish, performing the first archive and restore, launching the TUI, and troubleshooting configuration and authentication errors. Include a full configuration file reference."}, {"post_id": 26145, "ts": "2026-07-10T19:28:04Z", "hours": 2.0, "text": "Fix client integration tests and add retry-aware connect test Repair the client integration test suite after the retry logic and library target additions. The connect_to_nonexistent_server test now uses a match statement instead of unwrap_err to work with the ClientResult type. The connect_timeout_is_respected test is marked #[ignore] because OS-level TCP timeout behavior varies across platforms, making sub-second timeout assertions unreliable in CI environments. Unused imports (TcpListener, Duration) are removed from the test file."}, {"post_id": 26055, "ts": "2026-07-10T17:19:39Z", "hours": 2.0, "text": "Add progress bar integration to CLI with empty-archive edge case handling also add 0-byte transfer file size."}, {"post_id": 25987, "ts": "2026-07-10T15:17:01Z", "hours": 1.9667, "text": "Add progress callback support to client archive and restore methods Extend archive_project and restore_project with optional progress callbacks that report bytes transferred against total size. The existing methods become thin wrappers calling the new archive_project_with_progress and restore_project_with_progress variants with None for backward compatibility. During archive, the callback fires after each 1 MiB chunk is written to the TCP stream, reporting cumulative bytes sent. During restore, the callback fires after each received chunk is appended to the buffer, reporting cumulative bytes received. The callback signature is fn(u64, u64) where the first argument is current progress and the second is the total, suitable for driving indicatif progress bars or TUI progress displays without coupling the client module to any specific UI library."}, {"post_id": 25938, "ts": "2026-07-10T13:15:41Z", "hours": 1.9667, "text": "Add exponential backoff retry logic to PwrClient connection Implement connect_with_retry in PwrClient that wraps the existing connection logic with up to 3 retry attempts using exponential backoff starting at 1 second and doubling to 2 and 4 seconds. The existing connect method is renamed to connect_once and made private, with the public connect method now calling it in a retry loop. Transient network failures such as TCP connection refused or TLS handshake timeouts are retried, while authentication failures are not (they propagate immediately since retrying with the same credentials would produce the same result). Each retry attempt is logged at WARN level with the error and delay, and a successful retry is logged at INFO level. The connect_timeout_secs from the client config is applied to each individual TCP connection attempt within the retry loop."}, {"post_id": 25722, "ts": "2026-07-10T04:53:07Z", "hours": 2.0, "text": "Implement TLS transport with custom certificate verifier and fingerprint pinning Replace the TLS-not-yet-implemented stub in the PwrClient with a working rustls-based TLS 1.3 connection layer. The connect_tls function builds a ClientConfig using the dangerous API with a custom certificate verifier (CertVerifier) that accepts self-signed server certificates — necessary because pwr-server generates its own ECDSA P-256 certificate during init rather than obtaining one from a public CA. Authentication is provided by the PSK handshake running over the encrypted channel, so the TLS layer provides confidentiality while the application layer handles mutual authentication. The verifier supports optional SHA-256 certificate fingerprint pinning. When a server_fingerprint is present in the client config, the verifier computes the SHA-256 hash of the server’s end-entity certificate and compares it against the pinned value, rejecting the connection on mismatch. When no fingerprint is configured, the verifier accepts any certificate but logs the observed fingerprint for the user to pin later, enabling a trust-on-first-use workflow. Signature verification in the verifier accepts all TLS 1.2 and 1.3 signatures without checking against a root CA. This is intentional: the security model relies on PSK-based mutual authentication at the application layer combined with certificate pinning for defense-in-depth, rather than on the Web PKI trust infrastructure which would reject self-signed certificates. The supported_verify_schemes list advertises ECDSA and RSA schemes to maximize compatibility."}, {"post_id": 25674, "ts": "2026-07-10T02:47:59Z", "hours": 1.9667, "text": "Add server address display to status command output Extend the status command to print the configured server host and port after the project count summary, giving users a quick reminder of which NAS their projects are archived to."}, {"post_id": 25619, "ts": "2026-07-10T00:28:40Z", "hours": 2.0333, "text": "Fix server handler and listener warnings: remove unnecessary parentheses and unused imports Clean up compilation warnings in the pwr-server crate. In handler.rs, the send_server_msg function signature used unnecessary parentheses around impl Write which triggered the unused_parens lint. In listener.rs, the PrivateKeyDer import was unused since the key is loaded via rustls_pemfile::private_key which returns a generic PrivateKeyDer type that does not need to be explicitly imported."}, {"post_id": 25572, "ts": "2026-07-09T22:06:58Z", "hours": 2.0, "text": "Clean up unused imports and fix compilation warnings in client TLS module Remove unused Arc import from the top-level client scope (it is only needed inside the connect_tls function where it is imported locally). Replace TrustAnchor with the correct ServerName import from rustls::pki_types. Remove the unnecessary mut qualifier from the ClientConnection binding in connect_tls."}, {"post_id": 25494, "ts": "2026-07-09T20:05:53Z", "hours": 2.0, "text": "Add –tls flag to all network commands, –limit to log, –auto-install to shell init Extend the CLI with connection and usability flags across all subcommands. Every command that contacts the server (archive, restore, ensure, status, list) now accepts a –tls flag that is passed through to PwrClient::connect, controlling whether the connection uses TLS with certificate pinning or plaintext for local testing. The log command gains a –limit flag defaulting to 50 entries, with a summary line showing how many entries were truncated. The shell init command supports –auto-install which opens the shell rc file in append mode and writes the eval line directly, providing a one-command setup experience. Function signatures throughout main.rs are updated to thread the new boolean parameter. The ensure command passes tls=false through to its internal restore call since ensure is triggered from the shell wrapper where TLS may not be configured. The list command delegates to cmd_status with tls=false for local-only directory scanning."}, {"post_id": 25418, "ts": "2026-07-09T18:04:28Z", "hours": 2.0, "text": "Wire progress bars and retry logic into CLI archive and restore commands Integrate the progress reporting module and retry logic into the two main CLI workflows. The archive command now creates a progress bar before the packaging pipeline and passes it to create_archive_with_progress via a ProgressFn callback that maps ArchiveStage values to status messages and fractional bar position. A second progress bar tracks the upload phase. Both bars are finished and cleared on completion. The restore command similarly uses a download progress bar keyed to the stored project size and an extraction progress bar sized to the received encrypted blob. Connection attempts now use with_retry wrapping PwrClient::connect with 3 retries and a 1-second base delay, retrying only on transient network errors as classified by is_retryable_error. This provides resilience against momentary server unavailability without masking fatal errors like authentication failures."}, {"post_id": 25343, "ts": "2026-07-09T16:03:49Z", "hours": 2.0, "text": "Add client integration test suite with handshake, streaming, retry, and progress tests Create 14 integration tests in pwr-cli/tests/client_integration.rs covering the client-side protocol layer. Handshake tests verify that ClientMessage frames encode with correct magic bytes, version, and type discriminants, and that decode_client_message recovers the original Handshake struct with client_id and nonce intact. Archive flow tests exercise ArchiveRequest and ArchiveComplete serialization round-trips with all fields including UUID, name, total_size, file_count, compression, and hash. Restore flow tests verify RestoreRequest encoding and decoding. Server response parsing tests validate that HandshakeAck, Error, and StatusResponse messages are correctly deserialized from framed payloads, including success flags, error codes, and project info vectors with UUID and file_count fields. Chunk streaming tests cover five size boundaries from zero bytes (EOF detection) through 1 MiB, plus standalone EOF marker encoding. Retry logic tests verify is_retryable_error correctly classifies connection failures, timeouts, and broken pipes as transient while treating authentication and not-found errors as fatal. with_retry is tested for immediate success, maximum retry exhaustion (initial + 3 retries = 4 calls), and early termination on non-retryable errors after 1 call. A progress stage test confirms all five ArchiveStage variants are distinct."}, {"post_id": 25289, "ts": "2026-07-09T14:02:25Z", "hours": 1.9667, "text": "Add progress reporting module with indicatif integration and stage callbacks Introduce a progress module in the pwr CLI crate that provides two display modes for long-running operations. The archive_progress_bar and restore_progress_bar functions create indicatif ProgressBar instances with styled templates showing a spinner, progress bar, byte counter, and ETA. The update_archive_progress function maps ArchiveStage enum values to human-readable status messages displayed in the bar. For non-interactive terminals or quiet mode, print_stage emits a simple line to stderr for each stage transition during archive or extract operations. This provides visibility into long-running operations without requiring a TTY."}, {"post_id": 25182, "ts": "2026-07-09T07:46:17Z", "hours": 2.0333, "text": "Implement TLS connector with certificate pinning and retry logic for the client Add a complete TLS connection path to PwrClient, replacing the previous stub that returned a not-yet-implemented error. The connect_tls function builds a rustls ClientConfig with webpki root certificates for standard PKI validation. When a server_fingerprint is set in the client config, a custom FingerprintVerifier replaces the default verifier. This verifier computes the SHA-256 hash of the server’s end-entity certificate DER bytes and compares it against the pinned hex fingerprint, implementing trust-on-first-use style certificate pinning without requiring a private CA. The verifier supports TLS 1.2 and 1.3 signature schemes including RSA and ECDSA P-256. The PwrClient struct gains server_addr, psk, and pinned_fingerprint fields, enabling a reconnect method that re-establishes a TCP connection to the same server and re-runs the PSK handshake without reloading the config file. The connect method now branches on use_tls, routing to either the TLS path with certificate validation or the plaintext path for local testing. Add retry logic via the with_retry helper, a generic function that wraps any fallible operation with exponential backoff. The caller provides a retryable-error predicate; is_retryable_error recognizes connection refused, timeout, connection closed, connection reset, broken pipe, and unexpected EOF as transient errors worth retrying. The base delay doubles each attempt, with a configurable maximum number of retries."}, {"post_id": 25150, "ts": "2026-07-09T05:35:05Z", "hours": 2.0, "text": "Add server integration test suite and library target for external testing Create 17 integration tests in pwr-server/tests/server_integration.rs covering the full server subsystem. Storage CRUD tests (6) verify project creation with duplicate rejection, removal, archive read/write round-trips through the storage layer, persistence across re-opens via registry JSON, and size limit enforcement rejecting archives exceeding the configured max_project_size_gb. PSK handshake tests (3) validate the full mutual authentication flow with correct proof verification and wrong-PSK rejection. Frame-level integration tests (3) exercise the complete serialization pipeline: Handshake framing round-trip with client_id and nonce preservation, ArchiveRequest framing with all fields intact, and server message decode direction checking. File chunk streaming tests (2) simulate the chunk protocol by encoding 250 KB of cyclical data across 4 KB chunks with 4-byte length prefixes and EOF markers, reassembling on the receiver side and verifying content equality. An empty archive test confirms that a standalone EOF marker produces zero bytes of received data. Rate limiter tests (3) verify the 6th attempt is blocked after 5 allowed, success resets the window, and different IPs are tracked independently. A full archive-restore simulation test writes 500 KB of data through the storage layer, reads it back, and verifies byte-exact restoration plus metadata persistence. A cleanup test confirms that removing a project after a failed archive deletes both the archive file and registry entry. To support external integration tests, a library target (lib.rs) is added to pwr-server, re-exporting all modules as public while the binary target (main.rs) retains its own private module declarations."}, {"post_id": 25104, "ts": "2026-07-09T02:58:05Z", "hours": 2.0, "text": "Add file chunk streaming to archive and restore handlers Implement the raw chunk streaming protocol in both directions on the server side. After accepting an ArchiveRequest, the handler enters a chunk receive loop (handle_archive_chunks) that reads 4-byte big-endian length prefixes followed by that many bytes of data, appending each chunk to the project’s archive file on disk via append-mode file I/O. A zero-length chunk signals EOF. The total bytes received is logged for monitoring. On the restore side, handle_restore_chunks reads the complete archive file from disk through the storage layer, then streams it back to the client in 1 MiB chunks with the same 4-byte length-prefixed format, followed by a zero-length EOF marker and a flush. This mirrors the client’s restore_project method which reads chunks in the same format. The dispatch function now chains the chunk streaming phase after the initial request acceptance: ArchiveRequest dispatch calls handle_archive_start followed by handle_archive_chunks, and RestoreRequest calls handle_restore_start followed by handle_restore_chunks. The ArchiveComplete and RestoreComplete messages are received as framed messages after the chunk phase completes, handled by the existing finish functions."}, {"post_id": 24986, "ts": "2026-07-08T21:34:40Z", "hours": 2.0, "text": "Add IP-based authentication rate limiter and integrate into handshake handler Implement a per-IP rate limiter in the server’s auth module that tracks failed authentication attempts within a sliding 60-second window. Each IP is allowed up to 5 failed handshake attempts before being banned for 300 seconds. The RateLimiter maintains an in-memory HashMap<IpAddr, RateLimitEntry> with periodic cleanup of expired entries to prevent unbounded memory growth. The check_attempt method atomically increments the attempt counter, resets the window if it has expired, checks whether the IP is currently banned, and returns false if the attempt should be rejected. record_success resets the counter and clears any ban on successful authentication, allowing legitimate clients that temporarily misconfigured their PSK to recover. The rate limiter is shared across all connections via Arc<Mutex<» and passed through HandlerContext. The handshake handler calls check_attempt before validating the PSK proof, ensuring brute-force attempts are blocked before any cryptographic work is performed. If the rate limit is exceeded, a HandshakeAck with a descriptive error is sent and the connection is closed. On successful authentication, record_success is called to clear the counter. Four unit tests verify that the first five attempts are allowed, the sixth is blocked, record_success resets the counter, and different IPs are tracked independently."}, {"post_id": 24904, "ts": "2026-07-08T19:20:56Z", "hours": 2.0, "text": "Implement server main entry point with clap CLI and fix listener/handler compilation Add a complete main.rs for pwr-server with three clap subcommands. The init subcommand detects or accepts a hostname, delegates to cert::init_server for TLS certificate generation, PSK creation, and config file writing, then prints the start command. The start subcommand locates the config file via the standard search path, loads and validates the ServerConfig, logs the bind address and storage path via tracing, and calls listener::run to begin accepting connections (blocks until shutdown). The status subcommand loads the config and prints a summary of all settings plus a connectivity check by attempting a brief TCP connection to the configured port, reporting whether the server appears to be running. Logging is configured via tracing-subscriber with an env-filter defaulting to pwr_server=info, controllable via the RUST_LOG environment variable. The –foreground flag on the start subcommand is accepted but daemonization is not yet implemented. Fix two compilation errors discovered during integration. The listener’s TLS setup incorrectly pattern-matched rustls::StreamOwned::new as if it returned a Result; it returns the stream directly in rustls 0.23. The handler’s handle_archive_finish had a borrow conflict where the session reference from the Archiving state match arm prevented reassigning *state; the fix extracts project_uuid and project_name into local variables before the state transition."}, {"post_id": 24827, "ts": "2026-07-08T17:13:43Z", "hours": 2.0, "text": "Add comprehensive crypto integration test suite with 26 tests Introduce crypto_integration.rs exercising the full security subsystem across four categories. PSK tests (8) verify 256-bit key generation across ten iterations, hex round-trip preservation including case insensitivity, rejection of odd-length and wrong-length hex strings, deterministic client proof computation, the complete mutual authentication flow with distinct client and server proofs, and PSK binding where different keys produce different proofs. Age encryption tests (6) cover small, empty, and 1 MB large payload round-trips, ephemeral key non-determinism (same plaintext produces different ciphertext but both decrypt correctly), wrong identity rejection, and corrupted ciphertext detection via single-byte flipping mid-payload. HKDF tests (4) verify 256-bit output length, deterministic derivation for same PSK and UUID, cross-project key uniqueness for different UUIDs, and a known-UUID stability test confirming the derived key is neither all-zeros nor all-PSK-bytes. Integrity tests (3) confirm streaming hasher equivalence with oneshot hashing across 5 MB of 64 KB chunks, empty file hashing matching the well-known empty SHA-256 digest, and proper I/O error propagation for nonexistent files. Archive round-trip tests (3) create a multi-file project with README, two Rust sources, a design doc, and Cargo.toml, run through create_archive → extract_archive, verify all file contents match exactly and .project.toml is excluded. Hash verification rejection confirms wrong hashes prevent extraction. A progress callback test records all stage transitions during archive creation and verifies the final progress fraction reaches 1.0."}, {"post_id": 24701, "ts": "2026-07-08T13:51:58Z", "hours": 2.0, "text": "Add progress callback support to archive and extract pipelines Introduce progress reporting to the archive packaging and extraction functions through an optional callback parameter. The ProgressFn type is a boxed closure receiving an ArchiveStage enum and a fractional progress value from 0.0 to 1.0. Eight stages cover the full lifecycle: Scanning, Tarring, Compressing, Encrypting, Hashing, Decrypting, Decompressing, and Extracting. The original create_archive and extract_archive signatures are preserved as convenience wrappers that call the new create_archive_with_progress and extract_archive_with_progress variants with None for the callback, maintaining backward compatibility for callers that do not need progress reporting. Progress granularity is coarse but meaningful: the archive pipeline reports six transitions (Scanning at 0.0, Tarring at 0.1, Compressing at 0.3, Encrypting at 0.5, Hashing at 0.9 and 1.0). The extract pipeline reports eight transitions (Hashing at 0.0 and 0.2, Decrypting at 0.3 and 0.5, Decompressing at 0.6, Extracting at 0.7 and 1.0). Future refinements could report per-file progress during the tar stage by tracking bytes written against the pre-computed directory size."}, {"post_id": 24514, "ts": "2026-07-08T03:32:17Z", "hours": 2.0, "text": "Add HKDF-SHA256 per-project key derivation from master PSK Implement derive_project_key in the crypto module using ring’s HKDF implementation with SHA-256. The function takes the 256-bit master PSK as the HKDF salt and the project UUID bytes as the info parameter, producing a deterministic 256-bit per-project key. This design means per-project encryption keys are never stored on disk — they are re-derived from the master PSK and project UUID on each archive or restore operation. If the PSK is rotated, all existing projects become inaccessible, which is documented as a deliberate security property rather than a bug. The HKDF-Extract step uses the PSK as the salt with an empty initial key material, producing a pseudorandom key. HKDF-Expand then derives 32 bytes of output key material bound to the project UUID via the info parameter, preventing cross-project key reuse even if an attacker learns one project’s derived key. Four tests verify deterministic derivation, UUID binding, PSK binding, and correct 256-bit output length."}, {"post_id": 24448, "ts": "2026-07-08T00:35:04Z", "hours": 1.9667, "text": "Implement complete integrity verification module with streaming hasher Replace the stub hash_file function with a full implementation that reads files in 64 KiB chunks through std::io::copy into a SHA-256 hasher, avoiding memory pressure for arbitrarily large inputs. Add hash_bytes_raw for callers that need the 32-byte binary digest rather than a hex string. hash_reader accepts any io::Read source, enabling hash computation on network streams or in-memory buffers without materializing intermediate files. Introduce StreamingHasher for incremental hash computation across multiple update calls. This is designed for chunked network reception where the full data is never in memory at once: the receiver calls update on each chunk as it arrives, then finalize or finalize_raw to obtain the digest. The struct wraps sha2::Sha256 and implements Default. Verification helpers verify_hash and verify_file_hash compare computed hashes against expected hex strings, returning bool rather than Result for use in assert-style checks. The crypto module’s sha256_hex and sha256_file functions are updated to delegate to the integrity module, making it the single canonical location for SHA-256 operations. Ten tests cover known-answer vectors for the empty string and ‘hello world’, raw hash byte length, file hashing including a 10 MB large-file path to exercise chunked I/O, hash verification for both match and mismatch cases, file verification, streaming hasher correctness against a known answer, streaming-vs-oneshot equivalence across four chunks, and hash_reader with an in-memory source."}, {"post_id": 24339, "ts": "2026-07-07T20:58:46Z", "hours": 2.0, "text": "Add comprehensive protocol integration test suite Introduce 20 integration tests in pwr-core/tests/protocol_integration.rs that exercise the full protocol layer without network dependencies, operating entirely on in-memory frame buffers and byte streams. Frame encode/decode round-trips validate that ArchiveRequest, RestoreRequest, and Handshake messages survive serialization through the full pipeline: typed ClientMessage enum to JSON payload to framed bytes with magic and length prefix through decode_frame back to typed enum with correct field values. FrameDecoder buffering tests cover two edge cases: byte-by-byte arrival where the decoder correctly reports None for incomplete frames across dozens of individual push_bytes calls until the full frame is available, and multi-frame reads where two concatenated frames in a single buffer are decoded sequentially without leftover bytes. Error injection tests verify that bad magic bytes produce errors, truncated frame headers (fewer than 10 bytes) return None rather than errors, payloads exceeding the 16 MiB limit are rejected, unsupported protocol versions are detected, and unknown message type bytes trigger framing errors. File chunk streaming tests cover exact 1 MiB chunks, zero-length data (which is indistinguishable from the EOF marker by design since empty chunks serve no purpose), EOF detection, and reassembly of 500 KB of cyclical data across 4 KB chunks with content verification. Serialization coverage iterates over all five ClientMessage variants and all seven ServerMessage variants, verifying each round-trips through JSON and preserves its message_type discriminant. Boundary tests handle empty ProjectInfo lists, near-max-size payloads with u64::MAX size_bytes and u32::MAX file_count, and direction-mismatch rejection where decode_client_message and decode_server_message refuse payloads from the wrong direction."}, {"post_id": 24259, "ts": "2026-07-07T18:26:22Z", "hours": 2.0, "text": "Refactor client to use typed ClientMessage/ServerMessage enums and protocol builders Replace raw struct construction and manual frame encoding in the archive, restore, and status methods with protocol builder functions and typed message enums. archive_project now calls protocol::build_archive_request and protocol::build_archive_complete. restore_project uses protocol::build_restore_request. The send_client_msg and recv_server_msg helpers replace the generic send_frame and recv_frame functions, providing type-safe serialization for ClientMessage enums and typed deserialization via protocol::decode_server_message for ServerMessage responses. The handshake function is updated to construct the Handshake message as a ClientMessage::Handshake variant and match the response as a ServerMessage::HandshakeAck variant, with error handling for ServerMessage::Error responses. Response parsing in all methods uses match on ServerMessage variants instead of serde_json::from_slice with unwrapped payloads, catching unexpected message types at the call site rather than failing silently with deserialization errors. The import list is reduced from a wildcard protocol::* to explicit imports for ClientMessage, Handshake, ProjectInfo, ServerMessage, and the protocol module itself for builder function access."}, {"post_id": 24168, "ts": "2026-07-07T15:49:02Z", "hours": 2.0, "text": "Refactor server handler to use ClientMessage/ServerMessage enums and protocol builders Rewrite the connection handler’s dispatch function to decode raw frame payloads through protocol::decode_client_message, which returns a typed ClientMessage enum. The match statement now patterns on the enum variant directly rather than matching MessageType discriminants and manually deserializing individual structs. This eliminates redundant deserialization code and catches direction mismatches at the protocol boundary. All server response construction now uses the protocol builder functions: build_handshake_ack_success, build_handshake_ack_failed, build_archive_accept, build_restore_accept, build_status_response, and build_error. The send_server_msg helper takes a ServerMessage enum, calls message_type() for the frame header discriminant, and serializes through encode_frame. This replaces scattered struct literal construction and manual frame encoding with a single call site. The handler functions (handle_handshake, handle_archive_start, handle_archive_finish, handle_restore_start, handle_status) are unchanged in logic but now operate on the inner payload structs extracted by the dispatch layer. Storage locking uses scoped blocks with read().unwrap() and write().unwrap() guards that drop before the next operation. Unused imports are cleaned up, including the removal of the deprecated ring::constant_time import."}, {"post_id": 24104, "ts": "2026-07-07T13:45:46Z", "hours": 2.0, "text": "Add typed builder functions for all protocol message flows Introduce convenience constructors in the protocol module that build ClientMessage and ServerMessage enums from their constituent fields, eliminating the need for callers to construct nested struct literals. For the archive flow, build_archive_request accepts a UUID, name, size, file count, and compression flag, while build_archive_complete and build_archive_failed produce the terminal ArchiveComplete variants. For the restore flow, build_restore_request wraps a project UUID, build_restore_accept bundles session metadata with size and hash, build_restore_complete signals success, and build_restore_failed attaches an error string. Handshake builders handle both success and failure Ack messages with the server nonce, proof, and optional reason. Additional helpers cover ArchiveAccept, StatusResponse, and generic Error messages. These builders centralize protocol message construction so handler and client code does not repeat struct literals and reduces the surface area for missing required fields."}, {"post_id": 23954, "ts": "2026-07-07T05:15:09Z", "hours": 2.0, "text": "Add ClientMessage and ServerMessage sum types with typed deserialization dispatch Introduce two unified enums to the protocol module that wrap all message variants for type-safe routing in the connection handler state machine. ClientMessage covers the five messages the client can send (Handshake, ArchiveRequest, ArchiveComplete, RestoreRequest, StatusRequest) and ServerMessage covers the six server responses (HandshakeAck, ArchiveAccept, RestoreAccept, RestoreComplete, StatusResponse, Error). Each variant delegates serialization to the inner struct via serde’s internally-tagged enum representation using a ‘type’ discriminator field. The message_type method on each enum maps variants to their MessageType discriminant byte, enabling the frame encoder to write the correct header without the caller tracking the mapping manually. Two deserialization functions, decode_client_message and decode_server_message, take a raw payload and a MessageType discriminant and return the typed enum. They validate that the discriminant matches the expected direction, rejecting client message types when a server message is expected and vice versa, catching protocol-level dispatch bugs at the decoding layer rather than deeper in handler logic. The MessageType enum is relocated from the frame module to the protocol module since it is a protocol concern, resolving a circular import between the two modules. Frame encoding continues to reference MessageType for the frame header type byte. The from_byte constructor maps all 13 assigned discriminants with explicit match arms for stability. Eight new tests cover ClientMessage and ServerMessage JSON round-trips, direction-mismatch rejection in decode_client_message and decode_server_message, and message_type discriminant mapping for both enums, adding to the existing serialization and discriminant tests."}, {"post_id": 23872, "ts": "2026-07-07T02:13:05Z", "hours": 2.0, "text": "Add comprehensive README with architecture overview, security model, and setup guides Document the complete pwr project covering the three-crate architecture, security model with its three layers (TLS transport, PSK authentication, and age at-rest encryption), quick-start guides for both Debian 12 server and Arch Linux client, the .project.toml file format specification, complete command reference table, configuration file reference for both client and server TOML files, and build-from-source instructions with feature flags for the optional TUI."}, {"post_id": 23820, "ts": "2026-07-06T23:56:22Z", "hours": 2.0, "text": "Add TLS certificate generation and server initialization utility Implement a certificate generation module in pwr-server that produces self-signed ECDSA P-256 certificates for TLS 1.3 via the rcgen crate. generate_certificate accepts a common name (typically the server hostname), creates certificate parameters with a distinguished name, generates a P-256 keypair, self-signs the certificate with a 365-day validity, and returns the PEM-encoded certificate, PEM-encoded private key, and a SHA-256 hex fingerprint of the certificate for client-side pinning. save_certificate writes the certificate and key to the configured paths with appropriate permissions: the certificate file is world-readable while the private key is restricted to owner-only (mode 0o600 on Unix). Parent directories are created automatically. The init_server function ties everything together for first-time setup. It generates the TLS certificate and key, saves them to /etc/pwr/, generates a random 256-bit PSK via ring’s CSPRNG, creates a ServerConfig with the PSK and certificate paths, and saves the config to /etc/pwr/server.toml. The PSK hex string and certificate fingerprint are printed to stdout with instructions for copying the PSK to the client config. This gives administrators a single command to bootstrap a new pwr-server instance with all security material generated fresh and properly permissioned."}, {"post_id": 23698, "ts": "2026-07-06T20:10:17Z", "hours": 2.0, "text": "Add ratatui-based TUI with project browser, creator, and log viewer screens Implement a terminal UI for interactive project management using ratatui 0.28 with the crossterm backend. The application shell provides a tabbed interface with three screens accessible via number keys (1-3) or Tab cycling. A status bar at the bottom displays global keybindings. The Project List screen renders a scrollable table of tracked projects discovered by scanning the local root directory for .project.toml files. Each row displays a color-coded status indicator (green for local, yellow for archived), project name, human-readable size, and last-sync date. Vim-style j/k and arrow key navigation is supported. Pressing r refreshes the list from disk. The screen is empty with an appropriate message when no projects are configured. The Project Creator screen provides a two-field form for interactively creating .project.toml files. The name field is pre-filled from the current directory name. Tab and Shift+Tab cycle focus between name and local path fields. Typing appends characters, backspace deletes. Ctrl+S validates that the path exists and is a directory, that the name is non-empty, then writes the .project.toml via the core library’s atomic write function. Status messages appear on success or validation failure. The Log Viewer screen reads the local JSONL transaction log and displays entries in a scrollable table with timestamp, operation type, project name, data size, and color-coded status (green OK, red FAILED, yellow in-progress). Supports refresh with r and j/k navigation. The TUI is enabled behind the tui Cargo feature flag which gates the ratatui and crossterm dependencies."}, {"post_id": 23620, "ts": "2026-07-06T18:02:51Z", "hours": 2.0, "text": "Implement full CLI command suite with shell integration and client networking"}, {"post_id": 23512, "ts": "2026-07-06T15:10:42Z", "hours": 2.0, "text": "Implement archive packaging pipeline and client networking module Add the archive packaging pipeline to pwr-core. The create_archive function builds an encrypted project archive through a four-stage streaming pipeline. First, the project directory is walked recursively and added to a tar archive via the tar crate, excluding .project.toml metadata files. Second, the tar stream is gzip-compressed using flate2 at default compression level and written to a temporary file to bound memory usage independent of project size. Third, the compressed tarball is read back and encrypted using the age X25519 public key from the project’s metadata, producing an opaque encrypted blob the server cannot read. Fourth, the SHA-256 hash of the encrypted blob is computed for integrity verification after transfer. Symlinks are preserved in the archive. The reverse pipeline, extract_archive, first verifies the SHA-256 hash against the expected value, then age-decrypts, gunzips, and untars into the target directory. Two tests verify create-extract round-trip fidelity (README.md, src/main.rs, and Cargo.toml are restored with correct content) and that hash mismatch prevents extraction. Add the protocol client module to the pwr binary. PwrClient manages a connection to pwr-server with TCP socket setup, configurable timeouts, PSK handshake authentication with mutual server proof verification, and framed message send/receive via the core frame module. The archive_project method sends an ArchiveRequest, receives acceptance, streams archive data in 1 MiB chunks with 4-byte length prefixes and a zero-length EOF marker, and sends ArchiveComplete with the SHA-256 hash. The restore_project method requests a project by UUID, receives a RestoreAccept with size metadata, streams chunks back from the server, and returns the complete encrypted blob. get_status queries the server for project listings with optional UUID filtering. The handshake helper generates a 32-byte CSPRNG nonce, computes the HMAC-SHA256 client proof, sends the Handshake message, verifies the server’s HandshakeAck success flag, and performs mutual authentication by validating the server proof against the expected value using constant-time comparison."}, {"post_id": 23258, "ts": "2026-07-06T03:13:55Z", "hours": 2.0, "text": "Implement pwr-server storage backend, connection handler, and TLS listener Add the three core server modules that together form the NAS-side daemon. The storage module (storage.rs) manages an on-disk project registry as a JSON index file mapping UUIDs to StoredProject entries containing name, size, file count, encryption flag, and timestamps. The registry is persisted atomically using a write-to-temp-then-rename pattern. Per-project directories under the configured storage base path hold data.enc (the encrypted archive blob) and meta.toml (per-project metadata). Methods provide CRUD operations on the registry, streaming archive read/write through buffered I/O, storage limit enforcement against the configured max_project_size_gb, and filesystem directory management. Five tests verify create-and-list, duplicate rejection, remove, archive write-read round-trip, and registry persistence across re-opens. The handler module (handler.rs) implements a per-connection state machine with five states: AwaitingHandshake, Authenticated, Archiving, Restoring, and Closed. The dispatch function routes decoded frames by state and message type. The handshake handler validates the client’s HMAC-SHA256 proof in constant time using ring::constant_time::verify_slices_are_equal, then generates a server nonce and server proof for mutual authentication. Archive start creates a project entry after checking the storage limit, archive finish updates the final size or rolls back on failure. Restore start looks up the project and verifies the archive file exists. Status queries support both single-UUID lookup and full listing. Storage is shared across connections via Arc<RwLock> with per-operation read or write locking. The listener module (listener.rs) loads PEM-encoded TLS certificates via rustls-pemfile, builds a rustls ServerConfig with TLS 1.3 and the application-level protocol negotiation tag “pwr/1”, binds a std::net TcpListener, and spawns each accepted connection on a dedicated OS thread with a rustls::StreamOwned wrapping the TCP stream for TLS encryption."}, {"post_id": 23204, "ts": "2026-07-06T00:55:44Z", "hours": 2.0, "text": "Implement cryptographic layer with PSK authentication, age encryption, and SHA-256 integrity Add the complete cryptographic subsystem to pwr-core, providing three layers of security for the protocol. The pre-shared key authentication layer uses HMAC-SHA256 to compute challenge-response proofs. The client proves knowledge of the PSK by sending HMAC(client_nonce || “pwr-auth-v1”, PSK). The server responds with HMAC(client_nonce || server_nonce || “pwr-auth-v1”, PSK), enabling mutual authentication. Both nonces are 32-byte CSPRNG values generated per-connection using ring’s SystemRandom. The PSK itself is a 256-bit random key stored as a hex string in both config files. Helper functions handle hex encoding and decoding. At-rest encryption uses age with X25519 key pairs. generate_age_identity creates a fresh keypair, stores the secret identity at ~/.config/pwr/identity with 0o600 permissions, and returns the Bech32 public key for inclusion in .project.toml. The age_encrypt function takes a public key string and plaintext, producing an age-format encrypted blob using the one-shot Encryptor API. age_decrypt reverses this with an identity, returning the original plaintext. Both functions propagate structured errors for wrong keys, corrupted data, and unsupported formats. Integrity verification uses SHA-256 via the sha2 crate. sha256_hex hashes an in-memory buffer. sha256_file streams through a file in 64 KiB chunks to support large projects without memory pressure. Ten tests verify PSK randomness and hex round-trips, deterministic proof computation (same inputs produce same outputs), mutual proof divergence (client and server proofs differ), age encrypt-decrypt round-trips for both empty and non-empty payloads, wrong-identity rejection, known-answer SHA-256 vectors, and file hashing against the same known answer."}, {"post_id": 23125, "ts": "2026-07-05T21:58:39Z", "hours": 2.0, "text": "Implement wire protocol message types and frame encoding layer Define the complete set of protocol messages shared between client and server in pwr-core. The MessageType enum assigns stable 1-byte discriminants to each message variant for routing in the frame header. Handshake messages carry 32-byte client and server nonces with HMAC-SHA256 proofs for mutual PSK authentication, plus a server version string and optional error reason for debugging failed handshakes. Archive flow messages coordinate project uploads: ArchiveRequest announces the project UUID, name, total size, file count, and compression flag; ArchiveAccept returns a session UUID for correlating subsequent chunks; ArchiveComplete reports the final SHA-256 hash and transfer size. Restore flow mirrors this with RestoreRequest, RestoreAccept (carrying size and hash so the client can pre-allocate), and RestoreComplete. File streaming uses FileHeader (relative path, size, Unix mode bits) sent before raw chunk data and FileEnd (SHA-256 checksum) sent after. Query messages provide StatusRequest with optional project UUID filter and StatusResponse with a ProjectInfo vector carrying UUID, name, size, file count, and timestamps. The frame module implements a 10-byte header format: 4 magic bytes (0x50575246, ASCII “PWRF”), 4-byte big-endian payload length, 1-byte protocol version, and 1-byte message type. Payloads are JSON-encoded for debuggability. encode_frame serializes and wraps a message; decode_frame validates magic, version, and length bounds, returning None when more data is needed. FrameDecoder maintains an internal buffer for incremental socket reads. File chunks use a separate 4-byte length-prefixed streaming format with a zero-length EOF marker, keeping large file data out of the JSON framing layer. Thirteen tests cover message type discriminants, serialization round-trips for ArchiveRequest and ProjectInfo, handshake nonce sizes, frame encode-decode with magic verification, partial-read buffering in FrameDecoder, oversized frame rejection, bad magic rejection, file chunk encode-decode, and EOF marker detection."}, {"post_id": 23041, "ts": "2026-07-05T19:34:43Z", "hours": 2.0, "text": "Implement project file I/O with atomic writes, placeholder detection, and directory utilities Add the complete project file management layer in pwr-core. The .project.toml file is the stable identity marker that persists on local disk regardless of whether project content is present (Local state) or stored on the server (Archived state). read_project_file returns Option, returning None when no .project.toml exists so callers can distinguish untracked directories from tracked projects. write_project_file uses an atomic write-through pattern: contents are serialized to a .tmp sibling file first, then renamed over the target, preventing readers from observing a partially written metadata file. remove_project_file deletes the marker without touching directory contents. State detection predicates cover all cases needed by the CLI and shell wrapper. is_archived_placeholder confirms that a directory contains only a .project.toml whose state field is Archived — the signal that triggers automatic restore in the ensure command. is_local_project checks for the opposite state. is_tracked simply tests file existence without parsing. Directory utilities support the archive and restore workflows. dir_size computes total bytes excluding the metadata file itself, with symlinks counted by their target path length rather than followed. file_count tallies regular files recursively for transfer progress estimation. remove_dir_contents_except_project strips a directory down to its .project.toml placeholder after a successful archive. Eleven tests cover round-trip I/O, atomic write behavior, placeholder and local state detection, tracking predicate, exact byte counting, file enumeration, directory stripping, and recursive discovery."}, {"post_id": 22950, "ts": "2026-07-05T16:44:00Z", "hours": 2.0, "text": "Implement server-side configuration management with validation and storage layout Add the ServerConfig struct to the pwr-server crate, controlling all aspects of the daemon’s operation. The configuration specifies the TCP bind address and port (defaulting to 0.0.0.0:9742), the filesystem root for project storage (defaulting to /srv/pwr/projects), paths to the TLS certificate and private key files, the hex-encoded 256-bit pre-shared authentication token that clients must present during the handshake, and operational limits including maximum concurrent connections (default 32), maximum project size in gigabytes (default 500), and an idle timeout for authenticated connections (default 300 seconds). Validation is performed at load time: the port must be non-zero, the auth token must be non-empty, and both max_project_size_gb and max_connections must be positive. The validate method returns a plain String error so the caller can present it directly to the user without depending on the shared pwr-core error types, keeping the server crate’s dependency surface minimal during early development. A config file search strategy checks four locations in order: an explicit –config CLI path, the current working directory (for development), the XDG config directory under ~/.config/pwr/, and the system-wide /etc/pwr/server.toml. Helper methods compute derived paths: project_dir returns the per-UUID storage subdirectory, registry_path returns the JSON index file location, and bind_addr formats the socket address for TcpListener::bind. Seven tests cover default validation, empty-token rejection, zero-port rejection, bind address formatting, project directory path generation, registry path naming, and a full save-load round-trip through TOML serialization and deserialization."}, {"post_id": 22866, "ts": "2026-07-05T14:19:16Z", "hours": 2.7561, "text": "Add client configuration management with server connection settings Refactor the PwrConfig struct to support the protocol-based architecture by replacing rsync-oriented fields (NAS hostname, SSH user, rsync options) with connection parameters for the pwr-server daemon. The new fields are server_host for the NAS hostname or IP address, server_port defaulting to 9742, and server_psk storing a hex-encoded 256-bit pre-shared key for HMAC-SHA256 authentication during the TLS handshake. Certificate pinning is supported through an optional server_fingerprint field that stores the SHA-256 hash of the server’s self-signed X.509 certificate. When set, the client rejects connections where the server presents a certificate with a different fingerprint, preventing man-in-the-middle attacks even if an attacker obtains a valid CA-signed certificate for the server’s hostname. Timeout configuration separates connection establishment (default 10 seconds) from long-running transfers (default 300 seconds) so users can tune them independently. Path helpers provide the standard XDG config directory layout: config.toml for connection settings, identity for the age encryption keypair, and transactions.log for the JSONL audit trail. The config_exists predicate lets callers check for prior initialization without triggering the NoConfig error path. The load_config function maps TOML parse errors into the TomlParse variant carrying the file path for actionable error messages. A server_addr convenience method joins host and port for use with TcpStream::connect. Three tests verify address formatting, config path construction, and port default values."}, {"post_id": 22680, "ts": "2026-07-05T07:23:29Z", "hours": 4.3908, "text": "The error module in pwr-core defines PwrError as a comprehensive thiserror enum covering I/O failures, TOML and bincode serialization errors, protocol framing violations, cryptographic operation failures, authentication rejections, network connectivity issues, storage-layer problems like missing or corrupted projects, and timeouts. Each variant carries contextual information: the TOML parse error includes the file path, protocol errors carry descriptive strings, and storage errors distinguish between not-found, already-exists, and corrupted states. Client configuration (PwrConfig) is rewritten with fields for server hostname, port, hex-encoded pre-shared key, optional TLS certificate fingerprint for pinning, local project root path, and configurable connect and transfer timeouts. The old rsync-oriented fields (NAS host, SSH user, rsync options) are removed. Server configuration is deferred to the pwr-server crate for a later commit. Stub modules for protocol message types, frame encoding, cryptographic key management, archive packaging, and integrity verification are placed in pwr-core so subsequent commits can fill them in without structural changes. Both binaries compile as minimal stubs printing their version. Ten tests pass covering config serialization, metadata state transitions, project file round-trips, transaction log JSONL format, and SHA-256 hash verification of known inputs."}]...
|
Title: Psync by @jacobjuneau | Stardance
Devlogs: Title: Psync by @jacobjuneau | Stardance
Devlogs:
The error module in pwr-core defines PwrError as a comprehensive thiserror enum covering I/O failures, TOML and bincode serialization errors, protocol framing violations, cryptographic operation failures, authentication rejections, network connectivity issues, storage-layer problems like missing or corrupted projects, and timeouts. Each variant carries contextual information: the TOML parse error includes the file path, protocol errors carry descriptive strings, and storage errors distinguish between not-found, already-exists, and corrupted states. Client configuration (PwrConfig) is rewritten with fields for server hostname, port, hex-encoded pre-shared key, optional TLS certificate fingerprint for pinning, local project root path, and configurable connect and transfer timeouts. The old rsync-oriented fields (NAS host, SSH user, rsync options) are removed. Server configuration is deferred to the pwr-server crate for a later commit. Stub modules for protocol message types, frame encoding, cryptographic key management, archive packaging, and integrity verification are placed in pwr-core so subsequent commits can fill them in without structural changes. Both binaries compile as minimal stubs printing their version. Ten tests pass covering config serialization, metadata state transitions, project file round-trips, transaction log JSONL format, and SHA-256 hash verification of known inputs.
Add client configuration management with server connection settings Refactor the PwrConfig struct to support the protocol-based architecture by replacing rsync-oriented fields (NAS hostname, SSH user, rsync options) with connection parameters for the pwr-server daemon. The new fields are server_host for the NAS hostname or IP address, server_port defaulting to 9742, and server_psk storing a hex-encoded 256-bit pre-shared key for HMAC-SHA256 authentication during the TLS handshake. Certificate pinning is supported through an optional server_fingerprint field that stores the SHA-256 hash of the server’s self-signed X.509 certificate. When set, the client rejects connections where the server presents a certificate with a different fingerprint, preventing man-in-the-middle attacks even if an attacker obtains a valid CA-signed certificate for the server’s hostname. Timeout configuration separates connection establishment (default 10 seconds) from long-running transfers (default 300 seconds) so users can tune them independently. Path helpers provide the standard XDG config directory layout: config.toml for connection settings, identity for the age encryption keypair, and transactions.log for the JSONL audit trail. The config_exists predicate lets callers check for prior initialization without triggering the NoConfig error path. The load_config function maps TOML parse errors into the TomlParse variant carrying the file path for actionable error messages. A server_addr convenience method joins host and port for use with TcpStream::connect. Three tests verify address formatting, config path construction, and port default values.
Implement server-side configuration management with validation and storage layout Add the ServerConfig struct to the pwr-server crate, controlling all aspects of the daemon’s operation. The configuration specifies the TCP bind address and port (defaulting to 0.0.0.0:9742), the filesystem root for project storage (defaulting to /srv/pwr/projects), paths to the TLS certificate and private key files, the hex-encoded 256-bit pre-shared authentication token that clients must present during the handshake, and operational limits including maximum concurrent connections (default 32), maximum project size in gigabytes (default 500), and an idle timeout for authenticated connections (default 300 seconds). Validation is performed at load time: the port must be non-zero, the auth token must be non-empty, and both max_project_size_gb and max_connections must be positive. The validate method returns a plain String error so the caller can present it directly to the user without depending on the shared pwr-core error types, keeping the server crate’s dependency surface minimal during early development. A config file search strategy checks four locations in order: an explicit –config CLI path, the current working directory (for development), the XDG config directory under ~/.config/pwr/, and the system-wide /etc/pwr/server.toml. Helper methods compute derived paths: project_dir returns the per-UUID storage subdirectory, registry_path returns the JSON index file location, and bind_addr formats the socket address for TcpListener::bind. Seven tests cover default validation, empty-token rejection, zero-port rejection, bind address formatting, project directory path generation, registry path naming, and a full save-load round-trip through TOML serialization and deserialization.
Implement project file I/O with atomic writes, placeholder detection, and directory utilities Add the complete project file management layer in pwr-core. The .project.toml file is the stable identity marker that persists on local disk regardless of whether project content is present (Local state) or stored on the server (Archived state). read_project_file returns Option, returning None when no .project.toml exists so callers can distinguish untracked directories from tracked projects. write_project_file uses an atomic write-through pattern: contents are serialized to a .tmp sibling file first, then renamed over the target, preventing readers from observing a partially written metadata file. remove_project_file deletes the marker without touching directory contents. State detection predicates cover all cases needed by the CLI and shell wrapper. is_archived_placeholder confirms that a directory contains only a .project.toml whose state field is Archived — the signal that triggers automatic restore in the ensure command. is_local_project checks for the opposite state. is_tracked simply tests file existence without parsing. Directory utilities support the archive and restore workflows. dir_size computes total bytes excluding the metadata file itself, with symlinks counted by their target path length rather than followed. file_count tallies regular files recursively for transfer progress estimation. remove_dir_contents_except_project strips a directory down to its .project.toml placeholder after a successful archive. Eleven tests cover round-trip I/O, atomic write behavior, placeholder and local state detection, tracking predicate, exact byte counting, file enumeration, directory stripping, and recursive discovery.
Implement wire protocol message types and frame encoding layer Define the complete set of protocol messages shared between client and server in pwr-core. The MessageType enum assigns stable 1-byte discriminants to each message variant for routing in the frame header. Handshake messages carry 32-byte client and server nonces with HMAC-SHA256 proofs for mutual PSK authentication, plus a server version string and optional error reason for debugging failed handshakes. Archive flow messages coordinate project uploads: ArchiveRequest announces the project UUID, name, total size, file count, and compression flag; ArchiveAccept returns a session UUID for correlating subsequent chunks; ArchiveComplete reports the final SHA-256 hash and transfer size. Restore flow mirrors this with RestoreRequest, RestoreAccept (carrying size and hash so the client can pre-allocate), and RestoreComplete. File streaming uses FileHeader (relative path, size, Unix mode bits) sent before raw chunk data and FileEnd (SHA-256 checksum) sent after. Query messages provide StatusRequest with optional project UUID filter and StatusResponse with a ProjectInfo vector carrying UUID, name, size, file count, and timestamps. The frame module implements a 10-byte header format: 4 magic bytes (0x50575246, ASCII “PWRF”), 4-byte big-endian payload length, 1-byte protocol version, and 1-byte message type. Payloads are JSON-encoded for debuggability. encode_frame serializes and wraps a message; decode_frame validates magic, version, and length bounds, returning None when more data is needed. FrameDecoder maintains an internal buffer for incremental socket reads. File chunks use a separate 4-byte length-prefixed streaming format with a zero-length EOF marker, keeping large file data out of the JSON framing layer. Thirteen tests cover message type discriminants, serialization round-trips for ArchiveRequest and ProjectInfo, handshake nonce sizes, frame encode-decode with magic verification, partial-read buffering in FrameDecoder, oversized frame rejection, bad magic rejection, file chunk encode-decode, and EOF marker detection.
Implement cryptographic layer with PSK authentication, age encryption, and SHA-256 integrity Add the complete cryptographic subsystem to pwr-core, providing three layers of security for the protocol. The pre-shared key authentication layer uses HMAC-SHA256 to compute challenge-response proofs. The client proves knowledge of the PSK by sending HMAC(client_nonce || “pwr-auth-v1”, PSK). The server responds with HMAC(client_nonce || server_nonce || “pwr-auth-v1”, PSK), enabling mutual authentication. Both nonces are 32-byte CSPRNG values generated per-connection using ring’s SystemRandom. The PSK itself is a 256-bit random key stored as a hex string in both config files. Helper functions handle hex encoding and decoding. At-rest encryption uses age with X25519 key pairs. generate_age_identity creates a fresh keypair, stores the secret identity at ~/.config/pwr/identity with 0o600 permissions, and returns the Bech32 public key for inclusion in .project.toml. The age_encrypt function takes a public key string and plaintext, producing an age-format encrypted blob using the one-shot Encryptor API. age_decrypt reverses this with an identity, returning the original plaintext. Both functions propagate structured errors for wrong keys, corrupted data, and unsupported formats. Integrity verification uses SHA-256 via the sha2 crate. sha256_hex hashes an in-memory buffer. sha256_file streams through a file in 64 KiB chunks to support large projects without memory pressure. Ten tests verify PSK randomness and hex round-trips, deterministic proof computation (same inputs produce same outputs), mutual proof divergence (client and server proofs differ), age encrypt-decrypt round-trips for both empty and non-empty payloads, wrong-identity rejection, known-answer SHA-256 vectors, and file hashing against the same known answer.
Implement pwr-server storage backend, connection handler, and TLS listener Add the three core server modules that together form the NAS-side daemon. The storage module (storage.rs) manages an on-disk project registry as a JSON index file mapping UUIDs to StoredProject entries containing name, size, file count, encryption flag, and timestamps. The registry is persisted atomically using a write-to-temp-then-rename pattern. Per-project directories under the configured storage base path hold data.enc (the encrypted archive blob) and meta.toml (per-project metadata). Methods provide CRUD operations on the registry, streaming archive read/write through buffered I/O, storage limit enforcement against the configured max_project_size_gb, and filesystem directory management. Five tests verify create-and-list, duplicate rejection, remove, archive write-read round-trip, and registry persistence across re-opens. The handler module (handler.rs) implements a per-connection state machine with five states: AwaitingHandshake, Authenticated, Archiving, Restoring, and Closed. The dispatch function routes decoded frames by state and message type. The handshake handler validates the client’s HMAC-SHA256 proof in constant time using ring::constant_time::verify_slices_are_equal, then generates a server nonce and server proof for mutual authentication. Archive start creates a project entry after checking the storage limit, archive finish updates the final size or rolls back on failure. Restore start looks up the project and verifies the archive file exists. Status queries support both single-UUID lookup and full listing. Storage is shared across connections via Arc<RwLock> with per-operation read or write locking. The listener module (listener.rs) loads PEM-encoded TLS certificates via rustls-pemfile, builds a rustls ServerConfig with TLS 1.3 and the application-level protocol negotiation tag “pwr/1”, binds a std::net TcpListener, and spawns each accepted connection on a dedicated OS thread with a rustls::StreamOwned wrapping the TCP stream for TLS encryption.
Implement archive packaging pipeline and client networking module Add the archive packaging pipeline to pwr-core. The create_archive function builds an encrypted project archive through a four-stage streaming pipeline. First, the project directory is walked recursively and added to a tar archive via the tar crate, excluding .project.toml metadata files. Second, the tar stream is gzip-compressed using flate2 at default compression level and written to a temporary file to bound memory usage independent of project size. Third, the compressed tarball is read back and encrypted using the age X25519 public key from the project’s metadata, producing an opaque encrypted blob the server cannot read. Fourth, the SHA-256 hash of the encrypted blob is computed for integrity verification after transfer. Symlinks are preserved in the archive. The reverse pipeline, extract_archive, first verifies the SHA-256 hash against the expected value, then age-decrypts, gunzips, and untars into the target directory. Two tests verify create-extract round-trip fidelity (README.md, src/main.rs, and Cargo.toml are restored with correct content) and that hash mismatch prevents extraction. Add the protocol client module to the pwr binary. PwrClient manages a connection to pwr-server with TCP socket setup, configurable timeouts, PSK handshake authentication with mutual server proof verification, and framed message send/receive via the core frame module. The archive_project method sends an ArchiveRequest, receives acceptance, streams archive data in 1 MiB chunks with 4-byte length prefixes and a zero-length EOF marker, and sends ArchiveComplete with the SHA-256 hash. The restore_project method requests a project by UUID, receives a RestoreAccept with size metadata, streams chunks back from the server, and returns the complete encrypted blob. get_status queries the server for project listings with optional UUID filtering. The handshake helper generates a 32-byte CSPRNG nonce, computes the HMAC-SHA256 client proof, sends the Handshake message, verifies the server’s HandshakeAck success flag, and performs mutual authentication by validating the server proof against the expected value using constant-time comparison.
Implement full CLI command suite with shell integration and client networking
Add ratatui-based TUI with project browser, creator, and log viewer screens Implement a terminal UI for interactive project management using ratatui 0.28 with the crossterm backend. The application shell provides a tabbed interface with three screens accessible via number keys (1-3) or Tab cycling. A status bar at the bottom displays global keybindings. The Project List screen renders a scrollable table of tracked projects discovered by scanning the local root directory for .project.toml files. Each row displays a color-coded status indicator (green for local, yellow for archived), project name, human-readable size, and last-sync date. Vim-style j/k and arrow key navigation is supported. Pressing r refreshes the list from disk. The screen is empty with an appropriate message when no projects are configured. The Project Creator screen provides a two-field form for interactively creating .project.toml files. The name field is pre-filled from the current directory name. Tab and Shift+Tab cycle focus between name and local path fields. Typing appends characters, backspace deletes. Ctrl+S validates that the path exists and is a directory, that the name is non-empty, then writes the .project.toml via the core library’s atomic write function. Status messages appear on success or validation failure. The Log Viewer screen reads the local JSONL transaction log and displays entries in a scrollable table with timestamp, operation type, project name, data size, and color-coded status (green OK, red FAILED, yellow in-progress). Supports refresh with r and j/k navigation. The TUI is enabled behind the tui Cargo feature flag which gates the ratatui and crossterm dependencies.
Add TLS certificate generation and server initialization utility Implement a certificate generation module in pwr-server that produces self-signed ECDSA P-256 certificates for TLS 1.3 via the rcgen crate. generate_certificate accepts a common name (typically the server hostname), creates certificate parameters with a distinguished name, generates a P-256 keypair, self-signs the certificate with a 365-day validity, and returns the PEM-encoded certificate, PEM-encoded private key, and a SHA-256 hex fingerprint of the certificate for client-side pinning. save_certificate writes the certificate and key to the configured paths with appropriate permissions: the certificate file is world-readable while the private key is restricted to owner-only (mode 0o600 on Unix). Parent directories are created automatically. The init_server function ties everything together for first-time setup. It generates the TLS certificate and key, saves them to /etc/pwr/, generates a random 256-bit PSK via ring’s CSPRNG, creates a ServerConfig with the PSK and certificate paths, and saves the config to /etc/pwr/server.toml. The PSK hex string and certificate fingerprint are printed to stdout with instructions for copying the PSK to the client config. This gives administrators a single command to bootstrap a new pwr-server instance with all security material generated fresh and properly permissioned.
Add comprehensive README with architecture overview, security model, and setup guides Document the complete pwr project covering the three-crate architecture, security model with its three layers (TLS transport, PSK authentication, and age at-rest encryption), quick-start guides for both Debian 12 server and Arch Linux client, the .project.toml file format specification, complete command reference table, configuration file reference for both client and server TOML files, and build-from-source instructions with feature flags for the optional TUI.
Add ClientMessage and ServerMessage sum types with typed deserialization dispatch Introduce two unified enums to the protocol module that wrap all message variants for type-safe routing in the connection handler state machine. ClientMessage covers the five messages the client can send (Handshake, ArchiveRequest, ArchiveComplete, RestoreRequest, StatusRequest) and ServerMessage covers the six server responses (HandshakeAck, ArchiveAccept, RestoreAccept, RestoreComplete, StatusResponse, Error). Each variant delegates serialization to the inner struct via serde’s internally-tagged enum representation using a ‘type’ discriminator field. The message_type method on each enum maps variants to their MessageType discriminant byte, enabling the frame encoder to write the correct header without the caller tracking the mapping manually. Two deserialization functions, decode_client_message and decode_server_message, take a raw payload and a MessageType discriminant and return the typed enum. They validate that the discriminant matches the expected direction, rejecting client message types when a server message is expected and vice versa, catching protocol-level dispatch bugs at the decoding layer rather than deeper in handler logic. The MessageType enum is relocated from the frame module to the protocol module since it is a protocol concern, resolving a circular import between the two modules. Frame encoding continues to reference MessageType for the frame header type byte. The from_byte constructor maps all 13 assigned discriminants with explicit match arms for stability. Eight new tests cover ClientMessage and ServerMessage JSON round-trips, direction-mismatch rejection in decode_client_message and decode_server_message, and message_type discriminant mapping for both enums, adding to the existing serialization and discriminant tests.
Add typed builder functions for all protocol message flows Introduce convenience constructors in the protocol module that build ClientMessage and ServerMessage enums from their constituent fields, eliminating the need for callers to construct nested struct literals. For the archive flow, build_archive_request accepts a UUID, name, size, file count, and compression flag, while build_archive_complete and build_archive_failed produce the terminal ArchiveComplete variants. For the restore flow, build_restore_request wraps a project UUID, build_restore_accept bundles session metadata with size and hash, build_restore_complete signals success, and build_restore_failed attaches an error string. Handshake builders handle both success and failure Ack messages with the server nonce, proof, and optional reason. Additional helpers cover ArchiveAccept, StatusResponse, and generic Error messages. These builders centralize protocol message construction so handler and client code does not repeat struct literals and reduces the surface area for missing required fields.
Refactor server handler to use ClientMessage/ServerMessage enums and protocol builders Rewrite the connection handler’s dispatch function to decode raw frame payloads through protocol::decode_client_message, which returns a typed ClientMessage enum. The match statement now patterns on the enum variant directly rather than matching MessageType discriminants and manually deserializing individual structs. This eliminates redundant deserialization code and catches direction mismatches at the protocol boundary. All server response construction now uses the protocol builder functions: build_handshake_ack_success, build_handshake_ack_failed, build_archive_accept, build_restore_accept, build_status_response, and build_error. The send_server_msg helper takes a ServerMessage enum, calls message_type() for the frame header discriminant, and serializes through encode_frame. This replaces scattered struct literal construction and manual frame encoding with a single call site. The handler functions (handle_handshake, handle_archive_start, handle_archive_finish, handle_restore_start, handle_status) are unchanged in logic but now operate on the inner payload structs extracted by the dispatch layer. Storage locking uses scoped blocks with read().unwrap() and write().unwrap() guards that drop before the next operation. Unused imports are cleaned up, including the removal of the deprecated ring::constant_time import.
Refactor client to use typed ClientMessage/ServerMessage enums and protocol builders Replace raw struct construction and manual frame encoding in the archive, restore, and status methods with protocol builder functions and typed message enums. archive_project now calls protocol::build_archive_request and protocol::build_archive_complete. restore_project uses protocol::build_restore_request. The send_client_msg and recv_server_msg helpers replace the generic send_frame and recv_frame functions, providing type-safe serialization for ClientMessage enums and typed deserialization via protocol::decode_server_message for ServerMessage responses. The handshake function is updated to construct the Handshake message as a ClientMessage::Handshake variant and match the response as a ServerMessage::HandshakeAck variant, with error handling for ServerMessage::Error responses. Response parsing in all methods uses match on ServerMessage variants instead of serde_json::from_slice with unwrapped payloads, catching unexpected message types at the call site rather than failing silently with deserialization errors. The import list is reduced from a wildcard protocol::* to explicit imports for ClientMessage, Handshake, ProjectInfo, ServerMessage, and the protocol module itself for builder function access.
Add comprehensive protocol integration test suite Introduce 20 integration tests in pwr-core/tests/protocol_integration.rs that exercise the full protocol layer without network dependencies, operating entirely on in-memory frame buffers and byte streams. Frame encode/decode round-trips validate that ArchiveRequest, RestoreRequest, and Handshake messages survive serialization through the full pipeline: typed ClientMessage enum to JSON payload to framed bytes with magic and length prefix through decode_frame back to typed enum with correct field values. FrameDecoder buffering tests cover two edge cases: byte-by-byte arrival where the decoder correctly reports None for incomplete frames across dozens of individual push_bytes calls until the full frame is available, and multi-frame reads where two concatenated frames in a single buffer are decoded sequentially without leftover bytes. Error injection tests verify that bad magic bytes produce errors, truncated frame headers (fewer than 10 bytes) return None rather than errors, payloads exceeding the 16 MiB limit are rejected, unsupported protocol versions are detected, and unknown message type bytes trigger framing errors. File chunk streaming tests cover exact 1 MiB chunks, zero-length data (which is indistinguishable from the EOF marker by design since empty chunks serve no purpose), EOF detection, and reassembly of 500 KB of cyclical data across 4 KB chunks with content verification. Serialization coverage iterates over all five ClientMessage variants and all seven ServerMessage variants, verifying each round-trips through JSON and preserves its message_type discriminant. Boundary tests handle empty ProjectInfo lists, near-max-size payloads with u64::MAX size_bytes and u32::MAX file_count, and direction-mismatch rejection where decode_client_message and decode_server_message refuse payloads from the wrong direction.
Implement complete integrity verification module with streaming hasher Replace the stub hash_file function with a full implementation that reads files in 64 KiB chunks through std::io::copy into a SHA-256 hasher, avoiding memory pressure for arbitrarily large inputs. Add hash_bytes_raw for callers that need the 32-byte binary digest rather than a hex string. hash_reader accepts any io::Read source, enabling hash computation on network streams or in-memory buffers without materializing intermediate files. Introduce StreamingHasher for incremental hash computation across multiple update calls. This is designed for chunked network reception where the full data is never in memory at once: the receiver calls update on each chunk as it arrives, then finalize or finalize_raw to obtain the digest. The struct wraps sha2::Sha256 and implements Default. Verification helpers verify_hash and verify_file_hash compare computed hashes against expected hex strings, returning bool rather than Result for use in assert-style checks. The crypto module’s sha256_hex and sha256_file functions are updated to delegate to the integrity module, making it the single canonical location for SHA-256 operations. Ten tests cover known-answer vectors for the empty string and ‘hello world’, raw hash byte length, file hashing including a 10 MB large-file path to exercise chunked I/O, hash verification for both match and mismatch cases, file verification, streaming hasher correctness against a known answer, streaming-vs-oneshot equivalence across four chunks, and hash_reader with an in-memory source.
Add HKDF-SHA256 per-project key derivation from master PSK Implement derive_project_key in the crypto module using ring’s HKDF implementation with SHA-256. The function takes the 256-bit master PSK as the HKDF salt and the project UUID bytes as the info parameter, producing a deterministic 256-bit per-project key. This design means per-project encryption keys are never stored on disk — they are re-derived from the master PSK and project UUID on each archive or restore operation. If the PSK is rotated, all existing projects become inaccessible, which is documented as a deliberate security property rather than a bug. The HKDF-Extract step uses the PSK as the salt with an empty initial key material, producing a pseudorandom key. HKDF-Expand then derives 32 bytes of output key material bound to the project UUID via the info parameter, preventing cross-project key reuse even if an attacker learns one project’s derived key. Four tests verify deterministic derivation, UUID binding, PSK binding, and correct 256-bit output length.
Add progress callback support to archive and extract pipelines Introduce progress reporting to the archive packaging and extraction functions through an optional callback parameter. The ProgressFn type is a boxed closure receiving an ArchiveStage enum and a fractional progress value from 0.0 to 1.0. Eight stages cover the full lifecycle: Scanning, Tarring, Compressing, Encrypting, Hashing, Decrypting, Decompressing, and Extracting. The original create_archive and extract_archive signatures are preserved as convenience wrappers that call the new create_archive_with_progress and extract_archive_with_progress variants with None for the callback, maintaining backward compatibility for callers that do not need progress reporting. Progress granularity is coarse but meaningful: the archive pipeline reports six transitions (Scanning at 0.0, Tarring at 0.1, Compressing at 0.3, Encrypting at 0.5, Hashing at 0.9 and 1.0). The extract pipeline reports eight transitions (Hashing at 0.0 and 0.2, Decrypting at 0.3 and 0.5, Decompressing at 0.6, Extracting at 0.7 and 1.0). Future refinements could report per-file progress during the tar stage by tracking bytes written against the pre-computed directory size.
Add comprehensive crypto integration test suite with 26 tests Introduce crypto_integration.rs exercising the full security subsystem across four categories. PSK tests (8) verify 256-bit key generation across ten iterations, hex round-trip preservation including case insensitivity, rejection of odd-length and wrong-length hex strings, deterministic client proof computation, the complete mutual authentication flow with distinct client and server proofs, and PSK binding where different keys produce different proofs. Age encryption tests (6) cover small, empty, and 1 MB large payload round-trips, ephemeral key non-determinism (same plaintext produces different ciphertext but both decrypt correctly), wrong identity rejection, and corrupted ciphertext detection via single-byte flipping mid-payload. HKDF tests (4) verify 256-bit output length, deterministic derivation for same PSK and UUID, cross-project key uniqueness for different UUIDs, and a known-UUID stability test confirming the derived key is neither all-zeros nor all-PSK-bytes. Integrity tests (3) confirm streaming hasher equivalence with oneshot hashing across 5 MB of 64 KB chunks, empty file hashing matching the well-known empty SHA-256 digest, and proper I/O error propagation for nonexistent files. Archive round-trip tests (3) create a multi-file project with README, two Rust sources, a design doc, and Cargo.toml, run through create_archive → extract_archive, verify all file contents match exactly and .project.toml is excluded. Hash verification rejection confirms wrong hashes prevent extraction. A progress callback test records all stage transitions during archive creation and verifies the final progress fraction reaches 1.0.
Implement server main entry point with clap CLI and fix listener/handler compilation Add a complete main.rs for pwr-server with three clap subcommands. The init subcommand detects or accepts a hostname, delegates to cert::init_server for TLS certificate generation, PSK creation, and config file writing, then prints the start command. The start subcommand locates the config file via the standard search path, loads and validates the ServerConfig, logs the bind address and storage path via tracing, and calls listener::run to begin accepting connections (blocks until shutdown). The status subcommand loads the config and prints a summary of all settings plus a connectivity check by attempting a brief TCP connection to the configured port, reporting whether the server appears to be running. Logging is configured via tracing-subscriber with an env-filter defaulting to pwr_server=info, controllable via the RUST_LOG environment variable. The –foreground flag on the start subcommand is accepted but daemonization is not yet implemented. Fix two compilation errors discovered during integration. The listener’s TLS setup incorrectly pattern-matched rustls::StreamOwned::new as if it returned a Result; it returns the stream directly in rustls 0.23. The handler’s handle_archive_finish had a borrow conflict where the session reference from the Archiving state match arm prevented reassigning *state; the fix extracts project_uuid and project_name into local variables before the state transition.
Add IP-based authentication rate limiter and integrate into handshake handler Implement a per-IP rate limiter in the server’s auth module that tracks failed authentication attempts within a sliding 60-second window. Each IP is allowed up to 5 failed handshake attempts before being banned for 300 seconds. The RateLimiter maintains an in-memory HashMap<IpAddr, RateLimitEntry> with periodic cleanup of expired entries to prevent unbounded memory growth. The check_attempt method atomically increments the attempt counter, resets the window if it has expired, checks whether the IP is currently banned, and returns false if the attempt should be rejected. record_success resets the counter and clears any ban on successful authentication, allowing legitimate clients that temporarily misconfigured their PSK to recover. The rate limiter is shared across all connections via Arc<Mutex<» and passed through HandlerContext. The handshake handler calls check_attempt before validating the PSK proof, ensuring brute-force attempts are blocked before any cryptographic work is performed. If the rate limit is exceeded, a HandshakeAck with a descriptive error is sent and the connection is closed. On successful authentication, record_success is called to clear the counter. Four unit tests verify that the first five attempts are allowed, the sixth is blocked, record_success resets the counter, and different IPs are tracked independently.
Add file chunk streaming to archive and restore handlers Implement the raw chunk streaming protocol in both directions on the server side. After accepting an ArchiveRequest, the handler enters a chunk receive loop (handle_archive_chunks) that reads 4-byte big-endian length prefixes followed by that many bytes of data, appending each chunk to the project’s archive file on disk via append-mode file I/O. A zero-length chunk signals EOF. The total bytes received is logged for monitoring. On the restore side, handle_restore_chunks reads the complete archive file from disk through the storage layer, then streams it back to the client in 1 MiB chunks with the same 4-byte length-prefixed format, followed by a zero-length EOF marker and a flush. This mirrors the client’s restore_project method which reads chunks in the same format. The dispatch function now chains the chunk streaming phase after the initial request acceptance: ArchiveRequest dispatch calls handle_archive_start followed by handle_archive_chunks, and RestoreRequest calls handle_restore_start followed by handle_restore_chunks. The ArchiveComplete and RestoreComplete messages are received as framed messages after the chunk phase completes, handled by the existing finish functions.
Add server integration test suite and library target for external testing Create 17 integration tests in pwr-server/tests/server_integration.rs covering the full server subsystem. Storage CRUD tests (6) verify project creation with duplicate rejection, removal, archive read/write round-trips through the storage layer, persistence across re-opens via registry JSON, and size limit enforcement rejecting archives exceeding the configured max_project_size_gb. PSK handshake tests (3) validate the full mutual authentication flow with correct proof verification and wrong-PSK rejection. Frame-level integration tests (3) exercise the complete serialization pipeline: Handshake framing round-trip with client_id and nonce preservation, ArchiveRequest framing with all fields intact, and server message decode direction checking. File chunk streaming tests (2) simulate the chunk protocol by encoding 250 KB of cyclical data across 4 KB chunks with 4-byte length prefixes and EOF markers, reassembling on the receiver side and verifying content equality. An empty archive test confirms that a standalone EOF marker produces zero bytes of received data. Rate limiter tests (3) verify the 6th attempt is blocked after 5 allowed, success resets the window, and different IPs are tracked independently. A full archive-restore simulation test writes 500 KB of data through the storage layer, reads it back, and verifies byte-exact restoration plus metadata persistence. A cleanup test confirms that removing a project after a failed archive deletes both the archive file and registry entry. To support external integration tests, a library target (lib.rs) is added to pwr-server, re-exporting all modules as public while the binary target (main.rs) retains its own private module declarations.
Implement TLS connector with certificate pinning and retry logic for the client Add a complete TLS connection path to PwrClient, replacing the previous stub that returned a not-yet-implemented error. The connect_tls function builds a rustls ClientConfig with webpki root certificates for standard PKI validation. When a server_fingerprint is set in the client config, a custom FingerprintVerifier replaces the default verifier. This verifier computes the SHA-256 hash of the server’s end-entity certificate DER bytes and compares it against the pinned hex fingerprint, implementing trust-on-first-use style certificate pinning without requiring a private CA. The verifier supports TLS 1.2 and 1.3 signature schemes including RSA and ECDSA P-256. The PwrClient struct gains server_addr, psk, and pinned_fingerprint fields, enabling a reconnect method that re-establishes a TCP connection to the same server and re-runs the PSK handshake without reloading the config file. The connect method now branches on use_tls, routing to either the TLS path with certificate validation or the plaintext path for local testing. Add retry logic via the with_retry helper, a generic function that wraps any fallible operation with exponential backoff. The caller provides a retryable-error predicate; is_retryable_error recognizes connection refused, timeout, connection closed, connection reset, broken pipe, and unexpected EOF as transient errors worth retrying. The base delay doubles each attempt, with a configurable maximum number of retries.
Add progress reporting module with indicatif integration and stage callbacks Introduce a progress module in the pwr CLI crate that provides two display modes for long-running operations. The archive_progress_bar and restore_progress_bar functions create indicatif ProgressBar instances with styled templates showing a spinner, progress bar, byte counter, and ETA. The update_archive_progress function maps ArchiveStage enum values to human-readable status messages displayed in the bar. For non-interactive terminals or quiet mode, print_stage emits a simple line to stderr for each stage transition during archive or extract operations. This provides visibility into long-running operations without requiring a TTY.
Add client integration test suite with handshake, streaming, retry, and progress tests Create 14 integration tests in pwr-cli/tests/client_integration.rs covering the client-side protocol layer. Handshake tests verify that ClientMessage frames encode with correct magic bytes, version, and type discriminants, and that decode_client_message recovers the original Handshake struct with client_id and nonce intact. Archive flow tests exercise ArchiveRequest and ArchiveComplete serialization round-trips with all fields including UUID, name, total_size, file_count, compression, and hash. Restore flow tests verify RestoreRequest encoding and decoding. Server response parsing tests validate that HandshakeAck, Error, and StatusResponse messages are correctly deserialized from framed payloads, including success flags, error codes, and project info vectors with UUID and file_count fields. Chunk streaming tests cover five size boundaries from zero bytes (EOF detection) through 1 MiB, plus standalone EOF marker encoding. Retry logic tests verify is_retryable_error correctly classifies connection failures, timeouts, and broken pipes as transient while treating authentication and not-found errors as fatal. with_retry is tested for immediate success, maximum retry exhaustion (initial + 3 retries = 4 calls), and early termination on non-retryable errors after 1 call. A progress stage test confirms all five ArchiveStage variants are distinct.
Wire progress bars and retry logic into CLI archive and restore commands Integrate the progress reporting module and retry logic into the two main CLI workflows. The archive command now creates a progress bar before the packaging pipeline and passes it to create_archive_with_progress via a ProgressFn callback that maps ArchiveStage values to status messages and fractional bar position. A second progress bar tracks the upload phase. Both bars are finished and cleared on completion. The restore command similarly uses a download progress bar keyed to the stored project size and an extraction progress bar sized to the received encrypted blob. Connection attempts now use with_retry wrapping PwrClient::connect with 3 retries and a 1-second base delay, retrying only on transient network errors as classified by is_retryable_error. This provides resilience against momentary server unavailability without masking fatal errors like authentication failures.
Add –tls flag to all network commands, –limit to log, –auto-install to shell init Extend the CLI with connection and usability flags across all subcommands. Every command that contacts the server (archive, restore, ensure, status, list) now accepts a –tls flag that is passed through to PwrClient::connect, controlling whether the connection uses TLS with certificate pinning or plaintext for local testing. The log command gains a –limit flag defaulting to 50 entries, with a summary line showing how many entries were truncated. The shell init command supports –auto-install which opens the shell rc file in append mode and writes the eval line directly, providing a one-command setup experience. Function signatures throughout main.rs are updated to thread the new boolean parameter. The ensure command passes tls=false through to its internal restore call since ensure is triggered from the shell wrapper where TLS may not be configured. The list command delegates to cmd_status with tls=false for local-only directory scanning.
Clean up unused imports and fix compilation warnings in client TLS module Remove unused Arc import from the top-level client scope (it is only needed inside the connect_tls function where it is imported locally). Replace TrustAnchor with the correct ServerName import from rustls::pki_types. Remove the unnecessary mut qualifier from the ClientConnection binding in connect_tls.
Fix server handler and listener warnings: remove unnecessary parentheses and unused imports Clean up compilation warnings in the pwr-server crate. In handler.rs, the send_server_msg function signature used unnecessary parentheses around impl Write which triggered the unused_parens lint. In listener.rs, the PrivateKeyDer import was unused since the key is loaded via rustls_pemfile::private_key which returns a generic PrivateKeyDer type that does not need to be explicitly imported.
Add server address display to status command output Extend the status command to print the configured server host and port after the project count summary, giving users a quick reminder of which NAS their projects are archived to.
Implement TLS transport with custom certificate verifier and fingerprint pinning Replace the TLS-not-yet-implemented stub in the PwrClient with a working rustls-based TLS 1.3 connection layer. The connect_tls function builds a ClientConfig using the dangerous API with a custom certificate verifier (CertVerifier) that accepts self-signed server certificates — necessary because pwr-server generates its own ECDSA P-256 certificate during init rather than obtaining one from a public CA. Authentication is provided by the PSK handshake running over the encrypted channel, so the TLS layer provides confidentiality while the application layer handles mutual authentication. The verifier supports optional SHA-256 certificate fingerprint pinning. When a server_fingerprint is present in the client config, the verifier computes the SHA-256 hash of the server’s end-entity certificate and compares it against the pinned value, rejecting the connection on mismatch. When no fingerprint is configured, the verifier accepts any certificate but logs the observed fingerprint for the user to pin later, enabling a trust-on-first-use workflow. Signature verification in the verifier accepts all TLS 1.2 and 1.3 signatures without checking against a root CA. This is intentional: the security model relies on PSK-based mutual authentication at the application layer combined with certificate pinning for defense-in-depth, rather than on the Web PKI trust infrastructure which would reject self-signed certificates. The supported_verify_schemes list advertises ECDSA and RSA schemes to maximize compatibility.
Add exponential backoff retry logic to PwrClient connection Implement connect_with_retry in PwrClient that wraps the existing connection logic with up to 3 retry attempts using exponential backoff starting at 1 second and doubling to 2 and 4 seconds. The existing connect method is renamed to connect_once and made private, with the public connect method now calling it in a retry loop. Transient network failures such as TCP connection refused or TLS handshake timeouts are retried, while authentication failures are not (they propagate immediately since retrying with the same credentials would produce the same result). Each retry attempt is logged at WARN level with the error and delay, and a successful retry is logged at INFO level. The connect_timeout_secs from the client config is applied to each individual TCP connection attempt within the retry loop.
Add progress callback support to client archive and restore methods Extend archive_project and restore_project with optional progress callbacks that report bytes transferred against total size. The existing methods become thin wrappers calling the new archive_project_with_progress and restore_project_with_progress variants with None for backward compatibility. During archive, the callback fires after each 1 MiB chunk is written to the TCP stream, reporting cumulative bytes sent. During restore, the callback fires after each received chunk is appended to the buffer, reporting cumulative bytes received. The callback signature is fn(u64, u64) where the first argument is current progress and the second is the total, suitable for driving indicatif progress bars or TUI progress displays without coupling the client module to any specific UI library.
Add progress bar integration to CLI with empty-archive edge case handling also add 0-byte transfer file size.
Fix client integration tests and add retry-aware connect test Repair the client integration test suite after the retry logic and library target additions. The connect_to_nonexistent_server test now uses a match statement instead of unwrap_err to work with the ClientResult type. The connect_timeout_is_respected test is marked #[ignore] because OS-level TCP timeout behavior varies across platforms, making sub-second timeout assertions unreliable in CI environments. Unused imports (TcpListener, Duration) are removed from the test file.
Add systemd service unit and deployment guides for server and client Create a hardened systemd service unit for pwr-server with security directives including NoNewPrivileges, PrivateTmp, ProtectSystem=strict, ProtectHome=yes, and read-only access to config and certificate paths with read-write access only to the project storage directory. The service runs as the pwr system user, restarts on failure with a 5-second delay, and logs to journald. Resource limits cap file descriptors at 4096 and memory at 512 MB. Add docs/server-setup.md covering the complete Debian 12 deployment workflow: installing build dependencies, compiling with cargo, initializing the server to generate TLS certificates and PSK, creating the storage directory with correct ownership, installing and enabling the systemd service, verifying the listener with ss, configuring firewall rules for nftables and iptables, and troubleshooting common issues. Add docs/client-setup.md covering the Arch Linux client workflow: building the binary, running pwr init with server host and PSK, setting up shell integration for bash, zsh, and fish, performing the first archive and restore, launching the TUI, and troubleshooting configuration and authentication errors. Include a full configuration file reference.
Fix warning: remove unused variable and clean up imports Remove the unused config variable clone from the listener accept loop where it was captured by the thread closure but never referenced. Remove the unused PrivateKeyDer import from rustls pki_types. Prefix the catch-all match variable with underscore to suppress the unused variable warning in the dispatch function. Keep the required parentheses around impl Trait syntax in argument position as required by Rust 2024 edition for disambiguation. Add MIT LICENSE file.
Annotate session state structs with allow(dead_code) for future use The ArchiveSession and RestoreSession structs in the handler state machine contain fields (session_id, file_count, compression, bytes_received, bytes_sent) that are stored for future use in resume-after-interruption logic and detailed transfer statistics. Currently they are only written during state transitions but not yet read back. Add #[allow(dead_code)] annotations to suppress compiler warnings while keeping the fields available for the planned transfer progress tracking and interrupted archive resume features.
Add operation progress overlay to TUI and wire pwr tui subcommand in CLI Implement an OperationOverlay screen for the ratatui-based TUI that renders a centered modal dialog with a progress gauge, transfer statistics, and a cancel prompt during archive and restore operations. The overlay displays the operation name and project name in the title bar, a cyan progress gauge driven by the bytes_done/bytes_total ratio, a statistics line showing human-readable byte counts with percentage, and a status line that changes between ‘Press Esc to cancel’ during transfer, ‘Transfer complete’ on success, and red error text on failure. The format_size helper converts byte counts to GB/MB/KB/B with one decimal place. The handle_input method maps Escape to cancellation and Enter to dismissal after completion. Wire the pwr tui subcommand into the CLI behind the tui feature flag. The Commands enum gains a Tui variant gated by #[cfg(feature = “tui”)], the dispatch match arm calls cmd_tui(), and the tui module is conditionally compiled. Building without –features tui produces a CLI-only binary; building with the flag includes the ratatui and crossterm dependencies and the tui module, enabling pwr tui to launch the interactive interface.
Add end-to-end integration tests for full client-server lifecycle Implement two end-to-end tests using paired in-memory byte streams (Pipe struct implementing Read+Write via Arc<Mutex<Vec») that simulate a complete client-server interaction without network dependencies. test_full_client_server_archive_restore_cycle creates a multi-file project directory, generates age encryption keys and a PSK, runs the archive pipeline to produce an encrypted blob, then spawns two threads for client and server communicating through paired pipes. The client performs the full protocol sequence: Handshake with HMAC-SHA256 proof, ArchiveRequest with project metadata, chunked data transfer with 1 MiB chunks and zero-length EOF marker, and ArchiveComplete with SHA-256 hash. The server thread receives the Handshake, verifies the client proof, responds with its own server proof for mutual authentication, reads the ArchiveRequest, receives all chunks via the 4-byte length-prefixed streaming protocol, and acknowledges ArchiveComplete. After both threads join, assertions verify the server received the exact encrypted blob, decryption succeeds, and the local project metadata transitions correctly through local → archived → placeholder states with .project.toml file survival. test_end_to_end_hash_verification_prevents_corruption validates that tampering with a single byte of the encrypted archive produces a different SHA-256 hash, ensuring integrity violations are detectable before extraction.
Document required parentheses around impl Trait syntax in handler signatures The Rust 2024 edition requires explicit parentheses around compound trait bounds in function argument position. Without them, ‘&mut impl Read + Write’ is ambiguous: it could parse as ‘(&mut impl Read) + Write’ (a mutable reference to a type implementing Read, with an additional Write bound) or ‘&mut (impl Read + Write)’ (a mutable reference to a type implementing both). The compiler requires the latter to be written with parentheses. Add a module-level doc comment explaining this so future maintainers do not attempt to remove the parentheses.
Add bash tab completion script for pwr CLI commands Provide a bash completion function for all pwr subcommands and their flags. The completion script maps each subcommand to its valid arguments: init completes –server-host, –server-port, –psk, and –local-root; archive, restore, and ensure complete directory paths; status and list offer –recursive/-r; log provides –errors/-e and –project; shell completes bash, zsh, fish, and –init. The completion is installed via ‘source <(pwr completions bash)’ in .bashrc.
Ships:
Note: Very untested, only try with projects you have backups of! Psync was designed to solve the problem of my laptop having limited storage and my with to be able to use my nas semi-transparently without the use of automountd or fuse both of which I have tried and deployed in other scenarios and neither of which are resiliant to not being able to contact the NFS server when on different networks. So i made Psync which uses encryption which make me feel secure enough to open it up to the internet instead of unauthenticated NFS....
|
1792878793.759945
|
1793742793.759945
|
|
39412
|
Cultivation Incremental by @RanDK | Stardance
|
RanDK
|
2
|
93.0
|
1329
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T14:06:11Z", "hours": 20.0, "multiplier": 17.26, "payout": 338, "blessing": "neutral", "text": "VERSION 0.1 Only 16+ can play the Game currently as any other new roblox game. I am glad to add more of the essentials mechanic of the Game! Now here is the List of Features i have added to the game since the last release: Added Onboarding/Tutorial! I see a lot of player gets confused when they first joined the game, so now i added a tutorial on the basic of the game. That is: Cultivate, Shop, and Quest. Added New Enemy : Goblin. Added More quests . Added Cultivating Animation! Added Gamepass! Now you can buy a gamepass to get a benefit and support me! + Gamepass badge on the bottom left of the screen when bought. And more! you can read all the devlogs to see the small changes. I still have some features not yet implemented, that is fighting enemy animation, weapons, and PVP . But i don’t really have the courage since the Stardance deadline is within 3 weeks (and its already extended), but i do have plan to continue the project later in December for my own personal project (close sourced, even though right now its already semi close source since the models, maps i used is not in the code but in the roblox studio file.). Thanks for everyone who have followed the game journey, albeit short i thank you guys for supporting me!! (Especially those who bought my gamepass!!) . I CANT BELIEVE I GOT MY FIRST ROBUX FROM MAKING A GAME HERE IN STARDANCE :DD THANK YOU SO MUCH!!! This Game is Made with the best of my Game Dev abilities .", "repo": "https://github.com/RKPYI/cultivation", "demo": "https://www.roblox.com/games/128506264671282/Cultivation-Incremental"}, {"ship_num": 2, "ts": "2026-08-17T03:44:11Z", "hours": 73.0, "multiplier": 13.89, "payout": 991, "blessing": "neutral", "text": "VERSION 0.0.1 Only 16+ can play the Game currently as any other new roblox game. I am glad to finish the essentials mechanic of the Game! Now here is the List of Features the game have: Cultivate, just stand on the existing zone (and make sure you have the required Realm) and you’ll gain Qi automatically Breakthrough, the moment the top bar is full, you can breakthrough to higher realm which increases your qi gain and boost movement speed and jump a little bit. Quest, you can talk to an NPC with a (!) to get the quest. After finishing a quest, you can talk to the NPC again to claim the quest rewards. Battle, you can walk to enemy and you’ll automatically deal damage to them! Shop, you can buy items in shopkeeper NPC with Spiritual Stones which you can get from defeating an enemy or finishing a quest. The feature is implemented, but its very simple and “unprofessional”. Lame excuse but its really because this is my first time making game and im still learning the basics. I’ll be adding more stuff and refine the core features in the future updates!! This game is made for the love of the game and genre :)", "repo": "https://github.com/RKPYI/cultivation", "demo": "https://www.roblox.com/games/128506264671282/Cultivation-Incremental"}]...
|
[{"post_id": 74457, "ts": "202 [{"post_id": 74457, "ts": "2026-09-27T12:35:39Z", "hours": 6.9819, "text": "[Devlog #29] The Last Devlog The Game New Contents Gamepass! Now you can buy a gamepass to get a benefit and support me! + Gamepass badge on the bottom left of the screen when bought. Add beam/arrow to the quest npc when you’re done with their given quest. Add equip best button in the inventory menu. Add dmg mult information in the inventory meny (item detail menu). Updates Fix some bugs, for example player able to move while cultivating. Optimize and remove unused leaderboards. ready to publish it! Thank you for the opportunity Hackclub for me to grow as a beginner roblox developer I appreciate the support from everyone although my game is far from “professional”, atleast its a fully working game! and Im happy with it."}, {"post_id": 68131, "ts": "2026-09-14T15:48:31Z", "hours": 1.1519, "text": "[Devlog #28] New Content Added “Aura” like particle effect when cultivating, its more like you “suck” the surrounding qi into the body. Update Update the collision system to be more robust, before theres a problem with the collision when i try adding the Aura Part inside the Player. Now it will independently calculate the spatial rather than touching. Nothing crazy, just some cool small detail."}, {"post_id": 66709, "ts": "2026-09-12T16:27:10Z", "hours": 2.3578, "text": "[Devlog #27] New Contents New Mobile Button to Cultivate New Shortcut UI to press “C” to Cultivate when entering a Zone they can cultivate in. New Tutorial Section to tell the player to press “C” to start cultivating and gathering qi. Update Player now can’t walk/jump when cultivating May need to revise the button for mobile since its very basic right now"}, {"post_id": 66071, "ts": "2026-09-11T17:16:34Z", "hours": 1.8178, "text": "[Devlog #26] New Content Added Cultivating Animation! Update Now you have to press “C” to cultivate rather than just automatically gain Qi just by entering the Qi Zone. Next one is to add button for mobile user, and also add UX feedback for when they’re able to press C to cultivate and when they can’t (outside zone & higher realm zone). Oh! also adding particle/aura when player is cultivating for more satisfying feel."}, {"post_id": 61661, "ts": "2026-09-04T18:08:47Z", "hours": 0.5442, "text": "[Devlog #25] Updates Added more quests Optimize NPCServiceUtils.Data JSON for NPC that gives Chained Quests. Mostly just optimizing the json by creating a helper so that making a quest is easier and less error prone."}, {"post_id": 60953, "ts": "2026-09-03T17:11:44Z", "hours": 3.1036, "text": "[Devlog #24] New Content Added Onboarding/Tutorial ! I see a lot of player gets confused when they first joined the game, so now i added a tutorial on the basic of the game. That is: Cultivate, Shop, and Quest . Im really happy with the result, i didn’t expect making the trail line to be so easy (using beam instance from roblox themself). And maybe i’ll add onboarding for fighting enemy and equipping items, but its not really neccessary (i think)."}, {"post_id": 60245, "ts": "2026-09-02T14:23:32Z", "hours": 2.5775, "text": "[Devlog #23] New Content Added refresh countdown on leaderboard UI. Updates Moved enemy overhead gui from server to client (not yet tested for the behaviour in multiplayer) for more personalization (point 2 is possible because of this change). Dynamic enemy name color, higher realm will be colored red and cannot be attacked no matter how high your dmg is until you reach their cultivation rank. Polishing the game :))"}, {"post_id": 59659, "ts": "2026-09-01T16:01:39Z", "hours": 1.0572, "text": "[Devlog #22] New Contents Added 1 more enemy, goblin. Update Remove the realm requirement in NPC Shop for buying an item (Cannot buy the item until realm req is fulfilled). The requirement now only active when trying to equip the item. Fixed quest id being duplicated. im back!! hopefully i can make some more stuff although i may not have as much free time as before. I’ll try to make some progress everyday though! Try it Now Game may not be up to date from the devlog Cultivation Incremental (16+)"}, {"post_id": 46405, "ts": "2026-08-13T16:13:06Z", "hours": 0.8792, "text": "[Devlog #21] Updates Added a proper README. Fixed some minor bugs. The next devlog will be for a published Game . Its not a professional Roblox game, but its my learning process from 0 to this. So i appreciate any type of critics and feedback for me to develop this game furthur, because i really love these type of games. So im literally making my dream game here! But its still lacking to my vision because of my lack of time and skills."}, {"post_id": 45814, "ts": "2026-08-12T15:17:53Z", "hours": 0.6147, "text": "[Devlog #20] Update Added 1 more quest New Assets Added Game Icon and Thumbnail Spent most of my time on figma designing the Icon and Thumbnail of the game, but the time is not getting tracked because i use the app instead from web . Not yet released, but i’ll be testing it first with a few friends first and maybe add some feature because ngl it feels bland right now, but maybe its just my opinion. So to get some feedback, ill be testing it with my friends tommorow and maybe catch some multiplayer bugs that i couldn’t find when playing alone. I really don’t want to publish a boring game, but the time is ticking and im getting more and more busy this month."}, {"post_id": 45161, "ts": "2026-08-11T14:03:07Z", "hours": 0.3044, "text": "[Devlog #19] Update New UI for Leaderboard! I’ll be polishing the game (for real) and release the first version tommorow (hopefully)… Im getting really busy"}, {"post_id": 44685, "ts": "2026-08-10T16:42:21Z", "hours": 3.5644, "text": "[Devlog #18] New Content Added Qi Mult Counter when entered a Zone. The fire has animation Added Leaderboard . (UI is In Progress) . Spent most of my time making UI Animation using sprite sheet and integrate DataStoreService for leaderboard"}, {"post_id": 44139, "ts": "2026-08-09T18:19:01Z", "hours": 0.3978, "text": "[Devlog #17] Update Make the Breakthrough bar slimmer and more compact. Im kinda busy today and havent done anything yet, so im just improving the ui a little bit. Also i wanna add a Current Qi Multiplier Counter at the Top Right Corner of the screen using the fire gif."}, {"post_id": 43367, "ts": "2026-08-08T15:57:22Z", "hours": 4.3803, "text": "[Devlog #16] New Content Added 5 new Items you can buy. Updates Implemented the Functionality of the NPC Shop. You can now buy items here. Updated the Shop UI, now it looks better compared to previous version. Spent most of my times debugging the UI since i reuse the modal component that the main menu uses. So yea, i integrate the npc shop inside it and that creates a lot of bugs and conflict . Well i fixed all the bug i found so thats good. Now that the main features is done the next step is to polish the map and adding the game content (More NPC, Quest & Items)"}, {"post_id": 42792, "ts": "2026-08-07T18:02:10Z", "hours": 1.4983, "text": "[Devlog #15] Update Added UI for NPC Shop Spent all of my time designing the UI… i still dont like the yellow box, but it’ll do for now. Next i’ll be making it dynamic and functionable."}, {"post_id": 41964, "ts": "2026-08-06T14:25:20Z", "hours": 2.245, "text": "[Devlog #14] New Content Added Shop NPC (no functionality yet) Updates Enemy now drops Spiritual Stones Bugfixes & Refactor Fix Quest bug, it needs some nil value check protection. Fix Zone bug when player quit/disconnect, have to stop a task gracefully when the player disconnect. Refactor Inventory UI Component to use useMemo and make the Item Display Panel its own component. Zone Detection now only detect the user HumanoidRootPart for reliability and no jittery detection. No major progress today, just bugfixing and refactoring. I think im getting close to finishing the main loop of the gameplay. Cultivate -> Breakthrough -> Fight stronger enemy -> Buy better item in shop -> Cultivate -> Repeat."}, {"post_id": 41418, "ts": "2026-08-05T16:45:14Z", "hours": 4.5714, "text": "[Devlog #13] New Contents Added Marks for NPC with Quest Combat and Enemy! (Its partially done) The combat is still barebone, you get close to the enemy, the enemy got damaged by 1, when its hp is 0, it’ll add to the player totalEnemyKilled +1. Thats the current implementation. I will polish the combat feature and integrate it with the quest feature so that it tracks the amount of “enemy” killed."}, {"post_id": 40786, "ts": "2026-08-04T15:21:08Z", "hours": 2.5389, "text": "[Devlog #12] New Content Added Spiritual Stone . a new currency with no functionality yet. I’ll be adding shop that uses Spiritual Stone as the currency. Updates Now, completing a quest gives reward . Currently, you can get spiritual stones or items from quests. Added Notification Badge in the inventory button UI for when player get a new item. Remodeled the Old Man to Mysterious Being . Next i’ll polish the npc interaction more by adding a “❓” for npc with quest, and “❗” for a finished quest. And maybe start building the next feature, that is herb collection/fighting enemy."}, {"post_id": 40130, "ts": "2026-08-03T15:06:52Z", "hours": 5.1494, "text": "[Devlog #11] New Contents Added Quest List UI on the right side of the screen. 2 New Sfx for Taking a quest and Completing a quest. Updates Improves NPC Dialog UI , look at Devlog #10 for comparison. Options in the dialog now have a keyboard shortcut with the corresponding number. For example: clicking 1 in keyboard will click the first option. Refactors Create a Close Button component for ease of use. Refactor Dialogue View UI by creating DialogueOptions component. I am very satisfied with the Quest List UI, its looking really clean and good. I also make another design for the dialogue rectangle, its subtle but there’s a pattern and gradient on the dialogue UI. Next work is adding more npc, quest, and actually adding the Quest Rewards . Im planning on adding Spiritual stones and shops for item that improves qi gain. And maybe adding weapon and enemy in the future."}, {"post_id": 39516, "ts": "2026-08-02T14:54:08Z", "hours": 3.6114, "text": "[Devlog #10] New Contents Added NPC Dialogs Added Quests Features Broo, this two thing is messing my brain especially with all the thing to consider… Atleast the ui is presentable and its functionality is basically done. Its quest progress is actually saved to the Player Data, but there is no progress update yet, and also i can repeatedly take this quest again and again… Ok the serverside makes the player to not be able to take same quest twice, so its safe. But the UI, there is not yet state/system to detect that the user already take the quest… My next work is probably: Updating UI so that it knows the player already took the Mission. Adding taken quest UI Update the quest progress, etc. OK everything i said sounds very confusing even to me . In conclusion, my next work is just finishing the quests features and polishing the UI."}, {"post_id": 38931, "ts": "2026-08-01T15:15:53Z", "hours": 5.4314, "text": "[Devlog #9] New Contents BIGGER MAP (Added more houses, trees, mountains, clouds, and floating island). Added 4 more Zones . Added Realm List Board beside Spawn, it has the Full list of All Realms level. Updates Qi Particle inside zone now have different color as qi multiplier gets higher. Color hierarchy: White –> Blue –> Purple –> Gold Increasing qi requirement for Realm 100+ (Immortals) [Kinda irrelevant right now, since its statistically impossible to get there]. Added better placeholder image for Item. Changed Item Background according to Whether player can equip it or not (Realm requirement met). Red for can’t equip, Blue for can equip, Green for equipped item. Refactors (Technical) Move Qi Breakthrough sfx from RealmService to the SoundService. Move Zone Detection to Serverside for security reason. I still haven’t refactored the Inventory UI yet and all the models is not made by me. The only model i made was the Realm Board List. But every UI is made by me! (except for the fire icon)."}, {"post_id": 38278, "ts": "2026-07-31T16:19:33Z", "hours": 4.4764, "text": "[Devlog #8] New Content Item !! You can get more Qi Multiplier from item. And theres also Realm Requirement for each item. Inventory UI is now working (except for Delete Button). Info For the UI, the Layout Order is prioritizing equipped item. If Player realm lower than requirement, the requirement text will be red. Implementing Inventory system was very complicated, especially the ui. So many state, maybe its because i put basically everything in one file. I’ll refactor that first before im adding new content, otherwise i’ll lose my mind editing that spaggeti code later down the line… Anyway, as you can see in the screenshot. I don’t have the asset for items yet. Maybe i’ll work on that later, though not the highest priority. My priority right now is to refactor the ui and implement the delete button and adding Equip Best button."}, {"post_id": 37660, "ts": "2026-07-30T15:33:17Z", "hours": 4.3217, "text": "[Devlog #7] New Content Added Background Music ! Added Music and Sfx toggle in Settings Added Walkspeed & Jump Boost from Realm level Added Sprint ! Press Left Shift to Sprint. Bug Fixes Fix Overhead Gui , Everyone now have the Overhead Gui, and the Realm Level is synced to the actual player Realm. P.S. Shop and Inventory is still empty… Its hard designing and actually implementing the UI… Also i have too much idea and at the end only think about it and dont know how to implement it"}, {"post_id": 37040, "ts": "2026-07-29T14:43:03Z", "hours": 3.4936, "text": "[Devlog #6] Update Force player to use R6 Model for simplicity. New Content Added a Forest around the map. Added Menu Button (Settings, Shop, Inventory) Added Modal UI Component (still empty) Added SFX for Button when clicked and hovered. P.S. Most of my time is spent on making the design for the Settings, Shop, and Inventory Icon. And also on the functionality of the button (open/closing modal). Next, i’ll probably work on adding more sfx and backsound for the game. And also make the gui of the shop and settings."}, {"post_id": 36378, "ts": "2026-07-28T13:36:41Z", "hours": 4.3125, "text": "[Devlog #5] Update Implemented zone Realm Requirement and Qi Multiplier . Updated the Map, Not Final! just want to make it look like a grass. New Content Added more Realm , i use the webnovel Top Tier Providence for reference of realm names. Added 3 New Zone ’s. Added Qi Popups where it shows how much qi you just gained with accumulation. Optimization Refactoring how the system detect player entering a zone . From Looping a function every frame to saving it to a State where if player enters a zone, it update the state to True and start giving qi every second. VERY EFFICIENT!! P.S. All the models (Houses & Waterfall) is NOT made by me, i got it from roblox creator store free assets"}, {"post_id": 35806, "ts": "2026-07-27T14:04:34Z", "hours": 0.8486, "text": "[Devlog #4] Update Balancing Qi realm requirement and Qi bonus from realm . New Content Added UI for Cultivating Area . The UI Contain the Realm Requirement to Cultivate there (If requirement is not met, you don’t get any qi), and Qi Multiplier for that Area (Multiply with the Qi bonus from realm ) P.S. The Cultivating Area UI is not yet dynamic, and the functionality of realm requirement and qi multiplier from area is not yet implemented. My next goal is to implement the Area functionality and add atleast 3 more area to cultivate."}, {"post_id": 35190, "ts": "2026-07-26T13:39:43Z", "hours": 5.6908, "text": "[Devlog #3] Update Implemented the functionality of the previous static UI. Now the progress bar UI and the overhead UI is dynamic following User Data. You now can Breakthrough to go to Higher Realm. Added SFX for breaking through. Info Realm increases player qi gains. The higher the realm, the higher the qi gains. P.S. The Overhead UI currently added above the current user (local), other player won’t have the Overhead UI for now. I’ll work for new feature first before fixing that."}, {"post_id": 34693, "ts": "2026-07-25T16:50:59Z", "hours": 2.9936, "text": "[Devlog #2] New Content Added New Progression Layer: Realm Added Progress Bar UI for Realm (Not yet dynamic) Added Overhead UI for Player Current Realm and Username (Not yet dynamic) Bugfixes Fix user detection enter an area (the big transparent box); The Box is an Area that gives qi per second when entered."}, {"post_id": 34378, "ts": "2026-07-25T01:26:07Z", "hours": 12.1419, "text": "[Devlog #1] I learned the basics of Roblox Studio, Plugins, making UI in Figma in this first 12 recorded hour. Theres not much yet because im just trying to set up the project and familiarize myself with the language. I use wally for depedency manager and github for versioning. I just wanna learn new stuff here, so don’t expect a fully polished game at the end. I Can only hope that i have the work ethics to finish this project (Having a proper game loop)."}]...
|
Title: Cultivation Incremental by @RanDK | Stardan Title: Cultivation Incremental by @RanDK | Stardance
Devlogs:
[Devlog #1] I learned the basics of Roblox Studio, Plugins, making UI in Figma in this first 12 recorded hour. Theres not much yet because im just trying to set up the project and familiarize myself with the language. I use wally for depedency manager and github for versioning. I just wanna learn new stuff here, so don’t expect a fully polished game at the end. I Can only hope that i have the work ethics to finish this project (Having a proper game loop).
[Devlog #2] New Content Added New Progression Layer: Realm Added Progress Bar UI for Realm (Not yet dynamic) Added Overhead UI for Player Current Realm and Username (Not yet dynamic) Bugfixes Fix user detection enter an area (the big transparent box); The Box is an Area that gives qi per second when entered.
[Devlog #3] Update Implemented the functionality of the previous static UI. Now the progress bar UI and the overhead UI is dynamic following User Data. You now can Breakthrough to go to Higher Realm. Added SFX for breaking through. Info Realm increases player qi gains. The higher the realm, the higher the qi gains. P.S. The Overhead UI currently added above the current user (local), other player won’t have the Overhead UI for now. I’ll work for new feature first before fixing that.
[Devlog #4] Update Balancing Qi realm requirement and Qi bonus from realm . New Content Added UI for Cultivating Area . The UI Contain the Realm Requirement to Cultivate there (If requirement is not met, you don’t get any qi), and Qi Multiplier for that Area (Multiply with the Qi bonus from realm ) P.S. The Cultivating Area UI is not yet dynamic, and the functionality of realm requirement and qi multiplier from area is not yet implemented. My next goal is to implement the Area functionality and add atleast 3 more area to cultivate.
[Devlog #5] Update Implemented zone Realm Requirement and Qi Multiplier . Updated the Map, Not Final! just want to make it look like a grass. New Content Added more Realm , i use the webnovel Top Tier Providence for reference of realm names. Added 3 New Zone ’s. Added Qi Popups where it shows how much qi you just gained with accumulation. Optimization Refactoring how the system detect player entering a zone . From Looping a function every frame to saving it to a State where if player enters a zone, it update the state to True and start giving qi every second. VERY EFFICIENT!! P.S. All the models (Houses & Waterfall) is NOT made by me, i got it from roblox creator store free assets
[Devlog #6] Update Force player to use R6 Model for simplicity. New Content Added a Forest around the map. Added Menu Button (Settings, Shop, Inventory) Added Modal UI Component (still empty) Added SFX for Button when clicked and hovered. P.S. Most of my time is spent on making the design for the Settings, Shop, and Inventory Icon. And also on the functionality of the button (open/closing modal). Next, i’ll probably work on adding more sfx and backsound for the game. And also make the gui of the shop and settings.
[Devlog #7] New Content Added Background Music ! Added Music and Sfx toggle in Settings Added Walkspeed & Jump Boost from Realm level Added Sprint ! Press Left Shift to Sprint. Bug Fixes Fix Overhead Gui , Everyone now have the Overhead Gui, and the Realm Level is synced to the actual player Realm. P.S. Shop and Inventory is still empty… Its hard designing and actually implementing the UI… Also i have too much idea and at the end only think about it and dont know how to implement it
[Devlog #8] New Content Item !! You can get more Qi Multiplier from item. And theres also Realm Requirement for each item. Inventory UI is now working (except for Delete Button). Info For the UI, the Layout Order is prioritizing equipped item. If Player realm lower than requirement, the requirement text will be red. Implementing Inventory system was very complicated, especially the ui. So many state, maybe its because i put basically everything in one file. I’ll refactor that first before im adding new content, otherwise i’ll lose my mind editing that spaggeti code later down the line… Anyway, as you can see in the screenshot. I don’t have the asset for items yet. Maybe i’ll work on that later, though not the highest priority. My priority right now is to refactor the ui and implement the delete button and adding Equip Best button.
[Devlog #9] New Contents BIGGER MAP (Added more houses, trees, mountains, clouds, and floating island). Added 4 more Zones . Added Realm List Board beside Spawn, it has the Full list of All Realms level. Updates Qi Particle inside zone now have different color as qi multiplier gets higher. Color hierarchy: White –> Blue –> Purple –> Gold Increasing qi requirement for Realm 100+ (Immortals) [Kinda irrelevant right now, since its statistically impossible to get there]. Added better placeholder image for Item. Changed Item Background according to Whether player can equip it or not (Realm requirement met). Red for can’t equip, Blue for can equip, Green for equipped item. Refactors (Technical) Move Qi Breakthrough sfx from RealmService to the SoundService. Move Zone Detection to Serverside for security reason. I still haven’t refactored the Inventory UI yet and all the models is not made by me. The only model i made was the Realm Board List. But every UI is made by me! (except for the fire icon).
[Devlog #10] New Contents Added NPC Dialogs Added Quests Features Broo, this two thing is messing my brain especially with all the thing to consider… Atleast the ui is presentable and its functionality is basically done. Its quest progress is actually saved to the Player Data, but there is no progress update yet, and also i can repeatedly take this quest again and again… Ok the serverside makes the player to not be able to take same quest twice, so its safe. But the UI, there is not yet state/system to detect that the user already take the quest… My next work is probably: Updating UI so that it knows the player already took the Mission. Adding taken quest UI Update the quest progress, etc. OK everything i said sounds very confusing even to me . In conclusion, my next work is just finishing the quests features and polishing the UI.
[Devlog #11] New Contents Added Quest List UI on the right side of the screen. 2 New Sfx for Taking a quest and Completing a quest. Updates Improves NPC Dialog UI , look at Devlog #10 for comparison. Options in the dialog now have a keyboard shortcut with the corresponding number. For example: clicking 1 in keyboard will click the first option. Refactors Create a Close Button component for ease of use. Refactor Dialogue View UI by creating DialogueOptions component. I am very satisfied with the Quest List UI, its looking really clean and good. I also make another design for the dialogue rectangle, its subtle but there’s a pattern and gradient on the dialogue UI. Next work is adding more npc, quest, and actually adding the Quest Rewards . Im planning on adding Spiritual stones and shops for item that improves qi gain. And maybe adding weapon and enemy in the future.
[Devlog #12] New Content Added Spiritual Stone . a new currency with no functionality yet. I’ll be adding shop that uses Spiritual Stone as the currency. Updates Now, completing a quest gives reward . Currently, you can get spiritual stones or items from quests. Added Notification Badge in the inventory button UI for when player get a new item. Remodeled the Old Man to Mysterious Being . Next i’ll polish the npc interaction more by adding a “❓” for npc with quest, and “❗” for a finished quest. And maybe start building the next feature, that is herb collection/fighting enemy.
[Devlog #13] New Contents Added Marks for NPC with Quest Combat and Enemy! (Its partially done) The combat is still barebone, you get close to the enemy, the enemy got damaged by 1, when its hp is 0, it’ll add to the player totalEnemyKilled +1. Thats the current implementation. I will polish the combat feature and integrate it with the quest feature so that it tracks the amount of “enemy” killed.
[Devlog #14] New Content Added Shop NPC (no functionality yet) Updates Enemy now drops Spiritual Stones Bugfixes & Refactor Fix Quest bug, it needs some nil value check protection. Fix Zone bug when player quit/disconnect, have to stop a task gracefully when the player disconnect. Refactor Inventory UI Component to use useMemo and make the Item Display Panel its own component. Zone Detection now only detect the user HumanoidRootPart for reliability and no jittery detection. No major progress today, just bugfixing and refactoring. I think im getting close to finishing the main loop of the gameplay. Cultivate -> Breakthrough -> Fight stronger enemy -> Buy better item in shop -> Cultivate -> Repeat.
[Devlog #15] Update Added UI for NPC Shop Spent all of my time designing the UI… i still dont like the yellow box, but it’ll do for now. Next i’ll be making it dynamic and functionable.
[Devlog #16] New Content Added 5 new Items you can buy. Updates Implemented the Functionality of the NPC Shop. You can now buy items here. Updated the Shop UI, now it looks better compared to previous version. Spent most of my times debugging the UI since i reuse the modal component that the main menu uses. So yea, i integrate the npc shop inside it and that creates a lot of bugs and conflict . Well i fixed all the bug i found so thats good. Now that the main features is done the next step is to polish the map and adding the game content (More NPC, Quest & Items)
[Devlog #17] Update Make the Breakthrough bar slimmer and more compact. Im kinda busy today and havent done anything yet, so im just improving the ui a little bit. Also i wanna add a Current Qi Multiplier Counter at the Top Right Corner of the screen using the fire gif.
[Devlog #18] New Content Added Qi Mult Counter when entered a Zone. The fire has animation Added Leaderboard . (UI is In Progress) . Spent most of my time making UI Animation using sprite sheet and integrate DataStoreService for leaderboard
[Devlog #19] Update New UI for Leaderboard! I’ll be polishing the game (for real) and release the first version tommorow (hopefully)… Im getting really busy
[Devlog #20] Update Added 1 more quest New Assets Added Game Icon and Thumbnail Spent most of my time on figma designing the Icon and Thumbnail of the game, but the time is not getting tracked because i use the app instead from web . Not yet released, but i’ll be testing it first with a few friends first and maybe add some feature because ngl it feels bland right now, but maybe its just my opinion. So to get some feedback, ill be testing it with my friends tommorow and maybe catch some multiplayer bugs that i couldn’t find when playing alone. I really don’t want to publish a boring game, but the time is ticking and im getting more and more busy this month.
[Devlog #21] Updates Added a proper README. Fixed some minor bugs. The next devlog will be for a published Game . Its not a professional Roblox game, but its my learning process from 0 to this. So i appreciate any type of critics and feedback for me to develop this game furthur, because i really love these type of games. So im literally making my dream game here! But its still lacking to my vision because of my lack of time and skills.
[Devlog #22] New Contents Added 1 more enemy, goblin. Update Remove the realm requirement in NPC Shop for buying an item (Cannot buy the item until realm req is fulfilled). The requirement now only active when trying to equip the item. Fixed quest id being duplicated. im back!! hopefully i can make some more stuff although i may not have as much free time as before. I’ll try to make some progress everyday though! Try it Now Game may not be up to date from the devlog Cultivation Incremental (16+)
[Devlog #23] New Content Added refresh countdown on leaderboard UI. Updates Moved enemy overhead gui from server to client (not yet tested for the behaviour in multiplayer) for more personalization (point 2 is possible because of this change). Dynamic enemy name color, higher realm will be colored red and cannot be attacked no matter how high your dmg is until you reach their cultivation rank. Polishing the game :))
[Devlog #24] New Content Added Onboarding/Tutorial ! I see a lot of player gets confused when they first joined the game, so now i added a tutorial on the basic of the game. That is: Cultivate, Shop, and Quest . Im really happy with the result, i didn’t expect making the trail line to be so easy (using beam instance from roblox themself). And maybe i’ll add onboarding for fighting enemy and equipping items, but its not really neccessary (i think).
[Devlog #25] Updates Added more quests Optimize NPCServiceUtils.Data JSON for NPC that gives Chained Quests. Mostly just optimizing the json by creating a helper so that making a quest is easier and less error prone.
[Devlog #26] New Content Added Cultivating Animation! Update Now you have to press “C” to cultivate rather than just automatically gain Qi just by entering the Qi Zone. Next one is to add button for mobile user, and also add UX feedback for when they’re able to press C to cultivate and when they can’t (outside zone & higher realm zone). Oh! also adding particle/aura when player is cultivating for more satisfying feel.
[Devlog #27] New Contents New Mobile Button to Cultivate New Shortcut UI to press “C” to Cultivate when entering a Zone they can cultivate in. New Tutorial Section to tell the player to press “C” to start cultivating and gathering qi. Update Player now can’t walk/jump when cultivating May need to revise the button for mobile since its very basic right now
[Devlog #28] New Content Added “Aura” like particle effect when cultivating, its more like you “suck” the surrounding qi into the body. Update Update the collision system to be more robust, before theres a problem with the collision when i try adding the Aura Part inside the Player. Now it will independently calculate the spatial rather than touching. Nothing crazy, just some cool small detail.
[Devlog #29] The Last Devlog The Game New Contents Gamepass! Now you can buy a gamepass to get a benefit and support me! + Gamepass badge on the bottom left of the screen when bought. Add beam/arrow to the quest npc when you’re done with their given quest. Add equip best button in the inventory menu. Add dmg mult information in the inventory meny (item detail menu). Updates Fix some bugs, for example player able to move while cultivating. Optimize and remove unused leaderboards. ready to publish it! Thank you for the opportunity Hackclub for me to grow as a beginner roblox developer I appreciate the support from everyone although my game is far from “professional”, atleast its a fully working game! and Im happy with it.
Ships:
VERSION 0.0.1 Only 16+ can play the Game currently as any other new roblox game. I am glad to finish the essentials mechanic of the Game! Now here is the List of Features the game have: Cultivate, just stand on the existing zone (and make sure you have the required Realm) and you’ll gain Qi automatically Breakthrough, the moment the top bar is full, you can breakthrough to higher realm which increases your qi gain and boost movement speed and jump a little bit. Quest, you can talk to an NPC with a (!) to get the quest. After finishing a quest, you can talk to the NPC again to claim the quest rewards. Battle, you can walk to enemy and you’ll automatically deal damage to them! Shop, you can buy items in shopkeeper NPC with Spiritual Stones which you can get from defeating an enemy or finishing a quest. The feature is implemented, but its very simple and “unprofessional”. Lame excuse but its really because this is my first time making game and im still learning the basics. I’ll be adding more stuff and refine the core features in the future updates!! This game is made for the love of the game and genre :)
VERSION 0.1 Only 16+ can play the Game currently as any other new roblox game. I am glad to add more of the essentials mechanic of the Game! Now here is the List of Features i have added to the game since the last release: Added Onboarding/Tutorial! I see a lot of player gets confused when they first joined the game, so now i added a tutorial on the basic of the game. That is: Cultivate, Shop, and Quest. Added New Enemy : Goblin. Added More quests . Added Cultivating Animation! Added Gamepass! Now you can buy a gamepass to get a benefit and support me! + Gamepass badge on the bottom left of the screen when bought. And more! you can read all the devlogs to see the small changes. I still have some features not yet implemented, that is fighting enemy animation, weapons, and PVP . But i don’t really have the courage since the Stardance deadline is within 3 weeks (and its already extended), but i do have plan to continue the project later in December for my own personal project (close sourced, even though right now its already semi close source since the models, maps i used is not in the code but in the roblox studio file.). Thanks for everyone who have followed the game journey, albeit short i thank you guys for supporting me!! (Especially those who bought my gamepass!!) . I CANT BELIEVE I GOT MY FIRST ROBUX FROM MAKING A GAME HERE IN STARDANCE :DD THANK YOU SO MUCH!!! This Game is Made with the best of my Game Dev abilities ....
|
1792990280.2875316
|
1793076680.2875316
|
|
41358
|
my project manager by @flyingfish | Stardance
|
flyingfish
|
1
|
93.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-03T01:05:33Z", "hours": 93.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this is a project manager that i made. you have probably seen tones of project managers but this one is slightly different . the main things that i wanted to make for this i want it to be something you can keep on your desktop at all times. another thing i wanted to do is project ideas. i have hundreds of project ideas but its hard to remember all of them so i wanted to make a project manager that can store a list off all these ideas however at the same time i want a project manager that can still hold all my project data to help develop. so i also added that in but i also want something that will also have some simple use full tools so i added them all in to one a project manager / project idea list / simple tools some of the tools i added is stop watch quick notes timer you can click a button to copy the time i also was very car full to make it not take up a lot of ram so you can just leave it open i also tried to make to make it so in the future i can add stuff i am thinning a calculator and stuff also this was my first experience with qml/qt and it was an awesome learning experience", "repo": "https://github.com/dinotiger01/pproject-manager", "demo": "https://github.com/dinotiger01/pproject-manager/releases/tag/1.0.0"}]...
|
[{"post_id": 76265, "ts": "202 [{"post_id": 76265, "ts": "2026-10-02T23:44:29Z", "hours": 4.1353, "text": "read me stuff i had a friend test it really fast he told me some problem then i fixed them then i wrote a long read me file"}, {"post_id": 76049, "ts": "2026-10-02T05:54:58Z", "hours": 11.0783, "text": "last minut changes there were tones of bugs because the JSON was made with spaghetti code so it was index out of range every where so i had to just go through all of them 1x1 i also made a windows build"}, {"post_id": 75464, "ts": "2026-09-30T05:22:40Z", "hours": 8.0217, "text": "i be doing json so i made it so that all the the difrent types of data have an edit menu and it saves it to json so you can have the file saved basicly every page has a edit page that repaces everything with text boxes and edits it"}, {"post_id": 75341, "ts": "2026-09-29T19:44:46Z", "hours": 11.8719, "text": "editing and creating data i am making it so that you can edit the data in the projects. i am posting becouse of the 10hr limit i will make a goood devlog later to day"}, {"post_id": 74378, "ts": "2026-09-27T08:36:35Z", "hours": 10.255, "text": "some wack ui i did like a ton of crap i did the clear ui the files indents timer most of the functiuoanlty links can now open in a tab and the parts tab can expand and contract tasks can be checked on and off i seperated the elements in the qml so there arnt sync bugs"}, {"post_id": 74083, "ts": "2026-09-26T17:09:55Z", "hours": 8.7236, "text": "i started the logic i have the bulk of it done just not all of it i made most of the variables load into the qml before in my other project i hade the cpp and the qml talk to each other and it was suppper jaky so now i basicly have the cpp controlling the entirer thing i made it so it can view files using recursion i think it was a cool way to do it idk also i have seperated the qml in to like 500 difrent files becouse it is just esier to use that way i also desided to ditch the sql becouse it takes a lot of set up and i am going to try to use json lastime i used nolmman it kept breaking so hopefully i can figure it out this time"}, {"post_id": 73630, "ts": "2026-09-25T15:19:27Z", "hours": 5.4989, "text": "i made the task description and i started the logic part"}, {"post_id": 54714, "ts": "2026-08-25T19:48:03Z", "hours": 2.9869, "text": "so like i havent worked on this project like at all idk how i got 2-3 hrs on it if yo are a goi you can deflate this devlog"}, {"post_id": 47609, "ts": "2026-08-15T16:48:28Z", "hours": 7.2122, "text": "i made the home page i also spent like a really long time getting git hub set up on the left i have tasks that i want to do today on the right there is some quick notes and the time if you click the time it will take you to a timer/ stopwatch"}, {"post_id": 39265, "ts": "2026-08-02T03:56:52Z", "hours": 4.6489, "text": "Calender i spent a lot of time coming up with the genral lay out i am planing to refine it more latter"}, {"post_id": 38975, "ts": "2026-08-01T16:25:04Z", "hours": 4.5603, "text": "project page it is not the list page there difrent i finished up the project page list on the left there is a list that will hold all projects i am working on each list item holds 4 things picture/logo title * short description of the project * button to open a bigger description drecription this is a page that you quick ly see and be riminded of what your project does there is a title and picture at the top there is quick links to make feting to certent parts of your project easyer then there is a place where you can list all the featues and constraints you want font.pointSize: parent.height - 15 > parent.width/ text.length ? parent.width/ text.length : parent.height - 15 this code snipit was something i wrote that makes it so that text auto scales withe the page i just thought it was cool it works by setting the point size to the height but this would have not worked if the box gets to tall so what i did was to check if the width or height is small then do the smaller one and to check the width i devise the width by the text.lenghth"}, {"post_id": 38346, "ts": "2026-07-31T18:04:34Z", "hours": 2.7083, "text": "so i managed to make negative progress i forgot to save then today has been kinda bad and my code was just really bad so it ended up worst then before"}, {"post_id": 37426, "ts": "2026-07-30T04:28:29Z", "hours": 7.2503, "text": "ui is really buggy so i am using like the really weird color to help me see and design better but in the future i want to make it like slighly transparent gray with neon blue highlights in like a semi futureistic style i made the page for the list there is a list of projects o the left this list is auto generated it holds the title of your project you can scroll right title description bugs the scrollview was like really long for sum reason * i think it was beclouds i was using a tab bar witch is normal horezontal * after trying like every thing i ended up making it not a tab bar * i made it a column with with java scrip that checks witch ta is selected for a while all the stuff was layed on ton of one another * it made like this weird lump of assests * ngl i dont realy know how it fixed it just kinda did at sum point and i am not going to try to mes with it if i dont have to"}, {"post_id": 36833, "ts": "2026-07-29T04:27:38Z", "hours": 4.5086, "text": "this is my project manager i have a lot of features i want to add to this but i have never made an actual app before so its a bit of a learning curve hack a time split my stuff in to 2 projects and i dont know why but idk i just lost like 1.5 hr i fixed it by making a new project and linking both projects to it i made 4 tabs that you can switch between with the tab bar at the top"}]...
|
Title: my project manager by @flyingfish | Stardan Title: my project manager by @flyingfish | Stardance
Devlogs:
this is my project manager i have a lot of features i want to add to this but i have never made an actual app before so its a bit of a learning curve hack a time split my stuff in to 2 projects and i dont know why but idk i just lost like 1.5 hr i fixed it by making a new project and linking both projects to it i made 4 tabs that you can switch between with the tab bar at the top
ui is really buggy so i am using like the really weird color to help me see and design better but in the future i want to make it like slighly transparent gray with neon blue highlights in like a semi futureistic style i made the page for the list there is a list of projects o the left this list is auto generated it holds the title of your project you can scroll right title description bugs the scrollview was like really long for sum reason * i think it was beclouds i was using a tab bar witch is normal horezontal * after trying like every thing i ended up making it not a tab bar * i made it a column with with java scrip that checks witch ta is selected for a while all the stuff was layed on ton of one another * it made like this weird lump of assests * ngl i dont realy know how it fixed it just kinda did at sum point and i am not going to try to mes with it if i dont have to
so i managed to make negative progress i forgot to save then today has been kinda bad and my code was just really bad so it ended up worst then before
project page it is not the list page there difrent i finished up the project page list on the left there is a list that will hold all projects i am working on each list item holds 4 things picture/logo title * short description of the project * button to open a bigger description drecription this is a page that you quick ly see and be riminded of what your project does there is a title and picture at the top there is quick links to make feting to certent parts of your project easyer then there is a place where you can list all the featues and constraints you want font.pointSize: parent.height - 15 > parent.width/ text.length ? parent.width/ text.length : parent.height - 15 this code snipit was something i wrote that makes it so that text auto scales withe the page i just thought it was cool it works by setting the point size to the height but this would have not worked if the box gets to tall so what i did was to check if the width or height is small then do the smaller one and to check the width i devise the width by the text.lenghth
Calender i spent a lot of time coming up with the genral lay out i am planing to refine it more latter
i made the home page i also spent like a really long time getting git hub set up on the left i have tasks that i want to do today on the right there is some quick notes and the time if you click the time it will take you to a timer/ stopwatch
so like i havent worked on this project like at all idk how i got 2-3 hrs on it if yo are a goi you can deflate this devlog
i made the task description and i started the logic part
i started the logic i have the bulk of it done just not all of it i made most of the variables load into the qml before in my other project i hade the cpp and the qml talk to each other and it was suppper jaky so now i basicly have the cpp controlling the entirer thing i made it so it can view files using recursion i think it was a cool way to do it idk also i have seperated the qml in to like 500 difrent files becouse it is just esier to use that way i also desided to ditch the sql becouse it takes a lot of set up and i am going to try to use json lastime i used nolmman it kept breaking so hopefully i can figure it out this time
some wack ui i did like a ton of crap i did the clear ui the files indents timer most of the functiuoanlty links can now open in a tab and the parts tab can expand and contract tasks can be checked on and off i seperated the elements in the qml so there arnt sync bugs
editing and creating data i am making it so that you can edit the data in the projects. i am posting becouse of the 10hr limit i will make a goood devlog later to day
i be doing json so i made it so that all the the difrent types of data have an edit menu and it saves it to json so you can have the file saved basicly every page has a edit page that repaces everything with text boxes and edits it
last minut changes there were tones of bugs because the JSON was made with spaghetti code so it was index out of range every where so i had to just go through all of them 1x1 i also made a windows build
read me stuff i had a friend test it really fast he told me some problem then i fixed them then i wrote a long read me file
Ships:
this is a project manager that i made. you have probably seen tones of project managers but this one is slightly different . the main things that i wanted to make for this i want it to be something you can keep on your desktop at all times. another thing i wanted to do is project ideas. i have hundreds of project ideas but its hard to remember all of them so i wanted to make a project manager that can store a list off all these ideas however at the same time i want a project manager that can still hold all my project data to help develop. so i also added that in but i also want something that will also have some simple use full tools so i added them all in to one a project manager / project idea list / simple tools some of the tools i added is stop watch quick notes timer you can click a button to copy the time i also was very car full to make it not take up a lot of ram so you can just leave it open i also tried to make to make it so in the future i can add stuff i am thinning a calculator and stuff also this was my first experience with qml/qt and it was an awesome learning experience...
|
1793008215.2860043
|
1793094615.2860043
|
|
48703
|
Bird Fight 3 by @Eel | Stardance
|
Eel
|
2
|
93.0
|
169
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T01:54:51Z", "hours": 43.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Bird Fight 3 is a fast-paced 2D fighting game where birds battle across a growing roster of arenas using unique attacks, specials, and ultimates. During this Stardance development phase, I took the game through a major overhaul focused on turning it into a much more complete and polished experience. I rebuilt Classic Mode into character-specific campaigns, expanded the roster and stages, added Adventure, improved progression and saves, and introduced features like alternate stage variants, unlockable content, route endings, and multiplayer. I also completely redesigned the game’s UI around a Smash-inspired presentation, covering the main hub, rulesets, fighter and stage selection, Vault, Classic, Adventure, Training, multiplayer, profiles, settings, and pause/results screens. The UI now supports responsive scaling and device-specific prompts for keyboard, controllers, and Wiimotes. A major part of development was also making the game more reliable. I built extensive automated testing and regression coverage, ran thousands of automated matches to test gameplay and balance, and continuously fixed issues across fighters, stages, progression, UI, and multiplayer. Bird Fight 3 has grown significantly throughout this project, and I’m really happy with where it has ended up.", "repo": "https://github.com/Caleb-Guyer/BirdFight3/releases", "demo": "https://github.com/Caleb-Guyer/BirdFight3"}, {"ship_num": 2, "ts": "2026-08-17T03:51:27Z", "hours": 50.0, "multiplier": 9.33, "payout": 169, "blessing": "neutral", "text": "Bird Fight 3 is a fast-paced 2D fighting game where birds battle across a variety of arenas using unique attacks, specials, and ultimates. Play as a growing roster of birds, fight through Story and Classic modes, discover alternate stages and variants, unlock content, and compete through increasingly challenging battles.", "repo": "https://github.com/Caleb-Guyer/BirdFight3/releases", "demo": "https://github.com/Caleb-Guyer/BirdFight3"}]...
|
[{"post_id": 55309, "ts": "202 [{"post_id": 55309, "ts": "2026-08-27T01:46:30Z", "hours": 14.6342, "text": "I’ve spent around 14 more hours working on Bird Fight 3 since my last devlog, and I’ve mainly been focusing on polishing the overall UI and making everything feel more consistent. I finished the full Smash-inspired UI direction across the game, including the rulesets, hub, fighter and stage selection, pause/results screens, profiles, Vault, Classic, Adventure, multiplayer, and Training. I also redesigned the Adventure campaign hub and continued polishing the Adventure flow so it fits in with the rest of the game. I also added responsive scaling and device-specific prompts for keyboard, controller, and Wiimote controls, along with UI regression tests to make sure these changes don’t break existing screens. There have also been a bunch of smaller fixes and polish, including reward reveals, confirmation dialogs, settings, navigation, and some progression-related fixes. I’ve been trying to take the feedback from the ratings seriously, especially the comments about making the game easier to understand and improving the UI. Thanks again to everyone who played and left feedback, as its been super helpful!"}, {"post_id": 54804, "ts": "2026-08-25T22:49:36Z", "hours": 12.1889, "text": "I’ve been focusing on the Adventure UI and bringing it closer to the same polished, Smash-inspired feel as the rest of the game. The main Adventure flow is now coming together, with the UI built around navigating between areas, selecting destinations, and keeping the player oriented as they progress through the mode. I also worked on making the transitions between the different Adventure screens feel consistent with the rest of the game rather than having Adventure use a completely separate visual style. A big part of this was making sure the UI works cleanly with the different input methods supported by the game. The prompts and navigation behavior stay consistent whether you’re using keyboard, controller, or Wiimote. There’s still more I want to do with Adventure itself, but the UI foundation is now in place and it feels much closer to the experience I’m aiming for."}, {"post_id": 54106, "ts": "2026-08-24T22:12:34Z", "hours": 6.5342, "text": "The full Smash-inspired UI goal is now complete. I finished up the major UI systems across the project, including simplified rulesets, the main hub, fighter and stage selection, pause/results screens, profiles, the Vault, Classic, Story, multiplayer, and Training. I also added responsive scaling so the UI adapts properly to different screen sizes and devices. Keyboard, controller, and Wiimote prompts now change based on the input device being used, which makes the controls much clearer. Finally, I added UI regression coverage to help catch visual and functional issues as the project continues to grow. This was a big milestone because the UI now feels much more cohesive across the entire game instead of each mode feeling like its own separate system."}, {"post_id": 52756, "ts": "2026-08-23T03:03:08Z", "hours": 9.7939, "text": "I just shipped Bird Fight 3 v1.4.0, and this is probably the biggest update I’ve done to the game so far. Classic Mode is finally complete, with all 22 playable birds now having their own full eight-encounter route, unique encounters, final bosses, and animated Crown endings. I also finished the ending gallery, route badges, FEATHERDEV support, route previews, music, and a bunch of progression fixes. It feels really good to finally have the entire roster playable from start to finish instead of having unfinished routes sitting around. I also went through basically the entire stage roster and gave it a massive cleanup. All 21 main arenas and 26 variants were audited for collision, spawns, navigation, objectives, hazards, and visual clarity, with a bunch of them being rebuilt or heavily polished. Stage Select was completely redone with rendered previews, and I replaced the old thumbnails across the game. On top of all that, I ran 9,856 headless Classic matches and now have 1,034 automated tests passing with zero failures, errors, or skips. This update was a LOT of work, but v1.4.0 finally feels like Bird Fight 3 is becoming the complete game I’ve been trying to build."}, {"post_id": 48644, "ts": "2026-08-17T03:50:02Z", "hours": 8.1447, "text": "I rebuilt Classic Mode into a full character-route campaign in v1.3.0, adding twelve unique routes with eight encounters each, route-specific bosses, challenges, arenas, mechanics, music, and cinematic endings. I also gave the full roster a major presentation and combat pass, improved knockback, CPU behavior, menus, progression, saves, and reliability, and added the complete Razorbill Final Cut route. The update is backed by 890 automated tests, a 448-match Razorbill balance audit, and additional replay, save, LAN, audio, and visual regression testing."}, {"post_id": 47852, "ts": "2026-08-16T02:34:48Z", "hours": 41.7208, "text": "v1.2.2 is out! This update was a big polish pass focused on stages, fighters, and the overall presentation of Bird Fight 3. Map Select now separates Main stages and Variants, with separate Random options and a Random All option, while the boss-stage variants have been rebuilt with more distinct layouts instead of feeling like copies of their original arenas. City and Parliament Towers also received major visual and layout reworks. I polished the visuals, proportions, animations, and skins for Pigeon, Eagle, Falcon, Phoenix, Hummingbird, and Turkey, along with fixing several animation and geometry issues. Online character selection was also brought closer to the main roster presentation, and Echo fighters now show the icon of their base bird. Finally, I created a completely new 1080p official trailer using real gameplay, story scenes, bosses, stages, skins, and the full roster. The release passed 550 automated tests with zero failures, with additional regression coverage for stages, fighters, animations, multiplayer presentation, and the trailer."}]...
|
Title: Bird Fight 3 by @Eel | Stardance
Devlogs:
Title: Bird Fight 3 by @Eel | Stardance
Devlogs:
v1.2.2 is out! This update was a big polish pass focused on stages, fighters, and the overall presentation of Bird Fight 3. Map Select now separates Main stages and Variants, with separate Random options and a Random All option, while the boss-stage variants have been rebuilt with more distinct layouts instead of feeling like copies of their original arenas. City and Parliament Towers also received major visual and layout reworks. I polished the visuals, proportions, animations, and skins for Pigeon, Eagle, Falcon, Phoenix, Hummingbird, and Turkey, along with fixing several animation and geometry issues. Online character selection was also brought closer to the main roster presentation, and Echo fighters now show the icon of their base bird. Finally, I created a completely new 1080p official trailer using real gameplay, story scenes, bosses, stages, skins, and the full roster. The release passed 550 automated tests with zero failures, with additional regression coverage for stages, fighters, animations, multiplayer presentation, and the trailer.
I rebuilt Classic Mode into a full character-route campaign in v1.3.0, adding twelve unique routes with eight encounters each, route-specific bosses, challenges, arenas, mechanics, music, and cinematic endings. I also gave the full roster a major presentation and combat pass, improved knockback, CPU behavior, menus, progression, saves, and reliability, and added the complete Razorbill Final Cut route. The update is backed by 890 automated tests, a 448-match Razorbill balance audit, and additional replay, save, LAN, audio, and visual regression testing.
I just shipped Bird Fight 3 v1.4.0, and this is probably the biggest update I’ve done to the game so far. Classic Mode is finally complete, with all 22 playable birds now having their own full eight-encounter route, unique encounters, final bosses, and animated Crown endings. I also finished the ending gallery, route badges, FEATHERDEV support, route previews, music, and a bunch of progression fixes. It feels really good to finally have the entire roster playable from start to finish instead of having unfinished routes sitting around. I also went through basically the entire stage roster and gave it a massive cleanup. All 21 main arenas and 26 variants were audited for collision, spawns, navigation, objectives, hazards, and visual clarity, with a bunch of them being rebuilt or heavily polished. Stage Select was completely redone with rendered previews, and I replaced the old thumbnails across the game. On top of all that, I ran 9,856 headless Classic matches and now have 1,034 automated tests passing with zero failures, errors, or skips. This update was a LOT of work, but v1.4.0 finally feels like Bird Fight 3 is becoming the complete game I’ve been trying to build.
The full Smash-inspired UI goal is now complete. I finished up the major UI systems across the project, including simplified rulesets, the main hub, fighter and stage selection, pause/results screens, profiles, the Vault, Classic, Story, multiplayer, and Training. I also added responsive scaling so the UI adapts properly to different screen sizes and devices. Keyboard, controller, and Wiimote prompts now change based on the input device being used, which makes the controls much clearer. Finally, I added UI regression coverage to help catch visual and functional issues as the project continues to grow. This was a big milestone because the UI now feels much more cohesive across the entire game instead of each mode feeling like its own separate system.
I’ve been focusing on the Adventure UI and bringing it closer to the same polished, Smash-inspired feel as the rest of the game. The main Adventure flow is now coming together, with the UI built around navigating between areas, selecting destinations, and keeping the player oriented as they progress through the mode. I also worked on making the transitions between the different Adventure screens feel consistent with the rest of the game rather than having Adventure use a completely separate visual style. A big part of this was making sure the UI works cleanly with the different input methods supported by the game. The prompts and navigation behavior stay consistent whether you’re using keyboard, controller, or Wiimote. There’s still more I want to do with Adventure itself, but the UI foundation is now in place and it feels much closer to the experience I’m aiming for.
I’ve spent around 14 more hours working on Bird Fight 3 since my last devlog, and I’ve mainly been focusing on polishing the overall UI and making everything feel more consistent. I finished the full Smash-inspired UI direction across the game, including the rulesets, hub, fighter and stage selection, pause/results screens, profiles, Vault, Classic, Adventure, multiplayer, and Training. I also redesigned the Adventure campaign hub and continued polishing the Adventure flow so it fits in with the rest of the game. I also added responsive scaling and device-specific prompts for keyboard, controller, and Wiimote controls, along with UI regression tests to make sure these changes don’t break existing screens. There have also been a bunch of smaller fixes and polish, including reward reveals, confirmation dialogs, settings, navigation, and some progression-related fixes. I’ve been trying to take the feedback from the ratings seriously, especially the comments about making the game easier to understand and improving the UI. Thanks again to everyone who played and left feedback, as its been super helpful!
Ships:
Bird Fight 3 is a fast-paced 2D fighting game where birds battle across a variety of arenas using unique attacks, specials, and ultimates. Play as a growing roster of birds, fight through Story and Classic modes, discover alternate stages and variants, unlock content, and compete through increasingly challenging battles.
Bird Fight 3 is a fast-paced 2D fighting game where birds battle across a growing roster of arenas using unique attacks, specials, and ultimates. During this Stardance development phase, I took the game through a major overhaul focused on turning it into a much more complete and polished experience. I rebuilt Classic Mode into character-specific campaigns, expanded the roster and stages, added Adventure, improved progression and saves, and introduced features like alternate stage variants, unlockable content, route endings, and multiplayer. I also completely redesigned the game’s UI around a Smash-inspired presentation, covering the main hub, rulesets, fighter and stage selection, Vault, Classic, Adventure, Training, multiplayer, profiles, settings, and pause/results screens. The UI now supports responsive scaling and device-specific prompts for keyboard, controllers, and Wiimotes. A major part of development was also making the game more reliable. I built extensive automated testing and regression coverage, ran thousands of automated matches to test gameplay and balance, and continuously fixed issues across fighters, stages, progression, UI, and multiplayer. Bird Fight 3 has grown significantly throughout this project, and I’m really happy with where it has ended up....
|
1792882058.564735
|
1793746058.564735
|
|
13667
|
dnp3 Parser and Simulator by @arnabm | Stardance
|
arnabm
|
0
|
92.76
|
0
|
[]
|
[{"post_id": 58550, "ts": "202 [{"post_id": 58550, "ts": "2026-08-31T00:08:09Z", "hours": 1.8961, "text": "Added the data generation, request creation, and response creation to the client and server. You can see a demo below. Not a giant change, just integrating the the new functions into the Client and Server."}, {"post_id": 57761, "ts": "2026-08-30T01:20:48Z", "hours": 10.5842, "text": "IM FREEEEE I FINALLY finished writing the write_data() function. Now full packet generation, with a request, and a reply is complete! Litterly the only thing left to do is make the ui. I AM DONE WITH THE BACKEND!!!!! I have included a handy guide to the output bellow. Instead of another picture of my terminal, you guys get to enjoy some color coded google docs!"}, {"post_id": 49396, "ts": "2026-08-18T06:12:20Z", "hours": 10.715, "text": "Im just going to appologize now, this devlog is not gonna be that great. I have been working the past few days on packet generation. Specifically on requesting data from a server, and writing that data to a packet as a server. As you can see by the time, this is much harder than it may seem. Though I did predict this a while ago. When the client request data from the server, a function is invoked that configures the group (data type; digital or analog) and the variation (presentation; packed format or with extra flags). When the server responds to this request, it invokes a function (technically 2) that refreshes the data it has (currently using a random number generator) and writes that to a packet. The packet is mostly a clone of the request, just with the source and destination switched, and the data added. Currently, I have both functions completed (or almost completed), but I still need to add crc to the reply form the server, and fix the many bugs that have arrisen from this change. Bellow I have an example request, no reply becuase the function is currently inoperable :( 05 64 0F C4 01 00 00 00 C8 E2 C1 C0 01 01 01 10 F7 03 00 0F 00 00 This request is asking for data from the server with address 1, data type 30 (digital), and the data points 3-15 Once again, very sorry for the poor quality dev log, but I just wanted to get an update out before I dug myself into an even deeper hole. See you guys later!"}, {"post_id": 45462, "ts": "2026-08-11T23:06:44Z", "hours": 6.2953, "text": "Been a busy 4 days. Worked on mostly modularity for the program, making sure that I am not repeating code that can be a function as part of a larger library The 2 libraries I implemented were the common/ and network/ libraries. These are used in both the client and server. Common includes functions like setting up connections, sending packets, receiving packets, interpreting them, and polling them for data The network library handles connecting to a server/client, and others. I also finally added the ability for the client (main stations/ems) to multiple servers (outstations/rtu). You can see a demo of all this working in the video. That’s it for now, goodbye!"}, {"post_id": 42903, "ts": "2026-08-07T21:11:13Z", "hours": 2.3822, "text": "More work on the logging system. Realized that we can use a global var with an init function to remove the need for each log call to pass the file pointer to the log Previous Method; // main log_err ( errno , \"client/main\" , fptr ); The fptr is a FILE* varible that points to the logging file New Method; // log.c static FILE * log_file = NULL ; int log_init ( const char * file_path ) { log_file = fopen ( file_path , \"a\" ); if ( log_file == NULL ) { log_err ( errno , \"log/log_init\" ); return - 1 ; } return 0 ; } // main log_init ( \"log/log.txt\" ); log_err ( errno , \"client/main\" ); The new method means all you have to pass is errno and the location of error. Super Simple!!! I also updated both client and server with this system. Bye"}, {"post_id": 41747, "ts": "2026-08-06T04:11:05Z", "hours": 0.5658, "text": "Small addition. Made log_info() a variadic function, like printf() . This means you can now do the same formatting like printf(\"hello %s\", \"world\") . This allows for easier logging to file and console, as both are just an arg in the funciton call! Yay!!!!"}, {"post_id": 41582, "ts": "2026-08-05T21:33:22Z", "hours": 2.0283, "text": "Finished adding the logging library I mentioned in the last post. It supports Colored text for warning and errors, time stamps, and better formatting. Ironically, the hardest part about this was figuring out how to use ANSI escape codes to support the colored text. This Medium article fromVitor Matias was super helpful! i also realized most people dont wanna read walls, so my updates will be smaller form now!"}, {"post_id": 41164, "ts": "2026-08-05T06:12:35Z", "hours": 6.4817, "text": "DevLog 15 Been busy the past couple of days with some school, so sorry I haven’t posted sooner, but I have also built out a couple more features.The Main additions are; Reusable frequent packet structures (acknowledge, negative acknowledge, reset link) Server Client loop 1. Ability to choose packet type to send to server (through TUI) in client 2. Server responds, and client is able to display response Better error handling, with more checks for errno and printing to log and console Better logging through file rather than just console The logging is proably my favorite new feature. It saves previous runs and even annotates the time and date the run took place. The error info is also much more helpful, and more often my program tells me why it crashed, instead of just ending or segfaulting client [ main]: Connection refused ^^^^ This now happens when you try to run the client with out a server on the configured adress or port Errors I ran into There actually wasn’t that much stuff going wrong, just took me pretty long as I had to edit a lot of functions and flows. A big issue i did run into was adding select() , also know as polling to the socket. Basicly, my code will loop checking the socket and parsing the data in it. But, a problem occurs if there is no data in the socket waiting. Polling allows my code to check if there actually is data, and if not wait/move on to the next task. But, I had incorrectly configured the function (the documentation for this function is especially confusing…), and this lead it to always report data in the socket. This then lead to errors with trying to map that data into a struct, and it just lead to catastrophy. Immediate Plans Have some stuff I’m going to / want to try and start before the next devlog; Logging Functions to simply logging to console and file * Something like log_note() , log_warn() , and log_error() * Currently just writing both fprintf() and perror() Add functionality to digital and analog requests * Need to add packet structures and creator functions for both Seperate network functionality like socket() , send() , etc… into its own library fucntions Seperate shared code between server and client into common library Media I thought I would include this section to explain some of things in the attached videos. These show all the features I implemented, including the client server loop, logging, and error handling Video 1 This just shows the current loop between the client and server, where the client sends a packet, a reset link packet in this case, and the server responds, in this case with a simple acknowledgement. It also shows how both programs log information about their runs in an assocaited text file. Btw, if you have some sugestions for making this better, please leave a comment . This is just about the simplest way to do logging, so other ideas are appreciated! Video 2 This shows an example of custom ports, error handling, and more logging. Both the client and server support custom ports (and server adresses in the case of the client) passed in as a launch argument. You can see when the client trys to connect to a server that either doesn’t exist on the current port, or isn’t active, an error message is displayed into the console and logged in the file. Alternatively, when both use the same port, the connection succeds, that port is logged as well. Wrap Up Lots of stuff to do still, and I am super excited to get started. Thank you to the few of you who have been following development since the beginning, and hello to anyone new!"}, {"post_id": 34839, "ts": "2026-07-25T21:21:26Z", "hours": 2.57, "text": "Manual Packet Creation and More! Just finished adding the ability to create a packet based on parameters rather than requiring a premade packet. Manual Packets Basicly, instead of needing something like , uint8_t input [] = { 0x05 , 0x64 , ... }; dnp3p_st packet_s = mkPacket ( input ); You can now just use a function and pass in parameters. Then, since this is just a fancy memory structure, a simple memcpy into an appropriately sized array will give you both! (The raw packet, and the structure) uint8_t packet [ 30 ] = { 0 }; // did some renaming, uses dnp3Lib for library funcs now dnp3p_st packet_s = dnp3Lib_mkPacket_manual ( 1 , 0 , 30 , 2 , 0 , 10 ); // params are: destination, source, group, variation, startIndex, and stopIndex memcpy ( & packet , & packet_s , 30 ); This will give you basicly the same thing as the first example, meaning you can create a packet based on a discription, rather than a discription based on a packet. This will be very useful when creating responses from to the client from the server, or vice versa. Should be noted that this is technically not very complete, but it is just an example for now. Pre-made Packets On the topic of creating a packet based on a discription, I also created some functions to create packets for common messages, including; Reset Link Required when creating a new connection Acknowledgement Negative Acknowledgment These will be useful when making connections, and sending responses to requests and replies. Wrap Up Still got a ways to go in terms of completion, but I’m hoping to ramp up my speed, been a little busy the past couple weeks."}, {"post_id": 31917, "ts": "2026-07-20T18:19:30Z", "hours": 1.1969, "text": "Added the ability to pick a custom socket or server ip. Also actualy pushed becuase I forgot last time"}, {"post_id": 31334, "ts": "2026-07-19T17:17:47Z", "hours": 4.9769, "text": "Just finished getting the client server connection working. Next thing to do is to interpret the packet on the server side, then create a reply based on the request."}, {"post_id": 26929, "ts": "2026-07-12T00:21:49Z", "hours": 3.2033, "text": "Dev log 11? I just pushed some changes and merged main and dev. This update I basically just made some fixes that should make the parser more accurate overall, but there are still a few lingering bugs. The main change I made was adding a system to clean the packet of any CRC bytes from within. Normally, a packet contains 2 bytes of CRC spread around it, with 2 after the end of the header, and after that 2 after every 16 bytes. This change will allow my data handler to not accidentally ingest CRC bytes, which would mess up the spacing of each data segment, and result in randomness. I also added a function to calculate the size of a packet based on the length information stored within it, rather than the physical memory size of it. This is better, as I can call it from any function and not have to pass in the size as a param. Overall, I am around 90% done with the backend, and just have a couple bugs to fix. I have attached a screen shot of some of the new features."}, {"post_id": 25364, "ts": "2026-07-09T16:42:47Z", "hours": 1.4706, "text": "Added parsing for more Objects Has not been very long but I am back with an update. I just finished adding in parsing for more object types, including Group 1 Varriation 1 Varriation 2 Group 30 Varriation 1 Varriation 2 I’ll also try and make more frequent posts here!"}, {"post_id": 25027, "ts": "2026-07-08T23:27:04Z", "hours": 9.7514, "text": "DNP3 Parser Update - Understanding a DNP3 Packet This week I finished parsing DNP3 Group 1 Variation 1 , the first object type supported by the parser. That means the parser can now decode binary input status values from real DNP3 traffic instead of just stopping at the object header. I also got some practice using GDB to debug my programs! Super useful as I ran into some segmentation faults that would have been impossible to fix without it! How a DNP3 Packet Works DNP3 (Distributed Network Protocol 3) is an industrial control protocol used by electric utilities, water systems, and other critical infrastructure. Communication happens between a Master (SCADA server) and one or more Outstations (RTUs, relays, PLCs, etc.). A packet is made up of several layers: Data Link Layer Transport Layer Application Header Object Header(s) Object Data Data Link Layer The packet always begins with the start bytes: 0x05 0x64 These identify the frame as DNP3. The rest of the link header contains: Length Control byte Destination address Source address CRC This layer is responsible for moving frames between devices and detecting transmission errors. Transport Layer The transport header is only one byte long, but it’s important because it: Marks the start and end of fragmented messages Provides a sequence number so fragments can be reassembled Application Layer The application header tells the receiver what operation is being requested. Examples include: Read Write Response Confirm It also contains application control flags and an application sequence number. Object Headers After the application header come one or more object headers. These tell the parser what type of data follows . An object header contains: Group number Variation number Qualifier For example: Group 1 Variation 1 represents packed binary input values. The qualifier then specifies how many objects are present and how they are indexed. Object Data Finally comes the actual payload. For Group 1 Variation 1, each bit represents the current state of a binary input: 1 = ON 0 = OFF The parser reads these bytes and expands them into individual points that can be displayed or analyzed. Completed Sections Data Link Layer parsing Transport Header parsing Application Header parsing Object Header parsing Group 1 Variation 1 object parsing Next up is adding support for additional object groups and variations so the parser can decode more real-world DNP3 traffic."}, {"post_id": 15996, "ts": "2026-06-25T23:42:02Z", "hours": 7.0044, "text": "Transport Header, Printing Updates, and Bug Fixes! Its once again that time. This week I worked on the object header, updated the printing on the DLC parsing, as well as fixing a couple big bugs. Transport Header The transport header consists of 5 parts, and its main job is to explains the format, and ordering of the data in the packet. Note that there are multiple object and data blocks in a single packet, but currently I can only parse 1 at most. Bugs Fixed Ran into a couple bugs, but I’ll just mention 2. When filling the range (part of the object header) I ran into some errors. It turns out that I had forgoten to initilize the space with 0s, and that ment that if less than 8 bytes were assigned, there was garbage memory sitting in the space. Fix was pretty easy, just zeroed out the space and then assigned the data Incorrect DLC data being printed. Another strange bug, not really sure what was causing it Fix was pretty simple, just rewrote the print statements (attached a picture) Wrap Up Thanks for enduring that yap fest. Next update will probably be when I add in data parsing, unless I make some major change.Hope you enjoyed it. Check out the GitHub: https://github.com/arnabmondal-eg/dnp3 And have a safe , fun, and patriotic Fourth of July !"}, {"post_id": 10044, "ts": "2026-06-16T16:44:41Z", "hours": 7.025, "text": "DNP3 Parser I genuinely dont know how its been 7 hours. I feel like the majority of my time is fixing bugs and trying to get my code to compile. Where I’ve Been It’s been a while since my last devlog, and I have spent the past 7 hours adding a good bit. Main thing is that almost the entire packet is now being parsed, or atleast the hard part. The entire header, dlc byte, transport header, and application header are parsed , so the only thing left is the Object headers and the data itself. I also created a new struct to hold all of these functions , so you can just pass in a hex and get all this data out, no need to call each portions functionality anymore. Whats Next Moving forward, I have a couple goals/milestones I have to hit before I can ship this project: Parse the rest of the packet Check validity on entire packet (using CRC bytes) Finish Parser UI (almost done, but still some more to be done) Create Control/Main Station UI Create RTU/Secondary Station UI Link backend and frontend using network sockets Create systems for creating packets (I believe this will be much more difficult than parsing them) Simulate “Conversations” between the main and outstations Create binaries for Windows, Mac, and Linux"}, {"post_id": 8365, "ts": "2026-06-13T22:07:59Z", "hours": 1.3322, "text": "Just did a little rework to move all header files to the inc/ folder. This should make it less cluttered, but we will see how this holds up. Next things on the chopping block are: Implement Transport Header Parsing Implement Application Header Parsing Check all CRC bytes in entire packet Check out the GitHub! https://github.com/arnabmondal-eg/dnp3"}, {"post_id": 7776, "ts": "2026-06-13T00:04:46Z", "hours": 5.6458, "text": "Its been a while… Hello! I have been working on the parser for a while. This post will be an explanation of where I am in the project so far. I wouldn’t go as far as to say that I am close to done yet, but I’m definitely nearing the halfway point. The past 2 days I have reworked how packets are interpreted, as well as adding some new helper utilities/functions to make future decoding easier. I also implemented a full bit-by-bit decomposition of the DLC byte in a header! This was super fun and rewarding as I learned a lot about bit-wise operations in C, as well as strengthening my understand of memory and how it is transferred through a program. I also learned I can’t spell! Wrote valid as “vaild” over 10 times! I also learned that C doesn’t pass the size of an array automatically! Super fun bugs! \\s Feel free to critique my code on the GitHub! https://github.com/arnabmondal-eg/dnp3"}, {"post_id": 6455, "ts": "2026-06-10T21:20:28Z", "hours": 1.3786, "text": "Finished reworking the Parser UI. It uses a split pane so you can get as much or as little space as you need. Features a text input area on the left with a parse button on the bottom, and a tree view on the right (to see the parsed packet contents) with a valid indicator on the bottom. Nothing is hooked up yet to logic, so that is coming up soon on the list! Swing is definitely kind of tedious to write though! Check out the github: https://github.com/arnabmondal-eg/dnp3"}, {"post_id": 5990, "ts": "2026-06-10T01:27:53Z", "hours": 2.5494, "text": "Just finished writing the final portion of the header validity checker, which uses a brand new CRC byte calculator! Very Fun to make, as I really got to dig deep into bit-wise operations for the first time, but definitely challenging! In terms of the backend, there is still much to do, but I am getting close to completion. The frontend still is in rough shape however. Making Good Progress!"}, {"post_id": 5857, "ts": "2026-06-09T20:07:09Z", "hours": 2.4053, "text": "Improved project structure, worked on README, added tasks to make compiling easier. Really want this to be usable, so I am putting in the work to make it simple to understand and use. Also I hated writing this project tree. Leme know if there is some tool i can use to do this automatically in the future"}, {"post_id": 5339, "ts": "2026-06-09T02:25:31Z", "hours": 1.3033, "text": "Working on the parser backend. Currently planning for all the backend to be in C, while I handle the frontend in Java using Swing. While this may seem like an ancient technology, most production SCADA applications use Swing for its long term support. And Java and C are obvious choices aswell. Heres a pic of the header part of the interpreter, and some work in progress ui. Much more work to come!"}]...
|
Title: dnp3 Parser and Simulator by @arnabm | Star Title: dnp3 Parser and Simulator by @arnabm | Stardance
Devlogs:
Working on the parser backend. Currently planning for all the backend to be in C, while I handle the frontend in Java using Swing. While this may seem like an ancient technology, most production SCADA applications use Swing for its long term support. And Java and C are obvious choices aswell. Heres a pic of the header part of the interpreter, and some work in progress ui. Much more work to come!
Improved project structure, worked on README, added tasks to make compiling easier. Really want this to be usable, so I am putting in the work to make it simple to understand and use. Also I hated writing this project tree. Leme know if there is some tool i can use to do this automatically in the future
Just finished writing the final portion of the header validity checker, which uses a brand new CRC byte calculator! Very Fun to make, as I really got to dig deep into bit-wise operations for the first time, but definitely challenging! In terms of the backend, there is still much to do, but I am getting close to completion. The frontend still is in rough shape however. Making Good Progress!
Finished reworking the Parser UI. It uses a split pane so you can get as much or as little space as you need. Features a text input area on the left with a parse button on the bottom, and a tree view on the right (to see the parsed packet contents) with a valid indicator on the bottom. Nothing is hooked up yet to logic, so that is coming up soon on the list! Swing is definitely kind of tedious to write though! Check out the github: https://github.com/arnabmondal-eg/dnp3
Its been a while… Hello! I have been working on the parser for a while. This post will be an explanation of where I am in the project so far. I wouldn’t go as far as to say that I am close to done yet, but I’m definitely nearing the halfway point. The past 2 days I have reworked how packets are interpreted, as well as adding some new helper utilities/functions to make future decoding easier. I also implemented a full bit-by-bit decomposition of the DLC byte in a header! This was super fun and rewarding as I learned a lot about bit-wise operations in C, as well as strengthening my understand of memory and how it is transferred through a program. I also learned I can’t spell! Wrote valid as “vaild” over 10 times! I also learned that C doesn’t pass the size of an array automatically! Super fun bugs! \s Feel free to critique my code on the GitHub! https://github.com/arnabmondal-eg/dnp3
Just did a little rework to move all header files to the inc/ folder. This should make it less cluttered, but we will see how this holds up. Next things on the chopping block are: Implement Transport Header Parsing Implement Application Header Parsing Check all CRC bytes in entire packet Check out the GitHub! https://github.com/arnabmondal-eg/dnp3
DNP3 Parser I genuinely dont know how its been 7 hours. I feel like the majority of my time is fixing bugs and trying to get my code to compile. Where I’ve Been It’s been a while since my last devlog, and I have spent the past 7 hours adding a good bit. Main thing is that almost the entire packet is now being parsed, or atleast the hard part. The entire header, dlc byte, transport header, and application header are parsed , so the only thing left is the Object headers and the data itself. I also created a new struct to hold all of these functions , so you can just pass in a hex and get all this data out, no need to call each portions functionality anymore. Whats Next Moving forward, I have a couple goals/milestones I have to hit before I can ship this project: Parse the rest of the packet Check validity on entire packet (using CRC bytes) Finish Parser UI (almost done, but still some more to be done) Create Control/Main Station UI Create RTU/Secondary Station UI Link backend and frontend using network sockets Create systems for creating packets (I believe this will be much more difficult than parsing them) Simulate “Conversations” between the main and outstations Create binaries for Windows, Mac, and Linux
Transport Header, Printing Updates, and Bug Fixes! Its once again that time. This week I worked on the object header, updated the printing on the DLC parsing, as well as fixing a couple big bugs. Transport Header The transport header consists of 5 parts, and its main job is to explains the format, and ordering of the data in the packet. Note that there are multiple object and data blocks in a single packet, but currently I can only parse 1 at most. Bugs Fixed Ran into a couple bugs, but I’ll just mention 2. When filling the range (part of the object header) I ran into some errors. It turns out that I had forgoten to initilize the space with 0s, and that ment that if less than 8 bytes were assigned, there was garbage memory sitting in the space. Fix was pretty easy, just zeroed out the space and then assigned the data Incorrect DLC data being printed. Another strange bug, not really sure what was causing it Fix was pretty simple, just rewrote the print statements (attached a picture) Wrap Up Thanks for enduring that yap fest. Next update will probably be when I add in data parsing, unless I make some major change.Hope you enjoyed it. Check out the GitHub: https://github.com/arnabmondal-eg/dnp3 And have a safe , fun, and patriotic Fourth of July !
DNP3 Parser Update - Understanding a DNP3 Packet This week I finished parsing DNP3 Group 1 Variation 1 , the first object type supported by the parser. That means the parser can now decode binary input status values from real DNP3 traffic instead of just stopping at the object header. I also got some practice using GDB to debug my programs! Super useful as I ran into some segmentation faults that would have been impossible to fix without it! How a DNP3 Packet Works DNP3 (Distributed Network Protocol 3) is an industrial control protocol used by electric utilities, water systems, and other critical infrastructure. Communication happens between a Master (SCADA server) and one or more Outstations (RTUs, relays, PLCs, etc.). A packet is made up of several layers: Data Link Layer Transport Layer Application Header Object Header(s) Object Data Data Link Layer The packet always begins with the start bytes: 0x05 0x64 These identify the frame as DNP3. The rest of the link header contains: Length Control byte Destination address Source address CRC This layer is responsible for moving frames between devices and detecting transmission errors. Transport Layer The transport header is only one byte long, but it’s important because it: Marks the start and end of fragmented messages Provides a sequence number so fragments can be reassembled Application Layer The application header tells the receiver what operation is being requested. Examples include: Read Write Response Confirm It also contains application control flags and an application sequence number. Object Headers After the application header come one or more object headers. These tell the parser what type of data follows . An object header contains: Group number Variation number Qualifier For example: Group 1 Variation 1 represents packed binary input values. The qualifier then specifies how many objects are present and how they are indexed. Object Data Finally comes the actual payload. For Group 1 Variation 1, each bit represents the current state of a binary input: 1 = ON 0 = OFF The parser reads these bytes and expands them into individual points that can be displayed or analyzed. Completed Sections Data Link Layer parsing Transport Header parsing Application Header parsing Object Header parsing Group 1 Variation 1 object parsing Next up is adding support for additional object groups and variations so the parser can decode more real-world DNP3 traffic.
Added parsing for more Objects Has not been very long but I am back with an update. I just finished adding in parsing for more object types, including Group 1 Varriation 1 Varriation 2 Group 30 Varriation 1 Varriation 2 I’ll also try and make more frequent posts here!
Dev log 11? I just pushed some changes and merged main and dev. This update I basically just made some fixes that should make the parser more accurate overall, but there are still a few lingering bugs. The main change I made was adding a system to clean the packet of any CRC bytes from within. Normally, a packet contains 2 bytes of CRC spread around it, with 2 after the end of the header, and after that 2 after every 16 bytes. This change will allow my data handler to not accidentally ingest CRC bytes, which would mess up the spacing of each data segment, and result in randomness. I also added a function to calculate the size of a packet based on the length information stored within it, rather than the physical memory size of it. This is better, as I can call it from any function and not have to pass in the size as a param. Overall, I am around 90% done with the backend, and just have a couple bugs to fix. I have attached a screen shot of some of the new features.
Just finished getting the client server connection working. Next thing to do is to interpret the packet on the server side, then create a reply based on the request.
Added the ability to pick a custom socket or server ip. Also actualy pushed becuase I forgot last time
Manual Packet Creation and More! Just finished adding the ability to create a packet based on parameters rather than requiring a premade packet. Manual Packets Basicly, instead of needing something like , uint8_t input [] = { 0x05 , 0x64 , ... }; dnp3p_st packet_s = mkPacket ( input ); You can now just use a function and pass in parameters. Then, since this is just a fancy memory structure, a simple memcpy into an appropriately sized array will give you both! (The raw packet, and the structure) uint8_t packet [ 30 ] = { 0 }; // did some renaming, uses dnp3Lib for library funcs now dnp3p_st packet_s = dnp3Lib_mkPacket_manual ( 1 , 0 , 30 , 2 , 0 , 10 ); // params are: destination, source, group, variation, startIndex, and stopIndex memcpy ( & packet , & packet_s , 30 ); This will give you basicly the same thing as the first example, meaning you can create a packet based on a discription, rather than a discription based on a packet. This will be very useful when creating responses from to the client from the server, or vice versa. Should be noted that this is technically not very complete, but it is just an example for now. Pre-made Packets On the topic of creating a packet based on a discription, I also created some functions to create packets for common messages, including; Reset Link Required when creating a new connection Acknowledgement Negative Acknowledgment These will be useful when making connections, and sending responses to requests and replies. Wrap Up Still got a ways to go in terms of completion, but I’m hoping to ramp up my speed, been a little busy the past couple weeks.
DevLog 15 Been busy the past couple of days with some school, so sorry I haven’t posted sooner, but I have also built out a couple more features.The Main additions are; Reusable frequent packet structures (acknowledge, negative acknowledge, reset link) Server Client loop 1. Ability to choose packet type to send to server (through TUI) in client 2. Server responds, and client is able to display response Better error handling, with more checks for errno and printing to log and console Better logging through file rather than just console The logging is proably my favorite new feature. It saves previous runs and even annotates the time and date the run took place. The error info is also much more helpful, and more often my program tells me why it crashed, instead of just ending or segfaulting client [ main]: Connection refused ^^^^ This now happens when you try to run the client with out a server on the configured adress or port Errors I ran into There actually wasn’t that much stuff going wrong, just took me pretty long as I had to edit a lot of functions and flows. A big issue i did run into was adding select() , also know as polling to the socket. Basicly, my code will loop checking the socket and parsing the data in it. But, a problem occurs if there is no data in the socket waiting. Polling allows my code to check if there actually is data, and if not wait/move on to the next task. But, I had incorrectly configured the function (the documentation for this function is especially confusing…), and this lead it to always report data in the socket. This then lead to errors with trying to map that data into a struct, and it just lead to catastrophy. Immediate Plans Have some stuff I’m going to / want to try and start before the next devlog; Logging Functions to simply logging to console and file * Something like log_note() , log_warn() , and log_error() * Currently just writing both fprintf() and perror() Add functionality to digital and analog requests * Need to add packet structures and creator functions for both Seperate network functionality like socket() , send() , etc… into its own library fucntions Seperate shared code between server and client into common library Media I thought I would include this section to explain some of things in the attached videos. These show all the features I implemented, including the client server loop, logging, and error handling Video 1 This just shows the current loop between the client and server, where the client sends a packet, a reset link packet in this case, and the server responds, in this case with a simple acknowledgement. It also shows how both programs log information about their runs in an assocaited text file. Btw, if you have some sugestions for making this better, please leave a comment . This is just about the simplest way to do logging, so other ideas are appreciated! Video 2 This shows an example of custom ports, error handling, and more logging. Both the client and server support custom ports (and server adresses in the case of the client) passed in as a launch argument. You can see when the client trys to connect to a server that either doesn’t exist on the current port, or isn’t active, an error message is displayed into the console and logged in the file. Alternatively, when both use the same port, the connection succeds, that port is logged as well. Wrap Up Lots of stuff to do still, and I am super excited to get started. Thank you to the few of you who have been following development since the beginning, and hello to anyone new!
Finished adding the logging library I mentioned in the last post. It supports Colored text for warning and errors, time stamps, and better formatting. Ironically, the hardest part about this was figuring out how to use ANSI escape codes to support the colored text. This Medium article fromVitor Matias was super helpful! i also realized most people dont wanna read walls, so my updates will be smaller form now!
Small addition. Made log_info() a variadic function, like printf() . This means you can now do the same formatting like printf("hello %s", "world") . This allows for easier logging to file and console, as both are just an arg in the funciton call! Yay!!!!
More work on the logging system. Realized that we can use a global var with an init function to remove the need for each log call to pass the file pointer to the log Previous Method; // main log_err ( errno , "client/main" , fptr ); The fptr is a FILE* varible that points to the logging file New Method; // log.c static FILE * log_file = NULL ; int log_init ( const char * file_path ) { log_file = fopen ( file_path , "a" ); if ( log_file == NULL ) { log_err ( errno , "log/log_init" ); return - 1 ; } return 0 ; } // main log_init ( "log/log.txt" ); log_err ( errno , "client/main" ); The new method means all you have to pass is errno and the location of error. Super Simple!!! I also updated both client and server with this system. Bye
Been a busy 4 days. Worked on mostly modularity for the program, making sure that I am not repeating code that can be a function as part of a larger library The 2 libraries I implemented were the common/ and network/ libraries. These are used in both the client and server. Common includes functions like setting up connections, sending packets, receiving packets, interpreting them, and polling them for data The network library handles connecting to a server/client, and others. I also finally added the ability for the client (main stations/ems) to multiple servers (outstations/rtu). You can see a demo of all this working in the video. That’s it for now, goodbye!
Im just going to appologize now, this devlog is not gonna be that great. I have been working the past few days on packet generation. Specifically on requesting data from a server, and writing that data to a packet as a server. As you can see by the time, this is much harder than it may seem. Though I did predict this a while ago. When the client request data from the server, a function is invoked that configures the group (data type; digital or analog) and the variation (presentation; packed format or with extra flags). When the server responds to this request, it invokes a function (technically 2) that refreshes the data it has (currently using a random number generator) and writes that to a packet. The packet is mostly a clone of the request, just with the source and destination switched, and the data added. Currently, I have both functions completed (or almost completed), but I still need to add crc to the reply form the server, and fix the many bugs that have arrisen from this change. Bellow I have an example request, no reply becuase the function is currently inoperable :( 05 64 0F C4 01 00 00 00 C8 E2 C1 C0 01 01 01 10 F7 03 00 0F 00 00 This request is asking for data from the server with address 1, data type 30 (digital), and the data points 3-15 Once again, very sorry for the poor quality dev log, but I just wanted to get an update out before I dug myself into an even deeper hole. See you guys later!
IM FREEEEE I FINALLY finished writing the write_data() function. Now full packet generation, with a request, and a reply is complete! Litterly the only thing left to do is make the ui. I AM DONE WITH THE BACKEND!!!!! I have included a handy guide to the output bellow. Instead of another picture of my terminal, you guys get to enjoy some color coded google docs!
Added the data generation, request creation, and response creation to the client and server. You can see a demo below. Not a giant change, just integrating the the new functions into the Client and Server....
|
1792806518.3515651
|
1793411318.3515651
|
|
33986
|
Turtlebrowse by @leethana | Stardance
|
leethana
|
1
|
92.7
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-18T14:07:25Z", "hours": 57.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Turtlebrowse, a Material 3 Expressive, Chromium (JCEF) based agentic browser that can navigate the web autonomously with you. Features Discord Rich Presence, a YouTube video downloader with yt-dlp, customizable appearence, many tools for the AI agent to navigate the wb for you, and more!", "repo": "https://github.com/ingStudiosOfficial/turtlebrowse", "demo": "https://github.com/ingStudiosOfficial/turtlebrowse/releases/latest"}]...
|
[{"post_id": 81234, "ts": "202 [{"post_id": 81234, "ts": "2026-10-20T12:09:04Z", "hours": 5.07, "text": "added userscripts scaffolding and a new easter egg :)"}, {"post_id": 79741, "ts": "2026-10-15T08:21:14Z", "hours": 0.4258, "text": "fixed windows focus bug finally. after 9 months. youre telling me the answer is a simple clear global focus owner. really man?"}, {"post_id": 79022, "ts": "2026-10-12T12:03:43Z", "hours": 5.045, "text": "added auto updating for linux appimages. i also improved the adblocker and ported a cube minigame into the browser."}, {"post_id": 78054, "ts": "2026-10-09T12:08:14Z", "hours": 12.2119, "text": "Added adblocking, zooming, new improved UI, and favicon support!"}, {"post_id": 72634, "ts": "2026-09-23T12:15:24Z", "hours": 1.9778, "text": "Added an integrated terminal using JediTerm and pty4j to the browser sidebar. Silly feature but cool and useful. First browser to do so."}, {"post_id": 72176, "ts": "2026-09-22T11:45:30Z", "hours": 1.3872, "text": "Added fullscreen mode support and fixed toolbar bad contrast when dark mode bug."}, {"post_id": 71083, "ts": "2026-09-20T08:49:42Z", "hours": 2.7953, "text": "Added OS theme detection for light/dark mode. Modified the buttons and text to follow the theme as well."}, {"post_id": 70650, "ts": "2026-09-19T14:54:50Z", "hours": 2.745, "text": "Added an update microservice using Go and migrated the update UI to the settings page."}, {"post_id": 70467, "ts": "2026-09-19T07:56:12Z", "hours": 4.0381, "text": "Added find and replace to Turtlebrowse and a new tool panel that can be swapper for AI, find and replace, and yt-dlp"}, {"post_id": 70101, "ts": "2026-09-18T13:43:43Z", "hours": 5.9531, "text": "Added browsing history, made tab switching more efficient. I struggled with fixing the grey paint on tab switch bcuz it looks like its unfixable and an issue with JCEF on Linux."}, {"post_id": 69527, "ts": "2026-09-17T07:20:24Z", "hours": 13.5119, "text": "Added Linux AppImage, YouTube video downloader, and more! Features and bugs fixed: YouTube video downloader via yt-dlp Better menu buttons Web browser registration and xdg-open handlers on Linux Frontend search suggestor AppImage build"}, {"post_id": 47273, "ts": "2026-08-15T03:00:13Z", "hours": 8.1233, "text": "Multiple new changes in Turtlebrowse v1.4.5, including: Setting to enable AI integration and model selection New Tab settings New Tab wallpaper uploading Migrated from Vue to Nuxt for turtlebrowse.ingstudios.dev for better SEO Improved performance for wallpapers (serving images directly from backend rather than creating an ObjectURL based on the returned Blob)"}, {"post_id": 43807, "ts": "2026-08-09T07:27:24Z", "hours": 2.9322, "text": "I used the DuckDuckGo autocompleter API to add autocompletions to Turtlebrowse. It uses a JavaFX Popup component with an embedded ListView. I also changed the jpackage to use a custom jlink."}, {"post_id": 41298, "ts": "2026-08-05T13:16:17Z", "hours": 3.7625, "text": "Completed the settings page! User can now choose between many different search engines including Brave Search, DuckDuckGo, Google, Startpage, Vyntr, Bing and Yahoo. Users can also choose to enable or disable the Discord Rich Presence IPC connection."}, {"post_id": 39991, "ts": "2026-08-03T10:42:48Z", "hours": 2.4553, "text": "we (finally) managed to fix macos build on turtlebrowse! turns out the issue was single process flag that had to be added because of linux and focus issues that caused a StackOverflowError on mac! try v1.2.9 now at https://turtlebrowse.ingstudios.dev !"}, {"post_id": 36840, "ts": "2026-07-29T04:55:36Z", "hours": 3.2208, "text": "Fixed some critical bugs, including: AI chat agent freezing main thread due to joining virtual thread Fixed AI chat not running because did not start the thread Fixed the search tool returning 429 due to the lack of headers"}, {"post_id": 32267, "ts": "2026-07-21T10:25:02Z", "hours": 5.6911, "text": "Fixed some bugs and added new features in the new update such as: Discord Rich Presence Profile editing Stability fixes"}, {"post_id": 27063, "ts": "2026-07-12T08:46:45Z", "hours": 11.7428, "text": "Added new features and bug fixes such as: Multi process architecture Multiple isolated user profiles Fixed the profile switcher Fixed the Ctrl + L shortcut to focus the URL bar Added the Ctrl + W shortcut to close the current tab"}]...
|
Title: Turtlebrowse by @leethana | Stardance
Devl Title: Turtlebrowse by @leethana | Stardance
Devlogs:
Added new features and bug fixes such as: Multi process architecture Multiple isolated user profiles Fixed the profile switcher Fixed the Ctrl + L shortcut to focus the URL bar Added the Ctrl + W shortcut to close the current tab
Fixed some bugs and added new features in the new update such as: Discord Rich Presence Profile editing Stability fixes
Fixed some critical bugs, including: AI chat agent freezing main thread due to joining virtual thread Fixed AI chat not running because did not start the thread Fixed the search tool returning 429 due to the lack of headers
we (finally) managed to fix macos build on turtlebrowse! turns out the issue was single process flag that had to be added because of linux and focus issues that caused a StackOverflowError on mac! try v1.2.9 now at https://turtlebrowse.ingstudios.dev !
Completed the settings page! User can now choose between many different search engines including Brave Search, DuckDuckGo, Google, Startpage, Vyntr, Bing and Yahoo. Users can also choose to enable or disable the Discord Rich Presence IPC connection.
I used the DuckDuckGo autocompleter API to add autocompletions to Turtlebrowse. It uses a JavaFX Popup component with an embedded ListView. I also changed the jpackage to use a custom jlink.
Multiple new changes in Turtlebrowse v1.4.5, including: Setting to enable AI integration and model selection New Tab settings New Tab wallpaper uploading Migrated from Vue to Nuxt for turtlebrowse.ingstudios.dev for better SEO Improved performance for wallpapers (serving images directly from backend rather than creating an ObjectURL based on the returned Blob)
Added Linux AppImage, YouTube video downloader, and more! Features and bugs fixed: YouTube video downloader via yt-dlp Better menu buttons Web browser registration and xdg-open handlers on Linux Frontend search suggestor AppImage build
Added browsing history, made tab switching more efficient. I struggled with fixing the grey paint on tab switch bcuz it looks like its unfixable and an issue with JCEF on Linux.
Added find and replace to Turtlebrowse and a new tool panel that can be swapper for AI, find and replace, and yt-dlp
Added an update microservice using Go and migrated the update UI to the settings page.
Added OS theme detection for light/dark mode. Modified the buttons and text to follow the theme as well.
Added fullscreen mode support and fixed toolbar bad contrast when dark mode bug.
Added an integrated terminal using JediTerm and pty4j to the browser sidebar. Silly feature but cool and useful. First browser to do so.
Added adblocking, zooming, new improved UI, and favicon support!
added auto updating for linux appimages. i also improved the adblocker and ported a cube minigame into the browser.
fixed windows focus bug finally. after 9 months. youre telling me the answer is a simple clear global focus owner. really man?
added userscripts scaffolding and a new easter egg :)
Ships:
I built Turtlebrowse, a Material 3 Expressive, Chromium (JCEF) based agentic browser that can navigate the web autonomously with you. Features Discord Rich Presence, a YouTube video downloader with yt-dlp, customizable appearence, many tools for the AI agent to navigate the wb for you, and more!...
|
1793004975.844571
|
1793091375.844571
|
|
18200
|
ForceField by @anygenericname | Stardance
|
anygenericname
|
0
|
92.47
|
0
|
[]
|
[{"post_id": 80482, "ts": "202 [{"post_id": 80482, "ts": "2026-10-17T20:03:45Z", "hours": 3.2789, "text": "Connection Testing Screen. A nice little UI that allows you to see where exactly your connection might be failing. (the gif is kinda slow, no idea why that’s happening lol)"}, {"post_id": 78127, "ts": "2026-10-09T17:17:39Z", "hours": 13.7836, "text": "Added Automatic Install, Better Key Generation, ARM support — Now you can give ssh credentials and Forcefield will install its client on your server. Also, Forcefield generates its keys at runtime now!"}, {"post_id": 69445, "ts": "2026-09-17T02:15:19Z", "hours": 28.3153, "text": "Got Wireguard working! We can now bypass hotel/repressive gov./etc. content blockers"}, {"post_id": 16745, "ts": "2026-06-27T06:21:24Z", "hours": 7.6619, "text": "Ipv6 now working! It is now possible to proxy Ipv6 traffic through the tunnel, regardless of if the client device has ipv6 access, which is cool. I still don’t have the ability to give you a public ipv6 address, but that might be on the way, not sure."}, {"post_id": 15191, "ts": "2026-06-24T18:10:12Z", "hours": 22.6558, "text": "Different types of routes can now be used to talk to different peers. Direct routes to public IPs, direct routes to internal IPs (with tags for which peers have that route available), and reverse routes, for bypassing NAT and talking to peers with no public IP. Still need to integrate websockets for firewall bypass. Unfortunately, this is a command line tool, so there isn’t much I can show but I did write an absolute ton of code."}, {"post_id": 10146, "ts": "2026-06-16T19:08:12Z", "hours": 5.92, "text": "Trying to get a endpoint control ui working. Eventually I’m going to make endpoints be capable of creating their own connections instead of doing everything from the main device. This will help to bypass NAT in some cases. Also, I’m apperently allergic to doing projects that are visually interesting (eg. cli tools 😭) so the only image you’re getting is this."}, {"post_id": 9009, "ts": "2026-06-15T00:57:08Z", "hours": 4.5653, "text": "Actually got it working! Forcefield now builds nested VPN configs at will"}, {"post_id": 8834, "ts": "2026-06-14T18:10:44Z", "hours": 2.8328, "text": "Built out as much CLI as possible without actually testing VPN. Starting docker now ig"}, {"post_id": 8505, "ts": "2026-06-14T04:18:09Z", "hours": 3.4592, "text": "Connection logic, some wireguard management, all untested 😭"}]...
|
Title: ForceField by @anygenericname | Stardance
Title: ForceField by @anygenericname | Stardance
Devlogs:
Connection logic, some wireguard management, all untested 😭
Built out as much CLI as possible without actually testing VPN. Starting docker now ig
Actually got it working! Forcefield now builds nested VPN configs at will
Trying to get a endpoint control ui working. Eventually I’m going to make endpoints be capable of creating their own connections instead of doing everything from the main device. This will help to bypass NAT in some cases. Also, I’m apperently allergic to doing projects that are visually interesting (eg. cli tools 😭) so the only image you’re getting is this.
Different types of routes can now be used to talk to different peers. Direct routes to public IPs, direct routes to internal IPs (with tags for which peers have that route available), and reverse routes, for bypassing NAT and talking to peers with no public IP. Still need to integrate websockets for firewall bypass. Unfortunately, this is a command line tool, so there isn’t much I can show but I did write an absolute ton of code.
Ipv6 now working! It is now possible to proxy Ipv6 traffic through the tunnel, regardless of if the client device has ipv6 access, which is cool. I still don’t have the ability to give you a public ipv6 address, but that might be on the way, not sure.
Got Wireguard working! We can now bypass hotel/repressive gov./etc. content blockers
Added Automatic Install, Better Key Generation, ARM support — Now you can give ssh credentials and Forcefield will install its client on your server. Also, Forcefield generates its keys at runtime now!
Connection Testing Screen. A nice little UI that allows you to see where exactly your connection might be failing. (the gif is kinda slow, no idea why that’s happening lol)...
|
1792489680.9448452
|
1793094480.9448452
|
|
4086
|
Boba Cats! by @grassyd | Stardance
|
grassyd
|
1
|
92.31
|
1697
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-09T20:09:37Z", "hours": 91.0, "multiplier": 19.1, "payout": 1697, "blessing": "neutral", "text": "Check out @Jewelia ’s version of the project here: https://stardance.hackclub.com/projects/1894 Boba Cats! is a 2D adventure platformer game about, well, boba and cats! It was made with @Jewelia and @kimeowsu ! The first world of the game is fully playable! Music and extra touches will be added in the future! You can play the game on the itch app for Windows, Mac, or Linux, or you can directly download the game for Windows! (This is a collaborative project! @Jewelia ’s project links to the same thing; it’s up to you if you want to rate hers or mine or both)", "repo": "https://github.com/grassybox/Boba-Cats", "demo": "https://grassinabox.itch.io/boba-cats"}]...
|
[{"post_id": 60021, "ts": "202 [{"post_id": 60021, "ts": "2026-09-02T03:46:55Z", "hours": 1.3117, "text": "Hello hello! Thank you so much for all the support and feedback on our game!! It really means a lot! And huge thank you Stardance team for the Super Star!!?! 🤯🤯🤯 I’m so grateful for this program, it’s been awesome 💖 Sorry it’s been a while since the last update… 😔 (though if you’ve never seen me before I guess you wouldn’t know lol…) We took quite a break now that we’re all starting school and are busy with other things too . However, we still hope to do one more ship with a more complete version of this world of the game! So what is next? 🎵 Music!! - This is probably the biggest thing we’ve been wanting to add, so music is in the works! We are also thinking of adding more sound effects and improving the sound design overall! 🎮 Gameplay improvements - We are working to tweak some things based on our ideas and the wonderful feedback we gotten! For example, some parts are kind of confusing to navigate at the moment 😅, so we hope to make it more clear! 🌐 Web version? - We’ve been wanting to make the game playable on the web! I’m not sure how possible this is since Godot 4 does not officially support exporting C# projects to web yet… but we’ll see what we can do! 👍 And whatever other miscellaneous additions we decide to add! Thanks for reading!! (p.s. I finally put a linux version of the demo on the game’s itch.io page sorry it took so long 😭)"}, {"post_id": 43760, "ts": "2026-08-09T05:39:46Z", "hours": 12.5853, "text": "Playtesting!! EDIT: the ship is shipping!! It is currently pending review!! It may take a few days to show up because I forgot you have to get it reviewed!! 😅😅😅🆒 _ @kimeowsu spent some time playtesting our game! She’s quite good at finding issues 😅 As per usual, the seabunny had a lot of issues >:/ …but they should be fixed now! _ Some of the stuff we fixed include: ⛸️ Player doesn’t slide away during a conversation anymore Seabunny no longer freezes the game ➡️⬅️ Seabunny no longer occasionally moves backwards Player is no longer able to collect the same coin over and over again 🖼️ Visual fixes (ex. one of the cats no longer has only half of a helmet) 🌟 And many more miscellaneous tweaks! I know I said that we would ship earlier… but I think this time we are actually going to ship in the next 24 hours… for real… probably… 🎉 🥳 🎈 🆒"}, {"post_id": 39755, "ts": "2026-08-02T22:31:52Z", "hours": 7.4647, "text": "Sound Effects!! 🔊 [Game update] Our game has sound effects now! @kimeowsu actually got sound effects from the website aidn.jp/dotvoice by daniwell ! The sound effects are quite minimal so it sounds quite empty for now… we will have original music eventually from a friend , but good things take time 😋 I also fixed some bugs (mostly ones I caused myself 😅) and added a quit button (as cool as Boba Cats! is, I don’t think anyone wants to play it forever and ever and ever) As @Jewelia said in her post, we are hoping to ship this week!! World 1 will be completely playable!! 🎉🥳🎊 In the future, we may have another ship just to include the music and any fixes and extra touches Thanks for reading!! :D"}, {"post_id": 36053, "ts": "2026-07-27T21:52:46Z", "hours": 4.7814, "text": "spinny item animation thing! [Game update] I made this animation that plays whenever you get an item! Some other small additions: 🦪 Pearls are new! They will be hidden in a couple places and will be able to be gifted to the townspeople in exchange for stories ✨ Added sparkles to the miniboss arena to better show where to go 🪸 Tube coral now teleport you back to the beginning of the room if you get hit 🗃️ Organized scene files into folders Since this project has gotten more attention recently, thank you for the support!!!! @Jewelia and I hope to have a ship ready soon…"}, {"post_id": 33180, "ts": "2026-07-22T21:04:15Z", "hours": 4.3947, "text": "You can go backwards now… ( !) [Game update] I added stuff like this conveniently left behind ladder so you can actually go back to the previous rooms after finishing the seabunny miniboss I finished the last cutscene in the area! @kimeowsu helped add some more decorative vines in some of the areas I made collectable coins! You can’t see your number of coins collected yet so you’re just gonna have to trust me they’re getting collected"}, {"post_id": 31927, "ts": "2026-07-20T18:37:03Z", "hours": 6.5889, "text": "Game Update #I didn’t count! I finished my secret room! (but you don’t get to see it here because it’s secret… 😼) Coded the plant shop with @Jewelia ! Finally finished the seabunny miniboss with some animation tweaks! Fixed an issue where pressing enter to finish a dialogue would restart the dialogue, trapping you in an infinite loop… 😵💫 Added the title screen + opening (created by @kimeowsu !)"}, {"post_id": 28421, "ts": "2026-07-14T17:35:17Z", "hours": 8.9475, "text": "Almost done with the seabunny miniboss!! but then I realized I had to fix the camera movement to stay still during the miniboss (actually @Jewelia ended up doing that because I couldn’t figure it out ), edit all of the seabunny animations because switching animations caused the seabunny to start floating , make the exit of the room higher so that the player can’t escape without actually finishing the miniboss , make the climbable vine sprite longer so the player can actually reach that exit when it’s time, fix issues in the player’s movement code (which have been there the whole time…😅), implement the quest system we made so that the game keeps track of when you’ve beaten the miniboss and when to play which cutscene, make the ending cutscene, make the world 1 end screen (which doesn’t work yet oops), uhhh But that didn’t take too long… So yeah we’re almost done with the seabunny miniboss! Anyway, I also added another short cutscene at the beginning of the game, began working on my secret room , and finally organized all of the game files into folders! (I also renamed my project folder… which created a new project in Hackatime… but I didn’t realize and thought I lost my hours and made it so that I could never get hours on Stardance ever again… but actually I just had to add the new Hackatime project to Stardance and I was just stupid and everything’s fine )"}, {"post_id": 26094, "ts": "2026-07-10T17:57:43Z", "hours": 7.7283, "text": "We’re continuing to tweak things and add the final additions to our game! Including: A room full of vines 🪴 A plant shop 🌷 A geyser shortcut that shoots the player up! 🌊 A gate that opens when you click on it 🖱️ And more!"}, {"post_id": 20415, "ts": "2026-07-02T00:36:24Z", "hours": 8.0689, "text": "I keep forgetting to post devlogs… We’ve been continuing to add more rooms, such as this long coral room. (Unfortunately, the tube coral sprites are a little broken right now and look like they are on the ceiling… ) Now there’s only 2 rooms left to add for world 1!! 🎉 🎉 We also worked on finishing up the sea bunny miniboss (still not working right now) and making cutscene animations like this one in the boba room ⬇️. They’re actually so silly and fun to make 😆 so you better watch the video (if you want to) As always, @kimeowsu made the art, and @Jewelia added plenty of new updates too!"}, {"post_id": 18476, "ts": "2026-06-29T17:15:26Z", "hours": 7.2158, "text": "Fish minigame ! 🐟 We created a minigame where you collect fish within a time limit to get coins! You have to be careful, though, because if you get too close, you can get hit by them. @Jewelia also started making a menu to show the controls and inventory. Additionally, we’re continuing to add new rooms and dialogue scenes!"}, {"post_id": 17352, "ts": "2026-06-28T03:07:24Z", "hours": 6.3483, "text": "New Rooms !! Sorry it’s been a while… @Jewelia , @kimeowsu , and I have been adding a lot of new rooms to the underwater section of the game, like this submarine workshop and this cave room! We also added screen transitions and a way to enter and exit buildings. Now, we are beginning to add in the dialogue! The first world of our game may be done very, very soon! (Maybe even soon enough for a free sticker? ) Until next time!"}, {"post_id": 12273, "ts": "2026-06-20T01:11:20Z", "hours": 5.1033, "text": "WORDS !! 🗣️ @Jewelia and I started making the dialogue system! The only issue is that the font is blurry. I thought I fixed it… but no… 😔 Maybe it will work better with a more pixelated font. 🤔 Actually I think half of the time I spent was just importing sprites 😅 @kimeowsu has been doing a ton of pixel art! 🔥🔥🔥We also added a big jellyfish! kimeowsu says it’s based on the Sea Nettle :0 Anyway sorry the video is so chaotic 👻😆"}, {"post_id": 10958, "ts": "2026-06-17T23:33:57Z", "hours": 3.5786, "text": "New Room!! 📦📦📦✨ @kimeowsu brought us some lovely art for this box room! There’s a big jellyfish at the top that hurts you if you go near… We also added a parallax effect, so the different layers of the background move at different speeds! (It’s most noticeable in the rocks at the top.) Don’t ask what the bomb does…"}, {"post_id": 6867, "ts": "2026-06-11T14:54:12Z", "hours": 1.5281, "text": "Flashlight system!! ✨ We added darkness and a flashlight system, which will be used in certain rooms of the game! (and the code for this worked first try?!? OK more like second try but still 🤯) Right now the flashlight can follow where your mouse pointer is! Also, @Jewelia did some magic and fixed the camera so it looks great now! 😄"}, {"post_id": 5969, "ts": "2026-06-10T00:25:20Z", "hours": 4.1497, "text": "WE HAVE ART!! 🥳 @kimeowsu helped make some amazing art for the game! Doesn’t it look great? Aside from that, @Jewelia and I added a health and hitbox system. She also added walls and floors. Now we need to adjust the camera because, well, the game isn’t fully on screen. 😅"}, {"post_id": 1621, "ts": "2026-06-03T19:12:23Z", "hours": 2.9072, "text": "I’m making an adventure game with an underwater area! 🌊🐟🦀🪸🐈🐳😄🆒😆👾‼️‼️Ok sorry for all the emojis 😔 Anyway I made a tube coral that pulls the player down when they swim above it! @Jewelia helped make it so that they turn on and off every two seconds using a timer! (Her hours are logged separately) It works now except for some reason the coral in the middle doesn’t want to cooperate!! It turns on at a different time then the others for some reason and doesn’t pull the player when it’s supposed to! IDK why this is happening they should all be the same Once we figure out how to fix that, the next step is to make it so that if you get pulled too close to the bottom, you take damage. and at some point add the art graphics!"}]...
|
Title: Boba Cats! by @grassyd | Stardance
Devlogs Title: Boba Cats! by @grassyd | Stardance
Devlogs:
I’m making an adventure game with an underwater area! 🌊🐟🦀🪸🐈🐳😄🆒😆👾‼️‼️Ok sorry for all the emojis 😔 Anyway I made a tube coral that pulls the player down when they swim above it! @Jewelia helped make it so that they turn on and off every two seconds using a timer! (Her hours are logged separately) It works now except for some reason the coral in the middle doesn’t want to cooperate!! It turns on at a different time then the others for some reason and doesn’t pull the player when it’s supposed to! IDK why this is happening they should all be the same Once we figure out how to fix that, the next step is to make it so that if you get pulled too close to the bottom, you take damage. and at some point add the art graphics!
WE HAVE ART!! 🥳 @kimeowsu helped make some amazing art for the game! Doesn’t it look great? Aside from that, @Jewelia and I added a health and hitbox system. She also added walls and floors. Now we need to adjust the camera because, well, the game isn’t fully on screen. 😅
Flashlight system!! ✨ We added darkness and a flashlight system, which will be used in certain rooms of the game! (and the code for this worked first try?!? OK more like second try but still 🤯) Right now the flashlight can follow where your mouse pointer is! Also, @Jewelia did some magic and fixed the camera so it looks great now! 😄
New Room!! 📦📦📦✨ @kimeowsu brought us some lovely art for this box room! There’s a big jellyfish at the top that hurts you if you go near… We also added a parallax effect, so the different layers of the background move at different speeds! (It’s most noticeable in the rocks at the top.) Don’t ask what the bomb does…
WORDS !! 🗣️ @Jewelia and I started making the dialogue system! The only issue is that the font is blurry. I thought I fixed it… but no… 😔 Maybe it will work better with a more pixelated font. 🤔 Actually I think half of the time I spent was just importing sprites 😅 @kimeowsu has been doing a ton of pixel art! 🔥🔥🔥We also added a big jellyfish! kimeowsu says it’s based on the Sea Nettle :0 Anyway sorry the video is so chaotic 👻😆
New Rooms !! Sorry it’s been a while… @Jewelia , @kimeowsu , and I have been adding a lot of new rooms to the underwater section of the game, like this submarine workshop and this cave room! We also added screen transitions and a way to enter and exit buildings. Now, we are beginning to add in the dialogue! The first world of our game may be done very, very soon! (Maybe even soon enough for a free sticker? ) Until next time!
Fish minigame ! 🐟 We created a minigame where you collect fish within a time limit to get coins! You have to be careful, though, because if you get too close, you can get hit by them. @Jewelia also started making a menu to show the controls and inventory. Additionally, we’re continuing to add new rooms and dialogue scenes!
I keep forgetting to post devlogs… We’ve been continuing to add more rooms, such as this long coral room. (Unfortunately, the tube coral sprites are a little broken right now and look like they are on the ceiling… ) Now there’s only 2 rooms left to add for world 1!! 🎉 🎉 We also worked on finishing up the sea bunny miniboss (still not working right now) and making cutscene animations like this one in the boba room ⬇️. They’re actually so silly and fun to make 😆 so you better watch the video (if you want to) As always, @kimeowsu made the art, and @Jewelia added plenty of new updates too!
We’re continuing to tweak things and add the final additions to our game! Including: A room full of vines 🪴 A plant shop 🌷 A geyser shortcut that shoots the player up! 🌊 A gate that opens when you click on it 🖱️ And more!
Almost done with the seabunny miniboss!! but then I realized I had to fix the camera movement to stay still during the miniboss (actually @Jewelia ended up doing that because I couldn’t figure it out ), edit all of the seabunny animations because switching animations caused the seabunny to start floating , make the exit of the room higher so that the player can’t escape without actually finishing the miniboss , make the climbable vine sprite longer so the player can actually reach that exit when it’s time, fix issues in the player’s movement code (which have been there the whole time…😅), implement the quest system we made so that the game keeps track of when you’ve beaten the miniboss and when to play which cutscene, make the ending cutscene, make the world 1 end screen (which doesn’t work yet oops), uhhh But that didn’t take too long… So yeah we’re almost done with the seabunny miniboss! Anyway, I also added another short cutscene at the beginning of the game, began working on my secret room , and finally organized all of the game files into folders! (I also renamed my project folder… which created a new project in Hackatime… but I didn’t realize and thought I lost my hours and made it so that I could never get hours on Stardance ever again… but actually I just had to add the new Hackatime project to Stardance and I was just stupid and everything’s fine )
Game Update #I didn’t count! I finished my secret room! (but you don’t get to see it here because it’s secret… 😼) Coded the plant shop with @Jewelia ! Finally finished the seabunny miniboss with some animation tweaks! Fixed an issue where pressing enter to finish a dialogue would restart the dialogue, trapping you in an infinite loop… 😵💫 Added the title screen + opening (created by @kimeowsu !)
You can go backwards now… ( !) [Game update] I added stuff like this conveniently left behind ladder so you can actually go back to the previous rooms after finishing the seabunny miniboss I finished the last cutscene in the area! @kimeowsu helped add some more decorative vines in some of the areas I made collectable coins! You can’t see your number of coins collected yet so you’re just gonna have to trust me they’re getting collected
spinny item animation thing! [Game update] I made this animation that plays whenever you get an item! Some other small additions: 🦪 Pearls are new! They will be hidden in a couple places and will be able to be gifted to the townspeople in exchange for stories ✨ Added sparkles to the miniboss arena to better show where to go 🪸 Tube coral now teleport you back to the beginning of the room if you get hit 🗃️ Organized scene files into folders Since this project has gotten more attention recently, thank you for the support!!!! @Jewelia and I hope to have a ship ready soon…
Sound Effects!! 🔊 [Game update] Our game has sound effects now! @kimeowsu actually got sound effects from the website aidn.jp/dotvoice by daniwell ! The sound effects are quite minimal so it sounds quite empty for now… we will have original music eventually from a friend , but good things take time 😋 I also fixed some bugs (mostly ones I caused myself 😅) and added a quit button (as cool as Boba Cats! is, I don’t think anyone wants to play it forever and ever and ever) As @Jewelia said in her post, we are hoping to ship this week!! World 1 will be completely playable!! 🎉🥳🎊 In the future, we may have another ship just to include the music and any fixes and extra touches Thanks for reading!! :D
Playtesting!! EDIT: the ship is shipping!! It is currently pending review!! It may take a few days to show up because I forgot you have to get it reviewed!! 😅😅😅🆒 _ @kimeowsu spent some time playtesting our game! She’s quite good at finding issues 😅 As per usual, the seabunny had a lot of issues >:/ …but they should be fixed now! _ Some of the stuff we fixed include: ⛸️ Player doesn’t slide away during a conversation anymore Seabunny no longer freezes the game ➡️⬅️ Seabunny no longer occasionally moves backwards Player is no longer able to collect the same coin over and over again 🖼️ Visual fixes (ex. one of the cats no longer has only half of a helmet) 🌟 And many more miscellaneous tweaks! I know I said that we would ship earlier… but I think this time we are actually going to ship in the next 24 hours… for real… probably… 🎉 🥳 🎈 🆒
Hello hello! Thank you so much for all the support and feedback on our game!! It really means a lot! And huge thank you Stardance team for the Super Star!!?! 🤯🤯🤯 I’m so grateful for this program, it’s been awesome 💖 Sorry it’s been a while since the last update… 😔 (though if you’ve never seen me before I guess you wouldn’t know lol…) We took quite a break now that we’re all starting school and are busy with other things too . However, we still hope to do one more ship with a more complete version of this world of the game! So what is next? 🎵 Music!! - This is probably the biggest thing we’ve been wanting to add, so music is in the works! We are also thinking of adding more sound effects and improving the sound design overall! 🎮 Gameplay improvements - We are working to tweak some things based on our ideas and the wonderful feedback we gotten! For example, some parts are kind of confusing to navigate at the moment 😅, so we hope to make it more clear! 🌐 Web version? - We’ve been wanting to make the game playable on the web! I’m not sure how possible this is since Godot 4 does not officially support exporting C# projects to web yet… but we’ll see what we can do! 👍 And whatever other miscellaneous additions we decide to add! Thanks for reading!! (p.s. I finally put a linux version of the demo on the game’s itch.io page sorry it took so long 😭)
Ships:
Check out @Jewelia ’s version of the project here: https://stardance.hackclub.com/projects/1894 Boba Cats! is a 2D adventure platformer game about, well, boba and cats! It was made with @Jewelia and @kimeowsu ! The first world of the game is fully playable! Music and extra touches will be added in the future! You can play the game on the itch app for Windows, Mac, or Linux, or you can directly download the game for Windows! (This is a collaborative project! @Jewelia ’s project links to the same thing; it’s up to you if you want to rate hers or mine or both)...
|
1792986437.1219916
|
1793072837.1219916
|
|
41066
|
jusstudy by @vividsystem | Stardance
|
vividsystem
|
0
|
92.26
|
0
|
[]
|
[{"post_id": 77598, "ts": "202 [{"post_id": 77598, "ts": "2026-10-07T16:07:46Z", "hours": 9.7739, "text": "Observability Overhaul I am not finished yet, but I am overhauling the entire observability structure. It is way overkill for this small ysws but I wanted to try anyway. The observability stack will now use OpenTelemetry with Grafana Alloy as a Collector. That then gets forwarded to Loki, Prometheus and Tempo. This will enable fancy traces and super cool metrics."}, {"post_id": 76082, "ts": "2026-10-02T09:01:08Z", "hours": 4.1356, "text": "Yet more backend fixes Learning no. 1 of the day: Writing safe database queries with no race-conditions is really hard. Most of the fixes today where fixing some database/transaction related things. I also added a way to validate environment variables on start up since with the sheer amount of variables now it seems necessary. I am really happy with my current “use AI to review” workflow. I am actually learning quite a bit about how transactions work etc."}, {"post_id": 75444, "ts": "2026-09-30T03:40:47Z", "hours": 4.8844, "text": "Bug fixing because human slop also creates bugs. There were bugs to let users change their balance, typos, race-conditions etc."}, {"post_id": 74509, "ts": "2026-09-27T15:14:09Z", "hours": 3.5308, "text": "Slack Bot Integration and some other stuff"}, {"post_id": 60899, "ts": "2026-09-03T15:31:32Z", "hours": 8.8433, "text": "Regional Pricing in Shop Pt.2 I finished up the regional pricing thing. It was mostly just refactoring the frontend and getting yelled at by error messages."}, {"post_id": 59720, "ts": "2026-09-01T17:21:39Z", "hours": 10.0139, "text": "Regional Pricing in Shop I am not finished yet but well as I forgot to log before 10h I guess I will have to post an update. I am currently finishing up regional pricing as a new feature for the shop. This way we will be able to change pricing depending on the regions products get shipped to."}, {"post_id": 55586, "ts": "2026-08-27T15:11:18Z", "hours": 6.1311, "text": "API Docs I annotated the about 50 api routes and setup Scalar to show the api docs"}, {"post_id": 55418, "ts": "2026-08-27T07:12:56Z", "hours": 7.3225, "text": "Time tracking rework - Part 2 this was basically changing all the old code out to work with the new time entries. I will have to figure out a cleaner way to get time per ship. but for now it works."}, {"post_id": 54755, "ts": "2026-08-25T21:00:12Z", "hours": 9.0942, "text": "Time tracking rework and Hackatime OAuth Integration I am currently reworking the entire way time is tracked for jus’study. Beforehand the time was tracked in the devlog database table. This now introduces a bunch of problems if you want to for example alter that data. Because of that the idea is to move to a design that I call “time ledger”. Basically any “event” like adding a devlog adds a duration (can be negative to subtract). This way it is way more extensible. Oh yeah and I made an integration for hackatime oauth. Right now I am trying to write sql-migrations so that I can migrate to the new database schema without deleting everything."}, {"post_id": 50566, "ts": "2026-08-19T19:30:11Z", "hours": 4.5628, "text": "Today I finished up the review redesign and added a project-lock feature. I have never been so frustrated with React like today. The dialog you can see in the screenshot was a pain to get working using the <dialog> tag. React for some reason doesn’t implement the button attributes necessary for opening and closing dialogs without javascript. And the way state is controlled for dialogs in React sucks and I had to use refs."}, {"post_id": 49867, "ts": "2026-08-18T20:21:03Z", "hours": 8.2717, "text": "I started redesigning and refactoring the review panel. The previous UI was AI generated and looked bad. To be quite honest I don’t really like the Jus’Study theme so far so I tried making the best of it with the review panel and actual put some thought into the design. In the next couple of days I will try to add some more features as well to make the update not only cosmetic. I might look into AI for this in the future, but I find my human-written code to be more aesthetic (when I am trying atleast)"}, {"post_id": 37124, "ts": "2026-07-29T16:40:42Z", "hours": 1.01, "text": "added a little “My orders” page so participants can have a look at their orders"}, {"post_id": 37071, "ts": "2026-07-29T15:33:43Z", "hours": 3.3961, "text": "I finished the new shop item variant system. Admins can now create new options on already existing items or create new items with multiple options. I also updated the item buying page to let the user select (see below)"}, {"post_id": 36715, "ts": "2026-07-28T23:02:19Z", "hours": 11.2892, "text": "I added a shop managment panel and am currently working on adding shop item variants so users can e.g. select different colors for an item As always the backend is way nicer to work with than the frontend. I hate react"}]...
|
Title: jusstudy by @vividsystem | Stardance
Devlo Title: jusstudy by @vividsystem | Stardance
Devlogs:
I added a shop managment panel and am currently working on adding shop item variants so users can e.g. select different colors for an item As always the backend is way nicer to work with than the frontend. I hate react
I finished the new shop item variant system. Admins can now create new options on already existing items or create new items with multiple options. I also updated the item buying page to let the user select (see below)
added a little “My orders” page so participants can have a look at their orders
I started redesigning and refactoring the review panel. The previous UI was AI generated and looked bad. To be quite honest I don’t really like the Jus’Study theme so far so I tried making the best of it with the review panel and actual put some thought into the design. In the next couple of days I will try to add some more features as well to make the update not only cosmetic. I might look into AI for this in the future, but I find my human-written code to be more aesthetic (when I am trying atleast)
Today I finished up the review redesign and added a project-lock feature. I have never been so frustrated with React like today. The dialog you can see in the screenshot was a pain to get working using the <dialog> tag. React for some reason doesn’t implement the button attributes necessary for opening and closing dialogs without javascript. And the way state is controlled for dialogs in React sucks and I had to use refs.
Time tracking rework and Hackatime OAuth Integration I am currently reworking the entire way time is tracked for jus’study. Beforehand the time was tracked in the devlog database table. This now introduces a bunch of problems if you want to for example alter that data. Because of that the idea is to move to a design that I call “time ledger”. Basically any “event” like adding a devlog adds a duration (can be negative to subtract). This way it is way more extensible. Oh yeah and I made an integration for hackatime oauth. Right now I am trying to write sql-migrations so that I can migrate to the new database schema without deleting everything.
Time tracking rework - Part 2 this was basically changing all the old code out to work with the new time entries. I will have to figure out a cleaner way to get time per ship. but for now it works.
API Docs I annotated the about 50 api routes and setup Scalar to show the api docs
Regional Pricing in Shop I am not finished yet but well as I forgot to log before 10h I guess I will have to post an update. I am currently finishing up regional pricing as a new feature for the shop. This way we will be able to change pricing depending on the regions products get shipped to.
Regional Pricing in Shop Pt.2 I finished up the regional pricing thing. It was mostly just refactoring the frontend and getting yelled at by error messages.
Slack Bot Integration and some other stuff
Bug fixing because human slop also creates bugs. There were bugs to let users change their balance, typos, race-conditions etc.
Yet more backend fixes Learning no. 1 of the day: Writing safe database queries with no race-conditions is really hard. Most of the fixes today where fixing some database/transaction related things. I also added a way to validate environment variables on start up since with the sheer amount of variables now it seems necessary. I am really happy with my current “use AI to review” workflow. I am actually learning quite a bit about how transactions work etc.
Observability Overhaul I am not finished yet, but I am overhauling the entire observability structure. It is way overkill for this small ysws but I wanted to try anyway. The observability stack will now use OpenTelemetry with Grafana Alloy as a Collector. That then gets forwarded to Loki, Prometheus and Tempo. This will enable fancy traces and super cool metrics....
|
1792788740.7146847
|
1793393540.7146847
|
|
185
|
Tormentown by @Slugarius | Stardance
|
Slugarius
|
0
|
92.11
|
0
|
[]
|
[{"post_id": 26019, "ts": "202 [{"post_id": 26019, "ts": "2026-07-10T16:24:06Z", "hours": 9.5511, "text": "I modeled a building in Blender using the buildify addon. I also worked on the fracturing more and made every mesh in a model its own static mesh and the fracture now makes a sphere cast and targets every mesh found in a certain radius."}, {"post_id": 21417, "ts": "2026-07-03T10:58:11Z", "hours": 10.1756, "text": "I mostly made editor improvements and modeling roads and buildings."}, {"post_id": 13064, "ts": "2026-06-21T11:26:04Z", "hours": 8.5297, "text": "I added voronoi fracturing to the game. I added CGAL and boost to the dependencies to help with the math. Shooting the gun will shoot a ray cast in front of the camera and whatever object is hit is dismantled (fractured)."}, {"post_id": 9468, "ts": "2026-06-15T20:29:23Z", "hours": 2.5758, "text": "Grass culling! All grass objects are now divided into chunks and sub chunks and sub chunks of those sub chunks. If a chunk is not in the view frustum, then it is culled. This greatly saves on performance. The grass is also a different color now. So is the ground."}, {"post_id": 9147, "ts": "2026-06-15T09:58:19Z", "hours": 3.0117, "text": "Grass! I added a grass renderer component, and every entity with it is looped and their transform is added to a vector of grass matrices which are fed to the grass shader and drawn using instancing. You can also add grass through the map editor which is pretty cool. The grass vertex shader generates a random vector using simplex noise and uses that as the sway direction for the blade of grass. The grass fragment shader uses a gradient with three colors applied from bottom to top."}, {"post_id": 8713, "ts": "2026-06-14T14:01:11Z", "hours": 10.2147, "text": "Map editor! I added an editor bool to the global engine state and that controls whether the editor GUI is drawn and whether the player system runs or not. I also added some stuff like moving objects by clicking on them and adding stuff to the scene like grass blades. The way that the mouse to world space conversion works is that the cursor position is multiplied with the inverse of the projection matrix and this gives a direction in world space which is used as a raycast and if it hits anything, the object will be spawned at the hit position."}, {"post_id": 5925, "ts": "2026-06-09T22:03:49Z", "hours": 3.085, "text": "I added fog and a sky texture. Most of the time in this devlog was spent on modelling an enemy but I felt like it wasn’t inspired enough and was too generic so I’ll come up with a better design tomorrow."}, {"post_id": 5206, "ts": "2026-06-08T22:09:13Z", "hours": 3.8958, "text": "Inventory! The inventory system procedurally generates item slots and checks if the slots are hovered and if they are and there’s an item inside them, then clicking them will make the item follow the cursor and on release, they will check if the hovered slot can fit the item and adds it to that slot."}, {"post_id": 4495, "ts": "2026-06-07T20:32:25Z", "hours": 1.6181, "text": "I fixed the texture importing from the FBX file. I was using a custom shader in blender for the skin and it wasn’t exporting the texture because of that. I also needed to adjust the export settings and changed the gamma settings on the texture importer."}, {"post_id": 4291, "ts": "2026-06-07T15:29:34Z", "hours": 3.5358, "text": "I added a gun to the game! It uses the same inverse kinematics structure for the right hand as before but also supplies an aim direction to ApplyArmIK which controls where the hands will point to. The gun transform is directly controlled by the hand and points in the direction of the palm to the tip of the fingers. I also copied my OpenAL implementation from my previous engine and added a shooting sound whenever you shoot the gun."}, {"post_id": 3841, "ts": "2026-06-06T22:03:31Z", "hours": 7.5292, "text": "I added inverse kinematics to the hands! This was pretty difficult to set up as I don’t have a visual viewport to see the bones of my rig in so I had to go in Blender and see all the names of the arm bones and propogate the IK solver points across all of them. There’s also an IK solver class now which takes a base and a target. I also added slerping to the hand target to make it blend smoothly. There are two variables, leftGuard and rightGuard which control whether a hand is affected by IK or not. And there’s also an IK weight factor which controls the transition between animation and IK to make it go between the two smoothly. The left or right guard are disabled whenever you punch to make the arm actually go forward and use the regular animation. I also added a stamina and health bar. They use a shader which fills up the texture with a color based on a number which is the health or stamina. The health does nothing right now but stamina is drained by punching and regenerates on a rate that depends on what state you are in."}, {"post_id": 2785, "ts": "2026-06-05T16:24:27Z", "hours": 2.1981, "text": "I added attacks to the game! You can now raise your guard by pressing G and jab on either side by pressing left or right click. There was a big issue with the animations before in that if you played an animation while an animation was already mid blend, the model would suddenly jerk to the new frame because the lerped position of the bones became different between the two animations. To fix this, I updated it so whenever you play an animation, the current bone matrices are stored in a vector and are used as the starting position of the blend to the new animation."}, {"post_id": 2291, "ts": "2026-06-04T18:12:01Z", "hours": 5.6408, "text": "I added skeletal animation blending! This wasn’t needed before as there was only one animation (running) but I have added an idle and a flying animation. There’s a state machine for the animations that calls PlayBlend on the first frame of the state change. The way the blending works is that there’s a blend factor which goes from 0 to 1. It lerps from 0 to 1 on a set duration which you can specify for how fast or slow you want the animation to blend. It then lerps from all the positions, rotations and scales of the different bones of the two animations according to the blend factor. By the way, the flying animation is one frame pretty much so the blending is doing all the work in transitioning from and to it. The player also smoothly slerps to the direction you’re moving in, except if you’re moving backwards because that looks weird."}, {"post_id": 1552, "ts": "2026-06-03T17:20:20Z", "hours": 7.6022, "text": "There were lots of issues with the model loading before and I managed to import an FBX file that I exported from a blender project and got it animating in the engine. But besides that I made a character controller, there’s a capsule rigidbody attached to the player and two components, a movement component and a camera controller component. The camera controller sets the camera on the player’s head and also a little bit in front of it so you don’t clip in the player’s head and the movement component allows you to move with WASD. The movement is utter garbage however as I only made it with forces, I will improve it and add drag later. Also the thought behind the player being visible is: 1. Because of immersion and 2. I want the game to be multiplayer and adding player models beforehand will be very useful."}, {"post_id": 425, "ts": "2026-06-01T20:33:46Z", "hours": 3.0278, "text": "Physics! I integrated the Jolt physics engine into the project. I’ve used Jolt for my other projects so it was pretty quick to get up and running. I made a debug renderer system which makes and draws a wireframe depending on the collider type. There are four types of colliders currently, box, capsule, sphere and mesh. The mesh collider is unfinished, I will implement that when I actually need to implement terrain meshes and colliders."}, {"post_id": 256, "ts": "2026-06-01T13:15:52Z", "hours": 2.6044, "text": "Skeletal animations! I reused an implementation of skeletal animations from one of my old projects. In the shadow mapping vertex shader, I have also added the transformation of vertices by bone matrices to capture the shadow of animated objects."}, {"post_id": 216, "ts": "2026-06-01T09:34:47Z", "hours": 0.9539, "text": "I’ve finished implementing PBR rendering with the Cook-Torrance BRDF. I’ve also added normal and roughness map support. Other maps are unnecessary for the renderer."}, {"post_id": 134, "ts": "2026-05-31T22:08:03Z", "hours": 6.3622, "text": "I’ve started work on the 3d engine for the game I’ll be making. For the first day, I’ve implemented cascaded shadow maps where there are multiple shadow maps taken at different distances to create a hierarchy of resolution. And I’ve also implemented blinn phong shading. I plan to change this to a PBR pipeline later down the road."}]...
|
Title: Tormentown by @Slugarius | Stardance
Devlo Title: Tormentown by @Slugarius | Stardance
Devlogs:
I’ve started work on the 3d engine for the game I’ll be making. For the first day, I’ve implemented cascaded shadow maps where there are multiple shadow maps taken at different distances to create a hierarchy of resolution. And I’ve also implemented blinn phong shading. I plan to change this to a PBR pipeline later down the road.
I’ve finished implementing PBR rendering with the Cook-Torrance BRDF. I’ve also added normal and roughness map support. Other maps are unnecessary for the renderer.
Skeletal animations! I reused an implementation of skeletal animations from one of my old projects. In the shadow mapping vertex shader, I have also added the transformation of vertices by bone matrices to capture the shadow of animated objects.
Physics! I integrated the Jolt physics engine into the project. I’ve used Jolt for my other projects so it was pretty quick to get up and running. I made a debug renderer system which makes and draws a wireframe depending on the collider type. There are four types of colliders currently, box, capsule, sphere and mesh. The mesh collider is unfinished, I will implement that when I actually need to implement terrain meshes and colliders.
There were lots of issues with the model loading before and I managed to import an FBX file that I exported from a blender project and got it animating in the engine. But besides that I made a character controller, there’s a capsule rigidbody attached to the player and two components, a movement component and a camera controller component. The camera controller sets the camera on the player’s head and also a little bit in front of it so you don’t clip in the player’s head and the movement component allows you to move with WASD. The movement is utter garbage however as I only made it with forces, I will improve it and add drag later. Also the thought behind the player being visible is: 1. Because of immersion and 2. I want the game to be multiplayer and adding player models beforehand will be very useful.
I added skeletal animation blending! This wasn’t needed before as there was only one animation (running) but I have added an idle and a flying animation. There’s a state machine for the animations that calls PlayBlend on the first frame of the state change. The way the blending works is that there’s a blend factor which goes from 0 to 1. It lerps from 0 to 1 on a set duration which you can specify for how fast or slow you want the animation to blend. It then lerps from all the positions, rotations and scales of the different bones of the two animations according to the blend factor. By the way, the flying animation is one frame pretty much so the blending is doing all the work in transitioning from and to it. The player also smoothly slerps to the direction you’re moving in, except if you’re moving backwards because that looks weird.
I added attacks to the game! You can now raise your guard by pressing G and jab on either side by pressing left or right click. There was a big issue with the animations before in that if you played an animation while an animation was already mid blend, the model would suddenly jerk to the new frame because the lerped position of the bones became different between the two animations. To fix this, I updated it so whenever you play an animation, the current bone matrices are stored in a vector and are used as the starting position of the blend to the new animation.
I added inverse kinematics to the hands! This was pretty difficult to set up as I don’t have a visual viewport to see the bones of my rig in so I had to go in Blender and see all the names of the arm bones and propogate the IK solver points across all of them. There’s also an IK solver class now which takes a base and a target. I also added slerping to the hand target to make it blend smoothly. There are two variables, leftGuard and rightGuard which control whether a hand is affected by IK or not. And there’s also an IK weight factor which controls the transition between animation and IK to make it go between the two smoothly. The left or right guard are disabled whenever you punch to make the arm actually go forward and use the regular animation. I also added a stamina and health bar. They use a shader which fills up the texture with a color based on a number which is the health or stamina. The health does nothing right now but stamina is drained by punching and regenerates on a rate that depends on what state you are in.
I added a gun to the game! It uses the same inverse kinematics structure for the right hand as before but also supplies an aim direction to ApplyArmIK which controls where the hands will point to. The gun transform is directly controlled by the hand and points in the direction of the palm to the tip of the fingers. I also copied my OpenAL implementation from my previous engine and added a shooting sound whenever you shoot the gun.
I fixed the texture importing from the FBX file. I was using a custom shader in blender for the skin and it wasn’t exporting the texture because of that. I also needed to adjust the export settings and changed the gamma settings on the texture importer.
Inventory! The inventory system procedurally generates item slots and checks if the slots are hovered and if they are and there’s an item inside them, then clicking them will make the item follow the cursor and on release, they will check if the hovered slot can fit the item and adds it to that slot.
I added fog and a sky texture. Most of the time in this devlog was spent on modelling an enemy but I felt like it wasn’t inspired enough and was too generic so I’ll come up with a better design tomorrow.
Map editor! I added an editor bool to the global engine state and that controls whether the editor GUI is drawn and whether the player system runs or not. I also added some stuff like moving objects by clicking on them and adding stuff to the scene like grass blades. The way that the mouse to world space conversion works is that the cursor position is multiplied with the inverse of the projection matrix and this gives a direction in world space which is used as a raycast and if it hits anything, the object will be spawned at the hit position.
Grass! I added a grass renderer component, and every entity with it is looped and their transform is added to a vector of grass matrices which are fed to the grass shader and drawn using instancing. You can also add grass through the map editor which is pretty cool. The grass vertex shader generates a random vector using simplex noise and uses that as the sway direction for the blade of grass. The grass fragment shader uses a gradient with three colors applied from bottom to top.
Grass culling! All grass objects are now divided into chunks and sub chunks and sub chunks of those sub chunks. If a chunk is not in the view frustum, then it is culled. This greatly saves on performance. The grass is also a different color now. So is the ground.
I added voronoi fracturing to the game. I added CGAL and boost to the dependencies to help with the math. Shooting the gun will shoot a ray cast in front of the camera and whatever object is hit is dismantled (fractured).
I mostly made editor improvements and modeling roads and buildings.
I modeled a building in Blender using the buildify addon. I also worked on the fracturing more and made every mesh in a model its own static mesh and the fracture now makes a sphere cast and targets every mesh found in a certain radius....
|
1792479184.3520005
|
1793083984.3520005
|
|
14535
|
Issued YSWS by @Acidicts | Stardance
|
Acidicts
|
1
|
91.58
|
1383
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T17:03:11Z", "hours": 89.0, "multiplier": 15.53, "payout": 1383, "blessing": "neutral", "text": "Shipped!!! There are a bunch of features and stuff that I have added to this since flavortown, from the ordering system to devlogs and ship flow. Project Info This is the ruby on rails app for the ysws draft #issued where YS: Designs made with Code WS: Clothes and other swag with those designs Features added: A bunch of features have been added and I have separated them to 3 categories Major ones for functionality, quality of life for feel and use, security for data security. New Major Features: Designs view now is more detailed including hackatime projects and images from devlogs and ships Ship flow system so you can submit to the ysws Product Design system (admin only - for making the shop items by importing from printful via api) Order system using lots of hotwired turbo (choose color, design placement rotation and scale) Notifications (3 types Normal which provides info and 2 others Boolean which gets a yes or no answer and text which gets a written answer Reviewer Panel which shows pending ships to review with some data on (need to add hackatime info for it though) Storing Reviewer proof videos in a cloudflare R2 storage Quality-Of-Life: Added better UI/UX with some issues with need for ironing out (eg font change from workbench to ‘lexend’ and ‘space mono’ Kept a consistent style through the site, although some panels might need better border colour On login it redirects to the page you logged in by Security: I added User DB encryption to protect user data stored on the postgres database instance, such as name and email Summary Made the functional part of the ysws site (Designs, ordering, shipping) Added more security for user data Improved UI(Font and colour scheme)", "repo": "https://github.com/Acidicts/Issued", "demo": "https://issued.bing-bong.uk"}]...
|
[{"post_id": 78879, "ts": "202 [{"post_id": 78879, "ts": "2026-10-11T21:05:08Z", "hours": 2.5772, "text": "I created the fulfilment system for a fulfilment team to use Recent changes Removed redundant save! calls and updated fulfillment tests to reduce unnecessary database operations and align test logic with current behavior 9acc056 . Added a fulfillment role, batch pipeline, and popup controller to support new workflow automation and UI interactions afa7a20 . The popup controller likely handles transient UI elements like notifications or modals. Fixed a crash in /designs preview rendering by resolving an issue blocking Ruby scan/lint CI, ensuring previews no longer fail unexpectedly ( 911f035 ). Corrected a stray question mark in a design preview image tag to prevent malformed HTML output ( 955dd6c ). Added a note about YSWS draft sponsorship documentation, possibly for tracking external partnerships or funding discussions ( d92d571 ). No performance optimizations or subsystem overhauls were addressed in this cycle. Next steps depend on external feedback and test coverage improvements implied by recent test updates."}, {"post_id": 75924, "ts": "2026-10-01T16:48:57Z", "hours": 0.6297, "text": "Deploying on coolify and fixing bugs with that + encrypting current db"}, {"post_id": 75729, "ts": "2026-09-30T21:34:41Z", "hours": 1.0775, "text": "Recent changes - Installed Bundler 4.0.4 in the Dockerfile to standardize gem management across environments ( 88ba659 ). - Ensured the verification directory exists for SVG upload tests, addressing missing file system setup in test workflows ( 83f2e53 ). - Resolved a Turbo conflict in order steps, likely related to event streaming or frame rendering in Rails views ( e8d08f4 ). Updated navigation unread counts dynamically from notification events, improving real-time feedback for user activity ( a75f6ff )."}, {"post_id": 75254, "ts": "2026-09-29T16:08:17Z", "hours": 3.9967, "text": "## Recent changes Notifications: Unanswered notifications now retain their unread status until explicitly addressed. This ensures users can distinguish between pending and resolved interactions without relying on manual state updates ( 751a370 ). Security: Authentication workflows, file uploads, and resource authorization checks have been updated with additional safeguards. Specifics include input validation and access control refinements, though implementation details are not disclosed in the commit message ( 97e48db )."}, {"post_id": 74657, "ts": "2026-09-27T21:33:33Z", "hours": 2.8042, "text": "Made Notifications Useful Recent changes Persistent unread state for unanswered boolean notifications Notifications with unresolved boolean actions (e.g., approvals) now remain marked as unread until explicitly addressed. This ensures users revisit pending decisions. Commit: 39aabb2 . Interactive notification replies with approval time tracking Added support for direct replies to notifications, along with timestamp logging for when approvals are finalized. This enables granular tracking of response times for actionable alerts. Commit: 6ac80f9 ."}, {"post_id": 74176, "ts": "2026-09-26T21:01:23Z", "hours": 9.8606, "text": "Recent changes Added ship request reviews, resubmission logic, and R2 storage integration for tracking reviewed submissions ( 41b1e43 ). Started on the review workflow Started on Resubmission logic Set up support for cloudflare R2 Guarded Hack Club token persistence behind encryption configuration, ensuring tokens are only stored when encryption is explicitly enabled ( a4b6d0c )."}, {"post_id": 71158, "ts": "2026-09-20T11:24:58Z", "hours": 2.1222, "text": "Recent changes Comment delete, Turbo Comment Box, and ship request fade functionality Add #destroy functionality to the comments with owner permission, path, delete button, and dependent comments. Make use of valid commentable_type/id while building comments and make responses as Turbo streams and wrap up comments within a Turbo frame. Resize the comment box according to the content changes detected by the MutationObserver. Make ship request modal and overlay fade in and out. Consider higher level ship request as blockers for all ship requests. Comment card and comment list styling."}, {"post_id": 70827, "ts": "2026-09-19T20:44:04Z", "hours": 7.9789, "text": "Recent changes Add comments to devlogs and ship requests Implement polymorphic Comment model with CommentsController, Stimulus-driven collapsing comment box, markdown preview form, and styles. Comments will be rendered by Turbo frames and allow editing by owner/admin. This is what else is included in this change: Encryption of hackclub_access_token and hackclub_refresh_token through ActiveRecord encryption, including config, env sample and migration task for already existing non-encrypted tokens. SSL enforcement in production (assume_ssl, force_ssl). Update filter_parameters to strip out sensitive information and OAuth tokens from logs. Fix ExchangeRate API call to include Bearer authentication header. Sanitization of devlogs HTML output through SafeListSanitizer. Update Design#can_make_devlog to can_make_devlog? method and restrict can_ship? check to devlogs without ship request. Add SRI integrity attribute to marked/DOMPurify scripts loaded from CDNs. UI improvements: styles for disabled buttons, utility class for hover-underline effect, devlog cards layout and info icons."}, {"post_id": 65654, "ts": "2026-09-10T22:45:01Z", "hours": 4.65, "text": "Recent changes Ship request flow and SVG conversion : Added support for processing ship requests, handling SVG conversions, and validating devlog images before submission 8ca9b5d9 . Nil safety for Hackatime projects : Wrapped the @hackatime_projects variable in an Array structure to prevent nil errors when retrieving project data a29691ff . CI environment and test ordering : Set RAILS_ENV=test for the CI setup process and reordered the sequence of test steps to improve execution reliability 2968d162 . Authorization consolidation : Refactored authorization guards and consolidated the linking logic for Hackatime projects 4c2b1836 ."}, {"post_id": 63555, "ts": "2026-09-07T13:59:01Z", "hours": 4.54, "text": "Recent changes Fixed a failure in the CI/CD pipeline commit Implemented status tracking for balance events and refined the underlying thread logic associated with them commit Refactored the token rendering component for render_encoded to allow {{design: design.id}} making a pill, to improve display fidelity and added an edit functionality for devlog entries commit Integrated support for uploading images directly within the devlog interface and established links to corresponding Hackatime projects commit"}, {"post_id": 62972, "ts": "2026-09-06T15:23:56Z", "hours": 7.4994, "text": "Added Devlogs and changed hackatime projects to be multi model per design. Move hackatime project linkage from a single designs.hackatime_project column to a has_many hackatime_projects model, syncing each project’s time and aggregating totals on designs. Add devlogs, ship_requests, ships, and comments models/routes/views for design logging and shipping, and make balance_events polymorphic.Update designs controller, helpers, and views to render multiple project pills, allow adding/removing linked projects, and show a combined hackatime/image/devlog layout. Add redcarpet for Markdown rendering and adjust CSS for dark mode, responsive galleries, and pill controls. Added Devlogs and the prep for adding the shipping flow I added devlogs to the project in prep for the shipping flow"}, {"post_id": 61811, "ts": "2026-09-04T21:55:13Z", "hours": 3.1611, "text": "Recent changes Added support for balance events and thread adjustments to improve financial tracking accuracy. This also included an update to the notification rendering system to safely handle these new data types without breaking existing templates (commit: ( faed39b57619 )). Fixed the positioning of the design box within the product editor. This specifically addresses display issues occurring when editing products via /admin/products/<id>/edit (commit: ( aa4e314b5dcd ))."}, {"post_id": 60507, "ts": "2026-09-02T21:52:42Z", "hours": 5.5383, "text": "I’ve focused on refining the shop page styling, header positioning, and cost handling logic ( d10a9c51 ). The recent batch of work involved schema adjustments for a product enabled flag, adding support for cost and thread costs ( 82f9f2d1 ), applying a schema fix ( 3f8bcb8a ), fixing CI pipeline issues ( 71e98a ), and pushing updates to production ( ca19da29 ). Recent changes Added an image variants system and updated views to utilize thumb and display variants specifically ( a2e4eb28 ). Implemented cost handling updates, including a specific support for thread costs alongside general product cost tracking ( 82f9f2d1 ). Added an auto annotaterb script executed within the Rails migration process ( 7d07d278 ). Applied schema fixes to ensure data integrity during the recent updates ( 3f8bcb8a ). Updated the RSVP page styles and refreshed the thanks template ( 217945eb ). Refined header positioning and shop page styling across the frontend ( d10a9c51 ). Added a product enabled flag to control product visibility and state in the system ( 82f9f2d1 ). Whats next: Umm, so whats next I think would be adding balance_events so you can trace changes in balances(spending/earning)"}, {"post_id": 59213, "ts": "2026-08-31T21:41:46Z", "hours": 2.8433, "text": "Since the last update, I’ve focused on enhancing the order preview system to support complex design workflows and improving image navigation for multi-image configurations. Recent changes Added multi-image preview navigation with left/right arrow buttons and an index display (e.g., “Image 2 of 5”) to streamline design review workflows ( b269fe5 ). This change directly addresses the need to review multiple design iterations in a single view without page reloads. Refactored the order preview component to support multiple print areas with independently configurable design images. This involved restructuring the preview logic to handle dynamic print area definitions while maintaining consistent state across design selections ( 0545118 ). The refactor enables customers to visualize different designs on separate print areas (e.g., front/back/ sleeves) within the same order preview."}, {"post_id": 58236, "ts": "2026-08-30T16:26:21Z", "hours": 8.9714, "text": "Print area management UI & backend ( a42a00d ): Built a full stack for managing print areas (think “where the design goes” on a shirt front or back). This includes models to store print area dimensions, controllers to handle CRUD ops, and RESTful routes to tie it all together. The frontend now lets users drag/drop to define print zones with responsive positioning ( position: absolute + transform: scale to handle dynamic sizing). Edge case: Products with multiple print areas (e.g., front + back) now render distinct configurations without clobbering state. Printful service & stock syncing ( 7b5d817 ): Added printful_id to product models to map Issued products to Printful’s inventory. UI updates to display Printful sync status (green checkmarks for success, red alerts for failures). Technical tangents The print area system was a slow make. For example: To ensure designs stay within printable bounds, I had to calculate dynamic margins based on product type (e.g., a hoodie’s print area ≠ a mug’s). This involved hacking some trigonometry into the frontend to snap selections to “safe zones.” On the backend, I’m using ActiveRecord callbacks to validate print area dimensions against product specs. If a user tries to set a print area wider than the product allows It raises a PrintAreaOutOfBounds error Future features The actual ship flow and being able to edit multiple print areas instead of just the one"}, {"post_id": 53048, "ts": "2026-08-23T13:14:54Z", "hours": 4.1422, "text": "Added Variants for size and colors with stock for each printful region facility. Stimulus target which groups the variants by colour and deletes empty groups"}, {"post_id": 50653, "ts": "2026-08-19T22:27:11Z", "hours": 3.3331, "text": "Created Printful API Integration and improved order screen to allow better customisations Add Printful import endpoint and order preview UI improvementsImplemented Printful product import, added order preview generation, UI styles, and controller changes for drag‑resize‑rotate preview."}, {"post_id": 37237, "ts": "2026-07-29T19:53:07Z", "hours": 0.3972, "text": "Improved the New Order Page to be neater, and better themed along the colour scheme"}, {"post_id": 37220, "ts": "2026-07-29T19:25:45Z", "hours": 1.2728, "text": "Rename admin-product to products and refactor CSS, controller, and views. Updated class names and CSS variables, added .no-product-grid and .dashed-break styles. Simplified image loading logic in the product preview controller, and replaced large inline layout styles with external stylesheet includes."}, {"post_id": 35739, "ts": "2026-07-27T11:35:58Z", "hours": 1.3936, "text": "Add brand colors, badge styles, and redesign pagesAdd brand color variables, badge styles, and a full redesign of design pages with responsive layouts, fixed redirect stuff, optimised by using one erb engine call for designs"}, {"post_id": 35463, "ts": "2026-07-26T22:10:06Z", "hours": 1.1911, "text": "Dropdown Styling & Component Replacement The design form’s dropdown interface was overhauled to improve visual consistency and user experience. A native <select> element was replaced with a custom-styled solution using 3ab7405 , allowing for greater flexibility in aligning with the project’s aesthetic goals. This change ensures smoother integration with the overall theme and avoids browser-specific styling quirks. CSS Refactoring & Theme Variables Design form styling was fully refactored in 928b7b0 , introducing global theme variables to streamline color, spacing, and typography management. This move simplifies future theme adjustments and promotes code reuse. Model defaults were also standardized to reduce redundancy in form initialization logic, making the codebase more maintainable. Admin Test Redirects In 2af0071 , the admin test workflow was updated to automatically redirect to the products list URL after test submissions. This improves user navigation by providing immediate feedback and next steps, ensuring a cohesive backend experience. Current Status The frontend is now more thematically consistent, with design forms serving as a primary focus area. Admin workflows are being optimized for clarity and efficiency, though backend test processing logic remains pending integration. The codebase is gradually adopting a modular structure, particularly for UI components and configuration. Things Learnt Custom dropdowns using CSS and JavaScript offer better cross-browser compatibility than styling native <select> elements. Theme variables significantly reduce the effort required for UI adjustments, especially as the project scales. Redirects in admin flows should be designed with user context in mind to avoid confusion."}, {"post_id": 34704, "ts": "2026-07-25T17:05:22Z", "hours": 1.6431, "text": "Project Summary: Admin & Infrastructure Progress Key Milestones & Features Built 🛠️ Admin Product Management UI : Added a full admin interface for product management, including preview capabilities, environment variable integration, and updated order flow logic. This enables admins to efficiently manage product listings and track orders. 🆓 Privacy Enhancements : Implemented a “hide PII” controller to anonymize user data in the UI, ensuring sensitive information is protected in user-facing tables. 🧪 Product Cost Handling : Validated GBP pricing logic for products, ensuring accurate cost handling in the British Pounds currency. 🛠️ CI/CD & Dependency Updates : Configured PostgreSQL in CI pipelines, updated database URLs, and bumped Ruby gem versions to ensure a stable, up-to-date environment. 🎨 Styling Cleanup : Replaced inline styles in admin views with stylesheet_link_tag imports, improving maintainability and separation of concerns. Current Status The project now has a functional admin dashboard for product and order management, with privacy features baked into user data displays. Infrastructure is PostgreSQL-ready in CI, and styling practices align with modern Rails conventions. Core e-commerce logic (pricing, currency) is under testing, with environment variables streamlining configuration. Lessons Learned Privacy by Design : Integrating PII protection early simplifies compliance and reduces technical debt. Infrastructure as Code : Automating PostgreSQL setup in CI saves manual effort and reduces environment inconsistencies. Maintainable Styles : Moving to external stylesheets improves collaboration and long-term code hygiene. Order Page Started Created a functional order page Currency Handling : Explicit GBP validation highlights the need for clear financial logic in order systems."}, {"post_id": 32945, "ts": "2026-07-22T13:01:39Z", "hours": 1.1947, "text": "Replace admin view inline styles with stylesheet_link_tag importsRemoved large embedded CSS from multiple admin templates and switched to external stylesheet links for consistency and maintainability."}, {"post_id": 32314, "ts": "2026-07-21T12:27:35Z", "hours": 0.3503, "text": "Add CurrencyConvertible include and cost conversion helpersInclude CurrencyConvertible in ApplicationHelper and Product, add cost_usd and cost_gbp methods, remove obsolete gbp_to_usd, usd_per_gbp and fetch_usd_conversion_rates, rename cost column comment, and adjust product inheritance."}, {"post_id": 32039, "ts": "2026-07-20T22:30:02Z", "hours": 1.2369, "text": "Update README, moved CSS files, fixed issues between pages (styling)Include planning file entry, revise README wording, and remove dashboard and notifications stylesheet files."}, {"post_id": 30900, "ts": "2026-07-18T21:33:53Z", "hours": 0.9747, "text": "feat(database): migrate from SQLite to PostgreSQL and switch to Redis infrastructure- replace sqlite3 with PostgreSQL database adapter in Gemfile and config configure Redis for caching, Action Cable, and Active Job instead of Solid adapters add guide attribute to User model for onboarding flow control implement user existence validation in ApplicationController refactor CSS architecture by moving stylesheets to components directory create shared designs.css stylesheet for design pages with responsive styling update todo partial to check guide flag before displaying onboarding prompts add migration for guide column on users table"}, {"post_id": 26210, "ts": "2026-07-10T21:30:31Z", "hours": 0.6197, "text": "Key Milestones & Features The project has made solid strides in building out core admin functionality and refining user interactions: Admin Controller Tests : Comprehensive tests for the dashboard, orders, and products controllers were added, ensuring reliability and laying groundwork for future expansions. Form Submission Control : A disable button feature was implemented in the design-form component to prevent multiple submissions, improving UX and reducing backend load. Dashboard Updates : The dashboard_controller.rb received updates (specifics pending documentation), likely enhancing core admin workflows. Current Status The admin interface is shaping up with test-covered controllers and polished frontend interactions. Testing prioritization suggests a focus on stability, while form improvements reflect attention to user-centric details. The project appears in an active development phase, with July 2026 commits indicating recent momentum. Things Learnt Test-Driven Practices : Adding controller tests early highlights the team’s emphasis on maintainable, scalable code. Form UX Nuances : Disabling submission buttons during processing is a small but impactful tweak to prevent errors and improve responsiveness. Documentation Gaps : The vague “Update dashboard_controller.rb” commit underscores the importance of descriptive commit messages for clarity in collaborative projects."}, {"post_id": 20347, "ts": "2026-07-01T22:27:04Z", "hours": 0.7008, "text": "fix(auth): update product params to include thread_cost instead of cost_gbp - replace deprecated cost_gbp parameter with thread_cost in product creation/update - adjust database migration to add thread_cost column to products table, added shop, added notification page"}, {"post_id": 19576, "ts": "2026-06-30T22:24:00Z", "hours": 1.3847, "text": "Used claude to brainstorm colour schemes and layouts. Created this new dashboard design and transitioned the rest of the site to follow the colour scheme"}, {"post_id": 13382, "ts": "2026-06-21T22:29:32Z", "hours": 0.6847, "text": "Add design image gallery with viewer page- Add image route, controller action, and full-size viewer template Add gallery grid on show page with hover overlays and timestamps Fix partial render syntax (collection with as: :image)"}, {"post_id": 12184, "ts": "2026-06-19T21:59:46Z", "hours": 2.8486, "text": "Summary Major update: background removal, UI improvements, model fixes, and CI stability. Changes Added RemoveBackgroundJob with rembg CLI for automatic background removal Created Image and DesignEditSession models; updated schema comments Added brand.css and regulated form partial for new/edit designs Added dark mode support and image preview scaling Enabled PostgreSQL extensions; switched dev DB to SQLite Removed stale migrations (verified, trust columns from users) Cleaned up model validations and associations Fixed CI test suite with updated fixtures Removed node_modules from git; added to .gitignore Removed unused editor and dashboard views Updated Gemfile/Gemfile.lock dependencies"}]...
|
Title: Issued YSWS by @Acidicts | Stardance
Devlo Title: Issued YSWS by @Acidicts | Stardance
Devlogs:
Summary Major update: background removal, UI improvements, model fixes, and CI stability. Changes Added RemoveBackgroundJob with rembg CLI for automatic background removal Created Image and DesignEditSession models; updated schema comments Added brand.css and regulated form partial for new/edit designs Added dark mode support and image preview scaling Enabled PostgreSQL extensions; switched dev DB to SQLite Removed stale migrations (verified, trust columns from users) Cleaned up model validations and associations Fixed CI test suite with updated fixtures Removed node_modules from git; added to .gitignore Removed unused editor and dashboard views Updated Gemfile/Gemfile.lock dependencies
Add design image gallery with viewer page- Add image route, controller action, and full-size viewer template Add gallery grid on show page with hover overlays and timestamps Fix partial render syntax (collection with as: :image)
Used claude to brainstorm colour schemes and layouts. Created this new dashboard design and transitioned the rest of the site to follow the colour scheme
fix(auth): update product params to include thread_cost instead of cost_gbp - replace deprecated cost_gbp parameter with thread_cost in product creation/update - adjust database migration to add thread_cost column to products table, added shop, added notification page
Key Milestones & Features The project has made solid strides in building out core admin functionality and refining user interactions: Admin Controller Tests : Comprehensive tests for the dashboard, orders, and products controllers were added, ensuring reliability and laying groundwork for future expansions. Form Submission Control : A disable button feature was implemented in the design-form component to prevent multiple submissions, improving UX and reducing backend load. Dashboard Updates : The dashboard_controller.rb received updates (specifics pending documentation), likely enhancing core admin workflows. Current Status The admin interface is shaping up with test-covered controllers and polished frontend interactions. Testing prioritization suggests a focus on stability, while form improvements reflect attention to user-centric details. The project appears in an active development phase, with July 2026 commits indicating recent momentum. Things Learnt Test-Driven Practices : Adding controller tests early highlights the team’s emphasis on maintainable, scalable code. Form UX Nuances : Disabling submission buttons during processing is a small but impactful tweak to prevent errors and improve responsiveness. Documentation Gaps : The vague “Update dashboard_controller.rb” commit underscores the importance of descriptive commit messages for clarity in collaborative projects.
feat(database): migrate from SQLite to PostgreSQL and switch to Redis infrastructure- replace sqlite3 with PostgreSQL database adapter in Gemfile and config configure Redis for caching, Action Cable, and Active Job instead of Solid adapters add guide attribute to User model for onboarding flow control implement user existence validation in ApplicationController refactor CSS architecture by moving stylesheets to components directory create shared designs.css stylesheet for design pages with responsive styling update todo partial to check guide flag before displaying onboarding prompts add migration for guide column on users table
Update README, moved CSS files, fixed issues between pages (styling)Include planning file entry, revise README wording, and remove dashboard and notifications stylesheet files.
Add CurrencyConvertible include and cost conversion helpersInclude CurrencyConvertible in ApplicationHelper and Product, add cost_usd and cost_gbp methods, remove obsolete gbp_to_usd, usd_per_gbp and fetch_usd_conversion_rates, rename cost column comment, and adjust product inheritance.
Replace admin view inline styles with stylesheet_link_tag importsRemoved large embedded CSS from multiple admin templates and switched to external stylesheet links for consistency and maintainability.
Project Summary: Admin & Infrastructure Progress Key Milestones & Features Built 🛠️ Admin Product Management UI : Added a full admin interface for product management, including preview capabilities, environment variable integration, and updated order flow logic. This enables admins to efficiently manage product listings and track orders. 🆓 Privacy Enhancements : Implemented a “hide PII” controller to anonymize user data in the UI, ensuring sensitive information is protected in user-facing tables. 🧪 Product Cost Handling : Validated GBP pricing logic for products, ensuring accurate cost handling in the British Pounds currency. 🛠️ CI/CD & Dependency Updates : Configured PostgreSQL in CI pipelines, updated database URLs, and bumped Ruby gem versions to ensure a stable, up-to-date environment. 🎨 Styling Cleanup : Replaced inline styles in admin views with stylesheet_link_tag imports, improving maintainability and separation of concerns. Current Status The project now has a functional admin dashboard for product and order management, with privacy features baked into user data displays. Infrastructure is PostgreSQL-ready in CI, and styling practices align with modern Rails conventions. Core e-commerce logic (pricing, currency) is under testing, with environment variables streamlining configuration. Lessons Learned Privacy by Design : Integrating PII protection early simplifies compliance and reduces technical debt. Infrastructure as Code : Automating PostgreSQL setup in CI saves manual effort and reduces environment inconsistencies. Maintainable Styles : Moving to external stylesheets improves collaboration and long-term code hygiene. Order Page Started Created a functional order page Currency Handling : Explicit GBP validation highlights the need for clear financial logic in order systems.
Dropdown Styling & Component Replacement The design form’s dropdown interface was overhauled to improve visual consistency and user experience. A native <select> element was replaced with a custom-styled solution using 3ab7405 , allowing for greater flexibility in aligning with the project’s aesthetic goals. This change ensures smoother integration with the overall theme and avoids browser-specific styling quirks. CSS Refactoring & Theme Variables Design form styling was fully refactored in 928b7b0 , introducing global theme variables to streamline color, spacing, and typography management. This move simplifies future theme adjustments and promotes code reuse. Model defaults were also standardized to reduce redundancy in form initialization logic, making the codebase more maintainable. Admin Test Redirects In 2af0071 , the admin test workflow was updated to automatically redirect to the products list URL after test submissions. This improves user navigation by providing immediate feedback and next steps, ensuring a cohesive backend experience. Current Status The frontend is now more thematically consistent, with design forms serving as a primary focus area. Admin workflows are being optimized for clarity and efficiency, though backend test processing logic remains pending integration. The codebase is gradually adopting a modular structure, particularly for UI components and configuration. Things Learnt Custom dropdowns using CSS and JavaScript offer better cross-browser compatibility than styling native <select> elements. Theme variables significantly reduce the effort required for UI adjustments, especially as the project scales. Redirects in admin flows should be designed with user context in mind to avoid confusion.
Add brand colors, badge styles, and redesign pagesAdd brand color variables, badge styles, and a full redesign of design pages with responsive layouts, fixed redirect stuff, optimised by using one erb engine call for designs
Rename admin-product to products and refactor CSS, controller, and views. Updated class names and CSS variables, added .no-product-grid and .dashed-break styles. Simplified image loading logic in the product preview controller, and replaced large inline layout styles with external stylesheet includes.
Improved the New Order Page to be neater, and better themed along the colour scheme
Created Printful API Integration and improved order screen to allow better customisations Add Printful import endpoint and order preview UI improvementsImplemented Printful product import, added order preview generation, UI styles, and controller changes for drag‑resize‑rotate preview.
Added Variants for size and colors with stock for each printful region facility. Stimulus target which groups the variants by colour and deletes empty groups
Print area management UI & backend ( a42a00d ): Built a full stack for managing print areas (think “where the design goes” on a shirt front or back). This includes models to store print area dimensions, controllers to handle CRUD ops, and RESTful routes to tie it all together. The frontend now lets users drag/drop to define print zones with responsive positioning ( position: absolute + transform: scale to handle dynamic sizing). Edge case: Products with multiple print areas (e.g., front + back) now render distinct configurations without clobbering state. Printful service & stock syncing ( 7b5d817 ): Added printful_id to product models to map Issued products to Printful’s inventory. UI updates to display Printful sync status (green checkmarks for success, red alerts for failures). Technical tangents The print area system was a slow make. For example: To ensure designs stay within printable bounds, I had to calculate dynamic margins based on product type (e.g., a hoodie’s print area ≠ a mug’s). This involved hacking some trigonometry into the frontend to snap selections to “safe zones.” On the backend, I’m using ActiveRecord callbacks to validate print area dimensions against product specs. If a user tries to set a print area wider than the product allows It raises a PrintAreaOutOfBounds error Future features The actual ship flow and being able to edit multiple print areas instead of just the one
Since the last update, I’ve focused on enhancing the order preview system to support complex design workflows and improving image navigation for multi-image configurations. Recent changes Added multi-image preview navigation with left/right arrow buttons and an index display (e.g., “Image 2 of 5”) to streamline design review workflows ( b269fe5 ). This change directly addresses the need to review multiple design iterations in a single view without page reloads. Refactored the order preview component to support multiple print areas with independently configurable design images. This involved restructuring the preview logic to handle dynamic print area definitions while maintaining consistent state across design selections ( 0545118 ). The refactor enables customers to visualize different designs on separate print areas (e.g., front/back/ sleeves) within the same order preview.
I’ve focused on refining the shop page styling, header positioning, and cost handling logic ( d10a9c51 ). The recent batch of work involved schema adjustments for a product enabled flag, adding support for cost and thread costs ( 82f9f2d1 ), applying a schema fix ( 3f8bcb8a ), fixing CI pipeline issues ( 71e98a ), and pushing updates to production ( ca19da29 ). Recent changes Added an image variants system and updated views to utilize thumb and display variants specifically ( a2e4eb28 ). Implemented cost handling updates, including a specific support for thread costs alongside general product cost tracking ( 82f9f2d1 ). Added an auto annotaterb script executed within the Rails migration process ( 7d07d278 ). Applied schema fixes to ensure data integrity during the recent updates ( 3f8bcb8a ). Updated the RSVP page styles and refreshed the thanks template ( 217945eb ). Refined header positioning and shop page styling across the frontend ( d10a9c51 ). Added a product enabled flag to control product visibility and state in the system ( 82f9f2d1 ). Whats next: Umm, so whats next I think would be adding balance_events so you can trace changes in balances(spending/earning)
Recent changes Added support for balance events and thread adjustments to improve financial tracking accuracy. This also included an update to the notification rendering system to safely handle these new data types without breaking existing templates (commit: ( faed39b57619 )). Fixed the positioning of the design box within the product editor. This specifically addresses display issues occurring when editing products via /admin/products/<id>/edit (commit: ( aa4e314b5dcd )).
Added Devlogs and changed hackatime projects to be multi model per design. Move hackatime project linkage from a single designs.hackatime_project column to a has_many hackatime_projects model, syncing each project’s time and aggregating totals on designs. Add devlogs, ship_requests, ships, and comments models/routes/views for design logging and shipping, and make balance_events polymorphic.Update designs controller, helpers, and views to render multiple project pills, allow adding/removing linked projects, and show a combined hackatime/image/devlog layout. Add redcarpet for Markdown rendering and adjust CSS for dark mode, responsive galleries, and pill controls. Added Devlogs and the prep for adding the shipping flow I added devlogs to the project in prep for the shipping flow
Recent changes Fixed a failure in the CI/CD pipeline commit Implemented status tracking for balance events and refined the underlying thread logic associated with them commit Refactored the token rendering component for render_encoded to allow {{design: design.id}} making a pill, to improve display fidelity and added an edit functionality for devlog entries commit Integrated support for uploading images directly within the devlog interface and established links to corresponding Hackatime projects commit
Recent changes Ship request flow and SVG conversion : Added support for processing ship requests, handling SVG conversions, and validating devlog images before submission 8ca9b5d9 . Nil safety for Hackatime projects : Wrapped the @hackatime_projects variable in an Array structure to prevent nil errors when retrieving project data a29691ff . CI environment and test ordering : Set RAILS_ENV=test for the CI setup process and reordered the sequence of test steps to improve execution reliability 2968d162 . Authorization consolidation : Refactored authorization guards and consolidated the linking logic for Hackatime projects 4c2b1836 .
Recent changes Add comments to devlogs and ship requests Implement polymorphic Comment model with CommentsController, Stimulus-driven collapsing comment box, markdown preview form, and styles. Comments will be rendered by Turbo frames and allow editing by owner/admin. This is what else is included in this change: Encryption of hackclub_access_token and hackclub_refresh_token through ActiveRecord encryption, including config, env sample and migration task for already existing non-encrypted tokens. SSL enforcement in production (assume_ssl, force_ssl). Update filter_parameters to strip out sensitive information and OAuth tokens from logs. Fix ExchangeRate API call to include Bearer authentication header. Sanitization of devlogs HTML output through SafeListSanitizer. Update Design#can_make_devlog to can_make_devlog? method and restrict can_ship? check to devlogs without ship request. Add SRI integrity attribute to marked/DOMPurify scripts loaded from CDNs. UI improvements: styles for disabled buttons, utility class for hover-underline effect, devlog cards layout and info icons.
Recent changes Comment delete, Turbo Comment Box, and ship request fade functionality Add #destroy functionality to the comments with owner permission, path, delete button, and dependent comments. Make use of valid commentable_type/id while building comments and make responses as Turbo streams and wrap up comments within a Turbo frame. Resize the comment box according to the content changes detected by the MutationObserver. Make ship request modal and overlay fade in and out. Consider higher level ship request as blockers for all ship requests. Comment card and comment list styling.
Recent changes Added ship request reviews, resubmission logic, and R2 storage integration for tracking reviewed submissions ( 41b1e43 ). Started on the review workflow Started on Resubmission logic Set up support for cloudflare R2 Guarded Hack Club token persistence behind encryption configuration, ensuring tokens are only stored when encryption is explicitly enabled ( a4b6d0c ).
Made Notifications Useful Recent changes Persistent unread state for unanswered boolean notifications Notifications with unresolved boolean actions (e.g., approvals) now remain marked as unread until explicitly addressed. This ensures users revisit pending decisions. Commit: 39aabb2 . Interactive notification replies with approval time tracking Added support for direct replies to notifications, along with timestamp logging for when approvals are finalized. This enables granular tracking of response times for actionable alerts. Commit: 6ac80f9 .
## Recent changes Notifications: Unanswered notifications now retain their unread status until explicitly addressed. This ensures users can distinguish between pending and resolved interactions without relying on manual state updates ( 751a370 ). Security: Authentication workflows, file uploads, and resource authorization checks have been updated with additional safeguards. Specifics include input validation and access control refinements, though implementation details are not disclosed in the commit message ( 97e48db ).
Recent changes - Installed Bundler 4.0.4 in the Dockerfile to standardize gem management across environments ( 88ba659 ). - Ensured the verification directory exists for SVG upload tests, addressing missing file system setup in test workflows ( 83f2e53 ). - Resolved a Turbo conflict in order steps, likely related to event streaming or frame rendering in Rails views ( e8d08f4 ). Updated navigation unread counts dynamically from notification events, improving real-time feedback for user activity ( a75f6ff ).
Deploying on coolify and fixing bugs with that + encrypting current db
I created the fulfilment system for a fulfilment team to use Recent changes Removed redundant save! calls and updated fulfillment tests to reduce unnecessary database operations and align test logic with current behavior 9acc056 . Added a fulfillment role, batch pipeline, and popup controller to support new workflow automation and UI interactions afa7a20 . The popup controller likely handles transient UI elements like notifications or modals. Fixed a crash in /designs preview rendering by resolving an issue blocking Ruby scan/lint CI, ensuring previews no longer fail unexpectedly ( 911f035 ). Corrected a stray question mark in a design preview image tag to prevent malformed HTML output ( 955dd6c ). Added a note about YSWS draft sponsorship documentation, possibly for tracking external partnerships or funding discussions ( d92d571 ). No performance optimizations or subsystem overhauls were addressed in this cycle. Next steps depend on external feedback and test coverage improvements implied by recent test updates.
Ships:
Shipped!!! There are a bunch of features and stuff that I have added to this since flavortown, from the ordering system to devlogs and ship flow. Project Info This is the ruby on rails app for the ysws draft #issued where YS: Designs made with Code WS: Clothes and other swag with those designs Features added: A bunch of features have been added and I have separated them to 3 categories Major ones for functionality, quality of life for feel and use, security for data security. New Major Features: Designs view now is more detailed including hackatime projects and images from devlogs and ships Ship flow system so you can submit to the ysws Product Design system (admin only - for making the shop items by importing from printful via api) Order system using lots of hotwired turbo (choose color, design placement rotation and scale) Notifications (3 types Normal which provides info and 2 others Boolean which gets a yes or no answer and text which gets a written answer Reviewer Panel which shows pending ships to review with some data on (need to add hackatime info for it though) Storing Reviewer proof videos in a cloudflare R2 storage Quality-Of-Life: Added better UI/UX with some issues with need for ironing out (eg font change from workbench to ‘lexend’ and ‘space mono’ Kept a consistent style through the site, although some panels might need better border colour On login it redirects to the page you logged in by Security: I added User DB encryption to protect user data stored on the postgres database instance, such as name and email Summary Made the functional part of the ysws site (Designs, ordering, shipping) Added more security for user data Improved UI(Font and colour scheme)...
|
1793004917.3471303
|
1793091317.3471303
|
|
39296
|
MNT ~ Minimal New Tab by @wtfisquantum | Stardance
|
wtfisquantum
|
4
|
91.28
|
706
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T16:55:29Z", "hours": 58.0, "multiplier": 15.51, "payout": 589, "blessing": "neutral", "text": "I built MNT ~ Minimal New Tab , a customizable browser dashboard that has grown into something much bigger than a simple new tab page. It brings together multi-search engine support, todos, website shortcuts, technology news, a dynamic Leaflet map background, laptop battery information, RGB mode, custom backgrounds and now a built-in music player, all in one place. The biggest challenge was getting all these features to work together without making the interface feel cluttered or slow. I spent a lot of time building reusable components, handling local storage, integrating APIs, fixing map issues and refining the overall UI. One of my favourite parts was designing the music player with a glassmorphism-inspired interface, rotating album artwork and animated equalizer. I also converted the project into a standalone PWA, so you can install it and use it more like a lightweight desktop app instead of opening it through the browser every time. I’m most proud of how customizable the whole experience has become. You can personalize your background, enable RGB effects, organize your tasks and shortcuts, check your battery status and listen to music without constantly switching between different applications. I’ve put a lot of time into this project, and seeing all these separate ideas finally come together feels genuinely rewarding. To try it out: open the website and explore the dashboard. Switch between search engines, add some todos and shortcuts, experiment with RGB mode, upload your own background and try the built-in music player. You can also install it as a PWA for a more app-like experience. Your saved preferences and customizations are stored locally in your browser. I’d genuinely appreciate it if you gave the project a try and left an honest rating and some feedback! ❤️ Last time, I received some decent feedback, but I’m hoping this version reaches a few more people. If you enjoy using it, a good rating and a follow would mean a lot and help me figure out what to improve next. I’ve still got plenty of ideas for future updates, but for now, I’m really happy with how MNT has turned out. Thanks for checking it out! :)", "repo": "https://github.com/wtfisquantum/minimal-new-tab", "demo": "https://minimal-new-tab.vercel.app/"}, {"ship_num": 2, "ts": "2026-08-28T04:14:07Z", "hours": 6.0, "multiplier": 11.58, "payout": 69, "blessing": "neutral", "text": "I built MNT ~ Minimal New Tab , a clean and customizable browser new tab experience designed to turn the default blank page into a useful everyday dashboard. It combines multi-search engine support, a Todo Manager, customizable website shortcuts, a latest news feed and a dynamic location-aware Leaflet background into a single minimal interface. The biggest challenge was bringing all these independent features together without making the interface feel cluttered. I spent a lot of time working on reusable components, persistent local storage, search engine switching, API integrations and the dynamic map background while keeping the overall design minimal and responsive. I’m most proud of how the project evolved from a simple new tab concept into something that I can actually see myself using every day. The dashboard remembers your tasks, shortcuts and preferences locally, lets you quickly switch between search engines, keeps you updated with recent technology news and adds a dynamic map background based on your location. To test it, simply open the website and start using it as a new tab. Try switching between the different search engines, add a few todos and shortcuts, check out the latest news and reload the page to see how your saved data persists. The map background will also adapt to your approximate location. I’ve really enjoyed building this one and there are still a bunch of ideas I want to experiment with in future updates. If you get a chance to try it out, I’d really appreciate some feedback and a good rating! ❤️ last time i got some decent feedback on my project, but it was still pretty limited, so i’m hoping this one reaches a few more people. i genuinely enjoy building projects that are actually useful in everyday workflows, and i hope that comes across in this one. if you like the project, consider following it and leaving a rating. every bit of feedback helps me figure out what to improve next. thank you! :)", "repo": "https://github.com/wtfisquantum/minimal-new-tab", "demo": "https://minimal-new-tab.vercel.app/"}, {"ship_num": 3, "ts": "2026-08-02T14:23:18Z", "hours": 4.0, "multiplier": 11.23, "payout": 48, "blessing": "neutral", "text": "I built Minimal New Tab , a modern and customizable browser start page that combines productivity, quick search and useful everyday tools into a single clean dashboard. Instead of opening a blank new tab, users get a personalized workspace where they can search the web using multiple search engines, manage todos, save their favorite websites as quick-access shortcuts, read the latest news and enjoy a dynamic location-aware background powered by Leaflet. One of the biggest challenges was keeping all of these independent features connected while maintaining a clean and consistent user experience. I spent a lot of time designing reusable components, refining the UI, handling local persistence for todos and shortcuts, integrating multiple APIs and making sure everything worked smoothly together. Another fun challenge was rendering a dynamic Leaflet map in the background based on the user’s current IP location without taking away from the minimal design. I’m most proud of how the project evolved from a simple browser homepage into something that feels genuinely useful every day. It isn’t just another new tab page—it becomes a small personal dashboard that remembers your preferences, helps you stay organized and keeps commonly used information just one click away. To test the project, simply install or open it as your new tab page. Try searching with different search engines, create a few todos, add and edit homepage shortcuts, browse the latest news and explore how the background automatically adapts using your current location. Everything is stored locally, so your tasks and shortcuts will still be there the next time you open your browser. I hope you enjoy using it as much as I enjoyed building it. Feedback and suggestions are always welcome, and I already have plenty of ideas planned for future updates!", "repo": "https://github.com/wtfisquantum/minimal-new-tab", "demo": "https://minimal-new-tab.vercel.app/"}, {"ship_num": 4, "ts": "2026-07-27T18:44:14Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Wrapped up a number of remaining fixes and gave the overall interface another round of polishing Refined the search bar with a cleaner layout and improved interactions to make searching feel more natural Finalized the cyclic search engine toggle and ensured switching between providers works reliably Improved parts of the backend logic and cleaned up the codebase to make future development easier Continued implementing a few upcoming features, including the taskbar workflow and additional new tab interactions Expanded the search functionality inside the new tab experience and polished the overall user flow Switched the project typography to Rubik and made several CSS refinements for a cleaner, more modern appearance Updated and reorganized the project README with setup instructions, features and screenshots Finished another complete testing pass, fixed a handful of minor bugs and cleaned up leftover code Finally reached a point where the project is ready to publish 🚀 really happy with how this version turned out. i’ve still got a bunch of ideas i want to experiment with, but for now it’s time to ship and start collecting feedback before working on the next set of features :)", "repo": "https://github.com/wtfisquantum/minimal-new-tab", "demo": "https://minimal-new-tab.vercel.app/"}]...
|
[{"post_id": 81838, "ts": "202 [{"post_id": 81838, "ts": "2026-10-22T17:59:11Z", "hours": 9.1289, "text": "working on it will write after finishing"}, {"post_id": 80198, "ts": "2026-10-16T17:40:17Z", "hours": 11.1494, "text": "will edit it"}, {"post_id": 78114, "ts": "2026-10-09T16:27:01Z", "hours": 20.5025, "text": "finally got the built-in music player working, and honestly, this might be my favourite addition to MNT so far. the idea is simple: you shouldn’t need to open spotify or another music app just to find and play the music you want. search for a track directly inside your dashboard and enjoy your music without leaving your workspace spent quite a bit of time researching music APIs, figuring out the integration and building the entire player experience from scratch. getting the search, track information and playback flow to work together properly took more effort than i initially expected designed a dedicated music player interface that fits naturally into the existing MNT aesthetic instead of looking like an external widget pasted into the dashboard implemented a glassmorphism-inspired UI with translucent surfaces, subtle blur effects and layered elements to give the player a more polished, modern appearance added a rotating circular album-art design that gives the player that classic spinning CD vibe while music is playing also implemented an animated audio equalizer to make the interface feel more alive and provide visual feedback during playback refined the component layout, spacing, typography and animations to make everything feel cohesive with the rest of the dashboard fixed a few remaining issues across the PWA, polished some existing interactions and made sure the new music player fits properly into the standalone app experience did another round of testing and cleanup to make the overall application feel more complete, with search, productivity tools, customization, RGB mode and music all accessible from one place ngl, this took a lot longer than i expected, and i’ve now spent around 20 hours on this project, but trust me, this feature was worth it :’) MNT started as a minimal new tab page, but it’s slowly turning into my own little personal workspace. no need to keep opening different apps for every little thing when i can bring the useful stuff together in one place. finally wrapped up this update, fixed the remaining bugs and got everything ready in the standalone PWA. hope you enjoy using it as much as i enjoyed building it! if you get a chance to try it out, i’d really appreciate a rating and some feedback. ❤️"}, {"post_id": 73713, "ts": "2026-09-25T19:28:42Z", "hours": 11.1631, "text": "continued working on the customization system and finished the custom background flow properly, so users can now add their own images and use them directly as the dashboard background also made sure the custom background works nicely with the existing rgb mode , so the background can still have the rgb lighting effects on top of it without breaking the overall look after getting the customization side working, i converted the whole project into a proper standalone PWA this means MNT can now be installed and used more like an actual lightweight desktop app instead of having to keep opening it through the browser every time added the necessary PWA setup and made sure the application can run independently while still keeping all the existing local data, preferences and customizations intact honestly this makes the whole idea of MNT make much more sense to me now. instead of opening a browser just to start doing everything, you can just open MNT directly and have your search, todos, shortcuts, news, map, battery info and custom dashboard all sitting there in one lightweight app i’m still working on a few more ideas to push this further. one of the things i’m experimenting with is adding a proper music player directly into MNT so you can play your own songs from the same dashboard instead of having to open another service every time basically trying to slowly turn this from a new tab page into a small personal desktop workspace :D there’s still a lot more i want to add, but the standalone PWA setup feels like a pretty big step for the project. more features coming soon :)"}, {"post_id": 68606, "ts": "2026-09-15T11:55:52Z", "hours": 6.6394, "text": "Started working on a new godmode feature for the dashboard, basically taking the customization side of the new tab a step further and giving users much more control over how everything looks also went back to the existing rgb mode and improved it with smoother transitions and better color handling so it feels more like an actual ambient rgb setup instead of just a simple color effect the biggest thing i worked on this time was a custom background uploader . built the uploader from scratch so users can pick their own image and use it directly as the new tab background instead of relying on a server or uploading the image somewhere externally, the selected image is converted to base64 and stored locally in the browser , which means the background stays available even after closing and reopening the new tab spent quite a bit of time making the loading process efficient so larger background images don’t make the whole dashboard feel slow or unusable. the image is loaded directly from local storage and rendered back into the background whenever the page starts added the required state handling around uploading, replacing and restoring the custom background so switching between the default background and a personal image doesn’t break the rest of the dashboard honestly this was probably the most fun feature i’ve built for MNT so far. seeing the entire dashboard transform just by dropping in a custom image makes it feel much more like an actual personal workspace rather than just another new tab page :) i’m also working on another part of the godmode system where users will be able to customize individual cards, backgrounds and other visual parts of the dashboard through a dedicated sidebar the sidebar customization system is still in progress, but the basic structure is already being worked on and i’m hoping to make the whole dashboard feel almost completely customizable in the next few updates there’s still a lot more to build around this, but honestly MNT is starting to become way more interesting than what i originally planned it to be :D"}, {"post_id": 66383, "ts": "2026-09-12T05:59:42Z", "hours": 1.3456, "text": "added a fun little rgb mode to the new tab because why not :) the idea is to make the dashboard blend in with your rgb setup, so if you have rgb lights on your keyboard, mouse or pc, you can match the new tab’s colors with them and get that full rgb setup vibe kept it as a purely visual feature with some subtle color effects so it still feels like the same minimal dashboard underneath honestly added this mostly because it looked cool and i wanted to have a little fun with the project :D"}, {"post_id": 66088, "ts": "2026-09-11T17:44:11Z", "hours": 17.8528, "text": "went a little overboard with this one and spent quite a lot of time improving the project after getting feedback that it could use a bit more depth and functionality expanded the news section so it no longer shows just a single article. added a proper news carousel with navigation controls, indicators and multiple stories that can be browsed directly from the dashboard getting the carousel to fit naturally into the existing minimal design was actually more annoying than expected. had to rework the layout, add the bottom indicators and build separate previous/next controls without making the section feel too heavy added subtle fade-in animations while switching between news stories so the content transitions feel smoother instead of changing instantly replaced the old Leaflet background tile layer after the previous provider’s API access stopped working due to an expired key. switched the project over to a different tile source and reconfigured the map so the location-aware background keeps working spent some time testing the map again after the tile provider change and made sure the new layer still works properly with the existing location detection and background setup added one of the more personal features to the dashboard too: a small laptop battery status panel in the top section that shows the current battery percentage, charging state and other available battery information the idea was pretty simple because my laptop’s battery is absolutely cooked and drains way too quickly 😭 so now i can just glance at the new tab and immediately see how much battery i have left and whether it’s charging also polished a bunch of smaller UI details around these features, cleaned up some component logic and made sure the new additions still fit the original minimal design instead of turning the dashboard into a completely overloaded interface spent the remaining time testing the updated dashboard and fixing small rendering and animation issues that came up while putting everything together there’s actually another feature i’m working on right now which i’m pretty excited about, but i’ll save that one for the next devlog. hopefully i can get it finished soon and add it to the project properly :) and yes, the ultimate goal is still getting that macbook somehow, so apparently even my new tab page is now part of the grind :)"}, {"post_id": 56385, "ts": "2026-08-28T04:12:55Z", "hours": 5.9658, "text": "Continued polishing the dashboard and worked on making the dynamic background experience more reliable Improved the Leaflet map integration and fixed the issue where map state and configuration were not being persisted properly between sessions Added local persistence for the relevant map and user preferences so the new tab experience can retain its previous state instead of resetting everything on every reload Refined several existing components and cleaned up their internal logic to make them easier to reuse across the dashboard Improved the styling of the search section, shortcuts and other dashboard elements with better spacing, typography and alignment Made a few adjustments to the background map so it stays visually subtle while still providing the location-aware effect behind the interface Fixed some small state and rendering issues that appeared when switching between different sections and reopening the new tab Added a few minor interaction improvements across the dashboard and cleaned up some leftover CSS and component logic Spent some time testing the complete flow with fresh sessions and existing local data to make sure the application behaves consistently in both cases Overall, focused this session on making the existing features feel more polished, persistent and reliable rather than adding another major feature"}, {"post_id": 39496, "ts": "2026-08-02T14:16:38Z", "hours": 4.2475, "text": "Expanded the project by introducing a personal productivity layer , making it more than just an IP intelligence dashboard. Started building features that users can actually interact with every day instead of only performing IP lookups. Implemented a complete Todo Manager where users can: Create new tasks Edit existing tasks Mark tasks as completed with visual feedback Delete completed or unnecessary tasks Persist everything locally so tasks remain available even after refreshing or reopening the application Designed the todo interface to blend naturally with the rest of the application, keeping the same cards, spacing, typography and interaction patterns so it feels like a native part of the dashboard rather than an additional widget. Added a customizable Homescreen Shortcuts section that allows users to save frequently visited websites directly inside the dashboard. The feature supports: Adding custom shortcuts Editing existing shortcuts Removing shortcuts Local persistence using browser storage so every user’s personalized workspace is restored automatically Refined the component architecture behind these new modules to keep the codebase modular and easier to extend with additional dashboard widgets in future updates. Improved the visual consistency across the entire application by revisiting spacing, typography, borders, hover effects and component alignment. Focused on making every section feel like part of one cohesive experience instead of multiple independent pages. Reworked the dashboard background by replacing static visuals with a dynamic location-aware experience . The application now automatically fetches the user’s current public IP, determines the approximate location and renders the corresponding Leaflet map directly in the background. Fine-tuned the map presentation so it acts as a subtle visual element rather than distracting from the main interface, creating a cleaner and more immersive experience while still giving each user a unique background based on their own location. Performed another round of UI polish, bug fixes and responsiveness improvements to ensure the newly added dashboard features work smoothly across different screen sizes and integrate seamlessly with the existing lookup workflow. This update mainly focused on transforming the project from a simple networking utility into a more customizable and interactive dashboard while preserving the educational and technical foundation of the original idea."}, {"post_id": 35949, "ts": "2026-07-27T18:40:34Z", "hours": 0.7731, "text": "Wrapped up a number of remaining fixes and gave the overall interface another round of polishing Refined the search bar with a cleaner layout and improved interactions to make searching feel more natural Finalized the cyclic search engine toggle and ensured switching between providers works reliably Improved parts of the backend logic and cleaned up the codebase to make future development easier Continued implementing a few upcoming features, including the taskbar workflow and additional new tab interactions Expanded the search functionality inside the new tab experience and polished the overall user flow Switched the project typography to Rubik and made several CSS refinements for a cleaner, more modern appearance Updated and reorganized the project README with setup instructions, features and screenshots Finished another complete testing pass, fixed a handful of minor bugs and cleaned up leftover code Finally reached a point where the project is ready to publish 🚀 really happy with how this version turned out. i’ve still got a bunch of ideas i want to experiment with, but for now it’s time to ship and start collecting feedback before working on the next set of features :)"}, {"post_id": 35767, "ts": "2026-07-27T12:28:19Z", "hours": 0.7803, "text": "Integrated the news fetching system using the Inshorts API to retrieve the latest technology news dynamically Connected the frontend with the API layer and implemented the initial data fetching workflow for displaying fresh headlines Refined the overall interface with several UI improvements, tweaking the layout and styling to give it a cleaner, more “new tab” inspired appearance Polished the CSS across multiple sections to improve spacing, visual consistency and readability Added persistent search engine preferences using localStorage , allowing the selected search provider to remain the default even after reopening the application Improved state initialization so previously saved preferences are restored automatically on page load Performed another round of cleanup and minor refinements while preparing the remaining features for the next development session"}, {"post_id": 35348, "ts": "2026-07-26T17:53:46Z", "hours": 0.5492, "text": "Continued building the projects reusable UI foundation by implementing a few additional shared components and polishing their styling for a more consistent look and feel Built the primary search section that will act as the core interaction point of the application Implemented support for multiple search engines, including: Google DuckDuckGo Bing Added the corresponding search URL generation logic for each provider so queries are routed correctly Developed a cyclic search engine selector that loops through the available providers with each click instead of relying on a traditional dropdown Refined the component state management to ensure the active search engine updates seamlessly throughout the interface Started integrating the external API that powers the application’s backend workflow and completed the initial implementation along with part of the request handling logic Cleaned up the surrounding code while preparing the remaining API integration for the next development session"}, {"post_id": 35277, "ts": "2026-07-26T16:11:44Z", "hours": 0.6456, "text": "started setting up the project from scratch today using the latest version of vite and cleaned out all the default boilerplate to keep the codebase lightweight. configured tailwindcss and organized the initial project structure so everything is ready for building the actual application. after getting the foundation in place, i started designing and implementing a few reusable ui components that will be used throughout the project. built things like a digital clock component, pill badges, section headers and a few other shared elements while focusing on keeping the design clean, consistent and easy to extend. this should make building the rest of the interface much faster as the project grows."}]...
|
Title: MNT ~ Minimal New Tab by @wtfisquantum | St Title: MNT ~ Minimal New Tab by @wtfisquantum | Stardance
Devlogs:
started setting up the project from scratch today using the latest version of vite and cleaned out all the default boilerplate to keep the codebase lightweight. configured tailwindcss and organized the initial project structure so everything is ready for building the actual application. after getting the foundation in place, i started designing and implementing a few reusable ui components that will be used throughout the project. built things like a digital clock component, pill badges, section headers and a few other shared elements while focusing on keeping the design clean, consistent and easy to extend. this should make building the rest of the interface much faster as the project grows.
Continued building the projects reusable UI foundation by implementing a few additional shared components and polishing their styling for a more consistent look and feel Built the primary search section that will act as the core interaction point of the application Implemented support for multiple search engines, including: Google DuckDuckGo Bing Added the corresponding search URL generation logic for each provider so queries are routed correctly Developed a cyclic search engine selector that loops through the available providers with each click instead of relying on a traditional dropdown Refined the component state management to ensure the active search engine updates seamlessly throughout the interface Started integrating the external API that powers the application’s backend workflow and completed the initial implementation along with part of the request handling logic Cleaned up the surrounding code while preparing the remaining API integration for the next development session
Integrated the news fetching system using the Inshorts API to retrieve the latest technology news dynamically Connected the frontend with the API layer and implemented the initial data fetching workflow for displaying fresh headlines Refined the overall interface with several UI improvements, tweaking the layout and styling to give it a cleaner, more “new tab” inspired appearance Polished the CSS across multiple sections to improve spacing, visual consistency and readability Added persistent search engine preferences using localStorage , allowing the selected search provider to remain the default even after reopening the application Improved state initialization so previously saved preferences are restored automatically on page load Performed another round of cleanup and minor refinements while preparing the remaining features for the next development session
Wrapped up a number of remaining fixes and gave the overall interface another round of polishing Refined the search bar with a cleaner layout and improved interactions to make searching feel more natural Finalized the cyclic search engine toggle and ensured switching between providers works reliably Improved parts of the backend logic and cleaned up the codebase to make future development easier Continued implementing a few upcoming features, including the taskbar workflow and additional new tab interactions Expanded the search functionality inside the new tab experience and polished the overall user flow Switched the project typography to Rubik and made several CSS refinements for a cleaner, more modern appearance Updated and reorganized the project README with setup instructions, features and screenshots Finished another complete testing pass, fixed a handful of minor bugs and cleaned up leftover code Finally reached a point where the project is ready to publish 🚀 really happy with how this version turned out. i’ve still got a bunch of ideas i want to experiment with, but for now it’s time to ship and start collecting feedback before working on the next set of features :)
Expanded the project by introducing a personal productivity layer , making it more than just an IP intelligence dashboard. Started building features that users can actually interact with every day instead of only performing IP lookups. Implemented a complete Todo Manager where users can: Create new tasks Edit existing tasks Mark tasks as completed with visual feedback Delete completed or unnecessary tasks Persist everything locally so tasks remain available even after refreshing or reopening the application Designed the todo interface to blend naturally with the rest of the application, keeping the same cards, spacing, typography and interaction patterns so it feels like a native part of the dashboard rather than an additional widget. Added a customizable Homescreen Shortcuts section that allows users to save frequently visited websites directly inside the dashboard. The feature supports: Adding custom shortcuts Editing existing shortcuts Removing shortcuts Local persistence using browser storage so every user’s personalized workspace is restored automatically Refined the component architecture behind these new modules to keep the codebase modular and easier to extend with additional dashboard widgets in future updates. Improved the visual consistency across the entire application by revisiting spacing, typography, borders, hover effects and component alignment. Focused on making every section feel like part of one cohesive experience instead of multiple independent pages. Reworked the dashboard background by replacing static visuals with a dynamic location-aware experience . The application now automatically fetches the user’s current public IP, determines the approximate location and renders the corresponding Leaflet map directly in the background. Fine-tuned the map presentation so it acts as a subtle visual element rather than distracting from the main interface, creating a cleaner and more immersive experience while still giving each user a unique background based on their own location. Performed another round of UI polish, bug fixes and responsiveness improvements to ensure the newly added dashboard features work smoothly across different screen sizes and integrate seamlessly with the existing lookup workflow. This update mainly focused on transforming the project from a simple networking utility into a more customizable and interactive dashboard while preserving the educational and technical foundation of the original idea.
Continued polishing the dashboard and worked on making the dynamic background experience more reliable Improved the Leaflet map integration and fixed the issue where map state and configuration were not being persisted properly between sessions Added local persistence for the relevant map and user preferences so the new tab experience can retain its previous state instead of resetting everything on every reload Refined several existing components and cleaned up their internal logic to make them easier to reuse across the dashboard Improved the styling of the search section, shortcuts and other dashboard elements with better spacing, typography and alignment Made a few adjustments to the background map so it stays visually subtle while still providing the location-aware effect behind the interface Fixed some small state and rendering issues that appeared when switching between different sections and reopening the new tab Added a few minor interaction improvements across the dashboard and cleaned up some leftover CSS and component logic Spent some time testing the complete flow with fresh sessions and existing local data to make sure the application behaves consistently in both cases Overall, focused this session on making the existing features feel more polished, persistent and reliable rather than adding another major feature
went a little overboard with this one and spent quite a lot of time improving the project after getting feedback that it could use a bit more depth and functionality expanded the news section so it no longer shows just a single article. added a proper news carousel with navigation controls, indicators and multiple stories that can be browsed directly from the dashboard getting the carousel to fit naturally into the existing minimal design was actually more annoying than expected. had to rework the layout, add the bottom indicators and build separate previous/next controls without making the section feel too heavy added subtle fade-in animations while switching between news stories so the content transitions feel smoother instead of changing instantly replaced the old Leaflet background tile layer after the previous provider’s API access stopped working due to an expired key. switched the project over to a different tile source and reconfigured the map so the location-aware background keeps working spent some time testing the map again after the tile provider change and made sure the new layer still works properly with the existing location detection and background setup added one of the more personal features to the dashboard too: a small laptop battery status panel in the top section that shows the current battery percentage, charging state and other available battery information the idea was pretty simple because my laptop’s battery is absolutely cooked and drains way too quickly 😭 so now i can just glance at the new tab and immediately see how much battery i have left and whether it’s charging also polished a bunch of smaller UI details around these features, cleaned up some component logic and made sure the new additions still fit the original minimal design instead of turning the dashboard into a completely overloaded interface spent the remaining time testing the updated dashboard and fixing small rendering and animation issues that came up while putting everything together there’s actually another feature i’m working on right now which i’m pretty excited about, but i’ll save that one for the next devlog. hopefully i can get it finished soon and add it to the project properly :) and yes, the ultimate goal is still getting that macbook somehow, so apparently even my new tab page is now part of the grind :)
added a fun little rgb mode to the new tab because why not :) the idea is to make the dashboard blend in with your rgb setup, so if you have rgb lights on your keyboard, mouse or pc, you can match the new tab’s colors with them and get that full rgb setup vibe kept it as a purely visual feature with some subtle color effects so it still feels like the same minimal dashboard underneath honestly added this mostly because it looked cool and i wanted to have a little fun with the project :D
Started working on a new godmode feature for the dashboard, basically taking the customization side of the new tab a step further and giving users much more control over how everything looks also went back to the existing rgb mode and improved it with smoother transitions and better color handling so it feels more like an actual ambient rgb setup instead of just a simple color effect the biggest thing i worked on this time was a custom background uploader . built the uploader from scratch so users can pick their own image and use it directly as the new tab background instead of relying on a server or uploading the image somewhere externally, the selected image is converted to base64 and stored locally in the browser , which means the background stays available even after closing and reopening the new tab spent quite a bit of time making the loading process efficient so larger background images don’t make the whole dashboard feel slow or unusable. the image is loaded directly from local storage and rendered back into the background whenever the page starts added the required state handling around uploading, replacing and restoring the custom background so switching between the default background and a personal image doesn’t break the rest of the dashboard honestly this was probably the most fun feature i’ve built for MNT so far. seeing the entire dashboard transform just by dropping in a custom image makes it feel much more like an actual personal workspace rather than just another new tab page :) i’m also working on another part of the godmode system where users will be able to customize individual cards, backgrounds and other visual parts of the dashboard through a dedicated sidebar the sidebar customization system is still in progress, but the basic structure is already being worked on and i’m hoping to make the whole dashboard feel almost completely customizable in the next few updates there’s still a lot more to build around this, but honestly MNT is starting to become way more interesting than what i originally planned it to be :D
continued working on the customization system and finished the custom background flow properly, so users can now add their own images and use them directly as the dashboard background also made sure the custom background works nicely with the existing rgb mode , so the background can still have the rgb lighting effects on top of it without breaking the overall look after getting the customization side working, i converted the whole project into a proper standalone PWA this means MNT can now be installed and used more like an actual lightweight desktop app instead of having to keep opening it through the browser every time added the necessary PWA setup and made sure the application can run independently while still keeping all the existing local data, preferences and customizations intact honestly this makes the whole idea of MNT make much more sense to me now. instead of opening a browser just to start doing everything, you can just open MNT directly and have your search, todos, shortcuts, news, map, battery info and custom dashboard all sitting there in one lightweight app i’m still working on a few more ideas to push this further. one of the things i’m experimenting with is adding a proper music player directly into MNT so you can play your own songs from the same dashboard instead of having to open another service every time basically trying to slowly turn this from a new tab page into a small personal desktop workspace :D there’s still a lot more i want to add, but the standalone PWA setup feels like a pretty big step for the project. more features coming soon :)
finally got the built-in music player working, and honestly, this might be my favourite addition to MNT so far. the idea is simple: you shouldn’t need to open spotify or another music app just to find and play the music you want. search for a track directly inside your dashboard and enjoy your music without leaving your workspace spent quite a bit of time researching music APIs, figuring out the integration and building the entire player experience from scratch. getting the search, track information and playback flow to work together properly took more effort than i initially expected designed a dedicated music player interface that fits naturally into the existing MNT aesthetic instead of looking like an external widget pasted into the dashboard implemented a glassmorphism-inspired UI with translucent surfaces, subtle blur effects and layered elements to give the player a more polished, modern appearance added a rotating circular album-art design that gives the player that classic spinning CD vibe while music is playing also implemented an animated audio equalizer to make the interface feel more alive and provide visual feedback during playback refined the component layout, spacing, typography and animations to make everything feel cohesive with the rest of the dashboard fixed a few remaining issues across the PWA, polished some existing interactions and made sure the new music player fits properly into the standalone app experience did another round of testing and cleanup to make the overall application feel more complete, with search, productivity tools, customization, RGB mode and music all accessible from one place ngl, this took a lot longer than i expected, and i’ve now spent around 20 hours on this project, but trust me, this feature was worth it :’) MNT started as a minimal new tab page, but it’s slowly turning into my own little personal workspace. no need to keep opening different apps for every little thing when i can bring the useful stuff together in one place. finally wrapped up this update, fixed the remaining bugs and got everything ready in the standalone PWA. hope you enjoy using it as much as i enjoyed building it! if you get a chance to try it out, i’d really appreciate a rating and some feedback. ❤️
will edit it
working on it will write after finishing
Ships:
Wrapped up a number of remaining fixes and gave the overall interface another round of polishing Refined the search bar with a cleaner layout and improved interactions to make searching feel more natural Finalized the cyclic search engine toggle and ensured switching between providers works reliably Improved parts of the backend logic and cleaned up the codebase to make future development easier Continued implementing a few upcoming features, including the taskbar workflow and additional new tab interactions Expanded the search functionality inside the new tab experience and polished the overall user flow Switched the project typography to Rubik and made several CSS refinements for a cleaner, more modern appearance Updated and reorganized the project README with setup instructions, features and screenshots Finished another complete testing pass, fixed a handful of minor bugs and cleaned up leftover code Finally reached a point where the project is ready to publish 🚀 really happy with how this version turned out. i’ve still got a bunch of ideas i want to experiment with, but for now it’s time to ship and start collecting feedback before working on the next set of features :)
I built Minimal New Tab , a modern and customizable browser start page that combines productivity, quick search and useful everyday tools into a single clean dashboard. Instead of opening a blank new tab, users get a personalized workspace where they can search the web using multiple search engines, manage todos, save their favorite websites as quick-access shortcuts, read the latest news and enjoy a dynamic location-aware background powered by Leaflet. One of the biggest challenges was keeping all of these independent features connected while maintaining a clean and consistent user experience. I spent a lot of time designing reusable components, refining the UI, handling local persistence for todos and shortcuts, integrating multiple APIs and making sure everything worked smoothly together. Another fun challenge was rendering a dynamic Leaflet map in the background based on the user’s current IP location without taking away from the minimal design. I’m most proud of how the project evolved from a simple browser homepage into something that feels genuinely useful every day. It isn’t just another new tab page—it becomes a small personal dashboard that remembers your preferences, helps you stay organized and keeps commonly used information just one click away. To test the project, simply install or open it as your new tab page. Try searching with different search engines, create a few todos, add and edit homepage shortcuts, browse the latest news and explore how the background automatically adapts using your current location. Everything is stored locally, so your tasks and shortcuts will still be there the next time you open your browser. I hope you enjoy using it as much as I enjoyed building it. Feedback and suggestions are always welcome, and I already have plenty of ideas planned for future updates!
I built MNT ~ Minimal New Tab , a clean and customizable browser new tab experience designed to turn the default blank page into a useful everyday dashboard. It combines multi-search engine support, a Todo Manager, customizable website shortcuts, a latest news feed and a dynamic location-aware Leaflet background into a single minimal interface. The biggest challenge was bringing all these independent features together without making the interface feel cluttered. I spent a lot of time working on reusable components, persistent local storage, search engine switching, API integrations and the dynamic map background while keeping the overall design minimal and responsive. I’m most proud of how the project evolved from a simple new tab concept into something that I can actually see myself using every day. The dashboard remembers your tasks, shortcuts and preferences locally, lets you quickly switch between search engines, keeps you updated with recent technology news and adds a dynamic map background based on your location. To test it, simply open the website and start using it as a new tab. Try switching between the different search engines, add a few todos and shortcuts, check out the latest news and reload the page to see how your saved data persists. The map background will also adapt to your approximate location. I’ve really enjoyed building this one and there are still a bunch of ideas I want to experiment with in future updates. If you get a chance to try it out, I’d really appreciate some feedback and a good rating! ❤️ last time i got some decent feedback on my project, but it was still pretty limited, so i’m hoping this one reaches a few more people. i genuinely enjoy building projects that are actually useful in everyday workflows, and i hope that comes across in this one. if you like the project, consider following it and leaving a rating. every bit of feedback helps me figure out what to improve next. thank you! :)
I built MNT ~ Minimal New Tab , a customizable browser dashboard that has grown into something much bigger than a simple new tab page. It brings together multi-search engine support, todos, website shortcuts, technology news, a dynamic Leaflet map background, laptop battery information, RGB mode, custom backgrounds and now a built-in music player, all in one place. The biggest challenge was getting all these features to work together without making the interface feel cluttered or slow. I spent a lot of time building reusable components, handling local storage, integrating APIs, fixing map issues and refining the overall UI. One of my favourite parts was designing the music player with a glassmorphism-inspired interface, rotating album artwork and animated equalizer. I also converted the project into a standalone PWA, so you can install it and use it more like a lightweight desktop app instead of opening it through the browser every time. I’m most proud of how customizable the whole experience has become. You can personalize your background, enable RGB effects, organize your tasks and shortcuts, check your battery status and listen to music without constantly switching between different applications. I’ve put a lot of time into this project, and seeing all these separate ideas finally come together feels genuinely rewarding. To try it out: open the website and explore the dashboard. Switch between search engines, add some todos and shortcuts, experiment with RGB mode, upload your own background and try the built-in music player. You can also install it as a PWA for a more app-like experience. Your saved preferences and customizations are stored locally in your browser. I’d genuinely appreciate it if you gave the project a try and left an honest rating and some feedback! ❤️ Last time, I received some decent feedback, but I’m hoping this version reaches a few more people. If you enjoy using it, a good rating and a follow would mean a lot and help me figure out what to improve next. I’ve still got plenty of ideas for future updates, but for now, I’m really happy with how MNT has turned out. Thanks for checking it out! :)...
|
1793051731.380824
|
1793138131.380824
|
|
5342
|
Poker / Misc by @judewall09 | Stardance
|
judewall09
|
0
|
91.21
|
0
|
[]
|
[{"post_id": 55090, "ts": "202 [{"post_id": 55090, "ts": "2026-08-26T15:20:25Z", "hours": 91.2086, "text": "I’m building a poker bot, this was a mix but was largely about training poker bots, a few audits on the program, etc."}]...
|
Title: Poker / Misc by @judewall09 | Stardance
De Title: Poker / Misc by @judewall09 | Stardance
Devlogs:
I’m building a poker bot, this was a mix but was largely about training poker bots, a few audits on the program, etc....
|
1792479002.2011478
|
1793083802.2011478
|
|
26037
|
Geomatrix by @muntean_andrew | Stardance
|
muntean_andrew
|
2
|
91.0
|
1037
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T09:44:15Z", "hours": 29.0, "multiplier": 13.05, "payout": 462, "blessing": "neutral", "text": "What did you make? What was challenging? What are you proud of? I updated my multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging trying to stay consistent and not get overwhelmed by the loads of things I could add to the game as my time is limited and I easily ended up in a rabbit-hole about AI models that could play my game, which I didn’t end up making. I am proud that even though I wouldn’t say this is the most sophisticated piece of software, I would say it’s pretty rudimentary compared to other games but I’ve come to expect reliability and modularity from it, which really came in handy when adding the maps and shapes. Even though there were some minor bugs here and there with the new maps and shapes at the beginning, it all ended up working with very small tweaks. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client.", "repo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars", "demo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars/releases/tag/Pre-alpha"}, {"ship_num": 2, "ts": "2026-07-08T15:02:01Z", "hours": 62.0, "multiplier": 10.25, "payout": 575, "blessing": "neutral", "text": "What did you make? What was challenging? What are you proud of? I made a multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging getting the client to render and interpolate the packets sent from the server because without taking into account the time difference the players might overshoot, and because the projectiles didn’t have an id at the time, they would flicker in positions where they shouldn’t have been. I am very proud of my server and the client-server communication because were the most reliable and straightforward things during the development of this project, even though I firstly started to build the server, the collision simulation, aiming, map and shape changes were very intuitive which proved to be extremely reliable. This reliability of the server really did come in handy when debugging the numerous bugs of the client, but most of the bugs that I found in the client are now fixed, but if someone finds more, I wouldn’t be surprised and you can contact me and describe the issue. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client. It is only on Windows at the moment, but in a future update it will be cross platform, even on mobile.", "repo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars", "demo": "https://github.com/AliendsOG/Geometrical-Brawl-Stars/releases/tag/Pre-alpha"}]...
|
[{"post_id": 49424, "ts": "202 [{"post_id": 49424, "ts": "2026-08-18T08:07:01Z", "hours": 2.0125, "text": "I added 2 new shapes that will fight for supremacy in the math world. They are the Astroid and the Reuleaux Triangle. The Astroid is more of a sniper with long range and lots of damage, but smaller ammo. The Reuleaux Triangle is more of a tank with a shorter range and smaller speed but tons of ammo and damage and also loads of health. Also I added 2 new maps, one is a team mode map and another is a PVE map in which each shape has to fight to be the only one standing at the end of the match."}, {"post_id": 49068, "ts": "2026-08-17T17:43:39Z", "hours": 1.975, "text": "I added the aiming line overlay to make it easier for players to see where they are aiming. It was actually a little bit of spaghetti code involved in the making of this as I use a function to draw the match and another function calculates the last point of the line and returns it but I made it work and it does so beautifully and reliably. I am thinking of maybe adding 1 or 2 more shapes and 1 or 2 new maps and I’d say the project is ready for another ship!"}, {"post_id": 45690, "ts": "2026-08-12T10:43:13Z", "hours": 3.9244, "text": "After a bit of a pause on this project because I wanted to clear my mind a little and do the Hackpad hardware project I returned and made the Game Over screen a bit nicer and so everything is beginning to tie together. I wrote Reals and Quanta so that new users will know what those icons mean. In addition I redesigned the map selection screen to show a preview of the map before selecting it. I am also thinking of adding an aim overview and the players just hold the arrow keys or move the right joystick on the controller."}, {"post_id": 35801, "ts": "2026-07-27T13:53:01Z", "hours": 4.3969, "text": "These past days I am trying to figure out how to implement the IPC (inter process communication) between Python (where the AI model will be made) and the C++ “megaclient” that acts as 10 clients that connect to the game server. From what I’ve seen one of the easiest ways to implement it is through binary standard streams because I’ll have to move 14KB of data per frame, and because I will unlock the speed of the server physics simulation, it will be like thousands of frames per second, which will add up pretty fast. But the problem isn’t the actual size of data, but the latency, if I would just save it into a txt file my SSD will be hit with thousands of requests every second, so keeping everything in the RAM is why I chose to try and implement the IPC through binary standard streams. But I didn’t yet get it working and my brain hurts a little cause for the first time since the beginning of this project I have absolutely no idea what to do or how to actually solve this issue and I kinda feel lost and a bit demotivated, that’s why this week I managed a bit over 1hr of coding per day. But at the same time I’ve been watching more and more videos about how to build AI models and for the first version I’ll build a standard Backprop model as I’ve read in a paper that Predictive Coding approximates Backprop. The problem is this will have to come after the IPC is implemented successfully, which currently it is not. If anyone sees and reads this I would happily accept any suggestions on how to implement the IPC between Python and C++."}, {"post_id": 31456, "ts": "2026-07-19T20:32:11Z", "hours": 3.9214, "text": "I’m starting the development of an Predictive Coding AI model that would play my game as a bot. I’ll make it in Python so I can learn a new language and as it is the standard language used in AI development. Currently I’m building a kind of “mega client” which acts as 10 client that connect to the server and it displays the whole map on the screen with all the players. After this I will link the Python project with the “Mega Client” through standard streams as ENet on Python isn’t really a modern supported thing and this will cut down network bandwidth and I think will decrease the CPU overhead while the model trains. When the link between the Python and C++ program is finished then I’ll start the development of the actual AI model, which will involve reading through some scientific papers on the topic. Right now I have 2 of them bookmarked, but you never know when something new may pop up."}, {"post_id": 30359, "ts": "2026-07-17T20:44:31Z", "hours": 3.7181, "text": "I designed kinda a rough sketch of how the icons for the game currencies could look like. The sine waves are drawn in Raylib and they are static, as well as the circle and the border. The “R” and “i” in the reals and imaginaries’ icon are font characters. Initially I thought about drawing everything, but then I saw a video about game optimization and that it’s very inefficient for the GPU to render small triangles, which eliminated the drawing in Raylib option, and also it would have been a hassle and a half. So this left 2 choices, load the R and i as a font or an image. I chose to load them as fonts because this allows better scalability, as a font isn’t made of pixels. But I didn’t know how much time I will spend making the font implementation to work. First I had to find the fonts that had my desired characters, which was a little tedious having to download or scroll through the list of characters for each font. For this I had to install Font Forge so I could view every character in the font. After that I had to create a new font and to replace the i and R characters of the font with my special characters and then hook it up to Raylib. After loading up my special font I had to tell Raylib whicch characters to import, and I had to measure the characters visual height so I could align them properly in the icon. Each icon is drawn using their specific function, but I am thinking of combining them into one function in the future."}, {"post_id": 29455, "ts": "2026-07-16T12:35:42Z", "hours": 7.1175, "text": "Currently I’m focusing on UI refinement, currency introduction and “trophy” road implementation. I introduced to the game: Reals - the basic currency of the game (kinda like coins in any other game), you win them after a match and they can be used to buy shapes and upgrades. If it wasn’t obvious, the name comes from the set of real numbers. Imaginaries - they are the “premium” currency in the game which can be used to buy reals. At the moment the game doesn’t really use them or display them.😅 It’s a work in progress so yeah. Quanta - these are the equivalent of trophies, they would determine the skill of the player. You gain then winning matches and also lose them losing matches. At the end of the match (or when the player is eliminated) the server transmits a packet in which is specified the amount of reals and quanta received by the player. At the moment the amount of currency a player has is stored in a txt file in the game directory for simplicity. In the future I think that maybe it could be encrypted somehow with a key given by the server so the player won’t just be able to modify it. In addition to this, I changed the UI for the main screen, the shape selection screen and introduces the ability to see the shape, it’s level, stats, and to upgrade it. I’ll be honest that I took a bit of “inspiration” from the Brawl Stars layout, but tried to change some things, and my UI is still not in it’s final form. Everything is done in Raylib, I still don’t use any PNG textures because I want everything to be vectors cause they are not limited by resolution (which maybe is worse for optimisation) and frankly because I don’t know how and I’m a little afraid to try. 😅 The settings and map selection menu still remained the same, maybe I’ll work on the map selection menu but idk about the settings menu cause it technically works and as the saying goes “if it works, don’t touch it”, and I’m a little afraid of touching it. Also I’m thinking of introducing a scale variable for text, like the UI elements are defined by the width and height of the window, but the font size of the text is it plain pixels, so I’m thinking of making the text scale based on how it looks at 1080p and if the resolution is lower or higher the font size will multiply with the scale that will be the players resolution height divided by 1080. After the UI layout is “done”, which hopefully will happen till the end of the week, I’m starting the development and training of the Predictive Coding AI model that will play my game as a bot. P.S.: I’m trying to make longer devlogs as that was suggested numerous times in the reviews of the first ship."}, {"post_id": 25822, "ts": "2026-07-10T09:05:29Z", "hours": 2.4131, "text": "Added Linux support!!!"}, {"post_id": 24592, "ts": "2026-07-08T09:25:14Z", "hours": 1.1092, "text": "Finally got the settings to work, but the user has to press Enter twice for the change to happen, but hey, it’s not a bug, it’s a feature. 😅 I’m getting ready to ship this first alpha version of Geomatrix. It has been such a journey managing UDP packet types, the server physics simulations, the client interpolation and the Raylib rendering pipeline. But at the end of the day, it was fun, and I learned a ton about client-server communication and the massive optimizations you can unlock when you find the right architectural abstractions."}, {"post_id": 24359, "ts": "2026-07-07T21:27:49Z", "hours": 4.04, "text": "Trying to get the settings menu to work. Firstly I made a general menu class, then I added to it a submenu vector, and I got it to work when I was only focused on getting the resolution to change. But then I tried to implement the frame rate setting and so the class had to be redesigned and now, let’s say it’s halfway there. PS: the total time across the 2 Hackatime projects (server and client) linked to this Stardance project is 71hrs."}, {"post_id": 23794, "ts": "2026-07-06T22:53:58Z", "hours": 4.8689, "text": "Implemented settings and a save file. Now whenever the user reopens the game it remembers their last used shape and map so they don’t have to reselect them. The settings UI is only partially made. P.S.: Hackatime shows the 2 linked project times to be 31hrs 55min and 35hrs 8 min respectively, but the total somehow is 57hrs 19 min."}, {"post_id": 23073, "ts": "2026-07-05T20:13:55Z", "hours": 6.6294, "text": "Added support for new shapes and levels. Different shapes have different stats and some of them can be upgraded with a leveling up system. Also added a sine wave animation to a tile."}, {"post_id": 22465, "ts": "2026-07-04T22:45:53Z", "hours": 4.1553, "text": "Introduced a new tech inspired design into the game. Now players that are in a “bush” get invisible. Made the game modular and added support for multiple maps on the server side. P.S.: In Hackatime I have 54 hours logged on this project, 8 more than Stardance logged, this discrepancy appeared 2-3 devlogs ago and I asked on the stardance-help chat about it, but I got no response."}, {"post_id": 21790, "ts": "2026-07-03T22:04:37Z", "hours": 5.9508, "text": "Added a title screen, lobby waiting screen and a game over screen"}, {"post_id": 21117, "ts": "2026-07-02T22:17:01Z", "hours": 1.6061, "text": "Now users can resize the window and the game scales perfectly. There is now a main menu and a game over screen is in the works."}, {"post_id": 20365, "ts": "2026-07-01T22:57:07Z", "hours": 10.1514, "text": "I’ve implemented a “fog of war” so the server only sends to the player the data about the other players that they can actually see. I made the camera follow the current player. The game now uses interpolation to smooth out the data packets coming from the server, so players can enjoy smoother gameplay. Also the tick rate was increased to 69Hz. The network packets are now dynamic, they do not have a fixed size, this saves network bandwidth. What I wanna do next: create some basic UI; create a basic game over screen; introduce new shapes as playable “characters”; maybe introduce a trophy system"}, {"post_id": 18320, "ts": "2026-06-29T12:56:54Z", "hours": 16.1739, "text": "I’ve implemented shooting and health in the game. Next I have to add a reload and ammo count. After that I could start to focus onto implementing some interpolation in the player and bullet’s movement to make it move at 144FPS not at the 30Hz tick rate of the server."}, {"post_id": 15942, "ts": "2026-06-25T22:02:49Z", "hours": 7.7833, "text": "Test the server side movement functionality"}]...
|
Title: Geomatrix by @muntean_andrew | Stardance
D Title: Geomatrix by @muntean_andrew | Stardance
Devlogs:
Test the server side movement functionality
I’ve implemented shooting and health in the game. Next I have to add a reload and ammo count. After that I could start to focus onto implementing some interpolation in the player and bullet’s movement to make it move at 144FPS not at the 30Hz tick rate of the server.
I’ve implemented a “fog of war” so the server only sends to the player the data about the other players that they can actually see. I made the camera follow the current player. The game now uses interpolation to smooth out the data packets coming from the server, so players can enjoy smoother gameplay. Also the tick rate was increased to 69Hz. The network packets are now dynamic, they do not have a fixed size, this saves network bandwidth. What I wanna do next: create some basic UI; create a basic game over screen; introduce new shapes as playable “characters”; maybe introduce a trophy system
Now users can resize the window and the game scales perfectly. There is now a main menu and a game over screen is in the works.
Added a title screen, lobby waiting screen and a game over screen
Introduced a new tech inspired design into the game. Now players that are in a “bush” get invisible. Made the game modular and added support for multiple maps on the server side. P.S.: In Hackatime I have 54 hours logged on this project, 8 more than Stardance logged, this discrepancy appeared 2-3 devlogs ago and I asked on the stardance-help chat about it, but I got no response.
Added support for new shapes and levels. Different shapes have different stats and some of them can be upgraded with a leveling up system. Also added a sine wave animation to a tile.
Implemented settings and a save file. Now whenever the user reopens the game it remembers their last used shape and map so they don’t have to reselect them. The settings UI is only partially made. P.S.: Hackatime shows the 2 linked project times to be 31hrs 55min and 35hrs 8 min respectively, but the total somehow is 57hrs 19 min.
Trying to get the settings menu to work. Firstly I made a general menu class, then I added to it a submenu vector, and I got it to work when I was only focused on getting the resolution to change. But then I tried to implement the frame rate setting and so the class had to be redesigned and now, let’s say it’s halfway there. PS: the total time across the 2 Hackatime projects (server and client) linked to this Stardance project is 71hrs.
Finally got the settings to work, but the user has to press Enter twice for the change to happen, but hey, it’s not a bug, it’s a feature. 😅 I’m getting ready to ship this first alpha version of Geomatrix. It has been such a journey managing UDP packet types, the server physics simulations, the client interpolation and the Raylib rendering pipeline. But at the end of the day, it was fun, and I learned a ton about client-server communication and the massive optimizations you can unlock when you find the right architectural abstractions.
Added Linux support!!!
Currently I’m focusing on UI refinement, currency introduction and “trophy” road implementation. I introduced to the game: Reals - the basic currency of the game (kinda like coins in any other game), you win them after a match and they can be used to buy shapes and upgrades. If it wasn’t obvious, the name comes from the set of real numbers. Imaginaries - they are the “premium” currency in the game which can be used to buy reals. At the moment the game doesn’t really use them or display them.😅 It’s a work in progress so yeah. Quanta - these are the equivalent of trophies, they would determine the skill of the player. You gain then winning matches and also lose them losing matches. At the end of the match (or when the player is eliminated) the server transmits a packet in which is specified the amount of reals and quanta received by the player. At the moment the amount of currency a player has is stored in a txt file in the game directory for simplicity. In the future I think that maybe it could be encrypted somehow with a key given by the server so the player won’t just be able to modify it. In addition to this, I changed the UI for the main screen, the shape selection screen and introduces the ability to see the shape, it’s level, stats, and to upgrade it. I’ll be honest that I took a bit of “inspiration” from the Brawl Stars layout, but tried to change some things, and my UI is still not in it’s final form. Everything is done in Raylib, I still don’t use any PNG textures because I want everything to be vectors cause they are not limited by resolution (which maybe is worse for optimisation) and frankly because I don’t know how and I’m a little afraid to try. 😅 The settings and map selection menu still remained the same, maybe I’ll work on the map selection menu but idk about the settings menu cause it technically works and as the saying goes “if it works, don’t touch it”, and I’m a little afraid of touching it. Also I’m thinking of introducing a scale variable for text, like the UI elements are defined by the width and height of the window, but the font size of the text is it plain pixels, so I’m thinking of making the text scale based on how it looks at 1080p and if the resolution is lower or higher the font size will multiply with the scale that will be the players resolution height divided by 1080. After the UI layout is “done”, which hopefully will happen till the end of the week, I’m starting the development and training of the Predictive Coding AI model that will play my game as a bot. P.S.: I’m trying to make longer devlogs as that was suggested numerous times in the reviews of the first ship.
I designed kinda a rough sketch of how the icons for the game currencies could look like. The sine waves are drawn in Raylib and they are static, as well as the circle and the border. The “R” and “i” in the reals and imaginaries’ icon are font characters. Initially I thought about drawing everything, but then I saw a video about game optimization and that it’s very inefficient for the GPU to render small triangles, which eliminated the drawing in Raylib option, and also it would have been a hassle and a half. So this left 2 choices, load the R and i as a font or an image. I chose to load them as fonts because this allows better scalability, as a font isn’t made of pixels. But I didn’t know how much time I will spend making the font implementation to work. First I had to find the fonts that had my desired characters, which was a little tedious having to download or scroll through the list of characters for each font. For this I had to install Font Forge so I could view every character in the font. After that I had to create a new font and to replace the i and R characters of the font with my special characters and then hook it up to Raylib. After loading up my special font I had to tell Raylib whicch characters to import, and I had to measure the characters visual height so I could align them properly in the icon. Each icon is drawn using their specific function, but I am thinking of combining them into one function in the future.
I’m starting the development of an Predictive Coding AI model that would play my game as a bot. I’ll make it in Python so I can learn a new language and as it is the standard language used in AI development. Currently I’m building a kind of “mega client” which acts as 10 client that connect to the server and it displays the whole map on the screen with all the players. After this I will link the Python project with the “Mega Client” through standard streams as ENet on Python isn’t really a modern supported thing and this will cut down network bandwidth and I think will decrease the CPU overhead while the model trains. When the link between the Python and C++ program is finished then I’ll start the development of the actual AI model, which will involve reading through some scientific papers on the topic. Right now I have 2 of them bookmarked, but you never know when something new may pop up.
These past days I am trying to figure out how to implement the IPC (inter process communication) between Python (where the AI model will be made) and the C++ “megaclient” that acts as 10 clients that connect to the game server. From what I’ve seen one of the easiest ways to implement it is through binary standard streams because I’ll have to move 14KB of data per frame, and because I will unlock the speed of the server physics simulation, it will be like thousands of frames per second, which will add up pretty fast. But the problem isn’t the actual size of data, but the latency, if I would just save it into a txt file my SSD will be hit with thousands of requests every second, so keeping everything in the RAM is why I chose to try and implement the IPC through binary standard streams. But I didn’t yet get it working and my brain hurts a little cause for the first time since the beginning of this project I have absolutely no idea what to do or how to actually solve this issue and I kinda feel lost and a bit demotivated, that’s why this week I managed a bit over 1hr of coding per day. But at the same time I’ve been watching more and more videos about how to build AI models and for the first version I’ll build a standard Backprop model as I’ve read in a paper that Predictive Coding approximates Backprop. The problem is this will have to come after the IPC is implemented successfully, which currently it is not. If anyone sees and reads this I would happily accept any suggestions on how to implement the IPC between Python and C++.
After a bit of a pause on this project because I wanted to clear my mind a little and do the Hackpad hardware project I returned and made the Game Over screen a bit nicer and so everything is beginning to tie together. I wrote Reals and Quanta so that new users will know what those icons mean. In addition I redesigned the map selection screen to show a preview of the map before selecting it. I am also thinking of adding an aim overview and the players just hold the arrow keys or move the right joystick on the controller.
I added the aiming line overlay to make it easier for players to see where they are aiming. It was actually a little bit of spaghetti code involved in the making of this as I use a function to draw the match and another function calculates the last point of the line and returns it but I made it work and it does so beautifully and reliably. I am thinking of maybe adding 1 or 2 more shapes and 1 or 2 new maps and I’d say the project is ready for another ship!
I added 2 new shapes that will fight for supremacy in the math world. They are the Astroid and the Reuleaux Triangle. The Astroid is more of a sniper with long range and lots of damage, but smaller ammo. The Reuleaux Triangle is more of a tank with a shorter range and smaller speed but tons of ammo and damage and also loads of health. Also I added 2 new maps, one is a team mode map and another is a PVE map in which each shape has to fight to be the only one standing at the end of the match.
Ships:
What did you make? What was challenging? What are you proud of? I made a multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging getting the client to render and interpolate the packets sent from the server because without taking into account the time difference the players might overshoot, and because the projectiles didn’t have an id at the time, they would flicker in positions where they shouldn’t have been. I am very proud of my server and the client-server communication because were the most reliable and straightforward things during the development of this project, even though I firstly started to build the server, the collision simulation, aiming, map and shape changes were very intuitive which proved to be extremely reliable. This reliability of the server really did come in handy when debugging the numerous bugs of the client, but most of the bugs that I found in the client are now fixed, but if someone finds more, I wouldn’t be surprised and you can contact me and describe the issue. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client. It is only on Windows at the moment, but in a future update it will be cross platform, even on mobile.
What did you make? What was challenging? What are you proud of? I updated my multiplayer game where interesting geometrical shapes fight each other to dominate the world of maths called Geomatrix. It is built fully in C++ with ENet being used for the client-server communication over UDP and Raylib being used to display graphics on the client side. In Geomatrix different shapes have their own strengths and weaknesses and players have to leverage them in the best way possible so they can win. It was quite challenging trying to stay consistent and not get overwhelmed by the loads of things I could add to the game as my time is limited and I easily ended up in a rabbit-hole about AI models that could play my game, which I didn’t end up making. I am proud that even though I wouldn’t say this is the most sophisticated piece of software, I would say it’s pretty rudimentary compared to other games but I’ve come to expect reliability and modularity from it, which really came in handy when adding the maps and shapes. Even though there were some minor bugs here and there with the new maps and shapes at the beginning, it all ended up working with very small tweaks. What should people know so they can test your project? To test the project follow these steps: Go to releases section of the GitHub repository. Download the Client and Server executables. Download the “maps” folder from the root directory of the repository. Place the Client and Server executables and the “maps” folder inside 1 directory. Start the Server and then the Client. For multiple clients just spin up new instances of the Client....
|
1793087791.5333245
|
1793174191.5333245
|
|
40044
|
Aether by @Praknoor | Stardance
|
Praknoor
|
1
|
90.8
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T17:37:24Z", "hours": 47.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "yoo gng… so this is v1 of my platform, pls join me in this journey….basicly it’s a platform where the studets can learn anythigh, i am also planning to add other subjects like cad, design but i am still figuring out……….to use the platform u need to first register as betatesters , then i will approve u and then u can use the platform", "repo": "https://github.com/GurnoorLog/AETHER", "demo": "https://aether-sooty-one.vercel.app/"}]...
|
[{"post_id": 73267, "ts": "202 [{"post_id": 73267, "ts": "2026-09-24T18:19:42Z", "hours": 6.8969, "text": "improved the website, the tutors languigeand added the poption to custumize the look"}, {"post_id": 60866, "ts": "2026-09-03T14:33:30Z", "hours": 4.9708, "text": "just improved the app, gave the app the style of the website, also i made some art, but it’s 🤮 rn…but give some tmie and it will be great"}, {"post_id": 58115, "ts": "2026-08-30T13:51:06Z", "hours": 0.5667, "text": "improved also the layout of the dahboard"}, {"post_id": 58071, "ts": "2026-08-30T12:42:03Z", "hours": 4.0575, "text": "reworked on the css"}, {"post_id": 54716, "ts": "2026-08-25T19:50:06Z", "hours": 7.0078, "text": "improved the website, and also made the app more optimized"}, {"post_id": 52583, "ts": "2026-08-22T19:24:01Z", "hours": 1.3981, "text": "yoo gng added more screens… and the ui is now complete….. it’s ready to use gng, i am soon gonna publish it"}, {"post_id": 52181, "ts": "2026-08-22T08:35:54Z", "hours": 4.0375, "text": "created the remaing screens, and improved the ui"}, {"post_id": 51533, "ts": "2026-08-21T09:22:21Z", "hours": 4.6594, "text": "yoo gng i am now focusing on the ui, i chose the koala as my mascot 🐨🐨🐨🐨"}, {"post_id": 47642, "ts": "2026-08-15T17:48:54Z", "hours": 4.6103, "text": "yoo the app is complete, i added all the functionality, optimized , added dark theme and other custumisations…….now the only thigh left is to put it in google playstore"}, {"post_id": 47101, "ts": "2026-08-14T18:57:14Z", "hours": 5.5983, "text": "yoo gng i have now also made it into an app for android …..i changed the ui in the android mode, i am also palnning to mmake a big chnage in the ui of the website..but yeah slow and steady wins the race 😭😭😭😭😭😭😭😭..so tired 😭😭"}, {"post_id": 45275, "ts": "2026-08-11T16:57:27Z", "hours": 12.1869, "text": "yoo gng… just improved the ai"}, {"post_id": 38293, "ts": "2026-07-31T16:40:01Z", "hours": 0.4378, "text": "gng…i have made this demo video, lol i was my first video editing took me like 4hr, oh well i think it’s goo…..here is the link https://youtu.be/Adcq0bVabeU?si=SW5BLNibwAD3Nauz"}, {"post_id": 37840, "ts": "2026-07-30T20:04:03Z", "hours": 1.3114, "text": "it can now generate maps"}, {"post_id": 37589, "ts": "2026-07-30T12:53:01Z", "hours": 2.155, "text": "added the betatesting form, only allowed email will be able to test it……..just send the email and i will allow u all as soon as i can"}, {"post_id": 37015, "ts": "2026-07-29T14:10:48Z", "hours": 2.7511, "text": "improved the ui, a code challanges option….. basically it’s like a google collab ui where u wrtie ure code and the ai checks it"}, {"post_id": 36930, "ts": "2026-07-29T10:22:33Z", "hours": 1.3236, "text": "just optimised the platform for phones also, it still needs refinements 😭😭😭😭, if somone finds any bugs pls dm me on slack @Praknoor"}, {"post_id": 36502, "ts": "2026-07-28T17:33:43Z", "hours": 7.22, "text": "just added the voice tutor option"}, {"post_id": 35696, "ts": "2026-07-27T09:34:27Z", "hours": 1.2364, "text": "guys just made it online, i am now working on the roadmap creation, and adding a voice tutor……..here is the link: https://aether-sooty-one.vercel.app/ ………..it’s not quite ready for testing, it will be soon all the basic functions work, music creation only the musicgen option( since i am broke😭😭😭😭 i am using a downloaded llm on collab linked it there, and as u all know collab after sometime it closes so that might not work, if u want to try pls dm on slack @Praknoor ) …i am also opened to suggetions"}, {"post_id": 35416, "ts": "2026-07-26T20:10:31Z", "hours": 2.0853, "text": "wired up with supabase the dashboard, created the chat….soon i’ll make it online for testing…..but rn i’m so tired so i’m gonna do it tomorrow🤣😭"}, {"post_id": 35083, "ts": "2026-07-26T09:07:47Z", "hours": 16.7844, "text": "i ahve created the ui and wired up the pages…dman it took me so much just to design the landing page and then the dashboard 😭😭"}]...
|
Title: Aether by @Praknoor | Stardance
Devlogs:
i Title: Aether by @Praknoor | Stardance
Devlogs:
i ahve created the ui and wired up the pages…dman it took me so much just to design the landing page and then the dashboard 😭😭
wired up with supabase the dashboard, created the chat….soon i’ll make it online for testing…..but rn i’m so tired so i’m gonna do it tomorrow🤣😭
guys just made it online, i am now working on the roadmap creation, and adding a voice tutor……..here is the link: https://aether-sooty-one.vercel.app/ ………..it’s not quite ready for testing, it will be soon all the basic functions work, music creation only the musicgen option( since i am broke😭😭😭😭 i am using a downloaded llm on collab linked it there, and as u all know collab after sometime it closes so that might not work, if u want to try pls dm on slack @Praknoor ) …i am also opened to suggetions
just added the voice tutor option
just optimised the platform for phones also, it still needs refinements 😭😭😭😭, if somone finds any bugs pls dm me on slack @Praknoor
improved the ui, a code challanges option….. basically it’s like a google collab ui where u wrtie ure code and the ai checks it
added the betatesting form, only allowed email will be able to test it……..just send the email and i will allow u all as soon as i can
it can now generate maps
gng…i have made this demo video, lol i was my first video editing took me like 4hr, oh well i think it’s goo…..here is the link https://youtu.be/Adcq0bVabeU?si=SW5BLNibwAD3Nauz
yoo gng… just improved the ai
yoo gng i have now also made it into an app for android …..i changed the ui in the android mode, i am also palnning to mmake a big chnage in the ui of the website..but yeah slow and steady wins the race 😭😭😭😭😭😭😭😭..so tired 😭😭
yoo the app is complete, i added all the functionality, optimized , added dark theme and other custumisations…….now the only thigh left is to put it in google playstore
yoo gng i am now focusing on the ui, i chose the koala as my mascot 🐨🐨🐨🐨
created the remaing screens, and improved the ui
yoo gng added more screens… and the ui is now complete….. it’s ready to use gng, i am soon gonna publish it
improved the website, and also made the app more optimized
reworked on the css
improved also the layout of the dahboard
just improved the app, gave the app the style of the website, also i made some art, but it’s 🤮 rn…but give some tmie and it will be great
improved the website, the tutors languigeand added the poption to custumize the look
Ships:
yoo gng… so this is v1 of my platform, pls join me in this journey….basicly it’s a platform where the studets can learn anythigh, i am also planning to add other subjects like cad, design but i am still figuring out……….to use the platform u need to first register as betatesters , then i will approve u and then u can use the platform...
|
1792990210.0285184
|
1793076610.0285184
|
|
42860
|
Devlogs+ by @armadillomike | Stardance
|
armadillomike
|
0
|
90.31
|
0
|
[]
|
[{"post_id": 81135, "ts": "202 [{"post_id": 81135, "ts": "2026-10-20T01:00:52Z", "hours": 1.2564, "text": "I fully added docker support for both the backend and frontend. Both repos have dockerfiles and the main repo has a docker-compose file and env files for both in the parent repo. Since i am going to use this from now it helps me replicate what is on the server side."}, {"post_id": 78214, "ts": "2026-10-10T00:10:45Z", "hours": 1.1578, "text": "When creating a devlog it now automatically adds time spent since the last devlog/project creation. It shows the time spent as soon as you select a project in the devlog creation menu. Also, in the project page it shows time spent."}, {"post_id": 76543, "ts": "2026-10-03T21:50:14Z", "hours": 5.5261, "text": "There is now a full system (on the backend) to add time to a devlog. The wakatime part was way easier to implement as you could just use oauth to get time spent, but hackatime your had to get both the user id and api key just to get the time spent. That being said, there are also new routes to get the time since the last devlog (or since 1900 if there is not one)."}, {"post_id": 74196, "ts": "2026-09-26T22:06:39Z", "hours": 6.7117, "text": "I have added full wakatime/hackatime support to the website. Once your Hackatime/Wakatime accounts are connected you can connect time project to Devlog+ projects. Once those are connected you can view all time logged for projects. This was one of the hardest parts to setup as when I updated what the api expected on the backend, i kept forgetting to update what the frontend was sending."}, {"post_id": 68905, "ts": "2026-09-16T00:37:46Z", "hours": 3.8442, "text": "I have made it so you can link your hackatime and wakatime account. There are buttons on your profile that redirect to oauth pages for their respective platforms. Once connected the button will change to disconnect hackatime/wakatime"}, {"post_id": 66286, "ts": "2026-09-12T01:08:10Z", "hours": 2.5411, "text": "I have unified the time tracking and added the ability to add time spent to both projects and devlogs. By unifying the time spent It is way easier to get time spent and other factors. I will soon implement all of the stuff I have worked on to the frontend."}, {"post_id": 63152, "ts": "2026-09-06T19:54:01Z", "hours": 2.5064, "text": "I have added support for wakatime. Just like the hackatime integration it only has the api routes right now."}, {"post_id": 61171, "ts": "2026-09-03T23:30:38Z", "hours": 1.8917, "text": "I have added hackatime support (kinda) I have only added it to the backend so if you somehow call the backend (i have CORS) you can link your hackatime account and view your projects"}, {"post_id": 58498, "ts": "2026-08-30T22:31:38Z", "hours": 0.8897, "text": "I have updated the nav bar to be more stylish. I found that react router has a NavLink component which is designed for navigation panels."}, {"post_id": 57755, "ts": "2026-08-30T01:09:14Z", "hours": 1.1883, "text": "I have made it easier to add a collaborator for a project. Instead of entering the user id, you now enter the users email. This is in both the add and remove collaborator forms."}, {"post_id": 56967, "ts": "2026-08-29T00:42:18Z", "hours": 0.8475, "text": "I have made some changes to the collaborator pages. Instead of user ids, it now displays their display name. I also added back buttons to most form."}, {"post_id": 56280, "ts": "2026-08-27T23:45:54Z", "hours": 0.3936, "text": "I have added a small QoL update to the unpublished devlogs page, before the devlogs publish and edit button were not part of the devlog card and you had a hard time knowing what devlog it was for, now the devlog info, publish and edit button are all grouped together."}, {"post_id": 55284, "ts": "2026-08-27T00:39:28Z", "hours": 0.9608, "text": "I added a small improvement to the create a devlog page. Instead of inputting a devlog id, you can now click on a dropdown that shows all the projects you own/collaborate on. Even though this is quite small, I think it will be a big QoL update."}, {"post_id": 54837, "ts": "2026-08-26T00:20:03Z", "hours": 0.7464, "text": "You can now view the projects a user has made! Below the users info on their page there is a section with all their projects. The backend is essentially just the get projects route but instead of /projects it is /projects/user/user_id"}, {"post_id": 53456, "ts": "2026-08-24T00:54:49Z", "hours": 3.6408, "text": "I have fully added a system to reset your password. Using the previously setup resend service I setup the ability to get sent password reset emails to your email. Inside the email there is a link to the password reset form that asks for your new password twice. To request a password reset email there is a link on the bottom of the login page that redirects to the reset page."}, {"post_id": 50706, "ts": "2026-08-20T01:11:18Z", "hours": 2.2603, "text": "I setup resend for email sending. I chose to use a subdomain (email.devlogs.plus) instead of the base domain because if its reputation is lowered it wont affect the base domain, only the subdomain. I tested it out with some help from my little brother."}, {"post_id": 48594, "ts": "2026-08-17T01:34:45Z", "hours": 1.3717, "text": "I have added a way to change your password. There is a new button on your user page that redirects to a password change form. The form requires your old password and the new password."}, {"post_id": 48485, "ts": "2026-08-16T21:09:45Z", "hours": 0.3103, "text": "I have setup an actual domain for Devlogs+ instead of the provided render domain ( https://devlogs-plus-frontend.onrender.com ) I have bought https://devlogs.plus . Nothing in the codebase itself has really changed except for some simple bug changes."}, {"post_id": 47829, "ts": "2026-08-16T01:34:33Z", "hours": 1.3636, "text": "I added page titles to all (it think) pages across Devlogs+. And by everything I mean every component that renders a full page. I also added a favicon to look more ✨professional✨"}, {"post_id": 47720, "ts": "2026-08-15T20:22:50Z", "hours": 0.7208, "text": "I fixed a couple small bugs that stem from deleting users. The first was one where the user card was not showing for deleted users which was kinda easy to fix. The second one was on the backend where the user id 0 (which is for deleted users) was not getting made. It was like that because the deployed backend uses Gunicorn instead of the Flask dev server (which I was using) uses a different way to start up the server."}, {"post_id": 47242, "ts": "2026-08-15T01:13:46Z", "hours": 1.9656, "text": "I have added the ability for users to delete their accounts. Deleting ones account removes their account, sets the user id for projects and devlogs to 0, and removes them as a collaborator"}, {"post_id": 46642, "ts": "2026-08-14T01:30:55Z", "hours": 0.6589, "text": "I added another OAuth option, HackClub! a new user can now sign up with their HackClub account (if they have one) or login (if the emails match) I will soon make it so you can link accounts to existing accounts even if the email does not match"}, {"post_id": 46570, "ts": "2026-08-13T21:57:34Z", "hours": 2.3122, "text": "I have implemented a system to login/register with Github. I chose to use Authlib for the OAuth implementation beacuse if I want to (hint hint) I can easily add other OAuth systems."}, {"post_id": 45965, "ts": "2026-08-12T19:48:34Z", "hours": 2.5303, "text": "I added a system to upload avatars and add them to your user page. It currently uses hackclub cdn to upload the files. I have also added a default avatar for anybody that has not set an avatar. Avatar images have been added to basically everything that uses a user. User page User card Your user page (/me) Edit page On the edit page it is instead used a preview window."}, {"post_id": 45407, "ts": "2026-08-11T20:40:10Z", "hours": 1.1653, "text": "I finally added a feed for devlogs. It works by using the route provided by the backend, getting the devlog id, using getSingleProject to get the rest of the details and then puts it all in a DevlogCard. The feed shows all the devlogs posted in order of recency across all projects (As long as they are published)"}, {"post_id": 44865, "ts": "2026-08-10T21:59:46Z", "hours": 1.4372, "text": "I added a couple things A seperate page for each user A card for each user The card for each user displays the display name and user id The user page shows everything (including email) The user card shows up on the individual pages for devlogs and projects"}, {"post_id": 44344, "ts": "2026-08-10T01:21:59Z", "hours": 1.4228, "text": "I added 2 things to the frontend a page to view your own info a page to edit your info. On the backend i added a bit more then 2 Get a users info by email Get a users info by user id Edit your own user info I will soon make it so you can view other peoples profiles (thats what the backend stuff is for)"}, {"post_id": 44217, "ts": "2026-08-09T20:39:48Z", "hours": 1.9647, "text": "I did a bit more styling fixes and also added field validation The field validation i added was to the login and register pages to only allow valid emails, and also to add collaborator and make devlog page to only allow numbers for things like project id and user id"}, {"post_id": 43570, "ts": "2026-08-08T21:58:59Z", "hours": 1.2872, "text": "More styling I styling the link on the navbar, Styled the project cards to match the devlogs card, Added a border to both of the devlog and project cards, Styled the markdown renderer, And fixed some styling issues like some buttons not being the new <Button> component"}, {"post_id": 43489, "ts": "2026-08-08T19:48:09Z", "hours": 2.3425, "text": "I started with some basic styling for the site. The color theme I choose to use was nord. I choose it because I like the blue. The styles that I did was basic site wide styling with the background and font. The font I chose was Stack Sans Text. I have also styled the input, textarea, and buttons components."}, {"post_id": 42368, "ts": "2026-08-07T01:40:11Z", "hours": 1.1581, "text": "I added the ability to remove collaborators from a project. There is a button on the project page blah blah blah New page to remove collaborators blah blah blah While making this I found a small bug because I forgot to put {} around 2 variables which broke the entire page and I didn’t spot it until 20 mins later"}, {"post_id": 42262, "ts": "2026-08-06T21:51:36Z", "hours": 1.8364, "text": "I added a way for everyone to view the collaborators for a project. Once again, there is a button on the project page that redirects to a separate page. On the collaborator page it shows the owner of the project and all the collaborator user ids."}, {"post_id": 41683, "ts": "2026-08-06T01:51:51Z", "hours": 1.4222, "text": "I added a way to add collaborators to a project. There is a button on the project page that redirects you to the page to add collaborators by their user id. Right now collaborators are just a fancy title but soon they will be able to post devlogs. You can view your own user id from the home page now."}, {"post_id": 40991, "ts": "2026-08-04T21:20:48Z", "hours": 0.3333, "text": "I just added a very simple feature. There is now a button on the unpublished devlogs page that brings you to the edit page. You could still edit devlogs that were unpublished but now it is easier to edit them."}, {"post_id": 40951, "ts": "2026-08-04T20:14:58Z", "hours": 1.2297, "text": "I added a way for you to unpublish your devlogs. On the devlog page if you are the owner. Clicking the button redirects you to a page where you can unpublish it. When you unpublish it (without and error) it redirects you backwards. After that you can republish it from the unpublished devlog page."}, {"post_id": 40486, "ts": "2026-08-04T01:37:14Z", "hours": 1.3139, "text": "I made it so you can now edit devlogs You can edit a devlog you made by the url /projects/projectid/devlogs/devlogid/edit You can change the title and the markdown body. There is also a button on the devlog page the shows up if you are the owner."}, {"post_id": 39810, "ts": "2026-08-03T01:31:45Z", "hours": 1.2967, "text": "I added a way to view a full devlog on its on specific page. The page has the devlogs title, body, published at, project id, and devlog id. You can also get to this page by clicking on the individual devlogs on the project page"}, {"post_id": 39213, "ts": "2026-08-02T01:08:28Z", "hours": 0.5239, "text": "I made it so you can add multiple lines to the body for projects and devlogs by changing the to I also added a markdown renderer to render the markdown correctly."}, {"post_id": 39165, "ts": "2026-08-01T22:13:48Z", "hours": 23.975, "text": "Bringing over time I am bringing over all my time that was spent on unfold as it ended $ next to it means backend only route Features Auth Login Register Logout View your info $ Projects Create a project View all projects Get singular project Edit a project Delete a project Add a collaborator to the project $ Remove a collaborator $ Devlogs Get all devlogs for a project Create a devlog Get singular devlog $ Edit a devlog $ Publish a devlog Unpublish a devlog $ Get your unpublished devlogs"}]...
|
Title: Devlogs+ by @armadillomike | Stardance
Dev Title: Devlogs+ by @armadillomike | Stardance
Devlogs:
Bringing over time I am bringing over all my time that was spent on unfold as it ended $ next to it means backend only route Features Auth Login Register Logout View your info $ Projects Create a project View all projects Get singular project Edit a project Delete a project Add a collaborator to the project $ Remove a collaborator $ Devlogs Get all devlogs for a project Create a devlog Get singular devlog $ Edit a devlog $ Publish a devlog Unpublish a devlog $ Get your unpublished devlogs
I made it so you can add multiple lines to the body for projects and devlogs by changing the to I also added a markdown renderer to render the markdown correctly.
I added a way to view a full devlog on its on specific page. The page has the devlogs title, body, published at, project id, and devlog id. You can also get to this page by clicking on the individual devlogs on the project page
I made it so you can now edit devlogs You can edit a devlog you made by the url /projects/projectid/devlogs/devlogid/edit You can change the title and the markdown body. There is also a button on the devlog page the shows up if you are the owner.
I added a way for you to unpublish your devlogs. On the devlog page if you are the owner. Clicking the button redirects you to a page where you can unpublish it. When you unpublish it (without and error) it redirects you backwards. After that you can republish it from the unpublished devlog page.
I just added a very simple feature. There is now a button on the unpublished devlogs page that brings you to the edit page. You could still edit devlogs that were unpublished but now it is easier to edit them.
I added a way to add collaborators to a project. There is a button on the project page that redirects you to the page to add collaborators by their user id. Right now collaborators are just a fancy title but soon they will be able to post devlogs. You can view your own user id from the home page now.
I added a way for everyone to view the collaborators for a project. Once again, there is a button on the project page that redirects to a separate page. On the collaborator page it shows the owner of the project and all the collaborator user ids.
I added the ability to remove collaborators from a project. There is a button on the project page blah blah blah New page to remove collaborators blah blah blah While making this I found a small bug because I forgot to put {} around 2 variables which broke the entire page and I didn’t spot it until 20 mins later
I started with some basic styling for the site. The color theme I choose to use was nord. I choose it because I like the blue. The styles that I did was basic site wide styling with the background and font. The font I chose was Stack Sans Text. I have also styled the input, textarea, and buttons components.
More styling I styling the link on the navbar, Styled the project cards to match the devlogs card, Added a border to both of the devlog and project cards, Styled the markdown renderer, And fixed some styling issues like some buttons not being the new <Button> component
I did a bit more styling fixes and also added field validation The field validation i added was to the login and register pages to only allow valid emails, and also to add collaborator and make devlog page to only allow numbers for things like project id and user id
I added 2 things to the frontend a page to view your own info a page to edit your info. On the backend i added a bit more then 2 Get a users info by email Get a users info by user id Edit your own user info I will soon make it so you can view other peoples profiles (thats what the backend stuff is for)
I added a couple things A seperate page for each user A card for each user The card for each user displays the display name and user id The user page shows everything (including email) The user card shows up on the individual pages for devlogs and projects
I finally added a feed for devlogs. It works by using the route provided by the backend, getting the devlog id, using getSingleProject to get the rest of the details and then puts it all in a DevlogCard. The feed shows all the devlogs posted in order of recency across all projects (As long as they are published)
I added a system to upload avatars and add them to your user page. It currently uses hackclub cdn to upload the files. I have also added a default avatar for anybody that has not set an avatar. Avatar images have been added to basically everything that uses a user. User page User card Your user page (/me) Edit page On the edit page it is instead used a preview window.
I have implemented a system to login/register with Github. I chose to use Authlib for the OAuth implementation beacuse if I want to (hint hint) I can easily add other OAuth systems.
I added another OAuth option, HackClub! a new user can now sign up with their HackClub account (if they have one) or login (if the emails match) I will soon make it so you can link accounts to existing accounts even if the email does not match
I have added the ability for users to delete their accounts. Deleting ones account removes their account, sets the user id for projects and devlogs to 0, and removes them as a collaborator
I fixed a couple small bugs that stem from deleting users. The first was one where the user card was not showing for deleted users which was kinda easy to fix. The second one was on the backend where the user id 0 (which is for deleted users) was not getting made. It was like that because the deployed backend uses Gunicorn instead of the Flask dev server (which I was using) uses a different way to start up the server.
I added page titles to all (it think) pages across Devlogs+. And by everything I mean every component that renders a full page. I also added a favicon to look more ✨professional✨
I have setup an actual domain for Devlogs+ instead of the provided render domain ( https://devlogs-plus-frontend.onrender.com ) I have bought https://devlogs.plus . Nothing in the codebase itself has really changed except for some simple bug changes.
I have added a way to change your password. There is a new button on your user page that redirects to a password change form. The form requires your old password and the new password.
I setup resend for email sending. I chose to use a subdomain (email.devlogs.plus) instead of the base domain because if its reputation is lowered it wont affect the base domain, only the subdomain. I tested it out with some help from my little brother.
I have fully added a system to reset your password. Using the previously setup resend service I setup the ability to get sent password reset emails to your email. Inside the email there is a link to the password reset form that asks for your new password twice. To request a password reset email there is a link on the bottom of the login page that redirects to the reset page.
You can now view the projects a user has made! Below the users info on their page there is a section with all their projects. The backend is essentially just the get projects route but instead of /projects it is /projects/user/user_id
I added a small improvement to the create a devlog page. Instead of inputting a devlog id, you can now click on a dropdown that shows all the projects you own/collaborate on. Even though this is quite small, I think it will be a big QoL update.
I have added a small QoL update to the unpublished devlogs page, before the devlogs publish and edit button were not part of the devlog card and you had a hard time knowing what devlog it was for, now the devlog info, publish and edit button are all grouped together.
I have made some changes to the collaborator pages. Instead of user ids, it now displays their display name. I also added back buttons to most form.
I have made it easier to add a collaborator for a project. Instead of entering the user id, you now enter the users email. This is in both the add and remove collaborator forms.
I have updated the nav bar to be more stylish. I found that react router has a NavLink component which is designed for navigation panels.
I have added hackatime support (kinda) I have only added it to the backend so if you somehow call the backend (i have CORS) you can link your hackatime account and view your projects
I have added support for wakatime. Just like the hackatime integration it only has the api routes right now.
I have unified the time tracking and added the ability to add time spent to both projects and devlogs. By unifying the time spent It is way easier to get time spent and other factors. I will soon implement all of the stuff I have worked on to the frontend.
I have made it so you can link your hackatime and wakatime account. There are buttons on your profile that redirect to oauth pages for their respective platforms. Once connected the button will change to disconnect hackatime/wakatime
I have added full wakatime/hackatime support to the website. Once your Hackatime/Wakatime accounts are connected you can connect time project to Devlog+ projects. Once those are connected you can view all time logged for projects. This was one of the hardest parts to setup as when I updated what the api expected on the backend, i kept forgetting to update what the frontend was sending.
There is now a full system (on the backend) to add time to a devlog. The wakatime part was way easier to implement as you could just use oauth to get time spent, but hackatime your had to get both the user id and api key just to get the time spent. That being said, there are also new routes to get the time since the last devlog (or since 1900 if there is not one).
When creating a devlog it now automatically adds time spent since the last devlog/project creation. It shows the time spent as soon as you select a project in the devlog creation menu. Also, in the project page it shows time spent.
I fully added docker support for both the backend and frontend. Both repos have dockerfiles and the main repo has a docker-compose file and env files for both in the parent repo. Since i am going to use this from now it helps me replicate what is on the server side....
|
1792525961.1655416
|
1793130761.1655416
|
|
65891
|
STARDUST PLZ by @inoty | Stardance
|
inoty
|
0
|
90.24
|
0
|
[]
|
[{"post_id": 83115, "ts": "202 [{"post_id": 83115, "ts": "2026-10-26T22:33:10Z", "hours": 7.2414, "text": "Save it! Save points have been added! This is a very exciting revelation indeed. I also polished up some story aspects, and come with a very sad announcement, which I’ll be making right now. The Buku Campaign Will Not Be Coming In The Demo Why? Time. This is the last week of Stardance, and I barely started work on the Campaign Yesterday, and I don’t wanna deliver some half-assed story campaign, so I’d rather just release with one than with 2 unfinished and clunky versions. Save Points?! Yes Indeed! You can save and load between 3 Save Files, This demo isn’t very long. But the full game will be, so I figured I’d add this. Secret Things There’s something you don’t know about in the caves, and let’s just say its very shiny"}, {"post_id": 82839, "ts": "2026-10-26T00:11:16Z", "hours": 11.2992, "text": "Dusty in here ain’t it? That’s right! A new Devlog after so long! And you can tell how much progress I’ve done by the hour count. So let’s waste no more time and dive in. Death. The player is now capable of dying. I added this because theyre weren’t any real stakes inside of the game, so the best solution was to add the ability to lose some of your progress. Dusty This is a preview from the actual story of the game, these aren’t test levels anymore! Main Menu I have an early beta version of the main menu, its not done at all but its getting there."}, {"post_id": 81388, "ts": "2026-10-21T03:08:37Z", "hours": 1.5489, "text": "Dialogue System Finished! A really quick update, since I wont have as much time, I have decided to git commit the current build so I can work from school, but before that. I finished the dialogue system!"}, {"post_id": 81140, "ts": "2026-10-20T01:46:13Z", "hours": 3.3508, "text": "I LOVE STONING Hey! Another short devlog, haven’t had much motivation or energy to work on this project today. BUT I have made some new spritework. I’ve made art for cave areas inside of the Bean campaign, you can see a background tile and a regular tile."}, {"post_id": 80836, "ts": "2026-10-18T23:24:55Z", "hours": 7.4903, "text": "DON’T DROP IT! Hello again! This is gonna be a short Devlog, since I’ve been mostly working on story areas or writing, so heres a really nice looking area I designed, it’ll be used for both campaigns, because I didn’t spend all that time drawing and coding for nothing!"}, {"post_id": 80278, "ts": "2026-10-17T02:40:30Z", "hours": 8.8114, "text": "HOW DO YOU WANNA PLAY?! Yes indeed, another devlog, you are NOT dreaming! Packed with content aswell, I am so excited to get into everything I’ve been working on, so let’s get cracking and dive in. Before anything, scroll to the right for a cool video! What have I been up to? Well I’ve got a working version of the dialogue system, along with some other goodies! These being, a lot of character designs! I took the time to design some more NPCs in order to make the game feel less dead, aswell as the main story being written. I only need to complete the basic cutscene system, both the campaigns, and the game will finally be completed! Will you get any spoilers? NO What’s with the 3D Model? Don’t worry about it. (Spoiler Reasons) On a serious note After this point, I won’t be going into much detail of what I’ve been doing, since I’m wrapping up production on the more technical aspects of the game, and starting to get into the main story. So Devlogs will be short and concise from now one. Conclusion Actually making progress YAY"}, {"post_id": 78871, "ts": "2026-10-11T20:44:44Z", "hours": 2.3522, "text": "Aye Mate, whatcha doin’? It’s time for a new Devlog! (Yes so soon!) This time I will be touching on the characters I have made, and why the dialogue portraits look like that. WHY ARE THEY MADE UP OF STOCK IMAGES LMAO I thought it would be really funny if the characters dialogue portraits were all just sock images stuck together and pixelated, this will certainly lead to some funny stuff going down. New Props?! I have added lots of new props, I didn’t include all of them in order to not spoil everything, but I think the ones I am showing turned out pretty cool if you ask me! Who’s “The Butcher” And why is he Russian with an Australian Accent? Augh! You know I feel about Stereotypes, I might just send you to the lab again if you pull that one again mate."}, {"post_id": 78522, "ts": "2026-10-11T02:41:30Z", "hours": 4.8483, "text": "They made us. Hello! I have decided to make devlogs more frequently, of course, at the cost of lower content amounts, no video this time sadly, but I do have something more… interesting… New Tiles 2 New Tiles have been added, I added a brick variant for the “Buku Rocks”, aswell as very shiny stone. This will be the tileset for the deeper parts of the Buku Areas. Props! I have added 2 prop examples, one normal prop, and another background prop. A pile of junk and a painting to, “Look at the world through they’re eyes”, whatever that means. Conclusion Yeah that’s really it, I’ll now sprinkle in smaller Devlogs with the big boys."}, {"post_id": 77999, "ts": "2026-10-09T04:22:29Z", "hours": 10.5611, "text": "YOU DID Whₐₜ… Ouh im so sleepy today… https://youtu.be/zQO8u43ADBw Devlog 4! This one jam packed actually, this is actually starting to look like a game, which is VERY amazing!!! I have implemented a half-done version of the lighting system! Which you can check out in the video above! What’s new?! Well, a lot is new actually, first of, this is the first preview from the Buku Side of the game, I thought it was long overdue, so here it is! I hope you really like the vibe I’ve made for their areas! I have also added a VERY early versions of NPCs, as you can see from the sleepy little Buku you can find! Along with Particles! all of this makes the game feel REALLY nice and polished, though there’s still much to do. What’s next for lighting? I want to add Terraria-Like lighting to the tiles, as I think I said before, because I simply think it would look better, and it can hide hidden paths… You may have noticed the shadows are now pixelated!!! It helps keep the style consistent. I tried to make the lighting pixelated too, but it looked pretty bad… So it was ultimately scrapped! [I did have AI do a bunch of the debugging because I suck at writing shaders] (Yeah I suffered a lot with lighting, by default it looked pale and honestly really bad, so I vibe coded a shader… yeah I know boo hoo, I still modified the script to fit my needs, but at its core it was vibe coded sadly.) NPCS?! LOOK AT THE LITTLE GUY! I haven’t really implemented the dialogue yet, but I have figured out animations! This is great for bringing life into the game, and I think it’ll add a lot of character to all the different starlings you’ll encounter through the game. Particles The particles in the preview are pretty minimal, ironically, Geometry Dash was the greatest help, I love messing around in the editor, so I had already learned the particle system from that game, which was surprisingly similar to Godot’s, so I didn’t really need any tutorials! Conclusion The project is actually starting to look like a game, and I’m starting to love working on this even more actually, I love seeing the progress from the first preview, all the way to now, I’ve learned so much in such a short amount of time."}, {"post_id": 76949, "ts": "2026-10-05T05:11:12Z", "hours": 11.3319, "text": "Please… I need it… :( Hey! Didn’t expect to see you so soon, but I have come with updates! It’s not much, but this game is slowly starting to come to life! I’ve put a lot more effort into the video this time, so make sure to watch it! https://youtu.be/TutXHCyREEI What are the new features? You know how I added an actual Camera last devlog? Yeah that’s all gone, it has been completely rewritten, to make way for CAMERA CONTROLS!!!, this will allow me to add so much more character to the levels, and lays the groundwork for cutscenes! I have also implemented a very early version of lighting! It’s still super early, but you can slowly start to see the vision of this games art direction, which I find very exciting! Camera Controls Yes this is gonna be it’s own section, I didn’t recode everything immediately after coding it for nothing. So the camera controls work by having a CollisionObject2D act as a hitbox to detect when your inside it, which will activate certain options the camera controls have. Which I will get into, right now..? So, as you can see from the video, I can control both zoom, and the focus point of the camera, for the zoom it’s super simple, just change one value, but the static camera is a little bit more interesting… I added a Marker2D attached to a script, which I can just place anywhere in the level, which has an assigned ID, so if the collision box has an ID of 3, and the static camera is enabled, it’ll look for the Markdown2D with the same ID, to anchor the camera to it (I know it’s super simple, but I’m still a beginner and I’m proud of it, also sorry if I suck at explaining) What’s next for the lighting system? I want to add shadows inside of the tiles, kind of like Terraria mainly to hide my horrible tiling skills, and to hide stuff like secret tunnels, I also want to make the shadows pixelated, and be able to add pretty bright lights all around (yeah that dosen’t work yet…) NPCs?! I have designed a few NPCs in advance, I have no idea how I’ll use the police officer, so feel free to leave ideas in the comments, BUT I do know how I’ll just the 2 other guys, they are scientist, who both created the cursor characters to steal stardust from the opposite team! How amazing Cutscenes?! This will be the last thing I need to implement (Not really I’m lying) before I start working on the actual levels and main story of the game, I just realised while writing this I still need to make the Stardust Stealing work, add bombs, and add levers and backgrounds, so maybe we aren’t fully there yet. Conclusion I still have SO MUCH left to do, in such a short amount of time, this week I will have more time, so I hope to have the lighting system done by tomorrow! Yippee!"}, {"post_id": 76245, "ts": "2026-10-02T20:52:53Z", "hours": 14.2336, "text": "GIVE IT TO ME, NOW!!!! | Devlog 2 Hello, it’s me again, I don’t have much to post this time, I’ve been very busy (and tired), so I haven’t actually implemented much into this game, on top of multiple issues I will talk about during this devlog. https://youtu.be/S8Qy3RnZ0OE Cusual Game Music 07 by Ivan Fomin Insane Mess I Made I have a mess in my Hackatime Dashboard, this project is split into like 3, and it detected a long Opencode Debugging Session (I turned of Wackatime (I think) for it to not track this, but it still did, 2 separate times, so now it says my code is 30% AI generated, when like all it touched was Hyprland Config Files, and other stuff relating to my system, so that’s fun I guess. I have been struggling to keep this up, mainly because I don’t always have time to code, but since I joined so late I’ve gotta put in the time and effort, which is fair I guess. (I honestly have no idea how to fix this please help me) Progress Report Not much has been done, I implemented new tile types, (they connect now!) and implemented a new category of interactable objects within the game Items!, seems basic, but for a beginner like me it was pretty hard to implement, keep in mind this is like my 2nd Godot Game, so I am NOT skilled at all, the plan is to eventually get dialogue and fully working levels ready, but its gonna be a huge crunch, especially with one month left (I would have never made it with the original time we had) Plans for the future I hope I can actually finish both this project and Riftbook in time, so I can finally rest and go to sleep or something I don’t know. Though I must admit, I am more excited for this project since I enjoy the level making process, making sprites, writing the dialogue etc. The only real hard part for me is actually coding (Because I don’t know the syntax very well) Conclusion I need to finish this project incredibly fast, promote it, make a 3rd project for that certificate, finish Riftbook, write all the dialogue, make all the levels, and figure out all the syntax in 30 days (While being super busy) It’s gonna be on hell of a ride, so I hope I don’t lose my mind while working on this. I am very tired, and things are not going my way, but I’ll keep pushing on, please feel free to help if you can PLEASE. Additional Video Notes Oh my god, I tried to act Text to Kdenlive, I have been “using it” for a while now (I haven’t been doing much other than dragging and dropping clips) I come from DaVinci Resolve, so I’m used to that workflow but holy hell is it different, I decided not to do much because the video is better off without my terrible Kdenlive skills OH YEAH, and I lost my Stardance Streak >:( (Only reason I uploaded a devlog today, I wanted to do more)"}, {"post_id": 74292, "ts": "2026-09-27T04:11:53Z", "hours": 7.1697, "text": "GIVE ME STARTDUST PLEASE | Devlog 1 https://youtu.be/C4Bo1hGNqnY Hello! It’s me, your personal helper friend! Today I want to talk about my new GAME! In this game, you play as a cursor who wants to steal stardust, the games story will change depending on if your a Bean, or a Buku, but the mean premise is the same. Today I coded the movement, added some physics objects, and made some debug tiles! Asset Drawing Asset drawing was pretty fun, I loved making the little star beans, I havent done much art for the Bukus, but I will do some stuff some Thing that made me consider castration I was trying to make a simple system where if you ran into a tile too fast, you would bounce, turns out, this made me rewrite the ENTIRE movement code, so now instead of tracking your mouse like a normal person would do, it creates a virtual mouse for you, why? Because I thought the issue was that the player was trying to head for the mouse while it was bouncing, so it wouldn’t work, turns out, this wasn’t really the issue, and I wasted my time. HAHHAHAHAHHA Conclusion I want to die (No but really this was a really fun prototype to make, and I look foward to completing this game! Check out the video too!)"}]...
|
Title: STARDUST PLZ by @inoty | Stardance
Devlogs Title: STARDUST PLZ by @inoty | Stardance
Devlogs:
GIVE ME STARTDUST PLEASE | Devlog 1 https://youtu.be/C4Bo1hGNqnY Hello! It’s me, your personal helper friend! Today I want to talk about my new GAME! In this game, you play as a cursor who wants to steal stardust, the games story will change depending on if your a Bean, or a Buku, but the mean premise is the same. Today I coded the movement, added some physics objects, and made some debug tiles! Asset Drawing Asset drawing was pretty fun, I loved making the little star beans, I havent done much art for the Bukus, but I will do some stuff some Thing that made me consider castration I was trying to make a simple system where if you ran into a tile too fast, you would bounce, turns out, this made me rewrite the ENTIRE movement code, so now instead of tracking your mouse like a normal person would do, it creates a virtual mouse for you, why? Because I thought the issue was that the player was trying to head for the mouse while it was bouncing, so it wouldn’t work, turns out, this wasn’t really the issue, and I wasted my time. HAHHAHAHAHHA Conclusion I want to die (No but really this was a really fun prototype to make, and I look foward to completing this game! Check out the video too!)
GIVE IT TO ME, NOW!!!! | Devlog 2 Hello, it’s me again, I don’t have much to post this time, I’ve been very busy (and tired), so I haven’t actually implemented much into this game, on top of multiple issues I will talk about during this devlog. https://youtu.be/S8Qy3RnZ0OE Cusual Game Music 07 by Ivan Fomin Insane Mess I Made I have a mess in my Hackatime Dashboard, this project is split into like 3, and it detected a long Opencode Debugging Session (I turned of Wackatime (I think) for it to not track this, but it still did, 2 separate times, so now it says my code is 30% AI generated, when like all it touched was Hyprland Config Files, and other stuff relating to my system, so that’s fun I guess. I have been struggling to keep this up, mainly because I don’t always have time to code, but since I joined so late I’ve gotta put in the time and effort, which is fair I guess. (I honestly have no idea how to fix this please help me) Progress Report Not much has been done, I implemented new tile types, (they connect now!) and implemented a new category of interactable objects within the game Items!, seems basic, but for a beginner like me it was pretty hard to implement, keep in mind this is like my 2nd Godot Game, so I am NOT skilled at all, the plan is to eventually get dialogue and fully working levels ready, but its gonna be a huge crunch, especially with one month left (I would have never made it with the original time we had) Plans for the future I hope I can actually finish both this project and Riftbook in time, so I can finally rest and go to sleep or something I don’t know. Though I must admit, I am more excited for this project since I enjoy the level making process, making sprites, writing the dialogue etc. The only real hard part for me is actually coding (Because I don’t know the syntax very well) Conclusion I need to finish this project incredibly fast, promote it, make a 3rd project for that certificate, finish Riftbook, write all the dialogue, make all the levels, and figure out all the syntax in 30 days (While being super busy) It’s gonna be on hell of a ride, so I hope I don’t lose my mind while working on this. I am very tired, and things are not going my way, but I’ll keep pushing on, please feel free to help if you can PLEASE. Additional Video Notes Oh my god, I tried to act Text to Kdenlive, I have been “using it” for a while now (I haven’t been doing much other than dragging and dropping clips) I come from DaVinci Resolve, so I’m used to that workflow but holy hell is it different, I decided not to do much because the video is better off without my terrible Kdenlive skills OH YEAH, and I lost my Stardance Streak >:( (Only reason I uploaded a devlog today, I wanted to do more)
Please… I need it… :( Hey! Didn’t expect to see you so soon, but I have come with updates! It’s not much, but this game is slowly starting to come to life! I’ve put a lot more effort into the video this time, so make sure to watch it! https://youtu.be/TutXHCyREEI What are the new features? You know how I added an actual Camera last devlog? Yeah that’s all gone, it has been completely rewritten, to make way for CAMERA CONTROLS!!!, this will allow me to add so much more character to the levels, and lays the groundwork for cutscenes! I have also implemented a very early version of lighting! It’s still super early, but you can slowly start to see the vision of this games art direction, which I find very exciting! Camera Controls Yes this is gonna be it’s own section, I didn’t recode everything immediately after coding it for nothing. So the camera controls work by having a CollisionObject2D act as a hitbox to detect when your inside it, which will activate certain options the camera controls have. Which I will get into, right now..? So, as you can see from the video, I can control both zoom, and the focus point of the camera, for the zoom it’s super simple, just change one value, but the static camera is a little bit more interesting… I added a Marker2D attached to a script, which I can just place anywhere in the level, which has an assigned ID, so if the collision box has an ID of 3, and the static camera is enabled, it’ll look for the Markdown2D with the same ID, to anchor the camera to it (I know it’s super simple, but I’m still a beginner and I’m proud of it, also sorry if I suck at explaining) What’s next for the lighting system? I want to add shadows inside of the tiles, kind of like Terraria mainly to hide my horrible tiling skills, and to hide stuff like secret tunnels, I also want to make the shadows pixelated, and be able to add pretty bright lights all around (yeah that dosen’t work yet…) NPCs?! I have designed a few NPCs in advance, I have no idea how I’ll use the police officer, so feel free to leave ideas in the comments, BUT I do know how I’ll just the 2 other guys, they are scientist, who both created the cursor characters to steal stardust from the opposite team! How amazing Cutscenes?! This will be the last thing I need to implement (Not really I’m lying) before I start working on the actual levels and main story of the game, I just realised while writing this I still need to make the Stardust Stealing work, add bombs, and add levers and backgrounds, so maybe we aren’t fully there yet. Conclusion I still have SO MUCH left to do, in such a short amount of time, this week I will have more time, so I hope to have the lighting system done by tomorrow! Yippee!
YOU DID Whₐₜ… Ouh im so sleepy today… https://youtu.be/zQO8u43ADBw Devlog 4! This one jam packed actually, this is actually starting to look like a game, which is VERY amazing!!! I have implemented a half-done version of the lighting system! Which you can check out in the video above! What’s new?! Well, a lot is new actually, first of, this is the first preview from the Buku Side of the game, I thought it was long overdue, so here it is! I hope you really like the vibe I’ve made for their areas! I have also added a VERY early versions of NPCs, as you can see from the sleepy little Buku you can find! Along with Particles! all of this makes the game feel REALLY nice and polished, though there’s still much to do. What’s next for lighting? I want to add Terraria-Like lighting to the tiles, as I think I said before, because I simply think it would look better, and it can hide hidden paths… You may have noticed the shadows are now pixelated!!! It helps keep the style consistent. I tried to make the lighting pixelated too, but it looked pretty bad… So it was ultimately scrapped! [I did have AI do a bunch of the debugging because I suck at writing shaders] (Yeah I suffered a lot with lighting, by default it looked pale and honestly really bad, so I vibe coded a shader… yeah I know boo hoo, I still modified the script to fit my needs, but at its core it was vibe coded sadly.) NPCS?! LOOK AT THE LITTLE GUY! I haven’t really implemented the dialogue yet, but I have figured out animations! This is great for bringing life into the game, and I think it’ll add a lot of character to all the different starlings you’ll encounter through the game. Particles The particles in the preview are pretty minimal, ironically, Geometry Dash was the greatest help, I love messing around in the editor, so I had already learned the particle system from that game, which was surprisingly similar to Godot’s, so I didn’t really need any tutorials! Conclusion The project is actually starting to look like a game, and I’m starting to love working on this even more actually, I love seeing the progress from the first preview, all the way to now, I’ve learned so much in such a short amount of time.
They made us. Hello! I have decided to make devlogs more frequently, of course, at the cost of lower content amounts, no video this time sadly, but I do have something more… interesting… New Tiles 2 New Tiles have been added, I added a brick variant for the “Buku Rocks”, aswell as very shiny stone. This will be the tileset for the deeper parts of the Buku Areas. Props! I have added 2 prop examples, one normal prop, and another background prop. A pile of junk and a painting to, “Look at the world through they’re eyes”, whatever that means. Conclusion Yeah that’s really it, I’ll now sprinkle in smaller Devlogs with the big boys.
Aye Mate, whatcha doin’? It’s time for a new Devlog! (Yes so soon!) This time I will be touching on the characters I have made, and why the dialogue portraits look like that. WHY ARE THEY MADE UP OF STOCK IMAGES LMAO I thought it would be really funny if the characters dialogue portraits were all just sock images stuck together and pixelated, this will certainly lead to some funny stuff going down. New Props?! I have added lots of new props, I didn’t include all of them in order to not spoil everything, but I think the ones I am showing turned out pretty cool if you ask me! Who’s “The Butcher” And why is he Russian with an Australian Accent? Augh! You know I feel about Stereotypes, I might just send you to the lab again if you pull that one again mate.
HOW DO YOU WANNA PLAY?! Yes indeed, another devlog, you are NOT dreaming! Packed with content aswell, I am so excited to get into everything I’ve been working on, so let’s get cracking and dive in. Before anything, scroll to the right for a cool video! What have I been up to? Well I’ve got a working version of the dialogue system, along with some other goodies! These being, a lot of character designs! I took the time to design some more NPCs in order to make the game feel less dead, aswell as the main story being written. I only need to complete the basic cutscene system, both the campaigns, and the game will finally be completed! Will you get any spoilers? NO What’s with the 3D Model? Don’t worry about it. (Spoiler Reasons) On a serious note After this point, I won’t be going into much detail of what I’ve been doing, since I’m wrapping up production on the more technical aspects of the game, and starting to get into the main story. So Devlogs will be short and concise from now one. Conclusion Actually making progress YAY
DON’T DROP IT! Hello again! This is gonna be a short Devlog, since I’ve been mostly working on story areas or writing, so heres a really nice looking area I designed, it’ll be used for both campaigns, because I didn’t spend all that time drawing and coding for nothing!
I LOVE STONING Hey! Another short devlog, haven’t had much motivation or energy to work on this project today. BUT I have made some new spritework. I’ve made art for cave areas inside of the Bean campaign, you can see a background tile and a regular tile.
Dialogue System Finished! A really quick update, since I wont have as much time, I have decided to git commit the current build so I can work from school, but before that. I finished the dialogue system!
Dusty in here ain’t it? That’s right! A new Devlog after so long! And you can tell how much progress I’ve done by the hour count. So let’s waste no more time and dive in. Death. The player is now capable of dying. I added this because theyre weren’t any real stakes inside of the game, so the best solution was to add the ability to lose some of your progress. Dusty This is a preview from the actual story of the game, these aren’t test levels anymore! Main Menu I have an early beta version of the main menu, its not done at all but its getting there.
Save it! Save points have been added! This is a very exciting revelation indeed. I also polished up some story aspects, and come with a very sad announcement, which I’ll be making right now. The Buku Campaign Will Not Be Coming In The Demo Why? Time. This is the last week of Stardance, and I barely started work on the Campaign Yesterday, and I don’t wanna deliver some half-assed story campaign, so I’d rather just release with one than with 2 unfinished and clunky versions. Save Points?! Yes Indeed! You can save and load between 3 Save Files, This demo isn’t very long. But the full game will be, so I figured I’d add this. Secret Things There’s something you don’t know about in the caves, and let’s just say its very shiny...
|
1793091253.4326458
|
1793696053.4326458
|
|
22643
|
station-siege by @Abbos | Stardance
|
Abbos
|
1
|
90.0
|
1130
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T11:46:37Z", "hours": 90.0, "multiplier": 15.55, "payout": 1130, "blessing": "neutral", "text": "I made Station Siege, a first-person zombie shooter set on an abandoned space station. You fight through 10 waves of zombies, earn gold for kills, and spend it on weapons, ammo, and unlocking doors to different rooms. It’s built in Godot 4.7 and runs in the browser. The hardest part was zombie pathfinding. Zombies kept getting stuck in their spawn rooms, and one stuck zombie was enough to stop the next wave from starting. It turned out the doors were baked into the navigation mesh as closed, so even with a door open, the zombies had no path out. I rebuilt the navmesh without doors and barricades, and added a backup that despawns any zombie that makes no progress for 20 seconds. Getting it onto the web was the other big challenge. The first export was 2.3 GB, so I cut unused models and switched textures to a web-safe format to get it under itch’s 200 MB limit. I’m proudest of the atmosphere: the dark corridors, the barricades zombies tear through, and the moment a wave starts pouring in from several directions at once. How to test: Open the itch link in Chrome or Edge on a desktop computer. It doesn’t work on phones. Click Start, then click inside the game window to lock the mouse. Controls: WASD to move, Shift to sprint, left click to shoot, R to reload, 1-3 to switch weapons, E to interact or buy, hold F to repair a barricade, Esc to pause. They’re also on the Controls screen in the main menu. The first load can take a little while because the game is about 150 MB. Read the note near the spawn. It tells you where to find the shotgun, machine gun and gives a small backstory.", "repo": "https://github.com/Madyarov27/station-siege", "demo": "https://madyarov27.itch.io/station-siege-web"}]...
|
[{"post_id": 75174, "ts": "202 [{"post_id": 75174, "ts": "2026-09-29T11:36:11Z", "hours": 2.5928, "text": "Devlog #10 - my last devlog. Done: Removed jumping (it had no purpose) Repairing is now done via the F button. Shipped the game to itch.io. This took me a while. The export was 2.3 gigabytes, so itch.io flat-out rejected it due to size limits. I removed a pile of unused models from the export. GPU texture compression came out garbled in WebGL, so I switched the textures to WebP capped at 2048px. That got the build down to about 150 MB, well under itch’s 200 MB per-file limit. You can play it here: https://madyarov27.itch.io/station-siege-web . I also cleaned up the repo, rewrote the README, and pushed everything to GitHub, including the zombie model through Git LFS."}, {"post_id": 74902, "ts": "2026-09-28T15:52:46Z", "hours": 16.2392, "text": "#9th devlog. Station Siege. Achieved: Added acid puddle as an environmental threat. Can be used to kite zombies and kill them or likewise, end up hurting yourself if you step on it. Messages in HUD when interacting with barricades, vending machine, and acid puddle. Improved zombie navigation. Now it’s completely foolproof to sharp corner turns. Added sound effect when reloading. I had the mp3 and wav files lying there doing nothing for a while but now i finally wired them in. Added like a dozen new props. Took everything from SketchFab, and used them to decorate medical bay, engineering, and cargo. Replaced almost all existing AI generated 3d models to the ones took from sketchfab. Mainly because they had like a trillion faces which was frying my CPU but also they kinda looked soulless and low effort. Added an interior wall in the spawn chamber so zombies dont look like they appear out of thin air when they spawn. Also redesigned the barricade slightly. Good for realism Changed the game map extensively. The ring part is gone. That part made sense in the beginning but the more I tested, the more I realized that shape is not ideal for my game. It’s too big and you can kite zombies forever. Now, the map looks more like spaceship themed family home interior and it’s actualyl challenging here now. You can get cornered and slimed unexpectedly."}, {"post_id": 71096, "ts": "2026-09-20T09:08:46Z", "hours": 10.3072, "text": "Devlog #wa8 I’ll just keep it short Added: Sprinting Added male zombie (finally) Overhauled wave manager. Now zombies in rooms that are locked will not spawn until you unlock them yourself. Switched to open only doors so players can’t just go to empty room to heal forever Replaced wooden plank in barricades for rusty slab of metal with sound effect when fixing. Fixed a bug where zombies broke barricades unreliably. A dozen zombies took a whole minute to break 2 barricades due to a timing mismatch Built main menu screen Built pause menu Added ammo reserve system so weapons finally stop having infinite ammo except for default pistol"}, {"post_id": 67979, "ts": "2026-09-14T09:40:17Z", "hours": 12.8564, "text": "**Devlog #7 ** A lot of stuff added so this time I’ll try to keep it short and concise. Gun model kickback on firing. Muzzle smoke on every shot Real travelling bullet projectile instead of yellow ray Bullet shell ejected every time you fire Fixed the weird bug with zombie not spawning at all. Fixed an unexpepcted bug where corridor lights worked facing one way but not the other. It was because of too many lights crowded into one area after duplicating the lights node to new added areas. Fixed the bug with bullets sometimes passing through the zombies without hitting Fixed the bug with the gun accidentally damaging the player Added extra damage for headshot Added head bob to player POV so it feels more natural Fixed the crosshair not being perfectly centered on screen Added a sliding door"}, {"post_id": 61005, "ts": "2026-09-03T18:19:05Z", "hours": 10.0069, "text": "Station siege - Devlog #6 This time I spent my hours optimizing the game, mainly because the game was borderline unplayable to work on. The map had ~90 live CSG collision shapes constantly recalculating in real time. I baked them into static geometry. Also, I swapped out the majority of 3D models in the map, which were absurdly overbuilt. Most had over a million faces, while one was sitting at ~3 million faces for a single 1x1 meter window. The editor is noticeably faster now. Another huge change was the map. Now it is a tube-like corridor connected to a polygon with 18 sides. There is also a small room connected to the ring. This ate up most of my hours. A small yet meaningful thing was the lighting overhaul. I pivoted from flat, evenly lit corridors to nearly dark chambers with higher contrast and isolated pools of light. Moreover, I added flickering animation to some of the lights so there’s some variety. Last thing is the new HUD. It’s not final yet; I will likely iterate multiple times before settling on the ideal one. However, it’s a noticeable upgrade from the previous flat white text on the screen. What I’m most happy about is still the optimization. My laptop isn’t particularly a RAM titan, so this is really important for me. I think this will ripple into other areas of the development and speed things up a lot."}, {"post_id": 52856, "ts": "2026-08-23T06:59:58Z", "hours": 13.4275, "text": "Devlog #5 - The station finally looks like a station. Last time, the place was simply a box with some texture, fog and good lighting. Now it actually has real objects, and smoothher gameplay. Biggest thing: I built out a full Tripo3D asset pipeline and used it to generate a whole set of props. Window, metal junk, archways, tubes, a metal fence, vent, door, and a vending machine used for weapon purchasing, all are wired up. The place, at least the corridor, can larp as an abandoned space station and not just a box. Another small update for immersiveness: I added creepy ambient background music. Small, but does a lot of work when you are in an empty hallway and hear nothing but that song. Took me expensive 13 hours but it was all worth it."}, {"post_id": 19506, "ts": "2026-06-30T20:37:05Z", "hours": 14.3875, "text": "This one’s huge. 14 hours logged and the game is totally not the same game anymore. Biggest news first: I pivoted the whole thing. It used to be a generic zombie shooter on Earth. Now it’s Station Siege - a dark horror-survival game set on n abandoned space station. And no, this wasn’t a random. Three reasons: Earth zombies are overdone and generic, my 2018 Intel Mac physically cannot handle realistic Earth environments without dying, and a pitch-black abandoned space station justifies the oppressive lighting and lore for free. I even did actual homework, studied why Lethal Company, R.E.P.O. and PEAK blew up (turns out: co-op survival horror, simple visuals, mood over graphics). So the direction is locked now, backed by real reasoning instead of vibes. The zombies got a massive glow-up. They now groan at you in the dark (positional audio on random timers. Honestly the single biggest horror upgrade I’ve made), they wind up an attack animation when they reach you or a barricade, and they play a death animation before crumpling and disappearing instead of just vanishing. I also generated a custom horror zombie with Tripo3D, retopologized it from 1.9 million triangles down to ~11k so my Mac doesn’t catch fire, and rigged it through Mixamo. The struggle award goes to the AnimationPlayer. Getting multiple Mixamo animations onto one model in Godot is way more painful than it sounds, name collisions everywhere (everything Mixamo exports is named “mixamo_com”), two AnimationPlayers fighting over one skeleton, and getting the death animation to actually finish before the body gets deleted. I spent hours in that menu. But it works now. Btw thanks to @sol4r_on_hackclub for suggesting using mixamo assets. Atmosphere-wise: black space void background, cold dark lighting, fog retuned to feel like a morgue. Added screen shake when you get hit and a blood overlay that gets heavier the lower your health drops. Also solved a nasty FPS hitch where the whole map stuttered the first time it rendered, fixed it with a black loading screen that spins the camera in a full circle while hidden, so all the shaders compile before the player ever sees anything. Pretty proud of that one. And of course, the Intel GPU texture curse struck again (devlog #3 readers know the grass saga). Every single model I imported rendered as a black blob until I remembered my own golden rule: compress everything Lossless or it won’t decode. Nearly lost my mind a second time before it clicked. One design decision I’m happy about: I’m keeping real gun sounds instead of sci-fi laser noises. Grounded firearms fit horror way better, and they make sense for a human station that got overrun. Next up: Finish wiring the male zombie (texture + animations) Reskin barricades into hull breaches / blast doors Build out the 4-room map (Airlock → Hangar → Reactor / Med Bay) Per-room zombie spawning (only spawn in rooms you’ve unlocked) Props to fill the empty rooms - consoles, crates, corpses - so the station feels lived-in and abandoned"}, {"post_id": 14666, "ts": "2026-06-23T21:04:15Z", "hours": 6.9606, "text": "Devlog #3 - A lot of updates on the zombie-game. Whooh, where do I even start? I made a functional barricade that repairs when pressing shift and that zombies can break to escape. I added crosshair, gold and health labels on screen. I added actual grass texture instead of grey floor I added shotgun - a second weapon - and a real shop where you can buy it using gold. I added jumping mechanics I changed the map from 2 platforms connected by a bridge to a single large platform. The biggest struggle was the grass although it sounds kinda ridiculous. I added it for the first time and it rendered either extreme green or extreme grey, nothing in between. It resembled nothing in the actual grass texture that I used. Turns out my Intel Mac can’t decode DXT-compressed textures so anything I imported rendered as weird slop. Fixed it with one setting - compress: losless. Nearly ragequit but then reimported and worked perfectly. A lot of stuff out of my to-do list in just 7 hours. Next, I will focus on adding more weapons (e.g sniper), expanding the map, adding actual buidings (e.g bunker), dedicated zombie spawning spots, and real sound effects."}, {"post_id": 13034, "ts": "2026-06-21T09:59:49Z", "hours": 0.9778, "text": "Made some progress on my zombie game! the map is a larger now with a corridor connecting 2 platforms. I also added 3 more zombies and obstacles to the map. Next step is to make them spawn continuously and give them actual body instead of green cube :/"}, {"post_id": 12664, "ts": "2026-06-20T18:06:58Z", "hours": 2.1242, "text": "Working on a cool zombie game :). Just made the first map, working gun and zombie (that little green cube on the screen). So far smooth, never had so much fun. Next step is to give shape to the player and the zombie"}]...
|
Title: station-siege by @Abbos | Stardance
Devlog Title: station-siege by @Abbos | Stardance
Devlogs:
Working on a cool zombie game :). Just made the first map, working gun and zombie (that little green cube on the screen). So far smooth, never had so much fun. Next step is to give shape to the player and the zombie
Made some progress on my zombie game! the map is a larger now with a corridor connecting 2 platforms. I also added 3 more zombies and obstacles to the map. Next step is to make them spawn continuously and give them actual body instead of green cube :/
Devlog #3 - A lot of updates on the zombie-game. Whooh, where do I even start? I made a functional barricade that repairs when pressing shift and that zombies can break to escape. I added crosshair, gold and health labels on screen. I added actual grass texture instead of grey floor I added shotgun - a second weapon - and a real shop where you can buy it using gold. I added jumping mechanics I changed the map from 2 platforms connected by a bridge to a single large platform. The biggest struggle was the grass although it sounds kinda ridiculous. I added it for the first time and it rendered either extreme green or extreme grey, nothing in between. It resembled nothing in the actual grass texture that I used. Turns out my Intel Mac can’t decode DXT-compressed textures so anything I imported rendered as weird slop. Fixed it with one setting - compress: losless. Nearly ragequit but then reimported and worked perfectly. A lot of stuff out of my to-do list in just 7 hours. Next, I will focus on adding more weapons (e.g sniper), expanding the map, adding actual buidings (e.g bunker), dedicated zombie spawning spots, and real sound effects.
This one’s huge. 14 hours logged and the game is totally not the same game anymore. Biggest news first: I pivoted the whole thing. It used to be a generic zombie shooter on Earth. Now it’s Station Siege - a dark horror-survival game set on n abandoned space station. And no, this wasn’t a random. Three reasons: Earth zombies are overdone and generic, my 2018 Intel Mac physically cannot handle realistic Earth environments without dying, and a pitch-black abandoned space station justifies the oppressive lighting and lore for free. I even did actual homework, studied why Lethal Company, R.E.P.O. and PEAK blew up (turns out: co-op survival horror, simple visuals, mood over graphics). So the direction is locked now, backed by real reasoning instead of vibes. The zombies got a massive glow-up. They now groan at you in the dark (positional audio on random timers. Honestly the single biggest horror upgrade I’ve made), they wind up an attack animation when they reach you or a barricade, and they play a death animation before crumpling and disappearing instead of just vanishing. I also generated a custom horror zombie with Tripo3D, retopologized it from 1.9 million triangles down to ~11k so my Mac doesn’t catch fire, and rigged it through Mixamo. The struggle award goes to the AnimationPlayer. Getting multiple Mixamo animations onto one model in Godot is way more painful than it sounds, name collisions everywhere (everything Mixamo exports is named “mixamo_com”), two AnimationPlayers fighting over one skeleton, and getting the death animation to actually finish before the body gets deleted. I spent hours in that menu. But it works now. Btw thanks to @sol4r_on_hackclub for suggesting using mixamo assets. Atmosphere-wise: black space void background, cold dark lighting, fog retuned to feel like a morgue. Added screen shake when you get hit and a blood overlay that gets heavier the lower your health drops. Also solved a nasty FPS hitch where the whole map stuttered the first time it rendered, fixed it with a black loading screen that spins the camera in a full circle while hidden, so all the shaders compile before the player ever sees anything. Pretty proud of that one. And of course, the Intel GPU texture curse struck again (devlog #3 readers know the grass saga). Every single model I imported rendered as a black blob until I remembered my own golden rule: compress everything Lossless or it won’t decode. Nearly lost my mind a second time before it clicked. One design decision I’m happy about: I’m keeping real gun sounds instead of sci-fi laser noises. Grounded firearms fit horror way better, and they make sense for a human station that got overrun. Next up: Finish wiring the male zombie (texture + animations) Reskin barricades into hull breaches / blast doors Build out the 4-room map (Airlock → Hangar → Reactor / Med Bay) Per-room zombie spawning (only spawn in rooms you’ve unlocked) Props to fill the empty rooms - consoles, crates, corpses - so the station feels lived-in and abandoned
Devlog #5 - The station finally looks like a station. Last time, the place was simply a box with some texture, fog and good lighting. Now it actually has real objects, and smoothher gameplay. Biggest thing: I built out a full Tripo3D asset pipeline and used it to generate a whole set of props. Window, metal junk, archways, tubes, a metal fence, vent, door, and a vending machine used for weapon purchasing, all are wired up. The place, at least the corridor, can larp as an abandoned space station and not just a box. Another small update for immersiveness: I added creepy ambient background music. Small, but does a lot of work when you are in an empty hallway and hear nothing but that song. Took me expensive 13 hours but it was all worth it.
Station siege - Devlog #6 This time I spent my hours optimizing the game, mainly because the game was borderline unplayable to work on. The map had ~90 live CSG collision shapes constantly recalculating in real time. I baked them into static geometry. Also, I swapped out the majority of 3D models in the map, which were absurdly overbuilt. Most had over a million faces, while one was sitting at ~3 million faces for a single 1x1 meter window. The editor is noticeably faster now. Another huge change was the map. Now it is a tube-like corridor connected to a polygon with 18 sides. There is also a small room connected to the ring. This ate up most of my hours. A small yet meaningful thing was the lighting overhaul. I pivoted from flat, evenly lit corridors to nearly dark chambers with higher contrast and isolated pools of light. Moreover, I added flickering animation to some of the lights so there’s some variety. Last thing is the new HUD. It’s not final yet; I will likely iterate multiple times before settling on the ideal one. However, it’s a noticeable upgrade from the previous flat white text on the screen. What I’m most happy about is still the optimization. My laptop isn’t particularly a RAM titan, so this is really important for me. I think this will ripple into other areas of the development and speed things up a lot.
**Devlog #7 ** A lot of stuff added so this time I’ll try to keep it short and concise. Gun model kickback on firing. Muzzle smoke on every shot Real travelling bullet projectile instead of yellow ray Bullet shell ejected every time you fire Fixed the weird bug with zombie not spawning at all. Fixed an unexpepcted bug where corridor lights worked facing one way but not the other. It was because of too many lights crowded into one area after duplicating the lights node to new added areas. Fixed the bug with bullets sometimes passing through the zombies without hitting Fixed the bug with the gun accidentally damaging the player Added extra damage for headshot Added head bob to player POV so it feels more natural Fixed the crosshair not being perfectly centered on screen Added a sliding door
Devlog #wa8 I’ll just keep it short Added: Sprinting Added male zombie (finally) Overhauled wave manager. Now zombies in rooms that are locked will not spawn until you unlock them yourself. Switched to open only doors so players can’t just go to empty room to heal forever Replaced wooden plank in barricades for rusty slab of metal with sound effect when fixing. Fixed a bug where zombies broke barricades unreliably. A dozen zombies took a whole minute to break 2 barricades due to a timing mismatch Built main menu screen Built pause menu Added ammo reserve system so weapons finally stop having infinite ammo except for default pistol
#9th devlog. Station Siege. Achieved: Added acid puddle as an environmental threat. Can be used to kite zombies and kill them or likewise, end up hurting yourself if you step on it. Messages in HUD when interacting with barricades, vending machine, and acid puddle. Improved zombie navigation. Now it’s completely foolproof to sharp corner turns. Added sound effect when reloading. I had the mp3 and wav files lying there doing nothing for a while but now i finally wired them in. Added like a dozen new props. Took everything from SketchFab, and used them to decorate medical bay, engineering, and cargo. Replaced almost all existing AI generated 3d models to the ones took from sketchfab. Mainly because they had like a trillion faces which was frying my CPU but also they kinda looked soulless and low effort. Added an interior wall in the spawn chamber so zombies dont look like they appear out of thin air when they spawn. Also redesigned the barricade slightly. Good for realism Changed the game map extensively. The ring part is gone. That part made sense in the beginning but the more I tested, the more I realized that shape is not ideal for my game. It’s too big and you can kite zombies forever. Now, the map looks more like spaceship themed family home interior and it’s actualyl challenging here now. You can get cornered and slimed unexpectedly.
Devlog #10 - my last devlog. Done: Removed jumping (it had no purpose) Repairing is now done via the F button. Shipped the game to itch.io. This took me a while. The export was 2.3 gigabytes, so itch.io flat-out rejected it due to size limits. I removed a pile of unused models from the export. GPU texture compression came out garbled in WebGL, so I switched the textures to WebP capped at 2048px. That got the build down to about 150 MB, well under itch’s 200 MB per-file limit. You can play it here: https://madyarov27.itch.io/station-siege-web . I also cleaned up the repo, rewrote the README, and pushed everything to GitHub, including the zombie model through Git LFS.
Ships:
I made Station Siege, a first-person zombie shooter set on an abandoned space station. You fight through 10 waves of zombies, earn gold for kills, and spend it on weapons, ammo, and unlocking doors to different rooms. It’s built in Godot 4.7 and runs in the browser. The hardest part was zombie pathfinding. Zombies kept getting stuck in their spawn rooms, and one stuck zombie was enough to stop the next wave from starting. It turned out the doors were baked into the navigation mesh as closed, so even with a door open, the zombies had no path out. I rebuilt the navmesh without doors and barricades, and added a backup that despawns any zombie that makes no progress for 20 seconds. Getting it onto the web was the other big challenge. The first export was 2.3 GB, so I cut unused models and switched textures to a web-safe format to get it under itch’s 200 MB limit. I’m proudest of the atmosphere: the dark corridors, the barricades zombies tear through, and the moment a wave starts pouring in from several directions at once. How to test: Open the itch link in Chrome or Edge on a desktop computer. It doesn’t work on phones. Click Start, then click inside the game window to lock the mouse. Controls: WASD to move, Shift to sprint, left click to shoot, R to reload, 1-3 to switch weapons, E to interact or buy, hold F to repair a barricade, Esc to pause. They’re also on the Controls screen in the main menu. The first load can take a little while because the game is about 150 MB. Read the note near the spawn. It tells you where to find the shotgun, machine gun and gives a small backstory....
|
1793004849.5226796
|
1793091249.5226796
|
|
44647
|
ThetaNexus by @lix | Stardance
|
lix
|
1
|
90.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T10:09:48Z", "hours": 90.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made A terminal app for Windows that keeps every container, image, volume and network in one list, and lets you start and stop them, follow logs, watch live stats and see why a healthcheck is failing without opening Docker Desktop. I made ThetaNexus because I wanted to make something that would help me learn Docker, how it works, what it is and to create a tool that helps other developers control their Docker environment. What was challenging Learning a new library, making a UI that looks good, which was harder than I expected. There were also a lot of things in C# that I did not know existed. What I am proud of That this helped me to actually learn Docker. I have never really used Docker but I know it is a really popular and useful tool among developers. Some developers use it every day, some less, some don’t. And as I mentioned above… I wanted to make something that would help me learn it and a tool that helps you control it. How to try it Download the latest release from ThetaNexus on GitHub and run it. It installs into your user folder and adds ThetaNexus to your PATH, so you can start it by typing thetanexus in any terminal, but Windows Terminal is recommended.", "repo": "https://github.com/lixtheyt/ThetaNexus", "demo": "https://github.com/lixtheyt/ThetaNexus/releases/latest"}]...
|
[{"post_id": 67701, "ts": "202 [{"post_id": 67701, "ts": "2026-09-13T21:56:12Z", "hours": 0.2522, "text": "Final review and fixing bugs While code reviewing we found few more bugs. They are now fixed!"}, {"post_id": 67671, "ts": "2026-09-13T20:39:06Z", "hours": 7.8197, "text": "I choose… SHIPPING! Okay, so it is here! Another project that I made and that I am proud of! I made the README file and used the style that Helyx has, because I am very keen on it. I also worked on the GitHub page so it has everything it needs. What else did I do… The installer is done, the logos and banners are done too, and while reviewing the codebase we found some bugs, but they are fixed now. And yeah, I think that is all! I will probably start working on another project from my profile now, but I am not sure which one yet."}, {"post_id": 66760, "ts": "2026-09-12T17:26:52Z", "hours": 9.4697, "text": "Final upgrades? So, I think this is like a final features devlog that I am making for ThetaNexus. I think it is already kinda done and it already has everything it should have. I still have to set up the GitHub page and write all documents like README file, LICENSE, etc. But let’s now talk about new stuff that I added! I rewrote the logs screen and added more features to it. So now you can search in it, adjust tail, clear and save to file and more. I also added a new screen that lets you create and start a container from an image. It validates everything before it sends anything to the engine. For instance, if the port you picked is already taken, it tells you instead of failing halfway. Another new screen is a help screen. It lists all of the keys for each screen and explains what each one does. Nothing really insane but for some people this may be very useful. I also added a lot of new features like pruning all over ThetaNexus and many more! Finally, I’ve done some UI changes and code changes to improve the UX and make everything more readable and understandable. Okay, so yeah, I am going to write up the README and make the GitHub Page and then I will move to another project that I plan to make. Right now, I am still not sure which one I will make… but probably one that I won’t have troubles to make since Stardance ends in 18 days!!"}, {"post_id": 65621, "ts": "2026-09-10T21:20:24Z", "hours": 9.0289, "text": "Repolished stats Have you ever heard the phrase… “It’s easier said than done.” Well, that is exactly how I would call this what I just experienced while repolishing stats. The thing that made this even harder to do is that I am currently ill and I don’t feel very good and focused. I made 4 screens where each one is for a specific component… CPU Memory Network Disk Each one prints specific info, I tried to make sure that everything that you might need to know and see will be printed in the screen. And if you are only interested in the usage or how should I call it, then you can see all of the 4 components and their usage by clicking the key ‘g’. It will print a whole screen with only graphs of usage of each component. I think this new repolished version looks very nice and cool! It turned out pretty well. You may also notice that some of the elements look like from btop++. Well, it’s simple! I was mainly inspired by btop++ for this new stats screen. I am thinking of what to add next, but nothing comes to my mind… I might clean the whole codebase next devlog and ship it and move onto a new project… but yeah, we will see…"}, {"post_id": 64394, "ts": "2026-09-08T18:43:09Z", "hours": 9.2883, "text": "More actions?? Ordering everywhere?? So first, I added “more actions” screens to containers because wanting to put everything into a footer wouldn’t look so great. Before this, the only actions you could do to containers were: start/stop raw JSON logs stats shell well, now you can do all of this: start/stop restart pause/unpause kill remove raw JSON logs stats shell So now you have bigger control in ThetaNexus over containers. You can use these actions by pressing the ‘.’ button, it opens more actions screen. BTW, you don’t have to open it, but it just opens a selection menu where you can either pick it, or it shows keybinds to it. Also, now in the main list you have ordering in ALL sections! Before you could only order containers how you wanted but now you can do that same thing with images, volumes and networks! Ordering is also now remembered, so when you go from one section to another in the main list, you won’t have to select the order you had. Oh yeah and guess what! Now I am moving on to redo the stats! Finally!!! haha"}, {"post_id": 63176, "ts": "2026-09-06T20:47:08Z", "hours": 9.9453, "text": "All sections are done!!!! What next? I finished all of the sections soo… containers images volumes networks events And yes… their details/info screens are done too! I introduced a simple and understandable dictionary where I use details when something has more than 1 screen and info when it has only 1 screen. For instance, you have ContainerDetails, but on the other hand you have VolumeInfo. Okay, so what I did in this devlog you may be wondering… I made networks & events sections and their own info screens. I also leveled up ImageInfo to ImageDetails. Based on what I said above, you may understand what it now has. I just realized I forgot to add ordering to the other sections in main list… only containers have it for now but I WILL ADD IT!! I also plan to probably upgrade almost every info screen to a details screen so you can do more things and have more actions available in general. I also want to add more features to ContainerDetails because I want you to have full control over the container in ThetaNexus. I also plan to check every .cs file and check the logic, because I think it changed a lot from the first one that I used in containers, so yeah, that will be my first priority when I add all features I want to. So a review… BTW, I did not forget about redoing the stats!"}, {"post_id": 62417, "ts": "2026-09-05T19:20:58Z", "hours": 9.2444, "text": "Another section is done!! More features! Okay guys, so today, I locked in! Mainly because it’s Saturday (weekend) and school days are very close. Okay so… what I added? What a great question! I added a new section for VOLUMES. Firstly you can see some basic info such as driver, mounted by and when it was created. When you open it, you can see more info: Driver Scope Mountpoint Created Project and what containers it is mounted by. This info screen has functions to view: raw JSON copy name browse delete I also added a new design feature for displaying success, warning and error messages all over ThetaNexus! I also fixed some small bugs that were making ThetaNexus look a little bit glitchy, they were noticeable but that’s now fixed! I plan to finish the other sections so networks and events and I still have to change the stats screen. I did not forget that! Probably containers will receive a new feature in the next devlogs, but maybe I’ll scrap that idea… we will see how much will I like it and see it useful."}, {"post_id": 61533, "ts": "2026-09-04T14:20:12Z", "hours": 9.7336, "text": "Details functions prepared to work! Okay so I have finished all of the details functions and they all work so: raw JSON logs stats shell are all done! Well, stats still has to be redone because I want to change the design as I mentioned in a past devlog. I don’t want to do it now so I went to work on images rendering on the main list. Yes, images rendering. I am thinking of doing all of those sections now in main list since they are like the core of ThetaNexus and stats function could be also done at the end. Okay so yeah, I made the images rendering which you can see in the image and I am also working on details functions for images. Of course it won’t be the same as the container’s details functions file because containers and images are just not the same. I also made a tiny edit of the rendering of the screens so it looks nicer. I am thinking that maybe ThetaNexus won’t have that many functions because Stardance ends very soon and I have school but yeah… we will see about that! UPDATE (edit): Looks like no image details are coming. When I was at the end of finishing I noticed how dumb it was and just made a basic info one instead."}, {"post_id": 60540, "ts": "2026-09-02T22:58:50Z", "hours": 8.4425, "text": "Details screen done! Logs are done too! I finished making the other detail screens. So now all of them are completed! Overview, env, mounts, networks and health. Let me explain what each screen does… Overview: Shows you the basic info about your container. Status, created date, started date, image, command, ports, number of restarts, hardware limits and project it is assigned to. Env: Shows you environment variables. At first, they are hidden. You have to press the key ‘V’ to reveal them. Mounts: Shows every path where the container has a mount. (not writing to itself) Networks: Shows you which networks the container is attached to, and what it can reach. It shows IPv4, Gateway and aliases. Health: Shows you the container’s current health state. It also shows you how many probes have failed in a row and the last 5 probe results. Okay, screens done! I also finished one of the core functions that details screen has! THE LOGS! Here is what Logs do if you for some reason don’t know… Logs: Shows you the last 500 lines the container wrote, from both of its output streams."}, {"post_id": 58857, "ts": "2026-08-31T13:11:48Z", "hours": 8.7758, "text": "Some screens are done! So main details screen is finished. On the main overview screen you can read status of the container, date of creation, start date, image, command, ports, restarts, limits and the project it is assigned to. Right now I am working on the Stats screen under details and on other screens such as: env mounts networks health Stats are right now my priority because let me tell you, this is really difficult to make. I also don’t like the current design so I am going to redo it ahhhhh. But for now it shows the CPU usage, Memory usage, Network info so download & upload and number of processes. But I will probably make it show a huge graph of each of these things. I am also losing sanity, because I found out that I don’t know nothing. I genuinely sometimes just stare at the method thinking of how to do it and then redoing it 50 times. Ahhh this is way more difficult than making Helyx to be honest… too much math and calculating each window… Well, wish me luck."}, {"post_id": 57412, "ts": "2026-08-29T15:39:43Z", "hours": 3.9572, "text": "Playing with the new libraries, drafting interfaces and functions Since I’ve never used the Docker.DotNet library, I first have to understand it before I can build something with it. So I was making some basic functions with it to actually learn something from it. It isn’t going smoothly but we are getting somewhere. Claude Code is a huge help here. For instance, I NEVER came across the CancellationTokenSource class before, so I had no idea what it does and how it works. But yeah, now I do haha. I edited some design elements so it will look nicer. I also added start/stop functionality and I am still working on the container details screen. My plan is to make ThetaNexus have most of the features Docker Desktop has on Windows. It will depend on how much time I have until Stardance ends and also time after school, because I want to make a few more projects but yeah, I will try my best to put as many features as possible into ThetaNexus."}, {"post_id": 53361, "ts": "2026-08-23T21:34:31Z", "hours": 3.6033, "text": "The beginning I was working on the main list (menu), where you can see all of your: Containers Images Volumes Networks Events I was drafting a lot of TUI styles, because I wasn’t sure what design I wanted ThetaNexus to have, but at the end, I landed on a similar one as Helyx uses. I still have to learn the Docker.DotNet library that is being used here. I also know only the basics of Docker so I hope this will also teach me something. For now, you can check photos and rate the design I selected in comments. Right now you can only see your containers and collapse them, but you can also order them by: NAME STATE IMAGE PORTS CPU MEM UP One way or another! I plan to add details & start/stop very soon and also a whole control panel in details for that specific container so be ready!"}]...
|
Title: ThetaNexus by @lix | Stardance
Devlogs:
Th Title: ThetaNexus by @lix | Stardance
Devlogs:
The beginning I was working on the main list (menu), where you can see all of your: Containers Images Volumes Networks Events I was drafting a lot of TUI styles, because I wasn’t sure what design I wanted ThetaNexus to have, but at the end, I landed on a similar one as Helyx uses. I still have to learn the Docker.DotNet library that is being used here. I also know only the basics of Docker so I hope this will also teach me something. For now, you can check photos and rate the design I selected in comments. Right now you can only see your containers and collapse them, but you can also order them by: NAME STATE IMAGE PORTS CPU MEM UP One way or another! I plan to add details & start/stop very soon and also a whole control panel in details for that specific container so be ready!
Playing with the new libraries, drafting interfaces and functions Since I’ve never used the Docker.DotNet library, I first have to understand it before I can build something with it. So I was making some basic functions with it to actually learn something from it. It isn’t going smoothly but we are getting somewhere. Claude Code is a huge help here. For instance, I NEVER came across the CancellationTokenSource class before, so I had no idea what it does and how it works. But yeah, now I do haha. I edited some design elements so it will look nicer. I also added start/stop functionality and I am still working on the container details screen. My plan is to make ThetaNexus have most of the features Docker Desktop has on Windows. It will depend on how much time I have until Stardance ends and also time after school, because I want to make a few more projects but yeah, I will try my best to put as many features as possible into ThetaNexus.
Some screens are done! So main details screen is finished. On the main overview screen you can read status of the container, date of creation, start date, image, command, ports, restarts, limits and the project it is assigned to. Right now I am working on the Stats screen under details and on other screens such as: env mounts networks health Stats are right now my priority because let me tell you, this is really difficult to make. I also don’t like the current design so I am going to redo it ahhhhh. But for now it shows the CPU usage, Memory usage, Network info so download & upload and number of processes. But I will probably make it show a huge graph of each of these things. I am also losing sanity, because I found out that I don’t know nothing. I genuinely sometimes just stare at the method thinking of how to do it and then redoing it 50 times. Ahhh this is way more difficult than making Helyx to be honest… too much math and calculating each window… Well, wish me luck.
Details screen done! Logs are done too! I finished making the other detail screens. So now all of them are completed! Overview, env, mounts, networks and health. Let me explain what each screen does… Overview: Shows you the basic info about your container. Status, created date, started date, image, command, ports, number of restarts, hardware limits and project it is assigned to. Env: Shows you environment variables. At first, they are hidden. You have to press the key ‘V’ to reveal them. Mounts: Shows every path where the container has a mount. (not writing to itself) Networks: Shows you which networks the container is attached to, and what it can reach. It shows IPv4, Gateway and aliases. Health: Shows you the container’s current health state. It also shows you how many probes have failed in a row and the last 5 probe results. Okay, screens done! I also finished one of the core functions that details screen has! THE LOGS! Here is what Logs do if you for some reason don’t know… Logs: Shows you the last 500 lines the container wrote, from both of its output streams.
Details functions prepared to work! Okay so I have finished all of the details functions and they all work so: raw JSON logs stats shell are all done! Well, stats still has to be redone because I want to change the design as I mentioned in a past devlog. I don’t want to do it now so I went to work on images rendering on the main list. Yes, images rendering. I am thinking of doing all of those sections now in main list since they are like the core of ThetaNexus and stats function could be also done at the end. Okay so yeah, I made the images rendering which you can see in the image and I am also working on details functions for images. Of course it won’t be the same as the container’s details functions file because containers and images are just not the same. I also made a tiny edit of the rendering of the screens so it looks nicer. I am thinking that maybe ThetaNexus won’t have that many functions because Stardance ends very soon and I have school but yeah… we will see about that! UPDATE (edit): Looks like no image details are coming. When I was at the end of finishing I noticed how dumb it was and just made a basic info one instead.
Another section is done!! More features! Okay guys, so today, I locked in! Mainly because it’s Saturday (weekend) and school days are very close. Okay so… what I added? What a great question! I added a new section for VOLUMES. Firstly you can see some basic info such as driver, mounted by and when it was created. When you open it, you can see more info: Driver Scope Mountpoint Created Project and what containers it is mounted by. This info screen has functions to view: raw JSON copy name browse delete I also added a new design feature for displaying success, warning and error messages all over ThetaNexus! I also fixed some small bugs that were making ThetaNexus look a little bit glitchy, they were noticeable but that’s now fixed! I plan to finish the other sections so networks and events and I still have to change the stats screen. I did not forget that! Probably containers will receive a new feature in the next devlogs, but maybe I’ll scrap that idea… we will see how much will I like it and see it useful.
All sections are done!!!! What next? I finished all of the sections soo… containers images volumes networks events And yes… their details/info screens are done too! I introduced a simple and understandable dictionary where I use details when something has more than 1 screen and info when it has only 1 screen. For instance, you have ContainerDetails, but on the other hand you have VolumeInfo. Okay, so what I did in this devlog you may be wondering… I made networks & events sections and their own info screens. I also leveled up ImageInfo to ImageDetails. Based on what I said above, you may understand what it now has. I just realized I forgot to add ordering to the other sections in main list… only containers have it for now but I WILL ADD IT!! I also plan to probably upgrade almost every info screen to a details screen so you can do more things and have more actions available in general. I also want to add more features to ContainerDetails because I want you to have full control over the container in ThetaNexus. I also plan to check every .cs file and check the logic, because I think it changed a lot from the first one that I used in containers, so yeah, that will be my first priority when I add all features I want to. So a review… BTW, I did not forget about redoing the stats!
More actions?? Ordering everywhere?? So first, I added “more actions” screens to containers because wanting to put everything into a footer wouldn’t look so great. Before this, the only actions you could do to containers were: start/stop raw JSON logs stats shell well, now you can do all of this: start/stop restart pause/unpause kill remove raw JSON logs stats shell So now you have bigger control in ThetaNexus over containers. You can use these actions by pressing the ‘.’ button, it opens more actions screen. BTW, you don’t have to open it, but it just opens a selection menu where you can either pick it, or it shows keybinds to it. Also, now in the main list you have ordering in ALL sections! Before you could only order containers how you wanted but now you can do that same thing with images, volumes and networks! Ordering is also now remembered, so when you go from one section to another in the main list, you won’t have to select the order you had. Oh yeah and guess what! Now I am moving on to redo the stats! Finally!!! haha
Repolished stats Have you ever heard the phrase… “It’s easier said than done.” Well, that is exactly how I would call this what I just experienced while repolishing stats. The thing that made this even harder to do is that I am currently ill and I don’t feel very good and focused. I made 4 screens where each one is for a specific component… CPU Memory Network Disk Each one prints specific info, I tried to make sure that everything that you might need to know and see will be printed in the screen. And if you are only interested in the usage or how should I call it, then you can see all of the 4 components and their usage by clicking the key ‘g’. It will print a whole screen with only graphs of usage of each component. I think this new repolished version looks very nice and cool! It turned out pretty well. You may also notice that some of the elements look like from btop++. Well, it’s simple! I was mainly inspired by btop++ for this new stats screen. I am thinking of what to add next, but nothing comes to my mind… I might clean the whole codebase next devlog and ship it and move onto a new project… but yeah, we will see…
Final upgrades? So, I think this is like a final features devlog that I am making for ThetaNexus. I think it is already kinda done and it already has everything it should have. I still have to set up the GitHub page and write all documents like README file, LICENSE, etc. But let’s now talk about new stuff that I added! I rewrote the logs screen and added more features to it. So now you can search in it, adjust tail, clear and save to file and more. I also added a new screen that lets you create and start a container from an image. It validates everything before it sends anything to the engine. For instance, if the port you picked is already taken, it tells you instead of failing halfway. Another new screen is a help screen. It lists all of the keys for each screen and explains what each one does. Nothing really insane but for some people this may be very useful. I also added a lot of new features like pruning all over ThetaNexus and many more! Finally, I’ve done some UI changes and code changes to improve the UX and make everything more readable and understandable. Okay, so yeah, I am going to write up the README and make the GitHub Page and then I will move to another project that I plan to make. Right now, I am still not sure which one I will make… but probably one that I won’t have troubles to make since Stardance ends in 18 days!!
I choose… SHIPPING! Okay, so it is here! Another project that I made and that I am proud of! I made the README file and used the style that Helyx has, because I am very keen on it. I also worked on the GitHub page so it has everything it needs. What else did I do… The installer is done, the logos and banners are done too, and while reviewing the codebase we found some bugs, but they are fixed now. And yeah, I think that is all! I will probably start working on another project from my profile now, but I am not sure which one yet.
Final review and fixing bugs While code reviewing we found few more bugs. They are now fixed!
Ships:
What I made A terminal app for Windows that keeps every container, image, volume and network in one list, and lets you start and stop them, follow logs, watch live stats and see why a healthcheck is failing without opening Docker Desktop. I made ThetaNexus because I wanted to make something that would help me learn Docker, how it works, what it is and to create a tool that helps other developers control their Docker environment. What was challenging Learning a new library, making a UI that looks good, which was harder than I expected. There were also a lot of things in C# that I did not know existed. What I am proud of That this helped me to actually learn Docker. I have never really used Docker but I know it is a really popular and useful tool among developers. Some developers use it every day, some less, some don’t. And as I mentioned above… I wanted to make something that would help me learn it and a tool that helps you control it. How to try it Download the latest release from ThetaNexus on GitHub and run it. It installs into your user folder and adds ThetaNexus to your PATH, so you can start it by typing thetanexus in any terminal, but Windows Terminal is recommended....
|
1793004689.425646
|
1793091089.425646
|
|
21869
|
Create: Stealth & Security (MC Mod) by @xFN10x Create: Stealth & Security (MC Mod) by @xFN10x | Stardance...
|
xFN10x
|
1
|
89.0
|
1317
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-30T21:23:49Z", "hours": 89.0, "multiplier": 18.49, "payout": 1317, "blessing": "neutral", "text": "Create: Stealth & Security is a Minecraft mod for 1.21.1 Neoforge that I decided to make because I like being able to spy on people… This is the first neoforge mod I’ve developed & published. I would reccomend playing this with the modrinth app if you already have it, with JEI and Jade .", "repo": "https://github.com/xFN10x/Create-Security", "demo": "https://modrinth.com/mod/create-security"}]...
|
[{"post_id": 37800, "ts": "202 [{"post_id": 37800, "ts": "2026-07-30T18:53:36Z", "hours": 3.5239, "text": "devlog 20, normal time now vid link: https://youtu.be/H_7fsU2BupI alright, im probably gonna ship soon. so i focaused on some touch up features. recipes everything has recipes now, even adding the finiranium sensor recipe that i forgot last update. summaries everything also has shift summaries, so now people can actually learn how to use the mod I also added Nether Glass, right now it’s only used for the chunk detector recipe, but it will be able to block end sickness later on. I’ll be mainly prioritizing my other project https://stardance.hackclub.com/projects/336 after this ship, but ill probably work on this a bit more."}, {"post_id": 37241, "ts": "2026-07-29T19:56:10Z", "hours": 7.4528, "text": "devlog 19… these features are quite difficult to fine tune video cause stardance doesn’t work alright so 8 hours again… this time i only did one feature, (and maybe some bug fixes…) The chunk detector is finally done! Now you can drop a log in, and try to catch that person stealing your diamonds every night! formatting and other things aswell I also fixed some formatting for things like tooltips, so they are much nicer to look at now. I also made the log screen bigger. devlog 18… these features are quite difficult to fine tune alright so 8 hours again… this time i only did one feature, (and maybe some bug fixes…) The chunk detector is finally done! Now you can drop a log in, and try to catch that person stealing your diamonds every night! formatting and other things aswell I also fixed some formatting for things like tooltips, so they are much nicer to look at now. I also made the log screen bigger. oh yea stress The two kinetic blocks; the Laser Diode, and Chunk detector also actually consume stress units now, actually the laser diode doesn’t yet… but it will… and ill increase the speed req of it. oh yea stress The two kinetic blocks; the Laser Diode, and Chunk detector also actually consume stress units now, actually the laser diode doesn’t yet… but it will… and ill increase the speed req of it. now ill add a feature to obfuscate a players skin if they are invis."}, {"post_id": 34939, "ts": "2026-07-26T01:48:46Z", "hours": 8.9261, "text": "devlog 18… 9 hours 😅 ok so i normally would have devlogged after i got the ui done… but this ended up taking more time than i thought… I finished the ui of the log, it took most of the time, and i also kinda did everything… ui is done, i added some helpful utilities for loggable blocks, you can log things, omg this took so long, but there is really nothing else to say 😔..yet there are still a bunch of random things i need to fix"}, {"post_id": 33841, "ts": "2026-07-24T02:38:37Z", "hours": 2.9106, "text": "devlog 17 or 16, im tired alright, i put the chunk detector aside, and ive done a bunch of work on logs. Mostly just me trying to figure out how the hell Create’s menus work because they have no dev wiki 😔… anyways, the log now has a texture ive done twice trying to figure out how to make it look like a piece of paper, and i also make a screen; (ignore how its using the old texture.) The log is gonna be usable between different blocks as i said, and each entry is gonna have a target player or entity, message, and timestamp. And i might also add the source block. I also forgot that i forgot to add a recipe to the finiranium detector…"}, {"post_id": 33047, "ts": "2026-07-22T16:51:27Z", "hours": 1.8803, "text": "starting to work on the Chunk Detector. I’ve started adding the new block, the Chunk Detector, which will log entries and exits of each entity in a chunk. It will log these in a new item, the Log. You will be able to use it to see different timed events of different blocks, like the Advanced Sight Sensor when i add it."}, {"post_id": 27906, "ts": "2026-07-13T20:38:41Z", "hours": 0.8375, "text": "Finished the finiranium sensor, and added some config values about username obfuscation when invisible. (Got the idea from seeing it in a lifesteal video) Ill release version 0.1.1 now."}, {"post_id": 27770, "ts": "2026-07-13T16:49:07Z", "hours": 4.0006, "text": "i swear ive made this devlog 3 times already… The mod is now on modrinth , and curseforge . I would reccomend trying it out, as i want to make sure its balenced enough for its beta. Now that its on modrinth, I’ve been working on some updates. Currently im adding the Finiranium Sensor, whichs shows you when Finiranium is nearby; (ignore the debug outline in the screenshot.) Im also planning on adding the next blocks & items before the beta: Chunk Detector : Detects when Players/Entities enter a chunk Advanced Sight Sensor/Laser Diode Keycard stuff Smarter Observer (wip name) : Logs players’ interactions with a block"}, {"post_id": 21712, "ts": "2026-07-03T20:07:05Z", "hours": 0.5264, "text": "I’ve finished setting up my modrinth page, (and curseforge page,) and now im waiting for review. Ill pause development while i wait for it to be put up on at least modrinth. https://modrinth.com/mod/create-security https://www.curseforge.com/minecraft/mc-mods/create-stealth-security/preview"}, {"post_id": 20920, "ts": "2026-07-02T17:15:26Z", "hours": 1.5025, "text": "con-figured i should make some more configs before first version I’ve made a bunch of configurable options, there are definity more i could add, but this is good enough for the first alpha version. Now i just need to finish the modrinth page, and add a readme."}, {"post_id": 20492, "ts": "2026-07-02T03:00:10Z", "hours": 3.5531, "text": "recipes, recipes, come get your recipes here now everything has a recipe! ive also added some more items to make these recipes more intuitive. Ill try to show some recipes in the attachments. Next im gonna make a server config for stuff like end sickness, and then im gonna raise the default for end sickness to make it a bit easier to avoid. ill release an alpha version for testing soon, its not gonna be my ship though. (also, the missing texture thing are the empty finiranium goggles, idk why they dont work)"}, {"post_id": 19629, "ts": "2026-07-01T00:26:20Z", "hours": 2.8147, "text": "I’ve added some QoL stuff, I added a feature where you can adjust the eye offset of the finiranium goggles, its a bit glitchly right now, but its fine. I’ve also added a config, for now only for the client. So far there is only one setting for the flicker of a laser. (you can see it at its default in the gif)"}, {"post_id": 19376, "ts": "2026-06-30T17:44:36Z", "hours": 5.0992, "text": "now the laser works on contraptions. The laser diode now visually work on contraptions… but due to create limitations, they don’t actually function… anyways, im gonna make a ponder now, then ill probably make a config. Ive also fixed a bunch of issues with the rendering of the lasers. And i also fixed an issue with me not knowing that the block entity renderers where shared across all of them, therefore the lasers would change length weridly from other lasers…"}, {"post_id": 18747, "ts": "2026-06-29T22:47:43Z", "hours": 3.5692, "text": "the laser renders properly. Now the laser sensor can actually shoot a proper laser. Also I learned how to actually spell laser. Now, I just need to do i bit more fine tuning, and then i need to make the thing actually function. And then i need to add the contraption behaviour… which hopefully wont be to hard… yay the video upload wont work again! heres a link to it instead https://file.garden/ZPu7YidXf2vX5nJR/Screen%20Recording%202026-06-29%20192129.mp4 (i was trying hackclub cdn, but i think thats the issue)"}, {"post_id": 18022, "ts": "2026-06-29T00:10:21Z", "hours": 5.8306, "text": "im starting to add lazer diodes, they will let you detect when something is blocking a lazer. Kinda like a sight sensor, but no sight. Ive been trying to figure out how to make the lazer, and ive got a good start as you can see. In the second image you can see the lazer, (left,) and the receiver you get from wrenching it, (right.) With the advanced versions you will only need one lazer."}, {"post_id": 15055, "ts": "2026-06-24T13:34:42Z", "hours": 2.795, "text": "Ive added a new liquid: Liquid Finiranium. Its going to be used to refil electric camo. Also, since liquid finiranium is so extremely deadly, im gonna raise the threshold for getting end sickness, and im also gonna add ways to prevent end sickness"}, {"post_id": 13437, "ts": "2026-06-22T00:39:18Z", "hours": 4.0725, "text": "End sickness is now implemented, you get it from being near finiranium, or having it in your inventory. In the attached video, (recorded before i added the inventory sickening,) You can see how it works, you can actually barely survive it if you have low hunger, but if you heal to a certain point, depending on the level, it hurts you, also depending on the level. Next features coming up: Electric Camo & Entity Sensors Also, this video is a bit old, so some of the other things i added will be in future devlogs. OK I SWEAR THIS VIDEO WILL NOT WORK, YOU DONT GET IT, SORRY"}, {"post_id": 12070, "ts": "2026-06-19T18:06:28Z", "hours": 0.3258, "text": "now you can see invis entities! im imagining a really cool stealth mission being done with this mod… especially since you can see people wearing them in darkness"}, {"post_id": 11975, "ts": "2026-06-19T15:32:56Z", "hours": 0.6133, "text": "i updated the goggles model, and made them glow in the dark. I also finished the post processing effects that happen when you put them on. I still need to make invisible entities visible with them on."}, {"post_id": 11945, "ts": "2026-06-19T14:12:31Z", "hours": 1.0397, "text": "I’ve actually added the finigoggles item, and i made a custom model for them too. right now im working on making a custom renderer to recreate kinda what the metal gear solid 1 goggles look like."}, {"post_id": 11596, "ts": "2026-06-18T21:41:56Z", "hours": 27.3147, "text": "alright, i was not planning to put this on stardance, but ive decided to. (ughh..) time to start writing about the past 3 days day 1: I started working on setup, i have never actually make a create addon, or a neoforge addon (well, ive kinda experimented with neoforge) so it took me a bit I created the model for the first block; (1st attach,) The Sight Sensor. It outputs a redstone signal depending on the distance an entity is at when looking at it. (2nd attach is the ponder, that i made later) day 2: I actually implemented the sight sensor, and finished it up. I added a keycard item aswell (planned for something,) and i made the creative tab (attach 3) day 3: i added the functionality for sight sensors on contraptions, and i added functionality to make them activate when looking at each other, so you can basically make wireless redstone. I also added Finiranium & Finiranium Ore. Finiranium is a new material im adding to the mod, it can give you end sickness if you are around it to much, and you will be able to use it to make devices like entity detection goggles. (lets you see invis entities.) day 4: I did more work on finiranium, and i gave it a cool name. It can also generate in the end now. (attach 4 & 5) I also added End Sickness, which changes your hunger bar, and heart icons. It will split your hunger, and health bars by a certain amount depending on the level. day 5 & 6 (today) I’ve been doing a lot of work looking at minecraft’s rendering, trying to make some sort of effects for the goggles. I did a lot of work with post processing, and other rendering. However, i think i figured something out. Since it appears that I’ve hit my attachment cap, ill post images of me working on this soon."}]...
|
Title: Create: Stealth & Security (MC Mod) by Title: Create: Stealth & Security (MC Mod) by @xFN10x | Stardance
Devlogs:
alright, i was not planning to put this on stardance, but ive decided to. (ughh..) time to start writing about the past 3 days day 1: I started working on setup, i have never actually make a create addon, or a neoforge addon (well, ive kinda experimented with neoforge) so it took me a bit I created the model for the first block; (1st attach,) The Sight Sensor. It outputs a redstone signal depending on the distance an entity is at when looking at it. (2nd attach is the ponder, that i made later) day 2: I actually implemented the sight sensor, and finished it up. I added a keycard item aswell (planned for something,) and i made the creative tab (attach 3) day 3: i added the functionality for sight sensors on contraptions, and i added functionality to make them activate when looking at each other, so you can basically make wireless redstone. I also added Finiranium & Finiranium Ore. Finiranium is a new material im adding to the mod, it can give you end sickness if you are around it to much, and you will be able to use it to make devices like entity detection goggles. (lets you see invis entities.) day 4: I did more work on finiranium, and i gave it a cool name. It can also generate in the end now. (attach 4 & 5) I also added End Sickness, which changes your hunger bar, and heart icons. It will split your hunger, and health bars by a certain amount depending on the level. day 5 & 6 (today) I’ve been doing a lot of work looking at minecraft’s rendering, trying to make some sort of effects for the goggles. I did a lot of work with post processing, and other rendering. However, i think i figured something out. Since it appears that I’ve hit my attachment cap, ill post images of me working on this soon.
I’ve actually added the finigoggles item, and i made a custom model for them too. right now im working on making a custom renderer to recreate kinda what the metal gear solid 1 goggles look like.
i updated the goggles model, and made them glow in the dark. I also finished the post processing effects that happen when you put them on. I still need to make invisible entities visible with them on.
now you can see invis entities! im imagining a really cool stealth mission being done with this mod… especially since you can see people wearing them in darkness
End sickness is now implemented, you get it from being near finiranium, or having it in your inventory. In the attached video, (recorded before i added the inventory sickening,) You can see how it works, you can actually barely survive it if you have low hunger, but if you heal to a certain point, depending on the level, it hurts you, also depending on the level. Next features coming up: Electric Camo & Entity Sensors Also, this video is a bit old, so some of the other things i added will be in future devlogs. OK I SWEAR THIS VIDEO WILL NOT WORK, YOU DONT GET IT, SORRY
Ive added a new liquid: Liquid Finiranium. Its going to be used to refil electric camo. Also, since liquid finiranium is so extremely deadly, im gonna raise the threshold for getting end sickness, and im also gonna add ways to prevent end sickness
im starting to add lazer diodes, they will let you detect when something is blocking a lazer. Kinda like a sight sensor, but no sight. Ive been trying to figure out how to make the lazer, and ive got a good start as you can see. In the second image you can see the lazer, (left,) and the receiver you get from wrenching it, (right.) With the advanced versions you will only need one lazer.
the laser renders properly. Now the laser sensor can actually shoot a proper laser. Also I learned how to actually spell laser. Now, I just need to do i bit more fine tuning, and then i need to make the thing actually function. And then i need to add the contraption behaviour… which hopefully wont be to hard… yay the video upload wont work again! heres a link to it instead https://file.garden/ZPu7YidXf2vX5nJR/Screen%20Recording%202026-06-29%20192129.mp4 (i was trying hackclub cdn, but i think thats the issue)
now the laser works on contraptions. The laser diode now visually work on contraptions… but due to create limitations, they don’t actually function… anyways, im gonna make a ponder now, then ill probably make a config. Ive also fixed a bunch of issues with the rendering of the lasers. And i also fixed an issue with me not knowing that the block entity renderers where shared across all of them, therefore the lasers would change length weridly from other lasers…
I’ve added some QoL stuff, I added a feature where you can adjust the eye offset of the finiranium goggles, its a bit glitchly right now, but its fine. I’ve also added a config, for now only for the client. So far there is only one setting for the flicker of a laser. (you can see it at its default in the gif)
recipes, recipes, come get your recipes here now everything has a recipe! ive also added some more items to make these recipes more intuitive. Ill try to show some recipes in the attachments. Next im gonna make a server config for stuff like end sickness, and then im gonna raise the default for end sickness to make it a bit easier to avoid. ill release an alpha version for testing soon, its not gonna be my ship though. (also, the missing texture thing are the empty finiranium goggles, idk why they dont work)
con-figured i should make some more configs before first version I’ve made a bunch of configurable options, there are definity more i could add, but this is good enough for the first alpha version. Now i just need to finish the modrinth page, and add a readme.
I’ve finished setting up my modrinth page, (and curseforge page,) and now im waiting for review. Ill pause development while i wait for it to be put up on at least modrinth. https://modrinth.com/mod/create-security https://www.curseforge.com/minecraft/mc-mods/create-stealth-security/preview
i swear ive made this devlog 3 times already… The mod is now on modrinth , and curseforge . I would reccomend trying it out, as i want to make sure its balenced enough for its beta. Now that its on modrinth, I’ve been working on some updates. Currently im adding the Finiranium Sensor, whichs shows you when Finiranium is nearby; (ignore the debug outline in the screenshot.) Im also planning on adding the next blocks & items before the beta: Chunk Detector : Detects when Players/Entities enter a chunk Advanced Sight Sensor/Laser Diode Keycard stuff Smarter Observer (wip name) : Logs players’ interactions with a block
Finished the finiranium sensor, and added some config values about username obfuscation when invisible. (Got the idea from seeing it in a lifesteal video) Ill release version 0.1.1 now.
starting to work on the Chunk Detector. I’ve started adding the new block, the Chunk Detector, which will log entries and exits of each entity in a chunk. It will log these in a new item, the Log. You will be able to use it to see different timed events of different blocks, like the Advanced Sight Sensor when i add it.
devlog 17 or 16, im tired alright, i put the chunk detector aside, and ive done a bunch of work on logs. Mostly just me trying to figure out how the hell Create’s menus work because they have no dev wiki 😔… anyways, the log now has a texture ive done twice trying to figure out how to make it look like a piece of paper, and i also make a screen; (ignore how its using the old texture.) The log is gonna be usable between different blocks as i said, and each entry is gonna have a target player or entity, message, and timestamp. And i might also add the source block. I also forgot that i forgot to add a recipe to the finiranium detector…
devlog 18… 9 hours 😅 ok so i normally would have devlogged after i got the ui done… but this ended up taking more time than i thought… I finished the ui of the log, it took most of the time, and i also kinda did everything… ui is done, i added some helpful utilities for loggable blocks, you can log things, omg this took so long, but there is really nothing else to say 😔..yet there are still a bunch of random things i need to fix
devlog 19… these features are quite difficult to fine tune video cause stardance doesn’t work alright so 8 hours again… this time i only did one feature, (and maybe some bug fixes…) The chunk detector is finally done! Now you can drop a log in, and try to catch that person stealing your diamonds every night! formatting and other things aswell I also fixed some formatting for things like tooltips, so they are much nicer to look at now. I also made the log screen bigger. devlog 18… these features are quite difficult to fine tune alright so 8 hours again… this time i only did one feature, (and maybe some bug fixes…) The chunk detector is finally done! Now you can drop a log in, and try to catch that person stealing your diamonds every night! formatting and other things aswell I also fixed some formatting for things like tooltips, so they are much nicer to look at now. I also made the log screen bigger. oh yea stress The two kinetic blocks; the Laser Diode, and Chunk detector also actually consume stress units now, actually the laser diode doesn’t yet… but it will… and ill increase the speed req of it. oh yea stress The two kinetic blocks; the Laser Diode, and Chunk detector also actually consume stress units now, actually the laser diode doesn’t yet… but it will… and ill increase the speed req of it. now ill add a feature to obfuscate a players skin if they are invis.
devlog 20, normal time now vid link: https://youtu.be/H_7fsU2BupI alright, im probably gonna ship soon. so i focaused on some touch up features. recipes everything has recipes now, even adding the finiranium sensor recipe that i forgot last update. summaries everything also has shift summaries, so now people can actually learn how to use the mod I also added Nether Glass, right now it’s only used for the chunk detector recipe, but it will be able to block end sickness later on. I’ll be mainly prioritizing my other project https://stardance.hackclub.com/projects/336 after this ship, but ill probably work on this a bit more.
Ships:
Create: Stealth & Security is a Minecraft mod for 1.21.1 Neoforge that I decided to make because I like being able to spy on people… This is the first neoforge mod I’ve developed & published. I would reccomend playing this with the modrinth app if you already have it, with JEI and Jade ....
|
1792997800.9221249
|
1793084200.9221249
|
|
68420
|
Create a website for Brilliant Minds Ambassador Create a website for Brilliant Minds Ambassador's Club by @ranocode | Stardance...
|
ranocode
|
1
|
89.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T19:10:47Z", "hours": 89.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a full-stack website with CMS functionality for BMAC which a public speaking and writing club here in Jos that trains and empower youths. And one of the things I’m of i been able to make the website user friendly and simple for them to be able to use and manage even if I’m not available", "repo": "https://github.com/ranocodes/bmac-next", "demo": "https://bmac-next.vercel.app/"}]...
|
[{"post_id": 77647, "ts": "202 [{"post_id": 77647, "ts": "2026-10-07T18:55:41Z", "hours": 89.3308, "text": "Guy i just finished building a website for Brilliant Minds Ambassador’s Club(BMAC).You can check it by visiting https://bmac-next.vercel.app/"}]...
|
Title: Create a website for Brilliant Minds Ambass Title: Create a website for Brilliant Minds Ambassador's Club by @ranocode | Stardance
Devlogs:
Guy i just finished building a website for Brilliant Minds Ambassador’s Club(BMAC).You can check it by visiting https://bmac-next.vercel.app/
Ships:
I built a full-stack website with CMS functionality for BMAC which a public speaking and writing club here in Jos that trains and empower youths. And one of the things I’m of i been able to make the website user friendly and simple for them to be able to use and manage even if I’m not available...
|
1793065809.053448
|
1793152209.053448
|
|
5762
|
RPGproject by @4ermine | Stardance
|
4ermine
|
0
|
88.46
|
0
|
[]
|
[{"post_id": 79613, "ts": "202 [{"post_id": 79613, "ts": "2026-10-14T18:29:12Z", "hours": 28.2375, "text": "DEVLOG #08 Coming back to this after a long time, I’ve been working on the castle map and office map. The next thing I’ll be doing is adding NPCs, castle wall borders, and the exam gameplay in the office. What’s New Castle exterior map Castle pan added Castle interior map Office map New additions to train map Camera pan update What’s Next Finish office and castle maps Use exam code to add the exam to the game NPCs!"}, {"post_id": 41845, "ts": "2026-08-06T09:56:00Z", "hours": 10.6997, "text": "DEVLOG #07 I’ve been working on my castle/academy pixel art recently. I am also planning to add an inventory function… Most of my recent work is in the form of just code, so I don’t have anything visual to show for it. What’s New Code for exam and training system Code for castle pan What’s Next New maps and pixel art Inventory system?"}, {"post_id": 29371, "ts": "2026-07-16T08:47:50Z", "hours": 12.2011, "text": "DEVLOG #06 I’m currently working on the code for my future entrance exam scene. Unfortunately I don’t have any visuals to post for it yet! Since I haven’t posted my updated battle sequence and NPC follow mechanic despite mentioning it, I dedicate this devlog to showing a little snippet of it."}, {"post_id": 25803, "ts": "2026-07-10T08:30:47Z", "hours": 4.5844, "text": "DEVLOG #05 Almost done with the train’s interior! I still have to add the scrolling bg on the window. What’s new: Train door animation NPCs in subway car: dialogue, sprites, animations NPC walk/follow mechanic in later game What’s next: Scrolling bg Polish maps/add objects Enemy attack animation…"}, {"post_id": 25210, "ts": "2026-07-09T10:03:45Z", "hours": 16.8678, "text": "DEVLOG #04 The train station map has been updated. Using aseprite, I designed a new train/subway and proper wall tiles for the map. Other new additions: Tutorial battle completed, including scripted loss and second battle with NPC icons and dialogue to aid the player New NPC walking cutscene New dialogue and updated older dialogue to ensure clarity Battle UI instruction panel for keyboard mechanics Forest map updated with redesigned train station as well What’s next: Animate train doors Add objects and NPCs to station map Complete train interior scene Still working on enemy attack animation…"}, {"post_id": 14022, "ts": "2026-06-23T00:20:47Z", "hours": 9.1156, "text": "DEVLOG #03 It’s been a while… the overall battle ui is almost done! What’s new: Adaptable party panel (characters can be added and removed) Action menu with four options + key navigation Unique skills for each party member Items and ability to select target party member Attack menu for writing code (currently only one problem type) Background + enemy drawing Escape button mechanics to exit attack, skill, and items menu What’s next Finish the attack animation for the enemy Modify first battle encounter to fit storyline goals Add option for a speaker name on top of dialogue box (for new character introductions)"}, {"post_id": 3932, "ts": "2026-06-07T01:53:36Z", "hours": 3.86, "text": "DEVLOG #02 Working on pixel art and adding new tiles + objects to the forest map."}, {"post_id": 1841, "ts": "2026-06-04T01:43:24Z", "hours": 2.8969, "text": "DEVLOG #01 Spent way too long working on the bare bones of the battle UI for the game. No art or background yet… but at least it works. Next steps: add functionality to all four buttons add timer to text input box draw player/party panel polish visuals"}]...
|
Title: RPGproject by @4ermine | Stardance
Devlogs Title: RPGproject by @4ermine | Stardance
Devlogs:
DEVLOG #01 Spent way too long working on the bare bones of the battle UI for the game. No art or background yet… but at least it works. Next steps: add functionality to all four buttons add timer to text input box draw player/party panel polish visuals
DEVLOG #02 Working on pixel art and adding new tiles + objects to the forest map.
DEVLOG #03 It’s been a while… the overall battle ui is almost done! What’s new: Adaptable party panel (characters can be added and removed) Action menu with four options + key navigation Unique skills for each party member Items and ability to select target party member Attack menu for writing code (currently only one problem type) Background + enemy drawing Escape button mechanics to exit attack, skill, and items menu What’s next Finish the attack animation for the enemy Modify first battle encounter to fit storyline goals Add option for a speaker name on top of dialogue box (for new character introductions)
DEVLOG #04 The train station map has been updated. Using aseprite, I designed a new train/subway and proper wall tiles for the map. Other new additions: Tutorial battle completed, including scripted loss and second battle with NPC icons and dialogue to aid the player New NPC walking cutscene New dialogue and updated older dialogue to ensure clarity Battle UI instruction panel for keyboard mechanics Forest map updated with redesigned train station as well What’s next: Animate train doors Add objects and NPCs to station map Complete train interior scene Still working on enemy attack animation…
DEVLOG #05 Almost done with the train’s interior! I still have to add the scrolling bg on the window. What’s new: Train door animation NPCs in subway car: dialogue, sprites, animations NPC walk/follow mechanic in later game What’s next: Scrolling bg Polish maps/add objects Enemy attack animation…
DEVLOG #06 I’m currently working on the code for my future entrance exam scene. Unfortunately I don’t have any visuals to post for it yet! Since I haven’t posted my updated battle sequence and NPC follow mechanic despite mentioning it, I dedicate this devlog to showing a little snippet of it.
DEVLOG #07 I’ve been working on my castle/academy pixel art recently. I am also planning to add an inventory function… Most of my recent work is in the form of just code, so I don’t have anything visual to show for it. What’s New Code for exam and training system Code for castle pan What’s Next New maps and pixel art Inventory system?
DEVLOG #08 Coming back to this after a long time, I’ve been working on the castle map and office map. The next thing I’ll be doing is adding NPCs, castle wall borders, and the exam gameplay in the office. What’s New Castle exterior map Castle pan added Castle interior map Office map New additions to train map Camera pan update What’s Next Finish office and castle maps Use exam code to add the exam to the game NPCs!...
|
1792745362.326075
|
1793350162.326075
|
|
47578
|
Digital Compass by @Luminix | Stardance
|
Luminix
|
1
|
88.36
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T17:21:34Z", "hours": 38.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🎉 The theoretical content for all the modules is finally complete! Now I’m focusing on translating the content into English and polishing everything.", "repo": "https://github.com/lucianahernandezgutierrez77-jpg/brujula-digital", "demo": "https://lucianahernandezgutierrez77-jpg.github.io/brujula-digital/"}]...
|
[{"post_id": 81379, "ts": "202 [{"post_id": 81379, "ts": "2026-10-21T02:25:52Z", "hours": 8.8906, "text": "The activity for module 4 is finally finished :)"}, {"post_id": 79430, "ts": "2026-10-13T23:03:07Z", "hours": 11.1847, "text": "Finished designing the Deepfakes activity! Now working on its functionality."}, {"post_id": 68926, "ts": "2026-09-16T01:46:03Z", "hours": 12.1794, "text": "I created a simple living room with a computer, sofa, window, and other decorations. The scene will lead into the computer activity."}, {"post_id": 59619, "ts": "2026-09-01T15:15:18Z", "hours": 8.265, "text": "Today I’m working on the interactive activity for module 3! I’m currently adding structure and visual design 🖥️⌨️ There’s still a lot of work to build, but I’m excited to see it finally come together :)"}, {"post_id": 53104, "ts": "2026-08-23T15:17:20Z", "hours": 9.8364, "text": "Today I worked on the interactive activity for Module 2. I implemented the question structure and started integrating the activity with the project’s translation system 🧭"}, {"post_id": 47717, "ts": "2026-08-15T20:16:30Z", "hours": 3.935, "text": "Currently working on translating Digital Compass from Spanish to English! :) Making sure everything sounds natural in both languages. ✨"}, {"post_id": 46572, "ts": "2026-08-13T21:59:14Z", "hours": 33.9433, "text": "Today I’m working on the interactive activity for Module 1. It encourages users to take breaks after spending time on a computer. I’m currently working on the walking animation and the questions that appear during the activity."}]...
|
Title: Digital Compass by @Luminix | Stardance
De Title: Digital Compass by @Luminix | Stardance
Devlogs:
Today I’m working on the interactive activity for Module 1. It encourages users to take breaks after spending time on a computer. I’m currently working on the walking animation and the questions that appear during the activity.
Currently working on translating Digital Compass from Spanish to English! :) Making sure everything sounds natural in both languages. ✨
Today I worked on the interactive activity for Module 2. I implemented the question structure and started integrating the activity with the project’s translation system 🧭
Today I’m working on the interactive activity for module 3! I’m currently adding structure and visual design 🖥️⌨️ There’s still a lot of work to build, but I’m excited to see it finally come together :)
I created a simple living room with a computer, sofa, window, and other decorations. The scene will lead into the computer activity.
Finished designing the Deepfakes activity! Now working on its functionality.
The activity for module 4 is finally finished :)
Ships:
🎉 The theoretical content for all the modules is finally complete! Now I’m focusing on translating the content into English and polishing everything....
|
1792979718.040954
|
1793066118.040954
|
|
20935
|
zod by @AhmedKhaledAhmed | Stardance
|
AhmedKhaledAhmed
|
2
|
88.28
|
1014
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T17:40:20Z", "hours": 44.0, "multiplier": 13.43, "payout": 593, "blessing": "neutral", "text": "ZodLang is a small, interpreted, dynamically-typed language implemented in Go and inspired by Thorsten Ball’s Writing an Interpreter in Go and Writing a Compiler in Go. It is designed to be small, simple, and easy to use. It is not a general-purpose replacement for Python or Ruby. Instead, it is built for people who want to enjoy programming and learn at the same time. The initial version was a tree-walk interpreter, but now it is a VM. I created the new version Tetris, a 3D cube simulation, and a minimal version of vim. And you can do more.", "repo": "https://github.com/theawakener0/Zod", "demo": "https://github.com/theawakener0/Zod/releases/latest"}, {"ship_num": 2, "ts": "2026-08-27T20:22:35Z", "hours": 36.0, "multiplier": 11.59, "payout": 421, "blessing": "neutral", "text": "Zod is a small, interpreted, dynamic typed language for joyful programming you can build many things from 2D terminal games to tiny ml experiments and more.", "repo": "https://github.com/theawakener0/Zod", "demo": "https://github.com/theawakener0/Zod/releases/latest"}]...
|
[{"post_id": 80179, "ts": "202 [{"post_id": 80179, "ts": "2026-10-16T15:48:10Z", "hours": 8.2819, "text": "DevLog#19 — Currently, I am testing and seeing what I can built using ZodLang. And I built with ZodLang a minimal Codex-like AI harness. It is cool, but needs more work. Stay tuned…."}, {"post_id": 77108, "ts": "2026-10-05T17:28:26Z", "hours": 3.4997, "text": "DevLog#18 — I created a minimal version of vim using ZodLang. Before submitting, I got the idea to recreate a minimal version of vim using ZodLang to show how the language works. I am ready to ship…"}, {"post_id": 76077, "ts": "2026-10-02T08:26:29Z", "hours": 4.8414, "text": "DevLog#17 — I fixed the term library in the stdlib and added raw mode to it (Made it cross-platform). I am currently on version 0.7.0 , and I think I am ready to ship the new version of ZodLang…"}, {"post_id": 75219, "ts": "2026-09-29T14:40:10Z", "hours": 7.1428, "text": "DevLog#16 — I built a 3D cube simulation, and Tetris using ZodLang. Yeah, the language is currently able to build things, Cool things. And this is just the beginning. ZodLang started as a simple toy language and now it is on the road of becoming a full programming language. Thank you all for helping……."}, {"post_id": 73498, "ts": "2026-09-25T07:42:48Z", "hours": 3.7936, "text": "DevLog#15 — I finished the bytecode compiler and vm!!!!!!!!!!!!!!!!!!!!! Also, I have added a full module system to the language, and made the language a bit clean. I will improve the built-ins function and add a full stdlib . Also, the Demo for the current in developing version will be cool….. Wish me luck…"}, {"post_id": 69739, "ts": "2026-09-17T18:04:39Z", "hours": 3.5044, "text": "DevLog#14 — I have added Closures and I can finally said I finished ZodLang bytecode compiler and vm ( I mean that I just finished the core of the language ). The coming DevLogs will be fire……. Stay tuned………"}, {"post_id": 68021, "ts": "2026-09-14T12:08:53Z", "hours": 8.0092, "text": "DevLog#13 — I have added functions and builtins-functions to the bytecode compiler and the vm. Yeah, I spent like a week on this phase, it was hard, but the results of this phase is unlimited. I have completed 70% of the language. I hope ZodLang really turn to be something great. Wish me luck. And stay tuned for the cool things coming."}, {"post_id": 61366, "ts": "2026-09-04T07:35:36Z", "hours": 2.5022, "text": "DevLog#12 — I have added Strings , Arrays , and Hashes to the bytecode compiler and the vm. I thought at first that it would be hard, but turns out it was smooth and easy. Well, not that easy because the Hashes had an issue that I discovered later when I tested the repl, turns out the Hashes doesn’t appear in the repl, but it worked in the tests, so that was weird, but I solved it by keeping track of the order of Hashes . I must continue the bytecode compiler and the vm by adding functions, and built-in functions. Wish me luck……."}, {"post_id": 60792, "ts": "2026-09-03T11:57:16Z", "hours": 1.7017, "text": "DevLog#11 — I have added variables to the bytecode compiler and the vm. Mostly, it was easy, but the assigning char := was a bit tricky to implement in the bytecode compiler and the vm. I made a global environment for setting and getting the values in the variables. I must now focus on implementing / adding strings, arrays, and hashes. Wish me luck……"}, {"post_id": 60112, "ts": "2026-09-02T08:36:53Z", "hours": 1.7417, "text": "DevLog#11 — Finished adding the other comparison expression. I implemented if conditions to the bytecode compiler and the vm. It worked just fine, but It was tense ordering the instructions to make the compiler compile the if condition in a good way. I must now start by adding else-if, and variables. Wish me luck."}, {"post_id": 59450, "ts": "2026-09-01T09:44:41Z", "hours": 2.9603, "text": "DevLog#10 — Finished adding FLOAT_OBJ to the bytecode compiler and vm. Also, supported the operations +, -, *, / . I Implemented BOOLEAN_OBJ and comparison expression in the bytecode compiler and vm too. I will work now on adding more ways in the comparison expression. Also, adding if conditions."}, {"post_id": 58849, "ts": "2026-08-31T13:02:11Z", "hours": 4.44, "text": "DevLog#9 — Currently, Implementing the bytecode compiler and VM. I managed to to finish the initial part of the compiler and the vm. I was able to add integers, it can’t add float and it can’t do any operation other than addition. What I will do now is to add float to compiler so I can add them, and then I will I will add the other operation. I hope this bytecode compiler phase works good, so I can implement the full compiler so Zod could be like Go, Zig, and Rust in the future."}, {"post_id": 55675, "ts": "2026-08-27T17:14:20Z", "hours": 8.3244, "text": "DevLog#8 — Zod is finally here. I finished building the interpreter phase (Yeah, Zod will be a compiled language soon). I added MATRIX_OBJ and that opens ways to build cool things with the language like this demo of Conway’s game of life built in Zod. Cooool!!!!!!! right."}, {"post_id": 41354, "ts": "2026-08-05T14:45:04Z", "hours": 5.5675, "text": "DevLog #7 — I have added hash map in Zod. Also added hash built-in functions like insert() , remove() , contains() , keys() , vals() . NOTE: The hash map is randomized due to Go maps logic."}, {"post_id": 38285, "ts": "2026-07-31T16:25:59Z", "hours": 3.4467, "text": "DevLog #6 — Zod finally has built-in functions, not many, but still good. Zod has len() , println() , printf() , input() , int() , string() , and type() . Also I have added string datatype, for-loop , and a loop {} statement like in Rust. Zod is becoming better day after day and I hope it become a great small language."}, {"post_id": 36622, "ts": "2026-07-28T21:00:05Z", "hours": 4.0358, "text": "DevLog #5 — Zod is finally functional. After I have built the evaluator and added it to the REPL, Zod became a fully function language, Its not a full language, but its still functional. I still have to add more datatypes and built-in functions since it only has integers and boolean , and no built-in function . Zod is becoming a programming language day after day and I think the of its becoming a programming language is near."}, {"post_id": 35237, "ts": "2026-07-26T15:14:47Z", "hours": 3.3225, "text": "DevLog #4 — I have added FunctionLiteral , CallExpressions , and IfExpressions . Also, updated the REPL with the parser. Now, I will start working on the Evaluation."}, {"post_id": 32218, "ts": "2026-07-21T07:51:01Z", "hours": 7.6453, "text": "DevLog #3 –– Today I made significant progress on Zod’s parser. The parser can now handle: Let statements , Assignment statements , Return statements , Infix expressions , Prefix expressions , and Boolean literals . There’s still plenty of work to do, but the parser is taking shape and the language is starting to feel real. My goal with Zod remains the same: to create a programming language that puts learning first while still being capable of building interesting and practical projects."}, {"post_id": 11573, "ts": "2026-06-18T21:13:14Z", "hours": 1.5856, "text": "Finally, I built the repl foundation, but the AST, parser, and eval are still left. Wish me luck…."}, {"post_id": 10682, "ts": "2026-06-17T15:24:19Z", "hours": 2.4353, "text": "Currently, expanding the lexer of zod. I am planning to make zod have mixed syntax between C, Go, and Rust."}]...
|
Title: zod by @AhmedKhaledAhmed | Stardance
Devlo Title: zod by @AhmedKhaledAhmed | Stardance
Devlogs:
Currently, expanding the lexer of zod. I am planning to make zod have mixed syntax between C, Go, and Rust.
Finally, I built the repl foundation, but the AST, parser, and eval are still left. Wish me luck….
DevLog #3 –– Today I made significant progress on Zod’s parser. The parser can now handle: Let statements , Assignment statements , Return statements , Infix expressions , Prefix expressions , and Boolean literals . There’s still plenty of work to do, but the parser is taking shape and the language is starting to feel real. My goal with Zod remains the same: to create a programming language that puts learning first while still being capable of building interesting and practical projects.
DevLog #4 — I have added FunctionLiteral , CallExpressions , and IfExpressions . Also, updated the REPL with the parser. Now, I will start working on the Evaluation.
DevLog #5 — Zod is finally functional. After I have built the evaluator and added it to the REPL, Zod became a fully function language, Its not a full language, but its still functional. I still have to add more datatypes and built-in functions since it only has integers and boolean , and no built-in function . Zod is becoming a programming language day after day and I think the of its becoming a programming language is near.
DevLog #6 — Zod finally has built-in functions, not many, but still good. Zod has len() , println() , printf() , input() , int() , string() , and type() . Also I have added string datatype, for-loop , and a loop {} statement like in Rust. Zod is becoming better day after day and I hope it become a great small language.
DevLog #7 — I have added hash map in Zod. Also added hash built-in functions like insert() , remove() , contains() , keys() , vals() . NOTE: The hash map is randomized due to Go maps logic.
DevLog#8 — Zod is finally here. I finished building the interpreter phase (Yeah, Zod will be a compiled language soon). I added MATRIX_OBJ and that opens ways to build cool things with the language like this demo of Conway’s game of life built in Zod. Cooool!!!!!!! right.
DevLog#9 — Currently, Implementing the bytecode compiler and VM. I managed to to finish the initial part of the compiler and the vm. I was able to add integers, it can’t add float and it can’t do any operation other than addition. What I will do now is to add float to compiler so I can add them, and then I will I will add the other operation. I hope this bytecode compiler phase works good, so I can implement the full compiler so Zod could be like Go, Zig, and Rust in the future.
DevLog#10 — Finished adding FLOAT_OBJ to the bytecode compiler and vm. Also, supported the operations +, -, *, / . I Implemented BOOLEAN_OBJ and comparison expression in the bytecode compiler and vm too. I will work now on adding more ways in the comparison expression. Also, adding if conditions.
DevLog#11 — Finished adding the other comparison expression. I implemented if conditions to the bytecode compiler and the vm. It worked just fine, but It was tense ordering the instructions to make the compiler compile the if condition in a good way. I must now start by adding else-if, and variables. Wish me luck.
DevLog#11 — I have added variables to the bytecode compiler and the vm. Mostly, it was easy, but the assigning char := was a bit tricky to implement in the bytecode compiler and the vm. I made a global environment for setting and getting the values in the variables. I must now focus on implementing / adding strings, arrays, and hashes. Wish me luck……
DevLog#12 — I have added Strings , Arrays , and Hashes to the bytecode compiler and the vm. I thought at first that it would be hard, but turns out it was smooth and easy. Well, not that easy because the Hashes had an issue that I discovered later when I tested the repl, turns out the Hashes doesn’t appear in the repl, but it worked in the tests, so that was weird, but I solved it by keeping track of the order of Hashes . I must continue the bytecode compiler and the vm by adding functions, and built-in functions. Wish me luck…….
DevLog#13 — I have added functions and builtins-functions to the bytecode compiler and the vm. Yeah, I spent like a week on this phase, it was hard, but the results of this phase is unlimited. I have completed 70% of the language. I hope ZodLang really turn to be something great. Wish me luck. And stay tuned for the cool things coming.
DevLog#14 — I have added Closures and I can finally said I finished ZodLang bytecode compiler and vm ( I mean that I just finished the core of the language ). The coming DevLogs will be fire……. Stay tuned………
DevLog#15 — I finished the bytecode compiler and vm!!!!!!!!!!!!!!!!!!!!! Also, I have added a full module system to the language, and made the language a bit clean. I will improve the built-ins function and add a full stdlib . Also, the Demo for the current in developing version will be cool….. Wish me luck…
DevLog#16 — I built a 3D cube simulation, and Tetris using ZodLang. Yeah, the language is currently able to build things, Cool things. And this is just the beginning. ZodLang started as a simple toy language and now it is on the road of becoming a full programming language. Thank you all for helping…….
DevLog#17 — I fixed the term library in the stdlib and added raw mode to it (Made it cross-platform). I am currently on version 0.7.0 , and I think I am ready to ship the new version of ZodLang…
DevLog#18 — I created a minimal version of vim using ZodLang. Before submitting, I got the idea to recreate a minimal version of vim using ZodLang to show how the language works. I am ready to ship…
DevLog#19 — Currently, I am testing and seeing what I can built using ZodLang. And I built with ZodLang a minimal Codex-like AI harness. It is cool, but needs more work. Stay tuned….
Ships:
Zod is a small, interpreted, dynamic typed language for joyful programming you can build many things from 2D terminal games to tiny ml experiments and more.
ZodLang is a small, interpreted, dynamically-typed language implemented in Go and inspired by Thorsten Ball’s Writing an Interpreter in Go and Writing a Compiler in Go. It is designed to be small, simple, and easy to use. It is not a general-purpose replacement for Python or Ruby. Instead, it is built for people who want to enjoy programming and learn at the same time. The initial version was a tree-walk interpreter, but now it is a VM. I created the new version Tetris, a 3D cube simulation, and a minimal version of vim. And you can do more....
|
1792979744.5228577
|
1793066144.5228577
|
|
71190
|
Aariv's web studio by @aarivpatel | Stardance
|
aarivpatel
|
0
|
88.05
|
0
|
[]
|
[{"post_id": 82314, "ts": "202 [{"post_id": 82314, "ts": "2026-10-24T15:20:58Z", "hours": 88.0472, "text": "Big catch-up post for my studio work. Since late August I have been running my web-design studio out of one workspace: I direct AI coding agents (OpenCode, Claude Code, Antigravity) that do the typing while I plan the sites, review every change and test the results. In this window the studio shipped charity websites, a batch of small contest tools (public copies on my GitHub), updates to my portfolio at aariv.me, and the planning and review docs that keep the pipeline honest. Most of my logged time is Markdown for a reason: directing agents well is mostly writing precise specs and reading their output carefully. Next up: a tighter devlog cadence instead of one giant backfill. Screenshot: my portfolio, aariv.me."}]...
|
Title: Aariv's web studio by @aarivpatel | Sta Title: Aariv's web studio by @aarivpatel | Stardance
Devlogs:
Big catch-up post for my studio work. Since late August I have been running my web-design studio out of one workspace: I direct AI coding agents (OpenCode, Claude Code, Antigravity) that do the typing while I plan the sites, review every change and test the results. In this window the studio shipped charity websites, a batch of small contest tools (public copies on my GitHub), updates to my portfolio at aariv.me, and the planning and review docs that keep the pipeline honest. Most of my logged time is Markdown for a reason: directing agents well is mostly writing precise specs and reading their output carefully. Next up: a tighter devlog cadence instead of one giant backfill. Screenshot: my portfolio, aariv.me....
|
1792856821.4827006
|
1793461621.4827006
|
|
56007
|
Too Much Time In The Arcade by @iboo | Stardance
|
iboo
|
1
|
88.03
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-17T20:29:07Z", "hours": 63.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "“Too Much Time In The Arcade” is a WarioWare-style game that is set in an arcade, as you might guess. It has currently two minigames. These minigames are a platformer and a snake minigame. All of these minigames have their own respective arcade consoles that you can interact with. Your goal is to get a total of score of 400 points to win. You can get all of your points in the platformer or in the snake minigame. There are no limitations. I had a lot of fun time coding, designing and learning Godot for this project. This is my first attempt to develop a game and I find it pretty good for a first try. Although I faced some challenges, I managed to solve nearly all of them. I also learned how to debug code while doing this project. I am very proud of how it turned up. And I hope you have a great time playing it. If you want to try the game, click the “Try project ->” button. When you click it, you will be sent to my itch.io site and you will be able to play the game! To people testing my game. I want to let you know that the platformer minigame has a way smaller hitbox compared to the player sprite. This makes it a ton more doable. Thank you for all of your support I hope you have a FANTASTIC time playing my game!! Kendinize iyi bakın! Bye! Note: “Kendinize iyi bakın!” is “Take care of yourselves!” in my native language, Turkish :)", "repo": "https://github.com/iboobey/too-much-time-in-arcade", "demo": "https://ibrahimbeyinli.itch.io/too-much-time-in-the-arcade"}]...
|
[{"post_id": 82744, "ts": "202 [{"post_id": 82744, "ts": "2026-10-25T18:33:36Z", "hours": 7.6817, "text": "DEVLOG #010 - SOUNDS Double digit devlogs!! So I started doing something that I never ever tried once. Sound design. Although I play the drums for like 3 - 4 years I never tried doing anything related to sound and music in a computer before. And I am pretty damn bad at it rn. I made 2 kind of sound / music. SFX (Sound Effects) and theme musics. Sound Effects I used a program called “Chiptone”. It is a program specifically designed for indie sound effects. It has a lot of tools to make SFX. I liked it a LOT. Anyways, I made some effects for: game consoles, when you lose, when you get to a certain height in platformer, when you die in dino run, when you eat an apple in snake, when a Tetris block lands, when a Tetris column is finished and when you win. These actually turned up pretty good. I am proud of them. Themes This is the part where I couldn’t do achieve what I wanted. I used LMMS -short for Linux Multi Media Studio- for the first time. It is very complicated and very powerful for a first-timer. I made 5 different ones. 1) Main Theme It turned up ~meh It is used for the title, settings and the main arcade scene. 2) Platformer Theme This was my first attempt. I went a little slow paced on this one. It turned up a bit better than most others and I am ok with it. I would give 7.5/10 for a first try. 3) Snake Theme This is absolutely horibble. I am disgusted to be the creator of this monstrosity. It might be because I didn’t really had any idea to what to do. I would give 2/10. I recommend turning of sound just for this. I want to change it but I don’t know if I have time left for that. 4) Tetris Theme As you all know a song for Tetris alreay exists and it is one of the best game songs of all time. It is addicting. I of course, used that theme song and added a little bit pizzazz to it. As I said I played the drums for a long while and one of the things I always wanted to do is to add a drums to Tetris theme song. I added a few drums and it turned up BEAUTIFUL. 10/10 for me. 5) Dino Run Theme This turned up … okay? It is not that bad but it is definitley not good. I am okay to keep it in but I might change it too. 4/10 These nearly took me 8 hours and I still didn’t add the settings screen to control the music levels. I will do that as the next thing. Thanks for reading this! İyi Akşamlar! Byes!"}, {"post_id": 81079, "ts": "2026-10-19T19:54:23Z", "hours": 10.9086, "text": "DEVLOG #009 - Dino Run Done! (Nearly…) Hope you had a good day. I finished (nearly) my fourth game, Dino Run ! It is my version of the game that you play when you don’t have internet in Chrome, Google Dino Run. I probably should stop explaining what these games are cause EVERYBODY, literally EVERYBODY knows what these games are. Fot the last time: Dino Run is a game that you are a dinosour -most of the time but it can change.- and you run. Obstacles and birds spawn while you run. You must jump when the obstacles get near, and ducck when the birds get near. Also you run faster and faster as the time goes on. Controls You can jump with SPACE and you can duck with SHIFT or CTRL . When you jump a timer starts, and you can’t jump until the timer timeouts. I said that I “NEARLY” finished the game. The unfinished part is actually a quiet important part. It is the losing mechanic. It is actually very easy to add but I didn’t want to get my hours wasted because of me not devlogging. I will finish that part until the next devlog and I might forget to mention adding that. You can think it as done for now. These are it for this devlog. I will probably add some sounds and some small updates to the existing games. And at the end of that If I have time left, I will ad more games. Thanks for being here. Kendinize iyi bakın! Cya!"}, {"post_id": 74942, "ts": "2026-09-28T17:26:36Z", "hours": 6.4428, "text": "DEVLOG #008 - TETRIS GAME DONE! Good Evening y’all! I was away for a few days making a project in thirdspace . Anyways I am working for this project at the side too. And this game was finished few days ago but I couldn’t find the time to post a devlog about it. Here it goes now! Since my last devlog I made my third minigame, Tetris ! I again don’t think that I have to explain what tetris is. LITTERALLY everybody knows it. But for those who lives under a rock: In the game “Tetris”, some blocks fall from the sky and you put them like a puzzle. There are a total of 7 different shaped called “tetrominoes”. They are randomly given to you so it is more complicated and more enjoyable. There is a grid that you are filling with these tetrominoes. When you fill a row with these tetrominoes they disappear and the ones on top of them fall down. Once you complete a row you also get 10 points. There are also some standart futures that every Tetris ccopy has. They are: When you hold “S” the tetrominoes fall faster, when you click “R” the tetrominoes rotate and there is a panel that shows you what piece is going to fall next. The way you lose is when you get nowhere left to place a tetrominoe. When you lose you can try again or quit to the arcade. Things I Will Add In The Future I plan to add some dificult setting in the future for snake and maybe to the other ones. I also plan to make at least 2 more minigames for my arcade. Thank you for reading this devlog! Görüşmek Üzere! See ya later!"}, {"post_id": 69790, "ts": "2026-09-17T19:53:34Z", "hours": 7.9931, "text": "DEVLOG #007 - LAST DEVLOG FROM THE FIRST SHIP! Good Evening Guyss!! I am ready to ship my project for the first warioware mission! Changes Added the winning screen, score system and most of the UIs. I also finished the timelapse that I was recording for a few days. And that Is included in the time spent for this devlog. Things I Want To Say I suspect that the I spent for this project will get deducted for unreasonable amount of time for a project. I want to say that I tried to do as much of the code as I can without getting it directly from the youtube tutorials and as a first time game dev that was reallly time consuming. I just wanted you to know that I tried my best to not to make any inflated time. That was all. :) If you are still here, thanks for reading. Hope the ship goes well! :D Görüşmek üzere! See you later!!"}, {"post_id": 68224, "ts": "2026-09-14T18:44:18Z", "hours": 12.4517, "text": "DEVLOG #006 - SNAKE MINIGAME DONE! Good Evening Everybody! My second minigame, snake, is DONE! Snake Minigame I don’t really want to explain what snake game is cause I don’t know a single person that is 10 - 20 years old and doesn’t know what snake game is. For Those Who Don’t Know: Snake is a game where you try to eat food (apples in my minigame) until you become too big. The main game mechanic is like this: You eat, you get longer and once you are too big to fit in the grid you win. I made the grid 20x20 so it would be big and a bit challenging. But to win the actual game you dont have to get all of the 400 cells in the grid. Also the texture of the apple changes and it has a easter egg. I have to say, It is not a very “suprising” easter egg. :) A Thing I Have To Do Before Shipping I have to add an ending and I also have to make the starting screen and the options page. Thank you a lot for reading this. Görüşmek üzere! See you later!"}, {"post_id": 65324, "ts": "2026-09-10T12:17:32Z", "hours": 2.0442, "text": "DEVLOG #005 - PLATFORMER MINIGAME DONE! Hey guys! I SOLVED THE BUG!! I also completed few other things. I will mention them later. Platformer Minigame Sooo this minigame is probably already known by everybody. But for those who don’t know it is like this: The main objective is to jump to the higher platforms. Your score increases higher you go. The catch is, there are 3 types of platforms. Normal Platform Breaking Platform Frozen Platform These work like this: Normal Platform: It works as you expect it to. It is a normal platform that doesn’t have a catch. You can wait until the end of time to think and plan your next move. Breaking Platform: This type of platform has a time limit how much you can wait on it. When you step on it for the first time a timer starts and when that timer finishes the platform breaks and you fall. It has 3 different sprites that you can see if you try. You can understand when it is about to break by looking at it. Frozen Platform: Lastly this type of platform is slippery. Just like ice. When you are on this platforms it is harder to build up momentum and wait in place. You generally want to be more cautious around this platform. But you also can use the slippery surface to your advantage in certain situations. At the very beginning the normal platforms spawn a lot more. But as you progress further breaking and frozen platforms starts to spawn a lot more. Having different types of platforms make the game harder and more enjoyable. The UI of the game These are a non-negotionable part of any game. When you enter to the minigame you see some red UI elemnts on the left side. They currently show 3 different things. Your current score, your highest score and your y level. The End (Death) Screen When you fall and die, this screen opens. It has 3 different elements in it. A highscore counter and 2 buttons. One of these buttons are to “Try Again” and the other one is “Quit Game”. You can click to whichever you want. THE MAIN GOAL OF THE GAME I don’t remember if I ever mentioned what is the main goal of the main game (Not the minigames). It is actually pretty simple. The goal is to earn a set amount of score from all of the minigames. I didn’t established an amount right now. That will probably be one of my last things to worry about. I also added some small features like the screen of the arcade console light up when you play the game."}, {"post_id": 65043, "ts": "2026-09-09T21:26:15Z", "hours": 11.4339, "text": "Devlog #004.5 - PLATFORMER UPDATES AND A PROBLEM Hi guys! Hope y’all are alright. Cause I have a big proble to solve. Platformer Minigame It is NEARLY done. It is actually 99.99 percent done. But because of a bug that I couldn’t figure out how to solve. I will explain how the minigame works when I am 100 percent done. I hopefully manage it out in a few hours. As for now I am making this devlog for logging my times to stardance. I’ll devlog when I manage to solve the bug! Cya!"}, {"post_id": 62837, "ts": "2026-09-06T11:23:40Z", "hours": 10.1958, "text": "DEVLOG #004 - PLATFORMER MINIGAME MECHANICS Good day everyobdy! Platformer Minigame Since the last devlog I coded the platformer minigame. I actually attempted to code it 3 times. These were how my attempts went like: It didn’t even work. The platform positioning was very bad. Most of the time it led to getting stuck. Best overall.The player can still get stuck, but it is way lower than to other attempts. I will use this for the minigame. Maybe I can play with the code little bit. I wanted to delete the platforms underneath to get rid of the unnecessary FPS loss. So I coded that. On top of that I made the ‘death_zone’, the zone you fall into when you fall from one of the platforms and lose, move when the player goes up. This makes the fall take much shorter and make the game way faster to replay. Platforms types for the minigame Before I start knoe that I currently use Godot’s own sprites for the platform but I will change that in the very near future. If you ever played something like Doodle Jump, you must know that there aren’t only 1 type of platform. There are like 3 types of it most of the time. Normal, breaking and 1 that makes you jump. I already made the normal platform. And I plan to make a few more to make it more interesting and to make it on the same tracks as the other minigames that are this. I want to make platforms with these features: 1. A platform that breakes. 2. A platform that it freezed and makes the player slide on it 3. A platform that makes the player jump higher. I will try to implement these until the next devlog. Other than that I have to make the assets for the minigame, I have to code the point system and some other little things. I probably am going to make devlog about this minigame again, after that I am going to start th e other minigames. Hope you had a good time reading this. İyi Günler! Bye!"}, {"post_id": 61398, "ts": "2026-09-04T09:12:43Z", "hours": 10.6069, "text": "DEVLOG #003 - TILESETS, ARCADE CONSOLES & INTERACTIONS Hi everyone! Hope y’all alright. I worked on my first tileset and my first interactive objects. Tilesets As I said, this was my first tileset. I wanted my game to be seen from a 40~45 degree angle. I wanted it to be look like a bit 3D although it is clearly 2D. I tried to do my best and I think it turned out pretty great. You can find the tileset in the end of this devlog. Arcade Consoles I first tried to make the sprites of these arcade consoles as a tileset to store it as one file. It turned out not so great. I rather use Godots Sprite2D node rather than using the TileMapLayer node. That way tweaking each sprite is a bit easier. But I can still change my mind cause I have an idea that I’ll be working on few days later. I first designed these sprites as a -I am not sure how to say it- directly front view. I already said that I wanted my art to be at a ~45 degree angle. So adjust the looks of the sprites. That made it a bit better but I am not really satisfied with them yet. I will probably redesign them. Interactions When I first started this project I didn’t had any ideas on how to make an interactable object in Godot. After watching some videos on youtube and a lot of trial and errors I manage to make an interactions system that works really good. The interactions is this: When you get close to any of the arcade consoles there is a text shown “[E] TO PLAY”, when you click “E” there will be a split second of the black screen on the console lighting up and shownig a screen accordingly to the game you are going to play after that split second you get sent into a new scene where the minigame will be. I didn’t yet coded nor drew the required thing for the screen lighting up but I will make them later. I think that these kinds of small things will be an important aspect of the gameplay feel. These are all of the things I have done until today. After these done I will start on making the first 2 minigames and finishing the menus. Hope you had a good time reading this, Görüşmek üzere! See ya later!"}, {"post_id": 59466, "ts": "2026-09-01T10:29:50Z", "hours": 7.6631, "text": "DEVLOG #002 - CHARACTER DESIGN I designed my first character !! I made the walking animation and the code for walking + sprinting. A thing I want this game to have is changeable skins. (e.g., different hair types, different shirt colors, different types of caps and more…) This made the code a lot more complicated. I also need to draw the sprites for all of these. I probably won’t make these feature until I ship this project for the WarioWare 1 mission. Minigame Ideas As you probably know this is a WarioWare game. Basically that means that there are a lot of minigames in it. And I wanted to make a list of the minigames I want to make to keep it as a note and show to you. List of Minigame Ideas: -Tetris -Chrome dino -Platformer -Frogger -Pong -Puzzle (This might be a little too big for a “mini”game) These are my ideas for now but I want to add more. I want at least 12 With this much minigames and things to do I probably have to make a save system and a scoreboard system. I’ll think about it more in the future. This is it for now! Thanks for reading :) Görüşürüz! See ya later!"}, {"post_id": 58191, "ts": "2026-08-30T15:26:59Z", "hours": 0.9497, "text": "DEVLOG #001 - New Project Hi everybody!! I was working on other hardware projects for a few weeks and I couldn’t seperate my time for stardance. This is my new project: “I am not sure about what to name it”. It is a game where you have to complete minigames and get to a certain score. With that score you can buy things from the shop. Like plushies, merch and other minigames. Your goal is to finish all of the minigames. I originally planned it to be about waiting and doing the minigames while you were bored of waiting. Thats why I named it “Waiting Room”. After some more thinkering I want to make it an arcade game. I thought that the arcade theme would fit the minigames and points thing. And the shop could be the point store. Right now I started to code the main things in Godot like the starting screen, character movements and some other stuff. Also my experience is very little with Godot so I will learn a lot of stuff with this project I plan to do the sprites for the main character next. It would probably easier to test the charactes with its sprites and animations. If you have any ideas for the name of the game, please write them in the comment section of this post. (I’m not really sure if it’s called that) Also I know that this post is very bad written and scrambled but that my bad. I will try to get it to be better :) Here is some photos of what I did:"}]...
|
Title: Too Much Time In The Arcade by @iboo | Star Title: Too Much Time In The Arcade by @iboo | Stardance
Devlogs:
DEVLOG #001 - New Project Hi everybody!! I was working on other hardware projects for a few weeks and I couldn’t seperate my time for stardance. This is my new project: “I am not sure about what to name it”. It is a game where you have to complete minigames and get to a certain score. With that score you can buy things from the shop. Like plushies, merch and other minigames. Your goal is to finish all of the minigames. I originally planned it to be about waiting and doing the minigames while you were bored of waiting. Thats why I named it “Waiting Room”. After some more thinkering I want to make it an arcade game. I thought that the arcade theme would fit the minigames and points thing. And the shop could be the point store. Right now I started to code the main things in Godot like the starting screen, character movements and some other stuff. Also my experience is very little with Godot so I will learn a lot of stuff with this project I plan to do the sprites for the main character next. It would probably easier to test the charactes with its sprites and animations. If you have any ideas for the name of the game, please write them in the comment section of this post. (I’m not really sure if it’s called that) Also I know that this post is very bad written and scrambled but that my bad. I will try to get it to be better :) Here is some photos of what I did:
DEVLOG #002 - CHARACTER DESIGN I designed my first character !! I made the walking animation and the code for walking + sprinting. A thing I want this game to have is changeable skins. (e.g., different hair types, different shirt colors, different types of caps and more…) This made the code a lot more complicated. I also need to draw the sprites for all of these. I probably won’t make these feature until I ship this project for the WarioWare 1 mission. Minigame Ideas As you probably know this is a WarioWare game. Basically that means that there are a lot of minigames in it. And I wanted to make a list of the minigames I want to make to keep it as a note and show to you. List of Minigame Ideas: -Tetris -Chrome dino -Platformer -Frogger -Pong -Puzzle (This might be a little too big for a “mini”game) These are my ideas for now but I want to add more. I want at least 12 With this much minigames and things to do I probably have to make a save system and a scoreboard system. I’ll think about it more in the future. This is it for now! Thanks for reading :) Görüşürüz! See ya later!
DEVLOG #003 - TILESETS, ARCADE CONSOLES & INTERACTIONS Hi everyone! Hope y’all alright. I worked on my first tileset and my first interactive objects. Tilesets As I said, this was my first tileset. I wanted my game to be seen from a 40~45 degree angle. I wanted it to be look like a bit 3D although it is clearly 2D. I tried to do my best and I think it turned out pretty great. You can find the tileset in the end of this devlog. Arcade Consoles I first tried to make the sprites of these arcade consoles as a tileset to store it as one file. It turned out not so great. I rather use Godots Sprite2D node rather than using the TileMapLayer node. That way tweaking each sprite is a bit easier. But I can still change my mind cause I have an idea that I’ll be working on few days later. I first designed these sprites as a -I am not sure how to say it- directly front view. I already said that I wanted my art to be at a ~45 degree angle. So adjust the looks of the sprites. That made it a bit better but I am not really satisfied with them yet. I will probably redesign them. Interactions When I first started this project I didn’t had any ideas on how to make an interactable object in Godot. After watching some videos on youtube and a lot of trial and errors I manage to make an interactions system that works really good. The interactions is this: When you get close to any of the arcade consoles there is a text shown “[E] TO PLAY”, when you click “E” there will be a split second of the black screen on the console lighting up and shownig a screen accordingly to the game you are going to play after that split second you get sent into a new scene where the minigame will be. I didn’t yet coded nor drew the required thing for the screen lighting up but I will make them later. I think that these kinds of small things will be an important aspect of the gameplay feel. These are all of the things I have done until today. After these done I will start on making the first 2 minigames and finishing the menus. Hope you had a good time reading this, Görüşmek üzere! See ya later!
DEVLOG #004 - PLATFORMER MINIGAME MECHANICS Good day everyobdy! Platformer Minigame Since the last devlog I coded the platformer minigame. I actually attempted to code it 3 times. These were how my attempts went like: It didn’t even work. The platform positioning was very bad. Most of the time it led to getting stuck. Best overall.The player can still get stuck, but it is way lower than to other attempts. I will use this for the minigame. Maybe I can play with the code little bit. I wanted to delete the platforms underneath to get rid of the unnecessary FPS loss. So I coded that. On top of that I made the ‘death_zone’, the zone you fall into when you fall from one of the platforms and lose, move when the player goes up. This makes the fall take much shorter and make the game way faster to replay. Platforms types for the minigame Before I start knoe that I currently use Godot’s own sprites for the platform but I will change that in the very near future. If you ever played something like Doodle Jump, you must know that there aren’t only 1 type of platform. There are like 3 types of it most of the time. Normal, breaking and 1 that makes you jump. I already made the normal platform. And I plan to make a few more to make it more interesting and to make it on the same tracks as the other minigames that are this. I want to make platforms with these features: 1. A platform that breakes. 2. A platform that it freezed and makes the player slide on it 3. A platform that makes the player jump higher. I will try to implement these until the next devlog. Other than that I have to make the assets for the minigame, I have to code the point system and some other little things. I probably am going to make devlog about this minigame again, after that I am going to start th e other minigames. Hope you had a good time reading this. İyi Günler! Bye!
Devlog #004.5 - PLATFORMER UPDATES AND A PROBLEM Hi guys! Hope y’all are alright. Cause I have a big proble to solve. Platformer Minigame It is NEARLY done. It is actually 99.99 percent done. But because of a bug that I couldn’t figure out how to solve. I will explain how the minigame works when I am 100 percent done. I hopefully manage it out in a few hours. As for now I am making this devlog for logging my times to stardance. I’ll devlog when I manage to solve the bug! Cya!
DEVLOG #005 - PLATFORMER MINIGAME DONE! Hey guys! I SOLVED THE BUG!! I also completed few other things. I will mention them later. Platformer Minigame Sooo this minigame is probably already known by everybody. But for those who don’t know it is like this: The main objective is to jump to the higher platforms. Your score increases higher you go. The catch is, there are 3 types of platforms. Normal Platform Breaking Platform Frozen Platform These work like this: Normal Platform: It works as you expect it to. It is a normal platform that doesn’t have a catch. You can wait until the end of time to think and plan your next move. Breaking Platform: This type of platform has a time limit how much you can wait on it. When you step on it for the first time a timer starts and when that timer finishes the platform breaks and you fall. It has 3 different sprites that you can see if you try. You can understand when it is about to break by looking at it. Frozen Platform: Lastly this type of platform is slippery. Just like ice. When you are on this platforms it is harder to build up momentum and wait in place. You generally want to be more cautious around this platform. But you also can use the slippery surface to your advantage in certain situations. At the very beginning the normal platforms spawn a lot more. But as you progress further breaking and frozen platforms starts to spawn a lot more. Having different types of platforms make the game harder and more enjoyable. The UI of the game These are a non-negotionable part of any game. When you enter to the minigame you see some red UI elemnts on the left side. They currently show 3 different things. Your current score, your highest score and your y level. The End (Death) Screen When you fall and die, this screen opens. It has 3 different elements in it. A highscore counter and 2 buttons. One of these buttons are to “Try Again” and the other one is “Quit Game”. You can click to whichever you want. THE MAIN GOAL OF THE GAME I don’t remember if I ever mentioned what is the main goal of the main game (Not the minigames). It is actually pretty simple. The goal is to earn a set amount of score from all of the minigames. I didn’t established an amount right now. That will probably be one of my last things to worry about. I also added some small features like the screen of the arcade console light up when you play the game.
DEVLOG #006 - SNAKE MINIGAME DONE! Good Evening Everybody! My second minigame, snake, is DONE! Snake Minigame I don’t really want to explain what snake game is cause I don’t know a single person that is 10 - 20 years old and doesn’t know what snake game is. For Those Who Don’t Know: Snake is a game where you try to eat food (apples in my minigame) until you become too big. The main game mechanic is like this: You eat, you get longer and once you are too big to fit in the grid you win. I made the grid 20x20 so it would be big and a bit challenging. But to win the actual game you dont have to get all of the 400 cells in the grid. Also the texture of the apple changes and it has a easter egg. I have to say, It is not a very “suprising” easter egg. :) A Thing I Have To Do Before Shipping I have to add an ending and I also have to make the starting screen and the options page. Thank you a lot for reading this. Görüşmek üzere! See you later!
DEVLOG #007 - LAST DEVLOG FROM THE FIRST SHIP! Good Evening Guyss!! I am ready to ship my project for the first warioware mission! Changes Added the winning screen, score system and most of the UIs. I also finished the timelapse that I was recording for a few days. And that Is included in the time spent for this devlog. Things I Want To Say I suspect that the I spent for this project will get deducted for unreasonable amount of time for a project. I want to say that I tried to do as much of the code as I can without getting it directly from the youtube tutorials and as a first time game dev that was reallly time consuming. I just wanted you to know that I tried my best to not to make any inflated time. That was all. :) If you are still here, thanks for reading. Hope the ship goes well! :D Görüşmek üzere! See you later!!
DEVLOG #008 - TETRIS GAME DONE! Good Evening y’all! I was away for a few days making a project in thirdspace . Anyways I am working for this project at the side too. And this game was finished few days ago but I couldn’t find the time to post a devlog about it. Here it goes now! Since my last devlog I made my third minigame, Tetris ! I again don’t think that I have to explain what tetris is. LITTERALLY everybody knows it. But for those who lives under a rock: In the game “Tetris”, some blocks fall from the sky and you put them like a puzzle. There are a total of 7 different shaped called “tetrominoes”. They are randomly given to you so it is more complicated and more enjoyable. There is a grid that you are filling with these tetrominoes. When you fill a row with these tetrominoes they disappear and the ones on top of them fall down. Once you complete a row you also get 10 points. There are also some standart futures that every Tetris ccopy has. They are: When you hold “S” the tetrominoes fall faster, when you click “R” the tetrominoes rotate and there is a panel that shows you what piece is going to fall next. The way you lose is when you get nowhere left to place a tetrominoe. When you lose you can try again or quit to the arcade. Things I Will Add In The Future I plan to add some dificult setting in the future for snake and maybe to the other ones. I also plan to make at least 2 more minigames for my arcade. Thank you for reading this devlog! Görüşmek Üzere! See ya later!
DEVLOG #009 - Dino Run Done! (Nearly…) Hope you had a good day. I finished (nearly) my fourth game, Dino Run ! It is my version of the game that you play when you don’t have internet in Chrome, Google Dino Run. I probably should stop explaining what these games are cause EVERYBODY, literally EVERYBODY knows what these games are. Fot the last time: Dino Run is a game that you are a dinosour -most of the time but it can change.- and you run. Obstacles and birds spawn while you run. You must jump when the obstacles get near, and ducck when the birds get near. Also you run faster and faster as the time goes on. Controls You can jump with SPACE and you can duck with SHIFT or CTRL . When you jump a timer starts, and you can’t jump until the timer timeouts. I said that I “NEARLY” finished the game. The unfinished part is actually a quiet important part. It is the losing mechanic. It is actually very easy to add but I didn’t want to get my hours wasted because of me not devlogging. I will finish that part until the next devlog and I might forget to mention adding that. You can think it as done for now. These are it for this devlog. I will probably add some sounds and some small updates to the existing games. And at the end of that If I have time left, I will ad more games. Thanks for being here. Kendinize iyi bakın! Cya!
DEVLOG #010 - SOUNDS Double digit devlogs!! So I started doing something that I never ever tried once. Sound design. Although I play the drums for like 3 - 4 years I never tried doing anything related to sound and music in a computer before. And I am pretty damn bad at it rn. I made 2 kind of sound / music. SFX (Sound Effects) and theme musics. Sound Effects I used a program called “Chiptone”. It is a program specifically designed for indie sound effects. It has a lot of tools to make SFX. I liked it a LOT. Anyways, I made some effects for: game consoles, when you lose, when you get to a certain height in platformer, when you die in dino run, when you eat an apple in snake, when a Tetris block lands, when a Tetris column is finished and when you win. These actually turned up pretty good. I am proud of them. Themes This is the part where I couldn’t do achieve what I wanted. I used LMMS -short for Linux Multi Media Studio- for the first time. It is very complicated and very powerful for a first-timer. I made 5 different ones. 1) Main Theme It turned up ~meh It is used for the title, settings and the main arcade scene. 2) Platformer Theme This was my first attempt. I went a little slow paced on this one. It turned up a bit better than most others and I am ok with it. I would give 7.5/10 for a first try. 3) Snake Theme This is absolutely horibble. I am disgusted to be the creator of this monstrosity. It might be because I didn’t really had any idea to what to do. I would give 2/10. I recommend turning of sound just for this. I want to change it but I don’t know if I have time left for that. 4) Tetris Theme As you all know a song for Tetris alreay exists and it is one of the best game songs of all time. It is addicting. I of course, used that theme song and added a little bit pizzazz to it. As I said I played the drums for a long while and one of the things I always wanted to do is to add a drums to Tetris theme song. I added a few drums and it turned up BEAUTIFUL. 10/10 for me. 5) Dino Run Theme This turned up … okay? It is not that bad but it is definitley not good. I am okay to keep it in but I might change it too. 4/10 These nearly took me 8 hours and I still didn’t add the settings screen to control the music levels. I will do that as the next thing. Thanks for reading this! İyi Akşamlar! Byes!
Ships:
“Too Much Time In The Arcade” is a WarioWare-style game that is set in an arcade, as you might guess. It has currently two minigames. These minigames are a platformer and a snake minigame. All of these minigames have their own respective arcade consoles that you can interact with. Your goal is to get a total of score of 400 points to win. You can get all of your points in the platformer or in the snake minigame. There are no limitations. I had a lot of fun time coding, designing and learning Godot for this project. This is my first attempt to develop a game and I find it pretty good for a first try. Although I faced some challenges, I managed to solve nearly all of them. I also learned how to debug code while doing this project. I am very proud of how it turned up. And I hope you have a great time playing it. If you want to try the game, click the “Try project ->” button. When you click it, you will be sent to my itch.io site and you will be able to play the game! To people testing my game. I want to let you know that the platformer minigame has a way smaller hitbox compared to the player sprite. This makes it a ton more doable. Thank you for all of your support I hope you have a FANTASTIC time playing my game!! Kendinize iyi bakın! Bye! Note: “Kendinize iyi bakın!” is “Take care of yourselves!” in my native language, Turkish :)...
|
1793004801.6087286
|
1793091201.6087286
|
|
47273
|
CosmoHub by @Trananhh | Stardance
|
Trananhh
|
0
|
87.6
|
0
|
[]
|
[{"post_id": 51385, "ts": "202 [{"post_id": 51385, "ts": "2026-08-21T01:47:35Z", "hours": 9.1036, "text": "Hi! The image below shows the constellations Cancer, Leo, Virgo, and Libra. That means I have just six more constellations left to complete the roadmap! :3333"}, {"post_id": 50733, "ts": "2026-08-20T02:33:14Z", "hours": 9.1653, "text": "Hi, just wanted to give a quick update: I’ve managed to build four more constellations. I’m really going to try my best to complete this roadmap! :)))"}, {"post_id": 50048, "ts": "2026-08-19T02:36:41Z", "hours": 9.4947, "text": "I have built four additional constellations: Canis Major, Pegasus, Aquila, and… I will try to build the remaining constellations to complete the constellation learning section as soon as possible."}, {"post_id": 49317, "ts": "2026-08-18T02:06:53Z", "hours": 9.5875, "text": "Hi there! I’m back with a project update. The image below shows the Cassiopeia constellation. In the previous devlog, I mentioned that the first slide covers the constellation’s mythology and history. The second slide explains how to locate it in the sky, and the final section is for reviewing and testing what has been learned. I’ve added some mini-games—shown below—such as connecting the dots to form the constellation; the system also automatically rotates and reorients the constellation so users can learn to recognize it from different angles. At least, that’s the hope! :))) There’s another mini-game where players drag the screen to navigate through a field of stars, positioning the constellation they are studying in the center, and then click “Snap photo” to capture it. Successfully capturing the right one completes the lesson. Actually, I drew inspiration for this part from “Snap It! An Eclipse Photo Adventure” by NASA Space Place for Kids; it’s a game I played and really enjoyed, so it left a lasting impression on me. Bye for now—I’m off to build out the other constellations."}, {"post_id": 47368, "ts": "2026-08-15T08:30:42Z", "hours": 10.125, "text": "Hi there! I’m back with an update on my project. I’m currently working on the “Constellation Learning” section. To be honest, I initially planned to cover all 88 constellations, but that was too many, so I’ve scaled it back to just 22—specifically, the 12 zodiac constellations and 10 other popular ones. I’ll add the remaining 66 later when I have more time. I designed the interface as a roadmap where users learn about a new constellation at each stage. The image below shows the Orion constellation; I used AI to summarize the basic facts and draft the quiz questions. I also plan to add mini-games to help users remember the information better—I’ll share updates on that later! :)))"}, {"post_id": 46670, "ts": "2026-08-14T03:26:37Z", "hours": 10.4469, "text": "I will now provide an update on what I have built so far. I have completed the login functionality for my website; upon a successful Google login, a sidebar appears on the right, and I have adjusted the layout to make it more logical and balanced. The login and logout features are now fully implemented, and I plan to move on to “constellation learning” next."}, {"post_id": 46104, "ts": "2026-08-13T02:48:57Z", "hours": 29.6769, "text": "Hey everyone! Here is a quick progress update on what I’ve built for CosmoHub over the past 5 days! Since I’m pretty new here and still figuring out how to write proper devlogs/ship posts, please bear with me! I promise to stay consistent and share updates much more often as I build this out. So far, I’ve completed the core UI frame and layout structure: 4-Slide Onboarding Flow: Welcomes users and sets up the project’s vision (from astronomy basics to getting ready to explore). Main Dashboard Hub: Designed the central navigation layout featuring the 3 core modules I’ll be developing over the next month: Learn & Discover Constellations (Interactive guides & quizzes) News & Space Journals (Cosmic articles & space news) Global Stargazing Gallery (Community astrophotography) This project is planned as a month-long build, so right now I’m focusing on polishing the UI, setting up Firebase Auth, and organizing the codebase for a clean public GitHub release before diving deep into the actual logic & features. Still learning the ropes, but super hyped to keep shipping!"}]...
|
Title: CosmoHub by @Trananhh | Stardance
Devlogs: Title: CosmoHub by @Trananhh | Stardance
Devlogs:
Hey everyone! Here is a quick progress update on what I’ve built for CosmoHub over the past 5 days! Since I’m pretty new here and still figuring out how to write proper devlogs/ship posts, please bear with me! I promise to stay consistent and share updates much more often as I build this out. So far, I’ve completed the core UI frame and layout structure: 4-Slide Onboarding Flow: Welcomes users and sets up the project’s vision (from astronomy basics to getting ready to explore). Main Dashboard Hub: Designed the central navigation layout featuring the 3 core modules I’ll be developing over the next month: Learn & Discover Constellations (Interactive guides & quizzes) News & Space Journals (Cosmic articles & space news) Global Stargazing Gallery (Community astrophotography) This project is planned as a month-long build, so right now I’m focusing on polishing the UI, setting up Firebase Auth, and organizing the codebase for a clean public GitHub release before diving deep into the actual logic & features. Still learning the ropes, but super hyped to keep shipping!
I will now provide an update on what I have built so far. I have completed the login functionality for my website; upon a successful Google login, a sidebar appears on the right, and I have adjusted the layout to make it more logical and balanced. The login and logout features are now fully implemented, and I plan to move on to “constellation learning” next.
Hi there! I’m back with an update on my project. I’m currently working on the “Constellation Learning” section. To be honest, I initially planned to cover all 88 constellations, but that was too many, so I’ve scaled it back to just 22—specifically, the 12 zodiac constellations and 10 other popular ones. I’ll add the remaining 66 later when I have more time. I designed the interface as a roadmap where users learn about a new constellation at each stage. The image below shows the Orion constellation; I used AI to summarize the basic facts and draft the quiz questions. I also plan to add mini-games to help users remember the information better—I’ll share updates on that later! :)))
Hi there! I’m back with a project update. The image below shows the Cassiopeia constellation. In the previous devlog, I mentioned that the first slide covers the constellation’s mythology and history. The second slide explains how to locate it in the sky, and the final section is for reviewing and testing what has been learned. I’ve added some mini-games—shown below—such as connecting the dots to form the constellation; the system also automatically rotates and reorients the constellation so users can learn to recognize it from different angles. At least, that’s the hope! :))) There’s another mini-game where players drag the screen to navigate through a field of stars, positioning the constellation they are studying in the center, and then click “Snap photo” to capture it. Successfully capturing the right one completes the lesson. Actually, I drew inspiration for this part from “Snap It! An Eclipse Photo Adventure” by NASA Space Place for Kids; it’s a game I played and really enjoyed, so it left a lasting impression on me. Bye for now—I’m off to build out the other constellations.
I have built four additional constellations: Canis Major, Pegasus, Aquila, and… I will try to build the remaining constellations to complete the constellation learning section as soon as possible.
Hi, just wanted to give a quick update: I’ve managed to build four more constellations. I’m really going to try my best to complete this roadmap! :)))
Hi! The image below shows the constellations Cancer, Leo, Virgo, and Libra. That means I have just six more constellations left to complete the roadmap! :3333...
|
1792936292.9248433
|
1793800292.9248433
|
|
45078
|
streaming-tools by @Pikacnu | Stardance
|
Pikacnu
|
0
|
87.59
|
0
|
[]
|
[{"post_id": 81520, "ts": "202 [{"post_id": 81520, "ts": "2026-10-21T15:44:55Z", "hours": 8.1031, "text": "Not planned, but… AI found lots of bugs and issues. They aren’t fixed or implemented yet (I didn’t even know that). So… still fixing them and building the Graph System."}, {"post_id": 79739, "ts": "2026-10-15T08:17:11Z", "hours": 11.6878, "text": "Still finishing graph layer to gst. Frontend not start yet."}, {"post_id": 77492, "ts": "2026-10-07T07:13:59Z", "hours": 11.975, "text": "Finished implementing the basic function for parseNode. Still need to update the graph to add more capabilities directly to the node system (such as removing pads from nodes, which is not yet implemented)."}, {"post_id": 73084, "ts": "2026-09-24T10:46:11Z", "hours": 9.0183, "text": "The node rewrite is almost complete, with only a few nodes left to migrate to the new type. Once all tests pass and the migrations are finished, I can start working on the stream (making sure it can push and verify first using the test pipeline built on top of the node system). After that, I’ll move on to building the frontend."}, {"post_id": 70152, "ts": "2026-09-18T15:57:35Z", "hours": 10.1275, "text": "I am rewriting the node system(which allows frontend nodes to be transformed into backend nodes,and then builds a gst.pipeline to process them), Which is still incomplete. My goal is to let you create a pipeline with minimal media processing knowledge, while still being able to control most things and understand the process (just simpler)."}, {"post_id": 65455, "ts": "2026-09-10T16:26:09Z", "hours": 9.1967, "text": "Designing Nodes (GStreamer) Wrap GStreamer components into nodes (like a box) and sync with the frontend. But with the features GStreamer has, I need to check the differences between the frontend and backend graphs and apply them to the GStreamer pipeline. Which is difficult, and I haven’t come up with a good idea yet. If anyone can give me some advice, that would be great."}, {"post_id": 51369, "ts": "2026-08-21T00:32:15Z", "hours": 8.7414, "text": "Add a simple frontend using SvelteFlow (This is my first time using Svelte) Wrap GStreamer into node-like abstractions (This will sync with the frontend) Note: This workflow is just to get started with SvelteFlow; it’s not the final result. Note: The GStreamer component is still a work in progress (WIP)."}, {"post_id": 47875, "ts": "2026-08-16T04:14:56Z", "hours": 8.3892, "text": "Figuring out how to parse video and mux it into the target format (FLV). Asked AI to understand how GStreamer works and how to build a proper pipeline. Also tried to start SRT and WHIP listeners. *WHIP doesn’t work for this use case because it can’t handle multiple audio tracks."}, {"post_id": 45894, "ts": "2026-08-12T17:15:12Z", "hours": 10.3536, "text": "Try to use gst to encode / decode video (from file now) Use 2 mpv to play video and audio(autoaudio/video won’t work and i have no idea.) Also platfrom’s chat room fetcher (not complete yet) There is it’s pipeline: filesrc → matroskademux ──(video/x-av1)→ av1parse → av1dec → videoconvert → x264enc → queue → appsink ─→ mpv #1 (H.264) └──(audio/x-opus)→ opusdec → queue → audioconvert → wavenc → appsink ─→ mpv #2 (WAV)"}]...
|
Title: streaming-tools by @Pikacnu | Stardance
De Title: streaming-tools by @Pikacnu | Stardance
Devlogs:
Try to use gst to encode / decode video (from file now) Use 2 mpv to play video and audio(autoaudio/video won’t work and i have no idea.) Also platfrom’s chat room fetcher (not complete yet) There is it’s pipeline: filesrc → matroskademux ──(video/x-av1)→ av1parse → av1dec → videoconvert → x264enc → queue → appsink ─→ mpv #1 (H.264) └──(audio/x-opus)→ opusdec → queue → audioconvert → wavenc → appsink ─→ mpv #2 (WAV)
Figuring out how to parse video and mux it into the target format (FLV). Asked AI to understand how GStreamer works and how to build a proper pipeline. Also tried to start SRT and WHIP listeners. *WHIP doesn’t work for this use case because it can’t handle multiple audio tracks.
Add a simple frontend using SvelteFlow (This is my first time using Svelte) Wrap GStreamer into node-like abstractions (This will sync with the frontend) Note: This workflow is just to get started with SvelteFlow; it’s not the final result. Note: The GStreamer component is still a work in progress (WIP).
Designing Nodes (GStreamer) Wrap GStreamer components into nodes (like a box) and sync with the frontend. But with the features GStreamer has, I need to check the differences between the frontend and backend graphs and apply them to the GStreamer pipeline. Which is difficult, and I haven’t come up with a good idea yet. If anyone can give me some advice, that would be great.
I am rewriting the node system(which allows frontend nodes to be transformed into backend nodes,and then builds a gst.pipeline to process them), Which is still incomplete. My goal is to let you create a pipeline with minimal media processing knowledge, while still being able to control most things and understand the process (just simpler).
The node rewrite is almost complete, with only a few nodes left to migrate to the new type. Once all tests pass and the migrations are finished, I can start working on the stream (making sure it can push and verify first using the test pipeline built on top of the node system). After that, I’ll move on to building the frontend.
Finished implementing the basic function for parseNode. Still need to update the graph to add more capabilities directly to the node system (such as removing pads from nodes, which is not yet implemented).
Still finishing graph layer to gst. Frontend not start yet.
Not planned, but… AI found lots of bugs and issues. They aren’t fixed or implemented yet (I didn’t even know that). So… still fixing them and building the Graph System....
|
1792612063.787812
|
1793216863.787812
|
|
38439
|
Nimbl by @jeremy | Stardance
|
jeremy
|
0
|
87.29
|
0
|
[]
|
[{"post_id": 54698, "ts": "202 [{"post_id": 54698, "ts": "2026-08-25T19:26:10Z", "hours": 14.8619, "text": "NIMBL - Devlog #7 for some reason i got way to many hours on this project and this is prob because my hackatime tracks my benchmarks so Iam gonna request that they like cut it in half idk, dont wanna be fraud reviewed. This phase was about resetting and reconfiguring Benchmarks The benchmarks were horrendus and I realized that something is going insanly wrong so i decided to do a full reset. Scrap my architecture and go back to a opencode baseline architecture and just remove and add diferent parts. this took only 6 hours but as said my hackatime is bugging prob hoing to try removing 30hours because i just noticed it doesnt make sense. Next Steps Optimizing the archtitecutere and not running anymore benchmarks till Iam sure of this architecture also contactiing stardance cause aint now way iam getting fraued reviewd."}, {"post_id": 52260, "ts": "2026-08-22T11:20:38Z", "hours": 8.5642, "text": "NIMBL - Devlog #6 I noticed that the last few devlogs were quite lazy and to be frank trash. So this section is just getting you upto date. Explaining the problem, goal, benchmarks and architecture and just giving you a short summary. What is NIMBL? NIMBL which stands for nimble which describes a person as being fast, agile and efficent. Nimbl’s goal is it to allow users to get a coding harness which is half the cost and dobule as fast and allows for them to keep around 80% of the intelligence. It also includes 4 modes learn , explain , plan and build . Plan and build are just the typical modes you see in all harness like opencode and explain is a copy of plan but adjusted, so it shows examples and is able to retrieve the codebase ligthning fast and offer detailed explanation. Learn is the same as build but with measurements in place so you cant just prompt it rather it give you example code or code with simple mistakes and you have to fix them yourself. What have I done? So since fully porting the Opencode tui I have decided to work on nimbles effectivnes I first starded with indepth analysis of other harness and how they work their benefits and their drawbacks. So for example how Pi is ligthweight or how Aiders gathers context. Afterwards I summarized everythign i learned and implemented it, and then came the benchmarks i first started with a local 75 test benchmark across all kinds of test from lh , mf to retrival tasks on which nimbl performed great with being 3x cheaper and achieving a 98% solve rate. Benchmarks The next step was running NIMBL on offical benchmarks for that I choose SWE Lite as it one of the more reputable ones and smaller ones. OF course I wouldnt be able to run even that size as it around 120GB and I dont have that much money for benchmarks. Just so you know evey benchmark I have run used openrouter credits and Iam the person paying for them. So i sliced it, Slicing means instead of running all you take out a certain part and download only that and run only that. On that slice NIMBL was miserable solving 1 out of 15 task. After further optimizing the logic behind it NIMBL is now at a point where it reaches around 80% accuracy and is a third of the price. How does NIMBL work? NIMBL's main architecture is built around a layered context and execution pipeline. The project is indexed using lexical search, structural parsing, and dependency-graph relationships. When a task is received, NIMBL classifies it and retrieves only the most relevant files, symbols, and related dependencies. The retrieved context is compressed and placed into a stable prompt structure, allowing provider-side caching to reduce cost and latency. The agent then works through the task using tools, tests, diagnostics, and bounded execution loops. The result is tracked through token usage, cache hits, cost, latency, and success metrics. This allows NIMBL to stay lightweight while still having access to the important parts of a codebase. The goal is not to send less context blindly, but to send better context. Combined with the different learning modes, this gives NIMBL the foundation to become a faster, cheaper, and more educational coding harness. in the screenshot you can see how much credits i got left i had 10 at the start of the development. Hopefully this made NIMBL easier to understand and gave a short overview"}, {"post_id": 49838, "ts": "2026-08-18T19:46:38Z", "hours": 11.5583, "text": "NIMBL - Devlog #6 This phase was still about benchmarking optimizing reading papers to see if i can implement some new logic and benchmarking again. I burnder through atelast 400mil tokens which were used in the benchmarks whihc like 10$ openrouter credits and a bit of opencode go Benchmark The results were overhemlingy postive with nimbl achieving a 300/300 fix while being 2.2x cheaper accros all task combined this came mainly from retrival which is understandable as nimbls architecture is build on the idea of rag and we further refined it but even on lh(long horizon) and mf(multi files) it was great #Next steps Damn i take everything i just said back iam runnign offical swe lite tests now and nimbl is performing like shit because of our inbuild steps limit which i forgot its unable to solve the tasks and is failing, so its back to bug fixing see you in a few days."}, {"post_id": 47762, "ts": "2026-08-15T22:06:32Z", "hours": 6.6878, "text": "NIMBL — Devlog #5: This Devlog ran another benchmark: 25 tasks × 3 samples, hidden golden tests only, and the same model on both harnesses (deepseek-v4-flash). I also used these results to fix the mistakes I found and run the benchmark again, which is running rn. NImbl is ca 40% more token efficent half the price and caches better. The Results NIMBL: solved 68/75 tasks, with total tokens of 2,386,450, wall time of 37.7 min (2,264 s) and throughput 1,054 tk/s . opencode: solved 75/75 tasks, with total tokens of 2,436,642, wall time of 71.2 min (4,270 s), throughput 571 tk/s. NIMBL finished 1.9× faster and actually used fewer total tokens than opencode. The tradeoff is that it didn’t finish 7 tasks, and those failed runs still spent real tokens, so this wasn’t a cheap excuse to give up early. On the 4-mode run NIMBL also used around 40% fewer tokens per solved task (26.2–28.0k vs opencode’s 46.8k, −40% to −44% in every mode). That shows the savings were never only coming from retrieval tasks. By Category results bug-fix tasks: −7.2% retrieval tasks: −51.1% multi-file tasks: −16.3% running agent delegation: +130.2% long-hunt: −35.3% shell-loop: +6.3% test-write: +116.9% What It Says The results are pretty decent, and they are getting better. Retrieval now uses half the tokens at a third of the latency : 7 seconds compared to opencode’s 19 seconds. NIMBL is faster in every category, even delegation, where opencode takes 116 seconds per task. The architecture is doing great, and reference cost lands at about half of opencode’s (~$0.26–0.28 per solved task vs ~$0.51). The losses are concentrated in two specific places. Delegation costs 130% more tokens — 373,493 compared to 162,256 — and test-write costs 117% more and it did all this and still failed so it practically wasted tokens The reason for that is simple: we had a hardcoded limit of 8 tool calls, which wasn’t enough for these long tasks, opencode ran ~100. So NIMBL kept reading files and crashed when trying to run an edit, because it ran out of tool calls. The fix was basic: instead of hardcoding every tool call limit universally, adjust them according to the task. Running Now A new benchmark is running rn trying to use these fixes to finally close that gap of tool calls and get fully functional harness which is cheaper and better after local benchmarks work I will run it in a real benchmark like swe lite or sth"}, {"post_id": 47370, "ts": "2026-08-15T08:36:59Z", "hours": 12.3772, "text": "NIMBL - Devlog #4: This devlog is about the one thing NIMBL was built for: proving it saves tokens without making answers worse. I built a real benchmark, ran it against opencode, and got cooked. The Tier B benchmark I generated a ca 150-file TypeScript “storefront” app with planted bugs, decoy files, and hidden golden test suites. 25 tasks spread across retrieval, bug-fixing, multi-file work, test-writing, shell loops, delegation, and long-horizon fixes. The key part: every bug is only caught by hidden tests, so an agent can’t cheat by reading the grader. Ran it live on the same model for both harnesses: deepseek-v4-flash, 3 samples per task, 75 runs per side. And critically — every single result is saved raw , not summarized. Full event streams, tool calls, token splits, everything, so nothing can be hidden. The results solved mean tokens NIMBL (hybrid) 68/75 28,004 opencode 75/75 23,352 opencode solved more and used fewer tokens. That stings, but it’s the truth, and the raw data is committed. Where NIMBL genuinely won: retrieval tasks (+63% fewer tokens) and latency (26s vs 49s per task). Pure lookup-and-answer is where the context index shines. What went wrong Shell mismatch (the big one). NIMBL runs commands through PowerShell but never told the model that. So the model wrote POSIX ( find | sort , 2>&1 , head ) and 60 of 113 shell calls failed . opencode tells the model it’s PowerShell, and the same model wrote working commands. The fix is a one-line hint in the tool description. Analysis paralysis. One long-horizon task spent 78 tool steps reading files, never ran a single test, never edited anything. All 3 samples failed while opencode fixed it every time. Delegation overhead. Subagent “research” cost 7k-27k tokens per task with no payoff. opencode solved the same tasks inline for a fraction of that. Hallucinated answers. One retrieval task answered “42” with zero tool calls, never reading the file that had the answer. Where it stands NIMBL has permissions, sessions, providers, budgets, context selection, structural extraction, tokenizers, and a real benchmark harness that saves raw output for every run. It’s genuinely usable for simple coding. But the benchmark says what the benchmark says: the token win is retrieval-only for now. The next devlog should be about the shell fix, the delegate budget, and seeing if the numbers move."}, {"post_id": 36554, "ts": "2026-07-28T19:01:23Z", "hours": 14.0244, "text": "NIMBL - Devlog #3: Full redesign In this section I did a lot I used AI to port the opencode UI to mine and then did the changes so it fits mine more appropiate such as more modes instead of just build and plan and did indepth work on the backend The UI: Port Opencode and credit them The first NIMBL chat screen was heavily inspired by OpenCode. I realized that it didnt make sense to deign it myself if opencode is under the MIT lisence and I love their UI so I used the downloaded opencode directroy to port it into nimbl with the help of AI and routed the backend to it. Of course I didnt forget that I need to update my readme so they get all the credit they deserve The app now has a transcript, persistent prompt, modes, autocomplete, dialogs, provider/model controls, message actions, paste handling, and token/cost status. So its fully functional for a beta and got all necessary commands The Backend The early version could call a model but thats it, it couldnt read files or write them. So i implemented File operations but made it they reject project or symlink escapes, .env files, Git metadata, NIMBL state, credentials, and private keys. Commands have allowlists, timeouts, bounded output, abort support, and explicit permissions. Build mode gets write tools so with that you can code but all other 3 modes do not. Also implemented sessions so you can open old sessions just like in opencode, this project is proball going to be a more token efficent opencode but in noway an alternative Also worked on how cost are caculated but this was quite hard and I still dont understand it I let AI do it without understanding it but I will try to learn more of it later. Context Dumping a whole repository into a prompt is expensive and bad. To fix this, NIMBL keeps a lightweight local index of your project. It automatically respects .gitignore rules, skips binary files and oversized logs, and watches for changes in real time so it never wastes time rescanning everything from scratch. Finding the right files isn’t handled by rescaning the entire directory but saved in its memeory. it uses straightforward text matching based on terms, symbol names, and file paths. More importantly, NIMBL shows what it did, you can see exactly which files were picked, why others were skipped, and how many tokens the prompt actually used. Where It Stands The project now posses, permissions, sessions, providers, budgets, context, structural extraction, tokenizers, and much more and I tried it myself and it can be used for simple coding. The next step is proving NIMBL saves tokens on tasks without making answers worse. Which it was orignally designed for"}, {"post_id": 35396, "ts": "2026-07-26T19:23:57Z", "hours": 9.3778, "text": "NIMBL — Devlog #2: TUI Design(Hell) This devlog covers how I actually built the thing, and the nasty bugs I had to fix. Also that I should probably pause this to further learn frontend. Cause iam trash at frontend Choosing OpenTUI (and Fighting It) I needed a terminal UI framework that could run under Bun on Windows. Textual was too heavy. Ink (React) had reconciler conflicts. OpenTUI was the right call. It’s what OpenCode uses in production, it’s fast, and its SolidJS works well with the reactive state model. But it wasn’t plug and play. Which I didn’t expect. Out of the 9 hours I spent on this phase, maybe 2 were actual feature work. The rest was bug fixing. First wall: the native DLL kept crashing. OpenTUI tries to pass color objects to a Windows native DLL, but the way they format the data doesn’t match what the DLL expects. Every time the TUI tried to draw anything, Bun would crash. I couldn’t figure this one out on my own. Had to get help from an AI coding agent (the newly bought OpenCode Go) to trace through the crash logs and find the fix. The solution was simple once found: use color hex strings like \"#06402b\" everywhere instead of color objects. OpenTUI handles the conversion internally and the DLL stops crashing. Second wall: wrong import path. OpenTUI’s SolidJS build tries to import from a file path that Bun 1.3.14 can’t load properly, causing a different kind of crash. One line change in the library file. Change solid-js/dist/solid.js to solid-js and it worked. Small fix, but took hours to find because the error message just said “Cell” with no explanation. Probally should have used Ai for that Studying OpenCode’s Architecture Instead of guessing the layout, I got AI to pull anomalyco/opencode from GitHub and read through their TUI package. Two key discoveries: The prompt input works like OpenCode’s. I tried using the single-line input component first, but it wouldn’t submit on Enter. OpenCode uses a multi-line textarea with a trick: they grab the text directly from the component on every keystroke, and when you press Enter (without Shift or Ctrl), they intercept it, stop it from making a new line, and send the message instead. I do the exact same thing now and it actually works. The green bar on the left. Every input box and every message in OpenCode has a thin vertical colored line on its left edge. It’s just a simple border, but it makes the whole interface feel structured and intentional. I borrowed that. Green accent bar for user prompts, dimmer gray for NIMBL replies. Cheap to render, huge visual upgrade. TUI Structure Two screens, one signal: view() toggles between \"home\" and \"chat\" . Home screen – Centered layout with the ASCII NIMBL logo, tagline, and a bordered textarea. The green left-border accent matches my brand. Chat screen – Scrollbox of message bubbles (each has an accent bar + label), with a persistent input at the bottom. Token count and estimated cost update in the status bar on every response. /quit and /clear are wired in both views. What’s Next the app works. I type a prompt, Enter submits it, the API calls, and the response renders in the chat view with token usage shown. The next plan is adding all the modes, AI provider switching, plan and build mode, and letting the AI read and write files. Plus the /compact command from OpenCode. The screenshots show how it looks now and how it looked before. Heavily inspired by OpenCode and some elements are even copied, so the readme will fully credit them. Also I’m allowed to use them as they are under MIT license. Bless OpenCode. Stack: Bun 1.3.14 · OpenTUI 0.4.5 · SolidJS 1.9.10 · TypeScript strict · Vercel AI SDK 7"}, {"post_id": 34532, "ts": "2026-07-25T10:09:11Z", "hours": 9.8425, "text": "NIMBL — Devlog #1: Building a Token-Efficient CLI Companion I started NIMBL because I wanted a coding assistant that lives in the terminal and actually conserves tokens instead of burning through context windows. The goal for this first phase was to build a lightweight, responsive tool with a polished feel without unnecessary bloat. Adapting OpenCode’s TUI Architecture My initial approach was building a terminal interface from scratch using standard Textual widgets. I got a basic mockup working, but the component architecture felt rigid and didn’t scale well. Instead of continuing with a fragile layout, I pulled down the OpenCode CLI source code ( anomalyco/opencode ), studied its TUI architecture, and adapted its two-column layout system for NIMBL. Decoupled Components: Refactored the app into a persistent sidebar (housing the model selector and session history), a main chat panel, and a live status bar. Theme & Identity: Extracted the CSS structure into styles.tcss . I kept the dark background ( #0a0a0a ) but shifted the accent color from orange to a custom green ( #4ade80 ) to give NIMBL its own identity. Multi-Provider Backend & Failover The backend is where the core engineering happened. I built a multi-provider API client that speaks OpenAI-compatible endpoints across Hack Club AI, Google AI Studio, Groq, and local Ollama. Automatic Failover: If an active provider drops or hits a rate limit, the client automatically rotates to the next available provider without interrupting the session. Streaming & Telemetry: Responses stream directly into the chat panel in real-time, with token usage tracked on every API call to keep resource consumption visible. Context Budget Allocator & /compact To keep context usage strictly governed, I built a context engine driven by a token budget allocator. Instead of letting prompts grow infinitely, the context window is portioned into fixed allocations: 15% System Prompts: Reserved for base instructions and active mode constraints. 25% Retrieved Context: Allocated for project structure, active files, and RAG retrieval. 35% Conversation History: Dedicated to the active chat thread. Scratchpad Space: The remaining allocation is preserved for scratch work and generation. The system automatically warns you when reaching 60% capacity and provides a /compact command to summarize and prune older messages. Modes, Gamification, and CLI NIMBL features three operational modes, each with its own system prompt and context state: Assist Mode: A direct coding partner focused on concise, minimal code suggestions. Learn Mode: A Socratic tutor that guides you through concepts using progressive hints rather than giving answers immediately. Review Mode: A teaching code reviewer that explains why code is problematic rather than just flagging syntax. I also integrated a learning tracker that records XP, streaks, and skill mastery as you work through concepts, alongside a prompt cache layer that estimates savings from repeated system prefixes. Everything is wrapped in Click commands: nimbl run launches the TUI, nimbl ask handles one-shot terminal queries, and nimbl setup walks through API key configuration. Next Steps UI Event Integration: Wire TUI message events ( MessageSubmitted ) directly to the backend agent logic. Telemetry Refinement: Connect the status bar directly to real-time token metrics. Local File Tooling: Implement tools to let the agent read and write files."}]...
|
Title: Nimbl by @jeremy | Stardance
Devlogs:
NIMB Title: Nimbl by @jeremy | Stardance
Devlogs:
NIMBL — Devlog #1: Building a Token-Efficient CLI Companion I started NIMBL because I wanted a coding assistant that lives in the terminal and actually conserves tokens instead of burning through context windows. The goal for this first phase was to build a lightweight, responsive tool with a polished feel without unnecessary bloat. Adapting OpenCode’s TUI Architecture My initial approach was building a terminal interface from scratch using standard Textual widgets. I got a basic mockup working, but the component architecture felt rigid and didn’t scale well. Instead of continuing with a fragile layout, I pulled down the OpenCode CLI source code ( anomalyco/opencode ), studied its TUI architecture, and adapted its two-column layout system for NIMBL. Decoupled Components: Refactored the app into a persistent sidebar (housing the model selector and session history), a main chat panel, and a live status bar. Theme & Identity: Extracted the CSS structure into styles.tcss . I kept the dark background ( #0a0a0a ) but shifted the accent color from orange to a custom green ( #4ade80 ) to give NIMBL its own identity. Multi-Provider Backend & Failover The backend is where the core engineering happened. I built a multi-provider API client that speaks OpenAI-compatible endpoints across Hack Club AI, Google AI Studio, Groq, and local Ollama. Automatic Failover: If an active provider drops or hits a rate limit, the client automatically rotates to the next available provider without interrupting the session. Streaming & Telemetry: Responses stream directly into the chat panel in real-time, with token usage tracked on every API call to keep resource consumption visible. Context Budget Allocator & /compact To keep context usage strictly governed, I built a context engine driven by a token budget allocator. Instead of letting prompts grow infinitely, the context window is portioned into fixed allocations: 15% System Prompts: Reserved for base instructions and active mode constraints. 25% Retrieved Context: Allocated for project structure, active files, and RAG retrieval. 35% Conversation History: Dedicated to the active chat thread. Scratchpad Space: The remaining allocation is preserved for scratch work and generation. The system automatically warns you when reaching 60% capacity and provides a /compact command to summarize and prune older messages. Modes, Gamification, and CLI NIMBL features three operational modes, each with its own system prompt and context state: Assist Mode: A direct coding partner focused on concise, minimal code suggestions. Learn Mode: A Socratic tutor that guides you through concepts using progressive hints rather than giving answers immediately. Review Mode: A teaching code reviewer that explains why code is problematic rather than just flagging syntax. I also integrated a learning tracker that records XP, streaks, and skill mastery as you work through concepts, alongside a prompt cache layer that estimates savings from repeated system prefixes. Everything is wrapped in Click commands: nimbl run launches the TUI, nimbl ask handles one-shot terminal queries, and nimbl setup walks through API key configuration. Next Steps UI Event Integration: Wire TUI message events ( MessageSubmitted ) directly to the backend agent logic. Telemetry Refinement: Connect the status bar directly to real-time token metrics. Local File Tooling: Implement tools to let the agent read and write files.
NIMBL — Devlog #2: TUI Design(Hell) This devlog covers how I actually built the thing, and the nasty bugs I had to fix. Also that I should probably pause this to further learn frontend. Cause iam trash at frontend Choosing OpenTUI (and Fighting It) I needed a terminal UI framework that could run under Bun on Windows. Textual was too heavy. Ink (React) had reconciler conflicts. OpenTUI was the right call. It’s what OpenCode uses in production, it’s fast, and its SolidJS works well with the reactive state model. But it wasn’t plug and play. Which I didn’t expect. Out of the 9 hours I spent on this phase, maybe 2 were actual feature work. The rest was bug fixing. First wall: the native DLL kept crashing. OpenTUI tries to pass color objects to a Windows native DLL, but the way they format the data doesn’t match what the DLL expects. Every time the TUI tried to draw anything, Bun would crash. I couldn’t figure this one out on my own. Had to get help from an AI coding agent (the newly bought OpenCode Go) to trace through the crash logs and find the fix. The solution was simple once found: use color hex strings like "#06402b" everywhere instead of color objects. OpenTUI handles the conversion internally and the DLL stops crashing. Second wall: wrong import path. OpenTUI’s SolidJS build tries to import from a file path that Bun 1.3.14 can’t load properly, causing a different kind of crash. One line change in the library file. Change solid-js/dist/solid.js to solid-js and it worked. Small fix, but took hours to find because the error message just said “Cell” with no explanation. Probally should have used Ai for that Studying OpenCode’s Architecture Instead of guessing the layout, I got AI to pull anomalyco/opencode from GitHub and read through their TUI package. Two key discoveries: The prompt input works like OpenCode’s. I tried using the single-line input component first, but it wouldn’t submit on Enter. OpenCode uses a multi-line textarea with a trick: they grab the text directly from the component on every keystroke, and when you press Enter (without Shift or Ctrl), they intercept it, stop it from making a new line, and send the message instead. I do the exact same thing now and it actually works. The green bar on the left. Every input box and every message in OpenCode has a thin vertical colored line on its left edge. It’s just a simple border, but it makes the whole interface feel structured and intentional. I borrowed that. Green accent bar for user prompts, dimmer gray for NIMBL replies. Cheap to render, huge visual upgrade. TUI Structure Two screens, one signal: view() toggles between "home" and "chat" . Home screen – Centered layout with the ASCII NIMBL logo, tagline, and a bordered textarea. The green left-border accent matches my brand. Chat screen – Scrollbox of message bubbles (each has an accent bar + label), with a persistent input at the bottom. Token count and estimated cost update in the status bar on every response. /quit and /clear are wired in both views. What’s Next the app works. I type a prompt, Enter submits it, the API calls, and the response renders in the chat view with token usage shown. The next plan is adding all the modes, AI provider switching, plan and build mode, and letting the AI read and write files. Plus the /compact command from OpenCode. The screenshots show how it looks now and how it looked before. Heavily inspired by OpenCode and some elements are even copied, so the readme will fully credit them. Also I’m allowed to use them as they are under MIT license. Bless OpenCode. Stack: Bun 1.3.14 · OpenTUI 0.4.5 · SolidJS 1.9.10 · TypeScript strict · Vercel AI SDK 7
NIMBL - Devlog #3: Full redesign In this section I did a lot I used AI to port the opencode UI to mine and then did the changes so it fits mine more appropiate such as more modes instead of just build and plan and did indepth work on the backend The UI: Port Opencode and credit them The first NIMBL chat screen was heavily inspired by OpenCode. I realized that it didnt make sense to deign it myself if opencode is under the MIT lisence and I love their UI so I used the downloaded opencode directroy to port it into nimbl with the help of AI and routed the backend to it. Of course I didnt forget that I need to update my readme so they get all the credit they deserve The app now has a transcript, persistent prompt, modes, autocomplete, dialogs, provider/model controls, message actions, paste handling, and token/cost status. So its fully functional for a beta and got all necessary commands The Backend The early version could call a model but thats it, it couldnt read files or write them. So i implemented File operations but made it they reject project or symlink escapes, .env files, Git metadata, NIMBL state, credentials, and private keys. Commands have allowlists, timeouts, bounded output, abort support, and explicit permissions. Build mode gets write tools so with that you can code but all other 3 modes do not. Also implemented sessions so you can open old sessions just like in opencode, this project is proball going to be a more token efficent opencode but in noway an alternative Also worked on how cost are caculated but this was quite hard and I still dont understand it I let AI do it without understanding it but I will try to learn more of it later. Context Dumping a whole repository into a prompt is expensive and bad. To fix this, NIMBL keeps a lightweight local index of your project. It automatically respects .gitignore rules, skips binary files and oversized logs, and watches for changes in real time so it never wastes time rescanning everything from scratch. Finding the right files isn’t handled by rescaning the entire directory but saved in its memeory. it uses straightforward text matching based on terms, symbol names, and file paths. More importantly, NIMBL shows what it did, you can see exactly which files were picked, why others were skipped, and how many tokens the prompt actually used. Where It Stands The project now posses, permissions, sessions, providers, budgets, context, structural extraction, tokenizers, and much more and I tried it myself and it can be used for simple coding. The next step is proving NIMBL saves tokens on tasks without making answers worse. Which it was orignally designed for
NIMBL - Devlog #4: This devlog is about the one thing NIMBL was built for: proving it saves tokens without making answers worse. I built a real benchmark, ran it against opencode, and got cooked. The Tier B benchmark I generated a ca 150-file TypeScript “storefront” app with planted bugs, decoy files, and hidden golden test suites. 25 tasks spread across retrieval, bug-fixing, multi-file work, test-writing, shell loops, delegation, and long-horizon fixes. The key part: every bug is only caught by hidden tests, so an agent can’t cheat by reading the grader. Ran it live on the same model for both harnesses: deepseek-v4-flash, 3 samples per task, 75 runs per side. And critically — every single result is saved raw , not summarized. Full event streams, tool calls, token splits, everything, so nothing can be hidden. The results solved mean tokens NIMBL (hybrid) 68/75 28,004 opencode 75/75 23,352 opencode solved more and used fewer tokens. That stings, but it’s the truth, and the raw data is committed. Where NIMBL genuinely won: retrieval tasks (+63% fewer tokens) and latency (26s vs 49s per task). Pure lookup-and-answer is where the context index shines. What went wrong Shell mismatch (the big one). NIMBL runs commands through PowerShell but never told the model that. So the model wrote POSIX ( find | sort , 2>&1 , head ) and 60 of 113 shell calls failed . opencode tells the model it’s PowerShell, and the same model wrote working commands. The fix is a one-line hint in the tool description. Analysis paralysis. One long-horizon task spent 78 tool steps reading files, never ran a single test, never edited anything. All 3 samples failed while opencode fixed it every time. Delegation overhead. Subagent “research” cost 7k-27k tokens per task with no payoff. opencode solved the same tasks inline for a fraction of that. Hallucinated answers. One retrieval task answered “42” with zero tool calls, never reading the file that had the answer. Where it stands NIMBL has permissions, sessions, providers, budgets, context selection, structural extraction, tokenizers, and a real benchmark harness that saves raw output for every run. It’s genuinely usable for simple coding. But the benchmark says what the benchmark says: the token win is retrieval-only for now. The next devlog should be about the shell fix, the delegate budget, and seeing if the numbers move.
NIMBL — Devlog #5: This Devlog ran another benchmark: 25 tasks × 3 samples, hidden golden tests only, and the same model on both harnesses (deepseek-v4-flash). I also used these results to fix the mistakes I found and run the benchmark again, which is running rn. NImbl is ca 40% more token efficent half the price and caches better. The Results NIMBL: solved 68/75 tasks, with total tokens of 2,386,450, wall time of 37.7 min (2,264 s) and throughput 1,054 tk/s . opencode: solved 75/75 tasks, with total tokens of 2,436,642, wall time of 71.2 min (4,270 s), throughput 571 tk/s. NIMBL finished 1.9× faster and actually used fewer total tokens than opencode. The tradeoff is that it didn’t finish 7 tasks, and those failed runs still spent real tokens, so this wasn’t a cheap excuse to give up early. On the 4-mode run NIMBL also used around 40% fewer tokens per solved task (26.2–28.0k vs opencode’s 46.8k, −40% to −44% in every mode). That shows the savings were never only coming from retrieval tasks. By Category results bug-fix tasks: −7.2% retrieval tasks: −51.1% multi-file tasks: −16.3% running agent delegation: +130.2% long-hunt: −35.3% shell-loop: +6.3% test-write: +116.9% What It Says The results are pretty decent, and they are getting better. Retrieval now uses half the tokens at a third of the latency : 7 seconds compared to opencode’s 19 seconds. NIMBL is faster in every category, even delegation, where opencode takes 116 seconds per task. The architecture is doing great, and reference cost lands at about half of opencode’s (~$0.26–0.28 per solved task vs ~$0.51). The losses are concentrated in two specific places. Delegation costs 130% more tokens — 373,493 compared to 162,256 — and test-write costs 117% more and it did all this and still failed so it practically wasted tokens The reason for that is simple: we had a hardcoded limit of 8 tool calls, which wasn’t enough for these long tasks, opencode ran ~100. So NIMBL kept reading files and crashed when trying to run an edit, because it ran out of tool calls. The fix was basic: instead of hardcoding every tool call limit universally, adjust them according to the task. Running Now A new benchmark is running rn trying to use these fixes to finally close that gap of tool calls and get fully functional harness which is cheaper and better after local benchmarks work I will run it in a real benchmark like swe lite or sth
NIMBL - Devlog #6 This phase was still about benchmarking optimizing reading papers to see if i can implement some new logic and benchmarking again. I burnder through atelast 400mil tokens which were used in the benchmarks whihc like 10$ openrouter credits and a bit of opencode go Benchmark The results were overhemlingy postive with nimbl achieving a 300/300 fix while being 2.2x cheaper accros all task combined this came mainly from retrival which is understandable as nimbls architecture is build on the idea of rag and we further refined it but even on lh(long horizon) and mf(multi files) it was great #Next steps Damn i take everything i just said back iam runnign offical swe lite tests now and nimbl is performing like shit because of our inbuild steps limit which i forgot its unable to solve the tasks and is failing, so its back to bug fixing see you in a few days.
NIMBL - Devlog #6 I noticed that the last few devlogs were quite lazy and to be frank trash. So this section is just getting you upto date. Explaining the problem, goal, benchmarks and architecture and just giving you a short summary. What is NIMBL? NIMBL which stands for nimble which describes a person as being fast, agile and efficent. Nimbl’s goal is it to allow users to get a coding harness which is half the cost and dobule as fast and allows for them to keep around 80% of the intelligence. It also includes 4 modes learn , explain , plan and build . Plan and build are just the typical modes you see in all harness like opencode and explain is a copy of plan but adjusted, so it shows examples and is able to retrieve the codebase ligthning fast and offer detailed explanation. Learn is the same as build but with measurements in place so you cant just prompt it rather it give you example code or code with simple mistakes and you have to fix them yourself. What have I done? So since fully porting the Opencode tui I have decided to work on nimbles effectivnes I first starded with indepth analysis of other harness and how they work their benefits and their drawbacks. So for example how Pi is ligthweight or how Aiders gathers context. Afterwards I summarized everythign i learned and implemented it, and then came the benchmarks i first started with a local 75 test benchmark across all kinds of test from lh , mf to retrival tasks on which nimbl performed great with being 3x cheaper and achieving a 98% solve rate. Benchmarks The next step was running NIMBL on offical benchmarks for that I choose SWE Lite as it one of the more reputable ones and smaller ones. OF course I wouldnt be able to run even that size as it around 120GB and I dont have that much money for benchmarks. Just so you know evey benchmark I have run used openrouter credits and Iam the person paying for them. So i sliced it, Slicing means instead of running all you take out a certain part and download only that and run only that. On that slice NIMBL was miserable solving 1 out of 15 task. After further optimizing the logic behind it NIMBL is now at a point where it reaches around 80% accuracy and is a third of the price. How does NIMBL work? NIMBL's main architecture is built around a layered context and execution pipeline. The project is indexed using lexical search, structural parsing, and dependency-graph relationships. When a task is received, NIMBL classifies it and retrieves only the most relevant files, symbols, and related dependencies. The retrieved context is compressed and placed into a stable prompt structure, allowing provider-side caching to reduce cost and latency. The agent then works through the task using tools, tests, diagnostics, and bounded execution loops. The result is tracked through token usage, cache hits, cost, latency, and success metrics. This allows NIMBL to stay lightweight while still having access to the important parts of a codebase. The goal is not to send less context blindly, but to send better context. Combined with the different learning modes, this gives NIMBL the foundation to become a faster, cheaper, and more educational coding harness. in the screenshot you can see how much credits i got left i had 10 at the start of the development. Hopefully this made NIMBL easier to understand and gave a short overview
NIMBL - Devlog #7 for some reason i got way to many hours on this project and this is prob because my hackatime tracks my benchmarks so Iam gonna request that they like cut it in half idk, dont wanna be fraud reviewed. This phase was about resetting and reconfiguring Benchmarks The benchmarks were horrendus and I realized that something is going insanly wrong so i decided to do a full reset. Scrap my architecture and go back to a opencode baseline architecture and just remove and add diferent parts. this took only 6 hours but as said my hackatime is bugging prob hoing to try removing 30hours because i just noticed it doesnt make sense. Next Steps Optimizing the archtitecutere and not running anymore benchmarks till Iam sure of this architecture also contactiing stardance cause aint now way iam getting fraued reviewd....
|
1792706095.1167064
|
1793310895.1167064
|
|
21040
|
R2D2 model by @TamasLaszloffy777 | Stardance
|
TamasLaszloffy777
|
1
|
87.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T06:00:44Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This project is a fan-made R2-D2 replica. I made with my fellow, @benedekkristof16 . My part was the 3D modeling and designing, making the mechanincs, (motors with functioning gears), painting and decorating. The most chalenging part of the project wasn’t the learning; however the designing and understanding the complicated blueprints and surface modeling (especially the dome) was the toughest part. This hardware project is capable of rolling around, turning its head and bring light the to night with some LEDs. We made a cool demo video presenting R2. We hope you’ll find it enjoyable.", "repo": "https://github.com/kirikristof/R2D2-model", "demo": ""}]...
|
[{"post_id": 74081, "ts": "202 [{"post_id": 74081, "ts": "2026-09-26T17:09:01Z", "hours": 4.535, "text": "Hello, guys! R2 has been built (mostly)!!! With the help of my dear fellows ( @benedekkristof16 and @hunorkiss04 ), we spent a lot of time working on it. As expected, we faced some difficulties during the building session. The main problem was the CAD design and 3D printing: in some places the holes are too tight for the screws and there are defective pieces; however we could resolve all the problems with some unique solutions. At the end of the day, R2 is moving and he’s able to turn his head! We’ve started to fill the GitHub files and I’ll fix the 3D mistakes. (Ignore the questionable paint job)"}, {"post_id": 63123, "ts": "2026-09-06T19:07:58Z", "hours": 4.7514, "text": "Hello, guys! Hopefully, it’ll be my last devlog about 3D modelling, and next time, I’ll build R2 in real life with my dear fellows, @benedekkristof16 and @hunorkiss04 . I’ve spent hours and hours designing with varying degrees of success and from this mighty point, R2 probably has a much cooler look and far more aura than me🥀. Unfortunatelly, this replica is NOT 100% accurate and I had to model some elements by sight (R2’s holoprojector) and I horribly miscalculated a ratio: R2’s main body (the cylinder) is 220mm and it should have been 200mm. I noticed it too late. Due to the complexity of R2’s torso and the lack of time, I didn’t correct this. It’s not that visible; however I had to let go of the two center foot cylinder due to a lack of space. But it’s our R2, so We’ll keep him, no matter what 😉."}, {"post_id": 62093, "ts": "2026-09-05T10:41:58Z", "hours": 9.1628, "text": "Hello, guys! 3D printing has started, and I designed some important details for R2’s body: the Radar Eye, Shoulder and Battery box. Currently, I’m making the Leg Booster. I still have to model the Ankle Cylinders and a few remaining details for R2’s dome."}, {"post_id": 54599, "ts": "2026-08-25T16:59:32Z", "hours": 9.1508, "text": "Hello guys! I’ve finally finished (almost) R2’s modeling, and I’ve successfully done the hardest part of the project: the decorative panels and holes on the dome. I used plane splitting and surface projection tricks to get perfect panel lines all around the dome to avoid distortion on the spherical surface. All that’s left now is modeling an internal mount for a small IR sensor, and the dome is ready for printing. I’ll design the rest of the decorative elements, such as R2’s eyes and shoulder rings."}, {"post_id": 51125, "ts": "2026-08-20T16:58:22Z", "hours": 9.1283, "text": "Hello, guys! The progress has been huge, and here is a quick list of what I’ve done recently: -I’ve modeled a custom lazy susan bearing for R2’s head that runs on 6mm BBs -The motor mount fot the 28BYJ-48 stepper motor is basically ready and it’s attachable to R2’s torso. -I also made the head-turning system with a huge internal gear. I still need to do some tuning; however it’s time for R2 to come alive. The 3D printing will probably take a couple of hours (or days). Stay tuned!"}, {"post_id": 46403, "ts": "2026-08-13T16:10:33Z", "hours": 7.8453, "text": "Hello, guys! I’m back with a huge update! Recently, I’ve been working on finalizing R2’s legs and shoulder attachment, and it’s looking far better than expected! It’s finally starting to look truly recognizable. It wasn’t a smooth process, though I ran into quite a few problems with component positioning and broken external links between files. Fixing lost references took a lot of patience and effort and figuring out the correct 18° body tilt and getting the shoulder alignment right was time-consuming. Basically it’s done; however, I still haven’t figured out how to make the center wheel. I hope I’ll find the right way. Maybe I’ll have to use LEGO wheel…"}, {"post_id": 42716, "ts": "2026-08-07T15:57:47Z", "hours": 1.3003, "text": "I’m here again and I’ve just tried to finish the main leg. It’s still missing a few decorative elements. Next I will make the shoulder attachment and after that, it’s time for R2’s head!"}, {"post_id": 42639, "ts": "2026-08-07T13:48:13Z", "hours": 3.6844, "text": "This time, I tackled the main ankle block, and it’s done, and also wrapped up the design for the decorative side panels on the center foot assembly. To keep maintenance easy and avoid visible screw holes, I separated the decorative panels and designed small pockets for 5x2mm neodymium magnets that perfectly fit into the hole."}, {"post_id": 31951, "ts": "2026-07-20T19:28:39Z", "hours": 9.1475, "text": "It’s been over a week since the last update; however, don’t let the silence fool you! 😉 In the latest grinding, I worked almost entirely on the most critical piece: the main foot. Anyone who has ever designed a functioning mechanical foot knows exactly the pain and agony, that turning a solid block into a precise assembly is a total survival trip (maybe it’s just skill issue🥀), but I’m so proud that I’ve made it so far! The perfect wheel connection is ready, and the JGA25-370’s motor mount has found its home. Even those printer-killing, razor-sharp internal overhangs got tamed with clean chamfers and fillets. R2 will be proud of our team!"}, {"post_id": 24229, "ts": "2026-07-07T17:30:31Z", "hours": 8.1139, "text": "Hello, guys! It has been long since my last devlog, so let me break it down for y’all: -I’ve been working on the main cylinder for 8 hours (not straight) and I can finally say: It’s basicly done! -I modeled the cylinder with the body frame, and it became brutally strong (I hope it won’t brake in my hands). -I also made the internal shoulder mounts for the legs. They are perfectly integrated into the inner frame, making sure that this won’t fall apart! -To finish off this massive update, I spent quite some time sketching out all the crucial decorative panels, using a reference canvas. I’m as keen as mustard to finish and see something come to life!"}, {"post_id": 20708, "ts": "2026-07-02T11:36:09Z", "hours": 1.2308, "text": "Hello, guys! What I’ve achieved this past week is not as impressive as I’ve hoped: It’s been a packed week of modeling and geometry solving. I have successfully brought together several crucial assemblies into the main project: 1. Raspberry Pi Pico Frame 2. R2-D2 Center Foot: Completed the primary structural foot base 3. Center Ankle and Shroud Connection: After battling some complex 3D curved geometry, the ankle block is ready! Next steps: The next phase will be refining the joints and I will start the main cylinder!"}, {"post_id": 20248, "ts": "2026-07-01T19:54:12Z", "hours": 3.2669, "text": "I spent today working on the main ankle. The biggest hurdle was the curved outer plate. The blueprint is a bit confusing. Trying to accurately wrap and cut this 2D pattern onto the 3D curved ankle part in Fusion 360 turned out to be a real geometry headache. The main ankle structure is about 90% complete. As soon as I figure it out how to do this properly, this section will be ready (hopefully by tomorrow)."}, {"post_id": 19324, "ts": "2026-06-30T16:33:49Z", "hours": 2.0169, "text": "Another success! Today, I made sure that R2 won’t lose his leg during his first test drive: I finished the internal pass-through screw system. On one side, the screw head sits inside a deeper hole so it stays hidden under the panel. On the other side, I cut a perfect 6-sided hexagon shape. A real metal nut will sit inside this pocket, so when I tighten the screw, it will hold the leg perfectly, without breaking the plastic (at least, I hope 😜). I’ve started the ankle, making it 9,6 mm wide because the slot is 9.89 mm. This leaves a tiny gap both sides. I also imported the blueprint image to Fusion, scaled to the right size. Finally the project is coming together!"}, {"post_id": 18615, "ts": "2026-06-29T20:17:38Z", "hours": 1.8669, "text": "Today, I finally managed to model the most sweat-inducing parts of the R2-D2 foot, and after a few near-rage-quit moments, I made some step forward. The biggest headache was definitely wrestling that weird decorative trim on the side of the foot. After that, I had to start with the ankle attachment. Since this joint carries our little friend’s (R2’s) weight, it had to be built like a tank. I modeled a standard M6 socket screw. I hope it’ll be solid as rock! Next mission: figuring out how to hide this outer screw hole to keep things completely accurate, and I’ll model the center ankle!"}, {"post_id": 17685, "ts": "2026-06-28T16:14:15Z", "hours": 1.0333, "text": "Progress was slow AGAIN, that stubborn “Half Moon” side arc was completely annoying and refused to cooperate within the time limit. I didn’t let the session go to waste. Instead, I successfully cut out the main socket/connection point for the future leg. One step at a time!"}, {"post_id": 17082, "ts": "2026-06-27T18:51:34Z", "hours": 2.0167, "text": "Progress was way better today! I finally managed to tame the geometry of R2-D2’s center foot after some intense mathematical gymnastics, which was provided by the blueprints. The main body is basically done. There are still decorative panels which are waiting for modeling. The next step is to flip this thing over and design a customized frame for a caster wheel. R2 will be happy, rolling around the house!"}, {"post_id": 16353, "ts": "2026-06-26T16:37:41Z", "hours": 0.6, "text": "Progress was slow today (again), but I started working on a completely new component: the center foot. Though, it was hard, with limited time, I really enjoyed the process. I hope, I will be more efficient."}, {"post_id": 15756, "ts": "2026-06-25T17:05:47Z", "hours": 1.2506, "text": "Progress was a bit slower today and the electronics layout was refined. I modeled the breadboard holder because I forgot to add it yesterday. Since the Pico plugs straight into the breadboard anyway,a separate Pico case isn’t needed anymore and I removed it. I started sketching the panels and windows directly onto the main cylinder using the blueprint dimensions. I hope that the progress will accelerate!"}, {"post_id": 15130, "ts": "2026-06-24T16:15:32Z", "hours": 1.7006, "text": "The R2-D2 project had officially begun! After 5 hours of learning and I finally started the session. Since we are using a Raspberry Pi Pico W as the main controller (recently, my fellow, @benedekkristof16 has just started learning coding and he will do the software part of the project), I created a custom 3D ‘dummy’ model to match its exact physical dimensions. Using this dummy, I designed a protectiv case for the board. Finally, I started the main body of the robot by creating the core cylinder. Next, I will work on the internal parts with @hunorkiss04 !"}, {"post_id": 14442, "ts": "2026-06-23T15:55:01Z", "hours": 1.8008, "text": "My final training session is complete! In today’s practice I modeled a custom ‘Stardance’ object and a detailed polygon screw. Now, I feel experienced enough with Fusion 360’s tools to finish practicing. Next time, my newly joined teammate @hunorkiss04 and I are diving straight into building and modelling R2-D2! Stay tuned, it will be incredible!"}, {"post_id": 13610, "ts": "2026-06-22T09:50:00Z", "hours": 0.9167, "text": "Hopefully leveled up my Fusion 360 skills! Today I designed more complex shapes with more details and curves. Still no robot parts yet, but R2-D2 will be astonishing . Trust the process!"}, {"post_id": 13296, "ts": "2026-06-21T19:34:07Z", "hours": 1.7289, "text": "Spent another 1h 43m practicing the basics. I worked on a bottle and a LEGO brick to master the tools and navigation. It might not look like a robot yet, but I’m learning the rules before I start building the actual model. R2-D2 will be born soon!"}, {"post_id": 12608, "ts": "2026-06-20T16:29:39Z", "hours": 0.9333, "text": "Spent 56 minutes fighting the recording software and figuring out how Fusion 360 works as a rookie. The software looks like an aircraft control panel. Progress is moving at the speed of a snail right now, but tomorrow I’m coming back with more experience!"}]...
|
Title: R2D2 model by @TamasLaszloffy777 | Stardanc Title: R2D2 model by @TamasLaszloffy777 | Stardance
Devlogs:
Spent 56 minutes fighting the recording software and figuring out how Fusion 360 works as a rookie. The software looks like an aircraft control panel. Progress is moving at the speed of a snail right now, but tomorrow I’m coming back with more experience!
Spent another 1h 43m practicing the basics. I worked on a bottle and a LEGO brick to master the tools and navigation. It might not look like a robot yet, but I’m learning the rules before I start building the actual model. R2-D2 will be born soon!
Hopefully leveled up my Fusion 360 skills! Today I designed more complex shapes with more details and curves. Still no robot parts yet, but R2-D2 will be astonishing . Trust the process!
My final training session is complete! In today’s practice I modeled a custom ‘Stardance’ object and a detailed polygon screw. Now, I feel experienced enough with Fusion 360’s tools to finish practicing. Next time, my newly joined teammate @hunorkiss04 and I are diving straight into building and modelling R2-D2! Stay tuned, it will be incredible!
The R2-D2 project had officially begun! After 5 hours of learning and I finally started the session. Since we are using a Raspberry Pi Pico W as the main controller (recently, my fellow, @benedekkristof16 has just started learning coding and he will do the software part of the project), I created a custom 3D ‘dummy’ model to match its exact physical dimensions. Using this dummy, I designed a protectiv case for the board. Finally, I started the main body of the robot by creating the core cylinder. Next, I will work on the internal parts with @hunorkiss04 !
Progress was a bit slower today and the electronics layout was refined. I modeled the breadboard holder because I forgot to add it yesterday. Since the Pico plugs straight into the breadboard anyway,a separate Pico case isn’t needed anymore and I removed it. I started sketching the panels and windows directly onto the main cylinder using the blueprint dimensions. I hope that the progress will accelerate!
Progress was slow today (again), but I started working on a completely new component: the center foot. Though, it was hard, with limited time, I really enjoyed the process. I hope, I will be more efficient.
Progress was way better today! I finally managed to tame the geometry of R2-D2’s center foot after some intense mathematical gymnastics, which was provided by the blueprints. The main body is basically done. There are still decorative panels which are waiting for modeling. The next step is to flip this thing over and design a customized frame for a caster wheel. R2 will be happy, rolling around the house!
Progress was slow AGAIN, that stubborn “Half Moon” side arc was completely annoying and refused to cooperate within the time limit. I didn’t let the session go to waste. Instead, I successfully cut out the main socket/connection point for the future leg. One step at a time!
Today, I finally managed to model the most sweat-inducing parts of the R2-D2 foot, and after a few near-rage-quit moments, I made some step forward. The biggest headache was definitely wrestling that weird decorative trim on the side of the foot. After that, I had to start with the ankle attachment. Since this joint carries our little friend’s (R2’s) weight, it had to be built like a tank. I modeled a standard M6 socket screw. I hope it’ll be solid as rock! Next mission: figuring out how to hide this outer screw hole to keep things completely accurate, and I’ll model the center ankle!
Another success! Today, I made sure that R2 won’t lose his leg during his first test drive: I finished the internal pass-through screw system. On one side, the screw head sits inside a deeper hole so it stays hidden under the panel. On the other side, I cut a perfect 6-sided hexagon shape. A real metal nut will sit inside this pocket, so when I tighten the screw, it will hold the leg perfectly, without breaking the plastic (at least, I hope 😜). I’ve started the ankle, making it 9,6 mm wide because the slot is 9.89 mm. This leaves a tiny gap both sides. I also imported the blueprint image to Fusion, scaled to the right size. Finally the project is coming together!
I spent today working on the main ankle. The biggest hurdle was the curved outer plate. The blueprint is a bit confusing. Trying to accurately wrap and cut this 2D pattern onto the 3D curved ankle part in Fusion 360 turned out to be a real geometry headache. The main ankle structure is about 90% complete. As soon as I figure it out how to do this properly, this section will be ready (hopefully by tomorrow).
Hello, guys! What I’ve achieved this past week is not as impressive as I’ve hoped: It’s been a packed week of modeling and geometry solving. I have successfully brought together several crucial assemblies into the main project: 1. Raspberry Pi Pico Frame 2. R2-D2 Center Foot: Completed the primary structural foot base 3. Center Ankle and Shroud Connection: After battling some complex 3D curved geometry, the ankle block is ready! Next steps: The next phase will be refining the joints and I will start the main cylinder!
Hello, guys! It has been long since my last devlog, so let me break it down for y’all: -I’ve been working on the main cylinder for 8 hours (not straight) and I can finally say: It’s basicly done! -I modeled the cylinder with the body frame, and it became brutally strong (I hope it won’t brake in my hands). -I also made the internal shoulder mounts for the legs. They are perfectly integrated into the inner frame, making sure that this won’t fall apart! -To finish off this massive update, I spent quite some time sketching out all the crucial decorative panels, using a reference canvas. I’m as keen as mustard to finish and see something come to life!
It’s been over a week since the last update; however, don’t let the silence fool you! 😉 In the latest grinding, I worked almost entirely on the most critical piece: the main foot. Anyone who has ever designed a functioning mechanical foot knows exactly the pain and agony, that turning a solid block into a precise assembly is a total survival trip (maybe it’s just skill issue🥀), but I’m so proud that I’ve made it so far! The perfect wheel connection is ready, and the JGA25-370’s motor mount has found its home. Even those printer-killing, razor-sharp internal overhangs got tamed with clean chamfers and fillets. R2 will be proud of our team!
This time, I tackled the main ankle block, and it’s done, and also wrapped up the design for the decorative side panels on the center foot assembly. To keep maintenance easy and avoid visible screw holes, I separated the decorative panels and designed small pockets for 5x2mm neodymium magnets that perfectly fit into the hole.
I’m here again and I’ve just tried to finish the main leg. It’s still missing a few decorative elements. Next I will make the shoulder attachment and after that, it’s time for R2’s head!
Hello, guys! I’m back with a huge update! Recently, I’ve been working on finalizing R2’s legs and shoulder attachment, and it’s looking far better than expected! It’s finally starting to look truly recognizable. It wasn’t a smooth process, though I ran into quite a few problems with component positioning and broken external links between files. Fixing lost references took a lot of patience and effort and figuring out the correct 18° body tilt and getting the shoulder alignment right was time-consuming. Basically it’s done; however, I still haven’t figured out how to make the center wheel. I hope I’ll find the right way. Maybe I’ll have to use LEGO wheel…
Hello, guys! The progress has been huge, and here is a quick list of what I’ve done recently: -I’ve modeled a custom lazy susan bearing for R2’s head that runs on 6mm BBs -The motor mount fot the 28BYJ-48 stepper motor is basically ready and it’s attachable to R2’s torso. -I also made the head-turning system with a huge internal gear. I still need to do some tuning; however it’s time for R2 to come alive. The 3D printing will probably take a couple of hours (or days). Stay tuned!
Hello guys! I’ve finally finished (almost) R2’s modeling, and I’ve successfully done the hardest part of the project: the decorative panels and holes on the dome. I used plane splitting and surface projection tricks to get perfect panel lines all around the dome to avoid distortion on the spherical surface. All that’s left now is modeling an internal mount for a small IR sensor, and the dome is ready for printing. I’ll design the rest of the decorative elements, such as R2’s eyes and shoulder rings.
Hello, guys! 3D printing has started, and I designed some important details for R2’s body: the Radar Eye, Shoulder and Battery box. Currently, I’m making the Leg Booster. I still have to model the Ankle Cylinders and a few remaining details for R2’s dome.
Hello, guys! Hopefully, it’ll be my last devlog about 3D modelling, and next time, I’ll build R2 in real life with my dear fellows, @benedekkristof16 and @hunorkiss04 . I’ve spent hours and hours designing with varying degrees of success and from this mighty point, R2 probably has a much cooler look and far more aura than me🥀. Unfortunatelly, this replica is NOT 100% accurate and I had to model some elements by sight (R2’s holoprojector) and I horribly miscalculated a ratio: R2’s main body (the cylinder) is 220mm and it should have been 200mm. I noticed it too late. Due to the complexity of R2’s torso and the lack of time, I didn’t correct this. It’s not that visible; however I had to let go of the two center foot cylinder due to a lack of space. But it’s our R2, so We’ll keep him, no matter what 😉.
Hello, guys! R2 has been built (mostly)!!! With the help of my dear fellows ( @benedekkristof16 and @hunorkiss04 ), we spent a lot of time working on it. As expected, we faced some difficulties during the building session. The main problem was the CAD design and 3D printing: in some places the holes are too tight for the screws and there are defective pieces; however we could resolve all the problems with some unique solutions. At the end of the day, R2 is moving and he’s able to turn his head! We’ve started to fill the GitHub files and I’ll fix the 3D mistakes. (Ignore the questionable paint job)
Ships:
This project is a fan-made R2-D2 replica. I made with my fellow, @benedekkristof16 . My part was the 3D modeling and designing, making the mechanincs, (motors with functioning gears), painting and decorating. The most chalenging part of the project wasn’t the learning; however the designing and understanding the complicated blueprints and surface modeling (especially the dome) was the toughest part. This hardware project is capable of rolling around, turning its head and bring light the to night with some LEDs. We made a cool demo video presenting R2. We hope you’ll find it enjoyable....
|
1793048121.9074194
|
1793134521.9074194
|
|
26917
|
Henkan by @Kaanreal | Stardance
|
Kaanreal
|
5
|
87.0
|
1040
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T06:37:02Z", "hours": 24.0, "multiplier": 17.32, "payout": 173, "blessing": "neutral", "text": "This update is mostly about making Henkan feel a lot more complete on desktop. You can now save conversions directly into your detected osu!stable and Etterna song folders, so there’s way less manual moving files around. I also redesigned the desktop navigation and added proper pages for conversion history and your local osu! skin library. Pack conversion got a pretty big upgrade too. You can select which difficulties you actually want to convert, review the metadata for each song, and packs using multiple audio files are now automatically separated into individual songs. I also fixed metadata handling so every map keeps its own artist, title, subtitle, audio and background instead of accidentally sharing data across the pack. Live map detection can now be controlled separately for osu! and Etterna, and Henkan remembers the background of the last map you opened even after restarting. There are a bunch of smaller fixes too: faster pack conversion, better Etterna timing and current-song detection, preserved audio bitrate when changing rates, cleaner loading states and buttons, fixed navigation, plus some macOS and Linux specific fixes. The docs were also refreshed, and Henkan finally has its new domain: https://henkan.kaan.moe", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 2, "ts": "2026-09-06T21:12:59Z", "hours": 5.0, "multiplier": 15.89, "payout": 83, "blessing": "neutral", "text": "This update is mostly about getting Henkan into more places. Henkan can now be installed through winget, Homebrew, the AUR, Chocolatey and nixpkgs. If you use a normal package manager, you don’t have to hunt down the GitHub releases anymore. The site got some attention too. All pages are usable on phones now, and shared links show a proper preview card. I also changed the app icon and logo to a new emblem, which now shows up everywhere, from the desktop app and favicon to the package managers above. Smaller fixes: the preview receptors now line up with the note art, so the editor and the game agree on how the chart looks. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 3, "ts": "2026-08-16T23:31:00Z", "hours": 5.0, "multiplier": 18.03, "payout": 88, "blessing": "neutral", "text": "This update is mostly about making Henkan nicer to actually use. The biggest change is the beatmap preview. It can now autoplay the chart when you leave it idle, with notes falling under the receptors like in osu!mania and the HUD staying centered. It makes it way easier to get a feel for a chart before exporting instead of just staring at static note columns. Henkan is also now available in 8 languages . While adding localization, I ended up replacing i18next with a small custom system since I really didn’t need a whole library for what Henkan uses. It’s simpler, lighter, and still covers the entire app. I also added something I’ve wanted for a while: if you import a random .osu file without its audio or background, Henkan can now try to grab the missing files from an osu! mirror automatically. So incomplete beatmap folders are a lot less annoying to deal with. There are some smaller fixes too. Skin images are handled more reliably, previews should match the actual result better, and the updater now gets the real release notes from GitHub instead of showing a placeholder. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 4, "ts": "2026-07-27T14:26:43Z", "hours": 32.0, "multiplier": 19.37, "payout": 387, "blessing": "neutral", "text": "Hello, I’ve continued working on Henkan, my osu!mania ↔ Etterna converter, and released several major updates since my first ship. The biggest addition is full skin conversion. Henkan can now convert osu!mania skins into Etterna noteskins and convert Etterna noteskins back into osu!mania skins. This required handling lane textures, sprite sheets, high-resolution assets, Lua files, metrics, redirects, and the different ways both games structure their skins. I also added customizable difficulty name presets. Exported charts can automatically use information such as the title, artist, creator, original difficulty name, or calculated MSD. Users can also change the column width when exporting to osu!mania. Several conversion issues were fixed, including problems with extreme BPM values, export filenames, media files, and configuration support. The web version now behaves much more like the desktop app, with matching exports and features across Rust, Tauri, and WebAssembly. I also improved the project outside of the main application. Windows builds now use NSIS installers, Henkan is available through the AUR, the documentation has been expanded, the CI workflows have been cleaned up, and I added an end-to-end test for the skin converter. Keeping the desktop and web versions consistent is still one of the hardest parts of the project, since converter changes often need separate implementations for Rust and WebAssembly. My goal is still to make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without losing important data.", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}, {"ship_num": 5, "ts": "2026-07-03T22:04:17Z", "hours": 21.0, "multiplier": 18.3, "payout": 309, "blessing": "neutral", "text": "Hello, I made an osu!mania ↔ Etterna converter called Henkan (変換). I started the project because I noticed that most existing converters didn’t preserve maps correctly. Timing would drift, BPM changes would be lost or simplified, and long notes would often break during conversion. I wanted to build a converter that focused on accuracy instead of quick conversions. Henkan converts beatmaps between osu!mania (.osu / .osz) and Etterna/StepMania (.sm) while preserving the original chart as closely as possible. It keeps millisecond-accurate note timing, supports multiple BPM changes, correctly converts long notes, preserves metadata such as title, artist, creator, difficulty, and preview point, and keeps background references. The application is written as a native desktop app using Rust, Tauri, and React, making it lightweight and fast on Windows, macOS, and Linux. It also supports converting entire packs, allowing users to process many maps at once instead of converting them individually. One limitation is that scroll velocity (SV) is not converted from osu!mania to StepMania because the .sm format does not have an equivalent representation for osu!’s green-line SV changes. My goal with Henkan is to provide a reliable converter that players can trust to preserve their charts accurately instead of introducing timing errors or losing important map information.", "repo": "https://github.com/kaanreal/henkan", "demo": "http://henkan.kaan.moe/"}]...
|
[{"post_id": 72835, "ts": "202 [{"post_id": 72835, "ts": "2026-09-23T20:44:40Z", "hours": 12.7947, "text": "Hello! I worked on Henkan a lot again, mostly on making the desktop app nicer and faster to actually use.One of the biggest changes is that Henkan can now save conversions directly into your detected osu!stable or Etterna song folders. So instead of exporting something and moving it into the game manually, you can just convert it and have it show up where it belongs.I also redesigned the desktop navigation and added pages for your conversion history and local osu! skins. The live map detection settings were improved too, so osu! and Etterna hooks can now be enabled separately.Pack conversion got a lot of work as well. You can select individual difficulties before converting, check the metadata for every song, and packs with different audio files are now split into separate songs automatically. I also fixed a bunch of cases where maps inside a pack could lose their own artist, title, audio or background.The converter now remembers the background of the last map you opened too, even after restarting Henkan. It’s a small thing but makes the home screen feel a lot less empty.There were also a bunch of smaller changes. Loading states and buttons are more consistent, navigation is less messy, pack conversion is faster, Etterna timing and current song detection were improved, and changing song rate now keeps the original audio bitrate.I fixed some platform specific stuff too, mainly the osu!lazer background bridge on macOS and Etterna song detection on Linux.I also refreshed the docs and finally moved Henkan to its new domain https://henkan.kaan.moe registrar might be slow so try https://henkan-chi.vercel.app/"}, {"post_id": 69360, "ts": "2026-09-16T21:49:50Z", "hours": 10.9842, "text": "Hello! I worked on Henkan again and added something I’ve wanted for a while. Henkan can now detect the map you currently have open in osu!stable, osu!lazer, or Etterna and show it directly in the converter. No tosu or any other external tool required.This makes it much faster to open Henkan and immediately work with the chart you’re currently playing or editing.Still working on making the whole workflow between osu!mania and Etterna feel as seamless as possible."}, {"post_id": 63187, "ts": "2026-09-06T21:07:39Z", "hours": 5.2017, "text": "Hello! I’ve kept working on Henkan, and shipped quite a few updates since v1.5.0. The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data."}, {"post_id": 48540, "ts": "2026-08-16T23:29:21Z", "hours": 4.8736, "text": "Hello! I’ve kept working on Henkan, my osu!mania ↔ Etterna converter, and shipped quite a few updates since v1.5.0.The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data."}, {"post_id": 35508, "ts": "2026-07-26T23:56:48Z", "hours": 12.4944, "text": "Henkan Devlog (v1.3.1 → v1.5.0) v1.4.0 (July 20-23) This update was mainly about skin conversion. I added support for converting osu!mania skins to Etterna noteskins and back. It ended up being much bigger than I expected, with over 1,600 lines of code just for the converter. I also added difficulty name presets with placeholders like title, artist, creator, difficulty, and MSD, fixed an issue with extreme BPM values, and added a column width setting for osu!mania exports. Outside of the app, I improved CI, switched Windows installers to NSIS, added AUR support, improved the documentation, and wrote a full end-to-end test for skin conversion. v1.5.0 (July 24-26) This update focused on making the web version behave the same as the desktop app. I fixed export names, media handling, and config support so browser exports now match Tauri. I also fixed a spacebar shortcut bug, made update notes render as Markdown, and cleaned up the CI workflows. Keeping the web and desktop versions in sync is still one of the hardest parts since every converter change has to work in both Rust and WASM."}, {"post_id": 31742, "ts": "2026-07-20T11:47:27Z", "hours": 19.8603, "text": "Devlog — Countdown fix + WASM sync Fixed countdown being on by default when converting Etterna to osu. Added Countdown: 0 to the [General] section in the converter, the dummy diff generator, and the TypeScript equivalent. Discovered the web version was using a stale pre-built WASM binary that didn’t have any of the Rust fixes. Created wasm-core/ — a new crate that builds WASM from the same Rust source via #[path] references. No code duplication. Added npm run build:wasm for local rebuilds and a CI job that auto-rebuilds WASM on push to main so it never goes stale again"}, {"post_id": 21788, "ts": "2026-07-03T22:01:33Z", "hours": 1.7431, "text": "Hello, today I polished and finished the newest version of Henkan! This version is now the most stable version that also introduced an web based app."}, {"post_id": 21102, "ts": "2026-07-02T21:55:30Z", "hours": 5.2581, "text": "Hello, today I fully worked on making my project available for the web via Vercel! I had to solve many issues like permission issues , timing issues , upload issues and more , I eventually fixed it and can say that it’s working stable now! Now I have to sleep…"}, {"post_id": 19532, "ts": "2026-06-30T21:09:08Z", "hours": 14.2728, "text": "Hello, this is my first log! I have to admit that my project is kinda niche but it fills the gaps of the rhythm game community. Short introduction : Im making an advanced osu!mania ↔ Etterna beatmap converter to simplify the mapping and playing of maps. I really depend on making it high performance and feature rich, for example: I had to go through many issues like fixing timing issues , conversion logic , or other things, but I learned from it and fixed them in a way that sets other converters in the ground. I started my project a few days before I found out about stardance hack club so im kinda sad that this time doesn’t count :(. Anyways, im happy to share my progress from now on. Today I focused on developing the CLI for my project and polishing some things, I think it turned out great"}]...
|
Title: Henkan by @Kaanreal | Stardance
Devlogs:
H Title: Henkan by @Kaanreal | Stardance
Devlogs:
Hello, this is my first log! I have to admit that my project is kinda niche but it fills the gaps of the rhythm game community. Short introduction : Im making an advanced osu!mania ↔ Etterna beatmap converter to simplify the mapping and playing of maps. I really depend on making it high performance and feature rich, for example: I had to go through many issues like fixing timing issues , conversion logic , or other things, but I learned from it and fixed them in a way that sets other converters in the ground. I started my project a few days before I found out about stardance hack club so im kinda sad that this time doesn’t count :(. Anyways, im happy to share my progress from now on. Today I focused on developing the CLI for my project and polishing some things, I think it turned out great
Hello, today I fully worked on making my project available for the web via Vercel! I had to solve many issues like permission issues , timing issues , upload issues and more , I eventually fixed it and can say that it’s working stable now! Now I have to sleep…
Hello, today I polished and finished the newest version of Henkan! This version is now the most stable version that also introduced an web based app.
Devlog — Countdown fix + WASM sync Fixed countdown being on by default when converting Etterna to osu. Added Countdown: 0 to the [General] section in the converter, the dummy diff generator, and the TypeScript equivalent. Discovered the web version was using a stale pre-built WASM binary that didn’t have any of the Rust fixes. Created wasm-core/ — a new crate that builds WASM from the same Rust source via #[path] references. No code duplication. Added npm run build:wasm for local rebuilds and a CI job that auto-rebuilds WASM on push to main so it never goes stale again
Henkan Devlog (v1.3.1 → v1.5.0) v1.4.0 (July 20-23) This update was mainly about skin conversion. I added support for converting osu!mania skins to Etterna noteskins and back. It ended up being much bigger than I expected, with over 1,600 lines of code just for the converter. I also added difficulty name presets with placeholders like title, artist, creator, difficulty, and MSD, fixed an issue with extreme BPM values, and added a column width setting for osu!mania exports. Outside of the app, I improved CI, switched Windows installers to NSIS, added AUR support, improved the documentation, and wrote a full end-to-end test for skin conversion. v1.5.0 (July 24-26) This update focused on making the web version behave the same as the desktop app. I fixed export names, media handling, and config support so browser exports now match Tauri. I also fixed a spacebar shortcut bug, made update notes render as Markdown, and cleaned up the CI workflows. Keeping the web and desktop versions in sync is still one of the hardest parts since every converter change has to work in both Rust and WASM.
Hello! I’ve kept working on Henkan, my osu!mania ↔ Etterna converter, and shipped quite a few updates since v1.5.0.The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data.
Hello! I’ve kept working on Henkan, and shipped quite a few updates since v1.5.0. The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data.
Hello! I worked on Henkan again and added something I’ve wanted for a while. Henkan can now detect the map you currently have open in osu!stable, osu!lazer, or Etterna and show it directly in the converter. No tosu or any other external tool required.This makes it much faster to open Henkan and immediately work with the chart you’re currently playing or editing.Still working on making the whole workflow between osu!mania and Etterna feel as seamless as possible.
Hello! I worked on Henkan a lot again, mostly on making the desktop app nicer and faster to actually use.One of the biggest changes is that Henkan can now save conversions directly into your detected osu!stable or Etterna song folders. So instead of exporting something and moving it into the game manually, you can just convert it and have it show up where it belongs.I also redesigned the desktop navigation and added pages for your conversion history and local osu! skins. The live map detection settings were improved too, so osu! and Etterna hooks can now be enabled separately.Pack conversion got a lot of work as well. You can select individual difficulties before converting, check the metadata for every song, and packs with different audio files are now split into separate songs automatically. I also fixed a bunch of cases where maps inside a pack could lose their own artist, title, audio or background.The converter now remembers the background of the last map you opened too, even after restarting Henkan. It’s a small thing but makes the home screen feel a lot less empty.There were also a bunch of smaller changes. Loading states and buttons are more consistent, navigation is less messy, pack conversion is faster, Etterna timing and current song detection were improved, and changing song rate now keeps the original audio bitrate.I fixed some platform specific stuff too, mainly the osu!lazer background bridge on macOS and Etterna song detection on Linux.I also refreshed the docs and finally moved Henkan to its new domain https://henkan.kaan.moe registrar might be slow so try https://henkan-chi.vercel.app/
Ships:
Hello, I made an osu!mania ↔ Etterna converter called Henkan (変換). I started the project because I noticed that most existing converters didn’t preserve maps correctly. Timing would drift, BPM changes would be lost or simplified, and long notes would often break during conversion. I wanted to build a converter that focused on accuracy instead of quick conversions. Henkan converts beatmaps between osu!mania (.osu / .osz) and Etterna/StepMania (.sm) while preserving the original chart as closely as possible. It keeps millisecond-accurate note timing, supports multiple BPM changes, correctly converts long notes, preserves metadata such as title, artist, creator, difficulty, and preview point, and keeps background references. The application is written as a native desktop app using Rust, Tauri, and React, making it lightweight and fast on Windows, macOS, and Linux. It also supports converting entire packs, allowing users to process many maps at once instead of converting them individually. One limitation is that scroll velocity (SV) is not converted from osu!mania to StepMania because the .sm format does not have an equivalent representation for osu!’s green-line SV changes. My goal with Henkan is to provide a reliable converter that players can trust to preserve their charts accurately instead of introducing timing errors or losing important map information.
Hello, I’ve continued working on Henkan, my osu!mania ↔ Etterna converter, and released several major updates since my first ship. The biggest addition is full skin conversion. Henkan can now convert osu!mania skins into Etterna noteskins and convert Etterna noteskins back into osu!mania skins. This required handling lane textures, sprite sheets, high-resolution assets, Lua files, metrics, redirects, and the different ways both games structure their skins. I also added customizable difficulty name presets. Exported charts can automatically use information such as the title, artist, creator, original difficulty name, or calculated MSD. Users can also change the column width when exporting to osu!mania. Several conversion issues were fixed, including problems with extreme BPM values, export filenames, media files, and configuration support. The web version now behaves much more like the desktop app, with matching exports and features across Rust, Tauri, and WebAssembly. I also improved the project outside of the main application. Windows builds now use NSIS installers, Henkan is available through the AUR, the documentation has been expanded, the CI workflows have been cleaned up, and I added an end-to-end test for the skin converter. Keeping the desktop and web versions consistent is still one of the hardest parts of the project, since converter changes often need separate implementations for Rust and WebAssembly. My goal is still to make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without losing important data.
This update is mostly about making Henkan nicer to actually use. The biggest change is the beatmap preview. It can now autoplay the chart when you leave it idle, with notes falling under the receptors like in osu!mania and the HUD staying centered. It makes it way easier to get a feel for a chart before exporting instead of just staring at static note columns. Henkan is also now available in 8 languages . While adding localization, I ended up replacing i18next with a small custom system since I really didn’t need a whole library for what Henkan uses. It’s simpler, lighter, and still covers the entire app. I also added something I’ve wanted for a while: if you import a random .osu file without its audio or background, Henkan can now try to grab the missing files from an osu! mirror automatically. So incomplete beatmap folders are a lot less annoying to deal with. There are some smaller fixes too. Skin images are handled more reliably, previews should match the actual result better, and the updater now gets the real release notes from GitHub instead of showing a placeholder. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche
This update is mostly about getting Henkan into more places. Henkan can now be installed through winget, Homebrew, the AUR, Chocolatey and nixpkgs. If you use a normal package manager, you don’t have to hunt down the GitHub releases anymore. The site got some attention too. All pages are usable on phones now, and shared links show a proper preview card. I also changed the app icon and logo to a new emblem, which now shows up everywhere, from the desktop app and favicon to the package managers above. Smaller fixes: the preview receptors now line up with the note art, so the editor and the game agree on how the chart looks. You can try the latest release here: https://github.com/kaanreal/henkan/releases Its really hard to provide screenshots or other things cause it is really niche
This update is mostly about making Henkan feel a lot more complete on desktop. You can now save conversions directly into your detected osu!stable and Etterna song folders, so there’s way less manual moving files around. I also redesigned the desktop navigation and added proper pages for conversion history and your local osu! skin library. Pack conversion got a pretty big upgrade too. You can select which difficulties you actually want to convert, review the metadata for each song, and packs using multiple audio files are now automatically separated into individual songs. I also fixed metadata handling so every map keeps its own artist, title, subtitle, audio and background instead of accidentally sharing data across the pack. Live map detection can now be controlled separately for osu! and Etterna, and Henkan remembers the background of the last map you opened even after restarting. There are a bunch of smaller fixes too: faster pack conversion, better Etterna timing and current-song detection, preserved audio bitrate when changing rates, cleaner loading states and buttons, fixed navigation, plus some macOS and Linux specific fixes. The docs were also refreshed, and Henkan finally has its new domain: https://henkan.kaan.moe...
|
1793051554.6650107
|
1793137954.6650107
|
|
31437
|
Neverland OS by @253_Mathilde_IYKYK | Stardance
|
253_Mathilde_IYKYK
|
2
|
87.0
|
1295
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T15:36:45Z", "hours": 68.0, "multiplier": 18.97, "payout": 1295, "blessing": "neutral", "text": "Neverland OS is a web-based OS with a Peter Pan/Tinkerbell theme. Unlike other operating systems, Neverland OS doesn’t prioritize either design or performance. It tries to be good at both. It has a Notes app, a Music app, a Gallery app, a Game, a Video app, a NASA app, a Wikipedia app, a Hubble app, and a User Manual app. It also has mini apps like a search bar, a timer, weather, and more. My goal was to create something that looks unique. Because when we program, we often have other operating systems in our head. So we automatically put things where we are used to seeing them. But who said that window controls need to be on the right side of a window? And who said that all apps need to look like the ones we use every day? Don’t get me wrong. Those operating systems work great. But they already exist. So why not try something new? Neverland has a lot of hidden features (aka Easter eggs) and was built to have everything you need. Sometimes you don’t need a lot of apps. Just a music app to keep your focus up, a timer to motivate you, and something to write in. Of course, my OS can do way more than that. But when you are honest with yourself: you don’t really need much more than that. But who said that just because we don’t need that much, we have to work with ugly minimalistic stuff? Exactly. No one! So I gave my best to make it look cute. I hope you like it. And if you don’t, let me know! I often struggled with JS because I basically started from 0 knowledge. The Music app was especially difficult because it is so unique (yk so finding help online was impossible). I deleted stuff, made mistakes, broke things, and redid the graphics many times. There are way more hours in this project than you can see ( because I builded this thing on my old laptop in my holidays and that laptop breaks down everytime you use lapse). I took this project everywhere and spent almost every bit of free time I had on it.I worked on Neverland for 42 days. During that time I made over 500 deployments on GitHub, over 600 commits on GitHub, uploaded things millions of times because of GitHub issues, and wrote around 3,500 lines of code. I also tried my best to be transparent about the whole process. I wrote a Devlog about roughly every 2 hours. All instructions are in the OS or in the README. I gave my best with everything: the code, the graphics, the storytelling , the Easter eggs, and all the little details. I hope you like Neverland OS and have fun trying everything out. Sorry for my grammar or language mistakes. English isn’t my first language.", "repo": "https://github.com/253-Mathilde/My-first-OS", "demo": "https://253-mathilde.github.io/My-first-OS/"}, {"ship_num": 2, "ts": "2026-07-15T14:49:28Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Peter Pan and Tinkerbell-themed OS. At the beginning, the JavaScript was really hard because I had only worked with blocks of code, not actual code (maybe you know code.org — that’s what I mean). The graphics took me quite some time, as did all the brainstorming and planning, because I did my best to create a good structure. I explained the whole idea and the thought behind the theme in my README. On my site, you have two draggable windows (the Welcome window and the Journal app window), and you can write stuff in your little journals and create islands. (I also explained that in my README, but if you don’t want to read it: an island is a note, and I called it that because of the site’s theme.) My site also has a little slideshow in the Journal app that explains how to use everything. My Stardance profile is linked too, so you can check out my other project. The site also includes a timer at the top. I hope you like it, and I’m already collecting ideas for Mission Two. This text was corrected with AI.", "repo": "https://github.com/253-Mathilde/My-first-OS", "demo": "https://253-mathilde.github.io/My-first-OS/"}]...
|
[{"post_id": 48968, "ts": "202 [{"post_id": 48968, "ts": "2026-08-17T15:31:53Z", "hours": 0.9764, "text": "Okay so I think I ship now ,just made some small changes (so my code is better to understand by others) and somehow they turned out to be an hour so yeah time to ship.Thanks for all your support and figers crossed that the first ship works!"}, {"post_id": 48896, "ts": "2026-08-17T13:41:36Z", "hours": 3.7464, "text": "Last Devlog (hopefully). Okay so before you judge me because I promised that I would ship yesterday: This README is massive and I gave my best to make it short but still well explained and yeah this was just so much work.Hope you like it. The TV should also work now.Finally, so maybe try it! https://253-mathilde.github.io/My-first-OS/ . I think that I’ll ship today. I really hope that everything works so pleaseeeeee I need some feedback. This project is just crazy and so many already like it.Can’t wait to see what you say to my next projetc idea. Thanks for your support and can’t wait to hear all the feedback. SO many hours of work.Hope they pay of.Thanks for reading <3."}, {"post_id": 47635, "ts": "2026-08-15T17:38:45Z", "hours": 3.1572, "text": "Okay so I never want to see a link in a HTML project again for at least the next 2 weeks because I now added the image sources to the manual, and that was just some crazy work. I myself always keep every source throughout the whole project but that meant that I had 15 pages full of links and I only needed the ones for the images And some were even unnecessary because those images were deleted from the site through the whole project. I know this site is probably the ugliest one in this whole project but also one of the most important ones. I also worked on the grammar. There might be some little mistakes but I wrote it. English is not my mother tongue, and I typed far more than just a prompt into an AI. I also checked the mistake with the YT video but couldn’t find one. It would really help if others also checked if the vd in the TV does not work. Tomorrow is README day. We are really there. I still can’t believe it. And someone wrote me on slack that you can review your own project with any AI, and the AI really liked mine so fingers crossed that the first ship will get approved And my work paid off. Thanks for all your support, and I would really appreciate your help with the TV app. Thanks for reading <3 Here is the link: https://253-mathilde.github.io/My-first-OS/"}, {"post_id": 47128, "ts": "2026-08-14T19:52:28Z", "hours": 1.8492, "text": "Check it out https://253-mathilde.github.io/My-first-OS/ Okay so today I added the last song to the music app.I also changed the font in the welcome window and wrote more text/changed some stuff. I also added better img to the galerie so now everything looks clean and everything is so close to being finished. I know I say that every day but you get a different point of view when you have over a month of work in your head VS just 3 or 4 more days. I am soooo happy with the font in the welcome window because the other one was more tech and this is more fairy-like. If you have a different opinion or absolutly hate it : say something! As you can see in the last DEVLOG I changed a lot based on feedback so yeah. I also changed the songs that are mine (not the ones from my base code) to github so now the img may load a little bit slow, but the sound should work great.I also made all the img links in the galerie app to github links( I downloaded everything from catbox and uploaded it to github and then change dthe file name and then re-run every job). I love how the music app turned out and looks when other windows are opened. Hope you like it tomorrow is going to be grammar and manual day because these things are just as importent as the coding.And when I work in my schedule, the day after that is README day and correcting graphic days.That would mean we ship in 2 days. I’ll give my best to find enough time for that.Thanks for reading <3"}, {"post_id": 46417, "ts": "2026-08-13T16:40:50Z", "hours": 2.2708, "text": "Concept Devlog Okay so I know it looks like I haven’t worked on this project for the last two days but Actually, I have worked non-stop for the last two days. I got some feedback for my site, and I am still open for some feedback. I really struggled with GitHub and ended up renaming every file in my project, and yes, I needed to do that individually and wait every time for about 10 minutes. Now more and more images are getting changed from Catbox to GitHub because someone said that I should reduce the loading time. I myself don’t like using GitHub for images and stuff because it is sooo much work with the folders and stuff, but you wanted it so, so I changed it. I also changed the manual because I also got some feedback for that. I also will upload the Pixabay songs to GitHub but not the ones from the tutorial I used because I don’t know where this music is from… That should reduce the loading time from the music app. I also found a lot of details that are not perfect so I also will change these but these are mostly little things in the user interface. I really gave my best the last days even though I can’t use Lapse for time tracking because it does not work with my laptop. Oh, and I almost forgot: the OS is made for smaller screens with a browser window width from 1400 px (I don’t mean the width of your screen), so I would Be really happy to know how bad it looks on other screens. I am really sorry for that but can’t change that because my CSS is 1600 lines of code and I often used position: absolute;. I am a beginner and will work with the percentage the next time! I promise. Thanks for reading and your patience with me. Check out the site at the moment, but please respect that the manual is not quite finished and the text can look a little bit misplaced sometimes. https://253-mathilde.github.io/My-first-OS/ Thanks for reading <3"}, {"post_id": 44832, "ts": "2026-08-10T21:08:40Z", "hours": 1.5083, "text": "That is just the first page.I’m waiting for two hours.I can’t even cancel them.Why always meeeeeee.I just made a folder to make it organized localy and when I uploaded it from the app ( yk the push and pull ) this happend.Yeah that takes sooooo long and btw I added more songs and made some things a little bit cleaner.As you may can see I can’t show you anything right now.Thanks’s for reading <3"}, {"post_id": 44075, "ts": "2026-08-09T16:26:52Z", "hours": 2.9811, "text": "Ahhh, I’m freaking out. The music app is finished!! Finally. It took me so long. Yes, I still need to add more songs (we only have the 3 from the base I used), but the whole layout is finished. Everything that comes now is only details and grammar and such stuff, but that was actually the last line of code for this project (yk, I now only need to repeat or fix things, not write something from scratch). In the app we have a slideshow at the beginning, a moving CD (spins), a menu that comes up front if your mouse touches it, a back button for the previous song, a next button for the next song, and a play and pause button that changes (yk, if the music plays it is ‘stop’ and if not it is ‘play’), changing song names and, of course, changing artists names. That app was the most challenging of all. Hope you like the design and everything! It would really help if you tried the site https://253-mathilde.github.io/My-first-OS/ and looked if everything works, but please respect that I am working on the grammar. Now we are finally getting to the last part!!! Thanks for reading <3."}, {"post_id": 43826, "ts": "2026-08-09T08:08:51Z", "hours": 1.7783, "text": "I think the manual is now finished. I know the CD site is not finished, but neither is the app. When I am finished with that, I’ll update the manual. I also added that star effect that shows when you click on the star thing on the last page. I also made some Easter eggs, like hidden sounds (for example, the first audio that was taken on Mars plays if you click on the green heart in the map window, which is also hidden), and I made the tab name of the OS a little game (I don’t know how to call it; it basically just moves and looks pretty). Hope you like the app; I’m always happy to hear some feedback, and now I finally start working on the music app. Thanks for reading <3."}, {"post_id": 42751, "ts": "2026-08-07T17:00:35Z", "hours": 4.0733, "text": "Okay, I worked on the manual app more, and you now can slowly see where we are going. That took me super long because I also did all the graphics and the effect where the image turns and gets bigger the second your cursor touches the image. Hope you like the graphics and the little tinkerbell on the cover. I know it is not perfect because the book is already open when you open the app, but I think it looks okay, and I can’t change it because of the symbols (they would look pretty bad on the next pages then). I also need to change the back site, text and next buttons. Btw, I now have over 300 commits on GitHub and 69 hours on Hackatime, and the project has been active for 32 days (started on 7/7/26). Literally, over a month and one devlog got over 2000 views 🥹. Thanks for reading and always helping me out <3"}, {"post_id": 42274, "ts": "2026-08-06T22:06:50Z", "hours": 1.2061, "text": "Okay, so GitHub is still broken, so text will have to do it. I added the Wikipedia and manual apps. And I also wrote the whole manual. That was quite some work, and I also fixed parts of the JS that were not really stable. I am so happy that it works now because I almost deleted everything today. In the end the problem, why everything did not work, was a missing close div thing. I spent the whole afternoon till now searching for that. It is midnight. I started in the afternoon. I feel really dead right now. Tomorrow I really need to do the music app. Thanks for reading <3"}, {"post_id": 41927, "ts": "2026-08-06T13:30:02Z", "hours": 2.9661, "text": "Okay, so like, I started on an app, and I can’t try it at the moment because GitHub is testing my patience, but yeah, the app is the manual app, and it looks like a book, and you can actually flip pages. It is just annoying that I can’t work correctly because of GitHub, but I don’t have another chance; I just need to try again and again and again: And because I do not know if my code even works, I can’t even continue with another app like the music app. Thanks for reading <3"}, {"post_id": 41535, "ts": "2026-08-05T20:07:14Z", "hours": 3.6178, "text": "Here we finally are: It works. With sound. And autoplay. And the alert. And I am soooooo happy. It took me the whole day, and I needed to do stuff that I had never even heard of, but thanks to the internet and my ability to read, I finally got it. So you can understand that better: I started at 8 am in the morning and finished at 4 pm in the afternoon. As you may understand, my patience for the music app was not enough, so I built 2 new apps instead. That sounds a little bit crazy, but because these are based on a webpage, it only took about 3 hours each. I still added a little window that explains everything, and I hope you like the result. I got so much kind feedback for the pre-loader and in general; I am getting so many nice comments. Thank you for that, and I hope you like the result and see where we are going! Thanks for reading. <3 The vd is pretty bad because I had to compromise it, so maybe check it out in real life or wait for a DEVLOG with a better VD."}, {"post_id": 40956, "ts": "2026-08-04T20:19:33Z", "hours": 1.0911, "text": "I worked on the preloader for the last 7 hours, but because of the browser update in 2025, an alert does not count for autoplay with the audio, and I still need a solution for that. Here is the MP4 of the preloader with the audio. I hope I will get that with the audio tomorrow. At least the video is working with the alert. Hope you like the graphics (they took soooo long, and yes, everything is self-made, so no Google copy and paste). Thanks for reading <3"}, {"post_id": 40737, "ts": "2026-08-04T13:45:55Z", "hours": 1.7208, "text": "I NEED YOUR HELP!!!! Okay so I started working on the menu. It works already but needs some better styling. So you can see the vision: The red circles are going to be little CDs like the one already existing. But I need your help because I do not know how to make the control buttons (the styling), so here are like 3 versions of it. Hope you can see the vision and may help me choose (and of course the buttons will be buttons, not words, but yk it is just so you can see what my vision is). Thanks for reading <3"}, {"post_id": 40328, "ts": "2026-08-03T19:25:43Z", "hours": 2.0278, "text": "Okay so here is what we have now: I added the final things for the apps, and I also changed the layout so that the backgrounds only repeat horizontally and not vertically. I also worked on the screens for the app and, of course, on the music app. I need to pull myself together so I do not start with any other app before I finish the music app. I also worked on the graphics as always, and we now finally have better vd, and everything is just better. Yayyyy.Thanks for reading <3"}, {"post_id": 39650, "ts": "2026-08-02T19:31:46Z", "hours": 0.7467, "text": "#Concept Devlog ( infos about the planning and the vision I will mark them now so you can choose yourself if your interests are only in the progress or also in everything behind the finished page )Okay so today was a planning day. Again.But you need to trust me because if you don’t have a plan than you won’t have a good project because I have multiple apps and I want everyone to be perfect. So over the time more and more little mistakes or things that just feel false appear.And I mean I already used so much effort so why should I throw that away and make it unperfect? A lot of new problems also appeared because I now saw the site on a bigger screen (yk laptop VS PC) and it just looked terrible! And the music app is not finished and because that DEVLOG is already really long: there will be 3 more apps.Yayyy.They won’t be too complicated because they will base on already existing sites so it should be done in about 10 hours but before that everything needs to be done and as you can see that is a long list and every task will take about an hour at least.We have round about 28 tasks btw.It will be a long journey and I think that we are not even close to half of that so if you really read all of that: A really big thank you because you have true interests! Thanks for reading<3"}, {"post_id": 38844, "ts": "2026-08-01T12:26:28Z", "hours": 1.2656, "text": "Okay so we now have a working thing ( the play and stop button needs some work because right now it only works if you do not use the back and forward buttons) and as you can see I changed the graphics and what you cannot see is that it rotates like a real CD! I started planning the menu cause it will have the shape of a half circle so I do not have quite an idea how I will do that but we will see.Thanks for reading and right now I only have the example music from the code I used so if you have music wishes:leave a comment.Thanks for reading <3"}, {"post_id": 38250, "ts": "2026-07-31T15:32:45Z", "hours": 1.2331, "text": "#concept Devlog AND SR FOR LIKE THE LOOKS AND THE GRAMMAR OKAY WE HAVE 37 DEGREES AND THIS IS JUST A VISION IT IS NOT SUPPOSED TO LOOK PERFECT!! Okay so I now started working on the music app and yeah it looks sooo funny right now(yk to see the switch from all the clean and perfect things to THAT)but I mean everything works for now so we just need the styling and the menu.That is such an easy thing to say because actually:The graphics take me sooo long.There are about 20 hours that you do not see and thanks to the universe catbox is not working right now and that means I have to use postimages and it works but like the pictures load sooo long.Hope it works soon and if you have like song wishes for the app:leave a comment!Thanks for reading and here is my vision:"}, {"post_id": 38102, "ts": "2026-07-31T09:57:54Z", "hours": 1.4106, "text": "Okay so the game is kinda finished! I now have a game over screen and a finished screen and a like maual or pre-loader.Everything is explained and I myself think that it is like the right level of easy but still a little bit tricky.You would help me a lot with trying it out and giving me a short feedback. ( https://253-mathilde.github.io/My-first-OS/ )Thanks for reading and here are the picture of the game app:"}, {"post_id": 37862, "ts": "2026-07-30T20:44:36Z", "hours": 0.4675, "text": "I added something like a pre-loader-thing that shows the info for the game everytime you open the game window for 30 sec.I now that it is kinda annoying that I only log such short times but I just squeze in every tiny bit of time I have and the graphics also take pretty long.Thanks for reading <3"}, {"post_id": 37765, "ts": "2026-07-30T17:59:45Z", "hours": 0.8992, "text": "So I did some JS and spent way too much time on the graphics.It now shows a message and hides everything when you reach a score from 100.I still need to do something for the like game over part.Hope you like the design because that will stay the same I think.Thanks for reading <3"}, {"post_id": 37038, "ts": "2026-07-29T14:41:02Z", "hours": 1.1483, "text": "Okay so I started doing some CSS and made some graphics.Right now the background is too full (yk the focus point from the game should not be the background) but like the keyframes work and I added that frame.I will chnage the elements from the game but I will not change like the frame because I think that the frame looks pretty cool.We still need to do the JS and to change some stuff but I think that I will get that done in about 6-8 hours.Unfortunatly I do not have 6-8 hours the next days.I will give my best to squeze in some time but yeah: Sr for the bad vd but like I do not even use that other tracking tool because my laptop is just soooo slow with it and like recording and all the animations and windows that are open-it almost collapsed so srrrr Thanks for reading and if you have styling ideas for the game:leave a comment or write me on Slack <3"}, {"post_id": 36942, "ts": "2026-07-29T10:55:56Z", "hours": 1.1881, "text": "Okay so here we are: We have a WORKING mini game that looks like trash! And I am sooo happy.As you can see there is an object that you can control with the arrow up key (hope that is the right english word for that).And we also have like blocks that are generated and have a random height.Yayyy.So we only need to do the styling and add some JS that ends the game when you have a score from xxx (I already have a score in my JS so that should not be so complicated).I am so happy right now and I think it was the right decision to start over.Thanks for reading and sr for all these bad vd’s,they will get better soon.<3"}, {"post_id": 35909, "ts": "2026-07-27T17:23:26Z", "hours": 0.3122, "text": "Okay so I hope that I do not dissapoint s.o now.I deleted the whole thing that I had so basically a whole day of work because there is always way more time behind everything that you think.I did that because I could not find the mistake and I did not really get the code.I never really did JS before this project and I am learning JS while doing this project.And I mean really learning because I kinda eat the whole W3 school site but yeah.I want to give my best in this project and if I cannot find the mistake in my own coding:I would need AI.And do not get me wrong but help from AI okayyyy but a whole app made with AI.No.No.And no.That is MY opinion so yeah if you do not think so or use AI a lot then do so (it is okay but not for me).I give my best to be transparent and always say when I used AI.The plan is now to build like a flappy bird game but without the top part and to make it look cool.I hope you can understand me and stay with me on this project because we are now getting to the hardest part.This will take some time but I will not quit.Thank you for reading(I do not think that s.o will read all of this but yeah)."}, {"post_id": 35832, "ts": "2026-07-27T14:55:32Z", "hours": 2.8108, "text": "Okay so I just started with the game.Actually just started is a huge lie because I am struggeling since 10:00 and we now have 17:00.I used a tutorial and tried to just start basic with making a little jumping game but the objects …They do not exist because the whole generating thing does not work .I first need to get everything working before upgrading the graphics and stuff.I really would like some help! CSS: #background { position: absolute; background-image: url('https://files.catbox.moe/xqsbzm.png'); height: 200px; width: 100%; animation: slideright 600s infinite linear; bottom: 0;}.wendy { background-image: url('https://files.catbox.moe/u52u37.png'); height: 60px; width: 60px; position: absolute; bottom: 0;}.obstacle { background-image: url('https://files.catbox.moe/n5f03w.png'); width: 60px; height: 60px; position: absolute; bottom: 0;}@keyframes slideright { from { background-position: 0 0; } to { background-position: -10000px 0; }} HTML: <div id=\"gameWindow\"> <div class=\"base5\"> <div class=\"symbolegame\"> <p id=\"galerieWindowheader\"> <img src=\"https://i.imgur.com/Y4OL1On.gif\"></p> <p style=\"cursor: pointer\" id=\"gameclose\"><img src=\"https://i.imgur.com/q5TmYNg.gif\"></p> <p style=\"cursor: pointer\" id=\"gameopen\"><img src=\"https://i.imgur.com/3nBda2J.gif\"></p> </div> <div id=\"background\"> <h6 id=\"alert\"></h6> <div class=\"wendy\"></div> <div class=\"grid\"></div> </div> </div> </div> </div> JS: document.addEventListener('DOMContentLoaded', () => { const wendy = document.querySelector('.wendy') const grid = document.querySelector('.grid') const alert = document.getElementById('alert') let gravity = 0.9 let isJumping = false let isGameOver = false function control(e) { if (e.code === \"Space\") { if (!isJumping) { jump() } } } document.addEventListener('keydown', control) let position = 0 function jump() { isJumping = true let count = 0 let timerId = setInterval(function () { //move down if (count === 15) { clearInterval(timerId) let downTimerId = setInterval(function () { if (count === 0) { clearInterval(downTimerId) isJumping = false } position -= 5 count-- position = position * gravity wendy.style.bottom = position + 'px' }, 20) } //move up position += 20 count++ position = position * gravity wendy.style.bottom = position + 'px' }, 20) } function generateObstacles() { if (!isGameOver) { let randomTime = Math.random() * 4000 let obstaclePosition = 1000 const obstacle = document.createElement('div') obstacle.classList.add('obstacle') grid.appendChild(obstacle) obstacle.style.left = obstaclePosition + 'px' let timerId = setInterval(function () { if (obstaclePosition > 0 && obstaclePosition < 60 && position < 60) { clearInterval(timerId) alert.innerHTML = 'Game Over' isGameOver = true //remove all children while (grid.firstChild) { grid.removeChild(grid.lastChild) } } obstaclePosition -= 10 obstacle.style.left = obstaclePosition + 'px' }, 20) setTimeout(generateObstacles, randomTime) } } generateObstacles()}) Thanks for reading<3"}, {"post_id": 35185, "ts": "2026-07-26T13:27:10Z", "hours": 1.725, "text": "So here is the camera app! As you may can see there are two little buttons that look like real camera buttons. I added little arrows but I think they still look real.Right now we have like 22 photos on our digi cam.And well if you scroll through these screens you may see the TV app because I also finished that.I think it also looks pretty cool ,tell me what you think about it in the comments!! It only has one vd right now(yk matching to the theme if you are interested check out the real site).I may add more in the future but not until this project is finished.So these 2 apps are now ready and the next thing on my list is the music app.Happy to hear or see some feedback (If you all really hate it I am going to change it tho but I really gave my best).Thanks for reading <3 🔗 253-mathilde.github.io/My-first-OS/"}, {"post_id": 34192, "ts": "2026-07-24T18:28:48Z", "hours": 1.5156, "text": "#concept Devlog All I can say:The galerie app is finished ! You can check it out or wait until I post a DEVLOG which shows more details.It was squite some work and now it is time for the next point on my todo-list:the TV.I am so happy and grateful for all these people watching my DEVLOGS and for all these kind souls who are staying with this project since minute one.Thank you you all and I really hope you like it!!Thanks for reading <3"}, {"post_id": 33433, "ts": "2026-07-23T11:36:14Z", "hours": 0.8769, "text": "So I added the base for the galerie.I just need to add a slideshow thing which is going to be a little hard because I already have 2 and I need to add the 2 buttons to switch between the images.I am giving my best to squeze in coding time but the graphics themselves take a lot of time.Thanks for reading!!!"}, {"post_id": 33405, "ts": "2026-07-23T10:08:02Z", "hours": 0.9244, "text": "So I pulled myself together and changed the welcome window.I will work on the camera app now but what do we think about the desing from the welcome window ? Should I leave it as it is or should I change it ? Yk it is the first impression you get when you go on my site.Thanks for reading and your interests in this project."}, {"post_id": 32570, "ts": "2026-07-21T20:40:51Z", "hours": 1.7686, "text": "So I changed the welcome window.It is not perfect and not finished do not worry but it is enough for the moment.It was quite hard-yk with the grid and everything because I had never done that.I need a little break from the grid thing so that goes on the list for the things to do in the end.Hope you like the styling idea.Thanks for reading!!!"}, {"post_id": 32381, "ts": "2026-07-21T14:58:33Z", "hours": 1.4383, "text": "Well, that looks like an OS! I got the little weather application for the top. Yayyyy. And I also added the icons for the apps and also connected them to their own windows, so now only the app content is missing. I am so happy right now that everything works! The complicated part is not even close (yk the game and the music app), but I am going to change the design from the welcome window (check the drawing for the vision). The apps are in a div container where you can scroll, and I really hope you like it! Maybe check it out in real life when you are interested. Thanks for reading!!!"}, {"post_id": 32272, "ts": "2026-07-21T10:39:47Z", "hours": 1.2842, "text": "So I added the little star map thing (same here,if you do not know what I mean or what the plan for this project are : check the DEVLOG with the drawing) and fixed some little mistakes.I think I am going to start working on the hardest part in the info-top-bar-thing :The little weather widget.The problem is that it is supposed to get you location and to show the weather in the right number thing ( yk F and C ).Let’s see how long this will take! Wish me luck and thanks for reading this DEVLOG!!! Sr again for the vd my situation has not changed :( and I also showed all the other features in this vd"}, {"post_id": 31781, "ts": "2026-07-20T13:27:42Z", "hours": 2.3606, "text": "I added a little timer. It’s a simple one — it only counts minutes, not seconds or hours — but it’s enough if you want to have a short learning session or keep track of a small task. It’s not an app; I wanted to keep it simple. I also added the divs for the other tools in the top bar, and I included a small GIF for the map feature (check my DEVLOG with the brainstorming if you don’t know what I mean). Maybe I’ll start building that today, maybe not. Thanks for reading this DEVLOG ❤❤"}, {"post_id": 31297, "ts": "2026-07-19T16:17:14Z", "hours": 1.5781, "text": "So I started working on the top bar.It now has quotes that change every 10 sec and that move so the text is animated.My plan is it to finish the top bar and all these details and then start working on the apps.I am pretty sure I will change the graphics when I am done with the app but that is really easy to do and I first need the code for these elements."}, {"post_id": 31164, "ts": "2026-07-19T10:35:50Z", "hours": 1.0581, "text": "So I added a Pre-Loader.I know right now it does not match the vibe from the site but I am going to change that at the end.Changing it is pretty easy ,making it was a little bit harder.I am going to work on the music app today but right now I need a little break.When you have ideas how I should style the Pre-Loader: Leave a comment!! Thanks for reading <3"}, {"post_id": 30673, "ts": "2026-07-18T13:24:10Z", "hours": 2.0797, "text": "So I started changing the window for the music app and I also started making all the graphics.That took about 6 hours so these 2 hours of code time are such a tiny bit of my actual work.Hope you like the style and see the vision for the app. Sr for the bad vd my Internet is still veeeeeery slow and it is just sucks :)"}, {"post_id": 30353, "ts": "2026-07-17T20:38:07Z", "hours": 1.4083, "text": "#concept Devlog So as promised here is the brainstorming for the whole site. I also have the brainstorming for the apps but you need a little bit of patience because I am only going to share these when making the actual app.I also started on the music app and it looks really cool.Everything is coming together slowly and even when I am not even at half of the time I am going to spend I am soo happy.Hope you like the brainstorming-and yesss it is BRAINSTORMING you guys so please it is not supposed to look like the Mona Lisa.Thanks for reading all of this !!!"}, {"post_id": 30175, "ts": "2026-07-17T15:19:52Z", "hours": 2.0125, "text": "So I now improved the search bar and the dragging thing because now you cannot drag a window into the top bar. I also changed the icons and added a new app with a matching app window.The window is a mix from the Journal app and the welcome window but I am going to change that soon.I also changed the color of the clock and added a background to the apps.I finally made my CSS a own file so now the HTML is a little bit shorter and more organized.I am going to work on the window from the CD’s app later today and I am also going to share my brainstorming for the site.Thanks for reading!!!"}, {"post_id": 30067, "ts": "2026-07-17T10:59:39Z", "hours": 1.5111, "text": "So I now changed the CSS for the icons and started adding a search bar connected to ecosia. Ecosia is like google but it plants trees every time you use it.Because I do not know if I can change the index also in my GITHUB (yk I am still waiting for the mission thing) you can only see the changes on a screen. It works right now but I still need some changes to make it look better.I made the whole brainstorming for the site yesterday so I think I am going to share that today too.Thanks for reading this DEVLOG."}, {"post_id": 29710, "ts": "2026-07-16T20:00:25Z", "hours": 0.2914, "text": "Hey so I do not know if it only works on my laptop but you should be able to drag the window when you click and hold the yellow heart.Could someone please try it???"}, {"post_id": 28895, "ts": "2026-07-15T14:25:36Z", "hours": 2.6283, "text": "#concept devlog Hey. So I just finished my README and my site. The time you see here only reflects the hours I spent coding. The README took way longer than the code, but to me, the README is just as important as the code itself. I’m going to ship everything in the next few minutes. Hope you like my work! If you want to know how I did everything, check out my README — it’ll make all the effort worth it. Thanks for reading this DEVLOG, and keep in mind: this is just Mission One. This project will get better and bigger in Mission Two. If you want to know my plans or first ideas for Mission Two, read my README. This DEVLOG was corrected and improved with AI"}, {"post_id": 28322, "ts": "2026-07-14T14:34:58Z", "hours": 3.2475, "text": "Hey, so I now upgraded graphics and stuff from the Journal app. I still need to change some details like the heading of a note you wrote (currently it is blue and really tech-like) or the text in the starting window. I also changed the font from the app name under the app icon. I also upgraded my JS, so now you can write a note and refresh the site, and it will still be there. You can also edit or delete that existing note with only one click. When you refresh the page and there is already a note, you will not see the introduction to the app again. I am going to do the graphics for the README now (the graphics for the Journal app were about 3-4 hours, so I really locked in today), and I will also add some more links to it. I am also going to try to change some details today. But the final steps and the final written README are coming tomorrow. So if everything works: Tomorrow is shipping day!!! Thanks for reading all of that and having interests in my OS. And again: Really sorry for the bad video…"}, {"post_id": 27740, "ts": "2026-07-13T15:49:59Z", "hours": 4.4794, "text": "So today I could finally finish my journal app (in the tutorial it is a notes app). Unfortunately, I did not understand the tutorial so well with the app, so I decided to find a tutorial myself and use that. It took me longer than expected, but here I am now. I already started working on the graphics (Yesss, they are all made by ME). That took me about 3 hours. These hours unfortunately do not count, but I want to give my best and really make that project cute.The plot twist is that the apps do not look like the apps that everybody knows. They are supposed to look like the real thing, and I want to combine that with the whole Peter Pan/Tinkerbell theme. So yeah, I am going to do the README now, and tomorrow I am going to read the last guide even. I do not know if I am going to use that guide or what even is in that guide. I am also going to change the graphics in the notes app. I really hope that that journal app of mine has the same functions as the app from the guide and that it is okay that I did my own one. Does somebody know that?? Thanks for reading this entire thing. Sorry for the start and the quality of the video.My Internet Connection is at the moment really bad"}, {"post_id": 27251, "ts": "2026-07-12T17:16:06Z", "hours": 0.3075, "text": "Thanks to the help from @nokira , it now finally works. Unfortunately, I cannot code any further today, but we are hopefully going to finish the app tomorrow."}, {"post_id": 27108, "ts": "2026-07-12T11:33:27Z", "hours": 1.4481, "text": "So, here is finally a DEVLOG that logs over an hour of work. I did my best today, but unfortunately I’m typing only with my left hand as a right‑handed person because of a small accident. Yaayyyy (the universe is really not on my side).I can now finally drag the two windows separately (that didn’t work yesterday), and I can close them. I’m not sure if it’s supposed to do nothing when I click the “Open” button.For better understanding: Yellow is for dragging, red for closing, and green for opening.I think I have another bug, because when I click on the app icon, nothing happens. If you have any idea what might be wrong, please help me in the comments or on Slack.I also wanted to work on the README today, but I’m not sure how long I can keep typing with my left hand. We’ll see. I’m trying my best here — thanks for reading all of this."}, {"post_id": 26780, "ts": "2026-07-11T19:33:38Z", "hours": 1.1739, "text": "So, I added the three little symbols at the top, and I started working on my app. Right now it looks the same as the welcome screen, but I’m going to change that tomorrow.My plan for tomorrow is to finish my first app and maybe even start working on the final README (you know — the banner and everything)."}, {"post_id": 26478, "ts": "2026-07-11T09:19:42Z", "hours": 0.6758, "text": "So, I did the JS and the HTML for the close and open feature. I also changed the graphic of the handle. I’m really sorry that I only log such short sessions, but I currently don’t have much time for coding and can only squeeze in short amounts of time."}, {"post_id": 25937, "ts": "2026-07-10T13:14:16Z", "hours": 0.5867, "text": "Guys, I finally got it! A big thank you to @nokira . I needed a bit more time to fix everything, but yeah — there were some more mistakes that I finally started to correct. I still need to fix a few things, like the graphics and the z-index, but I’m sooo happy that it finally works!!!!"}, {"post_id": 25259, "ts": "2026-07-09T12:40:32Z", "hours": 0.6822, "text": "So I started the third tutorial.I am at the part where you should be able to drag your window.The code is from the tutorial ,so it should work but I think that I have done something wrong because as you can see nothing happens.I am on the go right now and maybe I can squeze some time for programming in later.I have my code updated in my github thing ( it is linked in the project I think) .Could someone help me please.I am really new with JS and I do not have enough time right now to start from the starting point.Because I am in a rush I do not have time to correct this text .I am really sorry for my grammar and all this stuff."}, {"post_id": 24804, "ts": "2026-07-08T16:38:54Z", "hours": 0.2833, "text": "Okay, so I just coded a bit more and made a temporary README. I’m going to create a new picture for my project and improve my profile a little, but that’s it for today.✨ BYE ✨"}, {"post_id": 24789, "ts": "2026-07-08T16:13:44Z", "hours": 1.1456, "text": "So, what have I changed? First, I changed the heading because the “S” looked like an “f,” which would completely change the purpose of the website — I just noticed that, hahaha! Imagine if I had shipped it like that in the final version. Anyway, I also added that cute cursor (it’s a tiny Tinkerbell). I loved this idea the most because it lets me make my website both modern and whimsical.If you don’t know who Tinkerbell is: she’s a cartoon character from a kids’ series who lives with other fairies and struggles to find her powers. I thought it would be fun to combine her with Peter Pan — also a children’s story about a dream world where Peter Pan secretly visits kids at night and they all fly through the sky to a magical place . I didn’t watch the Peter Pan series as a child, but I read the books, so I chose Tinkerbell because I could picture her better in my head. Maybe we just pretend they got married.Why am I talking so much about these characters? Because my whole OS is meant to match that vibe — so you can understand why there’s a random fairy on a modern site. I’ll make it easier to get what this OS is about as I go further with the project (you know, adding features like a calculator, etc.).I also added my favorite feature again: a new highlight color! That ugly blue is finally gone from this beautiful site. I linked my profile at the top too, so you can click on my name now. I mean, if you’re going to include info on a site, you might as well do it right and add a bit more about yourself than just your name.So yeah, that’s my desktop for now. I’m going to work on the README today too. I wanted to get further today, but I think it’s okay — you know how much time I spent on this.Thank you for reading all of that and for your interest in my project!"}, {"post_id": 24685, "ts": "2026-07-08T13:10:59Z", "hours": 1.6353, "text": "Hi! So I already had the code in my last update here, but I finally changed the graphics and the design. I’m not finished with the desktop yet (don’t worry, I know how it looks!), but I just wanted to give you a quick update."}, {"post_id": 24622, "ts": "2026-07-08T10:33:51Z", "hours": 0.4072, "text": "Okay, soo. I just read the second tutorial and literally made it the same as in the tutorial. I knew I wasn’t supposed to do that. Yes, I’m changing it in a second. I’m just brainstorming a bit and sorting out my ideas for the design because my last project had that Y2K vibe (iykyk), but now I want something cleaner — not like those old, ugly operating systems back in the day. Still, it should keep some of those nostalgic vibes, you know? I can’t really explain it better.So yeah, I think I’ll need about an hour or two — let’s see if the universe is on my side and I find the graphics I want quickly! And guys, I’m suffering — I miss my Windows 11 from home, but I think I just need a little more time to get used to Windows 10 on this laptop. I don’t really have a choice since it’s just me and my laptop for the next month.Also, I registered for this chat thing (I forgot the name) and got nothing. Like, how many chats exist on this planet? But I think I’ll get through it tonight. :)"}, {"post_id": 24293, "ts": "2026-07-07T19:22:28Z", "hours": 0.2756, "text": "Guys, this has been so hard. And I don’t mean the project — I mean the file. I know that no one is going to read this, but I want to share my struggle so that my hard work has a reason.I just finished my first project, which I did with the VS app. But now I needed to open a new project — after half an hour, I somehow managed it (still don’t know how). Could somebody explain that to me?Then the Hackatime tool stopped working, and Stardance couldn’t find my file. So I decided to switch to my laptop because I hadn’t installed the app there yet, and I already knew what to do from my first project. I needed everything on my laptop anyway because of the holidays, etc.My laptop only runs Windows 10, so everything took ten times longer. After that, I had to delete some apps because of storage issues. As you can see, it just kept getting more complicated.I finally did it — after six hours, without appreciation (you know, from Stardust…) and actually crying twice because I already had code, but it was gone.I don’t want to annoy you with my problems. That’s my site for now. Please don’t judge — I’m following the tutorial, and I’m going to add beauty to it at the end when the code is finished. I already have so many ideas.I’m giving my best and forcing myself to keep going. In my country, there’s a saying: „Wo ein Wille ist, ist auch ein Weg“, which basically means if you truly want something, there’s a way to get it.I’m so exhausted because I find all this installing, updating, and setup stuff just so boring.A devlog with my to-dos is coming tomorrow or on Friday because I’m getting my school report card tomorrow — wish me luck!And here’s a screenshot of my really ugly site at the moment. If you read this whole thing: thanks for listening to all my yapping .💗💗💗💗"}]...
|
Title: Neverland OS by @253_Mathilde_IYKYK | Stard Title: Neverland OS by @253_Mathilde_IYKYK | Stardance
Devlogs:
Guys, this has been so hard. And I don’t mean the project — I mean the file. I know that no one is going to read this, but I want to share my struggle so that my hard work has a reason.I just finished my first project, which I did with the VS app. But now I needed to open a new project — after half an hour, I somehow managed it (still don’t know how). Could somebody explain that to me?Then the Hackatime tool stopped working, and Stardance couldn’t find my file. So I decided to switch to my laptop because I hadn’t installed the app there yet, and I already knew what to do from my first project. I needed everything on my laptop anyway because of the holidays, etc.My laptop only runs Windows 10, so everything took ten times longer. After that, I had to delete some apps because of storage issues. As you can see, it just kept getting more complicated.I finally did it — after six hours, without appreciation (you know, from Stardust…) and actually crying twice because I already had code, but it was gone.I don’t want to annoy you with my problems. That’s my site for now. Please don’t judge — I’m following the tutorial, and I’m going to add beauty to it at the end when the code is finished. I already have so many ideas.I’m giving my best and forcing myself to keep going. In my country, there’s a saying: „Wo ein Wille ist, ist auch ein Weg“, which basically means if you truly want something, there’s a way to get it.I’m so exhausted because I find all this installing, updating, and setup stuff just so boring.A devlog with my to-dos is coming tomorrow or on Friday because I’m getting my school report card tomorrow — wish me luck!And here’s a screenshot of my really ugly site at the moment. If you read this whole thing: thanks for listening to all my yapping .💗💗💗💗
Okay, soo. I just read the second tutorial and literally made it the same as in the tutorial. I knew I wasn’t supposed to do that. Yes, I’m changing it in a second. I’m just brainstorming a bit and sorting out my ideas for the design because my last project had that Y2K vibe (iykyk), but now I want something cleaner — not like those old, ugly operating systems back in the day. Still, it should keep some of those nostalgic vibes, you know? I can’t really explain it better.So yeah, I think I’ll need about an hour or two — let’s see if the universe is on my side and I find the graphics I want quickly! And guys, I’m suffering — I miss my Windows 11 from home, but I think I just need a little more time to get used to Windows 10 on this laptop. I don’t really have a choice since it’s just me and my laptop for the next month.Also, I registered for this chat thing (I forgot the name) and got nothing. Like, how many chats exist on this planet? But I think I’ll get through it tonight. :)
Hi! So I already had the code in my last update here, but I finally changed the graphics and the design. I’m not finished with the desktop yet (don’t worry, I know how it looks!), but I just wanted to give you a quick update.
So, what have I changed? First, I changed the heading because the “S” looked like an “f,” which would completely change the purpose of the website — I just noticed that, hahaha! Imagine if I had shipped it like that in the final version. Anyway, I also added that cute cursor (it’s a tiny Tinkerbell). I loved this idea the most because it lets me make my website both modern and whimsical.If you don’t know who Tinkerbell is: she’s a cartoon character from a kids’ series who lives with other fairies and struggles to find her powers. I thought it would be fun to combine her with Peter Pan — also a children’s story about a dream world where Peter Pan secretly visits kids at night and they all fly through the sky to a magical place . I didn’t watch the Peter Pan series as a child, but I read the books, so I chose Tinkerbell because I could picture her better in my head. Maybe we just pretend they got married.Why am I talking so much about these characters? Because my whole OS is meant to match that vibe — so you can understand why there’s a random fairy on a modern site. I’ll make it easier to get what this OS is about as I go further with the project (you know, adding features like a calculator, etc.).I also added my favorite feature again: a new highlight color! That ugly blue is finally gone from this beautiful site. I linked my profile at the top too, so you can click on my name now. I mean, if you’re going to include info on a site, you might as well do it right and add a bit more about yourself than just your name.So yeah, that’s my desktop for now. I’m going to work on the README today too. I wanted to get further today, but I think it’s okay — you know how much time I spent on this.Thank you for reading all of that and for your interest in my project!
Okay, so I just coded a bit more and made a temporary README. I’m going to create a new picture for my project and improve my profile a little, but that’s it for today.✨ BYE ✨
So I started the third tutorial.I am at the part where you should be able to drag your window.The code is from the tutorial ,so it should work but I think that I have done something wrong because as you can see nothing happens.I am on the go right now and maybe I can squeze some time for programming in later.I have my code updated in my github thing ( it is linked in the project I think) .Could someone help me please.I am really new with JS and I do not have enough time right now to start from the starting point.Because I am in a rush I do not have time to correct this text .I am really sorry for my grammar and all this stuff.
Guys, I finally got it! A big thank you to @nokira . I needed a bit more time to fix everything, but yeah — there were some more mistakes that I finally started to correct. I still need to fix a few things, like the graphics and the z-index, but I’m sooo happy that it finally works!!!!
So, I did the JS and the HTML for the close and open feature. I also changed the graphic of the handle. I’m really sorry that I only log such short sessions, but I currently don’t have much time for coding and can only squeeze in short amounts of time.
So, I added the three little symbols at the top, and I started working on my app. Right now it looks the same as the welcome screen, but I’m going to change that tomorrow.My plan for tomorrow is to finish my first app and maybe even start working on the final README (you know — the banner and everything).
So, here is finally a DEVLOG that logs over an hour of work. I did my best today, but unfortunately I’m typing only with my left hand as a right‑handed person because of a small accident. Yaayyyy (the universe is really not on my side).I can now finally drag the two windows separately (that didn’t work yesterday), and I can close them. I’m not sure if it’s supposed to do nothing when I click the “Open” button.For better understanding: Yellow is for dragging, red for closing, and green for opening.I think I have another bug, because when I click on the app icon, nothing happens. If you have any idea what might be wrong, please help me in the comments or on Slack.I also wanted to work on the README today, but I’m not sure how long I can keep typing with my left hand. We’ll see. I’m trying my best here — thanks for reading all of this.
Thanks to the help from @nokira , it now finally works. Unfortunately, I cannot code any further today, but we are hopefully going to finish the app tomorrow.
So today I could finally finish my journal app (in the tutorial it is a notes app). Unfortunately, I did not understand the tutorial so well with the app, so I decided to find a tutorial myself and use that. It took me longer than expected, but here I am now. I already started working on the graphics (Yesss, they are all made by ME). That took me about 3 hours. These hours unfortunately do not count, but I want to give my best and really make that project cute.The plot twist is that the apps do not look like the apps that everybody knows. They are supposed to look like the real thing, and I want to combine that with the whole Peter Pan/Tinkerbell theme. So yeah, I am going to do the README now, and tomorrow I am going to read the last guide even. I do not know if I am going to use that guide or what even is in that guide. I am also going to change the graphics in the notes app. I really hope that that journal app of mine has the same functions as the app from the guide and that it is okay that I did my own one. Does somebody know that?? Thanks for reading this entire thing. Sorry for the start and the quality of the video.My Internet Connection is at the moment really bad
Hey, so I now upgraded graphics and stuff from the Journal app. I still need to change some details like the heading of a note you wrote (currently it is blue and really tech-like) or the text in the starting window. I also changed the font from the app name under the app icon. I also upgraded my JS, so now you can write a note and refresh the site, and it will still be there. You can also edit or delete that existing note with only one click. When you refresh the page and there is already a note, you will not see the introduction to the app again. I am going to do the graphics for the README now (the graphics for the Journal app were about 3-4 hours, so I really locked in today), and I will also add some more links to it. I am also going to try to change some details today. But the final steps and the final written README are coming tomorrow. So if everything works: Tomorrow is shipping day!!! Thanks for reading all of that and having interests in my OS. And again: Really sorry for the bad video…
#concept devlog Hey. So I just finished my README and my site. The time you see here only reflects the hours I spent coding. The README took way longer than the code, but to me, the README is just as important as the code itself. I’m going to ship everything in the next few minutes. Hope you like my work! If you want to know how I did everything, check out my README — it’ll make all the effort worth it. Thanks for reading this DEVLOG, and keep in mind: this is just Mission One. This project will get better and bigger in Mission Two. If you want to know my plans or first ideas for Mission Two, read my README. This DEVLOG was corrected and improved with AI
Hey so I do not know if it only works on my laptop but you should be able to drag the window when you click and hold the yellow heart.Could someone please try it???
So I now changed the CSS for the icons and started adding a search bar connected to ecosia. Ecosia is like google but it plants trees every time you use it.Because I do not know if I can change the index also in my GITHUB (yk I am still waiting for the mission thing) you can only see the changes on a screen. It works right now but I still need some changes to make it look better.I made the whole brainstorming for the site yesterday so I think I am going to share that today too.Thanks for reading this DEVLOG.
So I now improved the search bar and the dragging thing because now you cannot drag a window into the top bar. I also changed the icons and added a new app with a matching app window.The window is a mix from the Journal app and the welcome window but I am going to change that soon.I also changed the color of the clock and added a background to the apps.I finally made my CSS a own file so now the HTML is a little bit shorter and more organized.I am going to work on the window from the CD’s app later today and I am also going to share my brainstorming for the site.Thanks for reading!!!
#concept Devlog So as promised here is the brainstorming for the whole site. I also have the brainstorming for the apps but you need a little bit of patience because I am only going to share these when making the actual app.I also started on the music app and it looks really cool.Everything is coming together slowly and even when I am not even at half of the time I am going to spend I am soo happy.Hope you like the brainstorming-and yesss it is BRAINSTORMING you guys so please it is not supposed to look like the Mona Lisa.Thanks for reading all of this !!!
So I started changing the window for the music app and I also started making all the graphics.That took about 6 hours so these 2 hours of code time are such a tiny bit of my actual work.Hope you like the style and see the vision for the app. Sr for the bad vd my Internet is still veeeeeery slow and it is just sucks :)
So I added a Pre-Loader.I know right now it does not match the vibe from the site but I am going to change that at the end.Changing it is pretty easy ,making it was a little bit harder.I am going to work on the music app today but right now I need a little break.When you have ideas how I should style the Pre-Loader: Leave a comment!! Thanks for reading <3
So I started working on the top bar.It now has quotes that change every 10 sec and that move so the text is animated.My plan is it to finish the top bar and all these details and then start working on the apps.I am pretty sure I will change the graphics when I am done with the app but that is really easy to do and I first need the code for these elements.
I added a little timer. It’s a simple one — it only counts minutes, not seconds or hours — but it’s enough if you want to have a short learning session or keep track of a small task. It’s not an app; I wanted to keep it simple. I also added the divs for the other tools in the top bar, and I included a small GIF for the map feature (check my DEVLOG with the brainstorming if you don’t know what I mean). Maybe I’ll start building that today, maybe not. Thanks for reading this DEVLOG ❤❤
So I added the little star map thing (same here,if you do not know what I mean or what the plan for this project are : check the DEVLOG with the drawing) and fixed some little mistakes.I think I am going to start working on the hardest part in the info-top-bar-thing :The little weather widget.The problem is that it is supposed to get you location and to show the weather in the right number thing ( yk F and C ).Let’s see how long this will take! Wish me luck and thanks for reading this DEVLOG!!! Sr again for the vd my situation has not changed :( and I also showed all the other features in this vd
Well, that looks like an OS! I got the little weather application for the top. Yayyyy. And I also added the icons for the apps and also connected them to their own windows, so now only the app content is missing. I am so happy right now that everything works! The complicated part is not even close (yk the game and the music app), but I am going to change the design from the welcome window (check the drawing for the vision). The apps are in a div container where you can scroll, and I really hope you like it! Maybe check it out in real life when you are interested. Thanks for reading!!!
So I changed the welcome window.It is not perfect and not finished do not worry but it is enough for the moment.It was quite hard-yk with the grid and everything because I had never done that.I need a little break from the grid thing so that goes on the list for the things to do in the end.Hope you like the styling idea.Thanks for reading!!!
So I pulled myself together and changed the welcome window.I will work on the camera app now but what do we think about the desing from the welcome window ? Should I leave it as it is or should I change it ? Yk it is the first impression you get when you go on my site.Thanks for reading and your interests in this project.
So I added the base for the galerie.I just need to add a slideshow thing which is going to be a little hard because I already have 2 and I need to add the 2 buttons to switch between the images.I am giving my best to squeze in coding time but the graphics themselves take a lot of time.Thanks for reading!!!
#concept Devlog All I can say:The galerie app is finished ! You can check it out or wait until I post a DEVLOG which shows more details.It was squite some work and now it is time for the next point on my todo-list:the TV.I am so happy and grateful for all these people watching my DEVLOGS and for all these kind souls who are staying with this project since minute one.Thank you you all and I really hope you like it!!Thanks for reading <3
So here is the camera app! As you may can see there are two little buttons that look like real camera buttons. I added little arrows but I think they still look real.Right now we have like 22 photos on our digi cam.And well if you scroll through these screens you may see the TV app because I also finished that.I think it also looks pretty cool ,tell me what you think about it in the comments!! It only has one vd right now(yk matching to the theme if you are interested check out the real site).I may add more in the future but not until this project is finished.So these 2 apps are now ready and the next thing on my list is the music app.Happy to hear or see some feedback (If you all really hate it I am going to change it tho but I really gave my best).Thanks for reading <3 🔗 253-mathilde.github.io/My-first-OS/
Okay so I just started with the game.Actually just started is a huge lie because I am struggeling since 10:00 and we now have 17:00.I used a tutorial and tried to just start basic with making a little jumping game but the objects …They do not exist because the whole generating thing does not work .I first need to get everything working before upgrading the graphics and stuff.I really would like some help! CSS: #background { position: absolute; background-image: url('https://files.catbox.moe/xqsbzm.png'); height: 200px; width: 100%; animation: slideright 600s infinite linear; bottom: 0;}.wendy { background-image: url('https://files.catbox.moe/u52u37.png'); height: 60px; width: 60px; position: absolute; bottom: 0;}.obstacle { background-image: url('https://files.catbox.moe/n5f03w.png'); width: 60px; height: 60px; position: absolute; bottom: 0;}@keyframes slideright { from { background-position: 0 0; } to { background-position: -10000px 0; }} HTML: <div id="gameWindow"> <div class="base5"> <div class="symbolegame"> <p id="galerieWindowheader"> <img src="https://i.imgur.com/Y4OL1On.gif"></p> <p style="cursor: pointer" id="gameclose"><img src="https://i.imgur.com/q5TmYNg.gif"></p> <p style="cursor: pointer" id="gameopen"><img src="https://i.imgur.com/3nBda2J.gif"></p> </div> <div id="background"> <h6 id="alert"></h6> <div class="wendy"></div> <div class="grid"></div> </div> </div> </div> </div> JS: document.addEventListener('DOMContentLoaded', () => { const wendy = document.querySelector('.wendy') const grid = document.querySelector('.grid') const alert = document.getElementById('alert') let gravity = 0.9 let isJumping = false let isGameOver = false function control(e) { if (e.code === "Space") { if (!isJumping) { jump() } } } document.addEventListener('keydown', control) let position = 0 function jump() { isJumping = true let count = 0 let timerId = setInterval(function () { //move down if (count === 15) { clearInterval(timerId) let downTimerId = setInterval(function () { if (count === 0) { clearInterval(downTimerId) isJumping = false } position -= 5 count-- position = position * gravity wendy.style.bottom = position + 'px' }, 20) } //move up position += 20 count++ position = position * gravity wendy.style.bottom = position + 'px' }, 20) } function generateObstacles() { if (!isGameOver) { let randomTime = Math.random() * 4000 let obstaclePosition = 1000 const obstacle = document.createElement('div') obstacle.classList.add('obstacle') grid.appendChild(obstacle) obstacle.style.left = obstaclePosition + 'px' let timerId = setInterval(function () { if (obstaclePosition > 0 && obstaclePosition < 60 && position < 60) { clearInterval(timerId) alert.innerHTML = 'Game Over' isGameOver = true //remove all children while (grid.firstChild) { grid.removeChild(grid.lastChild) } } obstaclePosition -= 10 obstacle.style.left = obstaclePosition + 'px' }, 20) setTimeout(generateObstacles, randomTime) } } generateObstacles()}) Thanks for reading<3
Okay so I hope that I do not dissapoint s.o now.I deleted the whole thing that I had so basically a whole day of work because there is always way more time behind everything that you think.I did that because I could not find the mistake and I did not really get the code.I never really did JS before this project and I am learning JS while doing this project.And I mean really learning because I kinda eat the whole W3 school site but yeah.I want to give my best in this project and if I cannot find the mistake in my own coding:I would need AI.And do not get me wrong but help from AI okayyyy but a whole app made with AI.No.No.And no.That is MY opinion so yeah if you do not think so or use AI a lot then do so (it is okay but not for me).I give my best to be transparent and always say when I used AI.The plan is now to build like a flappy bird game but without the top part and to make it look cool.I hope you can understand me and stay with me on this project because we are now getting to the hardest part.This will take some time but I will not quit.Thank you for reading(I do not think that s.o will read all of this but yeah).
Okay so here we are: We have a WORKING mini game that looks like trash! And I am sooo happy.As you can see there is an object that you can control with the arrow up key (hope that is the right english word for that).And we also have like blocks that are generated and have a random height.Yayyy.So we only need to do the styling and add some JS that ends the game when you have a score from xxx (I already have a score in my JS so that should not be so complicated).I am so happy right now and I think it was the right decision to start over.Thanks for reading and sr for all these bad vd’s,they will get better soon.<3
Okay so I started doing some CSS and made some graphics.Right now the background is too full (yk the focus point from the game should not be the background) but like the keyframes work and I added that frame.I will chnage the elements from the game but I will not change like the frame because I think that the frame looks pretty cool.We still need to do the JS and to change some stuff but I think that I will get that done in about 6-8 hours.Unfortunatly I do not have 6-8 hours the next days.I will give my best to squeze in some time but yeah: Sr for the bad vd but like I do not even use that other tracking tool because my laptop is just soooo slow with it and like recording and all the animations and windows that are open-it almost collapsed so srrrr Thanks for reading and if you have styling ideas for the game:leave a comment or write me on Slack <3
So I did some JS and spent way too much time on the graphics.It now shows a message and hides everything when you reach a score from 100.I still need to do something for the like game over part.Hope you like the design because that will stay the same I think.Thanks for reading <3
I added something like a pre-loader-thing that shows the info for the game everytime you open the game window for 30 sec.I now that it is kinda annoying that I only log such short times but I just squeze in every tiny bit of time I have and the graphics also take pretty long.Thanks for reading <3
Okay so the game is kinda finished! I now have a game over screen and a finished screen and a like maual or pre-loader.Everything is explained and I myself think that it is like the right level of easy but still a little bit tricky.You would help me a lot with trying it out and giving me a short feedback. ( https://253-mathilde.github.io/My-first-OS/ )Thanks for reading and here are the picture of the game app:
#concept Devlog AND SR FOR LIKE THE LOOKS AND THE GRAMMAR OKAY WE HAVE 37 DEGREES AND THIS IS JUST A VISION IT IS NOT SUPPOSED TO LOOK PERFECT!! Okay so I now started working on the music app and yeah it looks sooo funny right now(yk to see the switch from all the clean and perfect things to THAT)but I mean everything works for now so we just need the styling and the menu.That is such an easy thing to say because actually:The graphics take me sooo long.There are about 20 hours that you do not see and thanks to the universe catbox is not working right now and that means I have to use postimages and it works but like the pictures load sooo long.Hope it works soon and if you have like song wishes for the app:leave a comment!Thanks for reading and here is my vision:
Okay so we now have a working thing ( the play and stop button needs some work because right now it only works if you do not use the back and forward buttons) and as you can see I changed the graphics and what you cannot see is that it rotates like a real CD! I started planning the menu cause it will have the shape of a half circle so I do not have quite an idea how I will do that but we will see.Thanks for reading and right now I only have the example music from the code I used so if you have music wishes:leave a comment.Thanks for reading <3
#Concept Devlog ( infos about the planning and the vision I will mark them now so you can choose yourself if your interests are only in the progress or also in everything behind the finished page )Okay so today was a planning day. Again.But you need to trust me because if you don’t have a plan than you won’t have a good project because I have multiple apps and I want everyone to be perfect. So over the time more and more little mistakes or things that just feel false appear.And I mean I already used so much effort so why should I throw that away and make it unperfect? A lot of new problems also appeared because I now saw the site on a bigger screen (yk laptop VS PC) and it just looked terrible! And the music app is not finished and because that DEVLOG is already really long: there will be 3 more apps.Yayyy.They won’t be too complicated because they will base on already existing sites so it should be done in about 10 hours but before that everything needs to be done and as you can see that is a long list and every task will take about an hour at least.We have round about 28 tasks btw.It will be a long journey and I think that we are not even close to half of that so if you really read all of that: A really big thank you because you have true interests! Thanks for reading<3
Okay so here is what we have now: I added the final things for the apps, and I also changed the layout so that the backgrounds only repeat horizontally and not vertically. I also worked on the screens for the app and, of course, on the music app. I need to pull myself together so I do not start with any other app before I finish the music app. I also worked on the graphics as always, and we now finally have better vd, and everything is just better. Yayyyy.Thanks for reading <3
I NEED YOUR HELP!!!! Okay so I started working on the menu. It works already but needs some better styling. So you can see the vision: The red circles are going to be little CDs like the one already existing. But I need your help because I do not know how to make the control buttons (the styling), so here are like 3 versions of it. Hope you can see the vision and may help me choose (and of course the buttons will be buttons, not words, but yk it is just so you can see what my vision is). Thanks for reading <3
I worked on the preloader for the last 7 hours, but because of the browser update in 2025, an alert does not count for autoplay with the audio, and I still need a solution for that. Here is the MP4 of the preloader with the audio. I hope I will get that with the audio tomorrow. At least the video is working with the alert. Hope you like the graphics (they took soooo long, and yes, everything is self-made, so no Google copy and paste). Thanks for reading <3
Here we finally are: It works. With sound. And autoplay. And the alert. And I am soooooo happy. It took me the whole day, and I needed to do stuff that I had never even heard of, but thanks to the internet and my ability to read, I finally got it. So you can understand that better: I started at 8 am in the morning and finished at 4 pm in the afternoon. As you may understand, my patience for the music app was not enough, so I built 2 new apps instead. That sounds a little bit crazy, but because these are based on a webpage, it only took about 3 hours each. I still added a little window that explains everything, and I hope you like the result. I got so much kind feedback for the pre-loader and in general; I am getting so many nice comments. Thank you for that, and I hope you like the result and see where we are going! Thanks for reading. <3 The vd is pretty bad because I had to compromise it, so maybe check it out in real life or wait for a DEVLOG with a better VD.
Okay, so like, I started on an app, and I can’t try it at the moment because GitHub is testing my patience, but yeah, the app is the manual app, and it looks like a book, and you can actually flip pages. It is just annoying that I can’t work correctly because of GitHub, but I don’t have another chance; I just need to try again and again and again: And because I do not know if my code even works, I can’t even continue with another app like the music app. Thanks for reading <3
Okay, so GitHub is still broken, so text will have to do it. I added the Wikipedia and manual apps. And I also wrote the whole manual. That was quite some work, and I also fixed parts of the JS that were not really stable. I am so happy that it works now because I almost deleted everything today. In the end the problem, why everything did not work, was a missing close div thing. I spent the whole afternoon till now searching for that. It is midnight. I started in the afternoon. I feel really dead right now. Tomorrow I really need to do the music app. Thanks for reading <3
Okay, I worked on the manual app more, and you now can slowly see where we are going. That took me super long because I also did all the graphics and the effect where the image turns and gets bigger the second your cursor touches the image. Hope you like the graphics and the little tinkerbell on the cover. I know it is not perfect because the book is already open when you open the app, but I think it looks okay, and I can’t change it because of the symbols (they would look pretty bad on the next pages then). I also need to change the back site, text and next buttons. Btw, I now have over 300 commits on GitHub and 69 hours on Hackatime, and the project has been active for 32 days (started on 7/7/26). Literally, over a month and one devlog got over 2000 views 🥹. Thanks for reading and always helping me out <3
I think the manual is now finished. I know the CD site is not finished, but neither is the app. When I am finished with that, I’ll update the manual. I also added that star effect that shows when you click on the star thing on the last page. I also made some Easter eggs, like hidden sounds (for example, the first audio that was taken on Mars plays if you click on the green heart in the map window, which is also hidden), and I made the tab name of the OS a little game (I don’t know how to call it; it basically just moves and looks pretty). Hope you like the app; I’m always happy to hear some feedback, and now I finally start working on the music app. Thanks for reading <3.
Ahhh, I’m freaking out. The music app is finished!! Finally. It took me so long. Yes, I still need to add more songs (we only have the 3 from the base I used), but the whole layout is finished. Everything that comes now is only details and grammar and such stuff, but that was actually the last line of code for this project (yk, I now only need to repeat or fix things, not write something from scratch). In the app we have a slideshow at the beginning, a moving CD (spins), a menu that comes up front if your mouse touches it, a back button for the previous song, a next button for the next song, and a play and pause button that changes (yk, if the music plays it is ‘stop’ and if not it is ‘play’), changing song names and, of course, changing artists names. That app was the most challenging of all. Hope you like the design and everything! It would really help if you tried the site https://253-mathilde.github.io/My-first-OS/ and looked if everything works, but please respect that I am working on the grammar. Now we are finally getting to the last part!!! Thanks for reading <3.
That is just the first page.I’m waiting for two hours.I can’t even cancel them.Why always meeeeeee.I just made a folder to make it organized localy and when I uploaded it from the app ( yk the push and pull ) this happend.Yeah that takes sooooo long and btw I added more songs and made some things a little bit cleaner.As you may can see I can’t show you anything right now.Thanks’s for reading <3
Concept Devlog Okay so I know it looks like I haven’t worked on this project for the last two days but Actually, I have worked non-stop for the last two days. I got some feedback for my site, and I am still open for some feedback. I really struggled with GitHub and ended up renaming every file in my project, and yes, I needed to do that individually and wait every time for about 10 minutes. Now more and more images are getting changed from Catbox to GitHub because someone said that I should reduce the loading time. I myself don’t like using GitHub for images and stuff because it is sooo much work with the folders and stuff, but you wanted it so, so I changed it. I also changed the manual because I also got some feedback for that. I also will upload the Pixabay songs to GitHub but not the ones from the tutorial I used because I don’t know where this music is from… That should reduce the loading time from the music app. I also found a lot of details that are not perfect so I also will change these but these are mostly little things in the user interface. I really gave my best the last days even though I can’t use Lapse for time tracking because it does not work with my laptop. Oh, and I almost forgot: the OS is made for smaller screens with a browser window width from 1400 px (I don’t mean the width of your screen), so I would Be really happy to know how bad it looks on other screens. I am really sorry for that but can’t change that because my CSS is 1600 lines of code and I often used position: absolute;. I am a beginner and will work with the percentage the next time! I promise. Thanks for reading and your patience with me. Check out the site at the moment, but please respect that the manual is not quite finished and the text can look a little bit misplaced sometimes. https://253-mathilde.github.io/My-first-OS/ Thanks for reading <3
Check it out https://253-mathilde.github.io/My-first-OS/ Okay so today I added the last song to the music app.I also changed the font in the welcome window and wrote more text/changed some stuff. I also added better img to the galerie so now everything looks clean and everything is so close to being finished. I know I say that every day but you get a different point of view when you have over a month of work in your head VS just 3 or 4 more days. I am soooo happy with the font in the welcome window because the other one was more tech and this is more fairy-like. If you have a different opinion or absolutly hate it : say something! As you can see in the last DEVLOG I changed a lot based on feedback so yeah. I also changed the songs that are mine (not the ones from my base code) to github so now the img may load a little bit slow, but the sound should work great.I also made all the img links in the galerie app to github links( I downloaded everything from catbox and uploaded it to github and then change dthe file name and then re-run every job). I love how the music app turned out and looks when other windows are opened. Hope you like it tomorrow is going to be grammar and manual day because these things are just as importent as the coding.And when I work in my schedule, the day after that is README day and correcting graphic days.That would mean we ship in 2 days. I’ll give my best to find enough time for that.Thanks for reading <3
Okay so I never want to see a link in a HTML project again for at least the next 2 weeks because I now added the image sources to the manual, and that was just some crazy work. I myself always keep every source throughout the whole project but that meant that I had 15 pages full of links and I only needed the ones for the images And some were even unnecessary because those images were deleted from the site through the whole project. I know this site is probably the ugliest one in this whole project but also one of the most important ones. I also worked on the grammar. There might be some little mistakes but I wrote it. English is not my mother tongue, and I typed far more than just a prompt into an AI. I also checked the mistake with the YT video but couldn’t find one. It would really help if others also checked if the vd in the TV does not work. Tomorrow is README day. We are really there. I still can’t believe it. And someone wrote me on slack that you can review your own project with any AI, and the AI really liked mine so fingers crossed that the first ship will get approved And my work paid off. Thanks for all your support, and I would really appreciate your help with the TV app. Thanks for reading <3 Here is the link: https://253-mathilde.github.io/My-first-OS/
Last Devlog (hopefully). Okay so before you judge me because I promised that I would ship yesterday: This README is massive and I gave my best to make it short but still well explained and yeah this was just so much work.Hope you like it. The TV should also work now.Finally, so maybe try it! https://253-mathilde.github.io/My-first-OS/ . I think that I’ll ship today. I really hope that everything works so pleaseeeeee I need some feedback. This project is just crazy and so many already like it.Can’t wait to see what you say to my next projetc idea. Thanks for your support and can’t wait to hear all the feedback. SO many hours of work.Hope they pay of.Thanks for reading <3.
Okay so I think I ship now ,just made some small changes (so my code is better to understand by others) and somehow they turned out to be an hour so yeah time to ship.Thanks for all your support and figers crossed that the first ship works!
Ships:
I made a Peter Pan and Tinkerbell-themed OS. At the beginning, the JavaScript was really hard because I had only worked with blocks of code, not actual code (maybe you know code.org — that’s what I mean). The graphics took me quite some time, as did all the brainstorming and planning, because I did my best to create a good structure. I explained the whole idea and the thought behind the theme in my README. On my site, you have two draggable windows (the Welcome window and the Journal app window), and you can write stuff in your little journals and create islands. (I also explained that in my README, but if you don’t want to read it: an island is a note, and I called it that because of the site’s theme.) My site also has a little slideshow in the Journal app that explains how to use everything. My Stardance profile is linked too, so you can check out my other project. The site also includes a timer at the top. I hope you like it, and I’m already collecting ideas for Mission Two. This text was corrected with AI.
Neverland OS is a web-based OS with a Peter Pan/Tinkerbell theme. Unlike other operating systems, Neverland OS doesn’t prioritize either design or performance. It tries to be good at both. It has a Notes app, a Music app, a Gallery app, a Game, a Video app, a NASA app, a Wikipedia app, a Hubble app, and a User Manual app. It also has mini apps like a search bar, a timer, weather, and more. My goal was to create something that looks unique. Because when we program, we often have other operating systems in our head. So we automatically put things where we are used to seeing them. But who said that window controls need to be on the right side of a window? And who said that all apps need to look like the ones we use every day? Don’t get me wrong. Those operating systems work great. But they already exist. So why not try something new? Neverland has a lot of hidden features (aka Easter eggs) and was built to have everything you need. Sometimes you don’t need a lot of apps. Just a music app to keep your focus up, a timer to motivate you, and something to write in. Of course, my OS can do way more than that. But when you are honest with yourself: you don’t really need much more than that. But who said that just because we don’t need that much, we have to work with ugly minimalistic stuff? Exactly. No one! So I gave my best to make it look cute. I hope you like it. And if you don’t, let me know! I often struggled with JS because I basically started from 0 knowledge. The Music app was especially difficult because it is so unique (yk so finding help online was impossible). I deleted stuff, made mistakes, broke things, and redid the graphics many times. There are way more hours in this project than you can see ( because I builded this thing on my old laptop in my holidays and that laptop breaks down everytime you use lapse). I took this project everywhere and spent almost every bit of free time I had on it.I worked on Neverland for 42 days. During that time I made over 500 deployments on GitHub, over 600 commits on GitHub, uploaded things millions of times because of GitHub issues, and wrote around 3,500 lines of code. I also tried my best to be transparent about the whole process. I wrote a Devlog about roughly every 2 hours. All instructions are in the OS or in the README. I gave my best with everything: the code, the graphics, the storytelling , the Easter eggs, and all the little details. I hope you like Neverland OS and have fun trying everything out. Sorry for my grammar or language mistakes. English isn’t my first language....
|
1793087527.64072
|
1793173927.64072
|
|
45447
|
xdna.cpp by @satvikhardat | Stardance
|
|
1
|
87.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T15:45:47Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Run GGUF quantized models directly on AMD XDNA1 NPUs (Ryzen AI 7040 / 8040 series) with llama.cpp its a fork or bettter said plugin of llama.cpp specially made to run models using amd NPUs Using AMD’s hawkpoint NPUs to run LLMs!! its a llama.cpp plugin not a standalone runtime to ensure supporting most models, but it has a few cool kernels targeted at the the xdna1 arch bcs as it turns out, the support for xdna1 NPUs is like really dead everyones like xdna2 yay, but i hv a xdna1 CPU so ima use every bit of it ig lol", "repo": "https://github.com/random-unknown-username/xdna.cpp", "demo": "https://github.com/random-unknown-username/xdna.cpp/releases/tag/v1.0.0"}]...
|
[{"post_id": 58984, "ts": "202 [{"post_id": 58984, "ts": "2026-08-31T15:43:02Z", "hours": 7.7858, "text": "Devlog 08 — Aug 31: The Crossover Spectrum & v1.0 Ship Finished multi-model crossover validation across three scales (0.5B, 3B, 27B): // Adaptive Heterogeneous Scheduling if ( N <= 256 ) { // Tiny matrices (<60 KB) run on CPU SIMD to avoid driver dispatch overhead cpu_engine -> run ( weights , weight_bytes , N , K , act , out ); } else { // Medium/Large matrices stream to 16 AIE2 compute tiles xdna_engine -> run ( weights , weight_bytes , N , K , act , out ); } Measured Crossover Scoreboard Qwen2.5-0.5B (403 MB) : CPU favored (106.5 t/s vs 72.6 t/s XDNA hybrid) due to small 60 KB payloads. Qwen2.5-3B (1.86 GB) : XDNA wins decisively: 16.5 tok/s vs 9.8 tok/s CPU (+68.8% / 1.69× speedup) . Qwen3.8-27B (15.2 GB) : XDNA sustains 1.72 tok/s streaming 12.6 GiB smoothly on a 32 GB laptop. Numerical Quality : Verified 100% Top-1 token match across all 3 scales. Shipped v1.0.0 with standalone binaries and clean architecture docs!"}, {"post_id": 57796, "ts": "2026-08-30T02:55:21Z", "hours": 12.8164, "text": "Devlog 07: Bounded 128MB Staging Ring & The 11.5x Recovery Architected the fix for the 27B memory collapse: a bounded double-buffered staging ring in src/xdna-gemv-engine.cpp . // Allocate exactly two 64 MB host-only staging buffers (128 MB total pinned memory) static constexpr size_t STAGING_BO_SIZE = 64 * 1024 * 1024 ; bo_staging [ 0 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); bo_staging [ 1 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); // Double-buffered stream from mmap page cache size_t stage_idx = current_op % 2 ; std :: memcpy ( bo_staging_map [ stage_idx ], mmap_weight_ptr , weight_bytes ); kernel_dpu -> operator ()(..., * bo_staging [ stage_idx ], ...); flags::host_only : Limits pinned kernel memory strictly to $2 \\times 64\\text{ MB} = \\mathbf{128\\text{ MB}}$. mmap_weight_ptr : Weights stay in standard page cache ( MAP_SHARED ), freely managed by Linux VM. Result: pgmajfault and swap dropped to 0 . 27B decode speed jumped from 0.15 tok/s to 1.72 tok/s —an 11.5× end-to-end recovery ."}, {"post_id": 54488, "ts": "2026-08-25T14:40:48Z", "hours": 12.2272, "text": "Devlog 06 The 27B Disaster & 12.6 GB Unevictable BO Crisis Tried loading Qwen3.8-27B-Q4_0 (15.2 GB). Everything collapsed: token speed plummeted to 0.15 tok/s (6.67 seconds/token) . Ran /proc/meminfo and /proc/vmstat diffs during decode to find the bottleneck: /proc/meminfo during 27B crash: MemTotal: 31,842 MB Unevictable: 12,640 MB <-- 369 persistent XRT BOs locked in RAM! pgmajfault: 520,118 <-- 520k disk page reads PER TOKEN pswpout: 18,400 <-- active swap storm The bug: Allocating persistent xrt::bo objects for all 369 model tensors pinned 12.6 GB into Unevictable kernel memory . The result: On a 32 GB laptop with OS and KV cache, Linux was starved of clean page cache. Every layer forced synchronous swap-outs and major page faults to disk. Persistent BO allocation for large models is fundamentally broken on consumer RAM."}, {"post_id": 50947, "ts": "2026-08-20T12:42:25Z", "hours": 9.7175, "text": "Devlog 05: Standalone GEMV Ceiling: Sustaining 38.5 GB/s Built tools/bench-aie-gemv-standalone.cpp to measure pure hardware DMA bandwidth without graph scheduler overhead. auto t0 = std :: chrono :: high_resolution_clock :: now (); bo_weights -> sync ( XCL_BO_SYNC_BO_TO_DEVICE ); kernel_run . wait (); auto t1 = std :: chrono :: high_resolution_clock :: now (); double gb_s = ( bytes / ( dt_ns * 1e-9 )) / 1e9 ; sync(TO_DEVICE) : Flushes dirty CPU lines and triggers DMA transport. kernel_run.wait() : Waits for AIE vector compute completion. Tested synthetic matrix sizes out to 1 GB ($K=5120$): 16 MB: 31.87 GB/s (0.53 ms) 128 MB: 34.27 GB/s (3.92 ms) 1024 MB: 38.57 GB/s (27.84 ms) Linear fit: $T(\\text{bytes}) \\approx 0.15\\text{ ms} + \\frac{\\text{bytes}}{38.5\\text{ GB/s}}$. The ~150 µs startup overhead gets amortized as matrix size grows."}, {"post_id": 47977, "ts": "2026-08-16T07:59:35Z", "hours": 11.2086, "text": "Devlog 04: 4-Column Planar Prepacking & First Real AIE Run Standard GGUF interleaves nibbles row-by-row. But AIE2 vector tiles need weights split into 4 independent planar column channels aligned to 64-byte boundaries. Wrote xdna-q4-prepack.cpp to deinterleave GGUF Q4 weights: // 4-Column Planar Deinterleaving for ( size_t col = 0 ; col < 4 ; ++ col ) { uint8_t * dst_col = packed_out + col * col_bytes ; for ( size_t row = 0 ; row < N ; ++ row ) { const uint8_t * src_nibbles = src_weights + row * row_stride + col * ( K / 4 ) / 2 ; deinterleave_and_align64 ( src_nibbles , dst_col + row * 64 , K / 4 ); } } col * (K / 4) : Strips matrix columns across the 4 independent NPU memory tiles. 64-byte alignment : Direct DMA streaming into tile L1 SRAM without unaligned stalls. Inside AIE: aie::unpack converts uint4 to BF16, scales, and computes fused vector MACs. First interactive generation on physical NPU! Cosine similarity against CPU FP32 oracle: 0.9999 ."}, {"post_id": 46963, "ts": "2026-08-14T15:29:37Z", "hours": 13.0922, "text": "Devlog 03: The CPU Baseline (AVX2 / FMA Golden Oracle) Before writing custom AIE kernels, we needed an unyielding golden oracle to check numerical correctness and see how fast the host CPU is. Wrote an unrolled AVX2/FMA Q4_0 vector engine in src/cpu-q4-gemv-engine.cpp : const __m256i raw = _mm256_loadu_si256 ( reinterpret_cast < const __m256i *> ( w_ptr )); const __m256i lo_nibbles = _mm256_and_si256 ( raw , _mm256_set1_epi8 ( 0x0F )); const __m256 w_f32 = _mm256_cvtepi32_ps ( _mm256_sub_epi32 ( lo_nibbles , _mm256_set1_epi32 ( 8 ))); acc = _mm256_fmadd_ps ( _mm256_mul_ps ( w_f32 , scale_vec ), act_vec , acc ); _mm256_and_si256(..., 0x0F) : Masks out the low 4-bit nibbles from 32 packed weights. _mm256_sub_epi32(..., 8) : Subtracts the Q4_0 symmetric offset (8). _mm256_fmadd_ps : Fused multiply-accumulate with FP32 activations in single-cycle throughput. Benchmarked Qwen2.5-0.5B on CPU: 106.5 tok/s (9.38 ms/tok) on 8 threads. Modern Zen 4 AVX2 is blazing fast on small models, so the NPU has a high bar to clear."}, {"post_id": 44511, "ts": "2026-08-10T09:54:07Z", "hours": 8.0289, "text": "Devlog 02: Hardware Smoke Tests & The 14ms Trap why have random shi like gate-1? bcs xdna1 is the worst supported from amd, idk their docs are incomplete im like testing and figuring stuff out Gate 1 milestone: getting real AIE execution contexts spinning via AMD XRT. Initial prototype had a huge bug: we were creating an xrt::hw_context and reloading the .xclbin bitstream inside the operator compute loop. Profiling showed this added ~14 ms of pure driver overhead per tensor dispatch —which murdered performance before we even started doing math. Fixed it by making the context a persistent backend singleton: // Initialize context & load bitstream ONCE at startup device = std :: make_unique < xrt :: device > ( device_index ); xrt :: uuid uuid = device -> register_xclbin ( xclbin_img ); hw_ctx = std :: make_unique < xrt :: hw_context > ( * device , uuid ); xrt :: module mod ( elf_img ); kernel_dpu = std :: make_unique < xrt :: kernel > ( xrt :: ext :: kernel ( * hw_ctx , mod , \"DPU\" )); device->register_xclbin : Flashes the DPU bitstream once into the NPU fabric. hw_ctx : Persistent hardware context reused across all tensor iterations. Dispatch overhead instantly dropped from 14 ms down to ~38 µs."}, {"post_id": 43766, "ts": "2026-08-09T05:55:28Z", "hours": 12.0031, "text": "Devlog 01: Talking to the Silicon (DRM & Phoenix Discovery) So the plan is simple: get GGUF models running straight on the Ryzen AI NPU without touching bloated ONNX or Vitis runtimes. First step was checking if we could even talk to /dev/accel/accel0 directly without root. Wrote a quick probe calling the kernel’s amdxdna DRM driver ioctls: struct amdxdna_drm_get_info info {}; info . param = DRM_AMDXDNA_GET_INFO_TOPOLOGY ; ioctl ( fd , DRM_IOCTL_AMDXDNA_GET_INFO , & info ); DRM_IOCTL_AMDXDNA_GET_INFO : Queries the hardware directly from the kernel. info.param = TOPOLOGY : Confirmed our Phoenix chip has 4 columns × 4 compute rows = 16 AIE2 tiles. Instead of dragging in a 10 GB SDK, we wrote our own include/xdna/amdxdna_uapi.h directly matching the kernel driver structs. Zero bloat, instant builds."}]...
|
Title: xdna.cpp by @satvikhardat | Stardance
Devl Title: xdna.cpp by @satvikhardat | Stardance
Devlogs:
Devlog 01: Talking to the Silicon (DRM & Phoenix Discovery) So the plan is simple: get GGUF models running straight on the Ryzen AI NPU without touching bloated ONNX or Vitis runtimes. First step was checking if we could even talk to /dev/accel/accel0 directly without root. Wrote a quick probe calling the kernel’s amdxdna DRM driver ioctls: struct amdxdna_drm_get_info info {}; info . param = DRM_AMDXDNA_GET_INFO_TOPOLOGY ; ioctl ( fd , DRM_IOCTL_AMDXDNA_GET_INFO , & info ); DRM_IOCTL_AMDXDNA_GET_INFO : Queries the hardware directly from the kernel. info.param = TOPOLOGY : Confirmed our Phoenix chip has 4 columns × 4 compute rows = 16 AIE2 tiles. Instead of dragging in a 10 GB SDK, we wrote our own include/xdna/amdxdna_uapi.h directly matching the kernel driver structs. Zero bloat, instant builds.
Devlog 02: Hardware Smoke Tests & The 14ms Trap why have random shi like gate-1? bcs xdna1 is the worst supported from amd, idk their docs are incomplete im like testing and figuring stuff out Gate 1 milestone: getting real AIE execution contexts spinning via AMD XRT. Initial prototype had a huge bug: we were creating an xrt::hw_context and reloading the .xclbin bitstream inside the operator compute loop. Profiling showed this added ~14 ms of pure driver overhead per tensor dispatch —which murdered performance before we even started doing math. Fixed it by making the context a persistent backend singleton: // Initialize context & load bitstream ONCE at startup device = std :: make_unique < xrt :: device > ( device_index ); xrt :: uuid uuid = device -> register_xclbin ( xclbin_img ); hw_ctx = std :: make_unique < xrt :: hw_context > ( * device , uuid ); xrt :: module mod ( elf_img ); kernel_dpu = std :: make_unique < xrt :: kernel > ( xrt :: ext :: kernel ( * hw_ctx , mod , "DPU" )); device->register_xclbin : Flashes the DPU bitstream once into the NPU fabric. hw_ctx : Persistent hardware context reused across all tensor iterations. Dispatch overhead instantly dropped from 14 ms down to ~38 µs.
Devlog 03: The CPU Baseline (AVX2 / FMA Golden Oracle) Before writing custom AIE kernels, we needed an unyielding golden oracle to check numerical correctness and see how fast the host CPU is. Wrote an unrolled AVX2/FMA Q4_0 vector engine in src/cpu-q4-gemv-engine.cpp : const __m256i raw = _mm256_loadu_si256 ( reinterpret_cast < const __m256i *> ( w_ptr )); const __m256i lo_nibbles = _mm256_and_si256 ( raw , _mm256_set1_epi8 ( 0x0F )); const __m256 w_f32 = _mm256_cvtepi32_ps ( _mm256_sub_epi32 ( lo_nibbles , _mm256_set1_epi32 ( 8 ))); acc = _mm256_fmadd_ps ( _mm256_mul_ps ( w_f32 , scale_vec ), act_vec , acc ); _mm256_and_si256(..., 0x0F) : Masks out the low 4-bit nibbles from 32 packed weights. _mm256_sub_epi32(..., 8) : Subtracts the Q4_0 symmetric offset (8). _mm256_fmadd_ps : Fused multiply-accumulate with FP32 activations in single-cycle throughput. Benchmarked Qwen2.5-0.5B on CPU: 106.5 tok/s (9.38 ms/tok) on 8 threads. Modern Zen 4 AVX2 is blazing fast on small models, so the NPU has a high bar to clear.
Devlog 04: 4-Column Planar Prepacking & First Real AIE Run Standard GGUF interleaves nibbles row-by-row. But AIE2 vector tiles need weights split into 4 independent planar column channels aligned to 64-byte boundaries. Wrote xdna-q4-prepack.cpp to deinterleave GGUF Q4 weights: // 4-Column Planar Deinterleaving for ( size_t col = 0 ; col < 4 ; ++ col ) { uint8_t * dst_col = packed_out + col * col_bytes ; for ( size_t row = 0 ; row < N ; ++ row ) { const uint8_t * src_nibbles = src_weights + row * row_stride + col * ( K / 4 ) / 2 ; deinterleave_and_align64 ( src_nibbles , dst_col + row * 64 , K / 4 ); } } col * (K / 4) : Strips matrix columns across the 4 independent NPU memory tiles. 64-byte alignment : Direct DMA streaming into tile L1 SRAM without unaligned stalls. Inside AIE: aie::unpack converts uint4 to BF16, scales, and computes fused vector MACs. First interactive generation on physical NPU! Cosine similarity against CPU FP32 oracle: 0.9999 .
Devlog 05: Standalone GEMV Ceiling: Sustaining 38.5 GB/s Built tools/bench-aie-gemv-standalone.cpp to measure pure hardware DMA bandwidth without graph scheduler overhead. auto t0 = std :: chrono :: high_resolution_clock :: now (); bo_weights -> sync ( XCL_BO_SYNC_BO_TO_DEVICE ); kernel_run . wait (); auto t1 = std :: chrono :: high_resolution_clock :: now (); double gb_s = ( bytes / ( dt_ns * 1e-9 )) / 1e9 ; sync(TO_DEVICE) : Flushes dirty CPU lines and triggers DMA transport. kernel_run.wait() : Waits for AIE vector compute completion. Tested synthetic matrix sizes out to 1 GB ($K=5120$): 16 MB: 31.87 GB/s (0.53 ms) 128 MB: 34.27 GB/s (3.92 ms) 1024 MB: 38.57 GB/s (27.84 ms) Linear fit: $T(\text{bytes}) \approx 0.15\text{ ms} + \frac{\text{bytes}}{38.5\text{ GB/s}}$. The ~150 µs startup overhead gets amortized as matrix size grows.
Devlog 06 The 27B Disaster & 12.6 GB Unevictable BO Crisis Tried loading Qwen3.8-27B-Q4_0 (15.2 GB). Everything collapsed: token speed plummeted to 0.15 tok/s (6.67 seconds/token) . Ran /proc/meminfo and /proc/vmstat diffs during decode to find the bottleneck: /proc/meminfo during 27B crash: MemTotal: 31,842 MB Unevictable: 12,640 MB <-- 369 persistent XRT BOs locked in RAM! pgmajfault: 520,118 <-- 520k disk page reads PER TOKEN pswpout: 18,400 <-- active swap storm The bug: Allocating persistent xrt::bo objects for all 369 model tensors pinned 12.6 GB into Unevictable kernel memory . The result: On a 32 GB laptop with OS and KV cache, Linux was starved of clean page cache. Every layer forced synchronous swap-outs and major page faults to disk. Persistent BO allocation for large models is fundamentally broken on consumer RAM.
Devlog 07: Bounded 128MB Staging Ring & The 11.5x Recovery Architected the fix for the 27B memory collapse: a bounded double-buffered staging ring in src/xdna-gemv-engine.cpp . // Allocate exactly two 64 MB host-only staging buffers (128 MB total pinned memory) static constexpr size_t STAGING_BO_SIZE = 64 * 1024 * 1024 ; bo_staging [ 0 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); bo_staging [ 1 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); // Double-buffered stream from mmap page cache size_t stage_idx = current_op % 2 ; std :: memcpy ( bo_staging_map [ stage_idx ], mmap_weight_ptr , weight_bytes ); kernel_dpu -> operator ()(..., * bo_staging [ stage_idx ], ...); flags::host_only : Limits pinned kernel memory strictly to $2 \times 64\text{ MB} = \mathbf{128\text{ MB}}$. mmap_weight_ptr : Weights stay in standard page cache ( MAP_SHARED ), freely managed by Linux VM. Result: pgmajfault and swap dropped to 0 . 27B decode speed jumped from 0.15 tok/s to 1.72 tok/s —an 11.5× end-to-end recovery .
Devlog 08 — Aug 31: The Crossover Spectrum & v1.0 Ship Finished multi-model crossover validation across three scales (0.5B, 3B, 27B): // Adaptive Heterogeneous Scheduling if ( N <= 256 ) { // Tiny matrices (<60 KB) run on CPU SIMD to avoid driver dispatch overhead cpu_engine -> run ( weights , weight_bytes , N , K , act , out ); } else { // Medium/Large matrices stream to 16 AIE2 compute tiles xdna_engine -> run ( weights , weight_bytes , N , K , act , out ); } Measured Crossover Scoreboard Qwen2.5-0.5B (403 MB) : CPU favored (106.5 t/s vs 72.6 t/s XDNA hybrid) due to small 60 KB payloads. Qwen2.5-3B (1.86 GB) : XDNA wins decisively: 16.5 tok/s vs 9.8 tok/s CPU (+68.8% / 1.69× speedup) . Qwen3.8-27B (15.2 GB) : XDNA sustains 1.72 tok/s streaming 12.6 GiB smoothly on a 32 GB laptop. Numerical Quality : Verified 100% Top-1 token match across all 3 scales. Shipped v1.0.0 with standalone binaries and clean architecture docs!
Ships:
Run GGUF quantized models directly on AMD XDNA1 NPUs (Ryzen AI 7040 / 8040 series) with llama.cpp its a fork or bettter said plugin of llama.cpp specially made to run models using amd NPUs Using AMD’s hawkpoint NPUs to run LLMs!! its a llama.cpp plugin not a standalone runtime to ensure supporting most models, but it has a few cool kernels targeted at the the xdna1 arch bcs as it turns out, the support for xdna1 NPUs is like really dead everyones like xdna2 yay, but i hv a xdna1 CPU so ima use every bit of it ig lol...
|
1792994012.2205985
|
1793080412.2205985
|
|
46281
|
ASTRA by @BobbyLovesShrek | Stardance
|
BobbyLovesShrek
|
1
|
87.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T09:22:20Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ASTRA 3D is an interactive Solar System explorer. You can change the date and clock speed, select planets, compare distances, experiment with orbital parameters, and try simplified flights and transfers. It also includes a local notebook and an offline guide. The challenging part was connecting the orbital calculations to an interactive 3D scene while making clear what the simplified model can and cannot tell you. I’m proud that the project lets people explore these ideas hands-on and explains its limits: it isn’t a full physics simulation or a mission-planning tool. To try it, start the app with pnpm install and pnpm dev, then use the controls to change the date, select planets, measure distances, or launch an experiment.", "repo": "https://github.com/Sid95-44/ASTRA-3D", "demo": "https://sid95-44.github.io/ASTRA-3D/"}]...
|
[{"post_id": 74795, "ts": "202 [{"post_id": 74795, "ts": "2026-09-28T08:44:38Z", "hours": 11.8558, "text": "Alright guys, It might genuinely be time to ship this Goddamn I finished milestone 4 and 5 now, last minute grind Milestone 4 is where ASTRA gets more interactive. There’s more satellites, moons, spacecraft, etc. You can move around the 3d environment, so that it starts actually feeling like space simulation. In milestone 5, you can actually do stuff with those objects. You can create a mission, choose a destination, set objectives, plan the mission steps, and see everything play out in the 3D environment."}, {"post_id": 74010, "ts": "2026-09-26T14:53:28Z", "hours": 12.6856, "text": "Guys, so like I started grinding on this thing Like this has been my main centre of focus atp. I finished building milestone 3 and added some features. Milestone 3 is the Expedition phase: adding moons, spacecraft missions, live data, and guided learning and discovery tools. Basically, ASTRA grows from exploring the solar system to taking little learning trips through it. Some of the trickier parts of milestone 3 were getting planets and moons to move in a convincing way, while keeping the controls responsive; showing useful live readouts without making the screen feel overloaded; and making spacecraft trips and orbital data understandable without pretending they’re accurate enough for real mission planning. The project simplifies some of the physics, and the roadmap still calls out live data and guided discovery as future work."}, {"post_id": 73012, "ts": "2026-09-24T06:48:26Z", "hours": 13.2147, "text": "Milestone 2 is basically about taking ASTRA from a working demo to a more complete learning tool, with things like extra satellites, better mission lessons, more detailed visuals, and useful features like saving or exporting your measurements. Added ASTRA Guide, a built-in educational assistant. It can explain planets, orbital speed, orbital periods, Kepler-inspired motion, eccentricity, inclination, AU, simulation time, distances, and the model’s limits. Answers use the currently selected planet, simulation date, speed, and active distance measurement. Added suggested questions to help beginners know what to ask. Milestone 3 will probably focus on making ASTRA more advanced and useful, with deeper mission-planning lessons, more satellites, better visuals, and tools for saving or exporting your measurements."}, {"post_id": 72035, "ts": "2026-09-22T01:15:27Z", "hours": 11.0403, "text": "Devlog #6: Milestone 1 is where ASTRA stops being just a cool landing page and becomes an actual interactive Solar System. You can look around in 3D, select planets and moons, speed up or pause time, check live information, measure distances, and try simple spacecraft missions and orbit experiments. There were a few challenges along the way of building milestone 1, bugs and alot of errors. But I’ve created milestone 1, and I’m simultaenoulsy creating milestone 2."}, {"post_id": 70959, "ts": "2026-09-20T03:17:22Z", "hours": 6.7439, "text": "Devlog #5: Hello Earthlings, For Milestone 0, I upgraded the landing page into a proper interactive intro for ASTRA. It now has the orbital blueprint design, animated planet cards, scroll and pointer effects, section reveals, mobile navigation, reduced-motion support, and a clearer button that takes you into the simulation. The simulation itself stayed mostly the same for now, while I focused on making the first screen feel more polished and connected to the project’s space-science theme. As you can see, the design of the website has been improved a lot from before. I had some help from my friends at school, but I did around 65% of the work."}, {"post_id": 69171, "ts": "2026-09-16T15:01:55Z", "hours": 7.0864, "text": "So, hello It has been a long time since I made my previous devlog. I actually went from milestone 1 to making milestone 0. So milestone 0 is the landing page, that describes what ASTRA 3D is and has a scroll driven narrative system. Clicking the ‘enter observatory’ button will take the user into the main logic of this website. I’ve integrated milestone 1 and milestone 0, and I’m progressing through milestone 2. That’s it, I guess. Byeeeeeeee"}, {"post_id": 51372, "ts": "2026-08-21T00:36:22Z", "hours": 6.1872, "text": "Devlog#3-ish Hello mighty earthlings, I’m not really done with phase 3 of my project, hell, I’m not even done with phase 2 . I am currently adding moon textures and planet textures to the planets to make them look more realistic and I’m improving my UI. The thing is, there is a lot of errors and bugs, so this might be the most boring and brain-draining part yet. I think I would need another 6-7 hours to stop all errors and polish it. Until next time I guess"}, {"post_id": 50863, "ts": "2026-08-20T09:49:11Z", "hours": 10.8689, "text": "Devlog#2: Hello earthlings I have a lot of bugs and errors in phase 2 development. I can see that its a long road of fixing. But hey, atleast it’s for a good cause"}, {"post_id": 49304, "ts": "2026-08-18T01:28:06Z", "hours": 7.5714, "text": "Devlog #1: Hello Earthlings So I started with phase 1 of ASTRA-3D, which is a website that shows a lot of stuff, like 3D Solar System, info about planets, asteroid details, weather details and might have a ASTRA AI Chatbot as we progress through more updates and phases. Phase 1 is basic and basically shows the 3D solar system and you can rotate to move the camera around. Moreover, you can click on planets to display the info abt them. Thats it Thx"}]...
|
Title: ASTRA by @BobbyLovesShrek | Stardance
Devl Title: ASTRA by @BobbyLovesShrek | Stardance
Devlogs:
Devlog #1: Hello Earthlings So I started with phase 1 of ASTRA-3D, which is a website that shows a lot of stuff, like 3D Solar System, info about planets, asteroid details, weather details and might have a ASTRA AI Chatbot as we progress through more updates and phases. Phase 1 is basic and basically shows the 3D solar system and you can rotate to move the camera around. Moreover, you can click on planets to display the info abt them. Thats it Thx
Devlog#2: Hello earthlings I have a lot of bugs and errors in phase 2 development. I can see that its a long road of fixing. But hey, atleast it’s for a good cause
Devlog#3-ish Hello mighty earthlings, I’m not really done with phase 3 of my project, hell, I’m not even done with phase 2 . I am currently adding moon textures and planet textures to the planets to make them look more realistic and I’m improving my UI. The thing is, there is a lot of errors and bugs, so this might be the most boring and brain-draining part yet. I think I would need another 6-7 hours to stop all errors and polish it. Until next time I guess
So, hello It has been a long time since I made my previous devlog. I actually went from milestone 1 to making milestone 0. So milestone 0 is the landing page, that describes what ASTRA 3D is and has a scroll driven narrative system. Clicking the ‘enter observatory’ button will take the user into the main logic of this website. I’ve integrated milestone 1 and milestone 0, and I’m progressing through milestone 2. That’s it, I guess. Byeeeeeeee
Devlog #5: Hello Earthlings, For Milestone 0, I upgraded the landing page into a proper interactive intro for ASTRA. It now has the orbital blueprint design, animated planet cards, scroll and pointer effects, section reveals, mobile navigation, reduced-motion support, and a clearer button that takes you into the simulation. The simulation itself stayed mostly the same for now, while I focused on making the first screen feel more polished and connected to the project’s space-science theme. As you can see, the design of the website has been improved a lot from before. I had some help from my friends at school, but I did around 65% of the work.
Devlog #6: Milestone 1 is where ASTRA stops being just a cool landing page and becomes an actual interactive Solar System. You can look around in 3D, select planets and moons, speed up or pause time, check live information, measure distances, and try simple spacecraft missions and orbit experiments. There were a few challenges along the way of building milestone 1, bugs and alot of errors. But I’ve created milestone 1, and I’m simultaenoulsy creating milestone 2.
Milestone 2 is basically about taking ASTRA from a working demo to a more complete learning tool, with things like extra satellites, better mission lessons, more detailed visuals, and useful features like saving or exporting your measurements. Added ASTRA Guide, a built-in educational assistant. It can explain planets, orbital speed, orbital periods, Kepler-inspired motion, eccentricity, inclination, AU, simulation time, distances, and the model’s limits. Answers use the currently selected planet, simulation date, speed, and active distance measurement. Added suggested questions to help beginners know what to ask. Milestone 3 will probably focus on making ASTRA more advanced and useful, with deeper mission-planning lessons, more satellites, better visuals, and tools for saving or exporting your measurements.
Guys, so like I started grinding on this thing Like this has been my main centre of focus atp. I finished building milestone 3 and added some features. Milestone 3 is the Expedition phase: adding moons, spacecraft missions, live data, and guided learning and discovery tools. Basically, ASTRA grows from exploring the solar system to taking little learning trips through it. Some of the trickier parts of milestone 3 were getting planets and moons to move in a convincing way, while keeping the controls responsive; showing useful live readouts without making the screen feel overloaded; and making spacecraft trips and orbital data understandable without pretending they’re accurate enough for real mission planning. The project simplifies some of the physics, and the roadmap still calls out live data and guided discovery as future work.
Alright guys, It might genuinely be time to ship this Goddamn I finished milestone 4 and 5 now, last minute grind Milestone 4 is where ASTRA gets more interactive. There’s more satellites, moons, spacecraft, etc. You can move around the 3d environment, so that it starts actually feeling like space simulation. In milestone 5, you can actually do stuff with those objects. You can create a mission, choose a destination, set objectives, plan the mission steps, and see everything play out in the 3D environment.
Ships:
ASTRA 3D is an interactive Solar System explorer. You can change the date and clock speed, select planets, compare distances, experiment with orbital parameters, and try simplified flights and transfers. It also includes a local notebook and an offline guide. The challenging part was connecting the orbital calculations to an interactive 3D scene while making clear what the simplified model can and cannot tell you. I’m proud that the project lets people explore these ideas hands-on and explains its limits: it isn’t a full physics simulation or a mission-planning tool. To try it, start the app with pnpm install and pnpm dev, then use the controls to change the date, select planets, measure distances, or launch an experiment....
|
1793004847.1576495
|
1793091247.1576495
|
|
43433
|
Combat Log Minecraft Mod by @ryan_ | Stardance
|
ryan_
|
1
|
86.74
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T01:06:11Z", "hours": 73.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I ported CombatLogX and some of its expansions over to Fabric and NeoForge for Minecraft 1.21.1 and 1.21.10. It brings combat logging prevention to modded servers so players can’t just logout to avoid PvP. The API has been partially reworked and the config system has been changed, so you can’t just drop in existing configs and custom features have been added (e.g. keeping NPC bodies online). Features: Combat tagging system, configurable combat timers and punishments (e.g. killing the player or leaving an NPC body online) Ported the Expansion API alongside some official expansions: Bossbar timers, actionbar timers and end crystal tracking Permission support via fabric-permission-api and NeoForge’s built in permission system", "repo": "https://github.com/rcubedev/combatlog", "demo": "https://modrinth.com/mod/combatlogx-port"}]...
|
[{"post_id": 50223, "ts": "202 [{"post_id": 50223, "ts": "2026-08-19T11:25:45Z", "hours": 2.5697, "text": "Update README with showcase video and Modrinth links for the main project and its expansions Fix crash in dev env on 1.21.10 due to incorrect placeholder api version Fix player not being killed on relog for JOIN kill time on 1.21.10 Update java-utils dependency"}, {"post_id": 49981, "ts": "2026-08-19T00:22:59Z", "hours": 8.7017, "text": "Fix real player objects identified as fake (NPCs) when they have disconnected. Fix fake players (kept online players) not automatically disconnecting after death Fix fake player death not tracked as a combat log Fix punish features (e.g. punish commands) not running on fake players Add untagging when the enemy disconnects. Previously if setup to do nothing when an enemy combat logs, you would remain in combat. After this feature was introduced, if the enemy logged back in while their NPC was spawned, you would be untagged; this was fixed."}, {"post_id": 42809, "ts": "2026-08-07T18:34:59Z", "hours": 2.4706, "text": "Added automated publishing to Modrinth. CI releases auto fetch the changelog from the CHANGELOG.md file and upload the release to Modrinth and Github Releases. The modrinth projects (main mod + 1 for each expansion) haven’t yet been accepted, so they are not yet accessible."}, {"post_id": 41636, "ts": "2026-08-05T23:43:25Z", "hours": 1.1633, "text": "Fix entity explosion crashing on 1.21.11 due to incorrect mixin target. Fix boss bar expansion not working after NPC relogging. Remove old debug logging. Fix NPC not getting kicked after combat ending. Make dependency jar patcher lazy instead of eager. Update java utils for a fix when building with configuration caching. Increase max heap size for gradle to prevent daemon death due to memory thrashing."}, {"post_id": 41424, "ts": "2026-08-05T16:52:18Z", "hours": 7.5961, "text": "Properly added custom library as a git submodule rather than assuming it would be cloned into the parent directory. Updated mod metadata: added in github links instead of going to example.com/TODO, mark dependencies as required and more. Added GitHub Action workflows for build and release. Removed sysout debug logging. Clean up injectModType usage. Fix server lifecycle events not firing on NeoForge. Fix player relogging in the wrong location when reconnecting while their NPC body is kept online when combat logging."}, {"post_id": 40742, "ts": "2026-08-04T13:52:19Z", "hours": 1.1606, "text": "Updated the README by adding project description, listed supported versions and installation steps and the expansion system."}, {"post_id": 40677, "ts": "2026-08-04T11:19:59Z", "hours": 2.3861, "text": "Finalized the End Crystal expansion, fixed end crystal listener not registering, fix crash with boss bar expansion"}, {"post_id": 40096, "ts": "2026-08-03T14:16:39Z", "hours": 60.6469, "text": "NeoForge support has been added alongside multiversion, meaning it now supports 1.21.1 and 1.21.10 NeoForge or Fabric vs just 1.21.1 Fabric. The Expansion API surface has been reintroduced, allowing for other mods to hook into the API and add custom features. A dependency on my WIP service loader abstraction has been added, replacing the old CompletableFuture platform singletons."}]...
|
Title: Combat Log Minecraft Mod by @ryan_ | Starda Title: Combat Log Minecraft Mod by @ryan_ | Stardance
Devlogs:
NeoForge support has been added alongside multiversion, meaning it now supports 1.21.1 and 1.21.10 NeoForge or Fabric vs just 1.21.1 Fabric. The Expansion API surface has been reintroduced, allowing for other mods to hook into the API and add custom features. A dependency on my WIP service loader abstraction has been added, replacing the old CompletableFuture platform singletons.
Finalized the End Crystal expansion, fixed end crystal listener not registering, fix crash with boss bar expansion
Updated the README by adding project description, listed supported versions and installation steps and the expansion system.
Properly added custom library as a git submodule rather than assuming it would be cloned into the parent directory. Updated mod metadata: added in github links instead of going to example.com/TODO, mark dependencies as required and more. Added GitHub Action workflows for build and release. Removed sysout debug logging. Clean up injectModType usage. Fix server lifecycle events not firing on NeoForge. Fix player relogging in the wrong location when reconnecting while their NPC body is kept online when combat logging.
Fix entity explosion crashing on 1.21.11 due to incorrect mixin target. Fix boss bar expansion not working after NPC relogging. Remove old debug logging. Fix NPC not getting kicked after combat ending. Make dependency jar patcher lazy instead of eager. Update java utils for a fix when building with configuration caching. Increase max heap size for gradle to prevent daemon death due to memory thrashing.
Added automated publishing to Modrinth. CI releases auto fetch the changelog from the CHANGELOG.md file and upload the release to Modrinth and Github Releases. The modrinth projects (main mod + 1 for each expansion) haven’t yet been accepted, so they are not yet accessible.
Fix real player objects identified as fake (NPCs) when they have disconnected. Fix fake players (kept online players) not automatically disconnecting after death Fix fake player death not tracked as a combat log Fix punish features (e.g. punish commands) not running on fake players Add untagging when the enemy disconnects. Previously if setup to do nothing when an enemy combat logs, you would remain in combat. After this feature was introduced, if the enemy logged back in while their NPC was spawned, you would be untagged; this was fixed.
Update README with showcase video and Modrinth links for the main project and its expansions Fix crash in dev env on 1.21.10 due to incorrect placeholder api version Fix player not being killed on relog for JOIN kill time on 1.21.10 Update java-utils dependency
Ships:
I ported CombatLogX and some of its expansions over to Fabric and NeoForge for Minecraft 1.21.1 and 1.21.10. It brings combat logging prevention to modded servers so players can’t just logout to avoid PvP. The API has been partially reworked and the config system has been changed, so you can’t just drop in existing configs and custom features have been added (e.g. keeping NPC bodies online). Features: Combat tagging system, configurable combat timers and punishments (e.g. killing the player or leaving an NPC body online) Ported the Expansion API alongside some official expansions: Bossbar timers, actionbar timers and end crystal tracking Permission support via fabric-permission-api and NeoForge’s built in permission system...
|
1792983110.555748
|
1793069510.555748
|
|
25609
|
mini swerve modules and chasis by @NIKOLAI_GOGOL44 mini swerve modules and chasis by @NIKOLAI_GOGOL444 | Stardance...
|
NIKOLAI_GOGOL444
|
1
|
86.0
|
429
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-15T14:40:20Z", "hours": 86.0, "multiplier": 5.0, "payout": 429, "blessing": "neutral", "text": "I made a miniature functional swerve chasis modeled after frc swerve drive trains. I am proud of it being my first actual finished project, and challenging thing along the way was definitely learning the new software required to make this.", "repo": "https://github.com/NIKOLAI-GOGOL444/mini-swerve-drive-train", "demo": ""}]...
|
[{"post_id": 31281, "ts": "202 [{"post_id": 31281, "ts": "2026-07-19T15:46:26Z", "hours": 4.2267, "text": "Programming complete! PCB time. Today I fixed the issue of module 3’s wheel being offset, and tuned the PID loop. Now the robot finally works well enough to begin pcb design! Designing a pcb will make the final push of testing and programming much easier. I probably wont have may devlogs here for awhile because Im documenting my PCB as a seperate project on hackclub horizons so I can qualify for polaris, but once the pcb is done ill do a final post for this project. This has been very fun, i will definitely do another project before summer ends on stardance."}, {"post_id": 30958, "ts": "2026-07-18T23:34:22Z", "hours": 9.0239, "text": "pid tuning + finding some problems! found some issues in the code varriable defenitions that did not relate to the actual robot, ex some pins were switched that made modules steer backwards rather than the direction intended, mod 3 displacement was wrong. still some issues, like modules 4 and 3 are pretty tense, will have to open them up and see if anythings wrong. probably going to start pcb design about now anyway because I think the code is fine, and I need 20 hours in time to buy a ticket to polaris. anyway super super tired, havent slept in 20 hours :’-)"}, {"post_id": 30569, "ts": "2026-07-18T07:58:33Z", "hours": 7.6264, "text": "pid tuning + debugging. i did some bug fixes with the kinematics code, such as fixing radians to angle conversion that i forgot to add, added a step that accounts from slight added drive speed from steering that happens in coaxial swerve drive, and spent 3 hours trying to fix my multiplexer only to realize i accidentially changed the adress. oops! then, I finally began tuning the pid loop, only to discover that turning is weak because the gears that are attached to the steer motors have bad grip on the shaft, because when I made them i forgot to add wiggle room, so during assembly i would sand the insides, making them too loose. so fixed that and reprinted, now in my next time log i will add the new gears and finish tuning the pid, if thats done then this projects time on stardance is complete! when i finish this project, I defenitley want to do some cool stuf with RFs. defo gonna do another project here on stardance."}, {"post_id": 29394, "ts": "2026-07-16T10:07:22Z", "hours": 9.3406, "text": "BIG devlog tonight! swerve drive kinematics code + some testing! today, I pulled through and did all the kinematics code for the swerve drive. it required using the offsets of the modules from the center, the drive joystick inputs, and the steer joystick inputs to calculate vector length and magnitude, then use those to derive a target angle and speed for each module, then speed is scaled down to fit the (0,4095) PWM range for my motors. the target angle is optimized to switch to a smaller rotation if the angle is above 90 degrees, then it is plugged into a PID loop that helps the steer motor achieve the angle. im super tired its like 6 am over here, so Im going to sleep. tomorrow I will have to replace an encoder that went bad on module two, and tune the PID loop. after that, this project will be complete, and I will begin the second half, which is pcb creation, and I will be documenting that on horizons as a seperate hardware project. :-)"}, {"post_id": 28682, "ts": "2026-07-15T02:36:36Z", "hours": 5.5006, "text": "code and elecronic fixes + new weird issue I dont really remember what I did last night on the robot, I do remember though that one of my encoders went bad so I had to buy a new one, that should come soon. also, all four of my drive motors have stopped reacting to pwm inputs. after peering more, the motors themselves are fine, and even the h brigde is fine because the motors will sometimes twitch abit during startup from floating values. I think It is the code, will look into that tonight. on a good note I have daisychained power to all 4 of my motor controllers, and begun planning out how I want to program my swerves and learning the mathematics needed for that, so Im pretty excited to do that. hopefully I can wrap this project up soon so I can start working On the ISEF project I wanna do with radio waves :-)"}, {"post_id": 27614, "ts": "2026-07-13T11:04:04Z", "hours": 8.6331, "text": "booting difficulties + figured it out + swerve kinematics planning! I was having alot of trouble getting the code to flash to my ESP32. the board would dissapear, loose connection, etc. this began happening after adding alot more components to the board, which eventually led to me learning that some of the pins on my board are completely unuseable due to connections to PSRAM. I need almost all the pins on the board for my project, so I am switching to a different ESP32 model that doesnt have psram, as my project doesnt need all that processing strength. after that, I began learning the kinematics needed to program a swerve drive train, and began taking notes and making plans for code structure, etc."}, {"post_id": 26480, "ts": "2026-07-11T09:26:15Z", "hours": 4.3925, "text": "Soldering electronics to breadboarded system + some coding! Today I soldered all the electronics to the breadboarded system that I haven’t yet, so the breadboarded system is complete and ready to be programmed for 4 modules! I also ran out of I/O pins on my esp32, so I added an I/O extension chip breakout board to the system so I could have enough pins for my drive motors’ encoders, which will be very important for autonomous programs later os For coding, I changed my functions and rewrote some of the code to be suitable for 4 modules, such as changing the drive and steer functions to take an int variable argument of 1 through 4, to control different modules. I also did the same thing for the encoders. I’m tired, so I will sleep, and tomorrow I plan to program the I/O extension chip and the drive encoders, then hopefully get my hands on some 18AWGg wire so I can daisy chain the battery to my four motor controllers, so I can see how just the basic code without any trig math works on my swerve drive train, then just go from there. hopefully this coding stage doesnt take so long, so I can design a pcb! the messy breadboard is stressing me out >_<, also I wanna make my first pcb, working on this project has helped me learn alot more about data protocols and chips, also how to read datasheets, so Id love to figure out kicad and make something using that knowledge, Oh and I really wanna make the pcb cute with decals n stuff lol. Wow, that was a long devlog prob my longest. Oh, one more thing: I’m pretty sure one of my modules steer motors is broken, so I’ll have to open it up and see what is wrong; probably will have an update on that tomorrow."}, {"post_id": 25817, "ts": "2026-07-10T08:58:52Z", "hours": 8.2981, "text": "completed chasis + starting code! I completed the chasis, and I will begin programming. I just noticed my code isnt working for one module and radio system, so im debugging that, then ill probably go to bed and solder the other 3 modules to the system, then program it. I want to have a working system and code before I try making a pcb, so ill have to deal with this wire mess for now :’-)"}, {"post_id": 24585, "ts": "2026-07-08T09:05:41Z", "hours": 1.88, "text": "assembling final chasis began! I finished the first swerve today and screwed it into the chasis as you can see in the picture, and I would have done the other three tonight, however my printer (my moms technicaly, shes a teacher and she bought it for her class using a grant, but she lets me use it lol) is clogged! my mother doesnt want me to touch it so she will fix it soon, so until then I cant print anything :’-( should be fixed in a few days though."}, {"post_id": 23972, "ts": "2026-07-07T06:36:46Z", "hours": 4.15, "text": "assembling some swerve V6 + one minor issue + soldering some components!: I assembled about two swerves, before running out of filament, so ill keep printing once I get my hands on a new roll. as for the meshing issues, they have been fixed now! the gears mesh perfectly. however, there is too much wiggle room for the 48t gear in the bottom shell, which causes meshing issues when the 48t gear shifts out of the center, so Ill have to fix that, but after that the design is perfect! yaaay! other than that, I disasembled the older swerve model ive been using for programming, and soldered its components plus the steer motors."}, {"post_id": 23304, "ts": "2026-07-06T05:39:11Z", "hours": 4.5336, "text": "Finished swerves V^! should be the final deisgn, as I went in and fixed all the design errors I was avoiding. everything looks perfect! hopefuly this is the last iteration, ill print it ASAP and see. (ignore the missing leg thingy, in the redesign both are identical!) these files will be on the repository soon."}, {"post_id": 22707, "ts": "2026-07-05T08:43:38Z", "hours": 7.0681, "text": "swerves V6! began working on (FIINAALL) swerve iteration. V5 wouldve been final if I hadnt ignored super obvi meshing issues.. anyway as you can see meshing is perfect. as you can see by the second photo I got a whole lot done. moral of the story, dont ignore obvious problems until they become a hassle to fix and have you awake at 4:41 am :’-)"}, {"post_id": 22029, "ts": "2026-07-04T08:42:20Z", "hours": 0.9167, "text": "trying to fix meshing issues. after some research, its likely due to innacuracies of the shaft holder for the drive gears, and misalignment of my bevels. its super late, so ill make some cad fixes tomorrow."}, {"post_id": 22009, "ts": "2026-07-04T07:38:40Z", "hours": 0.7833, "text": "greasing modules + meshing issues! idk why theres meshing issues tbh. im gonna look at the cad and see what I can do :’-("}, {"post_id": 21781, "ts": "2026-07-03T21:44:04Z", "hours": 4.3769, "text": "today I worked on assembling swerves for my final assembly, and I also soddered some encoders for the swerves."}, {"post_id": 19440, "ts": "2026-06-30T19:17:59Z", "hours": 5.1442, "text": "moving project to stardance from forge, and code updates! today, I moved my projects logs and info to stardance as best I could, because shipping ends today and Id like to ship. my logs from forge are on my repository, and I now have a demo in my stardance if anyone is intrested in viewing the cad. also, last night I worked on the code alot, specifically the system that will use nrf pa lina modules to transmit controller commands to the robot. its not working, and after working around the code abit, I suspect it is because I havent soddered 10uf capacitors to the gnd and 3.3v pins of my nrf pa lina modules, so I will try that soon and update how it goes. the updated code with radio transmission is posted in my repository however, if you would like to see it."}]...
|
Title: mini swerve modules and chasis by @NIKOLAI_ Title: mini swerve modules and chasis by @NIKOLAI_GOGOL444 | Stardance
Devlogs:
moving project to stardance from forge, and code updates! today, I moved my projects logs and info to stardance as best I could, because shipping ends today and Id like to ship. my logs from forge are on my repository, and I now have a demo in my stardance if anyone is intrested in viewing the cad. also, last night I worked on the code alot, specifically the system that will use nrf pa lina modules to transmit controller commands to the robot. its not working, and after working around the code abit, I suspect it is because I havent soddered 10uf capacitors to the gnd and 3.3v pins of my nrf pa lina modules, so I will try that soon and update how it goes. the updated code with radio transmission is posted in my repository however, if you would like to see it.
today I worked on assembling swerves for my final assembly, and I also soddered some encoders for the swerves.
greasing modules + meshing issues! idk why theres meshing issues tbh. im gonna look at the cad and see what I can do :’-(
trying to fix meshing issues. after some research, its likely due to innacuracies of the shaft holder for the drive gears, and misalignment of my bevels. its super late, so ill make some cad fixes tomorrow.
swerves V6! began working on (FIINAALL) swerve iteration. V5 wouldve been final if I hadnt ignored super obvi meshing issues.. anyway as you can see meshing is perfect. as you can see by the second photo I got a whole lot done. moral of the story, dont ignore obvious problems until they become a hassle to fix and have you awake at 4:41 am :’-)
Finished swerves V^! should be the final deisgn, as I went in and fixed all the design errors I was avoiding. everything looks perfect! hopefuly this is the last iteration, ill print it ASAP and see. (ignore the missing leg thingy, in the redesign both are identical!) these files will be on the repository soon.
assembling some swerve V6 + one minor issue + soldering some components!: I assembled about two swerves, before running out of filament, so ill keep printing once I get my hands on a new roll. as for the meshing issues, they have been fixed now! the gears mesh perfectly. however, there is too much wiggle room for the 48t gear in the bottom shell, which causes meshing issues when the 48t gear shifts out of the center, so Ill have to fix that, but after that the design is perfect! yaaay! other than that, I disasembled the older swerve model ive been using for programming, and soldered its components plus the steer motors.
assembling final chasis began! I finished the first swerve today and screwed it into the chasis as you can see in the picture, and I would have done the other three tonight, however my printer (my moms technicaly, shes a teacher and she bought it for her class using a grant, but she lets me use it lol) is clogged! my mother doesnt want me to touch it so she will fix it soon, so until then I cant print anything :’-( should be fixed in a few days though.
completed chasis + starting code! I completed the chasis, and I will begin programming. I just noticed my code isnt working for one module and radio system, so im debugging that, then ill probably go to bed and solder the other 3 modules to the system, then program it. I want to have a working system and code before I try making a pcb, so ill have to deal with this wire mess for now :’-)
Soldering electronics to breadboarded system + some coding! Today I soldered all the electronics to the breadboarded system that I haven’t yet, so the breadboarded system is complete and ready to be programmed for 4 modules! I also ran out of I/O pins on my esp32, so I added an I/O extension chip breakout board to the system so I could have enough pins for my drive motors’ encoders, which will be very important for autonomous programs later os For coding, I changed my functions and rewrote some of the code to be suitable for 4 modules, such as changing the drive and steer functions to take an int variable argument of 1 through 4, to control different modules. I also did the same thing for the encoders. I’m tired, so I will sleep, and tomorrow I plan to program the I/O extension chip and the drive encoders, then hopefully get my hands on some 18AWGg wire so I can daisy chain the battery to my four motor controllers, so I can see how just the basic code without any trig math works on my swerve drive train, then just go from there. hopefully this coding stage doesnt take so long, so I can design a pcb! the messy breadboard is stressing me out >_<, also I wanna make my first pcb, working on this project has helped me learn alot more about data protocols and chips, also how to read datasheets, so Id love to figure out kicad and make something using that knowledge, Oh and I really wanna make the pcb cute with decals n stuff lol. Wow, that was a long devlog prob my longest. Oh, one more thing: I’m pretty sure one of my modules steer motors is broken, so I’ll have to open it up and see what is wrong; probably will have an update on that tomorrow.
booting difficulties + figured it out + swerve kinematics planning! I was having alot of trouble getting the code to flash to my ESP32. the board would dissapear, loose connection, etc. this began happening after adding alot more components to the board, which eventually led to me learning that some of the pins on my board are completely unuseable due to connections to PSRAM. I need almost all the pins on the board for my project, so I am switching to a different ESP32 model that doesnt have psram, as my project doesnt need all that processing strength. after that, I began learning the kinematics needed to program a swerve drive train, and began taking notes and making plans for code structure, etc.
code and elecronic fixes + new weird issue I dont really remember what I did last night on the robot, I do remember though that one of my encoders went bad so I had to buy a new one, that should come soon. also, all four of my drive motors have stopped reacting to pwm inputs. after peering more, the motors themselves are fine, and even the h brigde is fine because the motors will sometimes twitch abit during startup from floating values. I think It is the code, will look into that tonight. on a good note I have daisychained power to all 4 of my motor controllers, and begun planning out how I want to program my swerves and learning the mathematics needed for that, so Im pretty excited to do that. hopefully I can wrap this project up soon so I can start working On the ISEF project I wanna do with radio waves :-)
BIG devlog tonight! swerve drive kinematics code + some testing! today, I pulled through and did all the kinematics code for the swerve drive. it required using the offsets of the modules from the center, the drive joystick inputs, and the steer joystick inputs to calculate vector length and magnitude, then use those to derive a target angle and speed for each module, then speed is scaled down to fit the (0,4095) PWM range for my motors. the target angle is optimized to switch to a smaller rotation if the angle is above 90 degrees, then it is plugged into a PID loop that helps the steer motor achieve the angle. im super tired its like 6 am over here, so Im going to sleep. tomorrow I will have to replace an encoder that went bad on module two, and tune the PID loop. after that, this project will be complete, and I will begin the second half, which is pcb creation, and I will be documenting that on horizons as a seperate hardware project. :-)
pid tuning + debugging. i did some bug fixes with the kinematics code, such as fixing radians to angle conversion that i forgot to add, added a step that accounts from slight added drive speed from steering that happens in coaxial swerve drive, and spent 3 hours trying to fix my multiplexer only to realize i accidentially changed the adress. oops! then, I finally began tuning the pid loop, only to discover that turning is weak because the gears that are attached to the steer motors have bad grip on the shaft, because when I made them i forgot to add wiggle room, so during assembly i would sand the insides, making them too loose. so fixed that and reprinted, now in my next time log i will add the new gears and finish tuning the pid, if thats done then this projects time on stardance is complete! when i finish this project, I defenitley want to do some cool stuf with RFs. defo gonna do another project here on stardance.
pid tuning + finding some problems! found some issues in the code varriable defenitions that did not relate to the actual robot, ex some pins were switched that made modules steer backwards rather than the direction intended, mod 3 displacement was wrong. still some issues, like modules 4 and 3 are pretty tense, will have to open them up and see if anythings wrong. probably going to start pcb design about now anyway because I think the code is fine, and I need 20 hours in time to buy a ticket to polaris. anyway super super tired, havent slept in 20 hours :’-)
Programming complete! PCB time. Today I fixed the issue of module 3’s wheel being offset, and tuned the PID loop. Now the robot finally works well enough to begin pcb design! Designing a pcb will make the final push of testing and programming much easier. I probably wont have may devlogs here for awhile because Im documenting my PCB as a seperate project on hackclub horizons so I can qualify for polaris, but once the pcb is done ill do a final post for this project. This has been very fun, i will definitely do another project before summer ends on stardance.
Ships:
I made a miniature functional swerve chasis modeled after frc swerve drive trains. I am proud of it being my first actual finished project, and challenging thing along the way was definitely learning the new software required to make this....
|
1793072914.2740932
|
1793159314.2740932
|
|
36890
|
Mine and Dine - 26.2 Minecraft Mod by @RevComInter Mine and Dine - 26.2 Minecraft Mod by @RevComInteractives | Stardance...
|
RevComInteractives
|
2
|
86.0
|
1463
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T19:49:16Z", "hours": 29.0, "multiplier": 14.54, "payout": 420, "blessing": "neutral", "text": "Mine & Dine is a Minecraft mod that aims to overhaul the minecraft cooking system, because I always thought that it was a little bit shallow and lacked depth. Therefore I have set the goal for myself to transform the cooking system into something I always wanted. My mod adds six new blockentities and over 70 new items that do exactly that. (You can find a deeper explanation of the contents in my ReadMe) This mod is by far not finished but I think it’s gotten to a point where I would say it is playable and enjoyable, that’s why I decided to ship it now. Especially now that I’ve successfully ported it to version 26.2. What I’m especially proud of is how far my skills as a mod developer have come since I started this project. I have made a couple of smaller mods before the stardance challenge but never something quite like this. I was even able to upload it to Modrinth where the whole world can see it. (Modrinth is also the easiest way to play my mod btw) This step of shipping my final project for this challenge really feels like I’ve achieved something. Thanks in advance to everyone who plays my mod, I hope you’ll enjoy it. If you encounter any bugs (And its not unlikely you do) please report them on my github page. Anyways that’s everything I have to say for now, see you around!", "repo": "https://github.com/JhStudi0/MineAndDine-26.2", "demo": "https://modrinth.com/mod/mine-and-dine"}, {"ship_num": 2, "ts": "2026-09-01T19:51:42Z", "hours": 57.0, "multiplier": 18.17, "payout": 1043, "blessing": "neutral", "text": "Mine & Dine is a Minecraft mod that aims to overhaul the minecraft cooking system, because I always thought that it was a little bit shallow and lacked depth. Therefore I have set the goal for myself to transform the cooking system into something I always wanted. My mod adds five new blockentities and over 60 new items that do exactly that. (You can find a deeper explanation of the contents in my ReadMe) This mod is by far not finished but I think it’s gotten to a point where I would say it is playable and enjoyable, that’s why I decided to ship it now. What I’m especially proud of is how far my skills as a mod developer have come since I started this project. I have made a couple of smaller mods before the stardance challenge but never something quite like this. I was even able to upload it to Modrinth where the whole world can see it. (Modrinth is also the easiest way to play my mod) This step of shipping my first project really feels like I’ve achieved something. Thanks in advance to everyone who plays my mod, I hope you’ll enjoy it. If you encounter any bugs (And its not unlikely you do) please report them on my github page. Anyways that’s everything I have to say for now, see you around!", "repo": "https://github.com/JhStudi0/MineAndDine-26.2", "demo": "https://modrinth.com/mod/mine-and-dine"}]...
|
[{"post_id": 74612, "ts": "202 [{"post_id": 74612, "ts": "2026-09-27T19:38:37Z", "hours": 1.8344, "text": "Hi people! This will probably be my last update in this challenge as I have now finally fixed the bugs that were bothering me. The item renderers work now and have their actual colors. Also the progress arrow is now only one arrow and not 100. I’ll be shipping my project now in the hopes that it will get accepted and rated as well as the last time I shipped. By the way this doesn’t mean I’m done with the mod at all, I still think it could use more updates and improvements so my development is by no means finished. It’ll just happen outside of this challenge and maybe not as frequent as it did now. Anyways that’s all from me for now, I’ll hope to see you around!"}, {"post_id": 70876, "ts": "2026-09-19T22:15:59Z", "hours": 4.2711, "text": "Hi people! I’ve been busy the last couple of days and I can now announce that I can finally run my game again in Minecraft 26.2. So the majority of the update is finished! That being said there are some to be fair kind of funny bugs that I still need to fix (and honestly right now I don’t really have a clue how but oh well I guess we’ll have to see) One example is that somehow my progress arrow in my menu does this really weird thing where it just duplicates a couple times and stretches weirdly across my screen. I mean I don’t know what I did but I’m sure there’s a way to fix that. And the other thing is that for some to me unknown reason, my display items are just red. For example on my cutting board. They’re not at all supposed to look like that and the issue is consistent across all my item renders… Yeah honestly no clue why. Also the display doesnt dissapear when you craft and item but I already had that issue with the last version and I managed to fix that so I’m sure that won’t be a big problem. There are some minor bugs that I still have to resolve, like the item models of my blocks not loading in correctly or my item displays in the cooking pot not working but I’m sure that won’t be too difficult. Anyways that’s all from me for today, I’ll see you around!"}, {"post_id": 69362, "ts": "2026-09-16T21:54:54Z", "hours": 1.3753, "text": "Hi people! It’s looking a lot less red now, doesnt it? I’ve been able to update both the pan and the mixer to the newest version, and that leaves only the cutting board and the scraper before I’ll be able to finally run the game again (hopefully) So yeah I feel like I’m close to finally being finished with the update and then I can finally start working on actual new features. I want to add at least a little bit of actually new content before I ship again. Anyways that’s all from me for today, hope to see you around!"}, {"post_id": 68266, "ts": "2026-09-14T20:21:22Z", "hours": 2.2772, "text": "Hi people! My cooking pot is now working! (Hopefully) It took me longer than I expected because I had a lot of “fun” with the codec of the recipes. But thankfully now that that’s working I can recycle a lot of code for my pan and mixer which will hopefully make that part a lot easier. The cutting board and scraper will probably be another story though. But I’m positive that I’ll be able to finish everything by the ned of the week. That’s all from me for today see you around!"}, {"post_id": 67663, "ts": "2026-09-13T20:21:37Z", "hours": 2.4153, "text": "Hi people! My CornGrinderRecipeBuilder works again! That also means that I managed to get my corn grinder as a whole at least to a state where I would assume that it runs again. So yes, I have reworked both the custom block, teh block entity and the recipe handling. And let’s just say I wouldnt exactly say that I had fun… It’s just really annoying trying to find out why i cant refer to a method in another class only to then find out that I forgot that I forgot to rename one type. To apply that to what cost me the most time, I tried to call my tick() method from my block entity in the custom block (so the crafting actually progresses) but I forgot to change the type of my blockEntityType and it referred to the wrong blockentity. It took me forever to catch that problem. Anyways only five more crafting blockentities I have to port over frustrated scream . I just hope it will be easier since i now roughly know what I’m supposed to do. I can only hope now that school starts again for me… Anyways that’s everything from me today, see you around!"}, {"post_id": 66973, "ts": "2026-09-12T23:35:17Z", "hours": 6.5831, "text": "Hi people! I have been quiet for a few days now but trust me I’ve been busy. The port to the newest Minecraft version is almost complete so be on the lookout for that. Since I last posted a devlog I updated all the items, tags and the loottable modifiers. Also I updated the playerJoinEvent that gives you a cookbook when you first join into a world. Now to the places that still need updating: The ModBlocks, but just those with a blockentity with crafting functions. Therefore ModEntites and the custom recipe types and generators are obviously still missing too. And probably the least amount of work will be updating the missing recipes in my ModRecipeProvider class (It auto generates all my recipes) I have already updated the vanilla style recipes so the ones in a crafting table or oven but my custom recipes are still missing. And of course I gotta debug all my code when all that is done. Anyways I hope I’ll finish this update at some time next week so I can finally start adding some new stuff. That being said I don’t think I’ll be able to code as much starting from Monday, because where I live school is starting again so yeah… Anyways that’s all from me today, hope to see you around!"}, {"post_id": 64432, "ts": "2026-09-08T20:09:14Z", "hours": 2.0831, "text": "Hey people! So I decided to start porting my mod to 26.2 because I hate myself or something. This creenshot really captures my current state of mind quite well, and I’m really contemplating why I decided to do this. Well, it’s the next logical step that’s why I did it but it’s till so annoying. But seriously, why does Mojang have to change their code in every update? Anyways, by the time I uploaded this devlog, I was able to port most of the items plus the model generator which roughly leaves the blocks + their entities and screens and everything, the tag datagen, the cookbook pages (I dont want to) and all the recipes. Damn that’s a lot of work why did I sign up for this. Anyways that’s all from me today, see you around!"}, {"post_id": 64233, "ts": "2026-09-08T14:19:01Z", "hours": 8.0308, "text": "Hello people! I’ve been busy again. But before we dive into what I added I want to say thank you to everyone who rated my project so incredibly high. I couldn’t be happier with all the feedback you gave me. I want to address a few things though that I found which I think caused problems for some of the playtesters. I was under the assumption that the Modrinth version detection would work and therefor my mod was playable on all 1.21.X The problem is that the mod is only compatible with 1.21.1. As much as I would like to blame all of that on Modrinth I do have to admit that I could have just playtested it on the other versions. So to everyone who had problems with playing my mod I want to say a sorry and I hope that this fixes your issues. But now to what I’ve been doing the last couple of days: I’m from southern Germany and therefor I wanted to implement the most iconic dish from my region: Käsespätzle. Käsespätzle (something like cheese spaetzle in english) are like the german kind of noodles just baked with cheese. It may sound a but lame but trust me they are delicious. Now implementing them proved to be a bit more challenging than I had thought because I had no cheese whatsoever so I implemented that together with it’s aging mechanic. And furthermore spätzle are made on a special type of scraper which I also had to implement. It inserts the raw spätzle directly into the cooking pot. I’m currently also contemplating where I want to go with this mod. I’m not going to abandon it, that’s for sure but I just don’t know if i want to keep adding stuff in 1.21 or if I should migrate to the newest version of the game (that’s something that a lot of raters wanted) I’ll have to think about that a bit more but until then see you around!"}, {"post_id": 59779, "ts": "2026-09-01T18:30:25Z", "hours": 0.2781, "text": "Hello People! Today I just wanted to share a quick video with you. It shows how you make an apple pie in my mod. I thought it would be a good showcase for some of the mechanics my mod has to offer. And if the video quality isnt so good, I’m sorry but its the only way I could upload the video on this platform :( Anyways see you around!"}, {"post_id": 59078, "ts": "2026-08-31T18:05:33Z", "hours": 6.0342, "text": "Hi people! I’ve been busy the last couple of days and let me tell you I’m so close to shipping my first iteration of the mod. I’m so close to being done I just have a add a last few things and maybe film a few short showcases and then I’ll be ready to ship this thing. Anyways the most interesting additions that I added are a few new item (textures) and finally after weeks of them being untextured, my mixer and grinder have gotten their models. Anyways that’s all from me for today. The next time you’ll hear from me is probably with a ship so stay tuned. See you!"}, {"post_id": 54808, "ts": "2026-08-25T22:58:00Z", "hours": 2.2117, "text": "Hello people! As promised I have finished the cookbook (at least to a point where I’d say it’s complete enough) and I can now give you some sneakpeeks. Sadly I cant show you everything ‘cause I can only attach four pictures but I think I got a good selection. So the first picture you can see is the opening page of the cookbook, so just some general stuff. The second picture shows a segment of the contents list. All the pink things are links to the corresponding pages you can click on to quickly navigate through the book. And lastly you can see an extract from one of the recipes (in this case for an apple pie). I’m somewhat happy with the design but I’m especially happy with the display of the item on the corresponding page. It is defintely a pain to set up (at least the way I did it) but I think it’s well worth it. But I think that’s all from me for today. I’ll be adding the last textures and little things over the next few days so I can finally push out my first ship :) See you around!"}, {"post_id": 54153, "ts": "2026-08-24T23:55:27Z", "hours": 8.1442, "text": "Hello people! I havent posted anything in quite some time but trust me I’ve been busy. The reason why I’ve shown you so little is because there isn’t much that I could show you. I’ve added a lot of background stuff that I just had to add because I’m planning on shipping soon. One sneakpeak I can give you is this (see picture). Any idea what it is? Well I’ll tell you: It’s a cookbook. I think it’s nice for the immersion if you have a cookbook where you can find all the cooking recipes for my mod. I’ll show you more about it in the future once I’m done with it. Until then that’s all from me. Hope to see you around!"}, {"post_id": 50679, "ts": "2026-08-19T23:55:47Z", "hours": 1.1469, "text": "Hello people! You can now enjoy a nice apple pie at your farm because I have been busy. I added eight new items today to aid you on your cooking journey. First I added cinnamon sticks and powder. Right now you get cinnamon sticks from stripping jungle logs on a cutting board. I’m planning on adding actual cinnamon trees in the future but for now I figured jungle wood would be the most fitting since cinnamon is also a tropical plant. With the addtition of cinnamon I finally made it possible to craft pumpkin pie with the mechanics of my mod. That’s also why I added the middle row of items. On the left we have the pumkin slice which you can bake into the grilled pumpkin slice (middle). I’ll probably have to rework this texture in the future cause you can’t really tell the difference :P. And with that item you can then craft the unbaked pumpkin pie which, as the name suggests, can be baked into the minecraft pumpkin pie. The last three items I added are for my apple pie. First up we have apple chunks which you can then use to make the unbaked apple pie which of course can be baked into the finished apple pie. I hope you like my new additions and that’s also everything from me for today. See you around :)"}, {"post_id": 49899, "ts": "2026-08-18T21:16:14Z", "hours": 1.3992, "text": "Hi people! I’ve been doing a lot of background work today for future stuff so sadly I don’t have too much to show you today. I still coded some more things that I can already hsow you that are worth taking the look at. On the left is the new powdered sugar that you get by grinding sugar in the grinder. It is also used to craft the next item, the pie dough in the mixer. On the cutting board oyu can then transform the dough into the pie base. This item will be used later when making different kinds of pies. What I immediately have in mind is of course the oumpkin pie that is already in vanilla minecraft but also the apple pie and the sweet berry pie. Both of these fruits are of course already in the base game so I think the addition of a pie would make sense. I’m also planning on adding more fruit so I can add more pies. Anyways that’s all from me for today, see you around :)"}, {"post_id": 49262, "ts": "2026-08-17T23:15:11Z", "hours": 1.035, "text": "Hello People! I’ve worked a bit more on expanding the cutting board functionality. I’ve added another tool that can be used in the recipes and that’s the rolling pin (first pic, top left) It does exactly what it sounds like it flattens the ingredients, like for example with my tortilla dough (top right). You can see the process in the second picture. And because it would have felt weird to stop the production chain there, I added the function to put the raw torilla into my frying pan where it gets fired into a finished tortilla. I’m really looking forward on adding more recipes with my tortilla but for now I’m kind of missing some more ingredients, like red beans that I want to put in there. Anyways, that’s all I have time for today :( I’ll see you around :)"}, {"post_id": 48545, "ts": "2026-08-16T23:47:04Z", "hours": 1.04, "text": "Hi people! I’ve been putting my new block entities to some good use today. (From left to right) First of all I added the bun dough. You get it by cutting bread dough on the cutting board. Then there is the bun which you obviously get by smelting bun dough in a furnance. Next up is the cookie dough. You get it by mixing the needed ingredients for a cookie in a mixer. And last is the heavy cream. I’ve added the item a little while back but only now found the time and motivation (especially the latter XD) to make the texture and give it a proper crafting recipe. You get it by mixing milk and butter in the mixer. I believe that that is roughly how heavy cream is made in real life, at least after my five minute google research. I’ve also added crafting recipes for some other things but those aren’t anything special really just in a crafting table. Anyways that’s all from me today, see you around :)"}, {"post_id": 47737, "ts": "2026-08-15T21:06:10Z", "hours": 3.92, "text": "Okay damn I didn’t think that this would take me this long But hi people! I finally added a cutting board to my mod! It came up a while back as a suggestion for how to get my chicken legs and let me say I think it was a good suggestion. The cutting board just fits right in. It works pretty much as you may know it from farmer’s delight, where you put an item on it and then click on it with a tool in this case a knife (which I also added today but that was pretty simple) and it drops the outcome. I’m planning on adding onto that mechanic with more tools like a roling pin for example and definitely more recipes. I have to say now that it is in the game I really like it but damn was it annoying to implement. I mean it was my fault (I forgot one function so it didn’t work) but it nontheless send me down an existentiell crisis ‘cause there was no error message whatsoever. Don’t we love that XD Anyways that’s all from me for today, I’ll see you around :)"}, {"post_id": 47170, "ts": "2026-08-14T21:14:02Z", "hours": 0.7811, "text": "Hello people! I didn’t have a lot of time today since I’m currently renovating my new room :) and it takes a lot of time. Anyways I still managed to get something done today and that is working on the immersion of my mod. The cooking pot and pan now emit smoke when they are cooking. That’s all from me today and I’ll hopefully get back to you with more things :) See ya!"}, {"post_id": 46592, "ts": "2026-08-13T22:46:26Z", "hours": 1.5181, "text": "Hi People! Today I added another Block Entity: The mixer. It works similarly to the cooking pot and pan so I was able to copy a lot of that code. I just had to add the rest of the slots and remove the container slot. I’ll use the mixer as a way to make different kinds of doughs later but for now it can just make bread dough, you can bake into bread in a furnance. I’m really looking forward on making pasta dough and then expanding on that. I was kind of thinking of making a noodle press so you can make different kinds of pasta (I’m speaking spagetti, tortelini, etc.) I kind of want it to work like a stone cutter, where you put in the dough and then select one shape of noodle. But those are still thoughts for the future. Anyways that’s all from me today, see you next time :)"}, {"post_id": 46033, "ts": "2026-08-12T23:12:08Z", "hours": 1.6828, "text": "Hello people! I’ve been somewhat productive today: So first of all I added a provisional model for my pan. Its that orange thing next to the cooking pot. Then I’ve also reworked the crafting logic of my pan so it supports recipes that don’t need a bowl or similar, like you can see in the second picture. I feel like for the vanilla meat items that apporach makes the most sense. And I’ve added sunflower seeds, ground sunflower seeds and sunflower oil into my game. For now you just have to believe me, because I dont have any textures made for them just yet XD. In the third screenshot you can see how sunflower seeds are ground into ground sunflower seeds. In the last picture you can see the crafting recipe for sunflower oil fron ground sunflower seeds. It’s very simplified from the way one would actually make sunflower oil but it’s still just minecraft so I think it fits. Anyways that’s everything I have for you today, see you tomorrow!"}, {"post_id": 45458, "ts": "2026-08-11T22:46:37Z", "hours": 2.2208, "text": "Hi people! I’m back from my holidays in London so I can finally continue the project. It’s been a while so I felt motivated and decided to start adding a new block entity: the pan! So far the block entity already has a screen but there are still a few things missing, like the model/texture and a proper crafting system. So far I can only implement recipes with a container like a bowl or plate (since I recycled a lot of code from my cooking pot) but that wouldnt make a lot of sense if I just wanted to get e.g. the standard minecraft cooked beef since it has no container, so yeah, I’ll have to find a way to make that work. I also added a new decoravtive block: the counter. It’s the brick with a layer of polished deepslate at the top. And I’ve found out that it not only works well as a counter but also as the top of a brisk wall. Anyways that’s all I had time for today, see you tomorrow!"}, {"post_id": 40198, "ts": "2026-08-03T16:29:35Z", "hours": 1.3703, "text": "Hi people! This is probably the last devlog I’ll post before I leave for a week to go on vacation to London, unless I get a sudden sweep of motivation or somthing XD. Anyways I got some new stuff for you. So first you see the work of my boredom, my farm that I build. Then I finally added the stove with texture and everything so that’s done now. And to celebrate that I added the carrot soup that can be crafted in the cooking pot. And I’ve added the new garlic crop with seeds and the garlic itself of course. Not really sure yet what I’m going to do with that but better have it than not have it. Besides garlic bread is always an answer, am I right. Anyways that’s all from me for today, see you guys in a week or so :)"}, {"post_id": 39687, "ts": "2026-08-02T20:29:38Z", "hours": 2.6472, "text": "New Crop Alert! Meet the newest crop addition to Mine and Dine: The onion can now be grown. On my way to making my mod survival friendly this really helps quite a lot. The onion can, like the other seeds, be obtained through breaking grass. But to be honest texturing the growth stages of a crop will forever be the most annoying part of the process. I’ve also done some more tweaking, like adding sounds and map colors to my blocks. Plus a I added a German language pack to my mod. Here are some of my favourite (with that I mean wildest) translations: Vanilla Bean Seeds = Vanilleschotensamen Dark Chocolate covered Apple = Apfel mit Zartbitterschokoladenüberzug And the other ones sound kind of weird too, even though German is my mother tongue. Guess it really does’nt make a difference if you read the english version all the time without thinking of the translation XD Anyways have a good day and see you next time."}, {"post_id": 39187, "ts": "2026-08-01T23:47:08Z", "hours": 0.3183, "text": "Didn’t have time for much toady so all i did was finally create a loot table for my block entities and implemented their strength so they wouldn’t be instamine anymore. (I know the dropped cooking pot is a bit big but I’ll change that in the future.) See you next time :)"}, {"post_id": 38495, "ts": "2026-07-31T22:06:56Z", "hours": 0.8517, "text": "Here’s my devlog for toady :) So I played around a bit with my cooking pot and added the function that they only work, when they have a warm block underneath them, like the ones you can see below. What I’m working on next is probably something like a stove so you can have a nice looking block that gives off heat because all the warm blocks look a bit weird and I don’t think it would make sense to count a furnance that isn’t on as a warm block. I also made three new item models to complete them one after another. From left to right we now have the oinigiri, the salmon sushi, the cod sushi and an item model for my plate because i thought it would look better to have a 2d texture instead of the 3d model. Hope to see you in my next devlog :) and feel free to leave suggestions on what I could add to my mod."}, {"post_id": 37633, "ts": "2026-07-30T14:49:09Z", "hours": 3.5092, "text": "Now that the summer holidays have finally begun where I live I can finally show you the working cooking pot. While the model (the thing on the burning furnance) defintely needs a rework I’m pretty happy with the function. The most annoying part defintely was getting the screen (the menu) to run and look correctly. I currently have the crafting recipe for cooking rice and tomato sauce implemented and I’m working on adding the vanilla soup/stews but there are still a few textures missing until I want to show you those. Anyways feel free to leave some ideas on recipes to add in the comments, see you next time :)"}, {"post_id": 36571, "ts": "2026-07-28T19:40:24Z", "hours": 1.5392, "text": "Currently working on giving this little thing a proper function. For now it was just my earliest Block Entity experiement, but now I want to give my cooking pot an actual fuction. I want it to function similarly to Farmer’s Delight’s pot. So the crafting doesnt follow a shape, but is shapeless. I already have rewritten a lot like the custom block and block entity and I’ve written the cooking pot recipe (input). Thankfully I was able to recycle a lot of code from my grinder. The big task now is to rewrite the screen and screen handler and to make the whole thing work as a whole so I can finally craft everything I want :) Can’t wait to finish this! I’d love some suggestions on where to go on from the finished cooking pot. I’ve already thought about adding a frying pan, which would make sense in my head since you don’t cook everything in a pot."}, {"post_id": 35944, "ts": "2026-07-27T18:35:20Z", "hours": 0.7631, "text": "On my road to making my mod survival friendly, I have now added all my seeds to the loot table of short and tall grass.It took longer than I had hoped for because I may or may not have forgotten that silk touch has no effect on grass and I may or may not have tried to implement the silk touch exception regardless.Wasn’t exactly my brightest moments once i figured it out after like 20 minutes of wasting my time."}, {"post_id": 35214, "ts": "2026-07-26T14:30:57Z", "hours": 1.3289, "text": "It’s me again! My grinder now has a custom recipe type. It can now grind sugarcane into sugar as well as wheat into flour. That’s also the reason why I decided to rename it just into grinder. I think it fits the purpose a bit better. I even managed to add a way to get my recipes to get easily generated with the fabric data gen. And I added a grilled corn cib because I wanted to. Now my focus will probably shift towards making what I have survival friendly because for now the mod only work in creative. For the different kinds of seeds I think I’ll just add them to the loot table to grass, like wheat seeds. But I’m always open for better suggestions!"}, {"post_id": 34580, "ts": "2026-07-25T13:03:48Z", "hours": 1.4089, "text": "My Corn Grinder is now a Block Entity! It has an inventory now where you can input your wheat to get flour. Next I will add a custom recipe type so I can add more types of things to grind down. I was thinking about grinding corn seeds into corn flour for example so in the future I could add nachos or taco shells. I’d be open for more suggestions on what grinding recipes to add."}, {"post_id": 34344, "ts": "2026-07-24T23:15:12Z", "hours": 1.5892, "text": "So I didnt code a lot today that I can show you because it’s all still unfinished and doesnt work but I have other exciting news: My mod got approved on Modrinth so you can download it through the Modrinth Website now! Please keep in mind that I have a version from a few days back on there so it’s not perfectly up to date but it’s still a playable version (in creative, though I’m working on making it survival friendly) Here’s a screenshot of my mod’s page:"}, {"post_id": 33640, "ts": "2026-07-23T18:31:51Z", "hours": 0.6331, "text": "Hi people! Didn’t have time for much today, so all I did was restucture my Item Groups a bit to have them in a logical order. So now there are Seeds, Ingredients, finished Dishes and Utensils."}, {"post_id": 33102, "ts": "2026-07-22T18:31:45Z", "hours": 1.7647, "text": "I mentioned it in an earlier devlog and now here they are: the plates! They can be placed down to display you’re crafted dishes (and other items). The texture is still to be made properly."}, {"post_id": 32577, "ts": "2026-07-21T20:56:34Z", "hours": 0.3733, "text": "Didn’t have time for much so I just added two new items: chicken legs and onigiris. The latter already has a crafting recipe. For the chicken leg I still have to figure out how I want it to be obtainable."}, {"post_id": 31950, "ts": "2026-07-20T19:25:31Z", "hours": 2.7164, "text": "Hi guys, here’s my devlog for today. So down below you can see a few new items, some of which I havent textured yet (shame on me). (from left to right) A bowl of rice, yeast, fermented yeast, dough (which you can bake into bread) and sushi with cod and salmon. On the left you can also see that I experimented a bit with block entities and I think i will turn this conept into some sort of display plate that would also be used for crafting dishes in the future. Anyways hope you liked my little devlog for today, see you for the next one :)"}, {"post_id": 31441, "ts": "2026-07-19T20:12:44Z", "hours": 1.1936, "text": "Alright fixed it. Thankfully the mods running again and I even got the alpha-1.1 version up on modrinth for approval. I’ll keep you updated once its live."}, {"post_id": 31364, "ts": "2026-07-19T18:07:29Z", "hours": 2.9633, "text": "Currently fixing my modpack :( I tried to make it into a git repo and it broke and now I have to do it all again. Thankfully I can just copy over the code but it’s still really annoying. I’ll keep you updated. In the meantime enjoy a picture of an older 3d model of mine."}, {"post_id": 30779, "ts": "2026-07-18T17:32:00Z", "hours": 0.6333, "text": "It might not look like it but this is a custom block I programmed. It’s a grinder used for grinding down things like wheat into flour. The model’s obviously not made yet but I’m definitely going to do it at some point."}, {"post_id": 30726, "ts": "2026-07-18T15:28:41Z", "hours": 0.3822, "text": "Hi people this is the first devlog on my Minecraft cooking mod in which I aim to overhaul the cooking system in minecraft. attached are some screenshots on what I’ve been working on so far. I’ve added a couple new food items and there will be many more to come."}]...
|
Title: Mine and Dine - 26.2 Minecraft Mod by @RevC Title: Mine and Dine - 26.2 Minecraft Mod by @RevComInteractives | Stardance
Devlogs:
Hi people this is the first devlog on my Minecraft cooking mod in which I aim to overhaul the cooking system in minecraft. attached are some screenshots on what I’ve been working on so far. I’ve added a couple new food items and there will be many more to come.
It might not look like it but this is a custom block I programmed. It’s a grinder used for grinding down things like wheat into flour. The model’s obviously not made yet but I’m definitely going to do it at some point.
Currently fixing my modpack :( I tried to make it into a git repo and it broke and now I have to do it all again. Thankfully I can just copy over the code but it’s still really annoying. I’ll keep you updated. In the meantime enjoy a picture of an older 3d model of mine.
Alright fixed it. Thankfully the mods running again and I even got the alpha-1.1 version up on modrinth for approval. I’ll keep you updated once its live.
Hi guys, here’s my devlog for today. So down below you can see a few new items, some of which I havent textured yet (shame on me). (from left to right) A bowl of rice, yeast, fermented yeast, dough (which you can bake into bread) and sushi with cod and salmon. On the left you can also see that I experimented a bit with block entities and I think i will turn this conept into some sort of display plate that would also be used for crafting dishes in the future. Anyways hope you liked my little devlog for today, see you for the next one :)
Didn’t have time for much so I just added two new items: chicken legs and onigiris. The latter already has a crafting recipe. For the chicken leg I still have to figure out how I want it to be obtainable.
I mentioned it in an earlier devlog and now here they are: the plates! They can be placed down to display you’re crafted dishes (and other items). The texture is still to be made properly.
Hi people! Didn’t have time for much today, so all I did was restucture my Item Groups a bit to have them in a logical order. So now there are Seeds, Ingredients, finished Dishes and Utensils.
So I didnt code a lot today that I can show you because it’s all still unfinished and doesnt work but I have other exciting news: My mod got approved on Modrinth so you can download it through the Modrinth Website now! Please keep in mind that I have a version from a few days back on there so it’s not perfectly up to date but it’s still a playable version (in creative, though I’m working on making it survival friendly) Here’s a screenshot of my mod’s page:
My Corn Grinder is now a Block Entity! It has an inventory now where you can input your wheat to get flour. Next I will add a custom recipe type so I can add more types of things to grind down. I was thinking about grinding corn seeds into corn flour for example so in the future I could add nachos or taco shells. I’d be open for more suggestions on what grinding recipes to add.
It’s me again! My grinder now has a custom recipe type. It can now grind sugarcane into sugar as well as wheat into flour. That’s also the reason why I decided to rename it just into grinder. I think it fits the purpose a bit better. I even managed to add a way to get my recipes to get easily generated with the fabric data gen. And I added a grilled corn cib because I wanted to. Now my focus will probably shift towards making what I have survival friendly because for now the mod only work in creative. For the different kinds of seeds I think I’ll just add them to the loot table to grass, like wheat seeds. But I’m always open for better suggestions!
On my road to making my mod survival friendly, I have now added all my seeds to the loot table of short and tall grass.It took longer than I had hoped for because I may or may not have forgotten that silk touch has no effect on grass and I may or may not have tried to implement the silk touch exception regardless.Wasn’t exactly my brightest moments once i figured it out after like 20 minutes of wasting my time.
Currently working on giving this little thing a proper function. For now it was just my earliest Block Entity experiement, but now I want to give my cooking pot an actual fuction. I want it to function similarly to Farmer’s Delight’s pot. So the crafting doesnt follow a shape, but is shapeless. I already have rewritten a lot like the custom block and block entity and I’ve written the cooking pot recipe (input). Thankfully I was able to recycle a lot of code from my grinder. The big task now is to rewrite the screen and screen handler and to make the whole thing work as a whole so I can finally craft everything I want :) Can’t wait to finish this! I’d love some suggestions on where to go on from the finished cooking pot. I’ve already thought about adding a frying pan, which would make sense in my head since you don’t cook everything in a pot.
Now that the summer holidays have finally begun where I live I can finally show you the working cooking pot. While the model (the thing on the burning furnance) defintely needs a rework I’m pretty happy with the function. The most annoying part defintely was getting the screen (the menu) to run and look correctly. I currently have the crafting recipe for cooking rice and tomato sauce implemented and I’m working on adding the vanilla soup/stews but there are still a few textures missing until I want to show you those. Anyways feel free to leave some ideas on recipes to add in the comments, see you next time :)
Here’s my devlog for toady :) So I played around a bit with my cooking pot and added the function that they only work, when they have a warm block underneath them, like the ones you can see below. What I’m working on next is probably something like a stove so you can have a nice looking block that gives off heat because all the warm blocks look a bit weird and I don’t think it would make sense to count a furnance that isn’t on as a warm block. I also made three new item models to complete them one after another. From left to right we now have the oinigiri, the salmon sushi, the cod sushi and an item model for my plate because i thought it would look better to have a 2d texture instead of the 3d model. Hope to see you in my next devlog :) and feel free to leave suggestions on what I could add to my mod.
Didn’t have time for much toady so all i did was finally create a loot table for my block entities and implemented their strength so they wouldn’t be instamine anymore. (I know the dropped cooking pot is a bit big but I’ll change that in the future.) See you next time :)
New Crop Alert! Meet the newest crop addition to Mine and Dine: The onion can now be grown. On my way to making my mod survival friendly this really helps quite a lot. The onion can, like the other seeds, be obtained through breaking grass. But to be honest texturing the growth stages of a crop will forever be the most annoying part of the process. I’ve also done some more tweaking, like adding sounds and map colors to my blocks. Plus a I added a German language pack to my mod. Here are some of my favourite (with that I mean wildest) translations: Vanilla Bean Seeds = Vanilleschotensamen Dark Chocolate covered Apple = Apfel mit Zartbitterschokoladenüberzug And the other ones sound kind of weird too, even though German is my mother tongue. Guess it really does’nt make a difference if you read the english version all the time without thinking of the translation XD Anyways have a good day and see you next time.
Hi people! This is probably the last devlog I’ll post before I leave for a week to go on vacation to London, unless I get a sudden sweep of motivation or somthing XD. Anyways I got some new stuff for you. So first you see the work of my boredom, my farm that I build. Then I finally added the stove with texture and everything so that’s done now. And to celebrate that I added the carrot soup that can be crafted in the cooking pot. And I’ve added the new garlic crop with seeds and the garlic itself of course. Not really sure yet what I’m going to do with that but better have it than not have it. Besides garlic bread is always an answer, am I right. Anyways that’s all from me for today, see you guys in a week or so :)
Hi people! I’m back from my holidays in London so I can finally continue the project. It’s been a while so I felt motivated and decided to start adding a new block entity: the pan! So far the block entity already has a screen but there are still a few things missing, like the model/texture and a proper crafting system. So far I can only implement recipes with a container like a bowl or plate (since I recycled a lot of code from my cooking pot) but that wouldnt make a lot of sense if I just wanted to get e.g. the standard minecraft cooked beef since it has no container, so yeah, I’ll have to find a way to make that work. I also added a new decoravtive block: the counter. It’s the brick with a layer of polished deepslate at the top. And I’ve found out that it not only works well as a counter but also as the top of a brisk wall. Anyways that’s all I had time for today, see you tomorrow!
Hello people! I’ve been somewhat productive today: So first of all I added a provisional model for my pan. Its that orange thing next to the cooking pot. Then I’ve also reworked the crafting logic of my pan so it supports recipes that don’t need a bowl or similar, like you can see in the second picture. I feel like for the vanilla meat items that apporach makes the most sense. And I’ve added sunflower seeds, ground sunflower seeds and sunflower oil into my game. For now you just have to believe me, because I dont have any textures made for them just yet XD. In the third screenshot you can see how sunflower seeds are ground into ground sunflower seeds. In the last picture you can see the crafting recipe for sunflower oil fron ground sunflower seeds. It’s very simplified from the way one would actually make sunflower oil but it’s still just minecraft so I think it fits. Anyways that’s everything I have for you today, see you tomorrow!
Hi People! Today I added another Block Entity: The mixer. It works similarly to the cooking pot and pan so I was able to copy a lot of that code. I just had to add the rest of the slots and remove the container slot. I’ll use the mixer as a way to make different kinds of doughs later but for now it can just make bread dough, you can bake into bread in a furnance. I’m really looking forward on making pasta dough and then expanding on that. I was kind of thinking of making a noodle press so you can make different kinds of pasta (I’m speaking spagetti, tortelini, etc.) I kind of want it to work like a stone cutter, where you put in the dough and then select one shape of noodle. But those are still thoughts for the future. Anyways that’s all from me today, see you next time :)
Hello people! I didn’t have a lot of time today since I’m currently renovating my new room :) and it takes a lot of time. Anyways I still managed to get something done today and that is working on the immersion of my mod. The cooking pot and pan now emit smoke when they are cooking. That’s all from me today and I’ll hopefully get back to you with more things :) See ya!
Okay damn I didn’t think that this would take me this long But hi people! I finally added a cutting board to my mod! It came up a while back as a suggestion for how to get my chicken legs and let me say I think it was a good suggestion. The cutting board just fits right in. It works pretty much as you may know it from farmer’s delight, where you put an item on it and then click on it with a tool in this case a knife (which I also added today but that was pretty simple) and it drops the outcome. I’m planning on adding onto that mechanic with more tools like a roling pin for example and definitely more recipes. I have to say now that it is in the game I really like it but damn was it annoying to implement. I mean it was my fault (I forgot one function so it didn’t work) but it nontheless send me down an existentiell crisis ‘cause there was no error message whatsoever. Don’t we love that XD Anyways that’s all from me for today, I’ll see you around :)
Hi people! I’ve been putting my new block entities to some good use today. (From left to right) First of all I added the bun dough. You get it by cutting bread dough on the cutting board. Then there is the bun which you obviously get by smelting bun dough in a furnance. Next up is the cookie dough. You get it by mixing the needed ingredients for a cookie in a mixer. And last is the heavy cream. I’ve added the item a little while back but only now found the time and motivation (especially the latter XD) to make the texture and give it a proper crafting recipe. You get it by mixing milk and butter in the mixer. I believe that that is roughly how heavy cream is made in real life, at least after my five minute google research. I’ve also added crafting recipes for some other things but those aren’t anything special really just in a crafting table. Anyways that’s all from me today, see you around :)
Hello People! I’ve worked a bit more on expanding the cutting board functionality. I’ve added another tool that can be used in the recipes and that’s the rolling pin (first pic, top left) It does exactly what it sounds like it flattens the ingredients, like for example with my tortilla dough (top right). You can see the process in the second picture. And because it would have felt weird to stop the production chain there, I added the function to put the raw torilla into my frying pan where it gets fired into a finished tortilla. I’m really looking forward on adding more recipes with my tortilla but for now I’m kind of missing some more ingredients, like red beans that I want to put in there. Anyways, that’s all I have time for today :( I’ll see you around :)
Hi people! I’ve been doing a lot of background work today for future stuff so sadly I don’t have too much to show you today. I still coded some more things that I can already hsow you that are worth taking the look at. On the left is the new powdered sugar that you get by grinding sugar in the grinder. It is also used to craft the next item, the pie dough in the mixer. On the cutting board oyu can then transform the dough into the pie base. This item will be used later when making different kinds of pies. What I immediately have in mind is of course the oumpkin pie that is already in vanilla minecraft but also the apple pie and the sweet berry pie. Both of these fruits are of course already in the base game so I think the addition of a pie would make sense. I’m also planning on adding more fruit so I can add more pies. Anyways that’s all from me for today, see you around :)
Hello people! You can now enjoy a nice apple pie at your farm because I have been busy. I added eight new items today to aid you on your cooking journey. First I added cinnamon sticks and powder. Right now you get cinnamon sticks from stripping jungle logs on a cutting board. I’m planning on adding actual cinnamon trees in the future but for now I figured jungle wood would be the most fitting since cinnamon is also a tropical plant. With the addtition of cinnamon I finally made it possible to craft pumpkin pie with the mechanics of my mod. That’s also why I added the middle row of items. On the left we have the pumkin slice which you can bake into the grilled pumpkin slice (middle). I’ll probably have to rework this texture in the future cause you can’t really tell the difference :P. And with that item you can then craft the unbaked pumpkin pie which, as the name suggests, can be baked into the minecraft pumpkin pie. The last three items I added are for my apple pie. First up we have apple chunks which you can then use to make the unbaked apple pie which of course can be baked into the finished apple pie. I hope you like my new additions and that’s also everything from me for today. See you around :)
Hello people! I havent posted anything in quite some time but trust me I’ve been busy. The reason why I’ve shown you so little is because there isn’t much that I could show you. I’ve added a lot of background stuff that I just had to add because I’m planning on shipping soon. One sneakpeak I can give you is this (see picture). Any idea what it is? Well I’ll tell you: It’s a cookbook. I think it’s nice for the immersion if you have a cookbook where you can find all the cooking recipes for my mod. I’ll show you more about it in the future once I’m done with it. Until then that’s all from me. Hope to see you around!
Hello people! As promised I have finished the cookbook (at least to a point where I’d say it’s complete enough) and I can now give you some sneakpeeks. Sadly I cant show you everything ‘cause I can only attach four pictures but I think I got a good selection. So the first picture you can see is the opening page of the cookbook, so just some general stuff. The second picture shows a segment of the contents list. All the pink things are links to the corresponding pages you can click on to quickly navigate through the book. And lastly you can see an extract from one of the recipes (in this case for an apple pie). I’m somewhat happy with the design but I’m especially happy with the display of the item on the corresponding page. It is defintely a pain to set up (at least the way I did it) but I think it’s well worth it. But I think that’s all from me for today. I’ll be adding the last textures and little things over the next few days so I can finally push out my first ship :) See you around!
Hi people! I’ve been busy the last couple of days and let me tell you I’m so close to shipping my first iteration of the mod. I’m so close to being done I just have a add a last few things and maybe film a few short showcases and then I’ll be ready to ship this thing. Anyways the most interesting additions that I added are a few new item (textures) and finally after weeks of them being untextured, my mixer and grinder have gotten their models. Anyways that’s all from me for today. The next time you’ll hear from me is probably with a ship so stay tuned. See you!
Hello People! Today I just wanted to share a quick video with you. It shows how you make an apple pie in my mod. I thought it would be a good showcase for some of the mechanics my mod has to offer. And if the video quality isnt so good, I’m sorry but its the only way I could upload the video on this platform :( Anyways see you around!
Hello people! I’ve been busy again. But before we dive into what I added I want to say thank you to everyone who rated my project so incredibly high. I couldn’t be happier with all the feedback you gave me. I want to address a few things though that I found which I think caused problems for some of the playtesters. I was under the assumption that the Modrinth version detection would work and therefor my mod was playable on all 1.21.X The problem is that the mod is only compatible with 1.21.1. As much as I would like to blame all of that on Modrinth I do have to admit that I could have just playtested it on the other versions. So to everyone who had problems with playing my mod I want to say a sorry and I hope that this fixes your issues. But now to what I’ve been doing the last couple of days: I’m from southern Germany and therefor I wanted to implement the most iconic dish from my region: Käsespätzle. Käsespätzle (something like cheese spaetzle in english) are like the german kind of noodles just baked with cheese. It may sound a but lame but trust me they are delicious. Now implementing them proved to be a bit more challenging than I had thought because I had no cheese whatsoever so I implemented that together with it’s aging mechanic. And furthermore spätzle are made on a special type of scraper which I also had to implement. It inserts the raw spätzle directly into the cooking pot. I’m currently also contemplating where I want to go with this mod. I’m not going to abandon it, that’s for sure but I just don’t know if i want to keep adding stuff in 1.21 or if I should migrate to the newest version of the game (that’s something that a lot of raters wanted) I’ll have to think about that a bit more but until then see you around!
Hey people! So I decided to start porting my mod to 26.2 because I hate myself or something. This creenshot really captures my current state of mind quite well, and I’m really contemplating why I decided to do this. Well, it’s the next logical step that’s why I did it but it’s till so annoying. But seriously, why does Mojang have to change their code in every update? Anyways, by the time I uploaded this devlog, I was able to port most of the items plus the model generator which roughly leaves the blocks + their entities and screens and everything, the tag datagen, the cookbook pages (I dont want to) and all the recipes. Damn that’s a lot of work why did I sign up for this. Anyways that’s all from me today, see you around!
Hi people! I have been quiet for a few days now but trust me I’ve been busy. The port to the newest Minecraft version is almost complete so be on the lookout for that. Since I last posted a devlog I updated all the items, tags and the loottable modifiers. Also I updated the playerJoinEvent that gives you a cookbook when you first join into a world. Now to the places that still need updating: The ModBlocks, but just those with a blockentity with crafting functions. Therefore ModEntites and the custom recipe types and generators are obviously still missing too. And probably the least amount of work will be updating the missing recipes in my ModRecipeProvider class (It auto generates all my recipes) I have already updated the vanilla style recipes so the ones in a crafting table or oven but my custom recipes are still missing. And of course I gotta debug all my code when all that is done. Anyways I hope I’ll finish this update at some time next week so I can finally start adding some new stuff. That being said I don’t think I’ll be able to code as much starting from Monday, because where I live school is starting again so yeah… Anyways that’s all from me today, hope to see you around!
Hi people! My CornGrinderRecipeBuilder works again! That also means that I managed to get my corn grinder as a whole at least to a state where I would assume that it runs again. So yes, I have reworked both the custom block, teh block entity and the recipe handling. And let’s just say I wouldnt exactly say that I had fun… It’s just really annoying trying to find out why i cant refer to a method in another class only to then find out that I forgot that I forgot to rename one type. To apply that to what cost me the most time, I tried to call my tick() method from my block entity in the custom block (so the crafting actually progresses) but I forgot to change the type of my blockEntityType and it referred to the wrong blockentity. It took me forever to catch that problem. Anyways only five more crafting blockentities I have to port over frustrated scream . I just hope it will be easier since i now roughly know what I’m supposed to do. I can only hope now that school starts again for me… Anyways that’s everything from me today, see you around!
Hi people! My cooking pot is now working! (Hopefully) It took me longer than I expected because I had a lot of “fun” with the codec of the recipes. But thankfully now that that’s working I can recycle a lot of code for my pan and mixer which will hopefully make that part a lot easier. The cutting board and scraper will probably be another story though. But I’m positive that I’ll be able to finish everything by the ned of the week. That’s all from me for today see you around!
Hi people! It’s looking a lot less red now, doesnt it? I’ve been able to update both the pan and the mixer to the newest version, and that leaves only the cutting board and the scraper before I’ll be able to finally run the game again (hopefully) So yeah I feel like I’m close to finally being finished with the update and then I can finally start working on actual new features. I want to add at least a little bit of actually new content before I ship again. Anyways that’s all from me for today, hope to see you around!
Hi people! I’ve been busy the last couple of days and I can now announce that I can finally run my game again in Minecraft 26.2. So the majority of the update is finished! That being said there are some to be fair kind of funny bugs that I still need to fix (and honestly right now I don’t really have a clue how but oh well I guess we’ll have to see) One example is that somehow my progress arrow in my menu does this really weird thing where it just duplicates a couple times and stretches weirdly across my screen. I mean I don’t know what I did but I’m sure there’s a way to fix that. And the other thing is that for some to me unknown reason, my display items are just red. For example on my cutting board. They’re not at all supposed to look like that and the issue is consistent across all my item renders… Yeah honestly no clue why. Also the display doesnt dissapear when you craft and item but I already had that issue with the last version and I managed to fix that so I’m sure that won’t be a big problem. There are some minor bugs that I still have to resolve, like the item models of my blocks not loading in correctly or my item displays in the cooking pot not working but I’m sure that won’t be too difficult. Anyways that’s all from me for today, I’ll see you around!
Hi people! This will probably be my last update in this challenge as I have now finally fixed the bugs that were bothering me. The item renderers work now and have their actual colors. Also the progress arrow is now only one arrow and not 100. I’ll be shipping my project now in the hopes that it will get accepted and rated as well as the last time I shipped. By the way this doesn’t mean I’m done with the mod at all, I still think it could use more updates and improvements so my development is by no means finished. It’ll just happen outside of this challenge and maybe not as frequent as it did now. Anyways that’s all from me for now, I’ll hope to see you around!
Ships:
Mine & Dine is a Minecraft mod that aims to overhaul the minecraft cooking system, because I always thought that it was a little bit shallow and lacked depth. Therefore I have set the goal for myself to transform the cooking system into something I always wanted. My mod adds five new blockentities and over 60 new items that do exactly that. (You can find a deeper explanation of the contents in my ReadMe) This mod is by far not finished but I think it’s gotten to a point where I would say it is playable and enjoyable, that’s why I decided to ship it now. What I’m especially proud of is how far my skills as a mod developer have come since I started this project. I have made a couple of smaller mods before the stardance challenge but never something quite like this. I was even able to upload it to Modrinth where the whole world can see it. (Modrinth is also the easiest way to play my mod) This step of shipping my first project really feels like I’ve achieved something. Thanks in advance to everyone who plays my mod, I hope you’ll enjoy it. If you encounter any bugs (And its not unlikely you do) please report them on my github page. Anyways that’s everything I have to say for now, see you around!
Mine & Dine is a Minecraft mod that aims to overhaul the minecraft cooking system, because I always thought that it was a little bit shallow and lacked depth. Therefore I have set the goal for myself to transform the cooking system into something I always wanted. My mod adds six new blockentities and over 70 new items that do exactly that. (You can find a deeper explanation of the contents in my ReadMe) This mod is by far not finished but I think it’s gotten to a point where I would say it is playable and enjoyable, that’s why I decided to ship it now. Especially now that I’ve successfully ported it to version 26.2. What I’m especially proud of is how far my skills as a mod developer have come since I started this project. I have made a couple of smaller mods before the stardance challenge but never something quite like this. I was even able to upload it to Modrinth where the whole world can see it. (Modrinth is also the easiest way to play my mod btw) This step of shipping my final project for this challenge really feels like I’ve achieved something. Thanks in advance to everyone who plays my mod, I hope you’ll enjoy it. If you encounter any bugs (And its not unlikely you do) please report them on my github page. Anyways that’s everything I have to say for now, see you around!...
|
1792993784.461345
|
1793080184.461345
|
|
37722
|
asteroid hunter by @layerblayerplus | Stardance
|
layerblayerplus
|
1
|
86.0
|
837
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-25T19:43:08Z", "hours": 86.0, "multiplier": 9.79, "payout": 837, "blessing": "neutral", "text": "this is my game asteriod hunter a game where you shoot down asteriods to gain materials to make your own space base this ship is part 1 of the game this is also the first game I ever made (mobile mode doesn’t work right now that will be fixed in ship 2)", "repo": "https://github.com/layerblayerplus-lgtm/asteriod-hunter", "demo": "https://microstudio.io/layerbylayer/astreroidhunter3/YD5AWCT2/"}]...
|
[{"post_id": 73721, "ts": "202 [{"post_id": 73721, "ts": "2026-09-25T19:37:54Z", "hours": 0.7925, "text": "I did some final game testing also mobile mode is not finished yet I will do that in next ship so only test on computors pls"}, {"post_id": 73466, "ts": "2026-09-25T04:57:32Z", "hours": 1.0242, "text": "i fixed some bug and made mobile control more straight forward -game link pls play test and give feedback https://microstudio.io/layerbylayer/astreroidhunter3/YD5AWCT2/"}, {"post_id": 72980, "ts": "2026-09-24T04:49:33Z", "hours": 2.4158, "text": "I worked on adding a health bar effect to the asteriod which will slowly crack after each hit"}, {"post_id": 71952, "ts": "2026-09-21T20:46:18Z", "hours": 1.0011, "text": "I did some final gametesting and added end/win condition- get 10 methane - if you do this then part 1 of the game is over"}, {"post_id": 69793, "ts": "2026-09-17T20:00:50Z", "hours": 0.9675, "text": "i worked on making the github repo for the game"}, {"post_id": 68965, "ts": "2026-09-16T03:57:58Z", "hours": 2.1344, "text": "THE MOBILE UPDATE I made the game work on mobile devices when the game starts you can choose mobile mode if you are on a phone or iPad ect In this mode every input has a button on the screen the buttons I have made so far left (turn turret left) right (turn turret right) space (shoots laser) shop button(goes into shop mode) resume button(goes out of shop mode)"}, {"post_id": 68446, "ts": "2026-09-15T04:16:14Z", "hours": 1.5678, "text": "I decided to fix the bug that caused asteroids that are destroyed from not dropping materials I did that because it was becoming to common Made every hit make sound but made last hit make bigger sound -Made asteroid hitting ground sound better"}, {"post_id": 67856, "ts": "2026-09-14T04:15:04Z", "hours": 1.3503, "text": "RANDOM FIXES I added the repair system for the Sabatier reactor because I forgot to do that previously Resized click boxes for buying upgrades to fit the text better BUGS - Fixed problem where clicking on empty screen in shop mode could cause accidental upgrades purchases Fixed a major bug where asteroids would disappear mid-air sometimes after being shot down. Now it always show a destruction animation, but I kept the part of the bug which made the asteroid have a small chance to not give you any materials as a new feature"}, {"post_id": 67072, "ts": "2026-09-13T03:44:00Z", "hours": 1.8433, "text": "BUGS I fixed A bug where you couldn’t buy upgrades anymore this was caused by a variable for tutorial mode never turning off as I reset the games values before turning tutorial mode off I also fixed many minor bugs caused by the tutorial update I added two new sounds The sound the laser in the carbon burner upgrade The sound of combustion from the Sabatier reactor I also fixed the sound that the side lasers make when charging the megalaserbeem I also made two small sprites the sprites were added to the starting Ui so the (tutorial) and (click here to start) buttons look nice instead of just being some floating text"}, {"post_id": 66360, "ts": "2026-09-12T04:46:07Z", "hours": 2.2178, "text": "TUTORIAL UPDATE (not just this devlog but the previous tutorial devlogs too) tutorial I made a tutorial to show the player how to play the game in an interactive manner the player learns how to: shoot laser beems aim the turret buy upgrades use upgrade buttons fix upgrades manage power usage BUGS (that I remember 😭) I had a bug where I was using a wait command for having text appear after a an amount of time but it was buggy so I used a time variable to track time globaly to stop it from glitching out."}, {"post_id": 65779, "ts": "2026-09-11T04:39:51Z", "hours": 1.1006, "text": "I worked on making the tutorial actually work I mean at least like a quarter sorry for short devlogs"}, {"post_id": 65181, "ts": "2026-09-10T03:56:49Z", "hours": 1.3131, "text": "I was working on making a tutorial for the game to make is it simpler for new players to figure out how to play"}, {"post_id": 64606, "ts": "2026-09-09T03:48:28Z", "hours": 1.4183, "text": "I edited the sound’s code - I added the mega beem explosion sound - I added a sound for the mega beem charging Fixed how sounds were played"}, {"post_id": 64070, "ts": "2026-09-08T06:45:07Z", "hours": 0.3539, "text": "added asteriod explosion sounds"}, {"post_id": 63395, "ts": "2026-09-07T06:37:20Z", "hours": 1.0186, "text": "LET THERE BE SOUND UPDATE 1 I added some sound effects to the game I sourced the sounds from mixkit the sound effects I added so far are: the normal laser beem sound the charged sidelaser beem sound a bubbling sound for the electrolysis system. I also added a cool background soundtrack"}, {"post_id": 62721, "ts": "2026-09-06T06:54:58Z", "hours": 1.5864, "text": "POWER DISPLAY UPDATE I Added a display of how much power you are losing or gaining I coded it to be red when losing power and green when gaining power It helps the player be aware of the amount of power they are using game testing/fixes I did an ~ hour of just playing the game trying to get as far as I could get but did not track the time because I did no coding during the time but I used this knowledge to fix all of these following things SOLAR PANEL I Fixed bug which caused that after first damage caused to solar panel Solar Efficiency never goes back to full capacity as I forgot to make the code assign the value of S,E to full if solar health is full I accidently just assigned it at the beginning of the code but not again. I found this out in game testing when my power kept on running out even at full solar health IRON I Made iron more common as I orignally did not account for the constant need to repair your upgrades. COOLING SYSTEM I made the cooling system take al lot less power. I did this to make it more useful as when I was game testing I found it kinda of pointless to use"}, {"post_id": 62005, "ts": "2026-09-05T06:37:20Z", "hours": 1.7881, "text": "game test update I did Game testing for 30 min fixes I Recentred asteroid sprites I resized asteriod hitboxes Increased starting power sabatier damage system I added the Sabatier reactor to the damage system and made sprites for it’s diffrent damage states I also made attached pipes get destroyed with the sabatier reactor"}, {"post_id": 61344, "ts": "2026-09-04T06:50:17Z", "hours": 1.6422, "text": "no update methane tank and pipe I added the shop text and click sensing for the methane tank and pipe fixes Fixed the restart option from the end screen the bug was caused because the gamend variable was assigned true 1 second after power was below 1 so even after it reset the game, gamend would go back to true"}, {"post_id": 60662, "ts": "2026-09-03T05:07:49Z", "hours": 1.6744, "text": "THE METHANE UPDATE Added methane tank added a methane tank below the sabatier reactor to store the methane from the reaction I Added a pipe to sent methane from sabatier reactor to the methane tank Added gas fill animation to methane tank Fixes I fixed the buttons so they dont work in shop mode I Fixed a glitch where all asteriods were carbonaceous. It turns out I was asigning the asteriod varible constantly to its starting value which is carbonaceous I Made carbon more abundant and Made water less abundant I also added text to help the user know how to activate some upgrades sorry I couldn’t get video today"}, {"post_id": 60045, "ts": "2026-09-02T04:45:08Z", "hours": 1.7844, "text": "THE GAME OVER UPDATE The game over screen if you run out of power and have no solar panel a game over screen pops up. It stops the game and lets you restart fixes I added a active cursor display on the side of the cursor to make the switch between buy mode and fix mode flow better I also made the amount of time you have to hold down the mouse to switch cursor modes half as long video the video shows the new game over animation and the active cursor display"}, {"post_id": 59394, "ts": "2026-09-01T05:49:14Z", "hours": 1.7128, "text": "no update today :( animation for the sabaitier reactor I made an animation of fire/ combustion in the sabiter reactor by making a cycle of four sprites bugs/fixes fixed a bug which would drain half of your power when you just started I also made the normal laser beem take less power video the video shows the new sabaiter animation"}, {"post_id": 58651, "ts": "2026-08-31T04:24:01Z", "hours": 2.1347, "text": "BUTTON UPDATE Made buttons the button works by toggling from off to on if the mouse clicks the button sprite on the upgrade ( the same sprite prevouisly used by the activity indicator ) all upgrades with buttons listed the carbon burner clicking the button toggles laser on and off the sabatier reactor clicking the button toggles heater on and off the electrolysis system clicking the button toggles wire in water storage on and off video the video shows all of the buttons being used to turn on the upgrades to eventually make methane"}, {"post_id": 57910, "ts": "2026-08-30T07:34:23Z", "hours": 1.84, "text": "THE minor CHANGES UPDATE Added on/off sensing to two upgrades one colored indicator on each upgrade shows you if the upgrade is currently active I fixed the start screen now the game starts and the start screen disapears if you click the screen instead of at the end of a preset time Added heater to sabatier heats up on side so sabatier reactor can reach right temp and also just looks cool"}, {"post_id": 57105, "ts": "2026-08-29T06:29:24Z", "hours": 3.4183, "text": "SABATIER REACTOR UPDATE added sabatier reactor I made a sabatier reactor sprite and added the shop text for it I also added two new pipes one to feed hydrogen to the reactor the other to feed co2 to the reactor chemistry time the sabatier recation turns 1X co2 and 2X h2 ⇢ 1X ch4(methane) and 2X h2o I added the code to do the sabatier reaction in game Bugs Fixed side lasers so they would only fire when fully charged and organized the code a bit for them"}, {"post_id": 52121, "ts": "2026-08-22T06:40:26Z", "hours": 2.5372, "text": "THE MEGA BEEM UPDATE I Added A Side Lasers Upgrade the side lasers give the player the ability to shoot larger laser beems that do a lot more damage, one shotting most asteriods. I also animated the side lasers to have an open and closed position aswell as having a copper plate on main turret that visually heats up to show the laser powering up. Fixing Fix Mode (ironic) I made the wrench only be able to fix but not buy and made the normal cursor just buy upgrades but not fix. I also stopped normal cursor from buying new upgrade while the old upgrade is present."}, {"post_id": 51468, "ts": "2026-08-21T06:10:08Z", "hours": 2.5592, "text": "Made elctrolysis and laser not work in shop “mode” I did this so the player couldn’t just stay in the shop and make new resources eg oxygen, co2 ect. Now the player has to do it while defending the base from asteriods Added fix mode now if you hold down your cursor in shop mode it will toggle between the regular cursor and a wrench. When the wrench is active you can click on damaged upgrades to repair them Organized code I organized my code into sections and added notes to make my code more readable Fixed starting text I changed some things in game so I also changed the starting text to inform the player ."}, {"post_id": 50802, "ts": "2026-08-20T06:31:30Z", "hours": 1.3339, "text": "I worked on giving the carbon laser health and a destruction animation I also worked on making co2 tank disappear with carbon laser when it is destroyed I made co2 level 0 if no co2 tank is present I Made nickel more rare as it was to common. bugs Fixed cooling system upgrade as it didn’t work in previous update the problem was that it only worked when game was paused so I just reversed it and now it works. stoped hydrogen tank from getting destroyed when solar panel was destroyed video This Is a video of a fully upgraded base decaying at 16X speed."}, {"post_id": 50126, "ts": "2026-08-19T06:31:21Z", "hours": 2.5678, "text": "I added a co2 tank ,––I added a pipe for sending oxygen to the carbon burner, ––I made materials only show up after you obtain them and also did some debugging.—————————————————————————————––I added a co2 tank aswell as a co2 gas sprite which shows the amount of co2 in the tank.–––––––––––––––––––––––––––––––––––I added a pipe to feed oxygen to the carbon burner so you can actually burn the carbon to make co2———————————————————–I made materials only appear after you obtain them so it looks neater in early game and also kinda just has a discovery vibe—————————————————————————————I did some ‘debuging of bugs” caused by my new updates. one thing I couldn’t figure out yet is why the water storage and copper pipe cooling system didn’t speed up the lasers anymore, I guess i should work on that now. Until we meet again."}, {"post_id": 42263, "ts": "2026-08-06T21:52:47Z", "hours": 2.7675, "text": "I worked on making the ui controlled by the cursor instead of a corsponding key for each item I did this to make it more user friendly and less confusing to use. To do this I had to sense the distance of the mouse from each of the click locations and check if the mouse is within a certain range using a different variable for each upgrade. ––––––––––––––––––––––––––––––––––––––––here is a video showing how the cursor control works"}, {"post_id": 39902, "ts": "2026-08-03T06:11:48Z", "hours": 4.1467, "text": "I worked on fixing the shop ui, added a new upgrade the (carbon burner), added some devtools and fixed some bugs/made sure everthing coded so far was working well.––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– I changed the shop Ui by making each item have a diffirent colours based on the ratio of the materials used to make it I also made it obvious what material each upgrade needed by colour coding.{the next step to improve the UI is to add mouse clicks instead of clicking keys on the keypad}.————————————————————————————————————— I added the carbon burner to the game (im still working on the name) it burns carbon with oxygen to make carbon dioxide which can be used later in game as a component of methane.–––––––––––––––––––––––––––––––––––––––––––––––––I added devtools to do things like changing the type of asteriod, speed of the laser beem,giving you infinte materials, ect{ mynext step is to make it more user friendly by adding a guide of the shortcuts for dev mode}———————————————————————————————––I also fixed some things eg. When the water storage is destroyed the oxygen an hydrogen tanks are destroyed aswell because they are on the waterstorage. Before I fixed they just kinda floated in space ect.–––––––––––––––––––––––––––––––––––––––––––––––––here is a video showcasing the new shop UI and the carbon burner(video starts at 40 seconds)"}, {"post_id": 39126, "ts": "2026-08-01T20:43:28Z", "hours": 3.5433, "text": "I added electrolysis to the game. To do this I added three new upgrades that are needed to proform electrolysis. a wire, an oxygen tank and a hydrogen tank. when you have all three aswell as (water storage) and a power source(solar panel). you can then click H to do electrolysis which turns one water into two hydrogen and one oxygen. which can then be used later in the game as a component of a fuel/power source. I also added an animation of the oxygen and hydrogen tanks filling up with gas as electrolysis is happening.–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––here is video that showcases how a playthrough might go now with the new upgrades."}, {"post_id": 38007, "ts": "2026-07-31T03:57:38Z", "hours": 1.9503, "text": "I worked on fixing some minor bugs such as misspelt variables ect added new materials added gases and moved parts over to make room for new upgrades. aswell as adding a hydrogen and oxygen tank. i will edit later"}, {"post_id": 37402, "ts": "2026-07-30T02:51:02Z", "hours": 0.3169, "text": "I worked on designing two more upgrades"}, {"post_id": 36610, "ts": "2026-07-28T20:35:36Z", "hours": 1.9003, "text": "I worked on cleaning up my code –––––––––––––––––––––––––––––––––––––I removed redundant parts of my code that were not being used or could be simplfied, I added notes so I know what each part of my code does, I fixed some minor bugs ect. I also fixed the power system so when you are idle you use less energy then when you are shooting laser beems. I did this because as I was playtesting I found out that the battery ran out too quickly and there was nothing you could do about it. So now to maintain sufficent power you have to use the laser beem wisely eg not shooting a asteriod that is too far, too large or not the type you need ect.———————————————————————————————————————– here is a sped up video of how a typical play through would go thus far.––––––––––––––––––––––––––––––––––––––––––– PS I am planing to add more room to the side and/or more turrets in newer updates."}, {"post_id": 36121, "ts": "2026-07-28T00:18:31Z", "hours": 2.1339, "text": "I added a screen at the begining of the game explaining the controls. I also added a dev mode shortcut to give infinte material (D&M keys) I also worked on the solar pannel adding a destruction animation as well as fixing some minor bugs caused by it. I also added a time variable that keeps track how many seconds pased from the start of the game I plan to utlize this to cause events or increase difficulty over time.—————————————————————————————This video showcase the starting screen and the Devmode’s infinte materials additonly it shows the solar panel damage effect which I think is the best slow destruction of any upgrade yet."}, {"post_id": 35637, "ts": "2026-07-27T06:09:16Z", "hours": 1.1169, "text": "I worked on making an animation of the power going down as well as as making a new “upgrade” the solar panel it slowly adds to your total power. as you have set amount of power when you start that starts running out. This video showcase the damage system as well as the power system."}, {"post_id": 35349, "ts": "2026-07-26T17:53:50Z", "hours": 1.0839, "text": "I made a power a stat in the game. Without power your turret cant move but you can still shoot. you start with a certin amount of power but can gain power by making things such as solar pannels ect. I have no video of it yet but here is a image of the new design of the turret . I also added sulfur to the game."}, {"post_id": 35007, "ts": "2026-07-26T04:51:16Z", "hours": 2.6678, "text": "I added a damage system to the game. If your upgrades are hit by a asteriod they lose health and if their health goes to low they disapear. I also made it that you can repair the upgrades using your materials to bring their health back. I also worked on the exit menu a bit adding some colours ect."}, {"post_id": 34438, "ts": "2026-07-25T04:46:03Z", "hours": 2.1167, "text": "I made the water storage upgrade also need a copper pipe connected to the turret for it to work. I also made it that when you have water in the water storage you can hold down the up key to speed up your laser beems as without the water as coolant the turret would over heat. code wise I made a clock so I can regulate parts of the game in universal time and not just a delay. here is link to test https://microstudio.io/layerbylayer/astreroidhunter/2MSZECRK/ E for exit mode R for resume left. right arrows to aim. space to shoot. while in exit mode to puchase upgrades click the first letter of its name on your keyboard"}, {"post_id": 34390, "ts": "2026-07-25T02:25:50Z", "hours": 1.0839, "text": "I added copper to the game aswell as animating the water storage to visualy fill up as you harvest more water from asteriods––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––ps I acdently recorded an extra half hour and dont know how to remove it"}, {"post_id": 34239, "ts": "2026-07-24T19:32:04Z", "hours": 1.1839, "text": "I made the home screen of the game show the amounts of each material you have as well as making the first upgrade I haven’t made it do anything yet but the idea would be that this upgrade called water storage could be used to cool down the turret which would increase fire rate as well as allowing other upgrades such as stronger laser two barrels ect"}, {"post_id": 33883, "ts": "2026-07-24T04:54:43Z", "hours": 0.5836, "text": "I added 5 materials you can get from asteriod carbon,water,silicon,iron,gold. I set the amounts each asteriod should get though I haven’t made a proper display yet. I also fixed some minor bugs IF you have any suggestions for materials to add feel free to share."}, {"post_id": 33792, "ts": "2026-07-24T00:15:24Z", "hours": 1.3214, "text": "I made diffrent types and sizes of asteriods take diffrent amounts laser beem shots to break. I also locked down the pivot of the turret while the laser is in flight to stop the player from being able to control the laser beem midflight as this will be a upgrade added later in the game"}, {"post_id": 33750, "ts": "2026-07-23T22:14:43Z", "hours": 0.4669, "text": "I fixed the bug with the rare metalic asteriod and added it back to the game. the problem was the first sprite for the animation of the asteriod blowing up was named (metalic_asteriod_rare1) but the program called for (metalic_asteriod_rare)"}, {"post_id": 33661, "ts": "2026-07-23T19:17:23Z", "hours": 3.0133, "text": "I made animations for all the asteriods I also fixed the size of the play area I tried to fix a bug where the rare metalic asteriod animation wouldn’t play but couldn’t figure it out so I removed the rare metalic asteriod I also added a exit button E to stop the meteor shower and a resume button R also here is link to try game thus far https://microstudio.io/layerbylayer/astreroidhunter/2MSZECRK/ (left and right arrow to aim and space to shoot)"}, {"post_id": 33338, "ts": "2026-07-23T04:59:55Z", "hours": 1.2003, "text": "I made the size of the asteriods hit box change to match the visual size. I also made it that when you hit an asteriod your laser beem disapears with the asteriod. I also animated one of the types of asteriod “destruction” animation ps be aware that because I haven’t animated the other asteriod there is lag before they disapear."}, {"post_id": 32790, "ts": "2026-07-22T05:35:21Z", "hours": 0.4672, "text": "The collsions work now :) the laser beem still has trouble hitting larger asteriods even if it looks like it is touching this is because I haven’t made the hit box fit with the size yet."}, {"post_id": 32679, "ts": "2026-07-22T00:06:05Z", "hours": 1.6003, "text": "I worked on collisions got no real progress on the actual code but I am figuring out how to add collisions I also organized my code a bit by putting realted variables into objects."}, {"post_id": 32159, "ts": "2026-07-21T03:56:48Z", "hours": 1.5042, "text": "I made a turret which can angled by the← and → arrow keys and use the space key to shoot a projectile that follows the angle it was shot in . next I think I will work on collisions"}, {"post_id": 32082, "ts": "2026-07-21T00:10:21Z", "hours": 1.0589, "text": "I added randomness to the type of asteriod It can now be one of these four types a carbonaceous asteriod (the most common one), a stony asteriod(uncommon but not rare), metalic asteriod(rare) and metalic asteriod with ore vein (the rarest asteriod thus far) I also added random sizes. Larger asteriods will be harder to stop but give more materials and vice versa.—————————————————————————————————————————–PS {now the asteriod comes from a random direction not just from the middle ◝(ᴖᗜᴖ)◜}"}, {"post_id": 31933, "ts": "2026-07-20T18:52:43Z", "hours": 1.2003, "text": "I started this project by making some sprites for the diffrent types of asteriods and started trying to make some basic code. currently the asteriods follow the same path every time so not very fun:("}]...
|
Title: asteroid hunter by @layerblayerplus | Stard Title: asteroid hunter by @layerblayerplus | Stardance
Devlogs:
I started this project by making some sprites for the diffrent types of asteriods and started trying to make some basic code. currently the asteriods follow the same path every time so not very fun:(
I added randomness to the type of asteriod It can now be one of these four types a carbonaceous asteriod (the most common one), a stony asteriod(uncommon but not rare), metalic asteriod(rare) and metalic asteriod with ore vein (the rarest asteriod thus far) I also added random sizes. Larger asteriods will be harder to stop but give more materials and vice versa.—————————————————————————————————————————–PS {now the asteriod comes from a random direction not just from the middle ◝(ᴖᗜᴖ)◜}
I made a turret which can angled by the← and → arrow keys and use the space key to shoot a projectile that follows the angle it was shot in . next I think I will work on collisions
I worked on collisions got no real progress on the actual code but I am figuring out how to add collisions I also organized my code a bit by putting realted variables into objects.
The collsions work now :) the laser beem still has trouble hitting larger asteriods even if it looks like it is touching this is because I haven’t made the hit box fit with the size yet.
I made the size of the asteriods hit box change to match the visual size. I also made it that when you hit an asteriod your laser beem disapears with the asteriod. I also animated one of the types of asteriod “destruction” animation ps be aware that because I haven’t animated the other asteriod there is lag before they disapear.
I made animations for all the asteriods I also fixed the size of the play area I tried to fix a bug where the rare metalic asteriod animation wouldn’t play but couldn’t figure it out so I removed the rare metalic asteriod I also added a exit button E to stop the meteor shower and a resume button R also here is link to try game thus far https://microstudio.io/layerbylayer/astreroidhunter/2MSZECRK/ (left and right arrow to aim and space to shoot)
I fixed the bug with the rare metalic asteriod and added it back to the game. the problem was the first sprite for the animation of the asteriod blowing up was named (metalic_asteriod_rare1) but the program called for (metalic_asteriod_rare)
I made diffrent types and sizes of asteriods take diffrent amounts laser beem shots to break. I also locked down the pivot of the turret while the laser is in flight to stop the player from being able to control the laser beem midflight as this will be a upgrade added later in the game
I added 5 materials you can get from asteriod carbon,water,silicon,iron,gold. I set the amounts each asteriod should get though I haven’t made a proper display yet. I also fixed some minor bugs IF you have any suggestions for materials to add feel free to share.
I made the home screen of the game show the amounts of each material you have as well as making the first upgrade I haven’t made it do anything yet but the idea would be that this upgrade called water storage could be used to cool down the turret which would increase fire rate as well as allowing other upgrades such as stronger laser two barrels ect
I added copper to the game aswell as animating the water storage to visualy fill up as you harvest more water from asteriods––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––ps I acdently recorded an extra half hour and dont know how to remove it
I made the water storage upgrade also need a copper pipe connected to the turret for it to work. I also made it that when you have water in the water storage you can hold down the up key to speed up your laser beems as without the water as coolant the turret would over heat. code wise I made a clock so I can regulate parts of the game in universal time and not just a delay. here is link to test https://microstudio.io/layerbylayer/astreroidhunter/2MSZECRK/ E for exit mode R for resume left. right arrows to aim. space to shoot. while in exit mode to puchase upgrades click the first letter of its name on your keyboard
I added a damage system to the game. If your upgrades are hit by a asteriod they lose health and if their health goes to low they disapear. I also made it that you can repair the upgrades using your materials to bring their health back. I also worked on the exit menu a bit adding some colours ect.
I made a power a stat in the game. Without power your turret cant move but you can still shoot. you start with a certin amount of power but can gain power by making things such as solar pannels ect. I have no video of it yet but here is a image of the new design of the turret . I also added sulfur to the game.
I worked on making an animation of the power going down as well as as making a new “upgrade” the solar panel it slowly adds to your total power. as you have set amount of power when you start that starts running out. This video showcase the damage system as well as the power system.
I added a screen at the begining of the game explaining the controls. I also added a dev mode shortcut to give infinte material (D&M keys) I also worked on the solar pannel adding a destruction animation as well as fixing some minor bugs caused by it. I also added a time variable that keeps track how many seconds pased from the start of the game I plan to utlize this to cause events or increase difficulty over time.—————————————————————————————This video showcase the starting screen and the Devmode’s infinte materials additonly it shows the solar panel damage effect which I think is the best slow destruction of any upgrade yet.
I worked on cleaning up my code –––––––––––––––––––––––––––––––––––––I removed redundant parts of my code that were not being used or could be simplfied, I added notes so I know what each part of my code does, I fixed some minor bugs ect. I also fixed the power system so when you are idle you use less energy then when you are shooting laser beems. I did this because as I was playtesting I found out that the battery ran out too quickly and there was nothing you could do about it. So now to maintain sufficent power you have to use the laser beem wisely eg not shooting a asteriod that is too far, too large or not the type you need ect.———————————————————————————————————————– here is a sped up video of how a typical play through would go thus far.––––––––––––––––––––––––––––––––––––––––––– PS I am planing to add more room to the side and/or more turrets in newer updates.
I worked on designing two more upgrades
I worked on fixing some minor bugs such as misspelt variables ect added new materials added gases and moved parts over to make room for new upgrades. aswell as adding a hydrogen and oxygen tank. i will edit later
I added electrolysis to the game. To do this I added three new upgrades that are needed to proform electrolysis. a wire, an oxygen tank and a hydrogen tank. when you have all three aswell as (water storage) and a power source(solar panel). you can then click H to do electrolysis which turns one water into two hydrogen and one oxygen. which can then be used later in the game as a component of a fuel/power source. I also added an animation of the oxygen and hydrogen tanks filling up with gas as electrolysis is happening.–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––here is video that showcases how a playthrough might go now with the new upgrades.
I worked on fixing the shop ui, added a new upgrade the (carbon burner), added some devtools and fixed some bugs/made sure everthing coded so far was working well.––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– I changed the shop Ui by making each item have a diffirent colours based on the ratio of the materials used to make it I also made it obvious what material each upgrade needed by colour coding.{the next step to improve the UI is to add mouse clicks instead of clicking keys on the keypad}.————————————————————————————————————— I added the carbon burner to the game (im still working on the name) it burns carbon with oxygen to make carbon dioxide which can be used later in game as a component of methane.–––––––––––––––––––––––––––––––––––––––––––––––––I added devtools to do things like changing the type of asteriod, speed of the laser beem,giving you infinte materials, ect{ mynext step is to make it more user friendly by adding a guide of the shortcuts for dev mode}———————————————————————————————––I also fixed some things eg. When the water storage is destroyed the oxygen an hydrogen tanks are destroyed aswell because they are on the waterstorage. Before I fixed they just kinda floated in space ect.–––––––––––––––––––––––––––––––––––––––––––––––––here is a video showcasing the new shop UI and the carbon burner(video starts at 40 seconds)
I worked on making the ui controlled by the cursor instead of a corsponding key for each item I did this to make it more user friendly and less confusing to use. To do this I had to sense the distance of the mouse from each of the click locations and check if the mouse is within a certain range using a different variable for each upgrade. ––––––––––––––––––––––––––––––––––––––––here is a video showing how the cursor control works
I added a co2 tank ,––I added a pipe for sending oxygen to the carbon burner, ––I made materials only show up after you obtain them and also did some debugging.—————————————————————————————––I added a co2 tank aswell as a co2 gas sprite which shows the amount of co2 in the tank.–––––––––––––––––––––––––––––––––––I added a pipe to feed oxygen to the carbon burner so you can actually burn the carbon to make co2———————————————————–I made materials only appear after you obtain them so it looks neater in early game and also kinda just has a discovery vibe—————————————————————————————I did some ‘debuging of bugs” caused by my new updates. one thing I couldn’t figure out yet is why the water storage and copper pipe cooling system didn’t speed up the lasers anymore, I guess i should work on that now. Until we meet again.
I worked on giving the carbon laser health and a destruction animation I also worked on making co2 tank disappear with carbon laser when it is destroyed I made co2 level 0 if no co2 tank is present I Made nickel more rare as it was to common. bugs Fixed cooling system upgrade as it didn’t work in previous update the problem was that it only worked when game was paused so I just reversed it and now it works. stoped hydrogen tank from getting destroyed when solar panel was destroyed video This Is a video of a fully upgraded base decaying at 16X speed.
Made elctrolysis and laser not work in shop “mode” I did this so the player couldn’t just stay in the shop and make new resources eg oxygen, co2 ect. Now the player has to do it while defending the base from asteriods Added fix mode now if you hold down your cursor in shop mode it will toggle between the regular cursor and a wrench. When the wrench is active you can click on damaged upgrades to repair them Organized code I organized my code into sections and added notes to make my code more readable Fixed starting text I changed some things in game so I also changed the starting text to inform the player .
THE MEGA BEEM UPDATE I Added A Side Lasers Upgrade the side lasers give the player the ability to shoot larger laser beems that do a lot more damage, one shotting most asteriods. I also animated the side lasers to have an open and closed position aswell as having a copper plate on main turret that visually heats up to show the laser powering up. Fixing Fix Mode (ironic) I made the wrench only be able to fix but not buy and made the normal cursor just buy upgrades but not fix. I also stopped normal cursor from buying new upgrade while the old upgrade is present.
SABATIER REACTOR UPDATE added sabatier reactor I made a sabatier reactor sprite and added the shop text for it I also added two new pipes one to feed hydrogen to the reactor the other to feed co2 to the reactor chemistry time the sabatier recation turns 1X co2 and 2X h2 ⇢ 1X ch4(methane) and 2X h2o I added the code to do the sabatier reaction in game Bugs Fixed side lasers so they would only fire when fully charged and organized the code a bit for them
THE minor CHANGES UPDATE Added on/off sensing to two upgrades one colored indicator on each upgrade shows you if the upgrade is currently active I fixed the start screen now the game starts and the start screen disapears if you click the screen instead of at the end of a preset time Added heater to sabatier heats up on side so sabatier reactor can reach right temp and also just looks cool
BUTTON UPDATE Made buttons the button works by toggling from off to on if the mouse clicks the button sprite on the upgrade ( the same sprite prevouisly used by the activity indicator ) all upgrades with buttons listed the carbon burner clicking the button toggles laser on and off the sabatier reactor clicking the button toggles heater on and off the electrolysis system clicking the button toggles wire in water storage on and off video the video shows all of the buttons being used to turn on the upgrades to eventually make methane
no update today :( animation for the sabaitier reactor I made an animation of fire/ combustion in the sabiter reactor by making a cycle of four sprites bugs/fixes fixed a bug which would drain half of your power when you just started I also made the normal laser beem take less power video the video shows the new sabaiter animation
THE GAME OVER UPDATE The game over screen if you run out of power and have no solar panel a game over screen pops up. It stops the game and lets you restart fixes I added a active cursor display on the side of the cursor to make the switch between buy mode and fix mode flow better I also made the amount of time you have to hold down the mouse to switch cursor modes half as long video the video shows the new game over animation and the active cursor display
THE METHANE UPDATE Added methane tank added a methane tank below the sabatier reactor to store the methane from the reaction I Added a pipe to sent methane from sabatier reactor to the methane tank Added gas fill animation to methane tank Fixes I fixed the buttons so they dont work in shop mode I Fixed a glitch where all asteriods were carbonaceous. It turns out I was asigning the asteriod varible constantly to its starting value which is carbonaceous I Made carbon more abundant and Made water less abundant I also added text to help the user know how to activate some upgrades sorry I couldn’t get video today
no update methane tank and pipe I added the shop text and click sensing for the methane tank and pipe fixes Fixed the restart option from the end screen the bug was caused because the gamend variable was assigned true 1 second after power was below 1 so even after it reset the game, gamend would go back to true
game test update I did Game testing for 30 min fixes I Recentred asteroid sprites I resized asteriod hitboxes Increased starting power sabatier damage system I added the Sabatier reactor to the damage system and made sprites for it’s diffrent damage states I also made attached pipes get destroyed with the sabatier reactor
POWER DISPLAY UPDATE I Added a display of how much power you are losing or gaining I coded it to be red when losing power and green when gaining power It helps the player be aware of the amount of power they are using game testing/fixes I did an ~ hour of just playing the game trying to get as far as I could get but did not track the time because I did no coding during the time but I used this knowledge to fix all of these following things SOLAR PANEL I Fixed bug which caused that after first damage caused to solar panel Solar Efficiency never goes back to full capacity as I forgot to make the code assign the value of S,E to full if solar health is full I accidently just assigned it at the beginning of the code but not again. I found this out in game testing when my power kept on running out even at full solar health IRON I Made iron more common as I orignally did not account for the constant need to repair your upgrades. COOLING SYSTEM I made the cooling system take al lot less power. I did this to make it more useful as when I was game testing I found it kinda of pointless to use
LET THERE BE SOUND UPDATE 1 I added some sound effects to the game I sourced the sounds from mixkit the sound effects I added so far are: the normal laser beem sound the charged sidelaser beem sound a bubbling sound for the electrolysis system. I also added a cool background soundtrack
added asteriod explosion sounds
I edited the sound’s code - I added the mega beem explosion sound - I added a sound for the mega beem charging Fixed how sounds were played
I was working on making a tutorial for the game to make is it simpler for new players to figure out how to play
I worked on making the tutorial actually work I mean at least like a quarter sorry for short devlogs
TUTORIAL UPDATE (not just this devlog but the previous tutorial devlogs too) tutorial I made a tutorial to show the player how to play the game in an interactive manner the player learns how to: shoot laser beems aim the turret buy upgrades use upgrade buttons fix upgrades manage power usage BUGS (that I remember 😭) I had a bug where I was using a wait command for having text appear after a an amount of time but it was buggy so I used a time variable to track time globaly to stop it from glitching out.
BUGS I fixed A bug where you couldn’t buy upgrades anymore this was caused by a variable for tutorial mode never turning off as I reset the games values before turning tutorial mode off I also fixed many minor bugs caused by the tutorial update I added two new sounds The sound the laser in the carbon burner upgrade The sound of combustion from the Sabatier reactor I also fixed the sound that the side lasers make when charging the megalaserbeem I also made two small sprites the sprites were added to the starting Ui so the (tutorial) and (click here to start) buttons look nice instead of just being some floating text
RANDOM FIXES I added the repair system for the Sabatier reactor because I forgot to do that previously Resized click boxes for buying upgrades to fit the text better BUGS - Fixed problem where clicking on empty screen in shop mode could cause accidental upgrades purchases Fixed a major bug where asteroids would disappear mid-air sometimes after being shot down. Now it always show a destruction animation, but I kept the part of the bug which made the asteroid have a small chance to not give you any materials as a new feature
I decided to fix the bug that caused asteroids that are destroyed from not dropping materials I did that because it was becoming to common Made every hit make sound but made last hit make bigger sound -Made asteroid hitting ground sound better
THE MOBILE UPDATE I made the game work on mobile devices when the game starts you can choose mobile mode if you are on a phone or iPad ect In this mode every input has a button on the screen the buttons I have made so far left (turn turret left) right (turn turret right) space (shoots laser) shop button(goes into shop mode) resume button(goes out of shop mode)
i worked on making the github repo for the game
I did some final gametesting and added end/win condition- get 10 methane - if you do this then part 1 of the game is over
I worked on adding a health bar effect to the asteriod which will slowly crack after each hit
i fixed some bug and made mobile control more straight forward -game link pls play test and give feedback https://microstudio.io/layerbylayer/astreroidhunter3/YD5AWCT2/
I did some final game testing also mobile mode is not finished yet I will do that in next ship so only test on computors pls
Ships:
this is my game asteriod hunter a game where you shoot down asteriods to gain materials to make your own space base this ship is part 1 of the game this is also the first game I ever made (mobile mode doesn’t work right now that will be fixed in ship 2)...
|
1793004614.7811387
|
1793091014.7811387
|
|
43204
|
Kasimirs Kebab by @laupi_oida | Stardance
|
laupi_oida
|
2
|
86.0
|
1014
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T17:51:23Z", "hours": 38.0, "multiplier": 14.42, "payout": 554, "blessing": "neutral", "text": "What did I made? I rewrote my game made in LÖVE2D to Godot and added: 3 new Chapters and rebuild of one chapter sounds mobile controls a paywall (because why not) What was challenging? The complete rewrite wasn’t actually that hard but some special effects and scene switching was hard, because I tried a different way to switch scenes, than normal. And audio design was challenging because I’m not so good at it. What I’m proud of? I’m very proud of the laser beam in chapter2, the last chapter and the mobile controls, because I think they are good.", "repo": "https://github.com/Laup0403/Kasimirs-Kebab/", "demo": "https://laupi-oida.itch.io/kasimirs-kebab"}, {"ship_num": 2, "ts": "2026-09-23T18:54:58Z", "hours": 48.0, "multiplier": 9.84, "payout": 460, "blessing": "neutral", "text": "I developed a rpg game with the framework LÖVE2D using Lua. I made my own textbox queue system, collision system, fight system, menu and you can change the keyboard layout. I learned that it’s important to write clean code and how to automate many processes. And somehow I learned more English than in school (I’m still bad at English).", "repo": "https://github.com/Laup0403/Kasimirs-Kebab/", "demo": "https://laupi-oida.itch.io/kasimirs-kebab"}]...
|
[{"post_id": 82378, "ts": "202 [{"post_id": 82378, "ts": "2026-10-24T17:32:31Z", "hours": 0.7311, "text": "Final Devlog! Twin I made it! I had some issues with the scene loading in chapter5 because of how I load chapter4 and chapter5 loads on top of chapter4 then. And I changed the looping of the sound at the end of chapter5, because it didn’t work on web. At last I also changed the Github readme and the Itch site. This was it. Bye Twin!"}, {"post_id": 82214, "ts": "2026-10-24T09:38:39Z", "hours": 6.3717, "text": "TWIN! This is the last or the second last devlog. Here’s what i added: 1. Mobile controls In the settings you can now enable mobile mode. I think I made it really cool because I made 3 States and in 1 state you can see the arrows,in the other nothing and the complete screen is action1 and in the last you see the question buttons. That works really well I think 2. Sounds Some sounds are good some sounds are not so good but I think they match the games style and the sounds from the last chapter are really good I think 3. New main menu It looks the same but now I use buttons instead of areas and you can just control it with mouse or touchscreen and not arrow keys anymore I’m gonna send the game to my playtesters and see if they find any bugs (they are really good in bug finding) Bye Twin!"}, {"post_id": 81615, "ts": "2026-10-21T19:31:39Z", "hours": 4.5936, "text": "YOOOOOOOOOOOOOOOOOOOO TWIN!!! It’s done. I mean the story the game isn’t ready yet I added the castle and the isn’t Kasimir. Then you go into the kitchen and see a doner kebab. And what then happens I won’t spoiler. But after that comes: a paywall because why not? But I think the last chapters are a bit empty but I didn’t really had fun at the end. Löve was way more fun. Now there are the following the tasks: Updating the menu: There aren’t all chapters in the load scene Mobile controls: I want that everyone can play this game and I think mobile controls are necessary (not even all my friends have a PC) Language translation: I want German translation and Latin (just for prank), because that are the only languages I speak except English Audio: I’m really bad at sound but I think some sound will be good! We are so far but I still don’t see the end. Bye Twin!"}, {"post_id": 80813, "ts": "2026-10-18T21:04:19Z", "hours": 2.6544, "text": "Yo Twin! The City stands! The corners look a bit weird but ok. In the city there are 4 houses and 4 wise man inside that tell you something about Kasimir and if you speak to all of them the gate to the “real valley” opens. And I also changed the dialog with the doner guy, because the thief is now Kasimir and not a beetle. The next chapter will become a bit more chill, but the last chapter will be CRAZY. Trust me. Ok bye Twin!"}, {"post_id": 79979, "ts": "2026-10-15T18:38:49Z", "hours": 2.0311, "text": "Yo Twin! This time I drew more. Here’s everything I did: 1. I updated the Github readme and itch.io site 2. A smooth transition When the wall is broken there is a new path. When you go there the scene switches and the wall collapses so you can’t go back. 3. A bit of the town If you follow the path, you get into the town. This is the third chapter. The game shouldn’t be that long so after that there will come 2 more chapters: The REAL valley and then the castle where the legendary Kasimir sits and there will also be the kebab skewer(yay). Ok that was everything. Bye Twin!"}, {"post_id": 78833, "ts": "2026-10-11T18:34:52Z", "hours": 6.8011, "text": "Yo Twin! I must learn to make decisions because now I completely removed the fight system and you just do a puzzle. The Puzzle It is just some puzzle I made in PuzzleScript in the computer science lessons and I ported it to Godot but it it is a bit challenging. The crazy effects are back! Now after you solved the puzzle Hans comes to you and shows you his cool new gadget. And here I made also some plans for the future: Audio - The puzzle and the new Hans scene would be so much cooler and I already have an idea Translation - For now it should just be German because I speak that and Latin just for prank and I think for other languages I need help but I don’t want to use AI And I decided I will make the game a bit shorter I hope I will get it to like 30-60 minutes. Ok, Bye Twin!"}, {"post_id": 77367, "ts": "2026-10-06T17:53:13Z", "hours": 3.6044, "text": "UPDATE!!! Yo Twin! Finally I have a fight system I like. Actually it is just a redesign but it looks way better I think. This time I didn’t put the moves menu on the bottom but on the right side. That makes so much more space and I have big plans with it. I also removed the health bar and replaced it with a variable in the moves menu because it looks more like a hacker and Klaus looks like a hacker too. And I made something like paths I think that looks cool. I also added the Spooky man If I haven’t said this already And I made a sick new Animation that looks hacky (cool word) Ok bye Twin!"}, {"post_id": 75939, "ts": "2026-10-01T17:39:31Z", "hours": 1.5761, "text": "TWINNNNNNNNNNNNN I did fixed some textboxes, because sometimes I wrote Ms Mauer and sometimes Ms. Mauer and I did TWO BIG THINGS: 1. Mouse controls in the menu because some people didn’t understand it and 2. the new web version I host the game now on itch.io because it is less complicated and there are less issues but somehow the mouse controls aren’t working right. (Here try it: https://laupi-oida.itch.io/kasimirs-kebab ) Yeah pretty cool (like the image) , I know and now comes the fight system. Bye Twin!"}, {"post_id": 75671, "ts": "2026-09-30T18:14:55Z", "hours": 8.1503, "text": "BOOM Yo Twin it didn’t thought that I can remake the game in like 10 hours. But I did it. I also added a house for Klaus, because that’s a better starting point and the input delay in the menu is gone. Now I’m stuck at the fight system again. I think it isn’t a secret that the old fight system was just bad. I brain stormed a bit and have some thoughts in mind that I must combined. But that’s harder then I thought But I will brainstorm a bit. I think switching to Godot was a great decision. Bye Twin!"}, {"post_id": 73732, "ts": "2026-09-25T20:06:40Z", "hours": 1.8886, "text": "Twin! First of all: Thanks for all the reviews on my project! Many people reported issues and I want to fix them. But first: I will use Godot Yes I know in the other devlog I said I don’t really had a good time with Godot but somehow it is still the best open source game engine and it somehow really triggered me that GameMaker isn’t open source What is the current state of the game? I have already reprogrammed the textbox, the intro map and the player movement and it is SO MUCH FASTER than in LÖVE. I also saw that you can make like 2.5D graphics and I think this might look cool and I will try this in future. The issues reported 1. Many People couldn’t open the game Now that I use godot it will be a better web port and I will host it on itch.io so it should work for anyone 2. Some out of bounce glitches Yeah I didn’t place the collision boxes well but I will fix this. 3. Many People had problems with the controls I know I made it a bit confusing. I’ll make little markers at the bottom if you can do something and I will make mouse inputs in the menu. I will try to remake the game as fast as possible. Thanks for everything and bye Twin!"}, {"post_id": 72778, "ts": "2026-09-23T18:45:22Z", "hours": 1.6147, "text": "Twin! I wanted to finish the prototype It isn’t what it should be but I added a win screen and a game over screen and I changed the default action key to z because most people have qwerty kb and it was y because I have qwertz kb. There was much I wanted to add but I think love was a great experience but I must search new Horizons until I find an engine made for me. Bye Twin!"}, {"post_id": 71903, "ts": "2026-09-21T18:57:17Z", "hours": 3.0531, "text": "I give up Yo Twin! First of all i figured out how to make a web version and now you can test the game But now the sad news I give up with my plans to make a game with love2d. I had a great time and love2d but now the it feels like I must reinvent the wheel (like we in germany say), because I must code everything myself and it takes so long. That doesn’t mean I won’t finish Kasimirs Kebab This is now just a prototype or a beta. I will just switch my game engine! I first thought of Godot but I had bad experience and I think I will go to the game engine I started with: Game Maker! I like it and some great games were made with it that are similar to the game I want to make like undertale, deltarune or forager. The only thing I don’t like about it is that it isn’t open source but it only cost 100$ one time for a professional license and I mean that’s WAY better than Unity or Unreal and you support the developers, but I won’t sell this game so that doesn’t matter. You can try my prototype here: https://laup0403.github.io/Kasimirs-Kebab/ What did we learn? - All roads lead to rome. And bye Twin!"}, {"post_id": 70103, "ts": "2026-09-18T13:51:27Z", "hours": 6.8772, "text": "Yo Twin! After changin the concept of the fight system 4 times I wanted to give you an update on my inprovements. 1. Textbox improvements First of all I thougth the textbox was a bit boring so I added a read effect and also dots are read slower and thats very cool in some dialogues and you can also skip the reading. 2. A black bar It doesn’t sound important but on the left if I didn’t0 play at fullscreen there was always a little space on the left where it shouldn’t be and this bar fixes it 3. Spookyman He’s like an super human because I needed a way to give the player a wepon and he’s kinda cool AND NOW 4. The fight system It’s not done yet but I did it like in my last post but the bar with actions is at the bottom and I also automated the drawing. That means it shows always 3 Things and if I add more then it shows arrows as a notification and I can move up or down to see the other actions. And the Healthbar is like in the last post because I like that design. It was actually not that easy to make the healthbar (or I am dumb) because it is 62 pixels long and I needed to calculate how much the player has left in percent and then I set the healthbar further behind (this is the calculation for anyone wondering: (1-(fight.enemyhealth/fight.maxenemyhealth)) * 62) I also added my first sound effect for switching the action. That were some big changes! Sorry for bad english and Bye Twin!"}, {"post_id": 63784, "ts": "2026-09-07T18:59:41Z", "hours": 0.6903, "text": "Twin! Did’nt code that much but I made a plan: The “basic combat” should be similair to Final Fantasy or the Mario and Luigi game. You have a health bar and you enemy has one. Then there is a Action Field where you can do attacks and use items. Pretty basic, right? FALSE Now you think how? Idk either but there will be more because this is just the “basic combat” Note: I also tryed to make music loops and it worked well but I have no music right now. Bye Twin!"}, {"post_id": 61601, "ts": "2026-09-04T16:14:55Z", "hours": 5.1753, "text": "TWIN! First of all: sadly, I cannot make a web version of the game because of the push library and even if i try to do it without the library it won’t work. But there are also good news: I made the first boss! So you cannot fight yet but our first boss Ms. Mauer exists. I made a cool feature that if you make her mad she drops a stone on you. I already have a plan for the the fight. It should be similar to cuphead but rythm based. Think I might add sound Bye Twin!"}, {"post_id": 56638, "ts": "2026-08-28T14:01:24Z", "hours": 3.4297, "text": "BOOOM !!! Now I have your attention Twin and can tell you about my GREAT changes on the main menu. 1. The loading menu There is just one chapter for now and I will change the loading menu when I need to. I think I will make it look like the settings menu. 2. The settings menu You now start with the arrow keys and z and x as the default layout and in the settings you can change it! I tryed to record it but it is a bit async( I think that’s what it’s called). Bye Twin!"}, {"post_id": 53972, "ts": "2026-08-24T17:58:30Z", "hours": 3.4322, "text": "TWIN! I made a sign. But that is not crazy and because of that I made a main menu You can already start the game and exit the game. For the load button I thougth I will not make a safefile but from there you can start into the different chapters, because that’s easier to program and more stable if I make a web export. For the settings file there will be some audio settings and key bindings. And i also made custom symbols in my font for arrows and the exit symbol because my default font doesn’t have this. Bye Twin!"}, {"post_id": 51225, "ts": "2026-08-20T19:14:54Z", "hours": 4.0833, "text": "Twin! During the past few days I hadn’t much time but I made some bug fixes and: 1. a gamescene switch system This is important later for savestates and for easier debugging and it saves RAM usage (I hope). 2. a dialoge choice system or whatever this thing from zelda where you can choose an option is 3. the tickle monster very important. 4. new controls you can either play with wasd and k and l or with the arrow key and z/y and x Bye Twin!"}, {"post_id": 47160, "ts": "2026-08-14T20:54:39Z", "hours": 4.7125, "text": "TWIN!!!!!!!!!!!!!!! This is the biggest update in a game about kebab in the entire human history! Here’s what I added: 1. a new name Kasimirs Kebab sounds much cooler than everyone wants kebab and it will make more sense later. 2. the tickle monster Border are boring so if you go out of the map the tickle monster comes (there is no real tickle monster. the game closes it’s self but there will be one next update). 3. an intro You wan’t a doner kebab but the skewer was stolen and now you best friend hans flies with an jetpack trough the air or something idk 4. a cool Animation very Cool 5. a cover picture also very Cool. I know that was very much and I will try to make a web export so that you can try that crazy story but for now you must watch the video. Hope you liked it. Bye Twin!"}, {"post_id": 45624, "ts": "2026-08-12T07:22:13Z", "hours": 2.2822, "text": "Twin! I made some changes. 1. redesigned the textures The old textures looked pretty boring so I redesigned them and made flowers and grass 2. ySort For those who don’t know: ySort sorts the draw order based on the y coordinates and what that does you can see in the video. 3. a sick animation Now you can give Hans a handshake How cool is that? That was everything for this devlog. Bye Twin!"}, {"post_id": 45183, "ts": "2026-08-11T14:35:24Z", "hours": 4.4089, "text": "TWIN! I made BIG changes. 1. a static resolution Now you can scale the game to whatever size you want because I used the push library to set the resolution to 160x90 and it scales with the window. Note: If you want to use push and cameraMgr like me, you must change every love.graphics.getWidth() and love.graphics.getHeight() in cameraMgr.lua to if push then camera.w, camera.h = push:getDimensions() else camera.w = love.graphics.getWidth() camera.h = love.graphics.getHeight() end 2. a collsision box for our friend hans Yeah very BIG change but that’s important but here comes the biggest addon: 3. A TEXTBOX I made a system, were you add text to a queue and if the queue is not empty, it shows the textbox and first line of the queue and if you press K it just deletes the first line. Simple but extremly efficent. I think I must change the font because the font I use now has a good size but it looks kinda normal and that’s lowk boring. That was everything for this BIG update. Bye Twin!"}, {"post_id": 44134, "ts": "2026-08-09T18:14:46Z", "hours": 3.7253, "text": "TWIN! I made Collisionboxes and I made it WITHOUT A LIBRARY! It was very crazy and if I have more than 50 collision boxes it begins to lag but IT WORKS! I made 3 types of the collision boxes: 1.Player (It walks), 2.Areas (You can walk through ) and 3.Wall (You can’t walk through it). How wonderful! The video shows it more or less. Explanation how I made it: The collision detection: I use an aabb-collision detection so i check if the coordinates of two boxes are overlapping. The wall: First in the code, the player is moved. Then the coordinates of the player are given to the collision box of the player. After that the code checks if the collision box of the player overlaps with a wall and if that’s the case than it resets the position or smth like that. (I know I’m good at explaining) Bye Twin!"}, {"post_id": 42839, "ts": "2026-08-07T19:37:34Z", "hours": 1.4167, "text": "Do you think the word camera looks kinda weird? Yeah I know I should get some help, but: I fixed the map and now it’s smooth. I just must draw every Layer of the map seperate. And we got this cool guy with cool hat named hans. Bye twin!"}, {"post_id": 40851, "ts": "2026-08-04T17:14:13Z", "hours": 1.6425, "text": "Hi, Twin! My game has now a map (wow) It’s pretty ugly but it’s just a prototype so that’s ok. For the map I used the tiled app ( https://thorbjorn.itch.io/tiled ) and Simple-Tiled-Implementation ( https://github.com/karai17/Simple-Tiled-Implementation/ ) to implement it in love. And then I needed to move the camera and I use the camera script from hump ( https://github.com/vrld/hump ) for this, but the problem is, that the map doesn’t move and I really just move the map (I think) and that means I must write my own camera script. But that’s a project for the future. Bye twin!"}, {"post_id": 40342, "ts": "2026-08-03T19:44:22Z", "hours": 1.4144, "text": "Hello Twin! I wanted to make a game. I don’t have a big plan but it should include kebab because Everyone wants Kebab. I also want to challenge me so use no Gameengine just love2d or LÖVE or whatever. For the start I drawed a very Cool player and gave him controls and animations with the anim8 lib."}]...
|
Title: Kasimirs Kebab by @laupi_oida | Stardance
Title: Kasimirs Kebab by @laupi_oida | Stardance
Devlogs:
Hello Twin! I wanted to make a game. I don’t have a big plan but it should include kebab because Everyone wants Kebab. I also want to challenge me so use no Gameengine just love2d or LÖVE or whatever. For the start I drawed a very Cool player and gave him controls and animations with the anim8 lib.
Hi, Twin! My game has now a map (wow) It’s pretty ugly but it’s just a prototype so that’s ok. For the map I used the tiled app ( https://thorbjorn.itch.io/tiled ) and Simple-Tiled-Implementation ( https://github.com/karai17/Simple-Tiled-Implementation/ ) to implement it in love. And then I needed to move the camera and I use the camera script from hump ( https://github.com/vrld/hump ) for this, but the problem is, that the map doesn’t move and I really just move the map (I think) and that means I must write my own camera script. But that’s a project for the future. Bye twin!
Do you think the word camera looks kinda weird? Yeah I know I should get some help, but: I fixed the map and now it’s smooth. I just must draw every Layer of the map seperate. And we got this cool guy with cool hat named hans. Bye twin!
TWIN! I made Collisionboxes and I made it WITHOUT A LIBRARY! It was very crazy and if I have more than 50 collision boxes it begins to lag but IT WORKS! I made 3 types of the collision boxes: 1.Player (It walks), 2.Areas (You can walk through ) and 3.Wall (You can’t walk through it). How wonderful! The video shows it more or less. Explanation how I made it: The collision detection: I use an aabb-collision detection so i check if the coordinates of two boxes are overlapping. The wall: First in the code, the player is moved. Then the coordinates of the player are given to the collision box of the player. After that the code checks if the collision box of the player overlaps with a wall and if that’s the case than it resets the position or smth like that. (I know I’m good at explaining) Bye Twin!
TWIN! I made BIG changes. 1. a static resolution Now you can scale the game to whatever size you want because I used the push library to set the resolution to 160x90 and it scales with the window. Note: If you want to use push and cameraMgr like me, you must change every love.graphics.getWidth() and love.graphics.getHeight() in cameraMgr.lua to if push then camera.w, camera.h = push:getDimensions() else camera.w = love.graphics.getWidth() camera.h = love.graphics.getHeight() end 2. a collsision box for our friend hans Yeah very BIG change but that’s important but here comes the biggest addon: 3. A TEXTBOX I made a system, were you add text to a queue and if the queue is not empty, it shows the textbox and first line of the queue and if you press K it just deletes the first line. Simple but extremly efficent. I think I must change the font because the font I use now has a good size but it looks kinda normal and that’s lowk boring. That was everything for this BIG update. Bye Twin!
Twin! I made some changes. 1. redesigned the textures The old textures looked pretty boring so I redesigned them and made flowers and grass 2. ySort For those who don’t know: ySort sorts the draw order based on the y coordinates and what that does you can see in the video. 3. a sick animation Now you can give Hans a handshake How cool is that? That was everything for this devlog. Bye Twin!
TWIN!!!!!!!!!!!!!!! This is the biggest update in a game about kebab in the entire human history! Here’s what I added: 1. a new name Kasimirs Kebab sounds much cooler than everyone wants kebab and it will make more sense later. 2. the tickle monster Border are boring so if you go out of the map the tickle monster comes (there is no real tickle monster. the game closes it’s self but there will be one next update). 3. an intro You wan’t a doner kebab but the skewer was stolen and now you best friend hans flies with an jetpack trough the air or something idk 4. a cool Animation very Cool 5. a cover picture also very Cool. I know that was very much and I will try to make a web export so that you can try that crazy story but for now you must watch the video. Hope you liked it. Bye Twin!
Twin! During the past few days I hadn’t much time but I made some bug fixes and: 1. a gamescene switch system This is important later for savestates and for easier debugging and it saves RAM usage (I hope). 2. a dialoge choice system or whatever this thing from zelda where you can choose an option is 3. the tickle monster very important. 4. new controls you can either play with wasd and k and l or with the arrow key and z/y and x Bye Twin!
TWIN! I made a sign. But that is not crazy and because of that I made a main menu You can already start the game and exit the game. For the load button I thougth I will not make a safefile but from there you can start into the different chapters, because that’s easier to program and more stable if I make a web export. For the settings file there will be some audio settings and key bindings. And i also made custom symbols in my font for arrows and the exit symbol because my default font doesn’t have this. Bye Twin!
BOOOM !!! Now I have your attention Twin and can tell you about my GREAT changes on the main menu. 1. The loading menu There is just one chapter for now and I will change the loading menu when I need to. I think I will make it look like the settings menu. 2. The settings menu You now start with the arrow keys and z and x as the default layout and in the settings you can change it! I tryed to record it but it is a bit async( I think that’s what it’s called). Bye Twin!
TWIN! First of all: sadly, I cannot make a web version of the game because of the push library and even if i try to do it without the library it won’t work. But there are also good news: I made the first boss! So you cannot fight yet but our first boss Ms. Mauer exists. I made a cool feature that if you make her mad she drops a stone on you. I already have a plan for the the fight. It should be similar to cuphead but rythm based. Think I might add sound Bye Twin!
Twin! Did’nt code that much but I made a plan: The “basic combat” should be similair to Final Fantasy or the Mario and Luigi game. You have a health bar and you enemy has one. Then there is a Action Field where you can do attacks and use items. Pretty basic, right? FALSE Now you think how? Idk either but there will be more because this is just the “basic combat” Note: I also tryed to make music loops and it worked well but I have no music right now. Bye Twin!
Yo Twin! After changin the concept of the fight system 4 times I wanted to give you an update on my inprovements. 1. Textbox improvements First of all I thougth the textbox was a bit boring so I added a read effect and also dots are read slower and thats very cool in some dialogues and you can also skip the reading. 2. A black bar It doesn’t sound important but on the left if I didn’t0 play at fullscreen there was always a little space on the left where it shouldn’t be and this bar fixes it 3. Spookyman He’s like an super human because I needed a way to give the player a wepon and he’s kinda cool AND NOW 4. The fight system It’s not done yet but I did it like in my last post but the bar with actions is at the bottom and I also automated the drawing. That means it shows always 3 Things and if I add more then it shows arrows as a notification and I can move up or down to see the other actions. And the Healthbar is like in the last post because I like that design. It was actually not that easy to make the healthbar (or I am dumb) because it is 62 pixels long and I needed to calculate how much the player has left in percent and then I set the healthbar further behind (this is the calculation for anyone wondering: (1-(fight.enemyhealth/fight.maxenemyhealth)) * 62) I also added my first sound effect for switching the action. That were some big changes! Sorry for bad english and Bye Twin!
I give up Yo Twin! First of all i figured out how to make a web version and now you can test the game But now the sad news I give up with my plans to make a game with love2d. I had a great time and love2d but now the it feels like I must reinvent the wheel (like we in germany say), because I must code everything myself and it takes so long. That doesn’t mean I won’t finish Kasimirs Kebab This is now just a prototype or a beta. I will just switch my game engine! I first thought of Godot but I had bad experience and I think I will go to the game engine I started with: Game Maker! I like it and some great games were made with it that are similar to the game I want to make like undertale, deltarune or forager. The only thing I don’t like about it is that it isn’t open source but it only cost 100$ one time for a professional license and I mean that’s WAY better than Unity or Unreal and you support the developers, but I won’t sell this game so that doesn’t matter. You can try my prototype here: https://laup0403.github.io/Kasimirs-Kebab/ What did we learn? - All roads lead to rome. And bye Twin!
Twin! I wanted to finish the prototype It isn’t what it should be but I added a win screen and a game over screen and I changed the default action key to z because most people have qwerty kb and it was y because I have qwertz kb. There was much I wanted to add but I think love was a great experience but I must search new Horizons until I find an engine made for me. Bye Twin!
Twin! First of all: Thanks for all the reviews on my project! Many people reported issues and I want to fix them. But first: I will use Godot Yes I know in the other devlog I said I don’t really had a good time with Godot but somehow it is still the best open source game engine and it somehow really triggered me that GameMaker isn’t open source What is the current state of the game? I have already reprogrammed the textbox, the intro map and the player movement and it is SO MUCH FASTER than in LÖVE. I also saw that you can make like 2.5D graphics and I think this might look cool and I will try this in future. The issues reported 1. Many People couldn’t open the game Now that I use godot it will be a better web port and I will host it on itch.io so it should work for anyone 2. Some out of bounce glitches Yeah I didn’t place the collision boxes well but I will fix this. 3. Many People had problems with the controls I know I made it a bit confusing. I’ll make little markers at the bottom if you can do something and I will make mouse inputs in the menu. I will try to remake the game as fast as possible. Thanks for everything and bye Twin!
BOOM Yo Twin it didn’t thought that I can remake the game in like 10 hours. But I did it. I also added a house for Klaus, because that’s a better starting point and the input delay in the menu is gone. Now I’m stuck at the fight system again. I think it isn’t a secret that the old fight system was just bad. I brain stormed a bit and have some thoughts in mind that I must combined. But that’s harder then I thought But I will brainstorm a bit. I think switching to Godot was a great decision. Bye Twin!
TWINNNNNNNNNNNNN I did fixed some textboxes, because sometimes I wrote Ms Mauer and sometimes Ms. Mauer and I did TWO BIG THINGS: 1. Mouse controls in the menu because some people didn’t understand it and 2. the new web version I host the game now on itch.io because it is less complicated and there are less issues but somehow the mouse controls aren’t working right. (Here try it: https://laupi-oida.itch.io/kasimirs-kebab ) Yeah pretty cool (like the image) , I know and now comes the fight system. Bye Twin!
UPDATE!!! Yo Twin! Finally I have a fight system I like. Actually it is just a redesign but it looks way better I think. This time I didn’t put the moves menu on the bottom but on the right side. That makes so much more space and I have big plans with it. I also removed the health bar and replaced it with a variable in the moves menu because it looks more like a hacker and Klaus looks like a hacker too. And I made something like paths I think that looks cool. I also added the Spooky man If I haven’t said this already And I made a sick new Animation that looks hacky (cool word) Ok bye Twin!
Yo Twin! I must learn to make decisions because now I completely removed the fight system and you just do a puzzle. The Puzzle It is just some puzzle I made in PuzzleScript in the computer science lessons and I ported it to Godot but it it is a bit challenging. The crazy effects are back! Now after you solved the puzzle Hans comes to you and shows you his cool new gadget. And here I made also some plans for the future: Audio - The puzzle and the new Hans scene would be so much cooler and I already have an idea Translation - For now it should just be German because I speak that and Latin just for prank and I think for other languages I need help but I don’t want to use AI And I decided I will make the game a bit shorter I hope I will get it to like 30-60 minutes. Ok, Bye Twin!
Yo Twin! This time I drew more. Here’s everything I did: 1. I updated the Github readme and itch.io site 2. A smooth transition When the wall is broken there is a new path. When you go there the scene switches and the wall collapses so you can’t go back. 3. A bit of the town If you follow the path, you get into the town. This is the third chapter. The game shouldn’t be that long so after that there will come 2 more chapters: The REAL valley and then the castle where the legendary Kasimir sits and there will also be the kebab skewer(yay). Ok that was everything. Bye Twin!
Yo Twin! The City stands! The corners look a bit weird but ok. In the city there are 4 houses and 4 wise man inside that tell you something about Kasimir and if you speak to all of them the gate to the “real valley” opens. And I also changed the dialog with the doner guy, because the thief is now Kasimir and not a beetle. The next chapter will become a bit more chill, but the last chapter will be CRAZY. Trust me. Ok bye Twin!
YOOOOOOOOOOOOOOOOOOOO TWIN!!! It’s done. I mean the story the game isn’t ready yet I added the castle and the isn’t Kasimir. Then you go into the kitchen and see a doner kebab. And what then happens I won’t spoiler. But after that comes: a paywall because why not? But I think the last chapters are a bit empty but I didn’t really had fun at the end. Löve was way more fun. Now there are the following the tasks: Updating the menu: There aren’t all chapters in the load scene Mobile controls: I want that everyone can play this game and I think mobile controls are necessary (not even all my friends have a PC) Language translation: I want German translation and Latin (just for prank), because that are the only languages I speak except English Audio: I’m really bad at sound but I think some sound will be good! We are so far but I still don’t see the end. Bye Twin!
TWIN! This is the last or the second last devlog. Here’s what i added: 1. Mobile controls In the settings you can now enable mobile mode. I think I made it really cool because I made 3 States and in 1 state you can see the arrows,in the other nothing and the complete screen is action1 and in the last you see the question buttons. That works really well I think 2. Sounds Some sounds are good some sounds are not so good but I think they match the games style and the sounds from the last chapter are really good I think 3. New main menu It looks the same but now I use buttons instead of areas and you can just control it with mouse or touchscreen and not arrow keys anymore I’m gonna send the game to my playtesters and see if they find any bugs (they are really good in bug finding) Bye Twin!
Final Devlog! Twin I made it! I had some issues with the scene loading in chapter5 because of how I load chapter4 and chapter5 loads on top of chapter4 then. And I changed the looping of the sound at the end of chapter5, because it didn’t work on web. At last I also changed the Github readme and the Itch site. This was it. Bye Twin!
Ships:
I developed a rpg game with the framework LÖVE2D using Lua. I made my own textbox queue system, collision system, fight system, menu and you can change the keyboard layout. I learned that it’s important to write clean code and how to automate many processes. And somehow I learned more English than in school (I’m still bad at English).
What did I made? I rewrote my game made in LÖVE2D to Godot and added: 3 new Chapters and rebuild of one chapter sounds mobile controls a paywall (because why not) What was challenging? The complete rewrite wasn’t actually that hard but some special effects and scene switching was hard, because I tried a different way to switch scenes, than normal. And audio design was challenging because I’m not so good at it. What I’m proud of? I’m very proud of the laser beam in chapter2, the last chapter and the mobile controls, because I think they are good....
|
1793004579.805614
|
1793090979.805614
|
|
1220
|
Cobble by @world | Stardance
|
world
|
0
|
85.79
|
0
|
[]
|
[{"post_id": 81702, "ts": "202 [{"post_id": 81702, "ts": "2026-10-22T04:37:51Z", "hours": 10.7958, "text": "v0.10.0 - for Minecraft Java Edition 26.3 And lots of bug fix, irl usage case examples!"}, {"post_id": 45628, "ts": "2026-08-12T07:44:56Z", "hours": 44.2856, "text": "v0.9.0 - for Minecraft Java Edition 26.1.2! Some stdlib improvement Many experimental features I’m working on the real use case-side at now"}, {"post_id": 2166, "ts": "2026-06-04T14:45:00Z", "hours": 6.0519, "text": "v0.7.0 Release! Lots of QA Almost-fully stabilized version! See cobble language spec: https://github.com/deveworld/cobble/blob/main/docs/language.md"}, {"post_id": 1551, "ts": "2026-06-03T17:17:46Z", "hours": 11.1644, "text": "Been a while. We have new release candidate of v0.7.0 Lots of fixeas, and features Enjoy!"}, {"post_id": 881, "ts": "2026-06-02T16:35:33Z", "hours": 3.8467, "text": "Cobble v0.6.3 release 0.6.3: Stabilization And Test Depth Improve regression coverage around generated output. Convert recent release QA procedures into repeatable tests where practical. Harden command-tree cache behavior and diagnostics. New CLI command: cobble doctor, cobble inspect … etc We have nice real-time demo compile site!"}, {"post_id": 761, "ts": "2026-06-02T12:24:43Z", "hours": 7.5256, "text": "https://deveworld.github.io/cobble/ Online Demo Website!"}, {"post_id": 611, "ts": "2026-06-02T03:30:02Z", "hours": 2.1153, "text": "Devlog: Cobble v0.6.1 Cobble v0.6.1 is focused on making Minecraft data pack development more reliable, more current, and easier to validate. This release targets Minecraft Java Edition 26.1.2 and pack format 101.1, giving the compiler a clear modern baseline instead of trying to support older command formats. The biggest improvement is validation. Cobble can now automatically generate the default data/commands.json by downloading the Minecraft server through Mojang’s version manifest and running the server reports generator. It also supports fallback URLs, custom server jars, and SHA1 checks for more controlled environments. This makes command validation much easier to run consistently. We also improved diagnostics, source-map validation, and generated pack cleanup, especially around safer resource paths and stale generated functions. Standard library helpers were expanded, namespaced data pack resources are better supported, and the example projects now cover more real features. Finally, v0.6.1 adds a repeatable Purpur server QA workflow, so generated packs can be tested beyond static validation. Overall, this release is about confidence: clearer errors, stronger checks, and a better foundation for future Cobble releases."}]...
|
Title: Cobble by @world | Stardance
Devlogs:
Devl Title: Cobble by @world | Stardance
Devlogs:
Devlog: Cobble v0.6.1 Cobble v0.6.1 is focused on making Minecraft data pack development more reliable, more current, and easier to validate. This release targets Minecraft Java Edition 26.1.2 and pack format 101.1, giving the compiler a clear modern baseline instead of trying to support older command formats. The biggest improvement is validation. Cobble can now automatically generate the default data/commands.json by downloading the Minecraft server through Mojang’s version manifest and running the server reports generator. It also supports fallback URLs, custom server jars, and SHA1 checks for more controlled environments. This makes command validation much easier to run consistently. We also improved diagnostics, source-map validation, and generated pack cleanup, especially around safer resource paths and stale generated functions. Standard library helpers were expanded, namespaced data pack resources are better supported, and the example projects now cover more real features. Finally, v0.6.1 adds a repeatable Purpur server QA workflow, so generated packs can be tested beyond static validation. Overall, this release is about confidence: clearer errors, stronger checks, and a better foundation for future Cobble releases.
https://deveworld.github.io/cobble/ Online Demo Website!
Cobble v0.6.3 release 0.6.3: Stabilization And Test Depth Improve regression coverage around generated output. Convert recent release QA procedures into repeatable tests where practical. Harden command-tree cache behavior and diagnostics. New CLI command: cobble doctor, cobble inspect … etc We have nice real-time demo compile site!
Been a while. We have new release candidate of v0.7.0 Lots of fixeas, and features Enjoy!
v0.7.0 Release! Lots of QA Almost-fully stabilized version! See cobble language spec: https://github.com/deveworld/cobble/blob/main/docs/language.md
v0.9.0 - for Minecraft Java Edition 26.1.2! Some stdlib improvement Many experimental features I’m working on the real use case-side at now
v0.10.0 - for Minecraft Java Edition 26.3 And lots of bug fix, irl usage case examples!...
|
1792677259.6408203
|
1793282059.6408203
|
|
27611
|
skywalk by @zhirkopro115 | Stardance
|
zhirkopro115
|
1
|
85.39
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T19:23:24Z", "hours": 82.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello dear tester i made this game cs i one time i stumbled across game like that that i liked but i wanted to add a phew things to it cs i liked it but it wasnt my game so i created my own with my own features. I am very proud that i made autopilot and guide i think that was the hardest things to do ( and physics od course like gravity and whatewer ). What do you need to know to play? i think you only need to know that arrow up it the throttle up and arrow down is throttle down and also you need to know that wars is the q and e buttoms map is m and you dont need to worry about autopilot doing strange things it will do it just don touch it cs it will turn off and remember that the starter rocket can fly to the moon but not back ( cs there is not enough fuel) so if you wanted to go back to earth you would need to build a larger rocket and i think thats all . good luck testing it and have a good morning/afternoon/evening/night bye :)", "repo": "https://github.com/zhirkoalexander-maker/ellipse", "demo": "https://zhirkoalexander-maker.github.io/ellipse/"}]...
|
[{"post_id": 75570, "ts": "202 [{"post_id": 75570, "ts": "2026-09-30T13:54:19Z", "hours": 3.3944, "text": "hello dear testers i wrote yes i wrote this game with help of ai but now i got 35 procent ai ( like the autopilot is ai and map is ai ( on map just planets)) everithing else i wrote myself with the help of my dad . Please may you stop rejecting my project again and again ( i am so sorry i cant do more of this cs i am in 8 grade ant only on this week i had 9 tests ( this includes piano that i play)) i just did everithing i could to this project sorry and bye"}, {"post_id": 74141, "ts": "2026-09-26T19:15:30Z", "hours": 5.6719, "text": "helloooo everyone and today i officially ended my project. jst added a new model of the rocket ( cs it looked bad in my opinion ) and in the start if you joined for the first time there will be a guide waiting for you ( kinda struggled on that one ) and added this legs that hold the rocket when it is about to launch. I very wanted to add more things about the game to this devlog but if i will be adding here every feature it would cost me like 8 h so sorry but you can always check it out yourself here https://zhirkoalexander-maker.github.io/ellipse/ oh and i changed the game name from ellipse to challanger ( yeah that spaceship that exploded back in 1990 (sorry dont know the real date)) cs the game with name ellipse alredy exsit bla bla bla. oookey this is the end so thanks every one for beeng here and buy ( for some one who is rating my game pls dont rate me hard i am a starter and my dad helped me a lot and i am jst so bad in english ) btw if anybody wanted to know i am saving up on a bambulab mini ok soo now its the real end so bye and see you later :)"}, {"post_id": 72370, "ts": "2026-09-22T19:29:54Z", "hours": 8.8811, "text": "hi everyone today i made this cool crash animation that shows up when you try to land on a planet faster than 30 m/s (i think i might change it to higher soon like to 70 m/s so it will be easier to land) and i am working on a landing porcess but it is so hard and idk what to do but i want to do it myself without ai so sorry if it will be trash and sorry for the rocket details i am just so bad at drawing especially 3d models (i trided hard)and thats all. Oh and i changed the warp a lil bit so it dosent take you 5 mins to fly to the jupiter (warp is q and e buttons) oh and i added sas (autopilot) so if you dont want to fly to the moon yourself ( its preery hard) you can just press sas and sellect the planet but still it is preety much a concepcion but il try my best to do it thnks for reading bye :)"}, {"post_id": 36662, "ts": "2026-07-28T21:18:14Z", "hours": 10.3414, "text": "hello. ehhhhh….. i dont think you know how much love and my life i gave to this game and this is the best i can do. when i add new things there are 2 new bugs and that was happening for more than a 100 times. i dont think i will end this game cs i and tired. sorry fellas.(dont judge my devlogs please cs i spend most time coding) sorry and see you in another 10 h"}, {"post_id": 29128, "ts": "2026-07-15T19:57:31Z", "hours": 8.8847, "text": "today added the sun and added the debug screen to see what wrong (debug was very hard even harder than the game(wasted 5 h on it)) and i think i am going to add the guide in the menu(there is help button but it dosnt work yet) soo i think i is all for today and have a good thms :)"}, {"post_id": 27670, "ts": "2026-07-13T13:21:13Z", "hours": 10.0064, "text": "today nothing special in this devlog i fixed some bugs that were glitching the game. and added so you can actualy see the rocket in the vehicle assembly and i am going to make this better. and if you want to know the bugs i fixed and what i added (bet you dont) but i am still going to write that cs it need to be in the devlog. soo i fixed thet the roket couldnt land properly on the planets and wasnt crashing if the speed was to fast (more than 30 m/s) also fixed that the earth gravity was to strong and you couldnt tke off cs your fuel was running yout to fast. also added that the rocket have weight so if your rocket is to heavy you cant lift od aaand i added the sun day and night. if you made it here i am impressed (pls follow?) ok ok i am joking by have a good day (or night or evening or lunch or morning or 1 oclock or 2 or clock or….) ok see ya :) (follow @paper_01 )"}, {"post_id": 26589, "ts": "2026-07-11T14:37:27Z", "hours": 8.4506, "text": "this is video of my gameplay of the game and i like it like this is what i wanted to create but there is more to presice like landing on other planets crashes and more. you can play it right now there https://zhirkoalexander-maker.github.io/ellipse/ the game isnt finshed yet but if you want to play here. :)"}, {"post_id": 24968, "ts": "2026-07-08T21:09:46Z", "hours": 8.3767, "text": "today nothing crazy i added a bunch of models and fixed a few bugs (like gravity was to strong) also i added crash to the game so if you go into the planet to fast you crash into it and i added a normal working menu yeah and also 3d recurces i took from here if you want https://science.nasa.gov/3d-resources/ (nasa 3d models)"}, {"post_id": 22045, "ts": "2026-07-04T09:22:41Z", "hours": 3.5458, "text": "today i added a better texture of the rocket and a degree meter so you know in what posytion are you right now also added a phew buttons (they were there but they werent working properly) and i think in the next update i will add a smoother landing see ya ;)"}, {"post_id": 20091, "ts": "2026-07-01T16:40:56Z", "hours": 2.6222, "text": "StarWeld v0.4: real textures + 3D terrain on all planets, KSC launch pad at real coords, terrain collision matches visual mountains, controls locked on pad until liftoff, compressed orbits (Moon 4Mm), fuel ×1.5, reentry heat, HUD. Fixed: Moon clipping, ocean spawn, mountain clipping, TS clean. sorry i was writing it like robot cs i dont have much time. ps it still sucks i will fix it toomorow"}, {"post_id": 19436, "ts": "2026-06-30T19:15:07Z", "hours": 9.2897, "text": "today didnt do much but added some buttons to menu fixed some bugs and added better texure of earth and now its time for physyk of the game and honestly …. ahhh i think i will need help of ai or if someone can help with it pls comment"}, {"post_id": 17607, "ts": "2026-06-28T14:06:37Z", "hours": 6.4111, "text": "i wanted to create game where you build and launch you rocket ship to planets in solar system here is my first work"}]...
|
Title: skywalk by @zhirkopro115 | Stardance
Devlo Title: skywalk by @zhirkopro115 | Stardance
Devlogs:
i wanted to create game where you build and launch you rocket ship to planets in solar system here is my first work
today didnt do much but added some buttons to menu fixed some bugs and added better texure of earth and now its time for physyk of the game and honestly …. ahhh i think i will need help of ai or if someone can help with it pls comment
StarWeld v0.4: real textures + 3D terrain on all planets, KSC launch pad at real coords, terrain collision matches visual mountains, controls locked on pad until liftoff, compressed orbits (Moon 4Mm), fuel ×1.5, reentry heat, HUD. Fixed: Moon clipping, ocean spawn, mountain clipping, TS clean. sorry i was writing it like robot cs i dont have much time. ps it still sucks i will fix it toomorow
today i added a better texture of the rocket and a degree meter so you know in what posytion are you right now also added a phew buttons (they were there but they werent working properly) and i think in the next update i will add a smoother landing see ya ;)
today nothing crazy i added a bunch of models and fixed a few bugs (like gravity was to strong) also i added crash to the game so if you go into the planet to fast you crash into it and i added a normal working menu yeah and also 3d recurces i took from here if you want https://science.nasa.gov/3d-resources/ (nasa 3d models)
this is video of my gameplay of the game and i like it like this is what i wanted to create but there is more to presice like landing on other planets crashes and more. you can play it right now there https://zhirkoalexander-maker.github.io/ellipse/ the game isnt finshed yet but if you want to play here. :)
today nothing special in this devlog i fixed some bugs that were glitching the game. and added so you can actualy see the rocket in the vehicle assembly and i am going to make this better. and if you want to know the bugs i fixed and what i added (bet you dont) but i am still going to write that cs it need to be in the devlog. soo i fixed thet the roket couldnt land properly on the planets and wasnt crashing if the speed was to fast (more than 30 m/s) also fixed that the earth gravity was to strong and you couldnt tke off cs your fuel was running yout to fast. also added that the rocket have weight so if your rocket is to heavy you cant lift od aaand i added the sun day and night. if you made it here i am impressed (pls follow?) ok ok i am joking by have a good day (or night or evening or lunch or morning or 1 oclock or 2 or clock or….) ok see ya :) (follow @paper_01 )
today added the sun and added the debug screen to see what wrong (debug was very hard even harder than the game(wasted 5 h on it)) and i think i am going to add the guide in the menu(there is help button but it dosnt work yet) soo i think i is all for today and have a good thms :)
hello. ehhhhh….. i dont think you know how much love and my life i gave to this game and this is the best i can do. when i add new things there are 2 new bugs and that was happening for more than a 100 times. i dont think i will end this game cs i and tired. sorry fellas.(dont judge my devlogs please cs i spend most time coding) sorry and see you in another 10 h
hi everyone today i made this cool crash animation that shows up when you try to land on a planet faster than 30 m/s (i think i might change it to higher soon like to 70 m/s so it will be easier to land) and i am working on a landing porcess but it is so hard and idk what to do but i want to do it myself without ai so sorry if it will be trash and sorry for the rocket details i am just so bad at drawing especially 3d models (i trided hard)and thats all. Oh and i changed the warp a lil bit so it dosent take you 5 mins to fly to the jupiter (warp is q and e buttons) oh and i added sas (autopilot) so if you dont want to fly to the moon yourself ( its preery hard) you can just press sas and sellect the planet but still it is preety much a concepcion but il try my best to do it thnks for reading bye :)
helloooo everyone and today i officially ended my project. jst added a new model of the rocket ( cs it looked bad in my opinion ) and in the start if you joined for the first time there will be a guide waiting for you ( kinda struggled on that one ) and added this legs that hold the rocket when it is about to launch. I very wanted to add more things about the game to this devlog but if i will be adding here every feature it would cost me like 8 h so sorry but you can always check it out yourself here https://zhirkoalexander-maker.github.io/ellipse/ oh and i changed the game name from ellipse to challanger ( yeah that spaceship that exploded back in 1990 (sorry dont know the real date)) cs the game with name ellipse alredy exsit bla bla bla. oookey this is the end so thanks every one for beeng here and buy ( for some one who is rating my game pls dont rate me hard i am a starter and my dad helped me a lot and i am jst so bad in english ) btw if anybody wanted to know i am saving up on a bambulab mini ok soo now its the real end so bye and see you later :)
hello dear testers i wrote yes i wrote this game with help of ai but now i got 35 procent ai ( like the autopilot is ai and map is ai ( on map just planets)) everithing else i wrote myself with the help of my dad . Please may you stop rejecting my project again and again ( i am so sorry i cant do more of this cs i am in 8 grade ant only on this week i had 9 tests ( this includes piano that i play)) i just did everithing i could to this project sorry and bye
Ships:
Hello dear tester i made this game cs i one time i stumbled across game like that that i liked but i wanted to add a phew things to it cs i liked it but it wasnt my game so i created my own with my own features. I am very proud that i made autopilot and guide i think that was the hardest things to do ( and physics od course like gravity and whatewer ). What do you need to know to play? i think you only need to know that arrow up it the throttle up and arrow down is throttle down and also you need to know that wars is the q and e buttoms map is m and you dont need to worry about autopilot doing strange things it will do it just don touch it cs it will turn off and remember that the starter rocket can fly to the moon but not back ( cs there is not enough fuel) so if you wanted to go back to earth you would need to build a larger rocket and i think thats all . good luck testing it and have a good morning/afternoon/evening/night bye :)...
|
1793008105.6720877
|
1793094505.6720877
|
|
959
|
Ebeep by @Avizi | Stardance
|
Avizi
|
1
|
85.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-23T10:29:40Z", "hours": 85.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "my project is a “beeper” with an eink display, it features three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month!", "repo": "https://github.com/Av1zi/Ebeep", "demo": ""}]...
|
[{"post_id": 33374, "ts": "202 [{"post_id": 33374, "ts": "2026-07-23T07:45:06Z", "hours": 11.1325, "text": "Devlog #18 - The Final One my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I built two of them and gifted one to my GF for her birthday! so this is it, the last devlog for Ebeep. i finished the Blender showcase animation, check it out ⬇️⬇️⬇️ took way longer than expected since I’ve never really used blender for anything like this before, but I’m happy with how it turned out. (or kicad) as for the PCB, the design is fully done, routed, and ready to export to gerbers, but I decided not to actually order it right now. the perfboard build already works and does the job, and the PCB was mostly a “because I can” side project once I started documenting everything (devlog #16 lol). might revisit it in the future if I ever want to build a v2 or make more of these, but for now the current build is what’s shipping as “done.” looking back this project went through basically everything a project can go through: missed deadlines, a broken 3d printer, a bug that silently deleted my girlfriend’s messages for a week without me noticing, failed prints, finals eating my motivation and somehow it still came out the other side working, on both devices, doing everything I wanted it to do. if I had to do it again I’d probably: start the PCB earlier instead of perfboard + rework set up proper MQTT retained-message handling from day one instead of patching it in later. budget way more time for the case than I did CAD alone ate multiple redesigns and i still needed help from my friend to finish it i really need to work on my CAD skills but honestly, for a project that started as “let’s port some code to an esp32 I’m scared to solder,” I’m really proud of where it landed. whats next? id really love to keep working and making it the best i can (the 3d render is really rough as i had to finish it TODAY and some of the code is still messy), but realistically, nothing planned this is the ‘finish’ line. maybe a better PCB with a good showcase with cleaner code and a case that actually houses the PCB someday, maybe not. either way, thanks to everyone who followed along since the start. TL;DR finished the showcase render, PCB design is complete but staying unbuilt for now, and the project is officially ‘done’. thanks for reading 🎉"}, {"post_id": 32922, "ts": "2026-07-22T12:11:04Z", "hours": 8.3689, "text": "Devlog #17 pcb is done and showcase animation my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! i finished the pcb and refined it! yesterday ish i had like an idea to make an animation in blender to showcase the device for the final devlog so i started working on it nect devlog will be the final one! (i think)"}, {"post_id": 30954, "ts": "2026-07-18T23:27:55Z", "hours": 10.3483, "text": "Devlog #16 documenting (and accidental PCB?) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! so i finally sat down to start documenting my work, but while doing so… i might have gone a little over the top and started designing a custom PCB for the project ;-;it’s pretty fun ngl, i’m really enjoying working on it! ohh also, i fixed a MAJOR bug in my code. i have absolutely no clue how i didn’t notice it earlier, but when i was trying to fix bugs last week, i accidentally introduced a new one that deleted messages the exact second they arrived. so yeah… i didn’t get any messages from my girlfriend for a whole week lol. oops. and if anyone here knows how to make pcbs please help me i have no clue what im doing thanks!"}, {"post_id": 29566, "ts": "2026-07-16T16:26:24Z", "hours": 1.05, "text": "Devlog #15 Small changes my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! i a couple of issues with blackjack: * can now display around 11 cards(more than that is extremly unlikely so i didnt bother) * dealer no longer draws cards if u bust * now the split looks much much cleaner now even if one device is disconnected the msg will be stored and displayed when the device connects to the wifi some other stuff i forgot"}, {"post_id": 28397, "ts": "2026-07-14T17:07:08Z", "hours": 3.7961, "text": "Devlog #14 - The project is compleated! (if there arent ane new bugs) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! what did i do? i added connect 4 & blackJack both of em should work now i fixed a problem with the wifi connection made new art for the connect 4 & blackjack to replace the place holders. i have already gifted the other device and shes probably reading this devlog so hello and sorry it took long all i have to do is finish up the docs and the github page and then were ready to ship"}, {"post_id": 25346, "ts": "2026-07-09T16:06:15Z", "hours": 6.6869, "text": "Devlog #13 The project is completed (mostly) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! Just finished building my second ebeep device! The good news are it came out SO much better than the first one, It might not be super obvious from the photos but trust me the difference IRL is HUGE. The Type-C connection actually fits properly this time! and the two devices are communicating great, and I even managed to run multiple rounds of Tic-Tac-Toe. . As for the bad news, It seems like every other day I encounter a new issue usually related to Wi-Fi or server connectivity. hopefully my janky code i wrote so far successfully patched them out. I’m trying to squash as many as possible before I gift one to my girlfriend later this week. If I have time, I’ll try to finish up Connect 4 as well and i think ill give up on the poker game i dont want to delay it any longer lol. . Also, for those who were wondering, we landed in 30th place (out of 36?) at the FRC competition"}, {"post_id": 19344, "ts": "2026-06-30T16:56:56Z", "hours": 4.9703, "text": "Devlog #12 THE FIRST ONE IS DONE my project in short to those who havent seen it yet: My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! I soldered everything up, crammed it into the box, and it works now. hooray! The only issue I had was that the negative terminal on the bottom of the esp32 disconnected when I tried to fit it into the box. I’m now in the process of testing and ironing out bugs. So far i found two the battery readout is weird but it works, and the battery runs out way too quickly, so I’m trying to fix those issues. unfortunately, I don’t know when I’ll be able to finish the second one since the 3D printer broke down (I literally bought it last week ) It took me a while to finish this one since I had an FRC competition to attend and couldnt finish everything in 1 day."}, {"post_id": 16357, "ts": "2026-06-26T16:42:53Z", "hours": 6.3789, "text": "Devlog #11 we are 80% there! my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up.ill be building two of them and gifting one to my GF on her birthday! what did i do? i finished the CAD (i hope), and started soldering everything together with the help of my dad(hes the best) the electronic plate is coming together nicly its not done yet but its mostly done!! and i will probably finish the first beeper TODAY!"}, {"post_id": 14554, "ts": "2026-06-23T18:34:15Z", "hours": 2.7692, "text": "Devlog #10 i missed the deadline :( (failed print after failed print) my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday! Her birthday was yesterday, i missed the deadline and my motivation is at an all time low. The code is done (i hope) but the 3d case is so horrible. its way too big and wastes so much material on useless spots and way too little on places in places that need it. the whole thing needs a redesign and I’m working on that but unfortunately ill have to postpone it by at least two days since i have 1 more final exam i need to take. and i just feel awful that i have to give her the birthday present with a week+ delay TL;DR i missed the dead line and I’m really down, the case needs a major redesign and im yet to even start soldering the code probably is done"}, {"post_id": 13239, "ts": "2026-06-21T17:54:28Z", "hours": 2.5981, "text": "Devlog #9 (1 day until GF birthday) TL;DR: finished tic tac toe, added icons to show if the bepper lost internet connection and updated the 3d model my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? online tic tac toe works now icons to show if the connection is lost and automatically reconnect updated 3d model to actually use M4 screws how do they talk to eachother? i made a comic to demonstrate it cuz ik yall aint reading all that but if u want to read it in more detail: the first player sends to the other a message “TTT_JOIN” in /games then start listening to /games/TTT (channel where all the game communication will happen) the second player will receive that message and will get a notification that someone is waiting to play tic tac toe then if he wants he will join the the game and send a msg on /games/TTT that he joined both screens will update and show the tic tac toe board. each player will take his turn and send a message in /games/TTT with a row and a column of the place he chose to play and the screen will update accordingly. when the game ends they could request a rematch and will start this whole process again"}, {"post_id": 12102, "ts": "2026-06-19T19:09:33Z", "hours": 8.5831, "text": "Devlog 8 (3 DAYS LEFT UNTILL GF BIRTHDAY) CAD IS DONE what did i do? finished the cad hopefully will start printing on sunday when my new 3d printer arrives (and hopefully wont have to change anything bc i have 3 DAYS LEFT ) I REWORKED THE ENTIRE MQTT CODE (made the beeper talk to each other differently in order to make games possible) almost done with the online tic tac toe (the more indepth devlog will be the next one) fixed like 4 bugs and another 2 popped up kill me whats next? finish EVERYTHING before my GF birthday on Tuesday (sorry for this short devlog dont have much to say about the cad model the one on the code will come tmr hopefully)"}, {"post_id": 7523, "ts": "2026-06-12T15:45:53Z", "hours": 4.0075, "text": "Devlog #7 Its a big one what did i do? added a way to set the wifi password from your phone made the beeper actually able to talk and send messages fixed a lot of bugs that popped up after the switch to esp32 added a way to scroll faster for convince me and my friend started designing a case we will 3d print whats next? finish design a 3d printed case maybe finish one of the games side notes: i added a short video with a demo of everything working together would love to hear your thoughts about it background music: In the pool by kensuke ushio (forgor who made the piano cover im using) update on me: physics finals is in 3 days and I’m so cooked might not be able to design the case for a while"}, {"post_id": 6183, "ts": "2026-06-10T11:59:50Z", "hours": 2.0744, "text": "Devlog #6 my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? the esp32 arrived yesterday its much much smaller than i expected and i have no clue how im going to solder it later ;-; anyways so i worked on porting my current code from arduino to esp32, its seems to be working as intended. now i just need to add all the missing features like the mqtt protocol and wifi portal. whats next? add the wifi portal (so i wont have to hardcode the wifi credentials in the code) make the esp32 work with the mqtt protocol design a 3d printed case finish the games (not really a priority right now) update on me: more finals soon yay :/"}, {"post_id": 4877, "ts": "2026-06-08T13:14:45Z", "hours": 1.6892, "text": "Devlog #5! to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? i was bored since i cant really work on the project and have to wait for my esp32 to arrive >:( so i went on a side quest and added the game select menu, nothing major i also need to design the icons since they are just place holders from google whats next? wait for esp32 to arrive >:( actually make blackjack and the other games ask my friend to 3d help me 3d model the case update on me: sorry for the long wait i had a bunch of shit 2 do and war with iran ;-;"}, {"post_id": 3074, "ts": "2026-06-05T23:33:08Z", "hours": 2.1186, "text": "Devlog #4! . to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? . i tired connecting my current setup to the MQTT broker and make it actually able to talk to other devices BUT IT DIDNT WORK i spent hours debugging it, only to come to the conclusion that i CANT do it with my current setup and i NEED the esp32 to continue coding or at least it will be much easier every day that passes i hate AliExpress even more it should have arrived 4 days ago ;-; the only useful i did is figure out how .gitignore work so now i dont need a hotspot lol whats next? wait for esp32 to arrive >:( update on me: . nothing rely new from yesterday . side note i just noticed ive never actually shown you how the UI i made previously works. so i attached a short walk through"}, {"post_id": 2424, "ts": "2026-06-04T22:02:29Z", "hours": 1.2675, "text": "Devlog #3 . to those haven’t seen my project yet in short: . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do today? . today i added Wifi! since i still dont have my esp32 (damm you AliExpress and your slow shipping), i wont be able to use the cool web UI library i wanted to use… so i changed my phones hotspot to the most boring name & password i could think of and hard coded those credentials in (i dont know how to hide sensitive info from GitHub and didn’t want to add my real wifi lol) edit: i also added the little wifi ui thingy you see in the picture whats next? i will research more about the MQTT protocol my two devices will use to communicate add end to end encryption (both devices will have a hard coded secret “password” they will use to encrypt and decrypt the messages) if esp arrives soon (WHICH IT SHOULD) ill connect it to the bread board and change the code accordingly and much more just later on id love to hear what your thoughts in the comments :) update on me: today was my computer science finals and it was 5 hours. i was pretty burned out after that so didn’t do that much today either :/ the next couple days are packed with personal stuff and more final exams so u might not hear from me soon… ill try to work on this project at least an hour every day so if u do it will be small changes unfortunately"}, {"post_id": 1723, "ts": "2026-06-03T21:50:03Z", "hours": 1.3117, "text": "Devlog #2 My project Ebeep is starting to take a bit more shape! . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! . i rewrote almost the ENTIRE UI since last time the code i wrote was pretty bad and it had terrible UI. hopefully tomorrow i could work on actually connecting it to the internet and work on basic end to end encryption (maybe?). also i really hope ill get my esp32s soon so i could actually test my code on that instead of my arduino and design my 3d case for it. . today and yesterday werent very productive since my CS finals are tomorrow! so wish me luck!"}, {"post_id": 1088, "ts": "2026-06-02T22:16:57Z", "hours": 5.4681, "text": "day 1 of my ebeep project, i managed to make the eInk display work properly after HOURS of trouble shooting code. (apparently if it says 3.3V only it means dont connect a 5V Arduino to it oops) i managed to make the sick UI hopefully the esp32 and the battery will come soon so i can start designing the case for it"}]...
|
Title: Ebeep by @Avizi | Stardance
Devlogs:
day 1 Title: Ebeep by @Avizi | Stardance
Devlogs:
day 1 of my ebeep project, i managed to make the eInk display work properly after HOURS of trouble shooting code. (apparently if it says 3.3V only it means dont connect a 5V Arduino to it oops) i managed to make the sick UI hopefully the esp32 and the battery will come soon so i can start designing the case for it
Devlog #2 My project Ebeep is starting to take a bit more shape! . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! . i rewrote almost the ENTIRE UI since last time the code i wrote was pretty bad and it had terrible UI. hopefully tomorrow i could work on actually connecting it to the internet and work on basic end to end encryption (maybe?). also i really hope ill get my esp32s soon so i could actually test my code on that instead of my arduino and design my 3d case for it. . today and yesterday werent very productive since my CS finals are tomorrow! so wish me luck!
Devlog #3 . to those haven’t seen my project yet in short: . my project is a “beeper” with an eink display (like the name suggests). ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do today? . today i added Wifi! since i still dont have my esp32 (damm you AliExpress and your slow shipping), i wont be able to use the cool web UI library i wanted to use… so i changed my phones hotspot to the most boring name & password i could think of and hard coded those credentials in (i dont know how to hide sensitive info from GitHub and didn’t want to add my real wifi lol) edit: i also added the little wifi ui thingy you see in the picture whats next? i will research more about the MQTT protocol my two devices will use to communicate add end to end encryption (both devices will have a hard coded secret “password” they will use to encrypt and decrypt the messages) if esp arrives soon (WHICH IT SHOULD) ill connect it to the bread board and change the code accordingly and much more just later on id love to hear what your thoughts in the comments :) update on me: today was my computer science finals and it was 5 hours. i was pretty burned out after that so didn’t do that much today either :/ the next couple days are packed with personal stuff and more final exams so u might not hear from me soon… ill try to work on this project at least an hour every day so if u do it will be small changes unfortunately
Devlog #4! . to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? . i tired connecting my current setup to the MQTT broker and make it actually able to talk to other devices BUT IT DIDNT WORK i spent hours debugging it, only to come to the conclusion that i CANT do it with my current setup and i NEED the esp32 to continue coding or at least it will be much easier every day that passes i hate AliExpress even more it should have arrived 4 days ago ;-; the only useful i did is figure out how .gitignore work so now i dont need a hotspot lol whats next? wait for esp32 to arrive >:( update on me: . nothing rely new from yesterday . side note i just noticed ive never actually shown you how the UI i made previously works. so i attached a short walk through
Devlog #5! to those haven’t seen my project yet in short: my project is a “beeper” with an eink display ill be building two of them and gifting one to my GF on her birthday later this month! it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up what did i do? i was bored since i cant really work on the project and have to wait for my esp32 to arrive >:( so i went on a side quest and added the game select menu, nothing major i also need to design the icons since they are just place holders from google whats next? wait for esp32 to arrive >:( actually make blackjack and the other games ask my friend to 3d help me 3d model the case update on me: sorry for the long wait i had a bunch of shit 2 do and war with iran ;-;
Devlog #6 my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? the esp32 arrived yesterday its much much smaller than i expected and i have no clue how im going to solder it later ;-; anyways so i worked on porting my current code from arduino to esp32, its seems to be working as intended. now i just need to add all the missing features like the mqtt protocol and wifi portal. whats next? add the wifi portal (so i wont have to hardcode the wifi credentials in the code) make the esp32 work with the mqtt protocol design a 3d printed case finish the games (not really a priority right now) update on me: more finals soon yay :/
Devlog #7 Its a big one what did i do? added a way to set the wifi password from your phone made the beeper actually able to talk and send messages fixed a lot of bugs that popped up after the switch to esp32 added a way to scroll faster for convince me and my friend started designing a case we will 3d print whats next? finish design a 3d printed case maybe finish one of the games side notes: i added a short video with a demo of everything working together would love to hear your thoughts about it background music: In the pool by kensuke ushio (forgor who made the piano cover im using) update on me: physics finals is in 3 days and I’m so cooked might not be able to design the case for a while
Devlog 8 (3 DAYS LEFT UNTILL GF BIRTHDAY) CAD IS DONE what did i do? finished the cad hopefully will start printing on sunday when my new 3d printer arrives (and hopefully wont have to change anything bc i have 3 DAYS LEFT ) I REWORKED THE ENTIRE MQTT CODE (made the beeper talk to each other differently in order to make games possible) almost done with the online tic tac toe (the more indepth devlog will be the next one) fixed like 4 bugs and another 2 popped up kill me whats next? finish EVERYTHING before my GF birthday on Tuesday (sorry for this short devlog dont have much to say about the cad model the one on the code will come tmr hopefully)
Devlog #9 (1 day until GF birthday) TL;DR: finished tic tac toe, added icons to show if the bepper lost internet connection and updated the 3d model my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month! what did i do? online tic tac toe works now icons to show if the connection is lost and automatically reconnect updated 3d model to actually use M4 screws how do they talk to eachother? i made a comic to demonstrate it cuz ik yall aint reading all that but if u want to read it in more detail: the first player sends to the other a message “TTT_JOIN” in /games then start listening to /games/TTT (channel where all the game communication will happen) the second player will receive that message and will get a notification that someone is waiting to play tic tac toe then if he wants he will join the the game and send a msg on /games/TTT that he joined both screens will update and show the tic tac toe board. each player will take his turn and send a message in /games/TTT with a row and a column of the place he chose to play and the screen will update accordingly. when the game ends they could request a rematch and will start this whole process again
Devlog #10 i missed the deadline :( (failed print after failed print) my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday! Her birthday was yesterday, i missed the deadline and my motivation is at an all time low. The code is done (i hope) but the 3d case is so horrible. its way too big and wastes so much material on useless spots and way too little on places in places that need it. the whole thing needs a redesign and I’m working on that but unfortunately ill have to postpone it by at least two days since i have 1 more final exam i need to take. and i just feel awful that i have to give her the birthday present with a week+ delay TL;DR i missed the dead line and I’m really down, the case needs a major redesign and im yet to even start soldering the code probably is done
Devlog #11 we are 80% there! my project in short my project is a “beeper” with an eink display, it will feature three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up.ill be building two of them and gifting one to my GF on her birthday! what did i do? i finished the CAD (i hope), and started soldering everything together with the help of my dad(hes the best) the electronic plate is coming together nicly its not done yet but its mostly done!! and i will probably finish the first beeper TODAY!
Devlog #12 THE FIRST ONE IS DONE my project in short to those who havent seen it yet: My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! I soldered everything up, crammed it into the box, and it works now. hooray! The only issue I had was that the negative terminal on the bottom of the esp32 disconnected when I tried to fit it into the box. I’m now in the process of testing and ironing out bugs. So far i found two the battery readout is weird but it works, and the battery runs out way too quickly, so I’m trying to fix those issues. unfortunately, I don’t know when I’ll be able to finish the second one since the 3D printer broke down (I literally bought it last week ) It took me a while to finish this one since I had an FRC competition to attend and couldnt finish everything in 1 day.
Devlog #13 The project is completed (mostly) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! Just finished building my second ebeep device! The good news are it came out SO much better than the first one, It might not be super obvious from the photos but trust me the difference IRL is HUGE. The Type-C connection actually fits properly this time! and the two devices are communicating great, and I even managed to run multiple rounds of Tic-Tac-Toe. . As for the bad news, It seems like every other day I encounter a new issue usually related to Wi-Fi or server connectivity. hopefully my janky code i wrote so far successfully patched them out. I’m trying to squash as many as possible before I gift one to my girlfriend later this week. If I have time, I’ll try to finish up Connect 4 as well and i think ill give up on the poker game i dont want to delay it any longer lol. . Also, for those who were wondering, we landed in 30th place (out of 36?) at the FRC competition
Devlog #14 - The project is compleated! (if there arent ane new bugs) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! what did i do? i added connect 4 & blackJack both of em should work now i fixed a problem with the wifi connection made new art for the connect 4 & blackjack to replace the place holders. i have already gifted the other device and shes probably reading this devlog so hello and sorry it took long all i have to do is finish up the docs and the github page and then were ready to ship
Devlog #15 Small changes my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together.I’ll be building two of them and gifting one to my GF for her birthday! i a couple of issues with blackjack: * can now display around 11 cards(more than that is extremly unlikely so i didnt bother) * dealer no longer draws cards if u bust * now the split looks much much cleaner now even if one device is disconnected the msg will be stored and displayed when the device connects to the wifi some other stuff i forgot
Devlog #16 documenting (and accidental PCB?) my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! so i finally sat down to start documenting my work, but while doing so… i might have gone a little over the top and started designing a custom PCB for the project ;-;it’s pretty fun ngl, i’m really enjoying working on it! ohh also, i fixed a MAJOR bug in my code. i have absolutely no clue how i didn’t notice it earlier, but when i was trying to fix bugs last week, i accidentally introduced a new one that deleted messages the exact second they arrived. so yeah… i didn’t get any messages from my girlfriend for a whole week lol. oops. and if anyone here knows how to make pcbs please help me i have no clue what im doing thanks!
Devlog #17 pcb is done and showcase animation my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I’ll be building two of them and gifting one to my GF for her birthday! i finished the pcb and refined it! yesterday ish i had like an idea to make an animation in blender to showcase the device for the final devlog so i started working on it nect devlog will be the final one! (i think)
Devlog #18 - The Final One my project in short to those who havent seen it yet My project is a “beeper” with an e-ink display. It features three low-profile mechanical switches, an ESP32, a battery, and a 3D-printed case to tie it all together. I built two of them and gifted one to my GF for her birthday! so this is it, the last devlog for Ebeep. i finished the Blender showcase animation, check it out ⬇️⬇️⬇️ took way longer than expected since I’ve never really used blender for anything like this before, but I’m happy with how it turned out. (or kicad) as for the PCB, the design is fully done, routed, and ready to export to gerbers, but I decided not to actually order it right now. the perfboard build already works and does the job, and the PCB was mostly a “because I can” side project once I started documenting everything (devlog #16 lol). might revisit it in the future if I ever want to build a v2 or make more of these, but for now the current build is what’s shipping as “done.” looking back this project went through basically everything a project can go through: missed deadlines, a broken 3d printer, a bug that silently deleted my girlfriend’s messages for a week without me noticing, failed prints, finals eating my motivation and somehow it still came out the other side working, on both devices, doing everything I wanted it to do. if I had to do it again I’d probably: start the PCB earlier instead of perfboard + rework set up proper MQTT retained-message handling from day one instead of patching it in later. budget way more time for the case than I did CAD alone ate multiple redesigns and i still needed help from my friend to finish it i really need to work on my CAD skills but honestly, for a project that started as “let’s port some code to an esp32 I’m scared to solder,” I’m really proud of where it landed. whats next? id really love to keep working and making it the best i can (the 3d render is really rough as i had to finish it TODAY and some of the code is still messy), but realistically, nothing planned this is the ‘finish’ line. maybe a better PCB with a good showcase with cleaner code and a case that actually houses the PCB someday, maybe not. either way, thanks to everyone who followed along since the start. TL;DR finished the showcase render, PCB design is complete but staying unbuilt for now, and the project is officially ‘done’. thanks for reading 🎉
Ships:
my project is a “beeper” with an eink display, it features three low profile mechanical switches, esp32, battery and a 3d printed case to tie it all up. ill be building two of them and gifting one to my GF on her birthday later this month!...
|
1792997652.3780808
|
1793084052.3780808
|
|
1327
|
Cirqmon by @itsdecodeaditya | Stardance
|
itsdecodeaditya
|
1
|
85.0
|
1594
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T21:50:13Z", "hours": 85.0, "multiplier": 19.19, "payout": 1594, "blessing": "neutral", "text": "Cirqmon is a quantum computing circuit builder on web and It’s idea was like when I used to go on tools like IBM’s or other quantum circuit simulators they used to feel like so dry and academic, So I thought why don’t I make one that’s colorful, looks like game because I guess learning deep tech should not mean that you lose colors. Earlier I thought I would just build UI layer on top of Qiskit via Python API, then I thought what will I learn and from a quite a long time I wanted to build something that involves maths and physics so i thought I should build whole thing by myself. The whole thing was Actually a bit challenging on understanding how Q spheres or Tensors or how bitwise calculations work, aligning it will a Good UI theme, So I just learned and build. sometimes I thought How will i finish or how will I map that understanding into code But I guess AI as a Teacher helped me a lot. For Others to try it you should know about Quantum Gates, read the Readme once and I guess you will understand the project.", "repo": "https://github.com/decodeaditya/cirqmon/", "demo": "https://cirqmon.vercel.app/"}]...
|
[{"post_id": 71464, "ts": "202 [{"post_id": 71464, "ts": "2026-09-20T21:31:02Z", "hours": 2.8469, "text": "Cirqmon Devlog #12 So I guess it’s final Devlog. Here firstly I updated Readme with new UI based snapshots. Made custom Alert box so it matches the theme instead of browser native alert box. Fixed bug in which earlier the gates were being added in circuit without checking if that Block is being used by other gate and its corresponding qubits. I hope if I don’t get a new problem to fix I will ship it;"}, {"post_id": 71194, "ts": "2026-09-20T12:52:50Z", "hours": 8.1419, "text": "Cirqmon Devlog #11 So Guys, I have finally finalized the Cirqmon Playground UI. I replaced the old glassmorphism theme with a rougher, more irregular visual style. Earlier I got feedback that, the old layout felt cluttered because the quantum gates were spread far apart and Due to Space Background and glassmorphism, it looked like Vibe coded. I have now grouped all the gates together in one place to make the interface cleaner and easier to navigate. Here Is what I changed: Removed the Home button. Clicking the Cirqmon logo now takes gets back to the home page. Updated Playground icons with Animal GIFs to give it more lively and engaging appearance. As mentioned above, reduced the use of glassmorphism to due to flickering issues and implemented like hand drawn solid color based UI. Attaching a video Snapshot so you can see changes made. also, The README is the only major task left. Once that’s finished, I’ll be ready to ship the project!"}, {"post_id": 66582, "ts": "2026-09-12T12:50:46Z", "hours": 8.0617, "text": "Cirqmon Devlog #10 Every time I think My project is ready to ship I find something missing and then it gets delayed. After I finished the blog on Deutsch Jozsa algorithm the project worked, as it needed only Single and Double qubit gate. When I started writing about Grover’s algorithm I realized the need of Three Qubit gate too as it needed CCZ gate to flip the phase to achieve 111 State. So I had to fix that. Here is what I did: Firstly as I told earlier I added the 3 Qubit gate feature, the underlying simulator code is working as old Inflating the Matrix approach, I only had to make it work for 3 Qubit gates. Secondly once I was on huddle where we were discussing about Boba bash, I presented the project to people and some said like ’it looks like too stuffed or some said it looked vibe coded. So I thought its a good feedback to work on. Then I improvised the Homepage so it feels like Apple like minimal theme while maintaining game feel. I also added the Background video instead of static image. Thirdly the blog page was pending so I made blog page with similar theme as I updated along with a option to search among the medium posts. So this was what I updated in this Version and now I needs that code review and matching the theme on Playground too. Just Hope I don’t get stuck this time and wrap it up. Thanks for Reading!"}, {"post_id": 46862, "ts": "2026-08-14T12:20:36Z", "hours": 6.1919, "text": "Cirqmon #Devlog 9 This version is more of testing, I thought that I should write blogs and use examples using Cirqmon, So Written 2 blogs on Quantum computing for Beginners and Deutsch Joza algorithm. While writing it I thought I should Show them on Cirqmon Hompage too, earlier I thought I would replace blogs part in Homepage with Just a medium link of mine, but later when I read on internet that medium allows to see RSS version of Blogs so I parsed RSS to JSON and fetched Blogs related Quantum Computing. Along with it, made Qubits limits to 8 and steps to 24 and made a centralized Config file to control parameters from there. Added a Toggle so People can switch indentation of Qubit states either Big endian or Little Endian. Updated Homepage button with Pikachu Button I found while explore on UI verse, also added link to Readme guide. Now After writing Blogs I am getting surge of confidence inside that I understood Quantum Computing more Better. One of topics I am curious about is Cybersecurity and one of Algorithm that challenges classical Approaches like RSA is Shor’s Algorithm so next I am going to explore it, Also along with all these, I have updated Some images in readme too and going to Push updates, so do Share Feedbacks."}, {"post_id": 43067, "ts": "2026-08-08T04:03:36Z", "hours": 3.9364, "text": "Cirqmon #Devlog 8 Actually I was telling my friend about project, and I realized that the Project should have better readme that tells about features, Examples, and Tour. Also added HSL wheel in Q sphere so People can Use it as a reference. Initially its faded, you hover it and it gets Visible. Also the Latest version is now Live with multi qubit gates."}, {"post_id": 41965, "ts": "2026-08-06T14:25:38Z", "hours": 8.0969, "text": "Cirqmon Devlog #7 So, I am posting this Devlog after interval of Almost 20 days since last Posted. Why delay? During this time I learnt a Lot about Quantum computing. Infact, I was planning to ship the Project with Single qubit gates only, but after I joined Qiskit Global Summer School, then I realised that main game in Quantum computing is about entanglement, that comes with multi Qubit gates like CX, CZ, SWAP etc. The Media attached is Demo is of a GHZ circuit is made by combination of H gate and CNOT gates. Basically a GHZ state is larger version of Bell state. For N qubits, only two possible states shows Up with equal probability i.e 1/root2 (000…n + 111…n). So here is What I made Changes and How : 1) 2 Qubit Gates Implementation - So Earlier Version was for Only 1 Qubit Gates, and it used Tensor product. Where it used to tensor Each step and then Multiply each step to StateVector in successive manner. But for 2 Qubit gates, tensor method gets problematic because multi qubit gates need to have dependence on other qubits too, meanwhile tensor assumes every gate on that step is independent and it builds large matrix. This loses dependence and relation as demanded by multi qubit gates. So then I got to know of approach called Embedding or Inflation where we first create Temporary matrix of 2^n rows and 2^n Columns with each entry initially as 0, then we start looping through columns of that Matrix (which represent possibility, like iteration for 0 is actually 00 in binary) and then, matching it with rows and columns in Gate matrix, after that we force the bit in Temporary Matrix’s respective column and row to align with what Gate’s matrix bit has? Either 0 or 1. Finally we get Result of application in that Temporary matrix which we multiply with StateVector later on. That’s how This Inflation Approach works. 2) Applied Phase angle Indicator Now, Quantum State’s node’s color in Q sphere shows its phase Angle, which can be from PI to -PI, calculated using formula tan2a(y,x) , then we constraint it from 0 to 2PI, later convert to degrees, then feeding that value as HUE value in HSL colour format keeping lightness as 50% and Saturation 100% and then it corresponds to Phase Angle with color that degree, like 0deg is red, 90deg is green etc. So this was Major Changes I did along with some Style changes and Minor error fixing that appeared during changing the Simulator’s Approach. And to be very Honest at when I started to Write code for 2 qubit Gates, I earlier thought I would Do something that I dont have to change Simulator, but those were still just making me cry. So finally I gone to AI to learn and for almost 2 days new experiments were going out of head and that way almost I wasted Hours and then to experiment more and Stop Tracking Hackatime since I knew It would track more hours for Experiments too, So I coded in Cursor (Without Any AI, Just as Other Editor) Untracked. At the End it worked :) Now Finally Majority part is Done, after few More Edits, Will Ship it soon!"}, {"post_id": 28525, "ts": "2026-07-14T20:44:03Z", "hours": 7.3483, "text": "Devlog #6 :) So Hey People, I am feeling Immensely satisfied that Q Sphere feature is Mostly done. Also the GateWiki part is also done that tells You about Gate you Clicked on Gates Tray, again to tell you can drag gates into Circuit to build and Tap to know about it . May be I also link blogs on that Later. Now about Q Sphere Part Okay , Now let me share about Making of Q Sphere Part , So earlier I was not able to visualize it, but somehow I got to Know about Spherical Coordinates which is dependent on: theta : angle of Line from Z Axis phi : angle of Line from x Axis But clicked finally after frustration of not understanding it earlier. Then I gone to Google searching to see 3d visuals and AI to understand how we calculate those angles: So - Based on hamming weights (Means how many 1s in that State, Suppose in |01> has 1 1s and 011 have 2 1s ) and total qubits which help us find theta and divide sphere into sort of rings for similar nodes/lines of same hamming weights in same ring. Then we find how we calculate phi based on total active states in each ring and slicing ring into same proportion. I don’t know why but that was a finally a kick for me :) Finally since you will plot lines and nodes on spherical surface you have to convert theta and phi to coordinates [x, y, z] which you do using polar coordinates . Then after plotting them, a major part of Q sphere is made. now as you can see on 2nd screenshot left side the Sphere shows nodes for respective State. more chances of being 0 is on upper half and more 1 chance on bottom half. Structured the folders Also I worked on code Structure to keep all algos separated: To parse stateVectors Parse the frontend data to json circuit instructions Making all q sphere data from stateVectors parsing Code to export in Qiskit. more such functions too.. So yeah that was work I did, little more things is needed to build, after that project is done. Adding some multi qubit gates is next important thing now. I would be pushing on Github this Version and Vercel too now. Go check it out. Namaste!!!"}, {"post_id": 27203, "ts": "2026-07-12T15:29:23Z", "hours": 8.8928, "text": "Devlog #5 :) To be very honest I forget that its 8 hours 47 minutes in hackatime and it didn’t posted devlog until I got a Notification on slack. Sooo Guys! In this part of work I had to decide a thing that should I add Visualization of Qubits or not and then I realized that’s the whole point of project [to let people easily visualize whats happening]. So thats why I have decided add Q sphere . Folder Structure First of all I realized that my project was using url images and project structure was actually messing up as files and folders were increasing, so I decided to first organise the chaos and downloading all internet 3d assets in project. [Screenshot -1]. Because without a better organization of project it would get intimidatingly hard for others to contribute. Big Endian vs Little Endian Now second part is making the Result page of Qubit execution match that 3d glassmorphism design and white browsing through IBM composer (Tool for making Circuits) I got to observe that states were actually reverse in order. Suppose you applied hadamard gate to first qubit in 2 qubit system so instead of showing Probabilities of states as |00> = 50% , |01> = 0 , |10> = 50% , |11> = 0 , it reversed for 01 and 10. So after reading on internet about this I got to know that both ways are right and just differs because order you calcuate tensors: G1 * G2 * G3.. gives you Big Endian Version which considers least qubit as important Vice versa in case of Little Endian as IBM uses. So I implemented both in project. Earlier I thought I broke a physics Law [haha.] Making Q Sphere Its for Q sphere [2nd screenshot], that’s what help you understand statevector, because we can’t imagine more than 3D, so IBM come with this method. Basically I have used react 3 fiber that helps us write Three.js in react easily, using JSX instead of js manually, and it shows 3 lines in space which represent each state in vector: Bigger the node on top, bigger its probability . Color tells phase angle from origin. More 0 probability the vector will be pointing on upper hemisphere’s top and similarly more 1 will point on bottom of lower hemisphere. I am still processing [x,y,z] coordinates of line. Q sphere now shows random plots, I have to parse state vector to correct representation, will tell you about it in next devlog after I have learnt and implemented this. Screen Restrictions Forth is more of usability, side by side you can see either, code and graph or sphere and graph , so understand better. Also I added a screen restrictor for small screens since running this project on phone won’t be possible because design clutterness (forget to add screenshot, but you can check live). So hope you liked this version, I know it’s too much of quantum but yeah like others I am also trying to understand better. At Last, don’t forget to check attachments and share your feedbacks. Also I think I would be pushing on github now before developing futher. Namaste!!!"}, {"post_id": 26000, "ts": "2026-07-10T15:38:00Z", "hours": 5.5644, "text": "Devlog #4 This Part was all about making Navigation work between pages and since last time I got some feedbacks that Home and Playground VIbe Don’t match so made Playground more 3d. Here are Changes - Using react router, Made Navigation between Home and Playground and Vice versa. Used 3d Resources like Background images, Button images to make it look 3d Videogame. Added button animations like some changes images, some spins. Improved qubit adjust box. Added tooltip component so people know what buttons does what, since buttons are image based. So, I have tried to make project look 3d Glassmorphism and minimal too. check out video attached to see progress till now ."}, {"post_id": 25463, "ts": "2026-07-09T19:03:49Z", "hours": 7.8494, "text": "#Devlog 3 Made Homepage for Cirqmon because I wanted to Put Medium blogs and Tool at one place so this will act as Entry door easily. Experimented with designs, fonts and images to make it feel like 3d Cartoon themed. Following things made - At first “what is does” Hero Section telling people that its a Colorful way to play and learn to make Quantum Circuits. Actually in hero section I have experimented with 3d images animations but it looked distracting UI so Removed it. but Kept H and Y gates to give a idea of Builder. Blogs Section is where it will fetch Quantum related Blogs from Medium (will write soon). Don’t forget to notice that Astronaut. Data is dummy. the Boxes use Backdrop transparent design to match with 3d design. Last is for People who would like to give feedbacks. Buttons are Demo for now. Basically UI for Homepage is Done. Now in next Version WIll use router for Navigation. ALso TBH Gemini really Helped me with Box Shadow button effects which I adjusted according to project Later. Do give Feedbacks please :)"}, {"post_id": 23711, "ts": "2026-07-06T20:20:51Z", "hours": 6.1475, "text": "Its Devlog 2 and in midway didn’t knew That I will be able to go further in project but somehow Curosity pushed it. So I have basically in this Version I made following new Things - Added fundamental Single Qubit Gates and the Moment someone drag Gates into Circuit and it get Translated into circuit Instructions JSON which tracks for which gate is applied at target and step; The moment you click on Playcircuit button it Calculates the probability of Each possible Qubit state and corresponding qiskit code; Basically this part of calculating the Circuit I had options either to use Qiskit directly via Python, Use react pre-written Scripts in react or Reinvent the Wheel by making my own Simulator which might not be as Efficient as Already made ones. So to see how strong my kidneys are I chose 3rd one. But you won’t believe I got answers to all My questions whether Why more qubits means exponential computation time, or tensors and many other things which I will write in blogs in some time. So basically it was about initializing a State vector and then running step by step tensor product of gates applied and then when I got a single wire as a result of all gates in each step, then multiply the state vector with Matrix which contains 2^N rows and columns (n is number of qubits) which finally gives you the amplitudes of each state. FInally you format them to Show. Now it still need better design and More code organization after which I will push new Version; till then You are welcome for Questions and Suggestions. Note - This version handle single qubits till now."}, {"post_id": 17512, "ts": "2026-06-28T10:11:41Z", "hours": 11.5036, "text": "Quite a While I started to learn about quantum Computing and observed that its still gives too research vibes for a beginner to overwhelm and leave it. This is Cirqmon which I am making so Building Quantum circuits become some fun without dumping every information and expecting everyone to be a Researcher. Started with making on React, giving it Cartoon or Animated vibe, earlier I thought to make it Doremon themed but later found that it would give copyright issues. For now features added- 1 ) You can Drag and Drog Quantum gates from Tray into Circuit Canvas. 2 ) Music and Background Manage buttons. 3 ) I have tried to play with Vector and Cartoon Images in Transition. 4 ) Adjust Qubits and Nodes/Steps from Drawer earlier I thought to Use Slider but used Buttons later to Avoid touch screen inconsistencies. While making the Drag and Drop canvas Features, found that using HTML Drag and drop API sometimes break on Safari and other browers and it was still making codebase look complicated for others or even me in future to Contribute. So I used @dnd kit for drag and drop feature. Also I kept a Limit on Qubits and Nodes to Keep Execution Easier and test. Majorly a Structure is Done,"}]...
|
Title: Cirqmon by @itsdecodeaditya | Stardance
De Title: Cirqmon by @itsdecodeaditya | Stardance
Devlogs:
Quite a While I started to learn about quantum Computing and observed that its still gives too research vibes for a beginner to overwhelm and leave it. This is Cirqmon which I am making so Building Quantum circuits become some fun without dumping every information and expecting everyone to be a Researcher. Started with making on React, giving it Cartoon or Animated vibe, earlier I thought to make it Doremon themed but later found that it would give copyright issues. For now features added- 1 ) You can Drag and Drog Quantum gates from Tray into Circuit Canvas. 2 ) Music and Background Manage buttons. 3 ) I have tried to play with Vector and Cartoon Images in Transition. 4 ) Adjust Qubits and Nodes/Steps from Drawer earlier I thought to Use Slider but used Buttons later to Avoid touch screen inconsistencies. While making the Drag and Drop canvas Features, found that using HTML Drag and drop API sometimes break on Safari and other browers and it was still making codebase look complicated for others or even me in future to Contribute. So I used @dnd kit for drag and drop feature. Also I kept a Limit on Qubits and Nodes to Keep Execution Easier and test. Majorly a Structure is Done,
Its Devlog 2 and in midway didn’t knew That I will be able to go further in project but somehow Curosity pushed it. So I have basically in this Version I made following new Things - Added fundamental Single Qubit Gates and the Moment someone drag Gates into Circuit and it get Translated into circuit Instructions JSON which tracks for which gate is applied at target and step; The moment you click on Playcircuit button it Calculates the probability of Each possible Qubit state and corresponding qiskit code; Basically this part of calculating the Circuit I had options either to use Qiskit directly via Python, Use react pre-written Scripts in react or Reinvent the Wheel by making my own Simulator which might not be as Efficient as Already made ones. So to see how strong my kidneys are I chose 3rd one. But you won’t believe I got answers to all My questions whether Why more qubits means exponential computation time, or tensors and many other things which I will write in blogs in some time. So basically it was about initializing a State vector and then running step by step tensor product of gates applied and then when I got a single wire as a result of all gates in each step, then multiply the state vector with Matrix which contains 2^N rows and columns (n is number of qubits) which finally gives you the amplitudes of each state. FInally you format them to Show. Now it still need better design and More code organization after which I will push new Version; till then You are welcome for Questions and Suggestions. Note - This version handle single qubits till now.
#Devlog 3 Made Homepage for Cirqmon because I wanted to Put Medium blogs and Tool at one place so this will act as Entry door easily. Experimented with designs, fonts and images to make it feel like 3d Cartoon themed. Following things made - At first “what is does” Hero Section telling people that its a Colorful way to play and learn to make Quantum Circuits. Actually in hero section I have experimented with 3d images animations but it looked distracting UI so Removed it. but Kept H and Y gates to give a idea of Builder. Blogs Section is where it will fetch Quantum related Blogs from Medium (will write soon). Don’t forget to notice that Astronaut. Data is dummy. the Boxes use Backdrop transparent design to match with 3d design. Last is for People who would like to give feedbacks. Buttons are Demo for now. Basically UI for Homepage is Done. Now in next Version WIll use router for Navigation. ALso TBH Gemini really Helped me with Box Shadow button effects which I adjusted according to project Later. Do give Feedbacks please :)
Devlog #4 This Part was all about making Navigation work between pages and since last time I got some feedbacks that Home and Playground VIbe Don’t match so made Playground more 3d. Here are Changes - Using react router, Made Navigation between Home and Playground and Vice versa. Used 3d Resources like Background images, Button images to make it look 3d Videogame. Added button animations like some changes images, some spins. Improved qubit adjust box. Added tooltip component so people know what buttons does what, since buttons are image based. So, I have tried to make project look 3d Glassmorphism and minimal too. check out video attached to see progress till now .
Devlog #5 :) To be very honest I forget that its 8 hours 47 minutes in hackatime and it didn’t posted devlog until I got a Notification on slack. Sooo Guys! In this part of work I had to decide a thing that should I add Visualization of Qubits or not and then I realized that’s the whole point of project [to let people easily visualize whats happening]. So thats why I have decided add Q sphere . Folder Structure First of all I realized that my project was using url images and project structure was actually messing up as files and folders were increasing, so I decided to first organise the chaos and downloading all internet 3d assets in project. [Screenshot -1]. Because without a better organization of project it would get intimidatingly hard for others to contribute. Big Endian vs Little Endian Now second part is making the Result page of Qubit execution match that 3d glassmorphism design and white browsing through IBM composer (Tool for making Circuits) I got to observe that states were actually reverse in order. Suppose you applied hadamard gate to first qubit in 2 qubit system so instead of showing Probabilities of states as |00> = 50% , |01> = 0 , |10> = 50% , |11> = 0 , it reversed for 01 and 10. So after reading on internet about this I got to know that both ways are right and just differs because order you calcuate tensors: G1 * G2 * G3.. gives you Big Endian Version which considers least qubit as important Vice versa in case of Little Endian as IBM uses. So I implemented both in project. Earlier I thought I broke a physics Law [haha.] Making Q Sphere Its for Q sphere [2nd screenshot], that’s what help you understand statevector, because we can’t imagine more than 3D, so IBM come with this method. Basically I have used react 3 fiber that helps us write Three.js in react easily, using JSX instead of js manually, and it shows 3 lines in space which represent each state in vector: Bigger the node on top, bigger its probability . Color tells phase angle from origin. More 0 probability the vector will be pointing on upper hemisphere’s top and similarly more 1 will point on bottom of lower hemisphere. I am still processing [x,y,z] coordinates of line. Q sphere now shows random plots, I have to parse state vector to correct representation, will tell you about it in next devlog after I have learnt and implemented this. Screen Restrictions Forth is more of usability, side by side you can see either, code and graph or sphere and graph , so understand better. Also I added a screen restrictor for small screens since running this project on phone won’t be possible because design clutterness (forget to add screenshot, but you can check live). So hope you liked this version, I know it’s too much of quantum but yeah like others I am also trying to understand better. At Last, don’t forget to check attachments and share your feedbacks. Also I think I would be pushing on github now before developing futher. Namaste!!!
Devlog #6 :) So Hey People, I am feeling Immensely satisfied that Q Sphere feature is Mostly done. Also the GateWiki part is also done that tells You about Gate you Clicked on Gates Tray, again to tell you can drag gates into Circuit to build and Tap to know about it . May be I also link blogs on that Later. Now about Q Sphere Part Okay , Now let me share about Making of Q Sphere Part , So earlier I was not able to visualize it, but somehow I got to Know about Spherical Coordinates which is dependent on: theta : angle of Line from Z Axis phi : angle of Line from x Axis But clicked finally after frustration of not understanding it earlier. Then I gone to Google searching to see 3d visuals and AI to understand how we calculate those angles: So - Based on hamming weights (Means how many 1s in that State, Suppose in |01> has 1 1s and 011 have 2 1s ) and total qubits which help us find theta and divide sphere into sort of rings for similar nodes/lines of same hamming weights in same ring. Then we find how we calculate phi based on total active states in each ring and slicing ring into same proportion. I don’t know why but that was a finally a kick for me :) Finally since you will plot lines and nodes on spherical surface you have to convert theta and phi to coordinates [x, y, z] which you do using polar coordinates . Then after plotting them, a major part of Q sphere is made. now as you can see on 2nd screenshot left side the Sphere shows nodes for respective State. more chances of being 0 is on upper half and more 1 chance on bottom half. Structured the folders Also I worked on code Structure to keep all algos separated: To parse stateVectors Parse the frontend data to json circuit instructions Making all q sphere data from stateVectors parsing Code to export in Qiskit. more such functions too.. So yeah that was work I did, little more things is needed to build, after that project is done. Adding some multi qubit gates is next important thing now. I would be pushing on Github this Version and Vercel too now. Go check it out. Namaste!!!
Cirqmon Devlog #7 So, I am posting this Devlog after interval of Almost 20 days since last Posted. Why delay? During this time I learnt a Lot about Quantum computing. Infact, I was planning to ship the Project with Single qubit gates only, but after I joined Qiskit Global Summer School, then I realised that main game in Quantum computing is about entanglement, that comes with multi Qubit gates like CX, CZ, SWAP etc. The Media attached is Demo is of a GHZ circuit is made by combination of H gate and CNOT gates. Basically a GHZ state is larger version of Bell state. For N qubits, only two possible states shows Up with equal probability i.e 1/root2 (000…n + 111…n). So here is What I made Changes and How : 1) 2 Qubit Gates Implementation - So Earlier Version was for Only 1 Qubit Gates, and it used Tensor product. Where it used to tensor Each step and then Multiply each step to StateVector in successive manner. But for 2 Qubit gates, tensor method gets problematic because multi qubit gates need to have dependence on other qubits too, meanwhile tensor assumes every gate on that step is independent and it builds large matrix. This loses dependence and relation as demanded by multi qubit gates. So then I got to know of approach called Embedding or Inflation where we first create Temporary matrix of 2^n rows and 2^n Columns with each entry initially as 0, then we start looping through columns of that Matrix (which represent possibility, like iteration for 0 is actually 00 in binary) and then, matching it with rows and columns in Gate matrix, after that we force the bit in Temporary Matrix’s respective column and row to align with what Gate’s matrix bit has? Either 0 or 1. Finally we get Result of application in that Temporary matrix which we multiply with StateVector later on. That’s how This Inflation Approach works. 2) Applied Phase angle Indicator Now, Quantum State’s node’s color in Q sphere shows its phase Angle, which can be from PI to -PI, calculated using formula tan2a(y,x) , then we constraint it from 0 to 2PI, later convert to degrees, then feeding that value as HUE value in HSL colour format keeping lightness as 50% and Saturation 100% and then it corresponds to Phase Angle with color that degree, like 0deg is red, 90deg is green etc. So this was Major Changes I did along with some Style changes and Minor error fixing that appeared during changing the Simulator’s Approach. And to be very Honest at when I started to Write code for 2 qubit Gates, I earlier thought I would Do something that I dont have to change Simulator, but those were still just making me cry. So finally I gone to AI to learn and for almost 2 days new experiments were going out of head and that way almost I wasted Hours and then to experiment more and Stop Tracking Hackatime since I knew It would track more hours for Experiments too, So I coded in Cursor (Without Any AI, Just as Other Editor) Untracked. At the End it worked :) Now Finally Majority part is Done, after few More Edits, Will Ship it soon!
Cirqmon #Devlog 8 Actually I was telling my friend about project, and I realized that the Project should have better readme that tells about features, Examples, and Tour. Also added HSL wheel in Q sphere so People can Use it as a reference. Initially its faded, you hover it and it gets Visible. Also the Latest version is now Live with multi qubit gates.
Cirqmon #Devlog 9 This version is more of testing, I thought that I should write blogs and use examples using Cirqmon, So Written 2 blogs on Quantum computing for Beginners and Deutsch Joza algorithm. While writing it I thought I should Show them on Cirqmon Hompage too, earlier I thought I would replace blogs part in Homepage with Just a medium link of mine, but later when I read on internet that medium allows to see RSS version of Blogs so I parsed RSS to JSON and fetched Blogs related Quantum Computing. Along with it, made Qubits limits to 8 and steps to 24 and made a centralized Config file to control parameters from there. Added a Toggle so People can switch indentation of Qubit states either Big endian or Little Endian. Updated Homepage button with Pikachu Button I found while explore on UI verse, also added link to Readme guide. Now After writing Blogs I am getting surge of confidence inside that I understood Quantum Computing more Better. One of topics I am curious about is Cybersecurity and one of Algorithm that challenges classical Approaches like RSA is Shor’s Algorithm so next I am going to explore it, Also along with all these, I have updated Some images in readme too and going to Push updates, so do Share Feedbacks.
Cirqmon Devlog #10 Every time I think My project is ready to ship I find something missing and then it gets delayed. After I finished the blog on Deutsch Jozsa algorithm the project worked, as it needed only Single and Double qubit gate. When I started writing about Grover’s algorithm I realized the need of Three Qubit gate too as it needed CCZ gate to flip the phase to achieve 111 State. So I had to fix that. Here is what I did: Firstly as I told earlier I added the 3 Qubit gate feature, the underlying simulator code is working as old Inflating the Matrix approach, I only had to make it work for 3 Qubit gates. Secondly once I was on huddle where we were discussing about Boba bash, I presented the project to people and some said like ’it looks like too stuffed or some said it looked vibe coded. So I thought its a good feedback to work on. Then I improvised the Homepage so it feels like Apple like minimal theme while maintaining game feel. I also added the Background video instead of static image. Thirdly the blog page was pending so I made blog page with similar theme as I updated along with a option to search among the medium posts. So this was what I updated in this Version and now I needs that code review and matching the theme on Playground too. Just Hope I don’t get stuck this time and wrap it up. Thanks for Reading!
Cirqmon Devlog #11 So Guys, I have finally finalized the Cirqmon Playground UI. I replaced the old glassmorphism theme with a rougher, more irregular visual style. Earlier I got feedback that, the old layout felt cluttered because the quantum gates were spread far apart and Due to Space Background and glassmorphism, it looked like Vibe coded. I have now grouped all the gates together in one place to make the interface cleaner and easier to navigate. Here Is what I changed: Removed the Home button. Clicking the Cirqmon logo now takes gets back to the home page. Updated Playground icons with Animal GIFs to give it more lively and engaging appearance. As mentioned above, reduced the use of glassmorphism to due to flickering issues and implemented like hand drawn solid color based UI. Attaching a video Snapshot so you can see changes made. also, The README is the only major task left. Once that’s finished, I’ll be ready to ship the project!
Cirqmon Devlog #12 So I guess it’s final Devlog. Here firstly I updated Readme with new UI based snapshots. Made custom Alert box so it matches the theme instead of browser native alert box. Fixed bug in which earlier the gates were being added in circuit without checking if that Block is being used by other gate and its corresponding qubits. I hope if I don’t get a new problem to fix I will ship it;
Ships:
Cirqmon is a quantum computing circuit builder on web and It’s idea was like when I used to go on tools like IBM’s or other quantum circuit simulators they used to feel like so dry and academic, So I thought why don’t I make one that’s colorful, looks like game because I guess learning deep tech should not mean that you lose colors. Earlier I thought I would just build UI layer on top of Qiskit via Python API, then I thought what will I learn and from a quite a long time I wanted to build something that involves maths and physics so i thought I should build whole thing by myself. The whole thing was Actually a bit challenging on understanding how Q spheres or Tensors or how bitwise calculations work, aligning it will a Good UI theme, So I just learned and build. sometimes I thought How will i finish or how will I map that understanding into code But I guess AI as a Teacher helped me a lot. For Others to try it you should know about Quantum Gates, read the Readme once and I guess you will understand the project....
|
1793004488.4733472
|
1793090888.4733472
|