|
70658
|
WarioWare Game by @abdullahayaan | Stardance
|
abdullahayaan
|
0
|
7.48
|
0
|
[]
|
[{"post_id": 81806, "ts": "202 [{"post_id": 81806, "ts": "2026-10-22T16:25:59Z", "hours": 4.2664, "text": "Ended up making some assets, the first minigame with some moving platforms, and yeah, that’s about it. Currently working on the second minigame. Oh also had some bugs fixed those too! :D"}, {"post_id": 81513, "ts": "2026-10-21T15:24:39Z", "hours": 3.2142, "text": "Started working yesterday. Was fairly new to game dev in general a friend told me about this so i said why not give it a try! i ended up making the title screen and the level/timer scenes too! I wanted to make sure whatever is done in the game is made by me, so i drew the hearts and the character assets myself! (using krita) Anyways thats it for now hoping to maybe now try to animate the character and make the minigames ;p"}]...
|
Title: WarioWare Game by @abdullahayaan | Stardanc Title: WarioWare Game by @abdullahayaan | Stardance
Devlogs:
Started working yesterday. Was fairly new to game dev in general a friend told me about this so i said why not give it a try! i ended up making the title screen and the level/timer scenes too! I wanted to make sure whatever is done in the game is made by me, so i drew the hearts and the character assets myself! (using krita) Anyways thats it for now hoping to maybe now try to animate the character and make the minigames ;p
Ended up making some assets, the first minigame with some moving platforms, and yeah, that’s about it. Currently working on the second minigame. Oh also had some bugs fixed those too! :D...
|
1793184525.2323732
|
1793789325.2323732
|
|
70482
|
Issue Scout by @Sharma07 | Stardance
|
Sharma07
|
1
|
6.6
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-20T08:14:18Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Issue Scout: Connecting the first search experience I built Issue Scout to solve a problem I faced myself. When I wanted to start contributing to open source, I had no clue where to begin. I struggled to find a platform that could help me discover issues matching my interests. Finding issues is easy. Finding the right issues was the hard part. So I decided to build my own solution. Issue Scout lets you filter GitHub issues by programming language, keywords, labels, suggested skill level, creation date, and status. The goal is to spend less time searching and more time contributing. One challenging part was making the filters work together reliably and handling GitHub Search API behavior, including pagination and rate limits. I’ve added automated API tests and have been refining the search experience. I’m proud that a problem I personally experienced turned into something other developers can use, especially people looking for their first open-source contribution. 🚀 Give it a try and let me know what you think! 🎬 I also made a short cinematic fly over demo of the project, edited using Antigravity.", "repo": "https://github.com/sharmao07/issue-scout", "demo": "https://issue-scout-chi.vercel.app/"}]...
|
[{"post_id": 81800, "ts": "202 [{"post_id": 81800, "ts": "2026-10-22T16:04:23Z", "hours": 0.2517, "text": "Issue Scout quick update 🚀 I have been doing some housekeeping on Issue Scout and trying to improve its maintainability. Some changes include: Breaking the enormous search page up into smaller pieces by splitting it into search form, issue cards, header, and pagination components. Separating issue preview into sections related to repository health, repository availability, repository readiness, and contribution tracking. Creating custom hooks for saved issues and contribution tracking, which includes syncing of bookmarks between tabs. Moving repository readiness scoring into a dedicated module and refactoring common GitHub validation into one place. Fixing the test discovery issue for skill level tests and removing redundant API route. Adding unit tests for new logic and storage behavior. README has received an update too and now it highlights what Issue Scout does, how to experience live demo, features, local development instructions, architecture and credits. ✅ 83 tests passing ✅ ESLint: no errors or warnings ✅ TypeScript: no errors ✅ Production build succeeded However, during my testing of the site on browser, I run into an error of a local Google Fonts problem, which I am resolving before confirming that I have completed the browser tests. Additionally, I am addressing a git sync problem before the push. This is mostly because the process involved the tidying up of what had been done before adding a new functionality. The next step will be to complete the manual tests. 🔗 Live demo: https://issue-scout-chi.vercel.app/ 💻 GitHub: https://github.com/sharmao07/issue-scout"}, {"post_id": 81336, "ts": "2026-10-20T21:37:32Z", "hours": 2.3494, "text": "A small but exciting update on Issue Scout 🚀 Since my last devlog, I’ve been working on making it easier to find and share open source issues. Here’s what I added: 🔗 Shareable search links — You can now share a search with its filters, so someone else can open the same search without setting everything up again. 🎯 Direct issue links — Instead of searching for an issue manually, you can open it directly in Issue Scout. 👀 Issue preview API — Added an API endpoint to fetch issue details for those direct links and validate the response before displaying it. I also added tests for the new URL handling and ran the full checks. ✅ 30 tests passing ✅ No ESLint errors ✅ Production build successful The update is shipped and now waiting for review! 🤞 Still plenty to improve, but one step at a time. I’d love to hear what filters, search features, or quality of life improvements would make this more useful for people getting started with open source contributions. 🔗 Live: https://issue-scout-chi.vercel.app/ 💻 GitHub: https://github.com/sharmao07/issue-scout Back to building!"}, {"post_id": 81197, "ts": "2026-10-20T08:07:06Z", "hours": 1.2989, "text": "I wanted to contribute to open source, but I had no idea where to start. 🔍 When I first wanted to contribute to open source projects, I struggled to find a platform that could help me discover issues relevant to my interests. I knew I wanted to start contributing, but figuring out where to look, which issues to pick, and how to find projects that matched my skills was overwhelming. Finding GitHub issues isn’t the hard part. There are thousands of them. The real challenge is finding the ones that actually interest you. That’s why I built Issue Scout . 🚀 The idea is simple: instead of endlessly browsing repositories and scrolling through issues, you can filter opportunities based on what matters to you. With Issue Scout, you can narrow down issues by: 💻 Programming language 🏷️ Labels like good first issue , bug , and documentation 🎯 Suggested skill level 📅 Creation date 🔓 Issue status 🔎 Keywords and topics you’re interested in I’m also working on making the search experience more reliable, with automated tests for API behavior, combined filters, pagination, empty results, and GitHub rate limit handling. This project started with a problem I faced myself, and I hope it can make the first step into open source a little less confusing for someone else. 🚀 Try Issue Scout: https://issue-scout-chi.vercel.app/ 💻 Explore the code: https://github.com/sharmao07/issue-scout There’s still plenty to improve. I’d love to hear what filters, search features, or quality of life improvements would make this more useful for people getting started with open source contributions. 🎬 Video credits: The demo video was edited using Antigravity."}, {"post_id": 81088, "ts": "2026-10-19T20:24:48Z", "hours": 0.2797, "text": "Issue Scout is live! 🚀 The first version of Issue Scout is now complete and deployed! The core features are in place: Search public GitHub issues by keyword. Filter by programming language, labels, suggested skill level, creation date, and issue status. Browse paginated results and open issues directly on GitHub. Get started with quick filters for beginner-friendly issues, documentation, bug fixes, and Python. 🌐 Live site: https://issue-scout-chi.vercel.app/ 💻 GitHub repository: https://github.com/sharmao07/issue-scout I’m happy to have the main functionality working, but I’ll keep improving the UI and making the experience easier and smoother to use. I’d love some help and feedback! If you’d like to help improve the UI, suggest a feature, or contribute something new, leave a comment on this devlog or feel free to open an issue on GitHub. Ideas, suggestions, and contributions are welcome! Thanks for checking out Issue Scout!"}, {"post_id": 81080, "ts": "2026-10-19T19:55:00Z", "hours": 1.0517, "text": "Making Issue Scout easier to use I’ve been working on making Issue Scout more approachable for people looking for their first open source contribution. I added quick start presets for beginner friendly issues, documentation, bug fixes, and Python. Rather than starting with an empty set of filters, users can pick a starting point, adjust the filters, and search for issues that interest them. I’m also improving the README so new users and contributors can understand how the app works, how to run it locally, what the API supports, and what limitations to keep in mind. This includes explaining how skill levels are estimated and why they should be treated as suggestions rather than guarantees. Next: Run the lint and production build checks, test the search presets and pagination, and verify the updated version on the live deployment. Live app: https://issue-scout-chi.vercel.app/ Source code: https://github.com/sharmao07/issue-scout"}, {"post_id": 81052, "ts": "2026-10-19T17:47:12Z", "hours": 0.4617, "text": "Issue Scout: Improving Issue Discovery and Filtering Since my previous update, I’ve continued developing Issue Scout by connecting the search experience to GitHub’s public issue search API and expanding the available filters. It now supports searching for open source issues by keyword, programming language, issue labels, and suggested skill level. The skill level classifier also accounts for issues whose difficulty cannot be confidently inferred from their labels, rather than automatically assuming they are intermediate. I’m also adding two important filtering options to make issue discovery more useful: filtering by when an issue was created and filtering by its status. The creation date filter covers several time ranges, from the last 12 hours to older issues created between three months and one year ago. The status filter allows users to choose open issues, closed issues, or both. These changes are intended to help contributors discover relevant opportunities more efficiently and find issues that match their preferences. Issue Scout continues to use GitHub’s API for its initial release, with skill- evel suggestions treated as estimates rather than definitive difficulty assessments. I’m keeping the project focused on making the core search experience reliable before introducing AI features or deploying a public demo. Next steps: finish testing the new filters, improve the issue result cards and error handling, verify the complete search workflow, and prepare the project for its eventual deployment."}, {"post_id": 80975, "ts": "2026-10-19T13:40:07Z", "hours": 0.8578, "text": "Issue Scout: Connecting the first search experience Started development on Issue Scout, an open source application designed to assist developers in discovering issues on GitHub that fit their specific tastes and skill levels. I established the GitHub repository for the project, along with creating the initial Next.js, TypeScript and Tailwind CSS project. The initial interface allows users to search using keywords, filter using issue labels, and filter by an estimated skill level. The next step will be integrating the interface with the public issue search API provided by GitHub. This will involve displaying actual results, handling any errors and loading issues, and making each result link back to the original repository. For now, I am delaying implementation of AI and remaining purely API based for my initial release of the product. This will allow me to develop and test the base functionality and determine where I could use more intelligence from an AI system. Next steps include completing the integration with the API, optimizing the filter for results, deploying a demo version of the website, and continuing documentation."}]...
|
Title: Issue Scout by @Sharma07 | Stardance
Devlo Title: Issue Scout by @Sharma07 | Stardance
Devlogs:
Issue Scout: Connecting the first search experience Started development on Issue Scout, an open source application designed to assist developers in discovering issues on GitHub that fit their specific tastes and skill levels. I established the GitHub repository for the project, along with creating the initial Next.js, TypeScript and Tailwind CSS project. The initial interface allows users to search using keywords, filter using issue labels, and filter by an estimated skill level. The next step will be integrating the interface with the public issue search API provided by GitHub. This will involve displaying actual results, handling any errors and loading issues, and making each result link back to the original repository. For now, I am delaying implementation of AI and remaining purely API based for my initial release of the product. This will allow me to develop and test the base functionality and determine where I could use more intelligence from an AI system. Next steps include completing the integration with the API, optimizing the filter for results, deploying a demo version of the website, and continuing documentation.
Issue Scout: Improving Issue Discovery and Filtering Since my previous update, I’ve continued developing Issue Scout by connecting the search experience to GitHub’s public issue search API and expanding the available filters. It now supports searching for open source issues by keyword, programming language, issue labels, and suggested skill level. The skill level classifier also accounts for issues whose difficulty cannot be confidently inferred from their labels, rather than automatically assuming they are intermediate. I’m also adding two important filtering options to make issue discovery more useful: filtering by when an issue was created and filtering by its status. The creation date filter covers several time ranges, from the last 12 hours to older issues created between three months and one year ago. The status filter allows users to choose open issues, closed issues, or both. These changes are intended to help contributors discover relevant opportunities more efficiently and find issues that match their preferences. Issue Scout continues to use GitHub’s API for its initial release, with skill- evel suggestions treated as estimates rather than definitive difficulty assessments. I’m keeping the project focused on making the core search experience reliable before introducing AI features or deploying a public demo. Next steps: finish testing the new filters, improve the issue result cards and error handling, verify the complete search workflow, and prepare the project for its eventual deployment.
Making Issue Scout easier to use I’ve been working on making Issue Scout more approachable for people looking for their first open source contribution. I added quick start presets for beginner friendly issues, documentation, bug fixes, and Python. Rather than starting with an empty set of filters, users can pick a starting point, adjust the filters, and search for issues that interest them. I’m also improving the README so new users and contributors can understand how the app works, how to run it locally, what the API supports, and what limitations to keep in mind. This includes explaining how skill levels are estimated and why they should be treated as suggestions rather than guarantees. Next: Run the lint and production build checks, test the search presets and pagination, and verify the updated version on the live deployment. Live app: https://issue-scout-chi.vercel.app/ Source code: https://github.com/sharmao07/issue-scout
Issue Scout is live! 🚀 The first version of Issue Scout is now complete and deployed! The core features are in place: Search public GitHub issues by keyword. Filter by programming language, labels, suggested skill level, creation date, and issue status. Browse paginated results and open issues directly on GitHub. Get started with quick filters for beginner-friendly issues, documentation, bug fixes, and Python. 🌐 Live site: https://issue-scout-chi.vercel.app/ 💻 GitHub repository: https://github.com/sharmao07/issue-scout I’m happy to have the main functionality working, but I’ll keep improving the UI and making the experience easier and smoother to use. I’d love some help and feedback! If you’d like to help improve the UI, suggest a feature, or contribute something new, leave a comment on this devlog or feel free to open an issue on GitHub. Ideas, suggestions, and contributions are welcome! Thanks for checking out Issue Scout!
I wanted to contribute to open source, but I had no idea where to start. 🔍 When I first wanted to contribute to open source projects, I struggled to find a platform that could help me discover issues relevant to my interests. I knew I wanted to start contributing, but figuring out where to look, which issues to pick, and how to find projects that matched my skills was overwhelming. Finding GitHub issues isn’t the hard part. There are thousands of them. The real challenge is finding the ones that actually interest you. That’s why I built Issue Scout . 🚀 The idea is simple: instead of endlessly browsing repositories and scrolling through issues, you can filter opportunities based on what matters to you. With Issue Scout, you can narrow down issues by: 💻 Programming language 🏷️ Labels like good first issue , bug , and documentation 🎯 Suggested skill level 📅 Creation date 🔓 Issue status 🔎 Keywords and topics you’re interested in I’m also working on making the search experience more reliable, with automated tests for API behavior, combined filters, pagination, empty results, and GitHub rate limit handling. This project started with a problem I faced myself, and I hope it can make the first step into open source a little less confusing for someone else. 🚀 Try Issue Scout: https://issue-scout-chi.vercel.app/ 💻 Explore the code: https://github.com/sharmao07/issue-scout There’s still plenty to improve. I’d love to hear what filters, search features, or quality of life improvements would make this more useful for people getting started with open source contributions. 🎬 Video credits: The demo video was edited using Antigravity.
A small but exciting update on Issue Scout 🚀 Since my last devlog, I’ve been working on making it easier to find and share open source issues. Here’s what I added: 🔗 Shareable search links — You can now share a search with its filters, so someone else can open the same search without setting everything up again. 🎯 Direct issue links — Instead of searching for an issue manually, you can open it directly in Issue Scout. 👀 Issue preview API — Added an API endpoint to fetch issue details for those direct links and validate the response before displaying it. I also added tests for the new URL handling and ran the full checks. ✅ 30 tests passing ✅ No ESLint errors ✅ Production build successful The update is shipped and now waiting for review! 🤞 Still plenty to improve, but one step at a time. I’d love to hear what filters, search features, or quality of life improvements would make this more useful for people getting started with open source contributions. 🔗 Live: https://issue-scout-chi.vercel.app/ 💻 GitHub: https://github.com/sharmao07/issue-scout Back to building!
Issue Scout quick update 🚀 I have been doing some housekeeping on Issue Scout and trying to improve its maintainability. Some changes include: Breaking the enormous search page up into smaller pieces by splitting it into search form, issue cards, header, and pagination components. Separating issue preview into sections related to repository health, repository availability, repository readiness, and contribution tracking. Creating custom hooks for saved issues and contribution tracking, which includes syncing of bookmarks between tabs. Moving repository readiness scoring into a dedicated module and refactoring common GitHub validation into one place. Fixing the test discovery issue for skill level tests and removing redundant API route. Adding unit tests for new logic and storage behavior. README has received an update too and now it highlights what Issue Scout does, how to experience live demo, features, local development instructions, architecture and credits. ✅ 83 tests passing ✅ ESLint: no errors or warnings ✅ TypeScript: no errors ✅ Production build succeeded However, during my testing of the site on browser, I run into an error of a local Google Fonts problem, which I am resolving before confirming that I have completed the browser tests. Additionally, I am addressing a git sync problem before the push. This is mostly because the process involved the tidying up of what had been done before adding a new functionality. The next step will be to complete the manual tests. 🔗 Live demo: https://issue-scout-chi.vercel.app/ 💻 GitHub: https://github.com/sharmao07/issue-scout
Ships:
Issue Scout: Connecting the first search experience I built Issue Scout to solve a problem I faced myself. When I wanted to start contributing to open source, I had no clue where to begin. I struggled to find a platform that could help me discover issues matching my interests. Finding issues is easy. Finding the right issues was the hard part. So I decided to build my own solution. Issue Scout lets you filter GitHub issues by programming language, keywords, labels, suggested skill level, creation date, and status. The goal is to spend less time searching and more time contributing. One challenging part was making the filters work together reliably and handling GitHub Search API behavior, including pagination and rate limits. I’ve added automated API tests and have been refining the search experience. I’m proud that a problem I personally experienced turned into something other developers can use, especially people looking for their first open-source contribution. 🚀 Give it a try and let me know what you think! 🎬 I also made a short cinematic fly over demo of the project, edited using Antigravity....
|
1793162923.4531279
|
1793249323.4531279
|
|
70939
|
Orbit AI by @torren | Stardance
|
torren
|
0
|
9.81
|
0
|
[]
|
[{"post_id": 81793, "ts": "202 [{"post_id": 81793, "ts": "2026-10-22T15:28:34Z", "hours": 9.8053, "text": "Orbit started with a question: what if a personal AI assistant felt like something alive on your desktop? Over 10 hours, I worked on turning an animated black hole into an assistant I could actually talk to. I connected voice and text chat, added local speech, and built out saved conversations, file uploads, and scheduled tasks. Then came the frustrating part: getting it to use apps. Opening Spotify was easy. Getting it to play the right playlist instead of resuming an old song took more work. Groq’s free limits also forced me to rethink how much information Orbit sent with every action, moving simple commands entirely onto the computer. By the end, Orbit had Mac and Windows installers, and that black hole had started doing more than looking cool. Also I am not fully sure if I am going to give this out to people but if you are interested just comment on this devlog"}]...
|
Title: Orbit AI by @torren | Stardance
Devlogs:
O Title: Orbit AI by @torren | Stardance
Devlogs:
Orbit started with a question: what if a personal AI assistant felt like something alive on your desktop? Over 10 hours, I worked on turning an animated black hole into an assistant I could actually talk to. I connected voice and text chat, added local speech, and built out saved conversations, file uploads, and scheduled tasks. Then came the frustrating part: getting it to use apps. Opening Spotify was easy. Getting it to play the right playlist instead of resuming an old song took more work. Groq’s free limits also forced me to rethink how much information Orbit sent with every action, moving simple commands entirely onto the computer. By the end, Orbit had Mac and Windows installers, and that black hole had started doing more than looking cool. Also I am not fully sure if I am going to give this out to people but if you are interested just comment on this devlog...
|
1792684031.9524696
|
1793288831.9524696
|
|
54929
|
Wisp by @TCG | Stardance
|
TCG
|
0
|
97.43
|
0
|
[]
|
[{"post_id": 81791, "ts": "202 [{"post_id": 81791, "ts": "2026-10-22T15:12:11Z", "hours": 5.3231, "text": "first static fire test!!!"}, {"post_id": 80182, "ts": "2026-10-16T16:07:41Z", "hours": 13.0125, "text": "before flying my rocket i wanted to validate that the firmware is working, for that i created simulated versions of sensor and actuator classes and injected them into the dependency chain and everything is working! i cant wait to fly this thing, here is a video of a simulation"}, {"post_id": 77340, "ts": "2026-10-06T16:50:10Z", "hours": 13.5108, "text": "im almost ready to fly! the only things missing are the log system on the rocket and tuning the pid, i will probably do a static fire this week!!"}, {"post_id": 76055, "ts": "2026-10-02T06:46:15Z", "hours": 15.7911, "text": "devlog #5, almost ready to static fire my tcv modle rocket! i have been working on the rocket monitor app and validated all systems, the only thing missing at this point is implementing the final radio commands for a launch, optionaly a pretty ui and transfering the log file over radio after the landing."}, {"post_id": 70659, "ts": "2026-09-19T15:21:06Z", "hours": 3.0878, "text": "i just went on a 3h UI sidequest adding completely unnecessary spotlights and a colorful polar coordinate system to the completely unnecessary 3D scene in my TVC model rocket control app, cuz i dont want to keep working on the rockets firmware"}, {"post_id": 70512, "ts": "2026-09-19T09:36:28Z", "hours": 12.5019, "text": "i made a lot of progress on the firmwear for the tvc rocket and the desktop controll center app, it now displays live imu and barometer data, the gimbal is now also working."}, {"post_id": 68690, "ts": "2026-09-15T15:27:34Z", "hours": 11.5517, "text": "devlog #4: i am working on the desktop app that will act as an controll center for the flights and testing, so far i have a few components down, i developed the protocol for the comunication over radio and to the radio device over usb, that was a lot of work because i never did anything with netwoking before but its all working now, this is a screenshot of the app so far and a graphic of the protocol i came up with (graphic made with claude)"}, {"post_id": 65858, "ts": "2026-09-11T08:59:25Z", "hours": 0.4314, "text": "OMG i just realised i routed Serial TX to TX and RX to RX on my pcb. I already orderd it so its to late now, i swear i checked this desing 5 times how did i miss this??? luckly there wont be too mutch data going though this so i can use SoftwearSerail for this but still i guess u never get rx and tx right the first time…"}, {"post_id": 65850, "ts": "2026-09-11T08:22:57Z", "hours": 3.6503, "text": "I’m somewhat done with the hardware. The flight computer arrived, and the selfdesigned PCB worked on the first try! I haven’t tested everything yet, but the buck-boost converter, battery protection, LDO, MCU, radio, and buzzer all work. I also almost finished 3D printing the rocket, only the body tube is still missing. I’m shooting for a dry mass of 170 g, and I’m well within that budget, so everything is going well so far. Next, I will be working on the communication protocol between the rocket and the ground station, and then write the firmware for the rocket."}, {"post_id": 58140, "ts": "2026-08-30T14:28:37Z", "hours": 18.5669, "text": "Hi, im building a model rocket that can actively control its accent by changing the direction its rocket motor points (thrust vector control or TVC). this is my first devlog i have been working on this for a month now but only recently heard about stardance so i already have made a lot of progress. Im done with modeling the rocket in onshape i also already desingd its flight conputer (alacer-1) and a usb to radio apter i call rocket-link in kicad. the flight computer is in production and the rocket link already arrived, so at the moment im writing the firmwear for it, developing a desktop app to act as a command center."}]...
|
Title: Wisp by @TCG | Stardance
Devlogs:
Hi, im b Title: Wisp by @TCG | Stardance
Devlogs:
Hi, im building a model rocket that can actively control its accent by changing the direction its rocket motor points (thrust vector control or TVC). this is my first devlog i have been working on this for a month now but only recently heard about stardance so i already have made a lot of progress. Im done with modeling the rocket in onshape i also already desingd its flight conputer (alacer-1) and a usb to radio apter i call rocket-link in kicad. the flight computer is in production and the rocket link already arrived, so at the moment im writing the firmwear for it, developing a desktop app to act as a command center.
I’m somewhat done with the hardware. The flight computer arrived, and the selfdesigned PCB worked on the first try! I haven’t tested everything yet, but the buck-boost converter, battery protection, LDO, MCU, radio, and buzzer all work. I also almost finished 3D printing the rocket, only the body tube is still missing. I’m shooting for a dry mass of 170 g, and I’m well within that budget, so everything is going well so far. Next, I will be working on the communication protocol between the rocket and the ground station, and then write the firmware for the rocket.
OMG i just realised i routed Serial TX to TX and RX to RX on my pcb. I already orderd it so its to late now, i swear i checked this desing 5 times how did i miss this??? luckly there wont be too mutch data going though this so i can use SoftwearSerail for this but still i guess u never get rx and tx right the first time…
devlog #4: i am working on the desktop app that will act as an controll center for the flights and testing, so far i have a few components down, i developed the protocol for the comunication over radio and to the radio device over usb, that was a lot of work because i never did anything with netwoking before but its all working now, this is a screenshot of the app so far and a graphic of the protocol i came up with (graphic made with claude)
i made a lot of progress on the firmwear for the tvc rocket and the desktop controll center app, it now displays live imu and barometer data, the gimbal is now also working.
i just went on a 3h UI sidequest adding completely unnecessary spotlights and a colorful polar coordinate system to the completely unnecessary 3D scene in my TVC model rocket control app, cuz i dont want to keep working on the rockets firmware
devlog #5, almost ready to static fire my tcv modle rocket! i have been working on the rocket monitor app and validated all systems, the only thing missing at this point is implementing the final radio commands for a launch, optionaly a pretty ui and transfering the log file over radio after the landing.
im almost ready to fly! the only things missing are the log system on the rocket and tuning the pid, i will probably do a static fire this week!!
before flying my rocket i wanted to validate that the firmware is working, for that i created simulated versions of sensor and actuator classes and injected them into the dependency chain and everything is working! i cant wait to fly this thing, here is a video of a simulation
first static fire test!!!...
|
1792810288.925927
|
1793415088.925927
|
|
59778
|
My own site! by @bosompimobaayaapoku | Stardance
|
bosompimobaayaapoku
|
1
|
28.15
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T23:13:24Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Oddly Orbital is my personal space-themed website where creativity meets code! I built it using HTML and CSS, experimenting with cosmic visuals, glowing cyan effects, smooth scrolling, and a Mission Control panel to bring the space-exploration vibe to life. What challenged me? Getting the design to feel immersive while making the different elements look good together. I had to experiment with CSS and adjust the glow effects until they looked right. What I’m proud of I’m proud that I turned my ideas into a real, working website. Seeing my space background and glowing Mission Control panel come together made the project feel like my own little universe. What you can test Explore the website and check out the space-themed design. Click the Explore button and test the page navigation. Scroll through the page to try the smooth-scrolling effect. Find Mission Control and look at the glowing ACTIVE status. Hover over Mission Control with your mouse to see if its cyan glow gets brighter. The mission is still active! I’m learning as I build, and this is just the beginning of my journey into web development.", "repo": "https://github.com/bosompimobaayaapoku-sys/yaa", "demo": "https://bosompimobaayaapoku-sys.github.io/yaa/"}]...
|
[{"post_id": 81785, "ts": "202 [{"post_id": 81785, "ts": "2026-10-22T14:21:52Z", "hours": 1.1542, "text": "Ok so now the website is rounding up nicely. The java script was the hardest part because it almost destroyed all my hard work. Thankfully I survived and it was worth it."}, {"post_id": 81658, "ts": "2026-10-21T23:00:09Z", "hours": 11.9217, "text": "What if a website felt like stepping into space? Oddly Orbital is my personal corner of the universe, where creativity meets code. With cosmic visuals, glowing cyan effects, and my own Mission Control panel, I’m turning my curiosity about space and technology into something real. The mission is active, and there’s more to explore!"}, {"post_id": 68294, "ts": "2026-09-14T21:25:00Z", "hours": 15.3208, "text": "my own site!"}]...
|
Title: My own site! by @bosompimobaayaapoku | Star Title: My own site! by @bosompimobaayaapoku | Stardance
Devlogs:
my own site!
What if a website felt like stepping into space? Oddly Orbital is my personal corner of the universe, where creativity meets code. With cosmic visuals, glowing cyan effects, and my own Mission Control panel, I’m turning my curiosity about space and technology into something real. The mission is active, and there’s more to explore!
Ok so now the website is rounding up nicely. The java script was the hardest part because it almost destroyed all my hard work. Thankfully I survived and it was worth it.
Ships:
Oddly Orbital is my personal space-themed website where creativity meets code! I built it using HTML and CSS, experimenting with cosmic visuals, glowing cyan effects, smooth scrolling, and a Mission Control panel to bring the space-exploration vibe to life. What challenged me? Getting the design to feel immersive while making the different elements look good together. I had to experiment with CSS and adjust the glow effects until they looked right. What I’m proud of I’m proud that I turned my ideas into a real, working website. Seeing my space background and glowing Mission Control panel come together made the project feel like my own little universe. What you can test Explore the website and check out the space-themed design. Click the Explore button and test the page navigation. Scroll through the page to try the smooth-scrolling effect. Find Mission Control and look at the glowing ACTIVE status. Hover over Mission Control with your mouse to see if its cyan glow gets brighter. The mission is still active! I’m learning as I build, and this is just the beginning of my journey into web development....
|
1793177582.8578076
|
1793263982.8578076
|
|
277
|
Kadent by @hacha-mouse | Stardance
|
hacha-mouse
|
1
|
231.72
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T15:24:36Z", "hours": 229.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Kadent Kadent is a cross-platform DAW featuring KASL, a domain-specific audio language, and node-graph processing system. Features Create music with familiar track-based UI Two track types: Note Track & Audio Track Node graph for every track KASL language with syntax similar to Swift The node graph allows you to combine multiple KASL programs to perform much more complex processing. What Is a Node Graph? Kadent uses node graph for track processing. A Node is a processing unit that calculates the output. In node graph, an output of one node can be connected to an input of another node. This allows you to connect multiple inputs and outputs freely to other nodes to create sound. Then, why did I adopt node graph? KASL programs can have multiple inputs and outputs, and their types may also vary. So placing them in order does not work because the DAW cannot know which output is connected to the specific input. That’s why Kadent uses node graph. Characteristics of KASL Utilizes Cranelift as a backend for quicker JIT compilation Specialized type of variables such as input , output and state Supports fixed-length arrays and structs Fixed-count loop syntax for predictable execution time Module system influenced by Python Custom infix/prefix/postfix operators (even normal arithmetic operators are defined and provided by std ) KASL Sample Program audio module is built-in module provided by Kadent. Note that these programs below won’t work outside the DAW. Gain Node import audio import std input in = audio.zero_sample() input gain = 0.0 output out = audio.zero_sample() func main() { out = in * [gain; audio.max_channels] } Mix Node import std import std/math/float as f import audio input input_1 = audio.zero_sample() input input_2 = audio.zero_sample() input factor = 0.0 output out = audio.zero_sample() func main() { let clamped_factor = f.clamp(factor, 0.0, 1.0) let multiplied_input_1: audio.Sample = input_1 * [clamped_factor; audio.max_channels] let multiplied_input_2: audio.Sample = input_2 * [1.0 - clamped_factor; audio.max_channels] out = multiplied_input_1 + multiplied_input_2 } Sawtooth Wave Synthesizer import audio as a import std import std/math/float as f input notes = a.EventSlot() input pitch = 1.0 output out = a.zero_sample() state allocator = a.Allocator() let base_freq = 440.0 let volume = 0.1 func main() { allocator.update(notes) var i = 0 loop a.max_voices { let voice = allocator.voices[i] let freq = pitch * base_freq * f.pow(2.0, (voice.pitch - 69.0) / 12.0) if voice.is_active { let t = voice.age let sample = saw(freq: freq, time: t) out = out + [sample * volume; a.max_channels] } i = i + 1 } } func saw(freq f = 440.0, time t: Float) -> Float { return 2.0 * (t * f) % 1.0 - 1.0 } Installation Go to the Releases page of my GitHub repository to download the latest precompiled binary, or compile the binary yourself. Detailed installation steps are described in README .", "repo": "https://github.com/hatya-mouse/kadent", "demo": "https://github.com/hatya-mouse/kadent/releases/tag/v0.1.1"}]...
|
[{"post_id": 81784, "ts": "202 [{"post_id": 81784, "ts": "2026-10-22T14:10:13Z", "hours": 0.8664, "text": "How to add Note Region You can add note region by double-clicking in the timeline. To add notes to it, you need to select the region by clicking it first. Code Editor Error .kdp files are serialized project files, not a source code. You can create a new source file by clicking the src/ directory in the Code Editor. To add a source code to the note track, first open a node graph and add a KASL node to it. In the Inspector, you can specify the path to the source code (e.g. src/example.kasl). Added Some More Documentation I’ve added documentation with screenshots of each panels: Timeline Inspector Automation Node Graph Piano Roll Code Editor"}, {"post_id": 81773, "ts": "2026-10-22T13:18:48Z", "hours": 1.8489, "text": "Added Documentation I saw that the reviewer tried to open the binary project file in the code editor and failed so I’ve decided to add a some sort of tutorial or a documentation. I really wanted to add an interactive tutorial so that the reviewers and the users can know how Kadent works, but I didn’t have time to do so so I’ve just added a few documentation."}, {"post_id": 59408, "ts": "2026-09-01T06:49:17Z", "hours": 17.1803, "text": "Added License Browser It’s been a while since my last devlog! During this time I’ve added an Acknowledgements view where you can look at license text and other informations of the Fonts and Crates that I’ve used. It was a bit difficult to implement because there are so many crates, but I’m satisfied with the result."}, {"post_id": 56435, "ts": "2026-08-28T06:22:03Z", "hours": 41.4536, "text": "Improved code editor I’ve implemented error highlighting in the code editor. I also added a list of errors at the bottom of the code editor, and I can jump to the position of the error by clicking the error. TextEdit in egui does not support highlighting character by character and instead it only highlighting by each sections, so red underlined part may be bigger than the actual error range, but I guess it still looks nice."}, {"post_id": 52794, "ts": "2026-08-23T04:24:09Z", "hours": 10.9353, "text": "sode I’ve created a simple binary serialization crate called “sode” for Kadent. This guarantees that the output binary won’t change even if the struct is modified so I thought it would be better than serde or that sort of serialization library. impl Encode for Note { fn encode ( & self , e : & mut Encoder ) -> Result < (), EncodeError > { e .field ( 0 , & self .start ) ? ; e .field ( 1 , & self .duration ) ? ; e .field ( 2 , & self .pitch ) ? ; e .field ( 3 , & self .velocity ) ? ; Ok (()) } } impl Decode for Note { fn decode ( d : & mut ValueDecoder ) -> Result < Self , DecodeError > { let d = d .to_field_decoder () ? ; Ok ( Note :: new ( d .field ( 0 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 1 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 2 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 3 ) ? .ok_or ( DecodeError :: InvalidData ) ? , )) } }"}, {"post_id": 51188, "ts": "2026-08-20T18:06:44Z", "hours": 4.3567, "text": "Curve type selection I’ve implemented a selection dropdown for three curve types: linear, step, and smooth. Next thing to do is to add a text field to adjust the curve tension"}, {"post_id": 50847, "ts": "2026-08-20T09:11:52Z", "hours": 8.7028, "text": "Automation Automation is here. I’ve implemented an automation node, which is associated with an automation track that you can add keyframes to value that changes over time. You can even connect automation nodes to KASL Node to use the value for calculation!"}, {"post_id": 49569, "ts": "2026-08-18T13:30:07Z", "hours": 4.8889, "text": "Refactored codebase It looks exactly the same as the previous devlog, but I refactored the codebase, primarily the EditorUiState. I separated many members of EditorUiState to multiple small structs for better readability"}, {"post_id": 48851, "ts": "2026-08-17T12:25:43Z", "hours": 7.1642, "text": "Added ruler to piano roll I’ve added the ruler to the piano roll. This will make note placement easier and more intuitive than before. Also I refactored the codebase a little bit, but honestly I thought the previous implementation would be better so I may be putting it back soon."}, {"post_id": 47876, "ts": "2026-08-16T04:17:12Z", "hours": 11.8714, "text": "Add seconds support for region placement I’ve added TimePosition and TimeBounds to store the position of the region. They have two modes: one stores the position in Ticks, and another one stores it in seconds. Ticks and seconds can be calculated from each other using TempoMap."}, {"post_id": 46767, "ts": "2026-08-14T08:06:59Z", "hours": 11.5078, "text": "On-demamd resampling for audio tracks Audio regions require resampling because the sample rate of the source data may differ from the required sample rate. So far, the audio engine for Kadent has been resampling the entire audio data before playback or exporting. However, resampling audio data in advance takes a lot of CPU and increases the time it takes to prepare for playback. This time I made it resample the audio data on demand during playback. This makes audio thread not to store the massive resampled audio data. *sample rate: a value that indicates how many samples are in a single second *sample: a value that represents the sound wave’s loudness at a specific moment in time"}, {"post_id": 45991, "ts": "2026-08-12T20:39:49Z", "hours": 49.1206, "text": "Waveform Rendering & Scroll Bar This time, I’ve mainly implemented two features: waveform rendering and timeline scroll bar. Waveform I’ve added a waveform rendering logic to the timeline. I handled it by generating peak value data to render it quicker than calculating the peak value while rendering. After all, it looks pretty nice and scales perfectly when zooming with my trackpad. Timeline Scroll Bar Another feature I’ve added is a timeline scroll bar. It may not look appealing, but its calculation was quite hard actually. I had to calculate the ratio of the visible area and the entire timeline to get the width of the scroll bar. I think it is lot better than egui’s builtin scroll bar, so I’m quite satisfied with the outcome!"}, {"post_id": 20035, "ts": "2026-07-01T15:15:14Z", "hours": 1.9881, "text": "Ability to adjust project range I’ve implemented a feature that the user can adjust the project’s export range just by dragging the handle in the ruler. Also the actual number is shown in the status bar while the handle is being dragged so the user can know the exact beat where is going to be exported."}, {"post_id": 19709, "ts": "2026-07-01T03:15:36Z", "hours": 23.7522, "text": "Refactored the audio engine I’ve streamlined the note processing logic in the audio engine. So far, the audio engine handled sequenced notes (notes that you can see in the editor) and the realtime MIDI notes that you can play using some MIDI controllers differently. It also lacked maintainability. That’s why I’ve completely rebuilt the logic to unify the process. It also contributed to reduce the amount of code, and I’m happy with that."}, {"post_id": 16801, "ts": "2026-06-27T08:53:19Z", "hours": 3.0306, "text": "Added Status Bar I’ve added a new status bar, which shows some informations such as sample rate, buffer size and the selected content, at the bottom of the window. Fixed Node Graph Rendering Bug The node graph used to be rendered on the front of the header, but I finally fixed this by using Panel to limit the area where painter can draw the graph."}, {"post_id": 15135, "ts": "2026-06-24T16:22:43Z", "hours": 7.1325, "text": "Improved menu design I’ve improved the design of the menu by adjusting the button style. It took quite a long time because of egui’s a little bit confusing styling API. Refactor and optimize the audio engine I’ve refactored the audio engine by using integer ticks to manage time instead of f32 beats. By using integer ticks, it can be calculated even faster and more accurately."}, {"post_id": 12564, "ts": "2026-06-20T14:55:28Z", "hours": 1.1906, "text": "Nested dropdown menu for device selection I’ve improved a device selection feature by nesting the menu. Thanks to this, users can click a single headphones button to change the MIDI ports and output devices. Also I added some icons for these."}, {"post_id": 12510, "ts": "2026-06-20T13:06:52Z", "hours": 1.2117, "text": "Selectable audio output I’ve added a feature to select audio output! It may seem simple but it actually needed refactoring the audio engine and it took a lot of time."}, {"post_id": 12455, "ts": "2026-06-20T10:23:24Z", "hours": 2.4333, "text": "Replacing audio stream when switching devices I’ve implemented a logic in the audio engine, that allows the Kadent DAW to switch the output device. It was challenging because Mixer and MPSC consumers cannot be cloned. Finally I used Arc and Mutex in order to share the context with multiple threads. let callback_ctx = Arc::new(Mutex::new(OutputCallbackContext { mixer, command_cons, midi_cons, vu_prod, pending_project: pending_arc, })); I used try_lock instead of normal lock , which may block the thread, as you can see in the screenshot."}, {"post_id": 9312, "ts": "2026-06-15T16:59:09Z", "hours": 5.6553, "text": "KASL module system improvement So far, KASL compiler didn’t allow us to import external programs with the same name, because the name of the namespace conflicts. Today I have added new alias feature, which can be used like this: import foo as bar With this syntax, you can import a program named foo.kasl and refer to it with bar . This can also improve readability when importing a file with a long name! Streamline compilation I wanted to try compiling Kadent to application that can be installed using an installer, instead of a simple executable binary. I found Taskfile, which is a build tool similar to make but uses a yaml file to define workflows. I found it very useful so I adopted it and it worked very well! Currently I only have workflow for macOS compilation but I want to add Windows and Linux support soon!"}, {"post_id": 8724, "ts": "2026-06-14T14:21:32Z", "hours": 2.6775, "text": "Project creation dialog I’ve implemented new project creation dialog. You can specify the name of the project and select the folder using a picker from the system."}, {"post_id": 8532, "ts": "2026-06-14T06:06:41Z", "hours": 2.6142, "text": "Implemented splash screen I’ve finally finished implementing the splash screen for Kadent. On the left side, there are two buttons for creating or opening a project. The right panel shows the recent projects. Challenge The biggest challenge in implementing the splash screen was to layout UI components. It was quite hard to center the logo and the buttons. I spent around 1hrs dealing with that problem. Here’s how I solved it: const BUTTON_WIDTH : f32 = 300.0 ; const BUTTON_HEIGHT : f32 = 42.0 ; const CONTENT_HEIGHT : f32 = 60.0 + 12.0 + 16.0 + 24.0 + 12.0 + BUTTON_HEIGHT * 2.0 ; impl SplashUi { pub ( super ) fn splash_controls ( & mut self , ui : & mut egui :: Ui ) -> Option < EditorTransition > { ui .vertical_centered (| ui | { // Add space to vertically center the UI parts ui .add_space ( full_height / 2.0 - CONTENT_HEIGHT / 2.0 ); // UI Components }) .inner } } Since centering both horizontally and vertically while calculating the height of the inner content is painful, I eventually hardcoded the height of the UI components in order to center the UI vertically. Logo I’ve also designed a logo for Kadent in the meantime. I tweaked the font called “Inter”, which is available on Google Fonts, for the logo."}, {"post_id": 8172, "ts": "2026-06-13T16:50:03Z", "hours": 7.3775, "text": "Kadent — A DAW with custom language to create synths and effects Refactored project strucure As my codebase became bigger, it started to be a bit complicated, so I’ve refactored the codebase. New folder structure is consist of four directories in src/ directory: commands , core , storage , and ui . commands directory contains the audio engine communication logic. It has some functions like add_note that adds a new note to the specified track and sends the updated project to the audio thread. core directory contains KASLNode implementation and some metadata. KASLNode is a specific node that can literally execute KASL programs. Metadata is a data that are not necessarily tied to audio engine. It includes track colors, track names, region names, etc. storage directory contains some implementation for storing and loading files. It has a logic to save and load the Kadent project file. ui directory contains the UI implementation. Inside the ui directory, there are components , theme , and workspaces directories. components directory has some common UI parts used in various parts of the DAW. theme defines colors and size used in the UI. workspaces contains the UI implementation for the editor and the splash screen. Splash screen I’m currently implementing a splash screen for Kadent. It used to have just two buttons to create or open a project. I’ve just finished implementing “Recent Projects” list. (shown on the right side)"}, {"post_id": 4027, "ts": "2026-06-07T06:23:01Z", "hours": 1.4083, "text": "Implemented multithread track processing for the audio engine using Rayon ! I used to think implementing multithreading would be a nightmare, but I utilized Rayon which was actually very intuitive and easy to use. The screenshot shows the exact code where the tracks are being processed in parallel."}, {"post_id": 30, "ts": "2026-05-31T09:44:30Z", "hours": 1.7811, "text": "I am working on a WASM backend for my KASL language!"}]...
|
Title: Kadent by @hacha-mouse | Stardance
Devlogs Title: Kadent by @hacha-mouse | Stardance
Devlogs:
I am working on a WASM backend for my KASL language!
Implemented multithread track processing for the audio engine using Rayon ! I used to think implementing multithreading would be a nightmare, but I utilized Rayon which was actually very intuitive and easy to use. The screenshot shows the exact code where the tracks are being processed in parallel.
Kadent — A DAW with custom language to create synths and effects Refactored project strucure As my codebase became bigger, it started to be a bit complicated, so I’ve refactored the codebase. New folder structure is consist of four directories in src/ directory: commands , core , storage , and ui . commands directory contains the audio engine communication logic. It has some functions like add_note that adds a new note to the specified track and sends the updated project to the audio thread. core directory contains KASLNode implementation and some metadata. KASLNode is a specific node that can literally execute KASL programs. Metadata is a data that are not necessarily tied to audio engine. It includes track colors, track names, region names, etc. storage directory contains some implementation for storing and loading files. It has a logic to save and load the Kadent project file. ui directory contains the UI implementation. Inside the ui directory, there are components , theme , and workspaces directories. components directory has some common UI parts used in various parts of the DAW. theme defines colors and size used in the UI. workspaces contains the UI implementation for the editor and the splash screen. Splash screen I’m currently implementing a splash screen for Kadent. It used to have just two buttons to create or open a project. I’ve just finished implementing “Recent Projects” list. (shown on the right side)
Implemented splash screen I’ve finally finished implementing the splash screen for Kadent. On the left side, there are two buttons for creating or opening a project. The right panel shows the recent projects. Challenge The biggest challenge in implementing the splash screen was to layout UI components. It was quite hard to center the logo and the buttons. I spent around 1hrs dealing with that problem. Here’s how I solved it: const BUTTON_WIDTH : f32 = 300.0 ; const BUTTON_HEIGHT : f32 = 42.0 ; const CONTENT_HEIGHT : f32 = 60.0 + 12.0 + 16.0 + 24.0 + 12.0 + BUTTON_HEIGHT * 2.0 ; impl SplashUi { pub ( super ) fn splash_controls ( & mut self , ui : & mut egui :: Ui ) -> Option < EditorTransition > { ui .vertical_centered (| ui | { // Add space to vertically center the UI parts ui .add_space ( full_height / 2.0 - CONTENT_HEIGHT / 2.0 ); // UI Components }) .inner } } Since centering both horizontally and vertically while calculating the height of the inner content is painful, I eventually hardcoded the height of the UI components in order to center the UI vertically. Logo I’ve also designed a logo for Kadent in the meantime. I tweaked the font called “Inter”, which is available on Google Fonts, for the logo.
Project creation dialog I’ve implemented new project creation dialog. You can specify the name of the project and select the folder using a picker from the system.
KASL module system improvement So far, KASL compiler didn’t allow us to import external programs with the same name, because the name of the namespace conflicts. Today I have added new alias feature, which can be used like this: import foo as bar With this syntax, you can import a program named foo.kasl and refer to it with bar . This can also improve readability when importing a file with a long name! Streamline compilation I wanted to try compiling Kadent to application that can be installed using an installer, instead of a simple executable binary. I found Taskfile, which is a build tool similar to make but uses a yaml file to define workflows. I found it very useful so I adopted it and it worked very well! Currently I only have workflow for macOS compilation but I want to add Windows and Linux support soon!
Replacing audio stream when switching devices I’ve implemented a logic in the audio engine, that allows the Kadent DAW to switch the output device. It was challenging because Mixer and MPSC consumers cannot be cloned. Finally I used Arc and Mutex in order to share the context with multiple threads. let callback_ctx = Arc::new(Mutex::new(OutputCallbackContext { mixer, command_cons, midi_cons, vu_prod, pending_project: pending_arc, })); I used try_lock instead of normal lock , which may block the thread, as you can see in the screenshot.
Selectable audio output I’ve added a feature to select audio output! It may seem simple but it actually needed refactoring the audio engine and it took a lot of time.
Nested dropdown menu for device selection I’ve improved a device selection feature by nesting the menu. Thanks to this, users can click a single headphones button to change the MIDI ports and output devices. Also I added some icons for these.
Improved menu design I’ve improved the design of the menu by adjusting the button style. It took quite a long time because of egui’s a little bit confusing styling API. Refactor and optimize the audio engine I’ve refactored the audio engine by using integer ticks to manage time instead of f32 beats. By using integer ticks, it can be calculated even faster and more accurately.
Added Status Bar I’ve added a new status bar, which shows some informations such as sample rate, buffer size and the selected content, at the bottom of the window. Fixed Node Graph Rendering Bug The node graph used to be rendered on the front of the header, but I finally fixed this by using Panel to limit the area where painter can draw the graph.
Refactored the audio engine I’ve streamlined the note processing logic in the audio engine. So far, the audio engine handled sequenced notes (notes that you can see in the editor) and the realtime MIDI notes that you can play using some MIDI controllers differently. It also lacked maintainability. That’s why I’ve completely rebuilt the logic to unify the process. It also contributed to reduce the amount of code, and I’m happy with that.
Ability to adjust project range I’ve implemented a feature that the user can adjust the project’s export range just by dragging the handle in the ruler. Also the actual number is shown in the status bar while the handle is being dragged so the user can know the exact beat where is going to be exported.
Waveform Rendering & Scroll Bar This time, I’ve mainly implemented two features: waveform rendering and timeline scroll bar. Waveform I’ve added a waveform rendering logic to the timeline. I handled it by generating peak value data to render it quicker than calculating the peak value while rendering. After all, it looks pretty nice and scales perfectly when zooming with my trackpad. Timeline Scroll Bar Another feature I’ve added is a timeline scroll bar. It may not look appealing, but its calculation was quite hard actually. I had to calculate the ratio of the visible area and the entire timeline to get the width of the scroll bar. I think it is lot better than egui’s builtin scroll bar, so I’m quite satisfied with the outcome!
On-demamd resampling for audio tracks Audio regions require resampling because the sample rate of the source data may differ from the required sample rate. So far, the audio engine for Kadent has been resampling the entire audio data before playback or exporting. However, resampling audio data in advance takes a lot of CPU and increases the time it takes to prepare for playback. This time I made it resample the audio data on demand during playback. This makes audio thread not to store the massive resampled audio data. *sample rate: a value that indicates how many samples are in a single second *sample: a value that represents the sound wave’s loudness at a specific moment in time
Add seconds support for region placement I’ve added TimePosition and TimeBounds to store the position of the region. They have two modes: one stores the position in Ticks, and another one stores it in seconds. Ticks and seconds can be calculated from each other using TempoMap.
Added ruler to piano roll I’ve added the ruler to the piano roll. This will make note placement easier and more intuitive than before. Also I refactored the codebase a little bit, but honestly I thought the previous implementation would be better so I may be putting it back soon.
Refactored codebase It looks exactly the same as the previous devlog, but I refactored the codebase, primarily the EditorUiState. I separated many members of EditorUiState to multiple small structs for better readability
Automation Automation is here. I’ve implemented an automation node, which is associated with an automation track that you can add keyframes to value that changes over time. You can even connect automation nodes to KASL Node to use the value for calculation!
Curve type selection I’ve implemented a selection dropdown for three curve types: linear, step, and smooth. Next thing to do is to add a text field to adjust the curve tension
sode I’ve created a simple binary serialization crate called “sode” for Kadent. This guarantees that the output binary won’t change even if the struct is modified so I thought it would be better than serde or that sort of serialization library. impl Encode for Note { fn encode ( & self , e : & mut Encoder ) -> Result < (), EncodeError > { e .field ( 0 , & self .start ) ? ; e .field ( 1 , & self .duration ) ? ; e .field ( 2 , & self .pitch ) ? ; e .field ( 3 , & self .velocity ) ? ; Ok (()) } } impl Decode for Note { fn decode ( d : & mut ValueDecoder ) -> Result < Self , DecodeError > { let d = d .to_field_decoder () ? ; Ok ( Note :: new ( d .field ( 0 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 1 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 2 ) ? .ok_or ( DecodeError :: InvalidData ) ? , d .field ( 3 ) ? .ok_or ( DecodeError :: InvalidData ) ? , )) } }
Improved code editor I’ve implemented error highlighting in the code editor. I also added a list of errors at the bottom of the code editor, and I can jump to the position of the error by clicking the error. TextEdit in egui does not support highlighting character by character and instead it only highlighting by each sections, so red underlined part may be bigger than the actual error range, but I guess it still looks nice.
Added License Browser It’s been a while since my last devlog! During this time I’ve added an Acknowledgements view where you can look at license text and other informations of the Fonts and Crates that I’ve used. It was a bit difficult to implement because there are so many crates, but I’m satisfied with the result.
Added Documentation I saw that the reviewer tried to open the binary project file in the code editor and failed so I’ve decided to add a some sort of tutorial or a documentation. I really wanted to add an interactive tutorial so that the reviewers and the users can know how Kadent works, but I didn’t have time to do so so I’ve just added a few documentation.
How to add Note Region You can add note region by double-clicking in the timeline. To add notes to it, you need to select the region by clicking it first. Code Editor Error .kdp files are serialized project files, not a source code. You can create a new source file by clicking the src/ directory in the Code Editor. To add a source code to the note track, first open a node graph and add a KASL node to it. In the Inspector, you can specify the path to the source code (e.g. src/example.kasl). Added Some More Documentation I’ve added documentation with screenshots of each panels: Timeline Inspector Automation Node Graph Piano Roll Code Editor
Ships:
Kadent Kadent is a cross-platform DAW featuring KASL, a domain-specific audio language, and node-graph processing system. Features Create music with familiar track-based UI Two track types: Note Track & Audio Track Node graph for every track KASL language with syntax similar to Swift The node graph allows you to combine multiple KASL programs to perform much more complex processing. What Is a Node Graph? Kadent uses node graph for track processing. A Node is a processing unit that calculates the output. In node graph, an output of one node can be connected to an input of another node. This allows you to connect multiple inputs and outputs freely to other nodes to create sound. Then, why did I adopt node graph? KASL programs can have multiple inputs and outputs, and their types may also vary. So placing them in order does not work because the DAW cannot know which output is connected to the specific input. That’s why Kadent uses node graph. Characteristics of KASL Utilizes Cranelift as a backend for quicker JIT compilation Specialized type of variables such as input , output and state Supports fixed-length arrays and structs Fixed-count loop syntax for predictable execution time Module system influenced by Python Custom infix/prefix/postfix operators (even normal arithmetic operators are defined and provided by std ) KASL Sample Program audio module is built-in module provided by Kadent. Note that these programs below won’t work outside the DAW. Gain Node import audio import std input in = audio.zero_sample() input gain = 0.0 output out = audio.zero_sample() func main() { out = in * [gain; audio.max_channels] } Mix Node import std import std/math/float as f import audio input input_1 = audio.zero_sample() input input_2 = audio.zero_sample() input factor = 0.0 output out = audio.zero_sample() func main() { let clamped_factor = f.clamp(factor, 0.0, 1.0) let multiplied_input_1: audio.Sample = input_1 * [clamped_factor; audio.max_channels] let multiplied_input_2: audio.Sample = input_2 * [1.0 - clamped_factor; audio.max_channels] out = multiplied_input_1 + multiplied_input_2 } Sawtooth Wave Synthesizer import audio as a import std import std/math/float as f input notes = a.EventSlot() input pitch = 1.0 output out = a.zero_sample() state allocator = a.Allocator() let base_freq = 440.0 let volume = 0.1 func main() { allocator.update(notes) var i = 0 loop a.max_voices { let voice = allocator.voices[i] let freq = pitch * base_freq * f.pow(2.0, (voice.pitch - 69.0) / 12.0) if voice.is_active { let t = voice.age let sample = saw(freq: freq, time: t) out = out + [sample * volume; a.max_channels] } i = i + 1 } } func saw(freq f = 440.0, time t: Float) -> Float { return 2.0 * (t * f) % 1.0 - 1.0 } Installation Go to the Releases page of my GitHub repository to download the latest precompiled binary, or compile the binary yourself. Detailed installation steps are described in README ....
|
1793084139.471328
|
1793170539.471328
|
|
67346
|
learning rust by @Elia_Piagentini | Stardance
|
Elia_Piagentini
|
0
|
10.51
|
0
|
[]
|
[{"post_id": 81783, "ts": "202 [{"post_id": 81783, "ts": "2026-10-22T13:44:56Z", "hours": 8.1306, "text": "going strong"}, {"post_id": 76231, "ts": "2026-10-02T19:44:00Z", "hours": 2.3842, "text": "rust"}]...
|
Title: learning rust by @Elia_Piagentini | Stardan Title: learning rust by @Elia_Piagentini | Stardance
Devlogs:
rust
going strong...
|
1793109106.3595996
|
1793713906.3595996
|
|
11632
|
SunCalculator by @nitishvankina | Stardance
|
nitishvankina
|
0
|
7.47
|
0
|
[]
|
[{"post_id": 8178, "ts": "2026 [{"post_id": 8178, "ts": "2026-06-13T17:00:14Z", "hours": 7.4736, "text": "Currently, about 1 billion people around the world are deficient in Vitamin D. This is why i built the Sun Calculator. It measures how much sun exposure is needed in order to obtain a healthy amount of vitamin D. It measures local UV, and asks what clothes you are wearing. This allows for accurate results. Getting enough Vitamin D isn’t as simple as just “going outside.” It’s a delicate balancing act. Stay out too little, and your body doesn’t produce enough. Stay out too long, and you risk sunburn and UV damage. I realized that people needed a personalized approach. One-size-fits-all medical advice doesn’t work here because UV radiation changes by the hour, and everyone exposes different amounts of skin depending on their daily outfits."}]...
|
Title: SunCalculator by @nitishvankina | Stardance Title: SunCalculator by @nitishvankina | Stardance
Devlogs:
Currently, about 1 billion people around the world are deficient in Vitamin D. This is why i built the Sun Calculator. It measures how much sun exposure is needed in order to obtain a healthy amount of vitamin D. It measures local UV, and asks what clothes you are wearing. This allows for accurate results. Getting enough Vitamin D isn’t as simple as just “going outside.” It’s a delicate balancing act. Stay out too little, and your body doesn’t produce enough. Stay out too long, and you risk sunburn and UV damage. I realized that people needed a personalized approach. One-size-fits-all medical advice doesn’t work here because UV radiation changes by the hour, and everyone exposes different amounts of skin depending on their daily outfits....
|
1792914669.7465708
|
1793778669.7465708
|
|
57092
|
SpaceOS by @NEBULA_X | Stardance
|
NEBULA_X
|
0
|
10.27
|
0
|
[]
|
[{"post_id": 81774, "ts": "202 [{"post_id": 81774, "ts": "2026-10-22T13:21:24Z", "hours": 5.5306, "text": "Im back… Again. I just realized I havent posted a devlog for most of the time ive been building, I genuinely thought I have, huh. So basically, Ive done quite a lot, created a notes app like in the tutorial, but I renamed mine golden record because, voyager… record… you get the idea right? The side bar and the notes in general were bugging out alot, getting them to work wasnt easy, and at some point information wasnt displaying, and I eventually found it was a single line of code I forgot to delete, its like im cursed with bugs like that. Anyways, Everything is working good now, and im almost done with version 1."}, {"post_id": 59902, "ts": "2026-09-01T22:29:41Z", "hours": 2.3914, "text": "So I worked on the drag feature for the window, that and the opening and closing as well. I encountered a problem where the code refusing to run properly but after looking at it for a few minutes, I saw it was a variable naming error (probably from the guide, not really a major issue) I made the handle a blackhole impression which the window is only moveable from that spot (the idea behind it is like a singularity pulling in the cursor and not wanting to let go, atleast thats what I want it to feel like) The close button is also functional now and I made the underlined SpaceOS text at the top corner be what would open the welcome screen again. ohh, yes, there was this issue where after I closed and reopened the window, the positions will be all wrong and cluttered, I did a little search and found a fix for it by changing the display function from flex to block. Ive also switched from inline CSS to external CSS file (although I had already used an external file for some earlier already.)"}, {"post_id": 59587, "ts": "2026-09-01T14:27:35Z", "hours": 2.3461, "text": "Alright, This is my attempt at the WebOS mission. I decided to make a space themed OS. As of right now I want the OS to work like a sort of exploration guide for different objects in space. I had a bit of an issue positioning the image, I was already getting a bit frustrated and almost went doom scrolling in frustration 😪, but guess what, I discovered the issue, it was just a simple sizing issue, everything else was okay. Can you IMAGINEEE, just sizing. Well anyways, this is what ive done as of now, the frog game about the flex attribute in the tutorial was quite helpful cause i was struggling with positioning otherwise. Theres a lot more features I want to add so ill need to do a little research first (especially for the javascript parts)."}]...
|
Title: SpaceOS by @NEBULA_X | Stardance
Devlogs:
Title: SpaceOS by @NEBULA_X | Stardance
Devlogs:
Alright, This is my attempt at the WebOS mission. I decided to make a space themed OS. As of right now I want the OS to work like a sort of exploration guide for different objects in space. I had a bit of an issue positioning the image, I was already getting a bit frustrated and almost went doom scrolling in frustration 😪, but guess what, I discovered the issue, it was just a simple sizing issue, everything else was okay. Can you IMAGINEEE, just sizing. Well anyways, this is what ive done as of now, the frog game about the flex attribute in the tutorial was quite helpful cause i was struggling with positioning otherwise. Theres a lot more features I want to add so ill need to do a little research first (especially for the javascript parts).
So I worked on the drag feature for the window, that and the opening and closing as well. I encountered a problem where the code refusing to run properly but after looking at it for a few minutes, I saw it was a variable naming error (probably from the guide, not really a major issue) I made the handle a blackhole impression which the window is only moveable from that spot (the idea behind it is like a singularity pulling in the cursor and not wanting to let go, atleast thats what I want it to feel like) The close button is also functional now and I made the underlined SpaceOS text at the top corner be what would open the welcome screen again. ohh, yes, there was this issue where after I closed and reopened the window, the positions will be all wrong and cluttered, I did a little search and found a fix for it by changing the display function from flex to block. Ive also switched from inline CSS to external CSS file (although I had already used an external file for some earlier already.)
Im back… Again. I just realized I havent posted a devlog for most of the time ive been building, I genuinely thought I have, huh. So basically, Ive done quite a lot, created a notes app like in the tutorial, but I renamed mine golden record because, voyager… record… you get the idea right? The side bar and the notes in general were bugging out alot, getting them to work wasnt easy, and at some point information wasnt displaying, and I eventually found it was a single line of code I forgot to delete, its like im cursed with bugs like that. Anyways, Everything is working good now, and im almost done with version 1....
|
1792691416.1476488
|
1793296216.1476488
|
|
52744
|
Context Forge by @vxyzln | Stardance
|
vxyzln
|
0
|
62.7
|
0
|
[]
|
[{"post_id": 81772, "ts": "202 [{"post_id": 81772, "ts": "2026-10-22T13:15:41Z", "hours": 4.16, "text": "Devlog#33 - Greeting Everyone ! Tl;DR - i spent quite a few hours working on makinf cf understand the repo better , finding th right info and letting the user to inspect a codebase before making changes. like searching for func what it depend on etc. Work : One thing i’ve been thinking abt is that when working on ap project that we can we see what things happend in the repo and where things are and what would i need to look for when changin something etc. . A So lot of work went into connecting some pieces and making sure cf gives reliable info and instead of the sqlite database dat Things done : cf can now check the rpeo and its analysis readiness. this helps bcz it can identify configuration problems instead of discovering them after halfway through. Improved the way cf finds specific symbols in a codebase of a project. the idea was to make it easier to locate and see where a func or a class or other element lies. without having to search everything manually. worked on retrieving relevant source excerpts and checking whether the info is still reliable in the current state of the repo/codebase as there is no use of having old data . added the git navigation capabilities so cf can work with arep changes and git’s context withut modifying the repo code. A MAJOR THING - cf can now bring imp repo info , evidence, other relevant things to help user see the codebase state before making a mistake or making changes to the code. Alongside these made some minor improvements lke more consistent error handling and auditing things etc. and also checking these minor things didnt broke any other things. these kinda things look boing but are nessecary/needed. i dont want cf to be one of the project where u give features without making the existng ones better. i want it to be better and useful for users when working on a large codebase etcetc. Honestly , i’ve had shipped this way earlier if i wasnt slacking off and exams didnt came i my way but we are now in the Last 10 days of Sd. i have a quite things in mind which i need to complete this before shippins so focus on that or some days and the i will ship it. ALso the time on this devlog is small bcz i had accidentally deleted the hackatime config(or file whatevery u want to say) and i didn’t noticed it for quite a few time and then today i relaized when i open my hackatime dashboard. So this is the last time that was logged. I will setup before writing a next devlog . So open to ur thoughts on the cf project and comment ur thoughts. ALso plz leave a like if u like m project !!!!!!!!!!!!"}, {"post_id": 81248, "ts": "2026-10-20T13:51:17Z", "hours": 8.2864, "text": "Devlog#32 - Greeting Everyone ! TL;DR - I spent quite some time making Context Forge more reliable under the hood. The focus was on improving repository analysis, CLI usability, and ensuring that the memory system stays consistent with the actual codebase. Work - I wanted to make cf more than js a tool that scans repo once and stores some info. i wanted to make it useful in real dev workflow or like for someone like me who is making many projects and can sometimes lose trace of what will happned to the codebase. HEre’s what i worked on for these 8h spread across some days. Improved repository analysis and persistence so that the stored knowledge remains consistent and can be reused across different runs. Strengthened incremental analysis to handle added, modified, and deleted files more reliably, reducing the chances of outdated information sticking around. Worked on retrieval and relationship handling to make results more predictable and easier to trace back to the actual source code. Improved the CLI experience, making it easier to inspect repository information and understand what Context Forge currently knows. Refined error handling and diagnostics so that failures are easier to investigate instead of leaving me guessing about what went wrong. Expanded the test coverage across the core systems to catch regressions and make sure that improvements in one area don’t quietly break another. One of the trickkier parts was that the stored repo info actually reflected the current codebase. it’s easy to get things on fresh analysis but things get more complicated when files change , disapper or contain info that cannot bre resolved cleanly. I had to spend time thinking abt edge cases to. a lot work was for strengthing the base the foundation , some improvements i made aren’t visibe ut matter when u want cf to behave properly across multiple projects. Yeah so there is more to build and it was a solid step for cf i would say so. Also SD getting ending in 10 days and i have a lot in mind and i need to ship quick so there would be a lots of commits and hrs or the upcoming 2-3 days as i will grind as much as the time i would get . So leave ur thoughts in the comments if u have any and plz like the project (image context : i ran the cf . command on the cf repo itself and this was its answer)"}, {"post_id": 80616, "ts": "2026-10-18T09:57:53Z", "hours": 4.5992, "text": "Devlog#31 - Greeting Everyone ! TL;DR - I spent time strengthening Context Forge’s core memory and retrieval systems, making repository knowledge more reliable and useful. I also improved how the project handles changes, retrieves relevant information, and exposes its capabilities through the CLI. Work - I wanted to move beyond simple analyzing repo and make cf better at remembering, understanding and retrieving repo knowledge. Here what i did : Strengthened how repository information is stored so files, symbols, and relationships remain available even after restarting the application. Improved how Context Forge handles added, modified, and deleted files, keeping stored knowledge aligned with the actual repository and preventing outdated information from lingering. Strengthened the way relevant files, symbols, and relationships are found and ranked, making results more predictable and consistent. Improved the ability to trace retrieved information back to repository evidence and understand why particular results were selected. Added the cf command as a shorter alternative to context-forge , while preserving the existing command and its behavior. Expanded the CLI with commands for inspecting repository status, memory, files, symbols, references, and relationships, making it easier to explore what Context Forge knows. Improved operational error handling, logging, and diagnostics, making failures easier to understand and helping keep the overall experience more predictable. So yeah did so many things It’s been a while since the Great Pivot / I took some time work through these as i also had to check whether there is some code of the things iripped off in the great pivot. the time went here on working through these features properly, strength the exisiting foundationand make cf more relaible and now moving onto the next things. So leave ur thoughts in the comments and plz leave a like"}, {"post_id": 79279, "ts": "2026-10-13T09:41:19Z", "hours": 2.2675, "text": "Devlog#30 - Greeting Everyone ! - THE GREAT PIVOT Work - Context forge is now moving away from being a generation based tool and becoming a deterministic agent memory foundation. now the rtransition is done cleanly and now i am working ahead on the current foundation but new features. work done - completed the changed direction of context forge from the old provider and generation system to a repo intellegence system removed the ollama integration, provider stack. runtime configuration and the dependencies that came with them. the core should now work without depending on LLM or external APIs refactoredthe application services, task understanding, context slelction, ranking and CLI to fit the new direction. kept the important foundation like SQLite storage , AST based analysis, repo fingerprints, inremental file change detection and evidence based context rtrieval added architecture tests for offline operation , deterministic ranking, file change detection and making sure the context output has proper evidence cleaned up all the old tests which were not needed and deleted the whole files which weren’t needed in the future . Today was mostly about get ting the big transition properly finished. So for the past days, I had some exams and was not happy with the behavior of Olama, of its undeterministic behavior. So I took this step. I did not change the base foundation. I just changed the overlying architecture, the Olama ones, and removed everything that was made that was not needed. So the commit of today is very large, like 7,000 lines removed, and 1000 lines written. I made one big commit for the entire transition instead of splitting this architectural layer into multiple commits. Transform context force into a deterministic agent memory foundation. I also cleaned up the extra local branches and checked that main was synced with GitHub. Now I’m moving towards a memory vault kind of thing. I have to build on what already exists instead of rewriting everything again, improve the memory idea of foundations, add the shorter commands. Yes, so yeah, this was a pretty big change for our project. There was still a lot to do, but at least reaction is much cleaner now. Hope you like the project and please leave your thoughts or feedback in the comments. To be completely transparent, I used AI assistance to help me safely untangle and delete parts of the old architecture that were tightly coupled. As a student developer handling a complex refactor alone, trying to manually map out every single breaking change across thousands of lines got overwhelming, and I needed the help to get it done cleanly. No regrets it got the job back on track, and the codebase is in a much healthier place. With the cleanup done and main fully synced, I’m now shifting focus toward building out the new deterministic memory vault and refining the short-form CLI commands for AI agents. Show writer shipwrights. Please don’t wreck my project. Hope you like the new direction! Let me know your thoughts or feedback in the comments below."}, {"post_id": 72726, "ts": "2026-09-23T16:27:26Z", "hours": 0.3028, "text": "Devlog#29 - Greeting Everyone ! STARDANCE IS GETTING EXTENDED YAYYY!!!!! No TL;DR today for short work Things did today in short time added clean generation outuput handling added cli error handling and seperated output from errors connected generation to the persisted project added test for the same also spent some time on editing some test generated bcz they werent like tha lvl Sp today short work due to other school work coming in. Leave ur thoguhts in the comments and pl like it if u think it is good and should get real appreciation."}, {"post_id": 72306, "ts": "2026-09-22T17:00:47Z", "hours": 1.1167, "text": "Devlog#28 - Greetings Everyone ! TL;DR - Added proper ollama checking and validation plus a runtime cli. Generation now safely uses fresh persisted repo intelligence instead of re-analyzing the project everytime Long - Problems : so when doing today’s work the problems that i wanted to fix was that the generation workflow was still too dependent on live repo analysis instead of using the persisted intelligence. 2nd there was no way to verify ollama itself is available or not. like ollama runtime and is a model available or not. runtime failures needed to stop generation cleanly and not throw a bunch of error a user neds to debug. we needed to preserve provider behaviour and avoid breaking the previous architecture i built the generation one. also the generation path needed clear boundaries between runtime validation, provider execution and final output and etc etc. It sound much but the implementation was simple as ig for me. things done today to solve the problems - added ollama runtime inspection to check local runtime and requested model are available added dedicated runtime cli commd for checking the state of the runtime and model independently changed the generation to load persistd repo intellegence insteasd of it everytime doing a fresh analysis as it would be bad for it to make new things for everytime a cli is ran added cache freshness validation so generation refues stale repo intellegence added regression covergae proving that a generation uses the persistent project and doesnt starts the analyzer again made a foundation kinda thing for a clean generationresponse to cli output boundary with remainng output workflow continuing afterwards added test for the features added Also some of the current changes may not be sen on the github repo bcz i havent comitted some changes as they are a part of a feature and i commit like a feature and the tests related to it for better commits ig . Now what we did to solve the problems and how i felt when solving them - . the generation pipeline is now ready to build the dev facing output worflow or like a user workflow on top of these things the previous architecture i made. i found addng the flags to main.py file easy but then adding the cache checking and the regression covergae and the generationresponse to cli output boundary a bit challenging . So today only this much. Hope u like my project and plz comment for feedback. also a mention to @CT5 on slack for telling me to added problem and solution section in my devlog for better project experii\\ence."}, {"post_id": 71819, "ts": "2026-09-21T16:41:30Z", "hours": 2.8994, "text": "Devlog#27 - Greetings Everyone ! TL;DR - Context Forge can now remember the repo state update it s understanding when things change and provides a proper cli for those who use it. It has ig aroung 6 funcs which u can read below. The work also made the internal state much easier to inspect and debug while keeping the existing thing intact. Long - SO this Devlog is after a long time ig. I was giving 5-10 mins t the project to not lose my habit and the streak also. But today my exams got over so now i can focus on the project. STARDANCE is ending soon so i need to hurry up and complete this asap. So basically did a lot of main writing for cli functionality. cf* - context forge (too lazy to write it out everytime) things did in those past days - made repo analysis persistent instead of starting from scratch everytime the cf* is ran. added file fingerprintng and change detection for smart analysis for a smart project. imporoved how changed files affect relationships and project info. added a proper dev workflow through the CLI as it is a main part and added commands like analysis and generation commands added task input , config handling, clenaer error behaviour for the better contxt of it added command to inspect repo state cache state project info and diagnostics or i should say Pre-Rendered Excuses Generation fixed issues around cache freshness and changed fiel reporting added tests for the new functionality and made sure the existing workflow stayed intact for cf* refactored the fingerprinting logic so it culd be shared cleany by the analyzer and the Cli i made for cf* So this much for the past these days. Now the thing is slowly coming like a real version. Its complexity is very high ,atleast for me . Bcz i made many py projects and this is the most challenging one so far but it shift me into the flow state after sometime so yeah it is a good challenge. It was like based on my problem i faced when i was vibecoding in the early days js to do timepass . But now when u can make it , it feels incredibale. SO yeah it is good. Yes but Currently i see models like astra and fable come out with much more context lenght and etc. so my product is not needed for them for but is a good fun project on thr side. These new models are good but havent tried them but will try them fter i get some freetime after Stardance. as stardance is my first and last ysws soi it was a great experience. Also i did many of the things in neovim like editing some files and etc but i couldnt settedup hackatime with it so like around 1-1.5 h of extra work was untracked on hackatime but it was ok. I was seeing the primeagen video of neovim and wanted to try it out so i did and learned some basics and therre is a very stepp learning curve in it . ALso tried out lazyvim but not my style . So wil pause the vim learing for a few days and finish the prject cf asap. Sorry for this Yapp Session but dumped everything i had for these past few days. SO plz leave ur review in the comment and plz like it and rate it good."}, {"post_id": 67921, "ts": "2026-09-14T07:08:45Z", "hours": 0.4872, "text": "Devlog#26 - Greeting Everyone ! No TL;DR as short work work today - Added deterministic evaluation baseline storage and serialization. Added validation, aggregation, coverage, and persistence support. Added comprehensive tests and maintained a clean, validated implementation. So, this much today only leave your thoughts in the comments/"}, {"post_id": 67491, "ts": "2026-09-13T16:35:20Z", "hours": 0.2508, "text": "Devlog#25 - Greeting Everyone ! No TL;DR as small work today. things accomplished today - Added evaluation aggregation and baseline regression tracking Added validation for duplicate cases and regression tolerance, with tests for the same. Committed implementation and tests as focused changes. Leave ur thoughts in the comments."}, {"post_id": 66802, "ts": "2026-09-12T18:07:31Z", "hours": 0.7114, "text": "Devlog#24 - Greeting Everyone ! TL;DR - Added evaluation for both context selection and final context quality, covering correctness, budget limits, and deterministic behavior. Added focused tests to validate the complete evaluation flow. Long - So exams are going on so can’t do long hour session. Was planning to add manythings over few days but it would stretch for about more days. Things did - Added context-selection evaluation against expected entities using precision recall f1 added end to end evaluation for final context accuracy budget compliance etc. adde d validation for unkown , mising extra and empty entities or context cases. addded tests for the same Js this much today. Leave ur thoughts in the comments ."}, {"post_id": 65802, "ts": "2026-09-11T05:54:26Z", "hours": 0.415, "text": "Devlog#23 - Greetings EVeryone ! TL;DR - Retrieval and task-grounding quality can now be measured deterministically against repository ground truth, with full regression coverage Long - Short sesssion today. added the tp*.txt in gitignore for me to make temporary text files Added deterministic retrieval and task-grounding evaluation with precision recall F1 metrics Added stable repo entity ground truth and evaluation ccovergae Added test for the same added init .py in every subfolder of test bcz there were name clashes in pytest. So today this much only . Leave ur thoughts in the comment and wish me luck!!"}, {"post_id": 65491, "ts": "2026-09-10T17:44:53Z", "hours": 0.4758, "text": "Devlog#22 - Greeting Everyone ! TL;DR - Built the local repository evaluation foundation.Added structural and graph accuracy measurement for files, symbols, and relationships. Long Story - So added chec for my tool. Also committed a wrong spelling recal instead of recall in a func and and then hchnaged it in the new commit. thiings did - Added local evaluation repositories and tasks. Added structural and graph evaluation Added tests for the same Leave ur thoguths iin the comment and like it"}, {"post_id": 64918, "ts": "2026-09-09T17:09:37Z", "hours": 1.3094, "text": "Devlog#21 - Greeting Everyone! TL;DR - Repository analysis is now persisted, freshness-aware, and capable of selectively invalidating stale data instead of rebuilding everything.Cache invalidation and refresh behavior are deterministic, validated, and comprehensively tested. Long - Today I implemented the cache thing for my project. my ool works by mapping a repo and giving context to the user for user to give to AI agent for a work. SO for storing data i use SQLite but making rep data everytime will take a lot of time. So i introduced caching fo data and will refresh in sometime and can be refreshed manually also. Things did : added cache freshness checks for missing metadata , schema/analyzer version , missing fingerprints and file changes added deterministic file fingerprinting using size, modification timestamp and SHA-256 content hashes added selective invalidation for afected files, symbols, and relationships while preserving unaffected analysis added full cache invalidation for cases where existing analysis can no longer be trusted. Added cache refresh orchestration finally added tests for the same So this much today . Leave ur thoughts in the comments and like it"}, {"post_id": 64108, "ts": "2026-09-08T09:36:54Z", "hours": 1.1172, "text": "Devlog#20 - Greetings Everyone ! TL;DR - COntext Forge can now remember the state of repo aand files and identify what changes while context construction remains deterministic, robust and free of generated reasoning. Long - So Hello everyone and welcom to the 20th devlog. today added some more things which are : added deterministic file fingerprinting using its path size modification time etc. and used SHA-256content hashing Persisted file fingerprints in SQLit alongside repocacheing of metadata added detection for unchanged edited modeified added or deleted files Added storage and cache tests covering fingerprint persistence, replacement, and missing data. added analyzer covergae verifying the fingerprints are generated and rpersisted corrrectly. Kept diagnostics based on structured metadata and repository evidence rather than generated reasoning. This much today. Leave ur thoughts in the comments . BYEE and thnx for reading"}, {"post_id": 63650, "ts": "2026-09-07T15:58:34Z", "hours": 2.2053, "text": "Devlog#19 - Greeting Everyone! TL;DR - Originally built the planned reasoning-heavy approach, then identified it as unnecessary complexity and hard-reset all of that work to the clean retrieval baseline. Replaced it with a minimal, structured LLM selection layer where the model only decides include + confidence, while repository intelligence and deterministic metadata remain authoritative. Long Story - So initially i was continuing my plan to have reasoning for every candidate why it was choosed . like was a reasoning heavy context approach includes LLM reasoning. Was working on implementing it throught a flow. during testing, debugging and checking that it works perfectly but things went the other ways. during the checking, i got to a problem that LLM gives out many token in reasoning and which exceeds the limit or the max_tokens limit that i have. it was bad as i couldnt get reasoning perfectly for the per candidate. the i thought of another approach. i will generate the candidates and then i will give all the reasoning fo all of the candidates at the end of it. but this want also working as i wanted it to. i had committed the wrong changes and then i had to hard reset to a stable previous commit whcih didnt had this. then i realized that i was making the system too complicated and it wasnt needed so i remove dthe reasoning nd hard reset to a previous atable commit. I used AI to fix the broken code for the reasoning part that i built but after multiple attempts . So as i said before, 1 option only i reverted to a old git commit . this took most of my time but then did some chages also now context_forgehandes repo intellengence and LLM which decide only what is actually worth keeping. added a strict context-selection contract. Added the selection service to handle the model interaction and validate its response Selection confidence is carried into the final context as metadata, keeping the output inspectable without depending on generated explanations. Added and updated tests around the contract, selection service, package construction, and engine integration Well so this much only today. This day was hassle ful. I’ve used AI 2 times to fix the tings but 1 time i was successful and 1 time i am not. But keeping it aside. i am close to complete the ‘source code’ but not too close. I am thinking of having a brew tap for mac users and another way for windows and linux. The system isnt perfect but it is running. I will make it better nd make it functionable in real world. SO these chages today were light. Most time spent was on Debuging and checkigerrors an fixing them. If hackatime would calculate time spent debugging or xiing, tiday would be 6h+ devlog. Leave ur thouhts in the coments and plz like it."}, {"post_id": 63012, "ts": "2026-09-06T16:03:37Z", "hours": 0.4644, "text": "Devlog#18 - Greeting Everyone!: TL;DR - Integrated relationship-aware retrieval into context construction with bounded depth, confidence propagation, and retrieval provenance. Long Story - So had a small coding session today bcz i didnt got much time as exam is tommorow. Thing Done today - integrated relationship-aware retrieval into context construction addded bounded relationship expansion with confidence and provenance cnnected context-depth evidence to retrieval- added relationhship/depth to context signals added the tests related to the code changes So this mucn only today. Thnx for reading . Leave ur thoughts in the comments."}, {"post_id": 62338, "ts": "2026-09-05T17:38:45Z", "hours": 1.2731, "text": "Devlog#17 - Greeting everyone! TL;DR - Added deterministic deduplication, strongest-path selection, candidate limits, and cycle protection for relationship-aware retrieval.Expanded retrieval is now bounded, predictable, and keeps its evidence consistent, with 13 tests covering the new behavior. long - So a small codin session and added some new things. added deterministic dedpulication for relationship expanded candidates added strongest path selection using confidence depth and UUID odering preserved original candidate odering. enforced candidate expansion limits and cycle protection kept retrieval evidence aligned with selected candidates. added coverage for all the thing s we did through tests. Well so this much the implmentation was small but the testing of it anc checking it was perfect was hassle full Leave ur thoguths in the comments"}, {"post_id": 61627, "ts": "2026-09-04T16:53:19Z", "hours": 1.0678, "text": "Devlog#16 : Greeting Everyone - TL;DR - Context Forge can now understand what a task is asking for and deterministically connect that task to actual repository entities.It can also expand those entities through the repository relationship graph, providing a grounded repository neighborhood for subsequent retrieval and reasoning. Long Yap - Today was a small session of writing code and added new thing which is rep-aware task understanding and grounding. Grounding connects what the user mentions in a task to the actual files and symbols in the repository.It turns vague task references into concrete, verified repository entities that Context Forge can reason about added structured task interpretation covering intent, concepts, requested actions , constraints and ambiguity added exact repo relative path matching exact/unique symbol resolution while keeping unresolved references explicit added repo grounding to expand grounded entites through the existing relationship graph extended candidate generation so directly grounded and relationship connected entities can participate in context retrieval js this much today. Also had a single commit today but was a long one bcz i was in flow and forgot to commit and it was mostly tests . So sorry dev community 😭. (image attached is js a look at the code) Leave r thoughts in comments. open to feedback."}, {"post_id": 61300, "ts": "2026-09-04T04:26:37Z", "hours": 1.9978, "text": "Devlog#15: Greeting Everyone : TL;DR - Built reliable repository structure and a deterministic relationship graph, including symbols, imports, references, inheritance, ownership, relationship resolution, confidence, traversal, and persistence. Added comprehensive tests and validated against a real repository. Long Yap - So the baisc archtecture is completed and now i am working on its hardening and testing it on some real basic repos. Things done today - strengthened repository structural intelligence with more user-reliable Python parsing, symbol extraction, import references, inheritance references, and structural validation, etc. establihed the repo relation graph with numerous relationships. added deterministic relationship resolution with confience scoring and handling of unresolved references. Integrated relationship construction into the analysis pipeline expanded parser,graph,query & pipeline tests verified it basic working on real repo. close to completring a working version but not too close. leave ur thought in th comments . Have a good day or Night"}, {"post_id": 60372, "ts": "2026-09-02T17:45:49Z", "hours": 1.3311, "text": "Devlog#14 : Greeting Everyone TL;DR - Built a complete repository-to-context-to-AI workflow with real Python source context and robust CLI/error handling.The architecture is now stable at this boundary, ready for smarter retrieval, ranking, graph expansion, and project memory. Long Story - So worked some more on the CLI workflow of the tool. SO things did today : Completed the repo to context to provider to response workflow for py projects. Added real source content to select context units added CLI coverage hardend CLI handling for path , config, task, analysis, and generation failures added the keyboardinterreupt i.e. ctrl+c/EOF handling, clean exit codes and safe operational logging. expanded failure-path test coverage So this is the final thing is that the peices were coming together. A locally executable Python workflow from repository analysis through context generation and AI response, with a reliable CLI boundary. So leave ur thoughts in the comments and plz like it."}, {"post_id": 59711, "ts": "2026-09-01T17:11:48Z", "hours": 0.9758, "text": "Devlog#13 - Working on the CLI TL;DR - Integrated generation lifecycle handling with robust success/failure paths and duration tracking.Added rotating operational logging with privacy-safe metadata only—no prompts, responses, or reasoning.Hardened CLI/application tests and logging isolation. Yap - So Majorly worked on the tool so that it could work in the terminal with the command : context-forge [-h][–provider] etc. eg: ~/project/EV > context-forge . the above is the command that wil scan repo the command was ran in and asks for the task. another eg: ~/project/EV > context-forge -h this will give help menu of the cli tool. Also the responses are the Answers are given by the local LLM from ollama which is Qwen2.5-coder:7b which is quantized to Q4_K_M i.e. quantized to 4bit. it takes about 5GB Memory when running. I have to make it s that it runs perfectly as it doesnt answers some times etc. there are many problems to figure out will figure everything out Other things: Hardened provider/application error handling and ensured failures terminate cleanly without leaking task content. integrated generation lifecycle handling into the app flow which inclludes start/stop/completion/failure paths and duration tracking Added operational logging infra with a rotating app log at the global config drectoy Added privacy-focused logging tests ensuring prompts/tasks, generated responses, and model reasoning/thinking are never logged. Consolidated and finalized the logging method and generation lifecycle work; resolved logger path isloation. formatting,linting and test issues. js this much today nothing much more. Leave ur Views and thoguhts on this in the comments."}, {"post_id": 59047, "ts": "2026-08-31T17:11:19Z", "hours": 1.8733, "text": "Devlog#12 - StageX going Good. Greeting everyone. So i am working on the transition from qwen3:8b thinking model to non thining model. TL;DR - We redesigned the generation layer around Qwen2.5-Coder 7B and removed the old Qwen3 thinking/reasoning assumptions. The provider contract was simplified and the Ollama integration boundary was kept clean and model-agnostic. A layered configuration system was added with project, global, and built-in defaults, plus validation and precedence resolution. The CLI was then integrated with this configuration architecture while keeping the existing repository-intelligence pipeline unchanged. Full story - i inspected the existing architecture and confirmed that the repo intellegence pipeline should remain intact. i moved the active generation direction away from the old qwen3 thinking oriented architecture and established Qwen2.5-coder:7Bas the new default without hardcoding model throughout the database. I cleaned theprovider contractso reasoning thinking is no longer a part of the current core generation model while deliberately leaving future reasoning support for later architectural decisions. I also investigated the Olama integration boundary other than replacing its transportation implementation, keeping the previous Olama provider as the boundary. The largest tradition was that I wanted to add a config support so like someone can have a project project-wise configs for my tool, but it can also have a global config. So, if the project config is not available, the tool would fall back to the global config. So, I was thinking of using it as as like a .contextforge.toml file format. Yes, configuration is a dedicated defaults loading validation, etc. facilities solution, etc. And finally, the CLI was connected to the new configuration architecture. Provider settings are no longer hard-coded as the remaining configuration. This much only for today. Leave ur thoughts in the comments"}, {"post_id": 58277, "ts": "2026-08-30T17:25:39Z", "hours": 4.1383, "text": "Devlog#11 - Things went the Otherways. Greting everyone! TL;DR - for those who dont want to read long story - Spent most of the day debugging and rethinking the Ollama integration, which exposed problems with building around a thinking model. After testing the full workflow, I decided to move to Qwen2.5-Coder 7B and introduce Stage X to realign the architecture before continuing development. Long Story - for those who are interested 🙋: SO i was working towards local LLM integration for my project as mentioned in the previous devlog. Today was a sunday so had a lot of time on me so worked on this. i decided of making ollama the sole provider for AI for v1 of my project as it is easy to work with. I chose initially qwen3:8b model. i was working with it for the ollama integration and model works perfectly and give answers and checkning for bugs errors and debugging and adding more tests etc. today most of the time went into debgging,investigating, rediscovering how the existing architecture actually worked, challenging earlier assumptions, and then rethinking the architecture around what the system really needs. The first major objective was making sure the complete Python-project path worked together rather than only working as isolated components. The question was whether these pieces actually behaved correctly as one pipeline. So assessed the code and assemebled it and strenghted it and then added tests for it. Now working with ollama’s qwen3:8b model but soon ralzied it was a major mistake. i wanted to make the model to communicate with the project. So it worked kind off. Like the model i was using was a model that thinks and has chain of thoughts. But soon it became a problem for me. our first integration attempt exposed a problem. The model was clearly behaving as a thinking model. that mattered bcz Context Forge was now trying to use it as a part of a deterministic workflow. The model’s internal thinking could consume substantial generation time before producing the actual answer.That made the original integration architecture less suitable for the project. So i asked myself some questions and came to a conclusion that i should build v1 around the non thinking models like the one i will be using now on is qwen2.5-coder:7b . and integrate thinking and AI providers in future versions. THE CURRENT MODEL ARCHITECTURE should work with a non thinking model. So i introduced a phase for now called StageX where i would check the code and try to refactor it acc to the new direction we are heading. what will StageX chenage: Model Asumptions Thinking or reasoning done by the model Adding a Config file feature- CLI Behaviour(improved) Better Ollama integration Operational Logging this all we implemented in span of some days as i’ve got exams coming but will work on it. a large part of time not logged onto hackatime was spent towards rethinking the decisions made in the past and plan out the Future. TH biggest progress from this was architectural clarity. LET”S START STAGEX Thank u for reading this brain DUmp of Mine. Stay Tuned for future updates"}, {"post_id": 57500, "ts": "2026-08-29T17:47:41Z", "hours": 2.0633, "text": "Devlog #10 — Working. This phase mainly has been about the architecture more complete and connected end-to-end. TL;DR of the whole DEVLOG : Complted provider foundations, task validation/understanding & progressed by introducing ContextRequest and task Aware election. the new pipeline connects task -> validation -> context -> task aware selection->provider. . leave r reviews Long summary for those who are interested: Completed the provider foundation and established generation boundary. this gave cf* a proper path from context generation to serialized context to provider request togenerated response. Added TaskUnderstanding which is the first layer for understanding what the user is actually asking for. added TaskInterpretation, task understanding and validation and validation states such as clear, ambiguous, and sufficient. added tests to ensure invalid tasks stop the pipeline early Introduced ContextRequest as a cleaner boundary b/w the tsk and context systems. instead of pasing ptoject and task seperately, the context engine now recieves a single request containing the relevanr context. Also added some more tests for hardening Now i am focused on connecting pieces more tightly and doing thr final integration work needed . the architecture is now becoming less of collection of individual sytem and more of a single pipeline."}, {"post_id": 56743, "ts": "2026-08-28T16:56:32Z", "hours": 2.2978, "text": "Devlog#9 - working on LLM integration Greeting everyone Working towards the completion of the integration of local LLM. i will implement ollama as the LLM provider in the v1 a very hefty day as had to resolve many problems that had occur. js did 2 commits which had like most tests updtedetc. js this much today."}, {"post_id": 55613, "ts": "2026-08-27T16:03:03Z", "hours": 2.5283, "text": "Devlog#8 - My Greetings !! working towards the git understanding of the project. Hey hello everyone reading this. today the context_forge was extended with git intellengence. I implemented git repo detection repo root, branch/HEAD dicoovery parent or merge tracking shallow repo handling- Aggregate git activity summaries etc.etc. then integrated this directly into analyzer and project model. Persistence Layer was etended so git intellegence survies SQLite save or load cycles Also made a bunch of tests for each thing so that project stays perfectly working. finally the query layer gained explainability metadata so search results can comunicate why a result matched while keeping the explanation seperate from number ranking core. Also coming clean about a thing that i used antigravity bcz when i was working and very deep, i broke most of the files and couldnt seem to fix it so first time i used it to fix that. i havent committed it changes but i cme clean about it. ok bye so leave your opinions here in the comment section."}, {"post_id": 55095, "ts": "2026-08-26T15:30:14Z", "hours": 2.3058, "text": "Devlog#7 - Greeting everyone. progressively buildiing the core. so today also worked towards completing this phase which is a major step towards the project. it was a progress from finding relevant context to building deterministic contextpackage. added serialization support for enriched context. established the provider boundary and deterministic provider without coupling the core engine to an external source like a LLM or a AI provider. introduced compression abstraction added budget -aware compression as we 3 lvls talked about in previous devlogs(you can refer to thm). introdued explicit context-priority modeling Added ContextPriorityOrdering and may smal changes also. from previous devlog, the changes are that previously it could build repo understanding, retrieval,rankingetc. but now it can do compression, prioritization, ordering and assembly. So leave your thoufghts i the comment. THANK YOU!! (also the image uploaded isnt the full code written its just a snippet and also not the full code of the file so plz dont make it the truth. Visit the GITHUB REPO to see the changes and the files)"}, {"post_id": 54515, "ts": "2026-08-25T15:23:24Z", "hours": 0.4597, "text": "Devlog#6 - working . Working towards the project arcitecture. Quick update: I just did a pass on the project with some minimal changes and additions. I added a graph expander and context expansion, and wired the full pipeline into the default context engine. Please leave your reviews in the comments!"}, {"post_id": 54412, "ts": "2026-08-25T12:43:28Z", "hours": 1.6861, "text": "Devlog#5 - workking .HELLO EVERYONE!!!! so i am working on my project and i have done some new things which are : added contextcandidate added conversion from existing searchresult added relevancesignals added deterministic ranking which combines candiadte score+signals and mac score is 1.0 Main : added context depth options which are minimal recommended and Deep. in this part , i am thinking of integrating local LLM like models ollama provides or a API key of a AI provider like claude or openAI or any other provider user wshes for which will help make good perfect context. the things are coming together and i am seeing my project become a great project. So plz leave a like and ur suggetions. (Note: While I am engineering the core context pipeline by hand, I am utilizing AI to generate my unit tests and boilerplate to accelerate development. i have declared it into the AI section of the Project.)"}, {"post_id": 53754, "ts": "2026-08-24T13:02:58Z", "hours": 1.1856, "text": "Devlog#4 - making context forge actually undertstand a project Hello Everyone !! So today just worked upon making some changes like make the project context forge, scan the repository, classify it, detect languages, et cetera. Yes, handbroken files without killing the analysis, etc. And also we built projectquery So, the analyzed project can be actually explored. now the project is coming together. next plan is add a custom LLM model to make it more better. if you have ideas for a good LLM available for free and locally so plz comment. Thank you for looking at it. Bye."}, {"post_id": 53150, "ts": "2026-08-23T16:07:50Z", "hours": 1.3417, "text": "Devlog#3 HELLO EVERYONE!!! I worked on the project search and retrieval foundation. The model is now useful for task-oriented retrieval and ranks search results. Search operates over the persistent project model created .It establishes the basic architecture: Task -> Retrieval -> Ranking -> Context. So far the project is going well and exactly as planned. I aim to ship it . Wish me luck and please check it out!"}, {"post_id": 52985, "ts": "2026-08-23T11:15:05Z", "hours": 3.5578, "text": "DEVLOG#2 - This time, Context Forge went from a basic skeleton to actually understanding a repository. It can now scan projects, classify files, detect languages/frameworks, extract Python symbols, build relationships, and store everything locally in SQLite. .The biggest takeaway: before making Context Forge “smart,” I need to make sure it has a solid understanding of the project itself."}, {"post_id": 52328, "ts": "2026-08-22T13:12:22Z", "hours": 1.5494, "text": "Devlog#1 : I actually started thinking the architecture for Context Forge and I am officially setting up the project and logging my hours here today. The idea came from a problem I repeatedly faced while coding in a big project that when there are massive amount of files, we tend to break things like which things would be affected potentialy but these changes etc.. Context Forge solves this by building a persistent understanding of software project"}]...
|
Title: Context Forge by @vxyzln | Stardance
Devlo Title: Context Forge by @vxyzln | Stardance
Devlogs:
Devlog#1 : I actually started thinking the architecture for Context Forge and I am officially setting up the project and logging my hours here today. The idea came from a problem I repeatedly faced while coding in a big project that when there are massive amount of files, we tend to break things like which things would be affected potentialy but these changes etc.. Context Forge solves this by building a persistent understanding of software project
DEVLOG#2 - This time, Context Forge went from a basic skeleton to actually understanding a repository. It can now scan projects, classify files, detect languages/frameworks, extract Python symbols, build relationships, and store everything locally in SQLite. .The biggest takeaway: before making Context Forge “smart,” I need to make sure it has a solid understanding of the project itself.
Devlog#3 HELLO EVERYONE!!! I worked on the project search and retrieval foundation. The model is now useful for task-oriented retrieval and ranks search results. Search operates over the persistent project model created .It establishes the basic architecture: Task -> Retrieval -> Ranking -> Context. So far the project is going well and exactly as planned. I aim to ship it . Wish me luck and please check it out!
Devlog#4 - making context forge actually undertstand a project Hello Everyone !! So today just worked upon making some changes like make the project context forge, scan the repository, classify it, detect languages, et cetera. Yes, handbroken files without killing the analysis, etc. And also we built projectquery So, the analyzed project can be actually explored. now the project is coming together. next plan is add a custom LLM model to make it more better. if you have ideas for a good LLM available for free and locally so plz comment. Thank you for looking at it. Bye.
Devlog#5 - workking .HELLO EVERYONE!!!! so i am working on my project and i have done some new things which are : added contextcandidate added conversion from existing searchresult added relevancesignals added deterministic ranking which combines candiadte score+signals and mac score is 1.0 Main : added context depth options which are minimal recommended and Deep. in this part , i am thinking of integrating local LLM like models ollama provides or a API key of a AI provider like claude or openAI or any other provider user wshes for which will help make good perfect context. the things are coming together and i am seeing my project become a great project. So plz leave a like and ur suggetions. (Note: While I am engineering the core context pipeline by hand, I am utilizing AI to generate my unit tests and boilerplate to accelerate development. i have declared it into the AI section of the Project.)
Devlog#6 - working . Working towards the project arcitecture. Quick update: I just did a pass on the project with some minimal changes and additions. I added a graph expander and context expansion, and wired the full pipeline into the default context engine. Please leave your reviews in the comments!
Devlog#7 - Greeting everyone. progressively buildiing the core. so today also worked towards completing this phase which is a major step towards the project. it was a progress from finding relevant context to building deterministic contextpackage. added serialization support for enriched context. established the provider boundary and deterministic provider without coupling the core engine to an external source like a LLM or a AI provider. introduced compression abstraction added budget -aware compression as we 3 lvls talked about in previous devlogs(you can refer to thm). introdued explicit context-priority modeling Added ContextPriorityOrdering and may smal changes also. from previous devlog, the changes are that previously it could build repo understanding, retrieval,rankingetc. but now it can do compression, prioritization, ordering and assembly. So leave your thoufghts i the comment. THANK YOU!! (also the image uploaded isnt the full code written its just a snippet and also not the full code of the file so plz dont make it the truth. Visit the GITHUB REPO to see the changes and the files)
Devlog#8 - My Greetings !! working towards the git understanding of the project. Hey hello everyone reading this. today the context_forge was extended with git intellengence. I implemented git repo detection repo root, branch/HEAD dicoovery parent or merge tracking shallow repo handling- Aggregate git activity summaries etc.etc. then integrated this directly into analyzer and project model. Persistence Layer was etended so git intellegence survies SQLite save or load cycles Also made a bunch of tests for each thing so that project stays perfectly working. finally the query layer gained explainability metadata so search results can comunicate why a result matched while keeping the explanation seperate from number ranking core. Also coming clean about a thing that i used antigravity bcz when i was working and very deep, i broke most of the files and couldnt seem to fix it so first time i used it to fix that. i havent committed it changes but i cme clean about it. ok bye so leave your opinions here in the comment section.
Devlog#9 - working on LLM integration Greeting everyone Working towards the completion of the integration of local LLM. i will implement ollama as the LLM provider in the v1 a very hefty day as had to resolve many problems that had occur. js did 2 commits which had like most tests updtedetc. js this much today.
Devlog #10 — Working. This phase mainly has been about the architecture more complete and connected end-to-end. TL;DR of the whole DEVLOG : Complted provider foundations, task validation/understanding & progressed by introducing ContextRequest and task Aware election. the new pipeline connects task -> validation -> context -> task aware selection->provider. . leave r reviews Long summary for those who are interested: Completed the provider foundation and established generation boundary. this gave cf* a proper path from context generation to serialized context to provider request togenerated response. Added TaskUnderstanding which is the first layer for understanding what the user is actually asking for. added TaskInterpretation, task understanding and validation and validation states such as clear, ambiguous, and sufficient. added tests to ensure invalid tasks stop the pipeline early Introduced ContextRequest as a cleaner boundary b/w the tsk and context systems. instead of pasing ptoject and task seperately, the context engine now recieves a single request containing the relevanr context. Also added some more tests for hardening Now i am focused on connecting pieces more tightly and doing thr final integration work needed . the architecture is now becoming less of collection of individual sytem and more of a single pipeline.
Devlog#11 - Things went the Otherways. Greting everyone! TL;DR - for those who dont want to read long story - Spent most of the day debugging and rethinking the Ollama integration, which exposed problems with building around a thinking model. After testing the full workflow, I decided to move to Qwen2.5-Coder 7B and introduce Stage X to realign the architecture before continuing development. Long Story - for those who are interested 🙋: SO i was working towards local LLM integration for my project as mentioned in the previous devlog. Today was a sunday so had a lot of time on me so worked on this. i decided of making ollama the sole provider for AI for v1 of my project as it is easy to work with. I chose initially qwen3:8b model. i was working with it for the ollama integration and model works perfectly and give answers and checkning for bugs errors and debugging and adding more tests etc. today most of the time went into debgging,investigating, rediscovering how the existing architecture actually worked, challenging earlier assumptions, and then rethinking the architecture around what the system really needs. The first major objective was making sure the complete Python-project path worked together rather than only working as isolated components. The question was whether these pieces actually behaved correctly as one pipeline. So assessed the code and assemebled it and strenghted it and then added tests for it. Now working with ollama’s qwen3:8b model but soon ralzied it was a major mistake. i wanted to make the model to communicate with the project. So it worked kind off. Like the model i was using was a model that thinks and has chain of thoughts. But soon it became a problem for me. our first integration attempt exposed a problem. The model was clearly behaving as a thinking model. that mattered bcz Context Forge was now trying to use it as a part of a deterministic workflow. The model’s internal thinking could consume substantial generation time before producing the actual answer.That made the original integration architecture less suitable for the project. So i asked myself some questions and came to a conclusion that i should build v1 around the non thinking models like the one i will be using now on is qwen2.5-coder:7b . and integrate thinking and AI providers in future versions. THE CURRENT MODEL ARCHITECTURE should work with a non thinking model. So i introduced a phase for now called StageX where i would check the code and try to refactor it acc to the new direction we are heading. what will StageX chenage: Model Asumptions Thinking or reasoning done by the model Adding a Config file feature- CLI Behaviour(improved) Better Ollama integration Operational Logging this all we implemented in span of some days as i’ve got exams coming but will work on it. a large part of time not logged onto hackatime was spent towards rethinking the decisions made in the past and plan out the Future. TH biggest progress from this was architectural clarity. LET”S START STAGEX Thank u for reading this brain DUmp of Mine. Stay Tuned for future updates
Devlog#12 - StageX going Good. Greeting everyone. So i am working on the transition from qwen3:8b thinking model to non thining model. TL;DR - We redesigned the generation layer around Qwen2.5-Coder 7B and removed the old Qwen3 thinking/reasoning assumptions. The provider contract was simplified and the Ollama integration boundary was kept clean and model-agnostic. A layered configuration system was added with project, global, and built-in defaults, plus validation and precedence resolution. The CLI was then integrated with this configuration architecture while keeping the existing repository-intelligence pipeline unchanged. Full story - i inspected the existing architecture and confirmed that the repo intellegence pipeline should remain intact. i moved the active generation direction away from the old qwen3 thinking oriented architecture and established Qwen2.5-coder:7Bas the new default without hardcoding model throughout the database. I cleaned theprovider contractso reasoning thinking is no longer a part of the current core generation model while deliberately leaving future reasoning support for later architectural decisions. I also investigated the Olama integration boundary other than replacing its transportation implementation, keeping the previous Olama provider as the boundary. The largest tradition was that I wanted to add a config support so like someone can have a project project-wise configs for my tool, but it can also have a global config. So, if the project config is not available, the tool would fall back to the global config. So, I was thinking of using it as as like a .contextforge.toml file format. Yes, configuration is a dedicated defaults loading validation, etc. facilities solution, etc. And finally, the CLI was connected to the new configuration architecture. Provider settings are no longer hard-coded as the remaining configuration. This much only for today. Leave ur thoughts in the comments
Devlog#13 - Working on the CLI TL;DR - Integrated generation lifecycle handling with robust success/failure paths and duration tracking.Added rotating operational logging with privacy-safe metadata only—no prompts, responses, or reasoning.Hardened CLI/application tests and logging isolation. Yap - So Majorly worked on the tool so that it could work in the terminal with the command : context-forge [-h][–provider] etc. eg: ~/project/EV > context-forge . the above is the command that wil scan repo the command was ran in and asks for the task. another eg: ~/project/EV > context-forge -h this will give help menu of the cli tool. Also the responses are the Answers are given by the local LLM from ollama which is Qwen2.5-coder:7b which is quantized to Q4_K_M i.e. quantized to 4bit. it takes about 5GB Memory when running. I have to make it s that it runs perfectly as it doesnt answers some times etc. there are many problems to figure out will figure everything out Other things: Hardened provider/application error handling and ensured failures terminate cleanly without leaking task content. integrated generation lifecycle handling into the app flow which inclludes start/stop/completion/failure paths and duration tracking Added operational logging infra with a rotating app log at the global config drectoy Added privacy-focused logging tests ensuring prompts/tasks, generated responses, and model reasoning/thinking are never logged. Consolidated and finalized the logging method and generation lifecycle work; resolved logger path isloation. formatting,linting and test issues. js this much today nothing much more. Leave ur Views and thoguhts on this in the comments.
Devlog#14 : Greeting Everyone TL;DR - Built a complete repository-to-context-to-AI workflow with real Python source context and robust CLI/error handling.The architecture is now stable at this boundary, ready for smarter retrieval, ranking, graph expansion, and project memory. Long Story - So worked some more on the CLI workflow of the tool. SO things did today : Completed the repo to context to provider to response workflow for py projects. Added real source content to select context units added CLI coverage hardend CLI handling for path , config, task, analysis, and generation failures added the keyboardinterreupt i.e. ctrl+c/EOF handling, clean exit codes and safe operational logging. expanded failure-path test coverage So this is the final thing is that the peices were coming together. A locally executable Python workflow from repository analysis through context generation and AI response, with a reliable CLI boundary. So leave ur thoughts in the comments and plz like it.
Devlog#15: Greeting Everyone : TL;DR - Built reliable repository structure and a deterministic relationship graph, including symbols, imports, references, inheritance, ownership, relationship resolution, confidence, traversal, and persistence. Added comprehensive tests and validated against a real repository. Long Yap - So the baisc archtecture is completed and now i am working on its hardening and testing it on some real basic repos. Things done today - strengthened repository structural intelligence with more user-reliable Python parsing, symbol extraction, import references, inheritance references, and structural validation, etc. establihed the repo relation graph with numerous relationships. added deterministic relationship resolution with confience scoring and handling of unresolved references. Integrated relationship construction into the analysis pipeline expanded parser,graph,query & pipeline tests verified it basic working on real repo. close to completring a working version but not too close. leave ur thought in th comments . Have a good day or Night
Devlog#16 : Greeting Everyone - TL;DR - Context Forge can now understand what a task is asking for and deterministically connect that task to actual repository entities.It can also expand those entities through the repository relationship graph, providing a grounded repository neighborhood for subsequent retrieval and reasoning. Long Yap - Today was a small session of writing code and added new thing which is rep-aware task understanding and grounding. Grounding connects what the user mentions in a task to the actual files and symbols in the repository.It turns vague task references into concrete, verified repository entities that Context Forge can reason about added structured task interpretation covering intent, concepts, requested actions , constraints and ambiguity added exact repo relative path matching exact/unique symbol resolution while keeping unresolved references explicit added repo grounding to expand grounded entites through the existing relationship graph extended candidate generation so directly grounded and relationship connected entities can participate in context retrieval js this much today. Also had a single commit today but was a long one bcz i was in flow and forgot to commit and it was mostly tests . So sorry dev community 😭. (image attached is js a look at the code) Leave r thoughts in comments. open to feedback.
Devlog#17 - Greeting everyone! TL;DR - Added deterministic deduplication, strongest-path selection, candidate limits, and cycle protection for relationship-aware retrieval.Expanded retrieval is now bounded, predictable, and keeps its evidence consistent, with 13 tests covering the new behavior. long - So a small codin session and added some new things. added deterministic dedpulication for relationship expanded candidates added strongest path selection using confidence depth and UUID odering preserved original candidate odering. enforced candidate expansion limits and cycle protection kept retrieval evidence aligned with selected candidates. added coverage for all the thing s we did through tests. Well so this much the implmentation was small but the testing of it anc checking it was perfect was hassle full Leave ur thoguths in the comments
Devlog#18 - Greeting Everyone!: TL;DR - Integrated relationship-aware retrieval into context construction with bounded depth, confidence propagation, and retrieval provenance. Long Story - So had a small coding session today bcz i didnt got much time as exam is tommorow. Thing Done today - integrated relationship-aware retrieval into context construction addded bounded relationship expansion with confidence and provenance cnnected context-depth evidence to retrieval- added relationhship/depth to context signals added the tests related to the code changes So this mucn only today. Thnx for reading . Leave ur thoughts in the comments.
Devlog#19 - Greeting Everyone! TL;DR - Originally built the planned reasoning-heavy approach, then identified it as unnecessary complexity and hard-reset all of that work to the clean retrieval baseline. Replaced it with a minimal, structured LLM selection layer where the model only decides include + confidence, while repository intelligence and deterministic metadata remain authoritative. Long Story - So initially i was continuing my plan to have reasoning for every candidate why it was choosed . like was a reasoning heavy context approach includes LLM reasoning. Was working on implementing it throught a flow. during testing, debugging and checking that it works perfectly but things went the other ways. during the checking, i got to a problem that LLM gives out many token in reasoning and which exceeds the limit or the max_tokens limit that i have. it was bad as i couldnt get reasoning perfectly for the per candidate. the i thought of another approach. i will generate the candidates and then i will give all the reasoning fo all of the candidates at the end of it. but this want also working as i wanted it to. i had committed the wrong changes and then i had to hard reset to a stable previous commit whcih didnt had this. then i realized that i was making the system too complicated and it wasnt needed so i remove dthe reasoning nd hard reset to a previous atable commit. I used AI to fix the broken code for the reasoning part that i built but after multiple attempts . So as i said before, 1 option only i reverted to a old git commit . this took most of my time but then did some chages also now context_forgehandes repo intellengence and LLM which decide only what is actually worth keeping. added a strict context-selection contract. Added the selection service to handle the model interaction and validate its response Selection confidence is carried into the final context as metadata, keeping the output inspectable without depending on generated explanations. Added and updated tests around the contract, selection service, package construction, and engine integration Well so this much only today. This day was hassle ful. I’ve used AI 2 times to fix the tings but 1 time i was successful and 1 time i am not. But keeping it aside. i am close to complete the ‘source code’ but not too close. I am thinking of having a brew tap for mac users and another way for windows and linux. The system isnt perfect but it is running. I will make it better nd make it functionable in real world. SO these chages today were light. Most time spent was on Debuging and checkigerrors an fixing them. If hackatime would calculate time spent debugging or xiing, tiday would be 6h+ devlog. Leave ur thouhts in the coments and plz like it.
Devlog#20 - Greetings Everyone ! TL;DR - COntext Forge can now remember the state of repo aand files and identify what changes while context construction remains deterministic, robust and free of generated reasoning. Long - So Hello everyone and welcom to the 20th devlog. today added some more things which are : added deterministic file fingerprinting using its path size modification time etc. and used SHA-256content hashing Persisted file fingerprints in SQLit alongside repocacheing of metadata added detection for unchanged edited modeified added or deleted files Added storage and cache tests covering fingerprint persistence, replacement, and missing data. added analyzer covergae verifying the fingerprints are generated and rpersisted corrrectly. Kept diagnostics based on structured metadata and repository evidence rather than generated reasoning. This much today. Leave ur thoughts in the comments . BYEE and thnx for reading
Devlog#21 - Greeting Everyone! TL;DR - Repository analysis is now persisted, freshness-aware, and capable of selectively invalidating stale data instead of rebuilding everything.Cache invalidation and refresh behavior are deterministic, validated, and comprehensively tested. Long - Today I implemented the cache thing for my project. my ool works by mapping a repo and giving context to the user for user to give to AI agent for a work. SO for storing data i use SQLite but making rep data everytime will take a lot of time. So i introduced caching fo data and will refresh in sometime and can be refreshed manually also. Things did : added cache freshness checks for missing metadata , schema/analyzer version , missing fingerprints and file changes added deterministic file fingerprinting using size, modification timestamp and SHA-256 content hashes added selective invalidation for afected files, symbols, and relationships while preserving unaffected analysis added full cache invalidation for cases where existing analysis can no longer be trusted. Added cache refresh orchestration finally added tests for the same So this much today . Leave ur thoughts in the comments and like it
Devlog#22 - Greeting Everyone ! TL;DR - Built the local repository evaluation foundation.Added structural and graph accuracy measurement for files, symbols, and relationships. Long Story - So added chec for my tool. Also committed a wrong spelling recal instead of recall in a func and and then hchnaged it in the new commit. thiings did - Added local evaluation repositories and tasks. Added structural and graph evaluation Added tests for the same Leave ur thoguths iin the comment and like it
Devlog#23 - Greetings EVeryone ! TL;DR - Retrieval and task-grounding quality can now be measured deterministically against repository ground truth, with full regression coverage Long - Short sesssion today. added the tp*.txt in gitignore for me to make temporary text files Added deterministic retrieval and task-grounding evaluation with precision recall F1 metrics Added stable repo entity ground truth and evaluation ccovergae Added test for the same added init .py in every subfolder of test bcz there were name clashes in pytest. So today this much only . Leave ur thoughts in the comment and wish me luck!!
Devlog#24 - Greeting Everyone ! TL;DR - Added evaluation for both context selection and final context quality, covering correctness, budget limits, and deterministic behavior. Added focused tests to validate the complete evaluation flow. Long - So exams are going on so can’t do long hour session. Was planning to add manythings over few days but it would stretch for about more days. Things did - Added context-selection evaluation against expected entities using precision recall f1 added end to end evaluation for final context accuracy budget compliance etc. adde d validation for unkown , mising extra and empty entities or context cases. addded tests for the same Js this much today. Leave ur thoughts in the comments .
Devlog#25 - Greeting Everyone ! No TL;DR as small work today. things accomplished today - Added evaluation aggregation and baseline regression tracking Added validation for duplicate cases and regression tolerance, with tests for the same. Committed implementation and tests as focused changes. Leave ur thoughts in the comments.
Devlog#26 - Greeting Everyone ! No TL;DR as short work work today - Added deterministic evaluation baseline storage and serialization. Added validation, aggregation, coverage, and persistence support. Added comprehensive tests and maintained a clean, validated implementation. So, this much today only leave your thoughts in the comments/
Devlog#27 - Greetings Everyone ! TL;DR - Context Forge can now remember the repo state update it s understanding when things change and provides a proper cli for those who use it. It has ig aroung 6 funcs which u can read below. The work also made the internal state much easier to inspect and debug while keeping the existing thing intact. Long - SO this Devlog is after a long time ig. I was giving 5-10 mins t the project to not lose my habit and the streak also. But today my exams got over so now i can focus on the project. STARDANCE is ending soon so i need to hurry up and complete this asap. So basically did a lot of main writing for cli functionality. cf* - context forge (too lazy to write it out everytime) things did in those past days - made repo analysis persistent instead of starting from scratch everytime the cf* is ran. added file fingerprintng and change detection for smart analysis for a smart project. imporoved how changed files affect relationships and project info. added a proper dev workflow through the CLI as it is a main part and added commands like analysis and generation commands added task input , config handling, clenaer error behaviour for the better contxt of it added command to inspect repo state cache state project info and diagnostics or i should say Pre-Rendered Excuses Generation fixed issues around cache freshness and changed fiel reporting added tests for the new functionality and made sure the existing workflow stayed intact for cf* refactored the fingerprinting logic so it culd be shared cleany by the analyzer and the Cli i made for cf* So this much for the past these days. Now the thing is slowly coming like a real version. Its complexity is very high ,atleast for me . Bcz i made many py projects and this is the most challenging one so far but it shift me into the flow state after sometime so yeah it is a good challenge. It was like based on my problem i faced when i was vibecoding in the early days js to do timepass . But now when u can make it , it feels incredibale. SO yeah it is good. Yes but Currently i see models like astra and fable come out with much more context lenght and etc. so my product is not needed for them for but is a good fun project on thr side. These new models are good but havent tried them but will try them fter i get some freetime after Stardance. as stardance is my first and last ysws soi it was a great experience. Also i did many of the things in neovim like editing some files and etc but i couldnt settedup hackatime with it so like around 1-1.5 h of extra work was untracked on hackatime but it was ok. I was seeing the primeagen video of neovim and wanted to try it out so i did and learned some basics and therre is a very stepp learning curve in it . ALso tried out lazyvim but not my style . So wil pause the vim learing for a few days and finish the prject cf asap. Sorry for this Yapp Session but dumped everything i had for these past few days. SO plz leave ur review in the comment and plz like it and rate it good.
Devlog#28 - Greetings Everyone ! TL;DR - Added proper ollama checking and validation plus a runtime cli. Generation now safely uses fresh persisted repo intelligence instead of re-analyzing the project everytime Long - Problems : so when doing today’s work the problems that i wanted to fix was that the generation workflow was still too dependent on live repo analysis instead of using the persisted intelligence. 2nd there was no way to verify ollama itself is available or not. like ollama runtime and is a model available or not. runtime failures needed to stop generation cleanly and not throw a bunch of error a user neds to debug. we needed to preserve provider behaviour and avoid breaking the previous architecture i built the generation one. also the generation path needed clear boundaries between runtime validation, provider execution and final output and etc etc. It sound much but the implementation was simple as ig for me. things done today to solve the problems - added ollama runtime inspection to check local runtime and requested model are available added dedicated runtime cli commd for checking the state of the runtime and model independently changed the generation to load persistd repo intellegence insteasd of it everytime doing a fresh analysis as it would be bad for it to make new things for everytime a cli is ran added cache freshness validation so generation refues stale repo intellegence added regression covergae proving that a generation uses the persistent project and doesnt starts the analyzer again made a foundation kinda thing for a clean generationresponse to cli output boundary with remainng output workflow continuing afterwards added test for the features added Also some of the current changes may not be sen on the github repo bcz i havent comitted some changes as they are a part of a feature and i commit like a feature and the tests related to it for better commits ig . Now what we did to solve the problems and how i felt when solving them - . the generation pipeline is now ready to build the dev facing output worflow or like a user workflow on top of these things the previous architecture i made. i found addng the flags to main.py file easy but then adding the cache checking and the regression covergae and the generationresponse to cli output boundary a bit challenging . So today only this much. Hope u like my project and plz comment for feedback. also a mention to @CT5 on slack for telling me to added problem and solution section in my devlog for better project experii\ence.
Devlog#29 - Greeting Everyone ! STARDANCE IS GETTING EXTENDED YAYYY!!!!! No TL;DR today for short work Things did today in short time added clean generation outuput handling added cli error handling and seperated output from errors connected generation to the persisted project added test for the same also spent some time on editing some test generated bcz they werent like tha lvl Sp today short work due to other school work coming in. Leave ur thoguhts in the comments and pl like it if u think it is good and should get real appreciation.
Devlog#30 - Greeting Everyone ! - THE GREAT PIVOT Work - Context forge is now moving away from being a generation based tool and becoming a deterministic agent memory foundation. now the rtransition is done cleanly and now i am working ahead on the current foundation but new features. work done - completed the changed direction of context forge from the old provider and generation system to a repo intellegence system removed the ollama integration, provider stack. runtime configuration and the dependencies that came with them. the core should now work without depending on LLM or external APIs refactoredthe application services, task understanding, context slelction, ranking and CLI to fit the new direction. kept the important foundation like SQLite storage , AST based analysis, repo fingerprints, inremental file change detection and evidence based context rtrieval added architecture tests for offline operation , deterministic ranking, file change detection and making sure the context output has proper evidence cleaned up all the old tests which were not needed and deleted the whole files which weren’t needed in the future . Today was mostly about get ting the big transition properly finished. So for the past days, I had some exams and was not happy with the behavior of Olama, of its undeterministic behavior. So I took this step. I did not change the base foundation. I just changed the overlying architecture, the Olama ones, and removed everything that was made that was not needed. So the commit of today is very large, like 7,000 lines removed, and 1000 lines written. I made one big commit for the entire transition instead of splitting this architectural layer into multiple commits. Transform context force into a deterministic agent memory foundation. I also cleaned up the extra local branches and checked that main was synced with GitHub. Now I’m moving towards a memory vault kind of thing. I have to build on what already exists instead of rewriting everything again, improve the memory idea of foundations, add the shorter commands. Yes, so yeah, this was a pretty big change for our project. There was still a lot to do, but at least reaction is much cleaner now. Hope you like the project and please leave your thoughts or feedback in the comments. To be completely transparent, I used AI assistance to help me safely untangle and delete parts of the old architecture that were tightly coupled. As a student developer handling a complex refactor alone, trying to manually map out every single breaking change across thousands of lines got overwhelming, and I needed the help to get it done cleanly. No regrets it got the job back on track, and the codebase is in a much healthier place. With the cleanup done and main fully synced, I’m now shifting focus toward building out the new deterministic memory vault and refining the short-form CLI commands for AI agents. Show writer shipwrights. Please don’t wreck my project. Hope you like the new direction! Let me know your thoughts or feedback in the comments below.
Devlog#31 - Greeting Everyone ! TL;DR - I spent time strengthening Context Forge’s core memory and retrieval systems, making repository knowledge more reliable and useful. I also improved how the project handles changes, retrieves relevant information, and exposes its capabilities through the CLI. Work - I wanted to move beyond simple analyzing repo and make cf better at remembering, understanding and retrieving repo knowledge. Here what i did : Strengthened how repository information is stored so files, symbols, and relationships remain available even after restarting the application. Improved how Context Forge handles added, modified, and deleted files, keeping stored knowledge aligned with the actual repository and preventing outdated information from lingering. Strengthened the way relevant files, symbols, and relationships are found and ranked, making results more predictable and consistent. Improved the ability to trace retrieved information back to repository evidence and understand why particular results were selected. Added the cf command as a shorter alternative to context-forge , while preserving the existing command and its behavior. Expanded the CLI with commands for inspecting repository status, memory, files, symbols, references, and relationships, making it easier to explore what Context Forge knows. Improved operational error handling, logging, and diagnostics, making failures easier to understand and helping keep the overall experience more predictable. So yeah did so many things It’s been a while since the Great Pivot / I took some time work through these as i also had to check whether there is some code of the things iripped off in the great pivot. the time went here on working through these features properly, strength the exisiting foundationand make cf more relaible and now moving onto the next things. So leave ur thoughts in the comments and plz leave a like
Devlog#32 - Greeting Everyone ! TL;DR - I spent quite some time making Context Forge more reliable under the hood. The focus was on improving repository analysis, CLI usability, and ensuring that the memory system stays consistent with the actual codebase. Work - I wanted to make cf more than js a tool that scans repo once and stores some info. i wanted to make it useful in real dev workflow or like for someone like me who is making many projects and can sometimes lose trace of what will happned to the codebase. HEre’s what i worked on for these 8h spread across some days. Improved repository analysis and persistence so that the stored knowledge remains consistent and can be reused across different runs. Strengthened incremental analysis to handle added, modified, and deleted files more reliably, reducing the chances of outdated information sticking around. Worked on retrieval and relationship handling to make results more predictable and easier to trace back to the actual source code. Improved the CLI experience, making it easier to inspect repository information and understand what Context Forge currently knows. Refined error handling and diagnostics so that failures are easier to investigate instead of leaving me guessing about what went wrong. Expanded the test coverage across the core systems to catch regressions and make sure that improvements in one area don’t quietly break another. One of the trickkier parts was that the stored repo info actually reflected the current codebase. it’s easy to get things on fresh analysis but things get more complicated when files change , disapper or contain info that cannot bre resolved cleanly. I had to spend time thinking abt edge cases to. a lot work was for strengthing the base the foundation , some improvements i made aren’t visibe ut matter when u want cf to behave properly across multiple projects. Yeah so there is more to build and it was a solid step for cf i would say so. Also SD getting ending in 10 days and i have a lot in mind and i need to ship quick so there would be a lots of commits and hrs or the upcoming 2-3 days as i will grind as much as the time i would get . So leave ur thoughts in the comments if u have any and plz like the project (image context : i ran the cf . command on the cf repo itself and this was its answer)
Devlog#33 - Greeting Everyone ! Tl;DR - i spent quite a few hours working on makinf cf understand the repo better , finding th right info and letting the user to inspect a codebase before making changes. like searching for func what it depend on etc. Work : One thing i’ve been thinking abt is that when working on ap project that we can we see what things happend in the repo and where things are and what would i need to look for when changin something etc. . A So lot of work went into connecting some pieces and making sure cf gives reliable info and instead of the sqlite database dat Things done : cf can now check the rpeo and its analysis readiness. this helps bcz it can identify configuration problems instead of discovering them after halfway through. Improved the way cf finds specific symbols in a codebase of a project. the idea was to make it easier to locate and see where a func or a class or other element lies. without having to search everything manually. worked on retrieving relevant source excerpts and checking whether the info is still reliable in the current state of the repo/codebase as there is no use of having old data . added the git navigation capabilities so cf can work with arep changes and git’s context withut modifying the repo code. A MAJOR THING - cf can now bring imp repo info , evidence, other relevant things to help user see the codebase state before making a mistake or making changes to the code. Alongside these made some minor improvements lke more consistent error handling and auditing things etc. and also checking these minor things didnt broke any other things. these kinda things look boing but are nessecary/needed. i dont want cf to be one of the project where u give features without making the existng ones better. i want it to be better and useful for users when working on a large codebase etcetc. Honestly , i’ve had shipped this way earlier if i wasnt slacking off and exams didnt came i my way but we are now in the Last 10 days of Sd. i have a quite things in mind which i need to complete this before shippins so focus on that or some days and the i will ship it. ALso the time on this devlog is small bcz i had accidentally deleted the hackatime config(or file whatevery u want to say) and i didn’t noticed it for quite a few time and then today i relaized when i open my hackatime dashboard. So this is the last time that was logged. I will setup before writing a next devlog . So open to ur thoughts on the cf project and comment ur thoughts. ALso plz leave a like if u like m project !!!!!!!!!!!!...
|
1792723718.2292595
|
1793328518.2292595
|
|
69636
|
BetterLectio Extension by @jonbng | Stardance
|
jonbng
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T13:05:59Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hey everybody! Just shipped a new version of BetterLectio Its a browser extension that improves the ui and ux of Lectio, the school platform many schools in Denmark use. It completely redesigns most features such as messages, schedule, homework and assignments PLEASE PLEASE read the stuff on the link when you click try project :) Unfortunatly you cant actually try the real browser extension unless youre a danish student as it requires a Lectio account from an official school but ive added some comparison images to the website so you can see the difference it makes. Its quite a big upgrade. This project has probably taken me HUNDREDS of hours, i just havent really counted them correctly with hackatime but oh well Right now the project has around 2,000 monthly active users which is a really great milestone i’m quite proud of", "repo": "https://github.com/jonbng/betterlectio", "demo": "https://betterlectio.dk/stardance"}]...
|
[{"post_id": 81764, "ts": "202 [{"post_id": 81764, "ts": "2026-10-22T12:55:37Z", "hours": 0.8367, "text": "Fixed a critical issue causing hundreds of people to not be able to read their message on Lectio The fix rolled out well tho and luckily most Danish people have autum holiday at the moment so it wasnt that bad"}, {"post_id": 79506, "ts": "2026-10-14T10:53:54Z", "hours": 9.87, "text": "I have further developed the BetterLectio extension, adding several new features such as homework status sync, different user themes, referral logic, a lot of customizability of the extension, a feedback system where users can message us and just ongoing maintainance as Lectio changes the format of the page content."}]...
|
Title: BetterLectio Extension by @jonbng | Stardan Title: BetterLectio Extension by @jonbng | Stardance
Devlogs:
I have further developed the BetterLectio extension, adding several new features such as homework status sync, different user themes, referral logic, a lot of customizability of the extension, a feedback system where users can message us and just ongoing maintainance as Lectio changes the format of the page content.
Fixed a critical issue causing hundreds of people to not be able to read their message on Lectio The fix rolled out well tho and luckily most Danish people have autum holiday at the moment so it wasnt that bad
Ships:
Hey everybody! Just shipped a new version of BetterLectio Its a browser extension that improves the ui and ux of Lectio, the school platform many schools in Denmark use. It completely redesigns most features such as messages, schedule, homework and assignments PLEASE PLEASE read the stuff on the link when you click try project :) Unfortunatly you cant actually try the real browser extension unless youre a danish student as it requires a Lectio account from an official school but ive added some comparison images to the website so you can see the difference it makes. Its quite a big upgrade. This project has probably taken me HUNDREDS of hours, i just havent really counted them correctly with hackatime but oh well Right now the project has around 2,000 monthly active users which is a really great milestone i’m quite proud of...
|
1793155940.985957
|
1793242340.985957
|
|
57942
|
My website by @nesix | Stardance
|
nesix
|
0
|
1.49
|
0
|
[]
|
[{"post_id": 81763, "ts": "202 [{"post_id": 81763, "ts": "2026-10-22T12:47:41Z", "hours": 0.4589, "text": "did some formating… looks like something from the early days of the internet… but thats fine… ill try to add some javascript, but idk how well that will go as ive never done any and it looks complicated"}, {"post_id": 81556, "ts": "2026-10-21T17:54:54Z", "hours": 1.0283, "text": "Made the base of the website, all the text that will be used is set up, now i have to format it properly and also add some pictures"}]...
|
Title: My website by @nesix | Stardance
Devlogs:
Title: My website by @nesix | Stardance
Devlogs:
Made the base of the website, all the text that will be used is set up, now i have to format it properly and also add some pictures
did some formating… looks like something from the early days of the internet… but thats fine… ill try to add some javascript, but idk how well that will go as ive never done any and it looks complicated...
|
1792730925.4651828
|
1793335725.4651828
|
|
70375
|
Technoblade Never Dies by @PahalDesai | Stardance
|
PahalDesai
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T12:57:46Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Technoblade Never Dies Hi everyone, This is a small tribute to technoblade, an american minecraft youtuber who passed away battling cancer. I used basic html and css to make this site. Features a paragraph on technoblade famous quotes and memorable momments those quotes and momments are clickable and viewable Thank you for taking a look at my project", "repo": "https://github.com/pahal-desai/technoblade", "demo": "https://pahal-desai.github.io/technoblade/"}]...
|
[{"post_id": 81762, "ts": "202 [{"post_id": 81762, "ts": "2026-10-22T12:39:48Z", "hours": 0.3142, "text": "Added a readme file."}, {"post_id": 81761, "ts": "2026-10-22T12:20:28Z", "hours": 0.7708, "text": "Finished the website by adding some images an fixing the layout of the pages where the quotes and funny moments are played!"}, {"post_id": 81609, "ts": "2026-10-21T19:05:56Z", "hours": 1.2747, "text": "Devlog 2 Added a few quotes said by him and made them playable!"}, {"post_id": 80979, "ts": "2026-10-19T14:18:06Z", "hours": 1.6333, "text": "Devlog 1 Hi. This is a small website to give tribute to Technoblade. Right now, I made some basic stuff like a paragraph about him, a heading masked with the Minecraft pig texture and a crown on top of it. I also did a little bit of styling of the paragraph."}]...
|
Title: Technoblade Never Dies by @PahalDesai | Sta Title: Technoblade Never Dies by @PahalDesai | Stardance
Devlogs:
Devlog 1 Hi. This is a small website to give tribute to Technoblade. Right now, I made some basic stuff like a paragraph about him, a heading masked with the Minecraft pig texture and a crown on top of it. I also did a little bit of styling of the paragraph.
Devlog 2 Added a few quotes said by him and made them playable!
Finished the website by adding some images an fixing the layout of the pages where the quotes and funny moments are played!
Added a readme file.
Ships:
Technoblade Never Dies Hi everyone, This is a small tribute to technoblade, an american minecraft youtuber who passed away battling cancer. I used basic html and css to make this site. Features a paragraph on technoblade famous quotes and memorable momments those quotes and momments are clickable and viewable Thank you for taking a look at my project...
|
1793156031.6942964
|
1793242431.6942964
|
|
17993
|
RPi 5 Robot Arm by @nirvaan | Stardance
|
nirvaan
|
0
|
1.49
|
0
|
[]
|
[{"post_id": 8176, "ts": "2026 [{"post_id": 8176, "ts": "2026-06-13T16:56:29Z", "hours": 0.4375, "text": "What have I done so far: Added the Gemini AI provider Made a go to object function so the pan/tilt kit can move to the right angle of the object"}, {"post_id": 8133, "ts": "2026-06-13T16:03:56Z", "hours": 1.0511, "text": "What did I do: wired up the project wrote the basic code to test servos and the camera"}]...
|
Title: RPi 5 Robot Arm by @nirvaan | Stardance
De Title: RPi 5 Robot Arm by @nirvaan | Stardance
Devlogs:
What did I do: wired up the project wrote the basic code to test servos and the camera
What have I done so far: Added the Gemini AI provider Made a go to object function so the pan/tilt kit can move to the right angle of the object...
|
1792712838.887793
|
1793317638.887793
|
|
69491
|
Pearl Sandbox by @CraftingHERO | Stardance
|
CraftingHERO
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T12:09:22Z", "hours": 23.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Pearl Sandbox is an interactive web-based physics simulation in which you can drop shiny pearls into a three-dimensional glass box and observe their realistic behavior. Using intuitive sliders and controls, you can adjust and experiment with parameters—such as the size of the box, the number of pearls, colors, and physical interactions—in real time. The project serves as an illustrative experiment demonstrating how modern 3D graphics and physics systems can be implemented directly within a web browser, without the need for any additional installations.", "repo": "https://github.com/CraftingHERO28/pearl-sandbox", "demo": "https://craftinghero28.github.io/pearl-sandbox/"}]...
|
[{"post_id": 81758, "ts": "202 [{"post_id": 81758, "ts": "2026-10-22T12:02:29Z", "hours": 5.0453, "text": "Transitioning from Version 4 to Version 5, the Pearl Sandbox has received a massive upgrade focusing on total user customization and much more fluid camera controls. The most exciting new addition is the expanded control menu, which now comes packed with dynamic sliders that let you tweak the entire simulation on the fly. You can now adjust the size of the glass box to give your pearls more or less room, change the maximum pearl limit to handle denser particle stacks, and fine-tune exactly how many pearls spawn with a single click. Alongside these powerful new settings, a fresh color option has been added to the palette to give your pearls an extra splash of style. Finally, camera navigation got a major quality-of-life overhaul: the top-right orientation gizmo cube is now fully interactive, allowing you to directly grab and rotate the mini cube to seamlessly sync and spin the main 3D camera view around your sandbox."}, {"post_id": 80977, "ts": "2026-10-19T14:01:31Z", "hours": 6.3625, "text": "In Version 4 of the Pearl Sandbox, the simulation feels much more responsive and satisfying to play with. The biggest visual change is that pearls no longer just drop from the ceiling in random spots. Instead, wherever you click on the glass box—whether it’s the top, the side walls, or near the bottom—the pearls now spawn right at your cursor position and burst inward into the box. The main hurdle in this update was getting the box boundaries and click detection right. In earlier tests, fast-moving pearls would glitch out and fall right through the glass walls, or spawn halfway outside the box. To fix this, all six sides of the glass box are now completely solid, keeping every single pearl trapped inside even when dozens are bouncing around at once. Another challenge was making sure the pearls shoot inward away from the wall you click on rather than just dropping straight down. Once that was dialed in, adding a small collapsible menu overlay and the 3D orientation gizmo in the corner really helped tie everything together, making camera navigation feel smooth while keeping the focus on the bouncing pearls."}, {"post_id": 80121, "ts": "2026-10-16T09:09:20Z", "hours": 3.8361, "text": "In version 3 of the Pearl Sandbox, the interactivity of the 3D environment is significantly expanded. While the pearls in the previous version were statically predefined, this iteration introduces a click function: each mouse click spawns a cluster of new pink pearls in the upper section of the transparent 3D cube. These spheres fall from the ceiling; however, since the walls are not yet solid, the pearls pass right through them. The ability to freely rotate the camera using the mouse is also retained, allowing users to observe the action from any angle. The next stage of development will refine the spawning mechanism—moving away from a fixed origin at the ceiling to a system that uses raycasting to spawn pearls exactly where the user clicks on the box—with further updates to follow, including UI menus, color customization options, and a 3D orientation cube."}, {"post_id": 79606, "ts": "2026-10-14T18:02:47Z", "hours": 4.6403, "text": "I’ve changed the setup: instead of the previous 2D, there is now a 3D space where you can view the scene and aditionally you can actually rotate the view. However, you can’t spawn spheres yourself; instead, there are some pre-existing ones. They are currently falling through the walls because I haven’t managed to create solid, transparent walls yet."}, {"post_id": 79325, "ts": "2026-10-13T15:03:28Z", "hours": 3.1267, "text": "The initial release of the Pearl Sandbox project is a lightweight 2D prototype built entirely with HTML, CSS, and plain JavaScript. Designed to test core interaction and physics before moving into a full 3D space, this version uses an HTML canvas element to render colorful pearls within a bounded square box. Simple physics calculations handle continuous gravity, wall bounce dynamics, and basic velocity damping to make the movement feel natural. Players can interact directly with the simulation by clicking anywhere on the screen to instantly spawn clusters of pearls that fall, bounce off the walls, and settle at the bottom. As the project continues to evolve, these foundational mechanics will be expanded into a complete 3D environment."}]...
|
Title: Pearl Sandbox by @CraftingHERO | Stardance
Title: Pearl Sandbox by @CraftingHERO | Stardance
Devlogs:
The initial release of the Pearl Sandbox project is a lightweight 2D prototype built entirely with HTML, CSS, and plain JavaScript. Designed to test core interaction and physics before moving into a full 3D space, this version uses an HTML canvas element to render colorful pearls within a bounded square box. Simple physics calculations handle continuous gravity, wall bounce dynamics, and basic velocity damping to make the movement feel natural. Players can interact directly with the simulation by clicking anywhere on the screen to instantly spawn clusters of pearls that fall, bounce off the walls, and settle at the bottom. As the project continues to evolve, these foundational mechanics will be expanded into a complete 3D environment.
I’ve changed the setup: instead of the previous 2D, there is now a 3D space where you can view the scene and aditionally you can actually rotate the view. However, you can’t spawn spheres yourself; instead, there are some pre-existing ones. They are currently falling through the walls because I haven’t managed to create solid, transparent walls yet.
In version 3 of the Pearl Sandbox, the interactivity of the 3D environment is significantly expanded. While the pearls in the previous version were statically predefined, this iteration introduces a click function: each mouse click spawns a cluster of new pink pearls in the upper section of the transparent 3D cube. These spheres fall from the ceiling; however, since the walls are not yet solid, the pearls pass right through them. The ability to freely rotate the camera using the mouse is also retained, allowing users to observe the action from any angle. The next stage of development will refine the spawning mechanism—moving away from a fixed origin at the ceiling to a system that uses raycasting to spawn pearls exactly where the user clicks on the box—with further updates to follow, including UI menus, color customization options, and a 3D orientation cube.
In Version 4 of the Pearl Sandbox, the simulation feels much more responsive and satisfying to play with. The biggest visual change is that pearls no longer just drop from the ceiling in random spots. Instead, wherever you click on the glass box—whether it’s the top, the side walls, or near the bottom—the pearls now spawn right at your cursor position and burst inward into the box. The main hurdle in this update was getting the box boundaries and click detection right. In earlier tests, fast-moving pearls would glitch out and fall right through the glass walls, or spawn halfway outside the box. To fix this, all six sides of the glass box are now completely solid, keeping every single pearl trapped inside even when dozens are bouncing around at once. Another challenge was making sure the pearls shoot inward away from the wall you click on rather than just dropping straight down. Once that was dialed in, adding a small collapsible menu overlay and the 3D orientation gizmo in the corner really helped tie everything together, making camera navigation feel smooth while keeping the focus on the bouncing pearls.
Transitioning from Version 4 to Version 5, the Pearl Sandbox has received a massive upgrade focusing on total user customization and much more fluid camera controls. The most exciting new addition is the expanded control menu, which now comes packed with dynamic sliders that let you tweak the entire simulation on the fly. You can now adjust the size of the glass box to give your pearls more or less room, change the maximum pearl limit to handle denser particle stacks, and fine-tune exactly how many pearls spawn with a single click. Alongside these powerful new settings, a fresh color option has been added to the palette to give your pearls an extra splash of style. Finally, camera navigation got a major quality-of-life overhaul: the top-right orientation gizmo cube is now fully interactive, allowing you to directly grab and rotate the mini cube to seamlessly sync and spin the main 3D camera view around your sandbox.
Ships:
Pearl Sandbox is an interactive web-based physics simulation in which you can drop shiny pearls into a three-dimensional glass box and observe their realistic behavior. Using intuitive sliders and controls, you can adjust and experiment with parameters—such as the size of the box, the number of pearls, colors, and physical interactions—in real time. The project serves as an illustrative experiment demonstrating how modern 3D graphics and physics systems can be implemented directly within a web browser, without the need for any additional installations....
|
1793155736.9335
|
1793242136.9335
|
|
58832
|
Hustlenix Music by @Lalith | Stardance
|
Lalith
|
1
|
116.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T11:44:50Z", "hours": 116.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hustlenix Music v0.1 is ready to ship 🎧 10 months, a lot of code, and one questionable response to a music teacher later… This started because my school music teacher kept scolding me about my coarse singing voice. Most people would probably practice singing. I decided I was going to write music through code instead. My ego and my coding abilities apparently had other plans. 😭 That’s how I got into Strudel, a live-coding environment for making music. But somewhere along the way, I got a bigger idea. Instead of just writing compositions, why not build an entire music player around them? Something with a library, search, playback controls, and an editor, all wrapped in an interface that feels like an actual music app. That idea became Hustlenix Music . From a music experiment to an actual app The concept sounded simple enough: Strudel for the music, HTML, CSS, and JavaScript for the app. The implementation was another story. I wasn’t just trying to make a page that played audio. I wanted the experience around the music to feel complete, while keeping the ability to experiment with the compositions themselves. I also wanted the interface to feel familiar without making a straight copy of Spotify. I’ve been working on this for around 10 months. Not all that work made it into the devlogs, either. Some development time simply wasn’t recorded, so the logged hours aren’t a complete account of the project’s history. I also used Codex for a substantial part of the implementation, as disclosed in the project’s AI declaration. The goal was to build and finish the product, not pretend every line came directly from my keyboard. What’s in v0.1? The first beta includes: Six original instrumentals that users can listen to. Playback controls for play, pause, resume, and stop. Search to find music. A local library for the available tracks. A composition editor where changes can be previewed live. I’ve kept this release focused on original instrumentals. My experiments studying famous songs aren’t included in the beta. There’s plenty more I could add, but I don’t want the project stuck in development forever because I keep finding one more thing to tweak. Why ship it now? At some point, another feature isn’t as valuable as getting the current version in front of people. This beta is my first proper attempt at bringing the whole idea together: music made with Strudel, a music-player interface, and tools to experiment with compositions in one place. It’s not the final version of what I imagine Hustlenix Music could become. It’s the first version that brings the core idea into a usable product. And honestly, that’s a milestone worth reaching. What’s next? For now, I want to get this version out there, see how the experience holds up, and work out what genuinely needs improving. There will probably be bugs, rough edges, and ideas I’ll want to revisit. That’s part of shipping something instead of leaving it as an unfinished project. What began as a slightly ridiculous reaction to being criticised for my singing has turned into a project I’ve spent months building. I still can’t promise my singing has improved. But at least I built a music player. 💀 Hustlenix Music v0.1: let’s ship it. 🎵 Live demo: [https://hustlenix.github.io/strudelify/] 💻 Source code: [https://github.com/Hustlenix/strudelify]", "repo": "https://github.com/Hustlenix/strudelify", "demo": "https://hustlenix.github.io/strudelify/"}]...
|
[{"post_id": 81756, "ts": "202 [{"post_id": 81756, "ts": "2026-10-22T11:42:04Z", "hours": 0.685, "text": "Hustlenix Music v0.1: Ready to Ship 🎧 I think Hustlenix Music is finally ready for its first release! This project has been in the works for around 10 months, and it’s taken a lot longer than I originally expected. Not all the development time made it into the devlogs, but I’m happy with where it’s ended up. The v0.1 beta includes: 6 original instrumental compositions Play, pause, resume, and stop controls Music search A local library An editor where you can make changes to compositions and preview them live The main idea was to combine Strudel’s live-coded music with the experience of using a proper music player. I wanted something familiar to use, but with the ability to experiment with the music itself. For this beta, I’ve kept the focus on original instrumentals. My famous-song experiments aren’t included. A lot of the implementation was done with Codex, as explained in the project’s AI declaration. I’m shipping this version because I’d rather get the core experience out there than keep endlessly tweaking it without real feedback. This is v0.1, so there’s definitely more to improve. But for now, Hustlenix Music is ready to meet its first listeners."}, {"post_id": 81229, "ts": "2026-10-20T11:34:47Z", "hours": 4.8008, "text": "Devlog 3: Getting Ready to Ship v0.1 I think Hustlenix Music is finally ready to ship! 🎧 The v0.1 beta currently includes: Six original instrumental compositions Play, pause, resume, and stop controls Search for finding music A local music library An editor for previewing changes to compositions The goal for this first release is to get the core experience into people’s hands rather than keep adding features forever. One important detail: the beta focuses on original instrumentals. My studies of famous songs aren’t included in this release. There’s still room to improve the interface and the overall experience, but this feels like a good point to release the first version and see how it holds up outside development. Hustlenix Music started as an attempt to make music through code. Now it’s becoming a music player built around that idea."}, {"post_id": 80203, "ts": "2026-10-16T18:26:36Z", "hours": 0.8875, "text": "Devlog 2: Ten Months in the Making I’ve been working on Hustlenix Music for around 10 months, but not all of that work made it into the devlogs. Some of the time simply wasn’t recorded, so the logged hours don’t represent the entire development journey. I’m now getting close to shipping the first beta, and I’ve been working on the visual design. I want the interface to feel familiar to anyone who’s used a modern music streaming app, without directly copying Spotify’s design. The main challenge is balancing that familiar experience with what makes Hustlenix Music different: its Strudel-based compositions and built-in editor. I’m trying to make it feel like a music player first, rather than a coding tool with a music-player interface attached."}, {"post_id": 80195, "ts": "2026-10-16T17:30:46Z", "hours": 109.6989, "text": "Devlog 1: How It Started This project started because my school music teacher kept scolding me about my coarse singing voice. Naturally, my response was to try writing music through code. Because apparently, that was the reasonable option. 😭 I started experimenting with Strudel, a live-coding environment for making music. But then I had another idea: what if I built an entire music player around it using HTML, CSS, and JavaScript? That became Hustlenix Music. The interesting part isn’t just generating music with code. It’s building the experience around it: a library, search, playback controls, and an editor that lets you experiment with compositions. The goal is to make something that feels like a proper music app while keeping the music itself editable through Strudel. This is a much bigger project than I initially expected, but that’s how it started."}]...
|
Title: Hustlenix Music by @Lalith | Stardance
Dev Title: Hustlenix Music by @Lalith | Stardance
Devlogs:
Devlog 1: How It Started This project started because my school music teacher kept scolding me about my coarse singing voice. Naturally, my response was to try writing music through code. Because apparently, that was the reasonable option. 😭 I started experimenting with Strudel, a live-coding environment for making music. But then I had another idea: what if I built an entire music player around it using HTML, CSS, and JavaScript? That became Hustlenix Music. The interesting part isn’t just generating music with code. It’s building the experience around it: a library, search, playback controls, and an editor that lets you experiment with compositions. The goal is to make something that feels like a proper music app while keeping the music itself editable through Strudel. This is a much bigger project than I initially expected, but that’s how it started.
Devlog 2: Ten Months in the Making I’ve been working on Hustlenix Music for around 10 months, but not all of that work made it into the devlogs. Some of the time simply wasn’t recorded, so the logged hours don’t represent the entire development journey. I’m now getting close to shipping the first beta, and I’ve been working on the visual design. I want the interface to feel familiar to anyone who’s used a modern music streaming app, without directly copying Spotify’s design. The main challenge is balancing that familiar experience with what makes Hustlenix Music different: its Strudel-based compositions and built-in editor. I’m trying to make it feel like a music player first, rather than a coding tool with a music-player interface attached.
Devlog 3: Getting Ready to Ship v0.1 I think Hustlenix Music is finally ready to ship! 🎧 The v0.1 beta currently includes: Six original instrumental compositions Play, pause, resume, and stop controls Search for finding music A local music library An editor for previewing changes to compositions The goal for this first release is to get the core experience into people’s hands rather than keep adding features forever. One important detail: the beta focuses on original instrumentals. My studies of famous songs aren’t included in this release. There’s still room to improve the interface and the overall experience, but this feels like a good point to release the first version and see how it holds up outside development. Hustlenix Music started as an attempt to make music through code. Now it’s becoming a music player built around that idea.
Hustlenix Music v0.1: Ready to Ship 🎧 I think Hustlenix Music is finally ready for its first release! This project has been in the works for around 10 months, and it’s taken a lot longer than I originally expected. Not all the development time made it into the devlogs, but I’m happy with where it’s ended up. The v0.1 beta includes: 6 original instrumental compositions Play, pause, resume, and stop controls Music search A local library An editor where you can make changes to compositions and preview them live The main idea was to combine Strudel’s live-coded music with the experience of using a proper music player. I wanted something familiar to use, but with the ability to experiment with the music itself. For this beta, I’ve kept the focus on original instrumentals. My famous-song experiments aren’t included. A lot of the implementation was done with Codex, as explained in the project’s AI declaration. I’m shipping this version because I’d rather get the core experience out there than keep endlessly tweaking it without real feedback. This is v0.1, so there’s definitely more to improve. But for now, Hustlenix Music is ready to meet its first listeners.
Ships:
Hustlenix Music v0.1 is ready to ship 🎧 10 months, a lot of code, and one questionable response to a music teacher later… This started because my school music teacher kept scolding me about my coarse singing voice. Most people would probably practice singing. I decided I was going to write music through code instead. My ego and my coding abilities apparently had other plans. 😭 That’s how I got into Strudel, a live-coding environment for making music. But somewhere along the way, I got a bigger idea. Instead of just writing compositions, why not build an entire music player around them? Something with a library, search, playback controls, and an editor, all wrapped in an interface that feels like an actual music app. That idea became Hustlenix Music . From a music experiment to an actual app The concept sounded simple enough: Strudel for the music, HTML, CSS, and JavaScript for the app. The implementation was another story. I wasn’t just trying to make a page that played audio. I wanted the experience around the music to feel complete, while keeping the ability to experiment with the compositions themselves. I also wanted the interface to feel familiar without making a straight copy of Spotify. I’ve been working on this for around 10 months. Not all that work made it into the devlogs, either. Some development time simply wasn’t recorded, so the logged hours aren’t a complete account of the project’s history. I also used Codex for a substantial part of the implementation, as disclosed in the project’s AI declaration. The goal was to build and finish the product, not pretend every line came directly from my keyboard. What’s in v0.1? The first beta includes: Six original instrumentals that users can listen to. Playback controls for play, pause, resume, and stop. Search to find music. A local library for the available tracks. A composition editor where changes can be previewed live. I’ve kept this release focused on original instrumentals. My experiments studying famous songs aren’t included in the beta. There’s plenty more I could add, but I don’t want the project stuck in development forever because I keep finding one more thing to tweak. Why ship it now? At some point, another feature isn’t as valuable as getting the current version in front of people. This beta is my first proper attempt at bringing the whole idea together: music made with Strudel, a music-player interface, and tools to experiment with compositions in one place. It’s not the final version of what I imagine Hustlenix Music could become. It’s the first version that brings the core idea into a usable product. And honestly, that’s a milestone worth reaching. What’s next? For now, I want to get this version out there, see how the experience holds up, and work out what genuinely needs improving. There will probably be bugs, rough edges, and ideas I’ll want to revisit. That’s part of shipping something instead of leaving it as an unfinished project. What began as a slightly ridiculous reaction to being criticised for my singing has turned into a project I’ve spent months building. I still can’t promise my singing has improved. But at least I built a music player. 💀 Hustlenix Music v0.1: let’s ship it. 🎵 Live demo: [https://hustlenix.github.io/strudelify/] 💻 Source code: [https://github.com/Hustlenix/strudelify]...
|
1793199236.7800508
|
1793285636.7800508
|
|
69796
|
Obliterator - Antweight Battle Bot by @Haiiitsme | Obliterator - Antweight Battle Bot by @Haiiitsme | Stardance...
|
Haiiitsme
|
0
|
8.53
|
0
|
[]
|
[{"post_id": 81754, "ts": "202 [{"post_id": 81754, "ts": "2026-10-22T11:25:59Z", "hours": 0.6061, "text": "Bristless!! I added some very spiky and long bristles to the back of my bot, to add a thick line of defense behind the bot, to protect it from hard hits while remaining extremely light, unlike a solid extention. Screw Switch A slot for the screw switch was also added, so i can turn the bot on and off from the outside, and ensuring that the switch cant accidentally be switched off in a battle. Thanks it! Pretty short Devlog, but thank you for reading! Hope you’re as excited for this build as i am! Hopefully it gets approved quickly as well!"}, {"post_id": 81437, "ts": "2026-10-21T09:11:51Z", "hours": 7.9256, "text": "First Devlog! New Project This is my new project, a 150g Antweight cobat robot with a flat body, an aggressive design, and a large horizontal weapon spinning at speeds of 25,000 rpm. This is in succession to Cat-aclysm, my prior combat robot, from which i learnt a lot and implemented into this one! Idea Most parts of this robot contrast Cataclysm, since i wanted to make something completely different, and also to fix all the features that malfunctioned or did not perform well in Cataclysm. A major feature that went very wrong in Cataclysm was its weapon blade, which kept on shattering on impact. This time, i ensured the blade would have a uniform spread of the pressure, and would not shatter instantly upon a hit. Designing The Weapon I began with designing the weapon blade on Fusion, and unfortunately forgot to track it. With lots of help from a friend, who thouroughly explained exactly how to design a perfect weapon blade using his helpful diagrams, which ive attached below! CADing the main components Next i imported all electronics and the weapon blade into a common Onshape document and lay them out where i saw fit. Then i made a rough sketch around them and built up. I added a hollow compartment to hold electronics, designed thick weapon struts, and quickly replaceable wheel guards. The wheels will be 3D printed this time, with O rings for extra grip. Plan for future If i have weight left from my 150g limit, i will be adding bristles to the back of the bot, since it was a very effective strategy used by Makers muse, which he has given permission to me to use. Thank you! Thank you for reading this devlog, it was pretty long, and i hope you enjoyed! I will be building this bot as soon as i get funding!"}]...
|
Title: Obliterator - Antweight Battle Bot by @Haii Title: Obliterator - Antweight Battle Bot by @Haiiitsme | Stardance
Devlogs:
First Devlog! New Project This is my new project, a 150g Antweight cobat robot with a flat body, an aggressive design, and a large horizontal weapon spinning at speeds of 25,000 rpm. This is in succession to Cat-aclysm, my prior combat robot, from which i learnt a lot and implemented into this one! Idea Most parts of this robot contrast Cataclysm, since i wanted to make something completely different, and also to fix all the features that malfunctioned or did not perform well in Cataclysm. A major feature that went very wrong in Cataclysm was its weapon blade, which kept on shattering on impact. This time, i ensured the blade would have a uniform spread of the pressure, and would not shatter instantly upon a hit. Designing The Weapon I began with designing the weapon blade on Fusion, and unfortunately forgot to track it. With lots of help from a friend, who thouroughly explained exactly how to design a perfect weapon blade using his helpful diagrams, which ive attached below! CADing the main components Next i imported all electronics and the weapon blade into a common Onshape document and lay them out where i saw fit. Then i made a rough sketch around them and built up. I added a hollow compartment to hold electronics, designed thick weapon struts, and quickly replaceable wheel guards. The wheels will be 3D printed this time, with O rings for extra grip. Plan for future If i have weight left from my 150g limit, i will be adding bristles to the back of the bot, since it was a very effective strategy used by Makers muse, which he has given permission to me to use. Thank you! Thank you for reading this devlog, it was pretty long, and i hope you enjoyed! I will be building this bot as soon as i get funding!
Bristless!! I added some very spiky and long bristles to the back of my bot, to add a thick line of defense behind the bot, to protect it from hard hits while remaining extremely light, unlike a solid extention. Screw Switch A slot for the screw switch was also added, so i can turn the bot on and off from the outside, and ensuring that the switch cant accidentally be switched off in a battle. Thanks it! Pretty short Devlog, but thank you for reading! Hope you’re as excited for this build as i am! Hopefully it gets approved quickly as well!...
|
1792860465.5572307
|
1793465265.5572307
|
|
55794
|
Love Vada Pav by @teerth | Stardance
|
teerth
|
1
|
15.9
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-17T20:40:16Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Presenting LOVE VADA PAV A game about reuniting the best couple in the universe through a set of time-bound minigames But beware! You have only 5 fried chilies (5 lives) and yes, you can chill till you have at least one fried chili but after that… youre fried!!!!! Jk you just lose the game, then you try again, till you can reunite the best couple in this universe. Cause this game is all about: LOVE. VADA. PAV.", "repo": "https://github.com/spiceTheCode/vadapav-ware", "demo": "https://teerthyatraaa.itch.io/love-vada-pav"}]...
|
[{"post_id": 81750, "ts": "202 [{"post_id": 81750, "ts": "2026-10-22T10:53:28Z", "hours": 1.9, "text": "NEW MINIGAME IN THE WORKS!! My potato bowl shoots potato balls so that they can be covered in besan (Batter) to be sent for frying!"}, {"post_id": 69809, "ts": "2026-09-17T20:24:58Z", "hours": 0.5717, "text": "READY TO SHIP!!! Thank y’all for being a part of the ver 1 of this game VADA AND PAV WILL RETURN IN DOOMSDAY?!?? Anyways spent the last few minutes making readme better and making a promo asset in godot itself. Also the name’s official now: LOVE VADA PAV!!!"}, {"post_id": 69760, "ts": "2026-09-17T18:51:58Z", "hours": 3.8256, "text": "FONT UPDATE These are the following updates Fixed Global Audio Issues Changed Font to something more fun Designed Winning and Losing Scenes We are so ready to ship, only readme remains"}, {"post_id": 68560, "ts": "2026-09-15T10:11:24Z", "hours": 4.6208, "text": "THIRD MINIGAME READY!!!!! I abso-dupso-lutely loved making this one, becuase I had to do everything myself from collision to dragging, and I loved it. Im nearing the completion of this game, I would love to see how y’all reach to my game… Also im working on adding some music and sound effects so that the game feels more like… well, a game. Cheers! 🥂 P.S. I didn’t take all of these 4.5 hours just to develop this minigame, a lot of it went into making winner and looser screens and making other minigames more fun!"}, {"post_id": 63411, "ts": "2026-09-07T07:17:35Z", "hours": 1.0461, "text": "2nd minigame complete! I added a bit more difficulty by making the player choose between burnt and unburnt vadas Click all the unburnt vadas before the timer hits 0!"}, {"post_id": 61397, "ts": "2026-09-04T09:11:50Z", "hours": 1.4147, "text": "Minigame 1 Ready!!!! and level screen! In the first minigame you have to collect 3 vadas to make the supreme triple vada pav I’m thinking of making the second minigame about picking cooked vadas from a pot! Cheers!"}, {"post_id": 59065, "ts": "2026-08-31T17:42:06Z", "hours": 2.4217, "text": "ARE YOU ALSO A PAV LOOKING FOR A VADA?? Probably not… No worries tho, you can stimulate that here!"}]...
|
Title: Love Vada Pav by @teerth | Stardance
Devlo Title: Love Vada Pav by @teerth | Stardance
Devlogs:
ARE YOU ALSO A PAV LOOKING FOR A VADA?? Probably not… No worries tho, you can stimulate that here!
Minigame 1 Ready!!!! and level screen! In the first minigame you have to collect 3 vadas to make the supreme triple vada pav I’m thinking of making the second minigame about picking cooked vadas from a pot! Cheers!
2nd minigame complete! I added a bit more difficulty by making the player choose between burnt and unburnt vadas Click all the unburnt vadas before the timer hits 0!
THIRD MINIGAME READY!!!!! I abso-dupso-lutely loved making this one, becuase I had to do everything myself from collision to dragging, and I loved it. Im nearing the completion of this game, I would love to see how y’all reach to my game… Also im working on adding some music and sound effects so that the game feels more like… well, a game. Cheers! 🥂 P.S. I didn’t take all of these 4.5 hours just to develop this minigame, a lot of it went into making winner and looser screens and making other minigames more fun!
FONT UPDATE These are the following updates Fixed Global Audio Issues Changed Font to something more fun Designed Winning and Losing Scenes We are so ready to ship, only readme remains
READY TO SHIP!!! Thank y’all for being a part of the ver 1 of this game VADA AND PAV WILL RETURN IN DOOMSDAY?!?? Anyways spent the last few minutes making readme better and making a promo asset in godot itself. Also the name’s official now: LOVE VADA PAV!!!
NEW MINIGAME IN THE WORKS!! My potato bowl shoots potato balls so that they can be covered in besan (Batter) to be sent for frying!
Ships:
Presenting LOVE VADA PAV A game about reuniting the best couple in the universe through a set of time-bound minigames But beware! You have only 5 fried chilies (5 lives) and yes, you can chill till you have at least one fried chili but after that… youre fried!!!!! Jk you just lose the game, then you try again, till you can reunite the best couple in this universe. Cause this game is all about: LOVE. VADA. PAV....
|
1793148881.7326431
|
1793235281.7326431
|
|
70911
|
FitPulse by @Siyam | Stardance
|
Siyam
|
0
|
1.61
|
0
|
[]
|
[{"post_id": 81748, "ts": "202 [{"post_id": 81748, "ts": "2026-10-22T10:45:49Z", "hours": 1.6092, "text": "Created a heatmap to track activity.. Now i will add exercises."}]...
|
Title: FitPulse by @Siyam | Stardance
Devlogs:
Cr Title: FitPulse by @Siyam | Stardance
Devlogs:
Created a heatmap to track activity.. Now i will add exercises....
|
1792666033.9440894
|
1793270833.9440894
|
|
68905
|
DEKZ PAD by @brijeshkumar724282 | Stardance
|
brijeshkumar724282
|
0
|
1.1
|
0
|
[]
|
[{"post_id": 81744, "ts": "202 [{"post_id": 81744, "ts": "2026-10-22T10:07:12Z", "hours": 0.7828, "text": "I have completed the schm of the project, I did some changes in the design ig, but might add components, I am not sure how cuz I am very new to this. I dont know but why i cant do the wiring in the pcb well. I might need to figure it out."}, {"post_id": 79095, "ts": "2026-10-12T17:13:12Z", "hours": 0.3186, "text": "I Was working on making a rough model sketch to start with!"}]...
|
Title: DEKZ PAD by @brijeshkumar724282 | Stardance Title: DEKZ PAD by @brijeshkumar724282 | Stardance
Devlogs:
I Was working on making a rough model sketch to start with!
I have completed the schm of the project, I did some changes in the design ig, but might add components, I am not sure how cuz I am very new to this. I dont know but why i cant do the wiring in the pcb well. I might need to figure it out....
|
1793127146.9268303
|
1793731946.9268303
|
|
53824
|
TEDS Accounts by @Dov | Stardance
|
Dov
|
0
|
11.57
|
0
|
[]
|
[{"post_id": 81734, "ts": "202 [{"post_id": 81734, "ts": "2026-10-22T09:25:24Z", "hours": 1.6183, "text": "added an email settings section, as well as turning the dashboard into a layout so other pages can be easily added"}, {"post_id": 76437, "ts": "2026-10-03T14:38:10Z", "hours": 2.195, "text": "Added a working email request form. This allows users to request a teds.one email, or an alias etc. The requests are stored in the database, which can be approved, denied, etc."}, {"post_id": 56716, "ts": "2026-08-28T16:10:38Z", "hours": 1.0808, "text": "I first added Google login support. Why Google and not anything else? Everyone has a Google account! Google is also what I am using for TEDS itself, with the free tier for simple account management and OAuth. I might include the ability to link a discord account, and possibly login with it, but the latter is unlikely. I also created a logout page, which also logs you out then redirects you to the main page which I will make later."}, {"post_id": 53896, "ts": "2026-08-24T16:24:16Z", "hours": 6.6769, "text": "This project was moved from Macondo, which is why this is 1 devlog. I have setup better-auth to work with Cloudflare Workers + opennextjs (this will be hosted on CF Workers). I have functioning login + signup pages (except google login for now) and have started work on making the dashboard."}]...
|
Title: TEDS Accounts by @Dov | Stardance
Devlogs: Title: TEDS Accounts by @Dov | Stardance
Devlogs:
This project was moved from Macondo, which is why this is 1 devlog. I have setup better-auth to work with Cloudflare Workers + opennextjs (this will be hosted on CF Workers). I have functioning login + signup pages (except google login for now) and have started work on making the dashboard.
I first added Google login support. Why Google and not anything else? Everyone has a Google account! Google is also what I am using for TEDS itself, with the free tier for simple account management and OAuth. I might include the ability to link a discord account, and possibly login with it, but the latter is unlikely. I also created a logout page, which also logs you out then redirects you to the main page which I will make later.
Added a working email request form. This allows users to request a teds.one email, or an alias etc. The requests are stored in the database, which can be approved, denied, etc.
added an email settings section, as well as turning the dashboard into a layout so other pages can be easily added...
|
1792766858.662539
|
1793371658.662539
|
|
33620
|
My own site! by @itsaperson | Stardance
|
itsaperson
|
1
|
0.46
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T23:52:37Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made my own personal site, this project was fairly simple and fun, could be more creative. When I tried editing project info, it said 404 error, I was confused for like 10 mins, then realised that my repo was private. Oopsies. Don’t make the same mistake as me. I think a simple website that looks effective is a good website.", "repo": "https://github.com/insertnewusername/mypersonalsite", "demo": "https://insertnewusername.github.io/mypersonalsite/"}]...
|
[{"post_id": 81732, "ts": "202 [{"post_id": 81732, "ts": "2026-10-22T08:34:02Z", "hours": 0.4572, "text": "Added better styling, made more polished. For the hi its me and the pic, decided to make it a flexbox to make information look and be presented better, as well as remove underline text decoration from hyperlink etc. Small devlog ngl"}, {"post_id": 58536, "ts": "2026-08-30T23:38:55Z", "hours": 0.2517, "text": "Worked on making my personal site, couldn’t think of what to put on it so decided to show of some of my github projects. Html is mostly good, now it’s time to work on the css!"}]...
|
Title: My own site! by @itsaperson | Stardance
De Title: My own site! by @itsaperson | Stardance
Devlogs:
Worked on making my personal site, couldn’t think of what to put on it so decided to show of some of my github projects. Html is mostly good, now it’s time to work on the css!
Added better styling, made more polished. For the hi its me and the pic, decided to make it a flexbox to make information look and be presented better, as well as remove underline text decoration from hyperlink etc. Small devlog ngl
Ships:
Made my own personal site, this project was fairly simple and fun, could be more creative. When I tried editing project info, it said 404 error, I was confused for like 10 mins, then realised that my repo was private. Oopsies. Don’t make the same mistake as me. I think a simple website that looks effective is a good website....
|
1793127314.7610378
|
1793213714.7610378
|
|
22433
|
Semicolonless C Compiler by @lilyy | Stardance
|
lilyy
|
0
|
5.21
|
0
|
[]
|
[{"post_id": 81731, "ts": "202 [{"post_id": 81731, "ts": "2026-10-22T08:07:07Z", "hours": 0.7861, "text": "fixed some bugs and polished it, all tests now pass there was also a memory leak thing i found while running the tests commits since the last devlog 1223cf6 fixed a memory leak and some bugs b2098bb Document the examples in the README 8a45dbb Make the examples SLCC styled 82d63fa Fix typos in the README"}, {"post_id": 38055, "ts": "2026-07-31T07:34:57Z", "hours": 3.2833, "text": "add python style indenting now this is valid code: #include <stdio.h> int main () : float a , b int c float cache = 1 printf ( \"Input some numbers: \" ) if ( scanf ( \"%f %f %d\" , & a , & b , & c ) != 3 ) : printf ( \"Invalid input. \\n \" ) return 1 printf ( \" \\n \" ) if ( b == 0 ) : printf ( \"b is zero \\n \" ) else : printf ( \"%f/%f = %f \\n \" , a , b , a / b ) if ( c >= 0 ) : for ( int i = 0 i > c i ++ ) : cache *= a printf ( \"%f^%d = %f \\n \" , a , c , cache ) else : printf ( \"c is negative \\n \" ) return 0 yeah this is so cursed. this is the output of the code:"}, {"post_id": 12447, "ts": "2026-06-20T09:41:35Z", "hours": 0.7169, "text": "upload to github, change the name, fix help, add README, and fix tests all tests pass! Changelog Add README and fix tests Change the name to slcc"}, {"post_id": 11981, "ts": "2026-06-19T15:38:02Z", "hours": 0.4283, "text": "made the initial version this is so cursed changelog Fix structs remove semicolons :) (every other commit before is not mine)"}]...
|
Title: Semicolonless C Compiler by @lilyy | Starda Title: Semicolonless C Compiler by @lilyy | Stardance
Devlogs:
made the initial version this is so cursed changelog Fix structs remove semicolons :) (every other commit before is not mine)
upload to github, change the name, fix help, add README, and fix tests all tests pass! Changelog Add README and fix tests Change the name to slcc
add python style indenting now this is valid code: #include <stdio.h> int main () : float a , b int c float cache = 1 printf ( "Input some numbers: " ) if ( scanf ( "%f %f %d" , & a , & b , & c ) != 3 ) : printf ( "Invalid input. \n " ) return 1 printf ( " \n " ) if ( b == 0 ) : printf ( "b is zero \n " ) else : printf ( "%f/%f = %f \n " , a , b , a / b ) if ( c >= 0 ) : for ( int i = 0 i > c i ++ ) : cache *= a printf ( "%f^%d = %f \n " , a , c , cache ) else : printf ( "c is negative \n " ) return 0 yeah this is so cursed. this is the output of the code:
fixed some bugs and polished it, all tests now pass there was also a memory leak thing i found while running the tests commits since the last devlog 1223cf6 fixed a memory leak and some bugs b2098bb Document the examples in the README 8a45dbb Make the examples SLCC styled 82d63fa Fix typos in the README...
|
1792662742.5665555
|
1793267542.5665555
|
|
70896
|
My very own WebOS by @xzenxhunter | Stardance
|
xzenxhunter
|
0
|
0.31
|
0
|
[]
|
[{"post_id": 81727, "ts": "202 [{"post_id": 81727, "ts": "2026-10-22T07:33:17Z", "hours": 0.3122, "text": "i added an welcome page"}]...
|
Title: My very own WebOS by @xzenxhunter | Stardan Title: My very own WebOS by @xzenxhunter | Stardance
Devlogs:
i added an welcome page...
|
1792655241.3054972
|
1793260041.3054972
|
|
68199
|
CurtainsOS by @zac_i | Stardance
|
zac_i
|
2
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T07:44:56Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CurtainsOS SHIP #2!!!! New features: Fullscreen option Window open/close animations Terminal app with a bunch of prank and basic commands Settings app with custom background image, and curtain animation toggle. Saved to localStorage Saved notes Saved window positions and states Simple weather app using OpenMeteo API Nice fade-in transition to dull the CSS-load flash Challenges Getting the custom uploaded background image to save was tricky, but I got it to work with localStorage in the end. Weather from the OpenMeteo API was a little bit hard, but my good pal google helped me out. ;D", "repo": "https://github.com/zacianculovici/CurtainsOS", "demo": "https://zacianculovici.github.io/CurtainsOS"}, {"ship_num": 2, "ts": "2026-10-15T09:15:46Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My WebOS is inspired as a pun on Windows, hence CurtainsOS. I Implemented features such as a calculator, notes app and goto app, and multiple easter eggs. I used custom HTMLElements to make adding new windows easy, and put most of my css separately to clear up my html.", "repo": "https://github.com/zacianculovici/CurtainsOS", "demo": "https://zacianculovici.github.io/CurtainsOS"}]...
|
[{"post_id": 81724, "ts": "202 [{"post_id": 81724, "ts": "2026-10-22T07:21:35Z", "hours": 0.3256, "text": "Devlog #6* for CurtainsOS Fullscreen windows! All I’ve added since my last devlog is the ability to put windows in fullscreen! It has a nice green button with icons and it blocks resizing so you don’t break the window size in fullscreen mode! Check it out here ! More like Devlog #5.5…"}, {"post_id": 81707, "ts": "2026-10-22T05:19:18Z", "hours": 2.0531, "text": "Devlog #5 for CurtainsOS! Added so many terminal features I have added lots of random and prank terminal commands, check them out here with the help command!"}, {"post_id": 81190, "ts": "2026-10-20T07:27:32Z", "hours": 2.6722, "text": "OMG!!! DEVLOG #4 OF CurtainsOS !!! Added Features I have added: A settings window with saved settings, animation toggle and custom background image upload (also saved) A weather app with very simple temperature and weather remark at your location from OpenMeteo Notes are saved to localStorage Window positions and states are saved to localStorage , meaning you keep your open windows on reload Nice fade-in transition to dull the CSS-load flashing. Challenges Custom background image: It was a bit hard to get the background images to save, but I ended up saving them to localStorage as a data: URL Weather: It was slightly difficult to figure out how to ping the OpenMeteo API, but I got it to work after a bit of googling and testing CHECK IT OUT!!!"}, {"post_id": 79755, "ts": "2026-10-15T08:57:07Z", "hours": 4.0625, "text": "Devlog #3 of CurtainsOS ! Added sooo much! (I should have devlogged sooner 😭) Added: Custom HTMLElements ( <app-window> s) to make the adding of windows easy-peasy Calculator and goto apps A couple easter eggs (see if you can find them!) Problems I had quite a bit of trouble with the HTMLElements as all this shadowDOM stuff is sooo confusing! However, I am glad I did because it is now so much easier for future (and WebOS 2…) ! Also, it then mucked up my dragging and closing/opening so I was like * mortified-scream * ! But it’s fixed and I’m happy with it now. Will probably ship next!!!"}, {"post_id": 78975, "ts": "2026-10-12T07:27:54Z", "hours": 1.8153, "text": "Devlog #2 of CurtainsOS! Just made things look a little nicer and made the dragging/resising work properly Site is live!"}, {"post_id": 78930, "ts": "2026-10-12T02:24:34Z", "hours": 1.0522, "text": "First devlog of CurtainsOS! “ This is CurtainsOS! A pun on Windows, with lot’s of cool features such as curtain animations and other easter eggs. ” YESSSS!!! I’m nearly done a first draft with a couple windows. Also… There might be a cool curtain animation effect…"}]...
|
Title: CurtainsOS by @zac_i | Stardance
Devlogs:
Title: CurtainsOS by @zac_i | Stardance
Devlogs:
First devlog of CurtainsOS! “ This is CurtainsOS! A pun on Windows, with lot’s of cool features such as curtain animations and other easter eggs. ” YESSSS!!! I’m nearly done a first draft with a couple windows. Also… There might be a cool curtain animation effect…
Devlog #2 of CurtainsOS! Just made things look a little nicer and made the dragging/resising work properly Site is live!
Devlog #3 of CurtainsOS ! Added sooo much! (I should have devlogged sooner 😭) Added: Custom HTMLElements ( <app-window> s) to make the adding of windows easy-peasy Calculator and goto apps A couple easter eggs (see if you can find them!) Problems I had quite a bit of trouble with the HTMLElements as all this shadowDOM stuff is sooo confusing! However, I am glad I did because it is now so much easier for future (and WebOS 2…) ! Also, it then mucked up my dragging and closing/opening so I was like * mortified-scream * ! But it’s fixed and I’m happy with it now. Will probably ship next!!!
OMG!!! DEVLOG #4 OF CurtainsOS !!! Added Features I have added: A settings window with saved settings, animation toggle and custom background image upload (also saved) A weather app with very simple temperature and weather remark at your location from OpenMeteo Notes are saved to localStorage Window positions and states are saved to localStorage , meaning you keep your open windows on reload Nice fade-in transition to dull the CSS-load flashing. Challenges Custom background image: It was a bit hard to get the background images to save, but I ended up saving them to localStorage as a data: URL Weather: It was slightly difficult to figure out how to ping the OpenMeteo API, but I got it to work after a bit of googling and testing CHECK IT OUT!!!
Devlog #5 for CurtainsOS! Added so many terminal features I have added lots of random and prank terminal commands, check them out here with the help command!
Devlog #6* for CurtainsOS Fullscreen windows! All I’ve added since my last devlog is the ability to put windows in fullscreen! It has a nice green button with icons and it blocks resizing so you don’t break the window size in fullscreen mode! Check it out here ! More like Devlog #5.5…
Ships:
My WebOS is inspired as a pun on Windows, hence CurtainsOS. I Implemented features such as a calculator, notes app and goto app, and multiple easter eggs. I used custom HTMLElements to make adding new windows easy, and put most of my css separately to clear up my html.
CurtainsOS SHIP #2!!!! New features: Fullscreen option Window open/close animations Terminal app with a bunch of prank and basic commands Settings app with custom background image, and curtain animation toggle. Saved to localStorage Saved notes Saved window positions and states Simple weather app using OpenMeteo API Nice fade-in transition to dull the CSS-load flash Challenges Getting the custom uploaded background image to save was tricky, but I got it to work with localStorage in the end. Weather from the OpenMeteo API was a little bit hard, but my good pal google helped me out. ;D...
|
1793155846.8665833
|
1793242246.8665833
|
|
70023
|
DPS Sharjah Smart Lost & Found by @Saif_Yousuf DPS Sharjah Smart Lost & Found by @Saif_Yousuf | Stardance...
|
Saif_Yousuf
|
0
|
2.87
|
0
|
[]
|
[{"post_id": 81723, "ts": "202 [{"post_id": 81723, "ts": "2026-10-22T07:07:05Z", "hours": 0.5078, "text": "I was working on getting my FireBase working and overall the backend so that I can login to the website"}, {"post_id": 80151, "ts": "2026-10-16T12:39:30Z", "hours": 2.3583, "text": "I havent really started, The link given in this project is the vibe coded version of this, I am going to make a non-AI website while keeping it better then the link given but ya it will use gemini API and all"}]...
|
Title: DPS Sharjah Smart Lost & Found by @Saif Title: DPS Sharjah Smart Lost & Found by @Saif_Yousuf | Stardance
Devlogs:
I havent really started, The link given in this project is the vibe coded version of this, I am going to make a non-AI website while keeping it better then the link given but ya it will use gemini API and all
I was working on getting my FireBase working and overall the backend so that I can login to the website...
|
1792957956.9576113
|
1793562756.9576113
|
|
56164
|
Papyrus by @steve_alappat | Stardance
|
steve_alappat
|
0
|
13.72
|
0
|
[]
|
[{"post_id": 81717, "ts": "202 [{"post_id": 81717, "ts": "2026-10-22T06:45:40Z", "hours": 6.4361, "text": "YO GUESS WHO’S BACK? I had way too much sugar. Back to the project. I’ve finally set up the review process, admin functionality, and the entire end-to-end data pipeline. The project is starting to feel like a proper, mostly* finished product. Before diving into the details of what I’ve accomplished, here’s what’s left to do. Work LEft Implement proper admin dashboard statistics to give admins useful insights into the platform. Find and implement a PDF preview solution so users can preview files before downloading them. Polish the UI and styling across every page to make the entire platform feel more consistent and beautiful. Improve admin functionality by adding more tools and controls to make the admin panel genuinely useful. What I Accomplished in the Last 6 Hours Built the complete file upload pipeline. Files can now be uploaded, stored, and inserted into the database. After going through the review process, approved files are displayed on the frontend and can be downloaded by users. Implemented the review and approval system. Admins can quickly review submitted resources and approve them before they become available to users. Improved the admin panel. I’ve added more functionality, but there’s still a long way to go before it becomes a fully functional administration dashboard. Added download tracking. Each file now has its own download counter, allowing the platform to track how many times individual resources have been downloaded. So untill next time, all the best and Happy hacking! P.S: the attached photo is the current state of the admin dashboard"}, {"post_id": 78705, "ts": "2026-10-11T11:15:46Z", "hours": 7.2875, "text": "Hi guys! Welcome to my new project Papyrus!This project is a web application to allow students to easily access and share exam papers and materials. The goal is to create a centralized platform where students can find the resources they need to prepare for their exams effectively.The inspiration for this project came from my own experience as a student; I found that that the practise of a large number of papers was one of the most influential factors in my preparation for exams. However, I also found that the availability of these papers was limited and often scattered across various sources. My friends and I would spend a lot of time searching for the papers we needed, which was frustrating and time-consuming. Thus, I decided to create this project to remove that friction for future students and make it easier for them to access the resources they need.But thats enough about me, lets talk about the project itself. The project is built using Next.js, which allows for a seamless integration of frontend and backend functionality. The frontend is built using React components, while the backend handles API requests and data management. The main database is made using SQLite, and the schema is defined in lib/schema.ts .the project has 3 main divisons, The front, the server and a admin panel. The front is the main website where students can browse and search for papers, as well as upload their own papers for review. The server handles all the backend functionality, including API requests and data management. The admin panel is where the review process takes place, allowing admins to review and approve submitted papers before they are added to the archive.As of today im almost at the end of the project possibly, right now i need to setup the review process, the data pipe level and make the admin panel functionalAlso my ai declaration: I and used ai to make the bulk parts of the code, but i have had to go through each line my self due to the slop nature of the ai code, and no ai was used to make the documentation and logic or data flows anything, i used ai mostly for the styling part. ps the screenshot is the homepage of the website as of now"}]...
|
Title: Papyrus by @steve_alappat | Stardance
Devl Title: Papyrus by @steve_alappat | Stardance
Devlogs:
Hi guys! Welcome to my new project Papyrus!This project is a web application to allow students to easily access and share exam papers and materials. The goal is to create a centralized platform where students can find the resources they need to prepare for their exams effectively.The inspiration for this project came from my own experience as a student; I found that that the practise of a large number of papers was one of the most influential factors in my preparation for exams. However, I also found that the availability of these papers was limited and often scattered across various sources. My friends and I would spend a lot of time searching for the papers we needed, which was frustrating and time-consuming. Thus, I decided to create this project to remove that friction for future students and make it easier for them to access the resources they need.But thats enough about me, lets talk about the project itself. The project is built using Next.js, which allows for a seamless integration of frontend and backend functionality. The frontend is built using React components, while the backend handles API requests and data management. The main database is made using SQLite, and the schema is defined in lib/schema.ts .the project has 3 main divisons, The front, the server and a admin panel. The front is the main website where students can browse and search for papers, as well as upload their own papers for review. The server handles all the backend functionality, including API requests and data management. The admin panel is where the review process takes place, allowing admins to review and approve submitted papers before they are added to the archive.As of today im almost at the end of the project possibly, right now i need to setup the review process, the data pipe level and make the admin panel functionalAlso my ai declaration: I and used ai to make the bulk parts of the code, but i have had to go through each line my self due to the slop nature of the ai code, and no ai was used to make the documentation and logic or data flows anything, i used ai mostly for the styling part. ps the screenshot is the homepage of the website as of now
YO GUESS WHO’S BACK? I had way too much sugar. Back to the project. I’ve finally set up the review process, admin functionality, and the entire end-to-end data pipeline. The project is starting to feel like a proper, mostly* finished product. Before diving into the details of what I’ve accomplished, here’s what’s left to do. Work LEft Implement proper admin dashboard statistics to give admins useful insights into the platform. Find and implement a PDF preview solution so users can preview files before downloading them. Polish the UI and styling across every page to make the entire platform feel more consistent and beautiful. Improve admin functionality by adding more tools and controls to make the admin panel genuinely useful. What I Accomplished in the Last 6 Hours Built the complete file upload pipeline. Files can now be uploaded, stored, and inserted into the database. After going through the review process, approved files are displayed on the frontend and can be downloaded by users. Implemented the review and approval system. Admins can quickly review submitted resources and approve them before they become available to users. Improved the admin panel. I’ve added more functionality, but there’s still a long way to go before it becomes a fully functional administration dashboard. Added download tracking. Each file now has its own download counter, allowing the platform to track how many times individual resources have been downloaded. So untill next time, all the best and Happy hacking! P.S: the attached photo is the current state of the admin dashboard...
|
1792651748.2655246
|
1793256548.2655246
|
|
35980
|
My personal site! by @Shreiyaan_Parin_Shah | Stard My personal site! by @Shreiyaan_Parin_Shah | Stardance...
|
Shreiyaan_Parin_Shah
|
1
|
15.64
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-28T07:29:15Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site that contains information about me, my projects that I will add soon and my achievements as well. The part that was actually challenging was getting the code correct and not messing up the color, font, style and everything else included. But finally, I am proud of it’s outcome. This is my first project and I am excited to do more.", "repo": "https://github.com/Shreiyaan/my-personal-website", "demo": "https://shreiyaan.github.io/my-personal-website/"}]...
|
[{"post_id": 81714, "ts": "202 [{"post_id": 81714, "ts": "2026-10-22T06:05:28Z", "hours": 0.8228, "text": "I added more uniqueness to my website and here is the outcome. This is my completely personalized website."}, {"post_id": 81700, "ts": "2026-10-22T04:20:52Z", "hours": 3.46, "text": "As mentioned before, there are always corrections to make. So this time, i thought, why not start the entire thing once again from scratch. This is my progress so far. I am a huge fan of Thor, hence the background. The website is not done yet. Have to make a lot of changes and also, have to bring in some of my pictures! I am trying to make it as unique as possible. Yet have to work on it."}, {"post_id": 76364, "ts": "2026-10-03T09:54:47Z", "hours": 4.3561, "text": "I had spent hours behind my previous website, but naturally, there are always more corrections to make. But this time, it wasn’t only a correction. It was s restructure. A complete transformation. I have completed changed the outlook of my personal website, and I just have to make a few more edits before it can go live. Excited on how it is coming out to be!!!"}, {"post_id": 36253, "ts": "2026-07-28T07:20:36Z", "hours": 2.105, "text": "Hello everyone! The site is finally completely finished and all the features are finally working. When I first started working on this for Hack Club, I honestly wasn’t sure how it was going to turn out, but I’m super proud of the final result. Getting everything from a blank screen to a fully working, polished website took way more trial and error than expected, especially trying to get the styling and code structure right without it becoming a total mess. But after grinding through the bugs and finishing up the last few details, it’s finally ready to ship."}, {"post_id": 31794, "ts": "2026-07-20T13:54:17Z", "hours": 5.3539, "text": "After immense hard work and grinding - here is my personal site. This is a culmination of tremendous hours of coding and learning. However intense the hardwork, this process truly taught me a lot. Looking forward for more"}]...
|
Title: My personal site! by @Shreiyaan_Parin_Shah Title: My personal site! by @Shreiyaan_Parin_Shah | Stardance
Devlogs:
After immense hard work and grinding - here is my personal site. This is a culmination of tremendous hours of coding and learning. However intense the hardwork, this process truly taught me a lot. Looking forward for more
Hello everyone! The site is finally completely finished and all the features are finally working. When I first started working on this for Hack Club, I honestly wasn’t sure how it was going to turn out, but I’m super proud of the final result. Getting everything from a blank screen to a fully working, polished website took way more trial and error than expected, especially trying to get the styling and code structure right without it becoming a total mess. But after grinding through the bugs and finishing up the last few details, it’s finally ready to ship.
I had spent hours behind my previous website, but naturally, there are always more corrections to make. But this time, it wasn’t only a correction. It was s restructure. A complete transformation. I have completed changed the outlook of my personal website, and I just have to make a few more edits before it can go live. Excited on how it is coming out to be!!!
As mentioned before, there are always corrections to make. So this time, i thought, why not start the entire thing once again from scratch. This is my progress so far. I am a huge fan of Thor, hence the background. The website is not done yet. Have to make a lot of changes and also, have to bring in some of my pictures! I am trying to make it as unique as possible. Yet have to work on it.
I added more uniqueness to my website and here is the outcome. This is my completely personalized website.
Ships:
I made a personal site that contains information about me, my projects that I will add soon and my achievements as well. The part that was actually challenging was getting the code correct and not messing up the color, font, style and everything else included. But finally, I am proud of it’s outcome. This is my first project and I am excited to do more....
|
1793137774.008952
|
1793224174.008952
|
|
70473
|
USB hub by @aarush_setty | Stardance
|
aarush_setty
|
0
|
2.82
|
0
|
[]
|
[{"post_id": 81712, "ts": "202 [{"post_id": 81712, "ts": "2026-10-22T05:46:06Z", "hours": 0.79, "text": "PCB error correction using differential pair routing and copper pours"}, {"post_id": 81441, "ts": "2026-10-21T09:26:29Z", "hours": 1.4, "text": "PCB wiring and placement"}, {"post_id": 81290, "ts": "2026-10-20T17:27:02Z", "hours": 0.6333, "text": "USB Schematic for a USB hub with 2 A - type ports and 2 C-type ports"}]...
|
Title: USB hub by @aarush_setty | Stardance
Devlo Title: USB hub by @aarush_setty | Stardance
Devlogs:
USB Schematic for a USB hub with 2 A - type ports and 2 C-type ports
PCB wiring and placement
PCB error correction using differential pair routing and copper pours...
|
1793015267.032259
|
1793620067.032259
|
|
16872
|
TCG Tycoon Slack Bot by @Veeraj | Stardance
|
Veeraj
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T17:20:23Z", "hours": 2.0, "multiplier": 1.55, "payout": 3, "blessing": "neutral", "text": "I made a slackbot that allows you to play a tycoon game with the use of one command. I found a lot of things challenging as it was my first time. The main thing was understanding terminal commands and understanding how to install the software. It was confusing at first but as I did more I started to get the hang of it. I am really proud of the tournament feature and hope you enjoy it as much as I did.", "repo": "https://github.com/Octolord12/waddle-tcg-tycoon", "demo": "https://app.slack.com/client/E09V59WQY1E/C0BAWSLDY83"}]...
|
[{"post_id": 8171, "ts": "2026 [{"post_id": 8171, "ts": "2026-06-13T16:50:02Z", "hours": 1.7956, "text": "Version 1.2 added features such as gradable cards, player to player trading and a highly volatile tournament system. The screenshot is the grading system."}]...
|
Title: TCG Tycoon Slack Bot by @Veeraj | Stardance Title: TCG Tycoon Slack Bot by @Veeraj | Stardance
Devlogs:
Version 1.2 added features such as gradable cards, player to player trading and a highly volatile tournament system. The screenshot is the grading system.
Ships:
I made a slackbot that allows you to play a tycoon game with the use of one command. I found a lot of things challenging as it was my first time. The main thing was understanding terminal commands and understanding how to install the software. It was confusing at first but as I did more I started to get the hang of it. I am really proud of the tournament feature and hope you enjoy it as much as I did....
|
1793127123.2480822
|
1793213523.2480822
|
|
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
|
|
3309
|
master_calisthenics by @Mithil_Bhansali | Stardanc master_calisthenics by @Mithil_Bhansali | Stardance...
|
Mithil_Bhansali
|
0
|
4.99
|
0
|
[]
|
[{"post_id": 81697, "ts": "202 [{"post_id": 81697, "ts": "2026-10-22T03:58:42Z", "hours": 2.1292, "text": "finished"}, {"post_id": 5719, "ts": "2026-06-09T16:50:06Z", "hours": 2.3528, "text": "added a login page and connected backend datebase"}, {"post_id": 5050, "ts": "2026-06-08T18:28:17Z", "hours": 0.5064, "text": "A structured calisthenics learning platform that organizes bodyweight skills into clear progression paths from beginner to advanced movements. It breaks down each skill in order of difficulty and shows what must be learned before progressing to more complex exercises. Every skill includes detailed tutorials with step-by-step instructions, prerequisites, common mistakes, and training guidance to support proper development. The platform also includes training guides, beginner roadmaps, terminology explanations, and structured workout information to help users understand how to train effectively and consistently. The focus is on making calisthenics progression logical, accessible, and easy to follow by turning all skills into a connected learning system."}]...
|
Title: master_calisthenics by @Mithil_Bhansali | S Title: master_calisthenics by @Mithil_Bhansali | Stardance
Devlogs:
A structured calisthenics learning platform that organizes bodyweight skills into clear progression paths from beginner to advanced movements. It breaks down each skill in order of difficulty and shows what must be learned before progressing to more complex exercises. Every skill includes detailed tutorials with step-by-step instructions, prerequisites, common mistakes, and training guidance to support proper development. The platform also includes training guides, beginner roadmaps, terminology explanations, and structured workout information to help users understand how to train effectively and consistently. The focus is on making calisthenics progression logical, accessible, and easy to follow by turning all skills into a connected learning system.
added a login page and connected backend datebase
finished...
|
1793166521.5417156
|
1793771321.5417156
|
|
66979
|
TDay@Sinverse by @InayaDuh | Stardance
|
InayaDuh
|
1
|
13.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T04:04:24Z", "hours": 13.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is web based game made inspired by shinchan. This game took me 13 hours and I faced various obstacles specially with js script and maybe my vs code is not linked correctly with this but still I wanted to ship this to make a beginning for my work.", "repo": "https://github.com/InayaDuh/Shin-verse-td", "demo": "https://inayaduh.github.io/Shin-verse-td/"}]...
|
[{"post_id": 81696, "ts": "202 [{"post_id": 81696, "ts": "2026-10-22T03:57:49Z", "hours": 5.7544, "text": "Well finished working on this project for now. I will take this as a learning experience form now"}, {"post_id": 80372, "ts": "2026-10-17T13:13:25Z", "hours": 4.6594, "text": "so, decided to submit my project to snow globe and so removed all of my AI things and restarted this a gain couldn’t find a good-looking cover page and format so I changed it 3 time and stuck with this. Added a new font with help of ChatGPT and fixed by is using it cuz I cannot do it properly. Is it an upgrade or a downgrade? Let me knoww.And yes i will change the h2 element later hate to stare at my css file for 2 hours.The punching cursor only activates when i hover fun right?"}, {"post_id": 76415, "ts": "2026-10-03T14:00:28Z", "hours": 1.6972, "text": "Well scrapped the whole css of before and added new pictures and animations. I did the animations using AI cuz each part of my h1 was different elements, next time will try to do my self"}, {"post_id": 75502, "ts": "2026-09-30T09:16:56Z", "hours": 1.0772, "text": "Sup! working on this web pg where you get to live as a person in Shinchan Universe.Did some minor css annd html today"}]...
|
Title: TDay@Sinverse by @InayaDuh | Stardance
Dev Title: TDay@Sinverse by @InayaDuh | Stardance
Devlogs:
Sup! working on this web pg where you get to live as a person in Shinchan Universe.Did some minor css annd html today
Well scrapped the whole css of before and added new pictures and animations. I did the animations using AI cuz each part of my h1 was different elements, next time will try to do my self
so, decided to submit my project to snow globe and so removed all of my AI things and restarted this a gain couldn’t find a good-looking cover page and format so I changed it 3 time and stuck with this. Added a new font with help of ChatGPT and fixed by is using it cuz I cannot do it properly. Is it an upgrade or a downgrade? Let me knoww.And yes i will change the h2 element later hate to stare at my css file for 2 hours.The punching cursor only activates when i hover fun right?
Well finished working on this project for now. I will take this as a learning experience form now
Ships:
This is web based game made inspired by shinchan. This game took me 13 hours and I faced various obstacles specially with js script and maybe my vs code is not linked correctly with this but still I wanted to ship this to make a beginning for my work....
|
1793105493.302998
|
1793191893.302998
|
|
7224
|
Card Game by @sharmnten | Stardance
|
sharmnten
|
1
|
31.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T03:36:02Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a game that aimed to be similar to Stardew Valley, but with more of a focus on making it out of debt, similar to the Steam game Gambling With Friends. While this game is not complete, players are able to create a character, explore a small town, and enter a casino, and play “Ride the Bus” on the right hand side of the Casino. I am really proud of the card games, as the animations are really good in my opinion. PS: Poker, on the left hand side of the casino, is entirely broken. DO NOT PLAY POKER or you will have to reload the page.", "repo": "https://github.com/sharmnten/card-game", "demo": "https://sharmnten.github.io/card-game/"}]...
|
[{"post_id": 81692, "ts": "202 [{"post_id": 81692, "ts": "2026-10-22T03:28:56Z", "hours": 0.9194, "text": "Added the UI to every screen, made the game full screen for web, and finally updated the website because I realized it wasn’t updating this whole time, because I hadn’t been pushing new web builds."}, {"post_id": 76567, "ts": "2026-10-03T23:56:12Z", "hours": 3.1072, "text": "Remade casino art, and added limos to the street. Made it so you can enter the casino, and when you exit you spawn in the same spot. Next I need to make the players house and some UI. After that I will work on fixing poker and blackjack, and finalizing the game mechanics."}, {"post_id": 72539, "ts": "2026-09-23T05:06:44Z", "hours": 5.0875, "text": "Worked on the map for the town. This took a really long time, as setting up the autotiling strategies was something I had never done before."}, {"post_id": 68422, "ts": "2026-09-15T02:55:47Z", "hours": 1.9653, "text": "Made it so when you start playing a game, you spawn in the same spot when the game ends."}, {"post_id": 54200, "ts": "2026-08-25T02:47:38Z", "hours": 2.5972, "text": "Created a prompt and system that starts the “Ride the Bus” and “Poker” games. The prompt appears when the player gets close. Additionally, the map of the casino was updated. The background of the camera matches the walls of the casino, so it appears there is nothing beyond the walls of the casino. Next will be making the money in card games link to the casino scene."}, {"post_id": 41134, "ts": "2026-08-05T04:36:14Z", "hours": 2.3386, "text": "Built out tilemap and configured tiles which is really tedious because I have to configure hitboxes and paint the tiles into place. A problem im having is that the foreground elements are not being ordered correctly with the player."}, {"post_id": 35046, "ts": "2026-07-26T06:42:34Z", "hours": 0.8406, "text": "Added walk animations to every single asset. Next step is to script the walk animations into place, so each animation plays at the right time, and the assets get mirrored at the right time as well."}, {"post_id": 34300, "ts": "2026-07-24T21:46:10Z", "hours": 2.2667, "text": "Started the character customizing screen, and wrote the code that allows the player to adjust the character sprite to their liking. Once this is finished, I will create a system that allows it to be saved into the game save file, and then I will have to create the rest of the animations. Then afterwards I will develop the map and the game will be almost complete."}, {"post_id": 23268, "ts": "2026-07-06T03:43:38Z", "hours": 0.9794, "text": "Created a new system for character animations where each clothing piece has a dedicated Animation Resource file. This will allow easier animation management when the user creates a custom character. Additionally, I created the police hat animations(this didn’t contribute to the time, but also is important)."}, {"post_id": 20877, "ts": "2026-07-02T16:24:42Z", "hours": 0.4219, "text": "Started setting up the player animations. It is rather tedious as I need to create idle animations for each character hair, body, shirt, and pants and shadow, but this will later allow for more customizability of the character. I will also need to create a police hat for the IRS officers, but that will come later."}, {"post_id": 20589, "ts": "2026-07-02T06:32:02Z", "hours": 1.1778, "text": "Finished the Ride the Bus card game. Turn four involved guessing which suite the next card will be for 20x multiplier. Wrote 8 new functions, overall the first card game being finished is a solid landmark for the project. In the future I will either continue to develop the other card games and possibly roulette, or I might move to character movement and map design."}, {"post_id": 5635, "ts": "2026-06-09T14:40:57Z", "hours": 5.8906, "text": "Worked a ton on a new card game I am adding, called ride the bus. Animations have been added to card dealing, so the card now smoothly tweens over and then flips over to show the face. I also updated poker so that way the game starts, takes the bet amount, and then deals cards to the player and dealer. Additionally, I created a chip scene that can be used in all the games to approximate the amount of money that is on the table."}, {"post_id": 2524, "ts": "2026-06-05T01:53:16Z", "hours": 1.0033, "text": "Got the dealing mechanism to work. Now, when the “check” button is pressed, a card comes from the deck, and goes to the players hand. This is just for testing, the real game cards will be dealt automatically."}, {"post_id": 2134, "ts": "2026-06-04T13:48:12Z", "hours": 2.2475, "text": "Made setup for poker game and blackjack game, with intial UI layout. Took sprites from Itch.io to use in the game. I took way to long making sure everything was perfectly centered, because it was annoying me. Started making a card class."}]...
|
Title: Card Game by @sharmnten | Stardance
Devlog Title: Card Game by @sharmnten | Stardance
Devlogs:
Made setup for poker game and blackjack game, with intial UI layout. Took sprites from Itch.io to use in the game. I took way to long making sure everything was perfectly centered, because it was annoying me. Started making a card class.
Got the dealing mechanism to work. Now, when the “check” button is pressed, a card comes from the deck, and goes to the players hand. This is just for testing, the real game cards will be dealt automatically.
Worked a ton on a new card game I am adding, called ride the bus. Animations have been added to card dealing, so the card now smoothly tweens over and then flips over to show the face. I also updated poker so that way the game starts, takes the bet amount, and then deals cards to the player and dealer. Additionally, I created a chip scene that can be used in all the games to approximate the amount of money that is on the table.
Finished the Ride the Bus card game. Turn four involved guessing which suite the next card will be for 20x multiplier. Wrote 8 new functions, overall the first card game being finished is a solid landmark for the project. In the future I will either continue to develop the other card games and possibly roulette, or I might move to character movement and map design.
Started setting up the player animations. It is rather tedious as I need to create idle animations for each character hair, body, shirt, and pants and shadow, but this will later allow for more customizability of the character. I will also need to create a police hat for the IRS officers, but that will come later.
Created a new system for character animations where each clothing piece has a dedicated Animation Resource file. This will allow easier animation management when the user creates a custom character. Additionally, I created the police hat animations(this didn’t contribute to the time, but also is important).
Started the character customizing screen, and wrote the code that allows the player to adjust the character sprite to their liking. Once this is finished, I will create a system that allows it to be saved into the game save file, and then I will have to create the rest of the animations. Then afterwards I will develop the map and the game will be almost complete.
Added walk animations to every single asset. Next step is to script the walk animations into place, so each animation plays at the right time, and the assets get mirrored at the right time as well.
Built out tilemap and configured tiles which is really tedious because I have to configure hitboxes and paint the tiles into place. A problem im having is that the foreground elements are not being ordered correctly with the player.
Created a prompt and system that starts the “Ride the Bus” and “Poker” games. The prompt appears when the player gets close. Additionally, the map of the casino was updated. The background of the camera matches the walls of the casino, so it appears there is nothing beyond the walls of the casino. Next will be making the money in card games link to the casino scene.
Made it so when you start playing a game, you spawn in the same spot when the game ends.
Worked on the map for the town. This took a really long time, as setting up the autotiling strategies was something I had never done before.
Remade casino art, and added limos to the street. Made it so you can enter the casino, and when you exit you spawn in the same spot. Next I need to make the players house and some UI. After that I will work on fixing poker and blackjack, and finalizing the game mechanics.
Added the UI to every screen, made the game full screen for web, and finally updated the website because I realized it wasn’t updating this whole time, because I hadn’t been pushing new web builds.
Ships:
I made a game that aimed to be similar to Stardew Valley, but with more of a focus on making it out of debt, similar to the Steam game Gambling With Friends. While this game is not complete, players are able to create a character, explore a small town, and enter a casino, and play “Ride the Bus” on the right hand side of the Casino. I am really proud of the card games, as the animations are really good in my opinion. PS: Poker, on the left hand side of the casino, is entirely broken. DO NOT PLAY POKER or you will have to reload the page....
|
1793195746.7147737
|
1793282146.7147737
|
|
21411
|
ShooterManGame by @RileyTheSane | Stardance
|
RileyTheSane
|
0
|
50.14
|
0
|
[]
|
[{"post_id": 81688, "ts": "202 [{"post_id": 81688, "ts": "2026-10-22T02:55:04Z", "hours": 3.0206, "text": "You can now change the difficulty of the game! Below is a little preview of what the different difficulties look like in the last wave, and there is no sound because I forgot to enable it. The next thing I’ll work on is a scoring system. Hopefully I can get that done quickly because it is approaching the deadline yet again."}, {"post_id": 80536, "ts": "2026-10-18T03:02:16Z", "hours": 2.4469, "text": "I added a bunch of sound effects, and the game just feels so much better now. After I finish sound effects, I will add a difficulty setting and make some small tweaks before shipping. Shipping feels so close yet so far."}, {"post_id": 79934, "ts": "2026-10-15T18:08:31Z", "hours": 9.9069, "text": "How do animators do it? I’ve been working on an animation for Bob’s backstory, and I’m losing the desire to ever touch an animation timeline again. I finished all of the animation frames and sound effects, but this isn’t the full thing yet because I’m still putting the entire animation together."}, {"post_id": 62676, "ts": "2026-09-06T04:58:32Z", "hours": 3.7964, "text": "I made the title screem and it works (necessary) also look what I figured out how to do: 🎉 Ⓜ️ ⭕"}, {"post_id": 59349, "ts": "2026-09-01T02:54:15Z", "hours": 3.6314, "text": "I added fortnite storm but like red⛈️ and : a second larger health bar that appears when you leave the camera view the damage while outside the screen increases by one every time you take storm damage but resets when you re-enter the camera view I do think I went overboard with the vignette; I will probably be dialing it back later"}, {"post_id": 46105, "ts": "2026-08-13T02:52:46Z", "hours": 0.6894, "text": "Finished redesigning the “Wave #” text, and I had to redo the outro animation. I had to find a balance between wiggly and seizure inducing bc the wiggly style is quite violent when scaled up. I might change it later… Does anybody know how to get time recorded with Lapse/Lookout added to your project here on Stardance?"}, {"post_id": 45530, "ts": "2026-08-12T02:20:26Z", "hours": 0.7753, "text": "Started working on hand drawing all of the text, got the wave title and its wiggle done. I will be making the wiggle less severe though."}, {"post_id": 44337, "ts": "2026-08-10T01:04:44Z", "hours": 0.6575, "text": "git commit -m “Fixed bob’s healthbar, fixed button not re-appearing after first retry, gave retry button more wiggly style” best devlog oat? I think I’m gonna replace the passive-aggressive text with a voice-over and start hand-drawing all of the text; bouta suffer and it’s all my own fault🙏."}, {"post_id": 43110, "ts": "2026-08-08T06:16:34Z", "hours": 4.8125, "text": "Reset Button + Linux Trouble I made this reset button and it took hella long. I had no idea where to start, and it looks quite out of place because of how 9-piece buttons work. When you press it, the button disappears and the screen fades. After a second, bob fades back into existence, and wave 1 starts again. I also switched to Linux recently and got to troubleshoot Wakatime for an hour before realizing it just wasn’t installed and I needed more than just the Godot plugin. ( still love it though ) Next time I’m going to make the “Ouchie” text ( see in video ) rotate between a few different passive-aggressive comments , add text inside of the reset button, and fix the button not appearing after the first reset."}, {"post_id": 37417, "ts": "2026-07-30T03:41:24Z", "hours": 1.0375, "text": "I honestly don’t know what in the ever living I was doing in Krita, but I got this sick little animation done😁. Lowkey took a long time, but I’m pretty happy with the final result. Originally, I was going to have both of bob’s hands clutching his chest, but in the midst of drawing them, I realized that they no longer looked like arms lol. Don’t draw both arms of a stick figure clutching its chest, kids."}, {"post_id": 34860, "ts": "2026-07-25T22:11:49Z", "hours": 2.05, "text": "Today was kinda light and a little less complicated. I started off by creating a function that freezes all of the gloinks. Then I messed with tweens for the first time and created the animation you can see in the video. Lastly, I reused some of bob’s old sprites and put Xs over his eyes. Now he can actually die, yay!"}, {"post_id": 33266, "ts": "2026-07-23T01:34:23Z", "hours": 2.1939, "text": "Today I did quite a bit, and I’m very happy with what I got done. I fixed a few bugs, but most notably, I finished all of the waves and made them run consecutively. Next, I’m either going to work on the cutscenes or what happens when the player dies. I might even add a difficulty setting in the future too, who knows?"}, {"post_id": 30513, "ts": "2026-07-18T04:38:48Z", "hours": 2.0064, "text": "Today I started on the wave system and got three of them done. The clip below is each of them. The rest shouldn’t take long and I hope to get them done tomorrow. After that, I have to get them running in succession, but that may happen another day. I would also like peoples’ opinions on whether I should put hard boundary at the edge of the screen or penalize the player for every second they stay outside of the screen. What do you think?"}, {"post_id": 25743, "ts": "2026-07-10T05:38:22Z", "hours": 0.6281, "text": "Today I worked on a little animation for the start of each wave. It took me like an hour and it’s not very complicated. I had a lot of fun making it though and I hope to do some more little animations in the future."}, {"post_id": 21784, "ts": "2026-07-03T21:52:58Z", "hours": 1.0853, "text": "Today I didn’t do too much, but I am happy with what I got done. I got the health bars working on all of the Gloinks, and they should be fully functional now. I also fixed an issue with the bullet direction, where it was heading a little bit left of the mouse. Lastly, I added a few degrees of offset to the direction of the bullet."}, {"post_id": 21289, "ts": "2026-07-03T04:17:37Z", "hours": 1.1308, "text": "Today I mainly worked on getting bob to shoot and those bullets doing damage. Even though the Gloinks don’t have visible health bars yet, they still take damage and are deleted when they take enough damage; Even their projectiles can be killed by the bullet. While writing this I realized that the bullets weren’t being deleted, so I just fixed that. I also fixed an issue where the Pentagon’s projectiles were flying at supersonic speeds. I don’t think I did anything else though, but tomorrow I’ll try to find out why the bullets from bob’s gun aren’t heading straight to the mouse pointer."}, {"post_id": 17350, "ts": "2026-06-28T03:05:00Z", "hours": 1.4908, "text": "Today I worked on collisions and actually having the player take damage. I also created a health bar. Tomorrow I’ll add the health bar to the Gloinks and maybe even make the player’s gun functional."}, {"post_id": 14860, "ts": "2026-06-24T03:58:41Z", "hours": 2.4106, "text": "Yesterday, I got the Heptagon working; however, I couldn’t upload the devlog. I had some issues where when I moved my project from my laptop to my computer, Wakatime thought that I was working on a different project. It’s counting my time correctly now, but I still lost an hour and a half. I submitted a ticket and I hope they get to that soon. Today, I just copied the Hexagon’s code to the Octagon to make it shoot 5 mini gloinks. Tomorrow I’d like to start on the whole health and damage system, but I might take a short 1-day break to avoid losing motivation. If anybody has a similar issue with Wakatime, create a file named exactly “.wakatime-project” (Make sure that you have show file extensions enabled) and put it in your root directory. Then edit the file and make the first line the exact name (You can find this at hackatime.hackclub.com) of the project Wakatime has counted the majority of your time to."}, {"post_id": 13538, "ts": "2026-06-22T04:45:06Z", "hours": 0.7911, "text": "Today I didn’t do too much, but I was able to get the Pentagon working properly and added functionality to the Hexagon. Tomorrow I’ll work on the Heptagon and Octagon, and hopefully, I’ll get both of them done."}, {"post_id": 12926, "ts": "2026-06-21T05:01:43Z", "hours": 3.0122, "text": "Today I got a few things done. First was the “storyline”, in a text file I put together how I wanted the “story” to progress and kinda how the game and menus would be structured. Then I drew sprites for the 6 different enemies: The Triangle, Square, Pentagon, Hexagon, Heptagon, and Octagon (so unique ik). Each enemy is a little different in terms of health, movement speed, and abilities. Today I was able to get the Triangle, Square, Pentagon coded in, however, I have to work out some bugs in the pentagon. Tomorrow I’ll probably just be grinding out programming the rest of the enemies."}, {"post_id": 11523, "ts": "2026-06-18T20:20:59Z", "hours": 1.9808, "text": "Today I did a few things. I started off with finishing the walking animations, you can see them in this video. They took a while but it was fun. Then I worked on the rotating arm. The math was a little difficult so I had Claude explain it to me, but I still wrote it in myself. Lastly, I cleaned up the code a bit. Next time I work on this I’ll add the second arm to the arm sprite and either start working on enemies or make the gun shoot."}, {"post_id": 11094, "ts": "2026-06-18T04:22:24Z", "hours": 0.5808, "text": "Today I created the stick man character and gave him a few animations, most notably, the walking animations. Tomorrow I will clean up some of the animation frames because there are some random pixels in a few as well as drawing walking up and down animations. I’ll probably make him bigger too."}]...
|
Title: ShooterManGame by @RileyTheSane | Stardance Title: ShooterManGame by @RileyTheSane | Stardance
Devlogs:
Today I created the stick man character and gave him a few animations, most notably, the walking animations. Tomorrow I will clean up some of the animation frames because there are some random pixels in a few as well as drawing walking up and down animations. I’ll probably make him bigger too.
Today I did a few things. I started off with finishing the walking animations, you can see them in this video. They took a while but it was fun. Then I worked on the rotating arm. The math was a little difficult so I had Claude explain it to me, but I still wrote it in myself. Lastly, I cleaned up the code a bit. Next time I work on this I’ll add the second arm to the arm sprite and either start working on enemies or make the gun shoot.
Today I got a few things done. First was the “storyline”, in a text file I put together how I wanted the “story” to progress and kinda how the game and menus would be structured. Then I drew sprites for the 6 different enemies: The Triangle, Square, Pentagon, Hexagon, Heptagon, and Octagon (so unique ik). Each enemy is a little different in terms of health, movement speed, and abilities. Today I was able to get the Triangle, Square, Pentagon coded in, however, I have to work out some bugs in the pentagon. Tomorrow I’ll probably just be grinding out programming the rest of the enemies.
Today I didn’t do too much, but I was able to get the Pentagon working properly and added functionality to the Hexagon. Tomorrow I’ll work on the Heptagon and Octagon, and hopefully, I’ll get both of them done.
Yesterday, I got the Heptagon working; however, I couldn’t upload the devlog. I had some issues where when I moved my project from my laptop to my computer, Wakatime thought that I was working on a different project. It’s counting my time correctly now, but I still lost an hour and a half. I submitted a ticket and I hope they get to that soon. Today, I just copied the Hexagon’s code to the Octagon to make it shoot 5 mini gloinks. Tomorrow I’d like to start on the whole health and damage system, but I might take a short 1-day break to avoid losing motivation. If anybody has a similar issue with Wakatime, create a file named exactly “.wakatime-project” (Make sure that you have show file extensions enabled) and put it in your root directory. Then edit the file and make the first line the exact name (You can find this at hackatime.hackclub.com) of the project Wakatime has counted the majority of your time to.
Today I worked on collisions and actually having the player take damage. I also created a health bar. Tomorrow I’ll add the health bar to the Gloinks and maybe even make the player’s gun functional.
Today I mainly worked on getting bob to shoot and those bullets doing damage. Even though the Gloinks don’t have visible health bars yet, they still take damage and are deleted when they take enough damage; Even their projectiles can be killed by the bullet. While writing this I realized that the bullets weren’t being deleted, so I just fixed that. I also fixed an issue where the Pentagon’s projectiles were flying at supersonic speeds. I don’t think I did anything else though, but tomorrow I’ll try to find out why the bullets from bob’s gun aren’t heading straight to the mouse pointer.
Today I didn’t do too much, but I am happy with what I got done. I got the health bars working on all of the Gloinks, and they should be fully functional now. I also fixed an issue with the bullet direction, where it was heading a little bit left of the mouse. Lastly, I added a few degrees of offset to the direction of the bullet.
Today I worked on a little animation for the start of each wave. It took me like an hour and it’s not very complicated. I had a lot of fun making it though and I hope to do some more little animations in the future.
Today I started on the wave system and got three of them done. The clip below is each of them. The rest shouldn’t take long and I hope to get them done tomorrow. After that, I have to get them running in succession, but that may happen another day. I would also like peoples’ opinions on whether I should put hard boundary at the edge of the screen or penalize the player for every second they stay outside of the screen. What do you think?
Today I did quite a bit, and I’m very happy with what I got done. I fixed a few bugs, but most notably, I finished all of the waves and made them run consecutively. Next, I’m either going to work on the cutscenes or what happens when the player dies. I might even add a difficulty setting in the future too, who knows?
Today was kinda light and a little less complicated. I started off by creating a function that freezes all of the gloinks. Then I messed with tweens for the first time and created the animation you can see in the video. Lastly, I reused some of bob’s old sprites and put Xs over his eyes. Now he can actually die, yay!
I honestly don’t know what in the ever living I was doing in Krita, but I got this sick little animation done😁. Lowkey took a long time, but I’m pretty happy with the final result. Originally, I was going to have both of bob’s hands clutching his chest, but in the midst of drawing them, I realized that they no longer looked like arms lol. Don’t draw both arms of a stick figure clutching its chest, kids.
Reset Button + Linux Trouble I made this reset button and it took hella long. I had no idea where to start, and it looks quite out of place because of how 9-piece buttons work. When you press it, the button disappears and the screen fades. After a second, bob fades back into existence, and wave 1 starts again. I also switched to Linux recently and got to troubleshoot Wakatime for an hour before realizing it just wasn’t installed and I needed more than just the Godot plugin. ( still love it though ) Next time I’m going to make the “Ouchie” text ( see in video ) rotate between a few different passive-aggressive comments , add text inside of the reset button, and fix the button not appearing after the first reset.
git commit -m “Fixed bob’s healthbar, fixed button not re-appearing after first retry, gave retry button more wiggly style” best devlog oat? I think I’m gonna replace the passive-aggressive text with a voice-over and start hand-drawing all of the text; bouta suffer and it’s all my own fault🙏.
Started working on hand drawing all of the text, got the wave title and its wiggle done. I will be making the wiggle less severe though.
Finished redesigning the “Wave #” text, and I had to redo the outro animation. I had to find a balance between wiggly and seizure inducing bc the wiggly style is quite violent when scaled up. I might change it later… Does anybody know how to get time recorded with Lapse/Lookout added to your project here on Stardance?
I added fortnite storm but like red⛈️ and : a second larger health bar that appears when you leave the camera view the damage while outside the screen increases by one every time you take storm damage but resets when you re-enter the camera view I do think I went overboard with the vignette; I will probably be dialing it back later
I made the title screem and it works (necessary) also look what I figured out how to do: 🎉 Ⓜ️ ⭕
How do animators do it? I’ve been working on an animation for Bob’s backstory, and I’m losing the desire to ever touch an animation timeline again. I finished all of the animation frames and sound effects, but this isn’t the full thing yet because I’m still putting the entire animation together.
I added a bunch of sound effects, and the game just feels so much better now. After I finish sound effects, I will add a difficulty setting and make some small tweaks before shipping. Shipping feels so close yet so far.
You can now change the difficulty of the game! Below is a little preview of what the different difficulties look like in the last wave, and there is no sound because I forgot to enable it. The next thing I’ll work on is a scoring system. Hopefully I can get that done quickly because it is approaching the deadline yet again....
|
1792792130.2162519
|
1793396930.2162519
|
|
70012
|
Chip-8 Emulator by @Djd871 | Stardance
|
Djd871
|
1
|
21.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T02:04:55Z", "hours": 21.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "To commemorate what i’ve learnt in C++ thus far, I built a chip-8 emulator. A Chip-8 was originally a virtual machine designed to act as a beginner-friendly way to develop games for the COSMAC VIP, now in modern times, it is often used as a gateway project for both emulation and lower level programming languages. Overall, i had a wonderful time and i’m super happy i made this as my first C++ project. I definitely had a hard time trying to decipher as much code as possible purely from technical references or written articles, but that’s what made me even more proud of this achievement. To see and try what i’ve made, simply follow the download guide for the pre-loaded version in the README, or by extracting the .zip file in the demo link.", "repo": "https://github.com/DevDawson09/Chip-8-Emulator", "demo": "https://github.com/DevDawson09/Chip-8-Emulator/releases/download/v1.1.0/Chip-8-Windows-x64.Loaded.zip"}]...
|
[{"post_id": 81684, "ts": "202 [{"post_id": 81684, "ts": "2026-10-22T01:52:25Z", "hours": 1.8564, "text": "I FINISHED IT"}, {"post_id": 81464, "ts": "2026-10-21T11:12:33Z", "hours": 4.2536, "text": "I finally finished implementing all the opcodes needed for a chip-8 emulator. It took a while and i ended up having to review some of them to mimic the behaviour of the original COSMAC VIP chip8 emualtor but it can FINALLY, play pong :) (not well but). Note: due to the refresh rate of the display which i haven’t fully sorted out yet, you can’t see the ball but it is there."}, {"post_id": 81251, "ts": "2026-10-20T13:55:14Z", "hours": 4.98, "text": "I started working on implementing the opcodes for the emulator. Thank the lord for Timendus’s chip-8 test suite. Soon enough i should be able to run an actual game on it :)"}, {"post_id": 80935, "ts": "2026-10-19T09:06:51Z", "hours": 7.655, "text": "Got the Display working. Ngl I completely forgot to Devlog this stuff but I ended up having credit someone else to get the loadRom function working. Afterwards it took AGES to implement and configure SDL2 but at long last… It works"}, {"post_id": 80138, "ts": "2026-10-16T10:56:03Z", "hours": 2.3597, "text": "Trying to figure out how to read a .ch8 file (I do NOT understand what i’m doing 😭)"}]...
|
Title: Chip-8 Emulator by @Djd871 | Stardance
Dev Title: Chip-8 Emulator by @Djd871 | Stardance
Devlogs:
Trying to figure out how to read a .ch8 file (I do NOT understand what i’m doing 😭)
Got the Display working. Ngl I completely forgot to Devlog this stuff but I ended up having credit someone else to get the loadRom function working. Afterwards it took AGES to implement and configure SDL2 but at long last… It works
I started working on implementing the opcodes for the emulator. Thank the lord for Timendus’s chip-8 test suite. Soon enough i should be able to run an actual game on it :)
I finally finished implementing all the opcodes needed for a chip-8 emulator. It took a while and i ended up having to review some of them to mimic the behaviour of the original COSMAC VIP chip8 emualtor but it can FINALLY, play pong :) (not well but). Note: due to the refresh rate of the display which i haven’t fully sorted out yet, you can’t see the ball but it is there.
I FINISHED IT
Ships:
To commemorate what i’ve learnt in C++ thus far, I built a chip-8 emulator. A Chip-8 was originally a virtual machine designed to act as a beginner-friendly way to develop games for the COSMAC VIP, now in modern times, it is often used as a gateway project for both emulation and lower level programming languages. Overall, i had a wonderful time and i’m super happy i made this as my first C++ project. I definitely had a hard time trying to decipher as much code as possible purely from technical references or written articles, but that’s what made me even more proud of this achievement. To see and try what i’ve made, simply follow the download guide for the pre-loaded version in the README, or by extracting the .zip file in the demo link....
|
1793198933.5216117
|
1793285333.5216117
|
|
57738
|
My Cardy by @itsaperson | Stardance
|
itsaperson
|
0
|
2.05
|
0
|
[]
|
[{"post_id": 81682, "ts": "202 [{"post_id": 81682, "ts": "2026-10-22T01:22:15Z", "hours": 1.0008, "text": "Some touch ups on the pcb, made sure I’ve exported everything, and then uploaded to github for review! (I forgot to devlog this devlog was kinda done after approval oopsies just realised had an hour unlogged). Also updated the pcb for some positionings etc. Just minor tweaks but very effective. Also added the diamond thing for the led so that the led looks like a diamond!"}, {"post_id": 60770, "ts": "2026-09-03T11:14:03Z", "hours": 0.7344, "text": "Spent a while desinging the pcb, after got everything wired up, took wayy to long trying to position everything correctly. As well as making everything look nice, but I think it was worth it!"}, {"post_id": 60738, "ts": "2026-09-03T09:37:12Z", "hours": 0.3192, "text": "Went on the stardance hardware resources section, and I saw that it gave as an example for the funding first tier a “pcb buisiness card”. At first, I was curious to see what it was. After some research, I found out that it was… A buisiness card. Wow! I got really interested, and wanted to make my own, but I didn’t know where to start. Then I realised that hackclub basically has tutorials on everything. So I went on the internet, and searched “pcb business card hackclub”. Sure enough, there it was! https://jams.hackclub.com/jam/hacker-card . So I followed through the tutorial, and managed to finish making the schematics. Now it’s time for the pcb"}]...
|
Title: My Cardy by @itsaperson | Stardance
Devlog Title: My Cardy by @itsaperson | Stardance
Devlogs:
Went on the stardance hardware resources section, and I saw that it gave as an example for the funding first tier a “pcb buisiness card”. At first, I was curious to see what it was. After some research, I found out that it was… A buisiness card. Wow! I got really interested, and wanted to make my own, but I didn’t know where to start. Then I realised that hackclub basically has tutorials on everything. So I went on the internet, and searched “pcb business card hackclub”. Sure enough, there it was! https://jams.hackclub.com/jam/hacker-card . So I followed through the tutorial, and managed to finish making the schematics. Now it’s time for the pcb
Spent a while desinging the pcb, after got everything wired up, took wayy to long trying to position everything correctly. As well as making everything look nice, but I think it was worth it!
Some touch ups on the pcb, made sure I’ve exported everything, and then uploaded to github for review! (I forgot to devlog this devlog was kinda done after approval oopsies just realised had an hour unlogged). Also updated the pcb for some positionings etc. Just minor tweaks but very effective. Also added the diamond thing for the led so that the led looks like a diamond!...
|
1792720047.7148263
|
1793324847.7148263
|
|
68871
|
Simple Flight Controller by @yakshith_kommineni | Simple Flight Controller by @yakshith_kommineni | Stardance...
|
yakshith_kommineni
|
0
|
12.41
|
0
|
[]
|
[{"post_id": 81677, "ts": "202 [{"post_id": 81677, "ts": "2026-10-22T00:54:19Z", "hours": 4.1278, "text": "Worked on finalizing PCB routing, sourcing parts on LCSC and some silkscreen work."}, {"post_id": 78194, "ts": "2026-10-09T22:44:50Z", "hours": 8.2842, "text": "worked on the schematic and some pcb for my flight computer"}]...
|
Title: Simple Flight Controller by @yakshith_kommi Title: Simple Flight Controller by @yakshith_kommineni | Stardance
Devlogs:
worked on the schematic and some pcb for my flight computer
Worked on finalizing PCB routing, sourcing parts on LCSC and some silkscreen work....
|
1793127075.0512705
|
1793731875.0512705
|
|
26068
|
Crunchyroll Audio Helper Extension by @AndyNoob | Crunchyroll Audio Helper Extension by @AndyNoob | Stardance...
|
AndyNoob
|
2
|
15.0
|
99
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T00:45:52Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Crunchy Audio Helper v0.3.0 ship - In this ship, I fixed a extension error with Crunchyroll’s latest update, and also re-introduced compatibility with the Croptix extension! - Crunchy update Previously, the extension relies on calling/accessing obfuscated keys on Crunchyroll webpage internals. Since those keys are subject change whenever the compiler feels like it, I had to switch to a scanning based system to search for the key name rather than hard coding them. - Croptix V2 Recently, Croptix released version 2.0. Unfortunately, the author decided to force the video player to use the Shaka media engine instead of the default Bitmovin on vanilla Crunchy, which means it broke my extension. (And then the author left my PR to revert that hanging for like a week, only to close it) - Well, unfortunately, that meant I had to dig into the webpacked code once again. The thing with Shaka is that their developers decided to obfuscated the living hell out of their code… So I couldn’t just swap the API calls that the extension had been using…….. - Welp, it is what it is… at least it’s compatible once more.", "repo": "https://github.com/AndyNoob/crunchyroll-audio-helper", "demo": "https://chromewebstore.google.com/detail/crunchyroll-audio-extensi/mnojgeohmdbfmlaejggmknkoijbaeaif"}, {"ship_num": 2, "ts": "2026-07-06T05:10:04Z", "hours": 10.0, "multiplier": 9.56, "payout": 99, "blessing": "neutral", "text": "Well, it has been a fun 10 hours of reverse engineering Crunchyroll, but the extension/userscript is (probably) ready! I supposed the most annoying part is figuring out how to reliably inject code onto the page. Afterwards, it was the matter of changing the offset on the raw audio data. If you want to try this out, it’s available on Chrome and as a userscript for Tampermonkey 🥳. Otherwise, GIF and screenshots are available.", "repo": "https://github.com/AndyNoob/crunchyroll-audio-helper", "demo": "https://chromewebstore.google.com/detail/crunchyroll-audio-extensi/mnojgeohmdbfmlaejggmknkoijbaeaif"}]...
|
[{"post_id": 81670, "ts": "202 [{"post_id": 81670, "ts": "2026-10-22T00:36:05Z", "hours": 1.6256, "text": "It’s freaking instant now haha! Applying an offset will reload the player. - Had to do some bs trickery to get Shaka to do my bidding though. Reference: code report on Shaka generated by deepseek-v3-flash , which managed to catch a very specific pattern in the engine. - The engine, upon seeking, will check its copies of DOM’s SourceBuffer for its loaded range. By hijacking that value, one can make Shaka reload the buffer entirely, with the new offset applied. - That’s the gist of it. I pray that Crunchy doesn’t update Shaka anytime soon or I will cry…"}, {"post_id": 81492, "ts": "2026-10-21T14:15:58Z", "hours": 1.2264, "text": "Contrary to the last devlog, I was not, in fact, that close. - Anyways I actually did it now. It turned out to be slightly easier than I thought since I could just access the native SourceBuffer directly. - Still has an issue of needing the buffers to run out before the offset is actually applied, unfortunately"}, {"post_id": 81351, "ts": "2026-10-20T22:30:43Z", "hours": 0.7364, "text": "js got rated limited by crunchy while trying to fix compat with the croptix extension. - for context croptix’s latest recode to v2 switched the default media engine from bitmovin to shaka, which broke this extension (and dropped my user count by 20). the author of croptix isn’t responding to my PR to switch back to bitmovin so i guess i just gotta add shaka support. - unfortunately that is not going so well……….. AHHHHHHHHHHHHHH i was so close too"}, {"post_id": 79414, "ts": "2026-10-13T21:19:47Z", "hours": 1.8683, "text": "AHHHHHHHHHHHHH CRUNCHYROLL WHYY - I really need a better workflow… it’s annoying to switch between Webstorm, then extension refresh tab, then Crunchyroll every time I make a change : - Anyways, since crunchy wants to update their player for no reason, the extension… BROKE. So, I decided to stop hardcoding the obfuscated variables and instead search for them like I do with the modules. - Now, this relies on the unobfuscated names being stable/consistent. If that breaks, I will cry. - Also I literally could not find a interesting thing to take a screenshot of. The workflow is actually so boring…"}, {"post_id": 23290, "ts": "2026-07-06T04:54:25Z", "hours": 1.6928, "text": "Did some cleanup on the code to make it look like I know what I am doing 😆. Not much to show so I’ll just do a screenshot of the tampermonkey script header?"}, {"post_id": 21121, "ts": "2026-07-02T22:27:37Z", "hours": 1.8378, "text": "Alrighty! The audio offset application is actually instant now! Unfortunately, I had to enlist some help from Claude to get the CMAF media data parsing/editing to get it to work : . But, it works like a charm now. Yay. Essentially, now the extension stores the buffered audio, and when offset changes, directly edits the time offset value in the cloned raw audio data (which is in the CMAF format), clears the old buffer, and then adds our cloned version. This also means I have to rewrite the README and re-record the DEMO 🫠. (also, the Jetbrains README editor is lowk goated)"}, {"post_id": 19480, "ts": "2026-06-30T20:11:45Z", "hours": 0.4333, "text": "Made the icon and added some build scripts to automatically export as PNG from the source photoshop file (which I made with Photopea). Took a minute to refine it. It looks a bit weird zoomed out and being so pixelated, but you can tell it’s my extension at least"}, {"post_id": 18085, "ts": "2026-06-29T02:32:45Z", "hours": 2.7017, "text": "Well, I got the extension loaded as a userscript in Tampermonkey. But I can’t seem to figure out why it wouldn’t auto install my script from the Github raw user content page"}, {"post_id": 16467, "ts": "2026-06-26T20:15:11Z", "hours": 1.2333, "text": "Ok. Dug into Crunchyroll’s code a bit more and maybe found a way to apply the offset faster instead of waiting for the previous buffers to run out. The video doesn’t really make it clear (recording freezes because DRM protection), but the audio updated when the timeline jumped. The delay was about a few seconds. Gonna go test tis on Chrome now 🙏."}, {"post_id": 16060, "ts": "2026-06-26T03:01:38Z", "hours": 1.0486, "text": "Managed to style this thing. Actually works pretty well! I wanted to get rid of those ugly up/down arrows, but it’s really annoying to get rid of for some reason… Whatever. Probably will upload this both as an extension and as a Tampermonkey user script."}, {"post_id": 15999, "ts": "2026-06-25T23:50:32Z", "hours": 1.4539, "text": "First devlog! In the past 4 hours or so (poking the website doesn’t count towards Hackatime unfortunately), I managed to monkey patch Crunchyroll’s web packed audio buffering code. After that, I figured out how to force the video player to error out so that it reloads itself. So, the main functionality of the helper extension is done (I think)! Other than that, I managed to inject a little button into the video player :). Credits to Google Material Icons. Gonna go make this button work now… yay."}]...
|
Title: Crunchyroll Audio Helper Extension by @Andy Title: Crunchyroll Audio Helper Extension by @AndyNoob | Stardance
Devlogs:
First devlog! In the past 4 hours or so (poking the website doesn’t count towards Hackatime unfortunately), I managed to monkey patch Crunchyroll’s web packed audio buffering code. After that, I figured out how to force the video player to error out so that it reloads itself. So, the main functionality of the helper extension is done (I think)! Other than that, I managed to inject a little button into the video player :). Credits to Google Material Icons. Gonna go make this button work now… yay.
Managed to style this thing. Actually works pretty well! I wanted to get rid of those ugly up/down arrows, but it’s really annoying to get rid of for some reason… Whatever. Probably will upload this both as an extension and as a Tampermonkey user script.
Ok. Dug into Crunchyroll’s code a bit more and maybe found a way to apply the offset faster instead of waiting for the previous buffers to run out. The video doesn’t really make it clear (recording freezes because DRM protection), but the audio updated when the timeline jumped. The delay was about a few seconds. Gonna go test tis on Chrome now 🙏.
Well, I got the extension loaded as a userscript in Tampermonkey. But I can’t seem to figure out why it wouldn’t auto install my script from the Github raw user content page
Made the icon and added some build scripts to automatically export as PNG from the source photoshop file (which I made with Photopea). Took a minute to refine it. It looks a bit weird zoomed out and being so pixelated, but you can tell it’s my extension at least
Alrighty! The audio offset application is actually instant now! Unfortunately, I had to enlist some help from Claude to get the CMAF media data parsing/editing to get it to work : . But, it works like a charm now. Yay. Essentially, now the extension stores the buffered audio, and when offset changes, directly edits the time offset value in the cloned raw audio data (which is in the CMAF format), clears the old buffer, and then adds our cloned version. This also means I have to rewrite the README and re-record the DEMO 🫠. (also, the Jetbrains README editor is lowk goated)
Did some cleanup on the code to make it look like I know what I am doing 😆. Not much to show so I’ll just do a screenshot of the tampermonkey script header?
AHHHHHHHHHHHHH CRUNCHYROLL WHYY - I really need a better workflow… it’s annoying to switch between Webstorm, then extension refresh tab, then Crunchyroll every time I make a change : - Anyways, since crunchy wants to update their player for no reason, the extension… BROKE. So, I decided to stop hardcoding the obfuscated variables and instead search for them like I do with the modules. - Now, this relies on the unobfuscated names being stable/consistent. If that breaks, I will cry. - Also I literally could not find a interesting thing to take a screenshot of. The workflow is actually so boring…
js got rated limited by crunchy while trying to fix compat with the croptix extension. - for context croptix’s latest recode to v2 switched the default media engine from bitmovin to shaka, which broke this extension (and dropped my user count by 20). the author of croptix isn’t responding to my PR to switch back to bitmovin so i guess i just gotta add shaka support. - unfortunately that is not going so well……….. AHHHHHHHHHHHHHH i was so close too
Contrary to the last devlog, I was not, in fact, that close. - Anyways I actually did it now. It turned out to be slightly easier than I thought since I could just access the native SourceBuffer directly. - Still has an issue of needing the buffers to run out before the offset is actually applied, unfortunately
It’s freaking instant now haha! Applying an offset will reload the player. - Had to do some bs trickery to get Shaka to do my bidding though. Reference: code report on Shaka generated by deepseek-v3-flash , which managed to catch a very specific pattern in the engine. - The engine, upon seeking, will check its copies of DOM’s SourceBuffer for its loaded range. By hijacking that value, one can make Shaka reload the buffer entirely, with the new offset applied. - That’s the gist of it. I pray that Crunchy doesn’t update Shaka anytime soon or I will cry…
Ships:
Well, it has been a fun 10 hours of reverse engineering Crunchyroll, but the extension/userscript is (probably) ready! I supposed the most annoying part is figuring out how to reliably inject code onto the page. Afterwards, it was the matter of changing the offset on the raw audio data. If you want to try this out, it’s available on Chrome and as a userscript for Tampermonkey 🥳. Otherwise, GIF and screenshots are available.
Crunchy Audio Helper v0.3.0 ship - In this ship, I fixed a extension error with Crunchyroll’s latest update, and also re-introduced compatibility with the Croptix extension! - Crunchy update Previously, the extension relies on calling/accessing obfuscated keys on Crunchyroll webpage internals. Since those keys are subject change whenever the compiler feels like it, I had to switch to a scanning based system to search for the key name rather than hard coding them. - Croptix V2 Recently, Croptix released version 2.0. Unfortunately, the author decided to force the video player to use the Shaka media engine instead of the default Bitmovin on vanilla Crunchy, which means it broke my extension. (And then the author left my PR to revert that hanging for like a week, only to close it) - Well, unfortunately, that meant I had to dig into the webpacked code once again. The thing with Shaka is that their developers decided to obfuscated the living hell out of their code… So I couldn’t just swap the API calls that the extension had been using…….. - Welp, it is what it is… at least it’s compatible once more....
|
1793101850.5809581
|
1793188250.5809581
|
|
70695
|
Space adventure by @Kiwibrid | Stardance
|
Kiwibrid
|
0
|
2.77
|
0
|
[]
|
[{"post_id": 81669, "ts": "202 [{"post_id": 81669, "ts": "2026-10-22T00:04:04Z", "hours": 1.4675, "text": "Continued to branch and expand the paths of my space adventure, I have now added the first ending."}, {"post_id": 81357, "ts": "2026-10-20T23:29:45Z", "hours": 1.3033, "text": "I have just begun my space asteroid adventure, I decided to add Mr.Beast in, for some reason. The adventure will not be a normal one, by any means."}]...
|
Title: Space adventure by @Kiwibrid | Stardance
D Title: Space adventure by @Kiwibrid | Stardance
Devlogs:
I have just begun my space asteroid adventure, I decided to add Mr.Beast in, for some reason. The adventure will not be a normal one, by any means.
Continued to branch and expand the paths of my space adventure, I have now added the first ending....
|
1793202817.3494122
|
1793807617.3494122
|
|
40589
|
DoFresh by @promise | Stardance
|
promise
|
1
|
101.8
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-14T00:30:17Z", "hours": 99.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? This is DoFresh, a refreshing task manager that turns consistency into records and graphs! What was challenging? On top of the various bugs that arose on the way to refine and polish various features, one challenge in creating DoFresh was designing and implementing the Track system. Firstly, the logic system surrounding behind user completion and daily refreshing was complex, especially when considering the users didn’t visit the website every day. Secondly, I strove to make graphs and tracking widgets that were self-explanatory and simple but stylish and understandable, and I had to refactor the Track page completely after I changed my data storage system, changing the types of charts and how each was organized. What are you proud of? I’m quite proud of how the website looks, as I’m really artistically untalented and never really got around to learning CSS or aesthetics or color theory. The purple prettiness of DoFresh is really an achievement for me, and I’m especially proud of how much design and UI/UX consideration I learned through this app. Now, when I open websites, I look at how they design their login pages, where they put their collapsible sidebar icons, and what headings they use—sideways, click-collapse, fixed above, sticky—and why. Another thing I’m quite proud of is the AI agent I personalized and implemented in the Chat page. I wired the API call system for Flask, then Django, with many small bugs for both scenarios, connecting the Python backend with HuggingFace’s free models. Then, two days after I began wrapping up and testing the site, HuggingFace removed its free tier altogether. (●__●) Thus I switched to using GroqCloud as a platform, making a new API key, and set to further refining how the bot understood the user’s completion data, programming it to fit DoFresh’s philosophy and purposes. What should people know so they can test your project? You can go into https://dofresh.onrender.com/ and log in with the credentials stardance_tester + stardance_tester (username + pw both) if you want an example with pre-filled data and records! Please note that (free tier) Render takes about ~40 seconds to load and may spin down to inactiveness if you leave it open and untouched.", "repo": "https://github.com/PurpleSummit/DoFresh", "demo": "https://dofresh.vercel.app"}]...
|
[{"post_id": 81668, "ts": "202 [{"post_id": 81668, "ts": "2026-10-22T00:01:39Z", "hours": 0.8292, "text": "added a custom user creation form to enable flexibility and clean error messages when signing up; debugged the sign-up page, allowed form box to expand, and added password confirmation box and feedback on account security"}, {"post_id": 80866, "ts": "2026-10-19T03:11:43Z", "hours": 1.0806, "text": "ATTENTION, SHIPWRIGHTS!! HERE, PLEASE!! HERE!! READ BELOW!!! i couldn’t edit the ship message’s contents, but hopefully you see this message! here are some things about the (new) ship… ▸ the new link for my project is here: https://dofresh.vercel.app . please use the credentials stardance_tester for both the username and the password!! THIS HAS ALL THE DATA FOR THE ACCOUNT, OR ELSE YOU NEED TO CREATE YOUR OWN DATA FOR YOUR ACCOUNT! ▸AI was NOT used for my devlogs, AI declaration, ship message, or README. i copied ASCII art, GitHub commit messages, and stylized font to the devlogs, not AI-generated summaries. i wrote my AI declaration in a separate Google Docs because my computer tended to restart and update at the wrong times. i wrote my ship message by myself! i used a part of my app description for the README, which, again, I wrote by myself. i have screenshots of my work below. anyways, for the devlog.. fixed the chat page so that a message can’t be sent while another is still generating!! debugged record() not establishing the variable recent_completed_pair before using it in the else-if conditional"}, {"post_id": 80287, "ts": "2026-10-17T03:50:49Z", "hours": 0.8883, "text": "debugged the refreshing lists not appearing at the sidebar debugged the ‘i did list’ not working debugged subtasks not appearing changed hosting platform from Render to Vercel! https://dofresh.vercel.app/ new link: https://dofresh.vercel.app/"}, {"post_id": 79439, "ts": "2026-10-14T00:10:48Z", "hours": 1.7119, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #39 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ hopefully the last devlog!! today, my very artistically talented friend gave me some very nice feedback about the login page, both directly and indirectly. sooo… debugged the list titles appearing as ‘undefined’ modified the login and sign-up pages!! aren’t they just so pretty [totally not similar]"}, {"post_id": 79078, "ts": "2026-10-12T16:12:33Z", "hours": 2.3017, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #38 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ with the Free tier for Hugging Face being closed, I switched to using Groq for API calls!! refined the chat feature by adding previous message context and restructuring the user task data for the migration to django fixed sidebar sign out button toggle and Chat textbox size changing debugged track page not appearing edited looks of completion tracking graph added task list appearing with breaks for task page tooltips"}, {"post_id": 78888, "ts": "2026-10-11T21:41:51Z", "hours": 0.8911, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #37 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ added formatting and HTML tag support for article page debugged 0/0 tasks and 0/0 list completion modal, which spiraled to infinity added NASA pictures for article iamges"}, {"post_id": 78499, "ts": "2026-10-11T00:12:26Z", "hours": 0.9383, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #36 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ fixed 500 Service Error for record() in views.py, optimizing iteration through list data and refining logic!!"}, {"post_id": 78238, "ts": "2026-10-10T02:44:32Z", "hours": 2.3283, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #35 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ now i really want to start shipping…! and submitting… please… today, sitting in the subway & waiting for/on my train, i refactored the advice page with a new Article class to dynamically display articles and created a new article detail page! updated advice.html to loop through articles, all objects of class Article in models.py, and display them dynamically added article.html template and the URL article/<int:article_id> added new CSS styles for article layout and text formatting (especially pre HTML blocks) i tried to upload images for the article cards into the database, but in production, i would need to find a cloud service provider (…and i need more )… so i reversed my hard work and uploaded the images to the static folder instead. additionally: moved the welcome modal and the refreshing notification/progress report modal HTML from index.html to layout.html so that the users would be able to see them in other pages of the website & debugged this debugged / cleaned up the logic and code for the tracking page’s fill-when-blank graphics."}, {"post_id": 77984, "ts": "2026-10-09T03:42:34Z", "hours": 4.4894, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #34 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ created + debugged completeRefreshingTask() from nonfunctional buggy to visibly seamless condition. debugged the function call’s missing button parameter at the click event handler. simplified idsToChange array composition, debugged parent to-do box HTML getting, added view.py function for backend reflection and change. added and debugged support for completing and matching subtasks & parent tasks.added animations and implemented/fixed logic structure of function. implemented, improved, and debugged task completion function components and edge case logic. tracked down and debugged one case of subtask handling error in addHTMLCompletedRefreshingTask() by changing the original JS key ‘subTasks’ to ‘subtasks’ and ‘parentTask’ to ‘parent_task’. added CSRF tokens to layout.html to enable POST methods for the general record/ and setLastDate() functions. debugged track.js to solve naming conflict in repeated uploads. added confetti and fireworks effect to task completion animations. moved Lumi from top of screen to stay in the sidebar for the user’s continuous view. debugged parent tasks switching the activeness of subtasks. added a ‘Refreshing tasks completed:’ counter at the top of the I Did List added today’s tasks to update the Refreshing Tasks Completed count. enabled the count text to collapse with the sidebar list. fixed some remaining localStorage-reliant code and the welcome modal’s sequencing. fixed Lumi position in login page. Debugged last_accessed_date being set in an empty user state."}, {"post_id": 75779, "ts": "2026-10-01T02:54:37Z", "hours": 2.6497, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #33 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ implemented set_last_date API endpoint and update last accessed date logic in views. refactored date handling in layout.js and script.js and designed date structure (ISO string format) to free conflict in regional time changes. migrated task completion recording function to Django (work-in-progress, not tested thoroughly). debugged and refactored the completion of tasks and updating completed tasks for improved performance and smooth HTML animation sequences & transitions. [added a new boolean condition to updateCompletedDiv so that it wouldn’t need to re-add the tasks every time it ran. yay performance improvement!]"}, {"post_id": 75397, "ts": "2026-09-29T23:02:30Z", "hours": 1.1839, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #32 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ debugged I Did List integration with Django; working as usual now. re-implemented Chat functions [display, Django Message models, and API calls]. started layout.js’s lastAccessedDate and refreshing date record functions with Django migration."}, {"post_id": 75054, "ts": "2026-09-29T00:39:37Z", "hours": 3.4697, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #31 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ added edit task, edit details, and remove task functionalities. implemented Django migration for track page!! added mock test data and confirmed that the track page works edited subtasks attribute to lists and edited views.py for Task objects to debug duplicate ID tasks. the django migration is going smoothly!! i’m quite proud of myself for getting editTask() and editDetails() in less than 5 minutes each. done in one go!!"}, {"post_id": 73437, "ts": "2026-09-25T02:47:56Z", "hours": 1.0464, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #30 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged addTodoBox() implementation with fetch()… turns out response.json() was missing the ()!! implemented removeTodoBox() and addTask() with matching Python views and functions getting there… kind of getting there… i need to finish this off…"}, {"post_id": 72916, "ts": "2026-09-24T00:56:49Z", "hours": 1.4336, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #29 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged to-do list and task HTML appearance with JavaScript fetch and new Django interactions established new data/fetch/global constant variables throughout script.js debugged I Did list’s usage of localStorage enabled adding lists and renaming lists with Django functions!"}, {"post_id": 72466, "ts": "2026-09-23T01:00:10Z", "hours": 5.9472, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #28 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ on the way to a full switch to Django: added login, logout, and signup views and functionalities to allow different users & management through the admin page working through bridging original usage of ‘localStorage’ and Django’s SQLite database—replacing many JavaScript functions with fetch and API calls drafted task, to-do list, and chat messages’ models in models.py fairly completed the HTML appearance for the JS -> Python fetch switch. app correctly generates the to-do lists, tasks, completed tasks, completed refreshing tasks, buttons, and subtasks"}, {"post_id": 68937, "ts": "2026-09-16T02:24:10Z", "hours": 3.2589, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #27 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ refactored ‘onclick’ event listeners to conditionals and casework using event.target.nearest(). removed setListeners() entirely, saving memory leaks and unneeded recursive usage of setListeners(). uploaded the app on Render (for free!!)!! changing DoFresh platform from Flask to Django! initialized app + project foundations, changed settings, established urls, views, and models -> all task-related functions are working. still work-in-process for API calls and the backend."}, {"post_id": 67643, "ts": "2026-09-13T19:58:03Z", "hours": 2.2042, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #26 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added smooth collapsing/expanding animations for task addition and removal nested completed-for-good tasks in the completed tasks div and debugged the task ID retrieval in script.js debugged task completion handling and every small issue arising with each update and tweak"}, {"post_id": 64573, "ts": "2026-09-09T02:37:42Z", "hours": 5.3239, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #25 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added zero-state filler graphics to the track page! replaced querySelector with getElementById and getElementsByClassName for better performance, speed, and efficiency all around the app. added filler div for chat UI lots of minor tweaks to UX in the task add-remove-check sequence of the dashboard page"}, {"post_id": 61236, "ts": "2026-09-04T02:16:54Z", "hours": 4.9286, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #24 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged removal and creation of tasks with refactored js localstorage system! added zero state filler for main page if no boxes are present. debugged the different day headers showing up in the ‘I Did!’ list so that they don’t appear when no tasks are there at all. filler image work-in-progress. modified task creation to initialize with empty task strings instead of default text. cleaned up unused code and improved readability."}, {"post_id": 57019, "ts": "2026-08-29T02:54:53Z", "hours": 0.8256, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #23 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added headers and div s for the different completion dates in the I Did List implemented date formatting functions in script.js and organized/debugging the display and orientation of I Did list items so that both refreshing and standard, completed-today and completed-previously tasks would appear correctly."}, {"post_id": 56357, "ts": "2026-08-28T03:17:22Z", "hours": 8.3, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #22 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added streak activity chart, maximum streak, and longest active streak widgets to the track v.2 page! implemented ‘I Did List’ to keep track of completed tasks with date tags. keeps track of refreshing tasks’ completion over 1 week and all of the standard task completions on a collapsible sidebar in the dashboard. there are a lot of things to organize when dealing with dates… ISO date format, JS dateString format, parsing into milliseconds for comparison, etc. give me my strawberry coding notebook 🥲🥲 at least i’m having fun"}, {"post_id": 51180, "ts": "2026-08-20T18:00:30Z", "hours": 3.5881, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #21 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ day 2 of refactoring the whole track system… added activity heatmap chart after refactoring task completion chart implemented an activity heatmap to visualize task completion over time created a system of div s and span s for a “Github heatmap” orientation. added Bootstrap tooltips to display more information. much CSS effort was invested in accessibility + making a clean scrolling system and the weekday/month grid"}, {"post_id": 50666, "ts": "2026-08-19T22:56:32Z", "hours": 2.6619, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #20 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ created a blinking passive mode animation for Lumi refactored setLumiCostume function to loop the blinking animation without pause or transition effects (work in progress to make smoother!) decided to refactor track !! 600 lines of code… hopefully it’ll come alive again… added chartCompletion function to show number of completed tasks across days. JavaScript dynamics and Chart.js, CSS to create a responsive grid for the track dashboard, and HTML to reorder elements whoo"}, {"post_id": 49892, "ts": "2026-08-18T21:09:16Z", "hours": 1.6903, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #19 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ went through the whole process of editing the jumping animation again so that it would align better with the existing static character… yay… 🥹🥹 added lumi to the top of the to-do list and added animation for task completion"}, {"post_id": 49316, "ts": "2026-08-18T02:05:03Z", "hours": 0.4831, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #18 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added to-do list interaction to progress circle. debugged and refactored refresh notification modal display logic. designing time!! work in progress: a gamification (?) system and a star icon. say hi to lumi!! i did NOT spend 26 minutes on this… that’s just on the debugging… please show lumi some love and affectionate feedback!! i’ve never animated anything in my life before. ⭐ 💌"}, {"post_id": 48614, "ts": "2026-08-17T02:34:54Z", "hours": 2.84, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #17 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added new modal to pop up with ‘it’s a new day!’ and completion information. work in progress. added progress circle animations added a completedDate portion to standard to-do tasks so that daily reports can be yielded enabled tooltips for hovering over sidebar navigation updated styles for various components brainstorming several design ideas…"}, {"post_id": 47844, "ts": "2026-08-16T02:07:37Z", "hours": 2.4144, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #16 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged preservation and correction of chart generation settings (i.e. no weekly history with monthly chart type) adjusted color schemes and area fill for charts added dropdown task menus in track page for subtask organization and access enabled the “mainstream” task to be clicked without enabling dropdown, instead relying on hover to toggle dropdown menu note: the data is fake! i haven’t been doing the stardance challenge since may ;)"}, {"post_id": 47233, "ts": "2026-08-15T00:47:56Z", "hours": 1.96, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #15 – shoot for the stars like 📸 ˚₊‧ ଳ ‧₊˚ ⋅ debugged completion and re-activation of both subtasks and “mainstream” tasks! fixed subtask element selection in different task-controlling functions; improved localStorage handling for task completion and prevented duplicate entries. the long-awaited UI update!! used a free gradient as a background, edited opacity and blur in layout.css. changed color schemes further and added glassy / transparency aesthetic to to-do boxes. debugged the case where task dropdown menus didn’t disappear when other tasks were clicked!! small UX updates that make life significantly less frustrating. (small when they’re there, big when they’re not… guys… i’m a totally unartistic soul and a coder… ui/ux designers please save me!!! we love you 💖💖)"}, {"post_id": 46381, "ts": "2026-08-13T15:37:45Z", "hours": 1.2958, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #14 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged completion and re-activation of subtasks and “mainstream” tasks. fixed subtask element selection in functions; improved localStorage handling for task completion and prevented duplicate entries!"}, {"post_id": 45971, "ts": "2026-08-12T20:05:01Z", "hours": 1.8119, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #13 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ lucky number #13… i’m certainly suffering because of the subtask changes… 😄 added CSS and adjusted JavaScript to prevent disabling accordion collapse (conflict with new task dropdown) added CSS to task dropdown for hover-appear features and styling. refactored JavaScript: enabled proper removal and completion of tasks + subtasks! if a “mainstream” task is removed, so are all its substacks. a substack is removed cleanly. similarly, if an active “mainstream” task is completed, so are all of its subtasks. if it’s recovered from completion, however, the subtasks remain completed."}, {"post_id": 45430, "ts": "2026-08-11T21:19:26Z", "hours": 3.2161, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #12 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ updated CSS styles for buttons and task elements to improve layout and aesthetics: changed button styles from Bootstrap’s primary blue to custom logo purple added dropdown menus for tasks for another layer of safety in deletion added subtasks! (major change… help…) adjusted localStorage interactions, data structure, HTML/CSS code, and JavaScript logic for subtask management. improved user experience by adding focus and click event listeners for task editing and subtasks. had to decide whether to nestle subtasks within their parent tasks or by themselves in localStorage. finally settled on keeping all tasks on the same level for the sake of accessing them easily—instead, each subtask has a parentTask key, and a “mainstream” task has an array of their substack IDs."}, {"post_id": 44913, "ts": "2026-08-10T23:48:07Z", "hours": 1.9881, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #11 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ lots of small updates for this devlog. added loading spinner to chat function. updated and debugged styles—padding, sidebar, the body moving instead of overlapping with the expanded sidebar. updated chat message time logging. it’s the small things that matter… ;-;"}, {"post_id": 44371, "ts": "2026-08-10T02:46:29Z", "hours": 4.8058, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #10 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ heavily edited and debugged the new sidebar. adjusted previous javascript and html to accommodate it: updated padding and margin styles for better alignment. refactored layout structure to improve sidebar functionality and aesthetics. added JavaScript functionality for sidebar toggle and dynamic list generation in layout.js. removed unnecessary sidebar code and adjusted layout accordingly. implemented typewriter effect for generated chat responses! ⌨️"}, {"post_id": 42901, "ts": "2026-08-07T21:07:05Z", "hours": 2.0761, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #9 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ refactored chat response handling and improved error handling/user display. debugged empty-space messages for home page. updated sidebar navigation link UI and enhanced layout structure."}, {"post_id": 41699, "ts": "2026-08-06T02:45:42Z", "hours": 4.6119, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #8 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added chat message storage and retrieval with a sql database! includes a refresh function w/ a safety modal improved chat UI [slightly, i really need to improve the entire app’s UI. designers help me. i’m aesthetic but i need to learn web UI ㅠ]"}, {"post_id": 40970, "ts": "2026-08-04T20:59:32Z", "hours": 3.9067, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #7– shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ attempting to connect huggingface’s ai models to dofresh as backend api have attempted for 3 hours and 52 minutes and success!! need to refine formatting, token length, and css styling, but the backend is connected and running."}, {"post_id": 39230, "ts": "2026-08-02T01:56:29Z", "hours": 0.8717, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #6 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added dynamic display of advice articles [wip] updated advice HTML structure and CSS for improved layout"}, {"post_id": 38596, "ts": "2026-08-01T02:25:26Z", "hours": 0.8856, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #5 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added HTML and CSS template for the advice page, which will feature a series of blogs offering advice on productivity, mental health, and consistent growth [based on personal experiences] considering using free AI APIs to create an interactive analysis/support chatbot… please recommend me some free sources if you know any!! ❤️"}, {"post_id": 37637, "ts": "2026-07-30T14:53:42Z", "hours": 1.9881, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #4 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ each task has a collapsible ‘details’ textarea! (i) modified HTML and CSS to accommodate changes (ii) modified JavaScript [mostly the .parentElement locations] to adjust to structure (iii) disabled space-key toggle so that the user’s typing wouldn’t be interrupted updated the track page’s sidebar from position: fixed; to position: relative; and juggled around CSS + CSS to restore the page structure debugged: the fill-if-blank text now appears only once, even when a completed task is deleted and the number of active tasks is consistently 0"}, {"post_id": 37090, "ts": "2026-07-29T15:56:15Z", "hours": 1.4378, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #3 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ refactored localStorage format of storing tasks → {taskId: ‘task_1785339829783’, task: ‘look out the window’, details: ‘look out at the sky’, completedDates: []}. - this took a lot of effort, as does all structural change to storage in javascript. every function that pulled task data from localStorage had to be edited to accommodate this change, although i brought it upon myself by starting in the wrong direction. added ‘details’ to each task and styled them as textareas! updated alert for empty charts; prepended now, rather than appearing below the empty canvas"}, {"post_id": 36668, "ts": "2026-07-28T21:30:55Z", "hours": 1.275, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #2 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added randomized text for filling blank pages :D changed the stored date formats from date string s to ISO string for cleaner splitting and organization debugged removing the completed tasks! [i felt like a forensic scientist, only with console.log(‘this should be appearing more than once’) and lots of if-else statements]. turns out i was forgetting to setListeners() for the newly created HTML task elements. added charts tracking monthly progress [work in progress]"}, {"post_id": 36359, "ts": "2026-07-28T12:42:27Z", "hours": 0.4286, "text": "𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #1 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added safety modal boxes for removing to-do lists. debugged removal of completed tasks. to-do: ⋅˚₊‧ debug the completed tasks more! right now, only one completed task can be deleted at a time. uh-oh… ⋅˚₊‧"}]...
|
Title: DoFresh by @promise | Stardance
Devlogs:
𝐍 Title: DoFresh by @promise | Stardance
Devlogs:
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #1 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added safety modal boxes for removing to-do lists. debugged removal of completed tasks. to-do: ⋅˚₊‧ debug the completed tasks more! right now, only one completed task can be deleted at a time. uh-oh… ⋅˚₊‧
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #2 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added randomized text for filling blank pages :D changed the stored date formats from date string s to ISO string for cleaner splitting and organization debugged removing the completed tasks! [i felt like a forensic scientist, only with console.log(‘this should be appearing more than once’) and lots of if-else statements]. turns out i was forgetting to setListeners() for the newly created HTML task elements. added charts tracking monthly progress [work in progress]
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #3 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ refactored localStorage format of storing tasks → {taskId: ‘task_1785339829783’, task: ‘look out the window’, details: ‘look out at the sky’, completedDates: []}. - this took a lot of effort, as does all structural change to storage in javascript. every function that pulled task data from localStorage had to be edited to accommodate this change, although i brought it upon myself by starting in the wrong direction. added ‘details’ to each task and styled them as textareas! updated alert for empty charts; prepended now, rather than appearing below the empty canvas
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #4 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ each task has a collapsible ‘details’ textarea! (i) modified HTML and CSS to accommodate changes (ii) modified JavaScript [mostly the .parentElement locations] to adjust to structure (iii) disabled space-key toggle so that the user’s typing wouldn’t be interrupted updated the track page’s sidebar from position: fixed; to position: relative; and juggled around CSS + CSS to restore the page structure debugged: the fill-if-blank text now appears only once, even when a completed task is deleted and the number of active tasks is consistently 0
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #5 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added HTML and CSS template for the advice page, which will feature a series of blogs offering advice on productivity, mental health, and consistent growth [based on personal experiences] considering using free AI APIs to create an interactive analysis/support chatbot… please recommend me some free sources if you know any!! ❤️
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #6 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added dynamic display of advice articles [wip] updated advice HTML structure and CSS for improved layout
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #7– shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ attempting to connect huggingface’s ai models to dofresh as backend api have attempted for 3 hours and 52 minutes and success!! need to refine formatting, token length, and css styling, but the backend is connected and running.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #8 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added chat message storage and retrieval with a sql database! includes a refresh function w/ a safety modal improved chat UI [slightly, i really need to improve the entire app’s UI. designers help me. i’m aesthetic but i need to learn web UI ㅠ]
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #9 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ refactored chat response handling and improved error handling/user display. debugged empty-space messages for home page. updated sidebar navigation link UI and enhanced layout structure.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #10 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ heavily edited and debugged the new sidebar. adjusted previous javascript and html to accommodate it: updated padding and margin styles for better alignment. refactored layout structure to improve sidebar functionality and aesthetics. added JavaScript functionality for sidebar toggle and dynamic list generation in layout.js. removed unnecessary sidebar code and adjusted layout accordingly. implemented typewriter effect for generated chat responses! ⌨️
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #11 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ lots of small updates for this devlog. added loading spinner to chat function. updated and debugged styles—padding, sidebar, the body moving instead of overlapping with the expanded sidebar. updated chat message time logging. it’s the small things that matter… ;-;
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #12 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ updated CSS styles for buttons and task elements to improve layout and aesthetics: changed button styles from Bootstrap’s primary blue to custom logo purple added dropdown menus for tasks for another layer of safety in deletion added subtasks! (major change… help…) adjusted localStorage interactions, data structure, HTML/CSS code, and JavaScript logic for subtask management. improved user experience by adding focus and click event listeners for task editing and subtasks. had to decide whether to nestle subtasks within their parent tasks or by themselves in localStorage. finally settled on keeping all tasks on the same level for the sake of accessing them easily—instead, each subtask has a parentTask key, and a “mainstream” task has an array of their substack IDs.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #13 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ lucky number #13… i’m certainly suffering because of the subtask changes… 😄 added CSS and adjusted JavaScript to prevent disabling accordion collapse (conflict with new task dropdown) added CSS to task dropdown for hover-appear features and styling. refactored JavaScript: enabled proper removal and completion of tasks + subtasks! if a “mainstream” task is removed, so are all its substacks. a substack is removed cleanly. similarly, if an active “mainstream” task is completed, so are all of its subtasks. if it’s recovered from completion, however, the subtasks remain completed.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #14 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged completion and re-activation of subtasks and “mainstream” tasks. fixed subtask element selection in functions; improved localStorage handling for task completion and prevented duplicate entries!
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #15 – shoot for the stars like 📸 ˚₊‧ ଳ ‧₊˚ ⋅ debugged completion and re-activation of both subtasks and “mainstream” tasks! fixed subtask element selection in different task-controlling functions; improved localStorage handling for task completion and prevented duplicate entries. the long-awaited UI update!! used a free gradient as a background, edited opacity and blur in layout.css. changed color schemes further and added glassy / transparency aesthetic to to-do boxes. debugged the case where task dropdown menus didn’t disappear when other tasks were clicked!! small UX updates that make life significantly less frustrating. (small when they’re there, big when they’re not… guys… i’m a totally unartistic soul and a coder… ui/ux designers please save me!!! we love you 💖💖)
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #16 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged preservation and correction of chart generation settings (i.e. no weekly history with monthly chart type) adjusted color schemes and area fill for charts added dropdown task menus in track page for subtask organization and access enabled the “mainstream” task to be clicked without enabling dropdown, instead relying on hover to toggle dropdown menu note: the data is fake! i haven’t been doing the stardance challenge since may ;)
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #17 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added new modal to pop up with ‘it’s a new day!’ and completion information. work in progress. added progress circle animations added a completedDate portion to standard to-do tasks so that daily reports can be yielded enabled tooltips for hovering over sidebar navigation updated styles for various components brainstorming several design ideas…
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #18 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added to-do list interaction to progress circle. debugged and refactored refresh notification modal display logic. designing time!! work in progress: a gamification (?) system and a star icon. say hi to lumi!! i did NOT spend 26 minutes on this… that’s just on the debugging… please show lumi some love and affectionate feedback!! i’ve never animated anything in my life before. ⭐ 💌
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #19 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ went through the whole process of editing the jumping animation again so that it would align better with the existing static character… yay… 🥹🥹 added lumi to the top of the to-do list and added animation for task completion
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #20 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ created a blinking passive mode animation for Lumi refactored setLumiCostume function to loop the blinking animation without pause or transition effects (work in progress to make smoother!) decided to refactor track !! 600 lines of code… hopefully it’ll come alive again… added chartCompletion function to show number of completed tasks across days. JavaScript dynamics and Chart.js, CSS to create a responsive grid for the track dashboard, and HTML to reorder elements whoo
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #21 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ day 2 of refactoring the whole track system… added activity heatmap chart after refactoring task completion chart implemented an activity heatmap to visualize task completion over time created a system of div s and span s for a “Github heatmap” orientation. added Bootstrap tooltips to display more information. much CSS effort was invested in accessibility + making a clean scrolling system and the weekday/month grid
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #22 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added streak activity chart, maximum streak, and longest active streak widgets to the track v.2 page! implemented ‘I Did List’ to keep track of completed tasks with date tags. keeps track of refreshing tasks’ completion over 1 week and all of the standard task completions on a collapsible sidebar in the dashboard. there are a lot of things to organize when dealing with dates… ISO date format, JS dateString format, parsing into milliseconds for comparison, etc. give me my strawberry coding notebook 🥲🥲 at least i’m having fun
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #23 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added headers and div s for the different completion dates in the I Did List implemented date formatting functions in script.js and organized/debugging the display and orientation of I Did list items so that both refreshing and standard, completed-today and completed-previously tasks would appear correctly.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #24 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged removal and creation of tasks with refactored js localstorage system! added zero state filler for main page if no boxes are present. debugged the different day headers showing up in the ‘I Did!’ list so that they don’t appear when no tasks are there at all. filler image work-in-progress. modified task creation to initialize with empty task strings instead of default text. cleaned up unused code and improved readability.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #25 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added zero-state filler graphics to the track page! replaced querySelector with getElementById and getElementsByClassName for better performance, speed, and efficiency all around the app. added filler div for chat UI lots of minor tweaks to UX in the task add-remove-check sequence of the dashboard page
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #26 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ added smooth collapsing/expanding animations for task addition and removal nested completed-for-good tasks in the completed tasks div and debugged the task ID retrieval in script.js debugged task completion handling and every small issue arising with each update and tweak
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #27 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ refactored ‘onclick’ event listeners to conditionals and casework using event.target.nearest(). removed setListeners() entirely, saving memory leaks and unneeded recursive usage of setListeners(). uploaded the app on Render (for free!!)!! changing DoFresh platform from Flask to Django! initialized app + project foundations, changed settings, established urls, views, and models -> all task-related functions are working. still work-in-process for API calls and the backend.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #28 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ on the way to a full switch to Django: added login, logout, and signup views and functionalities to allow different users & management through the admin page working through bridging original usage of ‘localStorage’ and Django’s SQLite database—replacing many JavaScript functions with fetch and API calls drafted task, to-do list, and chat messages’ models in models.py fairly completed the HTML appearance for the JS -> Python fetch switch. app correctly generates the to-do lists, tasks, completed tasks, completed refreshing tasks, buttons, and subtasks
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #29 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged to-do list and task HTML appearance with JavaScript fetch and new Django interactions established new data/fetch/global constant variables throughout script.js debugged I Did list’s usage of localStorage enabled adding lists and renaming lists with Django functions!
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #30 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ ⋅ debugged addTodoBox() implementation with fetch()… turns out response.json() was missing the ()!! implemented removeTodoBox() and addTask() with matching Python views and functions getting there… kind of getting there… i need to finish this off…
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #31 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ added edit task, edit details, and remove task functionalities. implemented Django migration for track page!! added mock test data and confirmed that the track page works edited subtasks attribute to lists and edited views.py for Task objects to debug duplicate ID tasks. the django migration is going smoothly!! i’m quite proud of myself for getting editTask() and editDetails() in less than 5 minutes each. done in one go!!
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #32 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ debugged I Did List integration with Django; working as usual now. re-implemented Chat functions [display, Django Message models, and API calls]. started layout.js’s lastAccessedDate and refreshing date record functions with Django migration.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #33 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ implemented set_last_date API endpoint and update last accessed date logic in views. refactored date handling in layout.js and script.js and designed date structure (ISO string format) to free conflict in regional time changes. migrated task completion recording function to Django (work-in-progress, not tested thoroughly). debugged and refactored the completion of tasks and updating completed tasks for improved performance and smooth HTML animation sequences & transitions. [added a new boolean condition to updateCompletedDiv so that it wouldn’t need to re-add the tasks every time it ran. yay performance improvement!]
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #34 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ created + debugged completeRefreshingTask() from nonfunctional buggy to visibly seamless condition. debugged the function call’s missing button parameter at the click event handler. simplified idsToChange array composition, debugged parent to-do box HTML getting, added view.py function for backend reflection and change. added and debugged support for completing and matching subtasks & parent tasks.added animations and implemented/fixed logic structure of function. implemented, improved, and debugged task completion function components and edge case logic. tracked down and debugged one case of subtask handling error in addHTMLCompletedRefreshingTask() by changing the original JS key ‘subTasks’ to ‘subtasks’ and ‘parentTask’ to ‘parent_task’. added CSRF tokens to layout.html to enable POST methods for the general record/ and setLastDate() functions. debugged track.js to solve naming conflict in repeated uploads. added confetti and fireworks effect to task completion animations. moved Lumi from top of screen to stay in the sidebar for the user’s continuous view. debugged parent tasks switching the activeness of subtasks. added a ‘Refreshing tasks completed:’ counter at the top of the I Did List added today’s tasks to update the Refreshing Tasks Completed count. enabled the count text to collapse with the sidebar list. fixed some remaining localStorage-reliant code and the welcome modal’s sequencing. fixed Lumi position in login page. Debugged last_accessed_date being set in an empty user state.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #35 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ now i really want to start shipping…! and submitting… please… today, sitting in the subway & waiting for/on my train, i refactored the advice page with a new Article class to dynamically display articles and created a new article detail page! updated advice.html to loop through articles, all objects of class Article in models.py, and display them dynamically added article.html template and the URL article/<int:article_id> added new CSS styles for article layout and text formatting (especially pre HTML blocks) i tried to upload images for the article cards into the database, but in production, i would need to find a cloud service provider (…and i need more )… so i reversed my hard work and uploaded the images to the static folder instead. additionally: moved the welcome modal and the refreshing notification/progress report modal HTML from index.html to layout.html so that the users would be able to see them in other pages of the website & debugged this debugged / cleaned up the logic and code for the tracking page’s fill-when-blank graphics.
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #36 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ fixed 500 Service Error for record() in views.py, optimizing iteration through list data and refining logic!!
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #37 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ added formatting and HTML tag support for article page debugged 0/0 tasks and 0/0 list completion modal, which spiraled to infinity added NASA pictures for article iamges
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #38 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ with the Free tier for Hugging Face being closed, I switched to using Groq for API calls!! refined the chat feature by adding previous message context and restructuring the user task data for the migration to django fixed sidebar sign out button toggle and Chat textbox size changing debugged track page not appearing edited looks of completion tracking graph added task list appearing with breaks for task page tooltips
𝐍𝐨𝐰 𝐥𝐨𝐚𝐝𝐢𝐧𝐠. . . devlog #39 – shoot for the stars like 📸 ⋅˚₊‧ ଳ ‧₊˚ hopefully the last devlog!! today, my very artistically talented friend gave me some very nice feedback about the login page, both directly and indirectly. sooo… debugged the list titles appearing as ‘undefined’ modified the login and sign-up pages!! aren’t they just so pretty [totally not similar]
debugged the refreshing lists not appearing at the sidebar debugged the ‘i did list’ not working debugged subtasks not appearing changed hosting platform from Render to Vercel! https://dofresh.vercel.app/ new link: https://dofresh.vercel.app/
ATTENTION, SHIPWRIGHTS!! HERE, PLEASE!! HERE!! READ BELOW!!! i couldn’t edit the ship message’s contents, but hopefully you see this message! here are some things about the (new) ship… ▸ the new link for my project is here: https://dofresh.vercel.app . please use the credentials stardance_tester for both the username and the password!! THIS HAS ALL THE DATA FOR THE ACCOUNT, OR ELSE YOU NEED TO CREATE YOUR OWN DATA FOR YOUR ACCOUNT! ▸AI was NOT used for my devlogs, AI declaration, ship message, or README. i copied ASCII art, GitHub commit messages, and stylized font to the devlogs, not AI-generated summaries. i wrote my AI declaration in a separate Google Docs because my computer tended to restart and update at the wrong times. i wrote my ship message by myself! i used a part of my app description for the README, which, again, I wrote by myself. i have screenshots of my work below. anyways, for the devlog.. fixed the chat page so that a message can’t be sent while another is still generating!! debugged record() not establishing the variable recent_completed_pair before using it in the else-if conditional
added a custom user creation form to enable flexibility and clean error messages when signing up; debugged the sign-up page, allowed form box to expand, and added password confirmation box and feedback on account security
Ships:
What did you make? This is DoFresh, a refreshing task manager that turns consistency into records and graphs! What was challenging? On top of the various bugs that arose on the way to refine and polish various features, one challenge in creating DoFresh was designing and implementing the Track system. Firstly, the logic system surrounding behind user completion and daily refreshing was complex, especially when considering the users didn’t visit the website every day. Secondly, I strove to make graphs and tracking widgets that were self-explanatory and simple but stylish and understandable, and I had to refactor the Track page completely after I changed my data storage system, changing the types of charts and how each was organized. What are you proud of? I’m quite proud of how the website looks, as I’m really artistically untalented and never really got around to learning CSS or aesthetics or color theory. The purple prettiness of DoFresh is really an achievement for me, and I’m especially proud of how much design and UI/UX consideration I learned through this app. Now, when I open websites, I look at how they design their login pages, where they put their collapsible sidebar icons, and what headings they use—sideways, click-collapse, fixed above, sticky—and why. Another thing I’m quite proud of is the AI agent I personalized and implemented in the Chat page. I wired the API call system for Flask, then Django, with many small bugs for both scenarios, connecting the Python backend with HuggingFace’s free models. Then, two days after I began wrapping up and testing the site, HuggingFace removed its free tier altogether. (●__●) Thus I switched to using GroqCloud as a platform, making a new API key, and set to further refining how the bot understood the user’s completion data, programming it to fit DoFresh’s philosophy and purposes. What should people know so they can test your project? You can go into https://dofresh.onrender.com/ and log in with the credentials stardance_tester + stardance_tester (username + pw both) if you want an example with pre-filled data and records! Please note that (free tier) Render takes about ~40 seconds to load and may spin down to inactiveness if you leave it open and untouched....
|
1793156014.5355275
|
1793242414.5355275
|
|
69418
|
Splatoon 3 Callout Guesser by @101zh | Stardance
|
101zh
|
0
|
5.68
|
0
|
[]
|
[{"post_id": 81665, "ts": "202 [{"post_id": 81665, "ts": "2026-10-21T23:22:34Z", "hours": 0.6558, "text": "Now logs which regions have been clicked in console. I plan to have it display on each region, but I’m still working on that. Commit Link (when public)"}, {"post_id": 81130, "ts": "2026-10-20T00:31:25Z", "hours": 4.1411, "text": "Created a selector for maps that brings up the map and the callout regions. Commit link"}, {"post_id": 79187, "ts": "2026-10-12T23:17:13Z", "hours": 0.8869, "text": "Create project and test idea. I went ahead created a Vite, React, Typescript app. Also attempted overlaying an svg on top of an image of a splatoon 3 map for different callout regions. Commit Link (when repo is public)"}]...
|
Title: Splatoon 3 Callout Guesser by @101zh | Star Title: Splatoon 3 Callout Guesser by @101zh | Stardance
Devlogs:
Create project and test idea. I went ahead created a Vite, React, Typescript app. Also attempted overlaying an svg on top of an image of a splatoon 3 map for different callout regions. Commit Link (when repo is public)
Created a selector for maps that brings up the map and the callout regions. Commit link
Now logs which regions have been clicked in console. I plan to have it display on each region, but I’m still working on that. Commit Link (when public)...
|
1792814118.8599827
|
1793418918.8599827
|
|
69553
|
Simple Mod Manager by @Guagyyy | Stardance
|
Guagyyy
|
0
|
7.09
|
0
|
[]
|
[{"post_id": 81663, "ts": "202 [{"post_id": 81663, "ts": "2026-10-21T23:13:15Z", "hours": 4.2228, "text": "I finished the screen class rendering the actual projects. This was mostly just trial and error, which is why it took so long, but now, I have a basic layout which I can expand upon. There are still a few issues with the image downloading, so I will have to fix that, but so far the actual project information getting pipeline seems to be flawless. I also created the detailed project widget, and made pseudocode for the rendering of it, however it is not fully implemented. Since the individual project pages will be a simple get request from the Modrinth API, it the detailed widget will just be constructing a different URL to perform the get request (as I will not be using the ‘search?’ part of the API). I am also planning to add Curseforge support, but that will only be done once the full Modrinth pipeline is done. I will likely commit the code tomorrow, as right now I am experiencing issues with committing to a different branch in GitHub, as I don’t want to commit to main, since that is only for releases."}, {"post_id": 79410, "ts": "2026-10-13T20:59:17Z", "hours": 2.8686, "text": "Simple Mod Manager is a lightweight utility that allows players to easily enable, disable, and manage their installed mods without manually moving files. For Stardance, I am trying to add the two most complicated features-creating an in game mod, resourcepack, and shader downloader, as well as a mod hot-swap to update mods in real time to avoid a full game restart. These will be difficult to perfect mostly because I have barely any experience in JVM class loading, and I have done little to no work with file downloading. Before Stardance, I had planned to make a separate mod called ModGuard with these things added, however I realized there wasn’t many features to add to it, and since I already had a decent user base to Simple Mod Manager, I decided to merge the two instead, so that users wouldn’t ever have to leave the game, or even restart it when installing any modifications (super helpful for modpack creators and streamlining the creation process)! 1. Download System: I fixed the download pipeline. For whatever reason, before fetching stuff from the api wasn’t working, and today I fixed that. It came down to a mix of a few issues both involving my internet connection, as well as a broken enum.toString() method getting called, which caused a crash. The old download system also didn’t support resourcepacks and shaders, so I added a few fields to the widget class, and made an enum to represent that (ProjectType). Now whenever fetching from the API, I must specify the type which I am getting (e.g. ProjectType.MOD), and it will filter for mods in the facets. After that was done and tested, I had the whole pipeline for downloading done, meaning I just needed something to represent the mods. 2. Screen System: I made a screen which had the facet buttons, project widgets, search bar, and tab bar. Since these were all stored inside of ArrayLists, I would only have to call the render method for each button within a for loop, making the rendering process super easy. After getting that to work, I added a few background containers, as well as a method to auto detect when a button/search query was changed and fetch the project details for the user. Now I just have to add automatic scrolling detection which will automatically call the API when I am out of projects to see. In order to avoid overlap, I will use the offset and limiters inside the Modrinth API query to skip the first set of mods which the user already saw, and then display the next set, by simply adding them to the ArrayList.. Next Steps: After I add those small features, the next step will be to extend the project widget class in order to make a more detailed version for when you actually click on the project to download it."}]...
|
Title: Simple Mod Manager by @Guagyyy | Stardance
Title: Simple Mod Manager by @Guagyyy | Stardance
Devlogs:
Simple Mod Manager is a lightweight utility that allows players to easily enable, disable, and manage their installed mods without manually moving files. For Stardance, I am trying to add the two most complicated features-creating an in game mod, resourcepack, and shader downloader, as well as a mod hot-swap to update mods in real time to avoid a full game restart. These will be difficult to perfect mostly because I have barely any experience in JVM class loading, and I have done little to no work with file downloading. Before Stardance, I had planned to make a separate mod called ModGuard with these things added, however I realized there wasn’t many features to add to it, and since I already had a decent user base to Simple Mod Manager, I decided to merge the two instead, so that users wouldn’t ever have to leave the game, or even restart it when installing any modifications (super helpful for modpack creators and streamlining the creation process)! 1. Download System: I fixed the download pipeline. For whatever reason, before fetching stuff from the api wasn’t working, and today I fixed that. It came down to a mix of a few issues both involving my internet connection, as well as a broken enum.toString() method getting called, which caused a crash. The old download system also didn’t support resourcepacks and shaders, so I added a few fields to the widget class, and made an enum to represent that (ProjectType). Now whenever fetching from the API, I must specify the type which I am getting (e.g. ProjectType.MOD), and it will filter for mods in the facets. After that was done and tested, I had the whole pipeline for downloading done, meaning I just needed something to represent the mods. 2. Screen System: I made a screen which had the facet buttons, project widgets, search bar, and tab bar. Since these were all stored inside of ArrayLists, I would only have to call the render method for each button within a for loop, making the rendering process super easy. After getting that to work, I added a few background containers, as well as a method to auto detect when a button/search query was changed and fetch the project details for the user. Now I just have to add automatic scrolling detection which will automatically call the API when I am out of projects to see. In order to avoid overlap, I will use the offset and limiters inside the Modrinth API query to skip the first set of mods which the user already saw, and then display the next set, by simply adding them to the ArrayList.. Next Steps: After I add those small features, the next step will be to extend the project widget class in order to make a more detailed version for when you actually click on the project to download it.
I finished the screen class rendering the actual projects. This was mostly just trial and error, which is why it took so long, but now, I have a basic layout which I can expand upon. There are still a few issues with the image downloading, so I will have to fix that, but so far the actual project information getting pipeline seems to be flawless. I also created the detailed project widget, and made pseudocode for the rendering of it, however it is not fully implemented. Since the individual project pages will be a simple get request from the Modrinth API, it the detailed widget will just be constructing a different URL to perform the get request (as I will not be using the ‘search?’ part of the API). I am also planning to add Curseforge support, but that will only be done once the full Modrinth pipeline is done. I will likely commit the code tomorrow, as right now I am experiencing issues with committing to a different branch in GitHub, as I don’t want to commit to main, since that is only for releases....
|
1792857113.7784348
|
1793461913.7784348
|
|
41332
|
Personal site by @potionj | Stardance
|
potionj
|
2
|
32.0
|
168
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-22T00:44:09Z", "hours": 18.0, "multiplier": 14.43, "payout": 132, "blessing": "neutral", "text": "Changes -Added animations for clicking inside and outside of the black hole -Redid the profile -Minor bug fixes -A lot of performance improvements -Added pre loading for the background in the star map to minimize transition time -Bound the edges of the starmap -Improved rendering speeds at the cost of slight decrease in quality -Rebound some keybinds -Added layered esc Some notes The amount of time i spent on the zoom in animation is way too long and i spent wayyyy too much time on it Had issues changing values with the profile bc of the weird header i made long time ago Had issues loading things? Now it basically just moves the lag to sometime else To justify the questionable hr count: Writing custom rendering is very painful and i do not recommend it at all (just use a library it actually makes it so much easier), this has taken so much effort to complete so please be nice while grading :) Actually helpful info for people rating I entered the site and theres nothing to do? -Click either inside or outside the blackhole (inside leads you to my profile, outside leads you to a starmap i made) Can i use my keyboard for the starmap? -Of course, move around with w/a/s/d, zoom in/out with +/-, turn the info card opque with o Why should i give you 9 stars for all of the parts? -Because i worked rly hard on this project :) -More specifically… -Originality: I dont think you’ve seen anyone with a similar personal site have you? (if you have send it to me on slack username:29mtye) -Technicality: This uses nasa api to load in images, CUSTOM rendering, a fully functional starmap, there is performance built in, there are backups incase the site can’t find anything -Usability: Its built to not break, there might be minor bugs but it accomplishes what it should do right? -Storytelling: This ship message is split into sections so that you can find info easily, i have almost 150 commits…", "repo": "https://github.com/minye065/my-website-templated", "demo": "https://minye065.github.io/my-website-templated/"}, {"ship_num": 2, "ts": "2026-08-23T16:30:05Z", "hours": 14.0, "multiplier": 5.5, "payout": 36, "blessing": "neutral", "text": "The site is done :D Had quite some issues with getting images from the nasa database but the site has turned out quite well. Please be nice while rating as this is my first css/html project. :) Try if you can find the hidden thing.", "repo": "https://github.com/minye065/my-website-templated", "demo": "https://minye065.github.io/my-website-templated/"}]...
|
[{"post_id": 81662, "ts": "202 [{"post_id": 81662, "ts": "2026-10-21T23:12:50Z", "hours": 0.2933, "text": "Fixed minor loading issues Changed how the loading for the star map works Bound the edges of the starmap Made starmap nonscrolling"}, {"post_id": 81413, "ts": "2026-10-21T05:50:52Z", "hours": 2.9125, "text": "Added a zoom in and out animation, zoom out is far superior tho… Zoom in animation needs a lot of fixing."}, {"post_id": 80290, "ts": "2026-10-17T04:06:02Z", "hours": 2.135, "text": "Added an animation for zooming out, fixed some issues with internal stuff. (Picture is mid animation)"}, {"post_id": 79665, "ts": "2026-10-15T00:15:27Z", "hours": 1.8697, "text": "Fixed the render and tuned some more values :) Swapped the render mask for a different method. Next is adding an animation, fixing the writting and maybe more hidden things? View at: https://minye065.github.io/my-website-templated/"}, {"post_id": 74336, "ts": "2026-09-27T06:05:23Z", "hours": 2.8025, "text": "IT WORKS!!!! Never thought that it would work so easily but it does. The blackhole has been split into 2 parts, outside and inside. The outside leads to the old site (soon to be changed) and the inside to the projects and what not. The loading is very jagged and will be overlayed with something :D. The old site is now accessible after however long it was just commented out. Going to do: add loading screens (or smth) add “back” button (revolutionary i know) split the old site into starmap and portfolio"}, {"post_id": 63816, "ts": "2026-09-07T19:45:11Z", "hours": 8.275, "text": "Remade the website again? Yea i had another idea but you’ll see at the end. Currently it’s just a blackhole renderer + mask maker. The mask will go over the blackhole to map out clicks and stuff. Had some issues with centering and omega. Using the math formulas from before caused the rings of the blackhole to do weird things because of a difference in rotation speeds. This was just removed to make it smooth. The blackhole is not as accurate anymore but i dont understand it enough to fix it soooo."}, {"post_id": 53155, "ts": "2026-08-23T16:27:35Z", "hours": 10.9436, "text": "Redid basically the entire website, now has a slightly hidden feature."}, {"post_id": 38017, "ts": "2026-07-31T04:54:36Z", "hours": 2.9147, "text": "added the background"}]...
|
Title: Personal site by @potionj | Stardance
Devl Title: Personal site by @potionj | Stardance
Devlogs:
added the background
Redid basically the entire website, now has a slightly hidden feature.
Remade the website again? Yea i had another idea but you’ll see at the end. Currently it’s just a blackhole renderer + mask maker. The mask will go over the blackhole to map out clicks and stuff. Had some issues with centering and omega. Using the math formulas from before caused the rings of the blackhole to do weird things because of a difference in rotation speeds. This was just removed to make it smooth. The blackhole is not as accurate anymore but i dont understand it enough to fix it soooo.
IT WORKS!!!! Never thought that it would work so easily but it does. The blackhole has been split into 2 parts, outside and inside. The outside leads to the old site (soon to be changed) and the inside to the projects and what not. The loading is very jagged and will be overlayed with something :D. The old site is now accessible after however long it was just commented out. Going to do: add loading screens (or smth) add “back” button (revolutionary i know) split the old site into starmap and portfolio
Fixed the render and tuned some more values :) Swapped the render mask for a different method. Next is adding an animation, fixing the writting and maybe more hidden things? View at: https://minye065.github.io/my-website-templated/
Added an animation for zooming out, fixed some issues with internal stuff. (Picture is mid animation)
Added a zoom in and out animation, zoom out is far superior tho… Zoom in animation needs a lot of fixing.
Fixed minor loading issues Changed how the loading for the star map works Bound the edges of the starmap Made starmap nonscrolling
Ships:
The site is done :D Had quite some issues with getting images from the nasa database but the site has turned out quite well. Please be nice while rating as this is my first css/html project. :) Try if you can find the hidden thing.
Changes -Added animations for clicking inside and outside of the black hole -Redid the profile -Minor bug fixes -A lot of performance improvements -Added pre loading for the background in the star map to minimize transition time -Bound the edges of the starmap -Improved rendering speeds at the cost of slight decrease in quality -Rebound some keybinds -Added layered esc Some notes The amount of time i spent on the zoom in animation is way too long and i spent wayyyy too much time on it Had issues changing values with the profile bc of the weird header i made long time ago Had issues loading things? Now it basically just moves the lag to sometime else To justify the questionable hr count: Writing custom rendering is very painful and i do not recommend it at all (just use a library it actually makes it so much easier), this has taken so much effort to complete so please be nice while grading :) Actually helpful info for people rating I entered the site and theres nothing to do? -Click either inside or outside the blackhole (inside leads you to my profile, outside leads you to a starmap i made) Can i use my keyboard for the starmap? -Of course, move around with w/a/s/d, zoom in/out with +/-, turn the info card opque with o Why should i give you 9 stars for all of the parts? -Because i worked rly hard on this project :) -More specifically… -Originality: I dont think you’ve seen anyone with a similar personal site have you? (if you have send it to me on slack username:29mtye) -Technicality: This uses nasa api to load in images, CUSTOM rendering, a fully functional starmap, there is performance built in, there are backups incase the site can’t find anything -Usability: Its built to not break, there might be minor bugs but it accomplishes what it should do right? -Storytelling: This ship message is split into sections so that you can find info easily, i have almost 150 commits…...
|
1793202779.4333425
|
1793289179.4333425
|
|
65211
|
hi3 hackpad by @parking_turkeys | Stardance
|
parking_turkeys
|
0
|
0.9
|
0
|
[]
|
[{"post_id": 81661, "ts": "202 [{"post_id": 81661, "ts": "2026-10-21T23:06:36Z", "hours": 0.9003, "text": "so i made a hackpad :D I really like it!! It took a while to figure out how to compile the firmware – not sure what to put as a screenshot so i used the screenshot of the 3D case :DDDD (sorry im new to stardance and the website is really slow on my laptop so im trying to hurry this before it bluescreens ;-;) but it was a great experience!! I really love making hardware ~ … fun fact the first time I routed the PCB i put the usb thing facing inwards… then when I rerouted it i tried my very best to make it neat so i hope the routing looks nice… (see it in the readme.txt) anyway i cant wait to be able to play hi3 with this… maybe ill finally get out of agony II (I always get stuck on either a bleed-favourable or HoV/some other lightning or ice-resistant week and then am demotivated for a few months) but anyway 9.1 is friday so obviously i wont get the hackpad in time for that but idk how fulfillment times are, hopefully i can get it before APHO 3 (I SWEAR ITLL ACTUALLY HAPPEN SOON. everything looks like it’ll be next year or smth ………. i hope it’s more like apho combat/we get some open world [like a seperate open world] since that’s always fun since it’s independent of the main gacha/microtransactions… speedrunning apho2 in like 2 days was so much fun :3) sorry for yap chat"}]...
|
Title: hi3 hackpad by @parking_turkeys | Stardance Title: hi3 hackpad by @parking_turkeys | Stardance
Devlogs:
so i made a hackpad :D I really like it!! It took a while to figure out how to compile the firmware – not sure what to put as a screenshot so i used the screenshot of the 3D case :DDDD (sorry im new to stardance and the website is really slow on my laptop so im trying to hurry this before it bluescreens ;-;) but it was a great experience!! I really love making hardware ~ … fun fact the first time I routed the PCB i put the usb thing facing inwards… then when I rerouted it i tried my very best to make it neat so i hope the routing looks nice… (see it in the readme.txt) anyway i cant wait to be able to play hi3 with this… maybe ill finally get out of agony II (I always get stuck on either a bleed-favourable or HoV/some other lightning or ice-resistant week and then am demotivated for a few months) but anyway 9.1 is friday so obviously i wont get the hackpad in time for that but idk how fulfillment times are, hopefully i can get it before APHO 3 (I SWEAR ITLL ACTUALLY HAPPEN SOON. everything looks like it’ll be next year or smth ………. i hope it’s more like apho combat/we get some open world [like a seperate open world] since that’s always fun since it’s independent of the main gacha/microtransactions… speedrunning apho2 in like 2 days was so much fun :3) sorry for yap chat...
|
1793084106.030682
|
1793688906.030682
|
|
8298
|
Sephyr Magic mod for Minecraft by @Szczurek | Star Sephyr Magic mod for Minecraft by @Szczurek | Stardance...
|
Szczurek
|
0
|
147.82
|
0
|
[]
|
[{"post_id": 81656, "ts": "202 [{"post_id": 81656, "ts": "2026-10-21T22:33:18Z", "hours": 9.8467, "text": "Multiloader modding is pain Can’t NeoForge and Fabric just have one common api, for all the boring stuff like registration, networking and events? I’ve had enough, so I spent 2 hours porting my mod to Balm , which is a library providing exactly that. The result is beautiful - ~150 lines are gone, and the loader specific subprojects fit under 10 lines of code, as I was able to move everything to common. Now for the worst irony: I spent my time doing all of that and the next thing I’m gonna do is… disable fabric support 😭 Why, you may ask? I was forced into it by reality read on First VFX I made my first VFX, for the leap spell. You can see it in the attached video. It’s going to spawn under player’s legs. For now it’s a really simple one, as I’m rushing to add a bit more of content, than just a single spell, before Stardance ends. It is made using Photon Editor , which is a VFX editor for Minecraft. It has a lot of good stuff, like emitters, timeline and animation curves, which will be crucial in making more advanced effects. Only downside: It doesn’t support Fabric, which is why support for it is going to be disabled for now, until I manage to hopefully make a port it in the future. Reworking spell internals (again) After making the effect, I realized I have no way to run it from the spell code, because spell logic runs server side only, and VFX needs to be played on the client. So I wen’t back to the drawing board, and I’m going to change how spells run. They are going be entities now, but more on that next devlog, because it’s not done yet, as I ran into friction in the code, which triggered me to do the Balm refactor, and in the meantime the time counter hit 9,5h. Do NOT hardcode stuff please I had to do some work on my laptop today, which has NixOS. So I update my Sephyr clone, try to run it, and bada bing bada bum, it doesn’t work! What’s going on? After a hour of debugging, it turned out that NeoForge devs hardcoded their Gradle plugin to run one specific task using Java 21. The rest runs on Java 25 (the one used by Minecraft 26.1). So, be default, a NeoForge setup for Mc 26.1+ requires two java version. Normally the second one is autodownloaded, but that doesn’t work on NixOS, and that’s also bloat. I don’t want that! So I made a bug report . Fortunetely it isn’t really hardcoded, just dumb, and I was able to fix it with this line in build.gradle Update to Burn 0.22 Burn 0.22 was recently released, removing the Backend generic from most of it’s traits. I updated Sepple to work with that. I also had to regenerate the model code for the multipa model. I was hoping the update would provide some speedup to speech processing, but I wasn’t able to measure any difference. Replacing Multipa with Zipa I found a new speech-to-IPA model. It’s called Zipa , and it looks very promising. It’s around 4x smaller then multipa, which means faster processing and less to download for end users. Furthermore, according to it’s paper, and my few tests it has noticeable better accuracy! So I implemnted it. It was a little more trouble then multipa, because the model has a much richer pre-processing. The audio waveform is turned into a mel spectogram, Fourier Transform is done, and other stuff happens. Buuut there is a problem. It turns out the model is great at doing recognition on longer audio sequences, and doesn’t really work that well on short ones. For them it performed worse then multipa! That means it’s not suitable for doing recognition in realtime, at least when plugged in the same way multipa was. However I have a couple ideas to try, which might, hopefully, solve the issue. Until I do that, it is set aside on a separate branch."}, {"post_id": 79314, "ts": "2026-10-13T14:21:33Z", "hours": 10.1344, "text": "Debugging gui is (almost) done What is going on, why already 10 hours passed? This was menat to be a quick sidequest, where I built this gui tool for debugging how well detecting magic keywords is working BUUT given it is the third devlog about it That means it took over 30 hours! Well, happens. So, all of this devlog was spent building all the plumbing needed to capture all the data from the detection pipeline and sending it in realtime to the app. All of it is using done using channels. They are injected into the detection pipeline either as Tap<T> ‘s - a new pipeline element that clones data it sees, sends to channel, and passes it on, or using wrapper types around existing processors. The app then receives the data and displays in on the plot. I also encountered and fixed few bugs, that I didn’t expect. For example originally the zoom went to crazy values, because a timestamp used to determine where the data ends wasn’t converted to be relative to the timeline start. I also found an quite an issue introduced 3 months ago, where the timestamps attached to audio weren’t calculated properly, making entire audio chunks have identical stamps. It was minor enough that I never noticed till now, when the data landed on the plot and resulted in this funny thing you can see on the attached screenshot. Finally I added a simple scrolling animation, to amortize the jitter caused by bigger chunks of audio coming, so the plot doesn’t jump that much when going live, but it’s still not as smooth as I would like it to be. As mentioned before I was using AI assistance in strictly controlled manner (I carefully planned, revieved, cleaned up and adjusted to my liking all the code generated by it) to build this debugging tool faster, and by now I’m very tired of it. At the end of the work it started doing stupid things (possibly because some context was lost?), which made me question if it was making me faster or slower. Luckily the work is mostly over, and I can finally get to other, more interesting stuff, that will be fun to do, with no AI. Next I want to use the tool to improve the detection a bit, and spend more time working on the actual mod."}, {"post_id": 77831, "ts": "2026-10-08T13:13:43Z", "hours": 10.2597, "text": "Keyword detection UI is done Look as this! It’s so pretty! Seeing all the data visualised is quite mesmerizing. I know the image will probably attract more views, so lemme explain what you are looking at. I’m making a minecraft mod where you cast spells by saying custom made up words, and this is a tool for debugging the keyword detection system. It’s meant for me, to help me make the detection more accurate, and reliable. I’ve been building it for the last ~20 hours, and in the last two I built the rendering of all the 8 strips. Check previous devlog if you want to know what exactly they display. It was pretty smooth sailing. As said before, since this is just a debugging tool for me, that I want to have finished quickly for it I’m using AI assistence, by letting it do stuff in small, pre-planned steps, and unsloppifying all the code between them. It’s working well. What helps, is that entire app is built on the egui / eframe crates, which I used before, and are somewhat familiar with. I gotta give credit, where is due, their api is really intuitive for the most part, and simple to use. The entire chart is also zoomable, and scrollable, and making this work was a bit of pain. I wanted to limit the accesible range to only around the data (so you can’t scroll away to far from it), and egui_plot doesn’t really provide a way to do it, so some manual calculations had to be done. I wanted to have some breathing space by allowing 0.25x of the zoom after last audio sample to be visible. This was the worst part, as it’s kind of a recursive problem - the zoom value affects how much zoom is allowed. But after around two hours I manged to figure it out, but keeping the original zoom value independantly of the limit calculated from it. Worth noting - what you see is just a mockup data, and the gui isn’t actually hooked up to the detection system, as that’s what I’m going to do next. After that I can hopefully improve the detection, and the finally go back to minecraft coding."}, {"post_id": 76510, "ts": "2026-10-03T19:41:08Z", "hours": 11.5369, "text": "Visualizing the keyword detection pipeline I’m not happy with the accuracy of the magic words detection system. It work half of the time, sometimes better, sometimes worse depending on the word. This make casting longer spells quite troublesome. Debugging why a specific word wasn’t detected is hard, debug prints can only get you so far. So I decided to go on a crazy sidequest and build a gui tool, that will help me debug this. I spent over 2 hours designing the concept, and over 10 implementing it, and it’s around 40% ready. The tool will display 8 strips / plots, and each plot will display some data, all on a shared timeline on the bottom, that will update live as the audio is processed. Strips 1, 2, and 4 will display waveforms of the audio at different processing stages. Strip 3 will show Voice Activity Detection score (which is used to filter out non-speech). Strips 5, 6 and 7 will display detected IPA tokens, accumulated text buffer, and detected words respectively. Strip 8 will display latency stats, which will help in optimizing it. This way I will be able to easily see, “oh, this phoneme wasn’t detected” or “oh, VAD cut out this word” or “oh, some mess accumulated in the buffer” and tweak my algorithms. AI - it’s bad, or is it? Despite looking quite simple on the surface, the app is still quite an undertaking. And it’s just a debugging tool! A thing to help me get the main goal done! I don’t want to spend too much time on it. So I considered using AI as a tool ( NOT vibecoding ). I hate vibecod(ing, ers), and I’ve always steered off AI, because very often I wasn’t satisfied with the output quality. I take pride in writing good code. But recently I’ve been trying out OpenCode here and there (on free models), and was quite surprised with it’s capabilities. Sure, it’s still often slop, but a one you can quite quickly correct, and sometimes be more effective if used correctly. AI - is it helpful? So I decided to do an experiment - can carefully planned AI usage help me write the debugging tool quickly? I started off by designing the functionality of the tool - I described the idea in detail to MiMo-V2.6-Flash, and asked it to interrogate me about as many details as possible and needed. I had to answer 35 questions, some of which were quite observant, picking me on nooks and crannies. After that a markdown file describing the design was written, and then went through few corrections. Next up, in a new session I asked MiMo to create a bullet point outline of steps needed to be done to implement the tool specified in the design file. Then one by one I went over each bullet point, asking the just released LongCat 2.5 (which has a bigger ctx window) to ask me questions, and formulate an implementation plan of it, present it to me, I gave corrections, and the point in file was replaced. This way I ended up with a second markdown file - an implementation plan. This took way too long, and was really boring. So, finally coding time. I do it like this: Ask opencode to implement a step of the plan Review the diff in vscode Remove fluff and slop manually, make sure all new code is good quality. Give feedback if I something doesn’t work like expected, or also fix it manually. After it’s good - commit Repeat for the next step It’s still not super fun, but at least I’m touching the code now, so much better already. And it is efficient! I believe it definitely would take me longer, if I wasn’t using AI. So the morale is: If you want fun, or doing something important - do it manually. If you want to do something quickly and get it out of the way less important. Here is a screen of how it is looking now: the general shape is in place, but there is no plots yet."}, {"post_id": 72706, "ts": "2026-09-23T15:27:59Z", "hours": 6.3589, "text": "The Stack Overflow For some reason my mod broke and started crashing during startup, and it did so in the worst possible way - without any error message! All I got in the Intellij Idea, was a message that the process exited with the signal code 11. WHAT? That signal corresponds to SIGSEGV signal on Linux, which generally means you did something wrong with the memory. But this is Rust! There shouldn’t be any memory issues! I started searching, and I learned there is a tool called coredumpctl, which lets me access a special dump file generated in such cases, and analyze it in a debugger like GDB. So I did that, and what I found was even more bizzare! The debugger was pointing to a start of a function, before the first line. I added some debug prints, and to my disbelief, the print before calling that function ran, and the the second one, which was the first line inside the function didn’t! Fast forward a bit I managed to figure out the problem, with some help from a friend. It turned out I encountered an stack overflow! When the function was called, Rust tried to expand the stack, and crashed because the stack ran out! Why? Because the code was loaded in Java, and Java by default allocates less memory for the stack ! The solution was manually requesting a bigger stack size during thread creation in Java. I also discovered, why the problem appeared - in the Rust file download code I had allocated an array buffer of 1MB. It landed on the stack, and that was too much! The solution was using a Vec, which lives on the heap instead. Stupid problem, but took 3 hours of my time 😩 Mod init progress reporting Sephyr requires the IPA speech recognition model to work, which needs to be downloaded on the first run, and subsequently loaded from the disk. The logic was overhauled providing more corectness, and hooked up to a series of toasts. File download progress bar is shown, and the intialization state (or failure) is coummunicated to the user! See it in the video"}, {"post_id": 71471, "ts": "2026-09-20T21:50:14Z", "hours": 9.7653, "text": "Wind spells have sound now Using LMMS and ZynAddSubFx I made two wind sound effects, which now play when casting a wind spell. You can hear them in the attached video. Cross-Compiling is fun The speech recognition system is written in Rust, which compiles down to native code. This means that it needs to be compiled separately for each operating system, and processor architecture. Rust is more friendly to it, then C or C++ for example, but as always, compilation finds it own weird ways to break. I took the setup used by Sable as a base, with two Docker containers, one for Linux and Mac, and one for Windows. BUT: The Rust version installed in the docker image was not new enough for one of my dependencies - I had to update the rust toolchain in the container image. Compiling for linux required ALSA headers for audio access - I had to figure out, how to install them in a way, that works for both x86_64 and arm64, without breaking each other. The latest version of the base image has Mac cross compilation broken - I had to use a previous one. The image ships a MacOS SDK from 5 years ago - too old, doesn’t work, so it also had to be replaced. - the container is kinda becoming a Ship of Theseus xD My code was pulling openssl as a dependency, which was failing to compile - I had to spent over an hour, figuring out how to get rid of it from the dependency tree, discovering I can do so by updating a dependency to an unreleased version. Gradle obviously required some tweaks, who doesn’t love Gradle right? In the end I managed to get it working, which brings the mod closer to being usable by the public, outside dev environment. Downloading the model The mod works by running an IPA speech recognition model locally. The model weights around 1.2G, making it too large to be embedded in the mod jar. So I added automatic download support - the model can now be downloaded automatically on the first time an user runs the mod. There is even progress tracking, though it’s not hooked up to Minecraft yet. A Toast is also shown when the loading fails, making the mod more user friendly."}, {"post_id": 69097, "ts": "2026-09-16T11:23:50Z", "hours": 10.2308, "text": "SPELLCASTING WORKS! The main mechanic of the mod is working! YOU CAN CAST SPELLS WITH VOICE! Finally! It took soo long… After over two months of development, I finally have a proof, that my crazy idea actually works, and was worth trying out. As you can see (and hear) in the video I implemented a simple wind leap spell, as the first one in the mod. Note: There are no visuals or sounds yet, but they will be added, and this is just a proof of concept. The spell comes in three variants ʔalɪˈvɑn vɛɾtɛɾ ɛvi ˈonːdˌoː - wind launches you forward ʔalɪˈvɑn vɛɾtɛɾ ɛvi ãntikɔ - wind launches you backward ʔalɪˈvɑn vɛɾtɛɾ ɛvi fɒksɑm - wind launches you up (no matter where you are looking), not shown in the video Additionaly, it can be cast as just ʔalɪˈvɑn vɛɾtɛɾ ɛvi , which is a shortcut for the first variant. This can seen in the third attempt, where the system didin’t catch onːdˌoː , but the spell worked anyway. This flexibility is easily possible, thanks to Mojang’s brigadier library. Brigadier powers the / commands in vanilla, and now the spell syntax and execution in my mod. I settled on it after trying two alternative approaches and failing to make them work. After all, my spells are just sentences, with the only difference, is that you speak them instead of writing."}, {"post_id": 55219, "ts": "2026-08-26T20:03:24Z", "hours": 10.6233, "text": "Note: This one is kinda boring, mostly plumbing stuff to get things to work, feel free to skip it. Sephyr (the mod) I’m working on setting up the the logic for registering and casting spells. This is quite hard, as the design of the mod is far from complete, which means I don’t even know what exactly do I need. I created a registry of elements, which are a source of a color, and are going to have other effects in the future. The first word of a spell is its element. For example in the spell ʔalɪˈvɑn vɛɾtɛɾ ɛvi the word ʔalɪˈvɑn means wind. I also made a basic system for figuring out the spell the player is casting. For now its very simple and can’t handle more complex spells, for example, with optional words. The entirety is a big mess as I’m figuring things out, and the fact I’m making this mod for both Neo and Fabric doesn’t make it any easier. I also updated the mod to Minecraft 26.1.2, which means there is going to be no 1.21.1 release. Sepple (word detection system) I keep working on collecting data to finetine the speech to ipa ml model. After discovering a better way of getting the audio files while writing last devlog I scraped the download script, and instead replaced it with a new one to extract needed files from the 20GB Wiktinary audio dump tar. I also cleaned up the entire code, turning it back to human standards, after a bit of Opencode usage. (Since those are one-time scripts to extract data I decided using a bit of AI in this area won’t hurt. I don’t use AI for the rest of the project.). I also prepared a fourth script, that will use the existing multipa model, to generate IPA transcription of the files. Then files with generated IPA being too different from original IPA will be discarded, as a way to detect files, where the IPA doesn’t match the audio (because the audio contains more text for example)."}, {"post_id": 45897, "ts": "2026-08-12T17:21:05Z", "hours": 10.2356, "text": "Sephyr (the mod) A proper lifecycle of the detection system was added. The IPA model is loaded in background during game start, but the audio capture and processing start waits until you join a world, and stops once you leave it. The Rust code now has a logging hook, so that it can do civilized logging using the Java logger, instead of blatantly writing to stdout. Sepple (the voice casting detection system) I made the pipeline system cancellable, so that the mod can cleanly stop the detection, which was not possible before. Support for running the speech detection inference on GPU was added as a feature flag. For now it is not used by default, as it showed no measurable improvements over running on CPU on my PC, but it might be useful on other, weaker devices. Collecting data for training As I said too many times, the speech to IPA model used for magic speech detection is not quite the quality I would like it to be. I’m hoping to improve it by fine-tuning it on its weak areas, but for that I need some data. My idea is to use wiktionary as a data source. It is a free online dictionary run by the same people who run Wikipedia. Most words on it have the pronunciation attached both as an IPA and an audio file, which makes it ideal for the task. I downloaded a preprocessed jsonl dump file from kaikki and wrote a script to extract just words and ipa from it. Unfortunetely it was missing urls of the audio files. So I had to download a raw xml dump of the entire english wiktionary, and spend few hours writing a script to extract them. Then I used deepseek a generate a third script, to download all the audio files from a list. There is going to be almost 20k of them, and the script is running right now as I’m writing this, and it is going to take multiple hours as I can only download around 1 file per second to respect rate limits and not overburden wikimedia. And just now while writing I realized I’m an idiot, because kaikki provides a 20GB tar file with all the audio, downloading which would be more efficient."}, {"post_id": 41944, "ts": "2026-08-06T14:02:27Z", "hours": 9.6106, "text": "Integrating Rust IPA word detection with Minecraft With the IPA based magic keyword detection (which is written in Rust) working I spent all of this devlog integrating it into Minecraft. I created a new repo for the mod, using the Jared’s template. I decided to go with supporting both Fabric and Neoforge, and picked the 1.21.1 Minecraft version, though in the future I’m planning to move to 26.2 or later. I set up an additional gradle subproject and a rust package, that both together act as a Java to Rust bridge, using the j4rs crate. Using it I managed to initialize Sepple (the detection system), and get it running. The tricky part was going the other direction, to pass detected words from Rust to Java. For some reason Rust wasn’t detecting the JVM and was trying to spawn a new one! After a bit of experimentation I concluded, that I can only call Java from Rust only during the period when Java calls Rust, and only on the same thread. In the end I managed to get it working, by spawning a new thread on the Java side, and calling a blocking Rust function, that kept calling a Java callback passed to it. Originally I tried to use a static function as a callback, but for some reason (probably some kind of classloading isolation) the system was failing with some crazy null errors. I also had to adjust Sepple a bit, to not require a bunch of random json files at specific paths, and to provide an mpsc chanell directly outside its pipeline, for less boilerplate. With that I have a proof of concept working! Minecraft is receiving the detected words and printing them to chat. Note that those are all custom words, created by me specifically for this mod. This is why I had to create an entire new system for detecting them, and why they are written in the International Phonetic Language, which is also why they look a little weird in the minecraft’s font. The Java<->Rust setup is also not very good yet. For example the packaging of compiled Rust is very basic, and you can’t control the word detection from Java - no way to stop it or restart. There is also no good error handling, which means if a file is missing it will just crash everything. But it works, and I can continue working on the mod, and making it better!"}, {"post_id": 36043, "ts": "2026-07-27T21:21:56Z", "hours": 10.1719, "text": "About project Sephyr is a magic mod, with spell casting powered by speech live translated into International Phonetic Alphabet, to detecting custom-made spell words in it. Adding Voice Activity Detection - part 2 After the refactor I was able to finally add the VAD. But after few tests I noticed that the VAD was making things worse, not better! That was as a part of the previous devlog (which ran out of character limit). I added a pipeline part that writes every chunk of audio that passes through it to a file, so it can be inspected. With it I found the main problem: It took few hundred milliseconds before the VAD detected speech, so a small chunk was always cut off from the start. To fix this I added context keeping: A bunch of previous chunks are kept, and when speech is detected they are also taken into consideration. I also made the sliding window chunking aware of VAD - the VAD detector sends a signal when it detects an end of speech. The chunker then flushes its buffer into the pipeline, so that it doesn’t get stuck until next speech, and replaces it with precise amount of silenece. This way the start of next audio doesn’t get cut off later due to the sliding window mechanism. The author of the bunsen crate (providing the VAD model implementation) also released version 0.29.0, which fixed all the issues I encountered in the last devlog, and updated its API slighly, which meant that after adjusting my code I could stop using my own fork of it. Improving word detection from IPA My friend found a crate named phonetics-rs and suggested using it to improve the algorithm. This crate calculates the difference between two IPA strings, taking into account how similar they sound. This is much more accurate than just comparing strings on grapheme level. I modified my algorithm to use it, and it turned out to be a great idea, that significantly improved the detection rate of magic words. I also changed the dictionary to be sorted by longest words first, so that they take priority over short ones. So far, testing and improving the word detection algorithm has been the most fun out of the entire project. Looking at IPA strings, and figuring out why some speech has or hasn’t been classified as some word is quite fascinating. For example, I encountered a string pɾilifɛra which the model output after me saying prizim and fɛra , the two magic words that I made up for the spell system. Surprisingly, my algorithm said the string contained just prizim despite there being a literal fɛra in it. As I found out, pɾilif is closer then pɾili to prizim , and it fell under the threshold, so the algorithm took that part and left out ɛra in the buffer which was too far from fɛra . After seeing this, I made the algorithm scan the string for exact matches first, and then do fuzzy phonetic matching, also ensuring the order is preserved. I also tuned the thresholds, adding more and more tests (there is now 8 of them) to ensure the algorithm behaves well. Finally, I noticed the IPA output from the model changes based on audio’s offset in time. So I wrote a script that lets me test this, and see the effect of different offsets. What’s next There is a saying in data science: garbage in - garbage out. This is also true for my project. The detection works decently, but it also quite often outputs false positives during normal speech. I believe I did I all could to compensate for the unsatisfying quality of the speech to IPA translation model. Now I will be shifting to the Minecraft part of the project - creating a mod, integrating the detection system into it and creating spells. In paralell, I will be exploring the possibility of finetuning the model, to improve the accuracy of it and hopefully get better results. Watch the video with audio, that’s the part that matters right? :)"}, {"post_id": 27916, "ts": "2026-07-13T20:52:15Z", "hours": 30.4097, "text": "Finding words in long IPA strings For the magic system I need to find individual words in the ever accumulating string of IPA characters. To do that I hold a list of valid words in memory. When there is some text, I iterate over the dictionary, calculating a levenshtein distance between each word and start of the string. Then the word with the lowest score is taken and if the score is under a set threshold, the word is considered a match, and the matching part is remved from the buffer. To cover more cases different lengths of the string are checked. If no match is found, one character is removed from the string, and the process repeats, until all words are found. Fun fact: When comparing IPA and other non-ascii strings you need to make sure you are considering graphemes and not characters, because in UTF-8 what we perceive as one symbol, can be encoded as many characters in memory. So far this algorithm works quite well, though in the future it might need some performance optimization, or tuning, if it starts yelding too many false positives. Other misc changes: Migrated main fn to use clap for parsing arguments Added flake.nix with dev env so I can run this code on my NixOS laptop Added time information to the pipeline - Together with the audio from the mic, a timestamp is captured, and passed through entire pipeline up to the end, where it is used to discard text older then 200ms from the buffer, so that stale data doesn’t mess up new words. Adding VAD I noticed that the speech to IPA model likes to output random data when no one is talking, so I decided to add VAD - Voice Activity Detection - a system that detects if someone is talking, and only then passes the audio on. I estimated this to take me around 2 hours, and oh, how wrong I was? It took 10x that, which is why this devlog documents 3x the normal amount of time. And it still isn’t fully ready! So let me tell you what I did and why it took so long. In the Burn (ML/AI lib for Rust) discord I noticed a solution just dropped out of the sky: Merely few days before a Silero VAD model implementation was added to a library named bunsen . ML models take input as Tensor s - multidimensional arrays, which do not say in what form or shape the data is expected. So I had to figure that out myself. Fortunetely it was just 512 elements long chunks of 16khz audio with no additional pre-processing. Knowing that I fed the microphone input to the model and began to watch it output complete nonsense unrelated to whether I was speaking or not. So I started debugging - checked my code, wrote an equivalent in python using the official silero implementation to compare results - completely different. So I cloned the bunsen library, wrote an unit test there and ran off a Opencode agent. I also contacted the library author. He found one major issue, and the agent identified a second problem and wrote a solutuion - Silero VAD expects 64 samples of the previous chunk to be passed along the 512 to work correctly. I cleaned up the code, which was quite a pain because rust-analyzer was super slow on that repository, and made a PR, but it wasn’t merged because the author went with his own way of implementing it. The big refactor Coming back to my project I realized that my code strucutre makes it very hard to integrate VAD into it. So I spent the next 6 hours of so refactoring almost every file in the codebase into a new pipeline system. It lets you compose a pipeline out of a producer, many processors, and a consumer. It makes use of async, which saves on the amount of threads used. Static type checking ensures you can’t compose parts that wouldn’t work together, and all elements can also define contracts on the size of data chunks they produce and consume. I ran out of the character limit, so the rest of VAD story will be in next devlog."}, {"post_id": 11428, "ts": "2026-06-18T18:11:53Z", "hours": 4.8753, "text": "Live speech to IPA transcription in Rust using ML I finished my rough implementation of a live speech transcription pipeline. It captures my speech from the mic, and processes it with the Multipa model using the Burn framework. To make it work live I implemented a sliding window that chunks the audio into 2 second fragments, each of which is processed separately, and then assembled into a single string. The chunks overlap, and are then sliced, so that audio that was on the borders of a cut (which will reduce the quality) is thrown away, and the text for it is taken from the next chunk, for which it is at the center. The inference is running on cpu for simplicity and compatiblity, so by sacraficing a bit of pain I added threading (where each chunk is processed on a separate thread) to make sure the pipeline can keep up. I’m slightly worried about how the perfromance will be when this is going to run along Minecraft, but hopefully I will be able to make it as lightwieght and unintruisive as possible. Finally I reworked how the text is accumulated, switching from a vector of logits to a string. Since IPA has no concept of words, just phonemes, everything I say is appened to one long string. So I added a very simple silence detection, where if a captured chunk returns no text a space is added to the string. For easier teasting I also improved the main function, so that the program can: take a file and process it all at once take a file and process it using the pipeline run live mic capture on the pipeline What’s next - improving the detection In theory this is all I need, and I can start working on the Minecraft mod. However I’m not satisfied with the quality of the transcription, and at the level it currently is most spell detection will probably fail. The quality of the model itself is pretty bad. If the description on github of the Multipa model is correct, the model was trained on merely 9 hours of speech data, which probably explains it. The model is also sensitive to noise, and distractions like other people talking, and sometimes outputs garbage. So the next devlog I will be experimenting with various techinques of filtering and cleaning up the audio the model is receiving, and potentially even training a new model myself on a bigger dataset. Attached video Working demo of live capture and transcription of me talking."}, {"post_id": 9209, "ts": "2026-06-15T13:48:33Z", "hours": 3.7658, "text": "Sephyr - project overview Sephyr is an unique magic mod for Minecraft. It aims to differentiate itself by: Introducing a voice powered spell casting system , that’s both fun to use and intricate. You will be reading spells out loud into your mic in a magic language, and what will you say will affect the result of the spell. Having stunning, detailed visuals unique to each spell. This is going to be achieved by spending way too much effort on rendering. I want spell casting to be something satisfying, and the look is a key part of it. The project consits of two parts: Sephyr - The minecraft mod itself containing the spells, mechanics and visuals, written in kotlin. Sepple - Speech processing engine, responsible for transforming your babble into something Sephyr can work with and figure out what have you just said. Sepple overview Sepple is a foundation of the voice powered spell casting. It is an audio processing library written in rust, that Sephyr will depend on and embed. It captures your mic live and pre-processes the speech. Then it uses the Burn framework to locally and quickly run a speech recognition model called Multipa . The model transcribes speech into the International Phonetic Alphabet (IPA), a textual notation of various sounds that make up the spoken language. Finally it tries to match the result against a custom dictionary of magic words, which will form sentences - the spells you will be casting. This devlog Before Stardance launched I have written a rough skeleton for Sepple. With some trouble I managed to import the Multipa model to Burn via ONNX export from Pytorch, and implement the required post-processing to decode model’s output into IPA. I also started working on a pipeline for mic capture and sliding window processing, so that the audio can be transcribed live. After Stardance started I noticed that the same input audio file gives quite different result in Pytorch then in Rust. I spent few hours debugging why that is, and found a missing piece in my implemenation. For the Multipa model to work correctly the samples need to be normalized using a so-called z-score normalization. That means calculating the mean of the input and its standard deviation (a statistics measure), and applying a formula that rescales the data, so that it has a mean of 0 and standard deviation of 1. After implemenating that the model started to work correctly and give the same output for the same input on both sides. Picture: “Hello Stardance. Sepple is working now” translated to IPA using pytorch and the fixed Rust implementation. It is not veeery accurate, but it is good enough."}]...
|
Title: Sephyr Magic mod for Minecraft by @Szczurek Title: Sephyr Magic mod for Minecraft by @Szczurek | Stardance
Devlogs:
Sephyr - project overview Sephyr is an unique magic mod for Minecraft. It aims to differentiate itself by: Introducing a voice powered spell casting system , that’s both fun to use and intricate. You will be reading spells out loud into your mic in a magic language, and what will you say will affect the result of the spell. Having stunning, detailed visuals unique to each spell. This is going to be achieved by spending way too much effort on rendering. I want spell casting to be something satisfying, and the look is a key part of it. The project consits of two parts: Sephyr - The minecraft mod itself containing the spells, mechanics and visuals, written in kotlin. Sepple - Speech processing engine, responsible for transforming your babble into something Sephyr can work with and figure out what have you just said. Sepple overview Sepple is a foundation of the voice powered spell casting. It is an audio processing library written in rust, that Sephyr will depend on and embed. It captures your mic live and pre-processes the speech. Then it uses the Burn framework to locally and quickly run a speech recognition model called Multipa . The model transcribes speech into the International Phonetic Alphabet (IPA), a textual notation of various sounds that make up the spoken language. Finally it tries to match the result against a custom dictionary of magic words, which will form sentences - the spells you will be casting. This devlog Before Stardance launched I have written a rough skeleton for Sepple. With some trouble I managed to import the Multipa model to Burn via ONNX export from Pytorch, and implement the required post-processing to decode model’s output into IPA. I also started working on a pipeline for mic capture and sliding window processing, so that the audio can be transcribed live. After Stardance started I noticed that the same input audio file gives quite different result in Pytorch then in Rust. I spent few hours debugging why that is, and found a missing piece in my implemenation. For the Multipa model to work correctly the samples need to be normalized using a so-called z-score normalization. That means calculating the mean of the input and its standard deviation (a statistics measure), and applying a formula that rescales the data, so that it has a mean of 0 and standard deviation of 1. After implemenating that the model started to work correctly and give the same output for the same input on both sides. Picture: “Hello Stardance. Sepple is working now” translated to IPA using pytorch and the fixed Rust implementation. It is not veeery accurate, but it is good enough.
Live speech to IPA transcription in Rust using ML I finished my rough implementation of a live speech transcription pipeline. It captures my speech from the mic, and processes it with the Multipa model using the Burn framework. To make it work live I implemented a sliding window that chunks the audio into 2 second fragments, each of which is processed separately, and then assembled into a single string. The chunks overlap, and are then sliced, so that audio that was on the borders of a cut (which will reduce the quality) is thrown away, and the text for it is taken from the next chunk, for which it is at the center. The inference is running on cpu for simplicity and compatiblity, so by sacraficing a bit of pain I added threading (where each chunk is processed on a separate thread) to make sure the pipeline can keep up. I’m slightly worried about how the perfromance will be when this is going to run along Minecraft, but hopefully I will be able to make it as lightwieght and unintruisive as possible. Finally I reworked how the text is accumulated, switching from a vector of logits to a string. Since IPA has no concept of words, just phonemes, everything I say is appened to one long string. So I added a very simple silence detection, where if a captured chunk returns no text a space is added to the string. For easier teasting I also improved the main function, so that the program can: take a file and process it all at once take a file and process it using the pipeline run live mic capture on the pipeline What’s next - improving the detection In theory this is all I need, and I can start working on the Minecraft mod. However I’m not satisfied with the quality of the transcription, and at the level it currently is most spell detection will probably fail. The quality of the model itself is pretty bad. If the description on github of the Multipa model is correct, the model was trained on merely 9 hours of speech data, which probably explains it. The model is also sensitive to noise, and distractions like other people talking, and sometimes outputs garbage. So the next devlog I will be experimenting with various techinques of filtering and cleaning up the audio the model is receiving, and potentially even training a new model myself on a bigger dataset. Attached video Working demo of live capture and transcription of me talking.
Finding words in long IPA strings For the magic system I need to find individual words in the ever accumulating string of IPA characters. To do that I hold a list of valid words in memory. When there is some text, I iterate over the dictionary, calculating a levenshtein distance between each word and start of the string. Then the word with the lowest score is taken and if the score is under a set threshold, the word is considered a match, and the matching part is remved from the buffer. To cover more cases different lengths of the string are checked. If no match is found, one character is removed from the string, and the process repeats, until all words are found. Fun fact: When comparing IPA and other non-ascii strings you need to make sure you are considering graphemes and not characters, because in UTF-8 what we perceive as one symbol, can be encoded as many characters in memory. So far this algorithm works quite well, though in the future it might need some performance optimization, or tuning, if it starts yelding too many false positives. Other misc changes: Migrated main fn to use clap for parsing arguments Added flake.nix with dev env so I can run this code on my NixOS laptop Added time information to the pipeline - Together with the audio from the mic, a timestamp is captured, and passed through entire pipeline up to the end, where it is used to discard text older then 200ms from the buffer, so that stale data doesn’t mess up new words. Adding VAD I noticed that the speech to IPA model likes to output random data when no one is talking, so I decided to add VAD - Voice Activity Detection - a system that detects if someone is talking, and only then passes the audio on. I estimated this to take me around 2 hours, and oh, how wrong I was? It took 10x that, which is why this devlog documents 3x the normal amount of time. And it still isn’t fully ready! So let me tell you what I did and why it took so long. In the Burn (ML/AI lib for Rust) discord I noticed a solution just dropped out of the sky: Merely few days before a Silero VAD model implementation was added to a library named bunsen . ML models take input as Tensor s - multidimensional arrays, which do not say in what form or shape the data is expected. So I had to figure that out myself. Fortunetely it was just 512 elements long chunks of 16khz audio with no additional pre-processing. Knowing that I fed the microphone input to the model and began to watch it output complete nonsense unrelated to whether I was speaking or not. So I started debugging - checked my code, wrote an equivalent in python using the official silero implementation to compare results - completely different. So I cloned the bunsen library, wrote an unit test there and ran off a Opencode agent. I also contacted the library author. He found one major issue, and the agent identified a second problem and wrote a solutuion - Silero VAD expects 64 samples of the previous chunk to be passed along the 512 to work correctly. I cleaned up the code, which was quite a pain because rust-analyzer was super slow on that repository, and made a PR, but it wasn’t merged because the author went with his own way of implementing it. The big refactor Coming back to my project I realized that my code strucutre makes it very hard to integrate VAD into it. So I spent the next 6 hours of so refactoring almost every file in the codebase into a new pipeline system. It lets you compose a pipeline out of a producer, many processors, and a consumer. It makes use of async, which saves on the amount of threads used. Static type checking ensures you can’t compose parts that wouldn’t work together, and all elements can also define contracts on the size of data chunks they produce and consume. I ran out of the character limit, so the rest of VAD story will be in next devlog.
About project Sephyr is a magic mod, with spell casting powered by speech live translated into International Phonetic Alphabet, to detecting custom-made spell words in it. Adding Voice Activity Detection - part 2 After the refactor I was able to finally add the VAD. But after few tests I noticed that the VAD was making things worse, not better! That was as a part of the previous devlog (which ran out of character limit). I added a pipeline part that writes every chunk of audio that passes through it to a file, so it can be inspected. With it I found the main problem: It took few hundred milliseconds before the VAD detected speech, so a small chunk was always cut off from the start. To fix this I added context keeping: A bunch of previous chunks are kept, and when speech is detected they are also taken into consideration. I also made the sliding window chunking aware of VAD - the VAD detector sends a signal when it detects an end of speech. The chunker then flushes its buffer into the pipeline, so that it doesn’t get stuck until next speech, and replaces it with precise amount of silenece. This way the start of next audio doesn’t get cut off later due to the sliding window mechanism. The author of the bunsen crate (providing the VAD model implementation) also released version 0.29.0, which fixed all the issues I encountered in the last devlog, and updated its API slighly, which meant that after adjusting my code I could stop using my own fork of it. Improving word detection from IPA My friend found a crate named phonetics-rs and suggested using it to improve the algorithm. This crate calculates the difference between two IPA strings, taking into account how similar they sound. This is much more accurate than just comparing strings on grapheme level. I modified my algorithm to use it, and it turned out to be a great idea, that significantly improved the detection rate of magic words. I also changed the dictionary to be sorted by longest words first, so that they take priority over short ones. So far, testing and improving the word detection algorithm has been the most fun out of the entire project. Looking at IPA strings, and figuring out why some speech has or hasn’t been classified as some word is quite fascinating. For example, I encountered a string pɾilifɛra which the model output after me saying prizim and fɛra , the two magic words that I made up for the spell system. Surprisingly, my algorithm said the string contained just prizim despite there being a literal fɛra in it. As I found out, pɾilif is closer then pɾili to prizim , and it fell under the threshold, so the algorithm took that part and left out ɛra in the buffer which was too far from fɛra . After seeing this, I made the algorithm scan the string for exact matches first, and then do fuzzy phonetic matching, also ensuring the order is preserved. I also tuned the thresholds, adding more and more tests (there is now 8 of them) to ensure the algorithm behaves well. Finally, I noticed the IPA output from the model changes based on audio’s offset in time. So I wrote a script that lets me test this, and see the effect of different offsets. What’s next There is a saying in data science: garbage in - garbage out. This is also true for my project. The detection works decently, but it also quite often outputs false positives during normal speech. I believe I did I all could to compensate for the unsatisfying quality of the speech to IPA translation model. Now I will be shifting to the Minecraft part of the project - creating a mod, integrating the detection system into it and creating spells. In paralell, I will be exploring the possibility of finetuning the model, to improve the accuracy of it and hopefully get better results. Watch the video with audio, that’s the part that matters right? :)
Integrating Rust IPA word detection with Minecraft With the IPA based magic keyword detection (which is written in Rust) working I spent all of this devlog integrating it into Minecraft. I created a new repo for the mod, using the Jared’s template. I decided to go with supporting both Fabric and Neoforge, and picked the 1.21.1 Minecraft version, though in the future I’m planning to move to 26.2 or later. I set up an additional gradle subproject and a rust package, that both together act as a Java to Rust bridge, using the j4rs crate. Using it I managed to initialize Sepple (the detection system), and get it running. The tricky part was going the other direction, to pass detected words from Rust to Java. For some reason Rust wasn’t detecting the JVM and was trying to spawn a new one! After a bit of experimentation I concluded, that I can only call Java from Rust only during the period when Java calls Rust, and only on the same thread. In the end I managed to get it working, by spawning a new thread on the Java side, and calling a blocking Rust function, that kept calling a Java callback passed to it. Originally I tried to use a static function as a callback, but for some reason (probably some kind of classloading isolation) the system was failing with some crazy null errors. I also had to adjust Sepple a bit, to not require a bunch of random json files at specific paths, and to provide an mpsc chanell directly outside its pipeline, for less boilerplate. With that I have a proof of concept working! Minecraft is receiving the detected words and printing them to chat. Note that those are all custom words, created by me specifically for this mod. This is why I had to create an entire new system for detecting them, and why they are written in the International Phonetic Language, which is also why they look a little weird in the minecraft’s font. The Java<->Rust setup is also not very good yet. For example the packaging of compiled Rust is very basic, and you can’t control the word detection from Java - no way to stop it or restart. There is also no good error handling, which means if a file is missing it will just crash everything. But it works, and I can continue working on the mod, and making it better!
Sephyr (the mod) A proper lifecycle of the detection system was added. The IPA model is loaded in background during game start, but the audio capture and processing start waits until you join a world, and stops once you leave it. The Rust code now has a logging hook, so that it can do civilized logging using the Java logger, instead of blatantly writing to stdout. Sepple (the voice casting detection system) I made the pipeline system cancellable, so that the mod can cleanly stop the detection, which was not possible before. Support for running the speech detection inference on GPU was added as a feature flag. For now it is not used by default, as it showed no measurable improvements over running on CPU on my PC, but it might be useful on other, weaker devices. Collecting data for training As I said too many times, the speech to IPA model used for magic speech detection is not quite the quality I would like it to be. I’m hoping to improve it by fine-tuning it on its weak areas, but for that I need some data. My idea is to use wiktionary as a data source. It is a free online dictionary run by the same people who run Wikipedia. Most words on it have the pronunciation attached both as an IPA and an audio file, which makes it ideal for the task. I downloaded a preprocessed jsonl dump file from kaikki and wrote a script to extract just words and ipa from it. Unfortunetely it was missing urls of the audio files. So I had to download a raw xml dump of the entire english wiktionary, and spend few hours writing a script to extract them. Then I used deepseek a generate a third script, to download all the audio files from a list. There is going to be almost 20k of them, and the script is running right now as I’m writing this, and it is going to take multiple hours as I can only download around 1 file per second to respect rate limits and not overburden wikimedia. And just now while writing I realized I’m an idiot, because kaikki provides a 20GB tar file with all the audio, downloading which would be more efficient.
Note: This one is kinda boring, mostly plumbing stuff to get things to work, feel free to skip it. Sephyr (the mod) I’m working on setting up the the logic for registering and casting spells. This is quite hard, as the design of the mod is far from complete, which means I don’t even know what exactly do I need. I created a registry of elements, which are a source of a color, and are going to have other effects in the future. The first word of a spell is its element. For example in the spell ʔalɪˈvɑn vɛɾtɛɾ ɛvi the word ʔalɪˈvɑn means wind. I also made a basic system for figuring out the spell the player is casting. For now its very simple and can’t handle more complex spells, for example, with optional words. The entirety is a big mess as I’m figuring things out, and the fact I’m making this mod for both Neo and Fabric doesn’t make it any easier. I also updated the mod to Minecraft 26.1.2, which means there is going to be no 1.21.1 release. Sepple (word detection system) I keep working on collecting data to finetine the speech to ipa ml model. After discovering a better way of getting the audio files while writing last devlog I scraped the download script, and instead replaced it with a new one to extract needed files from the 20GB Wiktinary audio dump tar. I also cleaned up the entire code, turning it back to human standards, after a bit of Opencode usage. (Since those are one-time scripts to extract data I decided using a bit of AI in this area won’t hurt. I don’t use AI for the rest of the project.). I also prepared a fourth script, that will use the existing multipa model, to generate IPA transcription of the files. Then files with generated IPA being too different from original IPA will be discarded, as a way to detect files, where the IPA doesn’t match the audio (because the audio contains more text for example).
SPELLCASTING WORKS! The main mechanic of the mod is working! YOU CAN CAST SPELLS WITH VOICE! Finally! It took soo long… After over two months of development, I finally have a proof, that my crazy idea actually works, and was worth trying out. As you can see (and hear) in the video I implemented a simple wind leap spell, as the first one in the mod. Note: There are no visuals or sounds yet, but they will be added, and this is just a proof of concept. The spell comes in three variants ʔalɪˈvɑn vɛɾtɛɾ ɛvi ˈonːdˌoː - wind launches you forward ʔalɪˈvɑn vɛɾtɛɾ ɛvi ãntikɔ - wind launches you backward ʔalɪˈvɑn vɛɾtɛɾ ɛvi fɒksɑm - wind launches you up (no matter where you are looking), not shown in the video Additionaly, it can be cast as just ʔalɪˈvɑn vɛɾtɛɾ ɛvi , which is a shortcut for the first variant. This can seen in the third attempt, where the system didin’t catch onːdˌoː , but the spell worked anyway. This flexibility is easily possible, thanks to Mojang’s brigadier library. Brigadier powers the / commands in vanilla, and now the spell syntax and execution in my mod. I settled on it after trying two alternative approaches and failing to make them work. After all, my spells are just sentences, with the only difference, is that you speak them instead of writing.
Wind spells have sound now Using LMMS and ZynAddSubFx I made two wind sound effects, which now play when casting a wind spell. You can hear them in the attached video. Cross-Compiling is fun The speech recognition system is written in Rust, which compiles down to native code. This means that it needs to be compiled separately for each operating system, and processor architecture. Rust is more friendly to it, then C or C++ for example, but as always, compilation finds it own weird ways to break. I took the setup used by Sable as a base, with two Docker containers, one for Linux and Mac, and one for Windows. BUT: The Rust version installed in the docker image was not new enough for one of my dependencies - I had to update the rust toolchain in the container image. Compiling for linux required ALSA headers for audio access - I had to figure out, how to install them in a way, that works for both x86_64 and arm64, without breaking each other. The latest version of the base image has Mac cross compilation broken - I had to use a previous one. The image ships a MacOS SDK from 5 years ago - too old, doesn’t work, so it also had to be replaced. - the container is kinda becoming a Ship of Theseus xD My code was pulling openssl as a dependency, which was failing to compile - I had to spent over an hour, figuring out how to get rid of it from the dependency tree, discovering I can do so by updating a dependency to an unreleased version. Gradle obviously required some tweaks, who doesn’t love Gradle right? In the end I managed to get it working, which brings the mod closer to being usable by the public, outside dev environment. Downloading the model The mod works by running an IPA speech recognition model locally. The model weights around 1.2G, making it too large to be embedded in the mod jar. So I added automatic download support - the model can now be downloaded automatically on the first time an user runs the mod. There is even progress tracking, though it’s not hooked up to Minecraft yet. A Toast is also shown when the loading fails, making the mod more user friendly.
The Stack Overflow For some reason my mod broke and started crashing during startup, and it did so in the worst possible way - without any error message! All I got in the Intellij Idea, was a message that the process exited with the signal code 11. WHAT? That signal corresponds to SIGSEGV signal on Linux, which generally means you did something wrong with the memory. But this is Rust! There shouldn’t be any memory issues! I started searching, and I learned there is a tool called coredumpctl, which lets me access a special dump file generated in such cases, and analyze it in a debugger like GDB. So I did that, and what I found was even more bizzare! The debugger was pointing to a start of a function, before the first line. I added some debug prints, and to my disbelief, the print before calling that function ran, and the the second one, which was the first line inside the function didn’t! Fast forward a bit I managed to figure out the problem, with some help from a friend. It turned out I encountered an stack overflow! When the function was called, Rust tried to expand the stack, and crashed because the stack ran out! Why? Because the code was loaded in Java, and Java by default allocates less memory for the stack ! The solution was manually requesting a bigger stack size during thread creation in Java. I also discovered, why the problem appeared - in the Rust file download code I had allocated an array buffer of 1MB. It landed on the stack, and that was too much! The solution was using a Vec, which lives on the heap instead. Stupid problem, but took 3 hours of my time 😩 Mod init progress reporting Sephyr requires the IPA speech recognition model to work, which needs to be downloaded on the first run, and subsequently loaded from the disk. The logic was overhauled providing more corectness, and hooked up to a series of toasts. File download progress bar is shown, and the intialization state (or failure) is coummunicated to the user! See it in the video
Visualizing the keyword detection pipeline I’m not happy with the accuracy of the magic words detection system. It work half of the time, sometimes better, sometimes worse depending on the word. This make casting longer spells quite troublesome. Debugging why a specific word wasn’t detected is hard, debug prints can only get you so far. So I decided to go on a crazy sidequest and build a gui tool, that will help me debug this. I spent over 2 hours designing the concept, and over 10 implementing it, and it’s around 40% ready. The tool will display 8 strips / plots, and each plot will display some data, all on a shared timeline on the bottom, that will update live as the audio is processed. Strips 1, 2, and 4 will display waveforms of the audio at different processing stages. Strip 3 will show Voice Activity Detection score (which is used to filter out non-speech). Strips 5, 6 and 7 will display detected IPA tokens, accumulated text buffer, and detected words respectively. Strip 8 will display latency stats, which will help in optimizing it. This way I will be able to easily see, “oh, this phoneme wasn’t detected” or “oh, VAD cut out this word” or “oh, some mess accumulated in the buffer” and tweak my algorithms. AI - it’s bad, or is it? Despite looking quite simple on the surface, the app is still quite an undertaking. And it’s just a debugging tool! A thing to help me get the main goal done! I don’t want to spend too much time on it. So I considered using AI as a tool ( NOT vibecoding ). I hate vibecod(ing, ers), and I’ve always steered off AI, because very often I wasn’t satisfied with the output quality. I take pride in writing good code. But recently I’ve been trying out OpenCode here and there (on free models), and was quite surprised with it’s capabilities. Sure, it’s still often slop, but a one you can quite quickly correct, and sometimes be more effective if used correctly. AI - is it helpful? So I decided to do an experiment - can carefully planned AI usage help me write the debugging tool quickly? I started off by designing the functionality of the tool - I described the idea in detail to MiMo-V2.6-Flash, and asked it to interrogate me about as many details as possible and needed. I had to answer 35 questions, some of which were quite observant, picking me on nooks and crannies. After that a markdown file describing the design was written, and then went through few corrections. Next up, in a new session I asked MiMo to create a bullet point outline of steps needed to be done to implement the tool specified in the design file. Then one by one I went over each bullet point, asking the just released LongCat 2.5 (which has a bigger ctx window) to ask me questions, and formulate an implementation plan of it, present it to me, I gave corrections, and the point in file was replaced. This way I ended up with a second markdown file - an implementation plan. This took way too long, and was really boring. So, finally coding time. I do it like this: Ask opencode to implement a step of the plan Review the diff in vscode Remove fluff and slop manually, make sure all new code is good quality. Give feedback if I something doesn’t work like expected, or also fix it manually. After it’s good - commit Repeat for the next step It’s still not super fun, but at least I’m touching the code now, so much better already. And it is efficient! I believe it definitely would take me longer, if I wasn’t using AI. So the morale is: If you want fun, or doing something important - do it manually. If you want to do something quickly and get it out of the way less important. Here is a screen of how it is looking now: the general shape is in place, but there is no plots yet.
Keyword detection UI is done Look as this! It’s so pretty! Seeing all the data visualised is quite mesmerizing. I know the image will probably attract more views, so lemme explain what you are looking at. I’m making a minecraft mod where you cast spells by saying custom made up words, and this is a tool for debugging the keyword detection system. It’s meant for me, to help me make the detection more accurate, and reliable. I’ve been building it for the last ~20 hours, and in the last two I built the rendering of all the 8 strips. Check previous devlog if you want to know what exactly they display. It was pretty smooth sailing. As said before, since this is just a debugging tool for me, that I want to have finished quickly for it I’m using AI assistence, by letting it do stuff in small, pre-planned steps, and unsloppifying all the code between them. It’s working well. What helps, is that entire app is built on the egui / eframe crates, which I used before, and are somewhat familiar with. I gotta give credit, where is due, their api is really intuitive for the most part, and simple to use. The entire chart is also zoomable, and scrollable, and making this work was a bit of pain. I wanted to limit the accesible range to only around the data (so you can’t scroll away to far from it), and egui_plot doesn’t really provide a way to do it, so some manual calculations had to be done. I wanted to have some breathing space by allowing 0.25x of the zoom after last audio sample to be visible. This was the worst part, as it’s kind of a recursive problem - the zoom value affects how much zoom is allowed. But after around two hours I manged to figure it out, but keeping the original zoom value independantly of the limit calculated from it. Worth noting - what you see is just a mockup data, and the gui isn’t actually hooked up to the detection system, as that’s what I’m going to do next. After that I can hopefully improve the detection, and the finally go back to minecraft coding.
Debugging gui is (almost) done What is going on, why already 10 hours passed? This was menat to be a quick sidequest, where I built this gui tool for debugging how well detecting magic keywords is working BUUT given it is the third devlog about it That means it took over 30 hours! Well, happens. So, all of this devlog was spent building all the plumbing needed to capture all the data from the detection pipeline and sending it in realtime to the app. All of it is using done using channels. They are injected into the detection pipeline either as Tap<T> ‘s - a new pipeline element that clones data it sees, sends to channel, and passes it on, or using wrapper types around existing processors. The app then receives the data and displays in on the plot. I also encountered and fixed few bugs, that I didn’t expect. For example originally the zoom went to crazy values, because a timestamp used to determine where the data ends wasn’t converted to be relative to the timeline start. I also found an quite an issue introduced 3 months ago, where the timestamps attached to audio weren’t calculated properly, making entire audio chunks have identical stamps. It was minor enough that I never noticed till now, when the data landed on the plot and resulted in this funny thing you can see on the attached screenshot. Finally I added a simple scrolling animation, to amortize the jitter caused by bigger chunks of audio coming, so the plot doesn’t jump that much when going live, but it’s still not as smooth as I would like it to be. As mentioned before I was using AI assistance in strictly controlled manner (I carefully planned, revieved, cleaned up and adjusted to my liking all the code generated by it) to build this debugging tool faster, and by now I’m very tired of it. At the end of the work it started doing stupid things (possibly because some context was lost?), which made me question if it was making me faster or slower. Luckily the work is mostly over, and I can finally get to other, more interesting stuff, that will be fun to do, with no AI. Next I want to use the tool to improve the detection a bit, and spend more time working on the actual mod.
Multiloader modding is pain Can’t NeoForge and Fabric just have one common api, for all the boring stuff like registration, networking and events? I’ve had enough, so I spent 2 hours porting my mod to Balm , which is a library providing exactly that. The result is beautiful - ~150 lines are gone, and the loader specific subprojects fit under 10 lines of code, as I was able to move everything to common. Now for the worst irony: I spent my time doing all of that and the next thing I’m gonna do is… disable fabric support 😭 Why, you may ask? I was forced into it by reality read on First VFX I made my first VFX, for the leap spell. You can see it in the attached video. It’s going to spawn under player’s legs. For now it’s a really simple one, as I’m rushing to add a bit more of content, than just a single spell, before Stardance ends. It is made using Photon Editor , which is a VFX editor for Minecraft. It has a lot of good stuff, like emitters, timeline and animation curves, which will be crucial in making more advanced effects. Only downside: It doesn’t support Fabric, which is why support for it is going to be disabled for now, until I manage to hopefully make a port it in the future. Reworking spell internals (again) After making the effect, I realized I have no way to run it from the spell code, because spell logic runs server side only, and VFX needs to be played on the client. So I wen’t back to the drawing board, and I’m going to change how spells run. They are going be entities now, but more on that next devlog, because it’s not done yet, as I ran into friction in the code, which triggered me to do the Balm refactor, and in the meantime the time counter hit 9,5h. Do NOT hardcode stuff please I had to do some work on my laptop today, which has NixOS. So I update my Sephyr clone, try to run it, and bada bing bada bum, it doesn’t work! What’s going on? After a hour of debugging, it turned out that NeoForge devs hardcoded their Gradle plugin to run one specific task using Java 21. The rest runs on Java 25 (the one used by Minecraft 26.1). So, be default, a NeoForge setup for Mc 26.1+ requires two java version. Normally the second one is autodownloaded, but that doesn’t work on NixOS, and that’s also bloat. I don’t want that! So I made a bug report . Fortunetely it isn’t really hardcoded, just dumb, and I was able to fix it with this line in build.gradle Update to Burn 0.22 Burn 0.22 was recently released, removing the Backend generic from most of it’s traits. I updated Sepple to work with that. I also had to regenerate the model code for the multipa model. I was hoping the update would provide some speedup to speech processing, but I wasn’t able to measure any difference. Replacing Multipa with Zipa I found a new speech-to-IPA model. It’s called Zipa , and it looks very promising. It’s around 4x smaller then multipa, which means faster processing and less to download for end users. Furthermore, according to it’s paper, and my few tests it has noticeable better accuracy! So I implemnted it. It was a little more trouble then multipa, because the model has a much richer pre-processing. The audio waveform is turned into a mel spectogram, Fourier Transform is done, and other stuff happens. Buuut there is a problem. It turns out the model is great at doing recognition on longer audio sequences, and doesn’t really work that well on short ones. For them it performed worse then multipa! That means it’s not suitable for doing recognition in realtime, at least when plugged in the same way multipa was. However I have a couple ideas to try, which might, hopefully, solve the issue. Until I do that, it is set aside on a separate branch....
|
1792641292.6978648
|
1793246092.6978648
|
|
66618
|
My macropad! :D by @LeonVP29 | Stardance
|
LeonVP29
|
0
|
6.22
|
0
|
[]
|
[{"post_id": 81654, "ts": "202 [{"post_id": 81654, "ts": "2026-10-21T22:26:17Z", "hours": 5.8319, "text": "i just finished designing the pcb for my first ever custom hardware build! , if you are seeing this im working now on the case for the hackpad so please follow so you can see how my proyect ends here is what it has: -9 switches to move and others than are custom -1 oled screen. display anything yayyyyyyyyy!!! a rotative encoder, change the volume with it OWO yayyyyyyyyyy so much fun! and then i will be able to build it, thats all for now see ya in the next devlog!!! :D"}, {"post_id": 80481, "ts": "2026-10-17T20:01:05Z", "hours": 0.3836, "text": "hello everyone, im currently working on mi macropad and i just ended the pcb guide but i want to make a macropad of 3x3 with the led screen and 2 knots, so if anyone than see this than know how to make one pls help me, dm me on slack as leon.vp29 and help me to understand pls, thats all for this devlog, see ya in the next one"}]...
|
Title: My macropad! :D by @LeonVP29 | Stardance
D Title: My macropad! :D by @LeonVP29 | Stardance
Devlogs:
hello everyone, im currently working on mi macropad and i just ended the pcb guide but i want to make a macropad of 3x3 with the led screen and 2 knots, so if anyone than see this than know how to make one pls help me, dm me on slack as leon.vp29 and help me to understand pls, thats all for this devlog, see ya in the next one
i just finished designing the pcb for my first ever custom hardware build! , if you are seeing this im working now on the case for the hackpad so please follow so you can see how my proyect ends here is what it has: -9 switches to move and others than are custom -1 oled screen. display anything yayyyyyyyyy!!! a rotative encoder, change the volume with it OWO yayyyyyyyyyy so much fun! and then i will be able to build it, thats all for now see ya in the next devlog!!! :D...
|
1793101749.018184
|
1793706549.018184
|
|
60793
|
YSH for Slack (Bot) by @Yousuff | Stardance
|
Yousuff
|
2
|
11.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T06:59:34Z", "hours": 1.0, "multiplier": 6.35, "payout": 3, "blessing": "neutral", "text": "YSH Slack Bot - truly inspired from YSH terminal with succeing commands like YSH Slack Bot v1.1 — A 24/7 YSH-style Slack bot with 20+ commands, custom ASCII branding, themes, achievements, command history, system information, Easter eggs, and Slack-native utilities. Built with Slack Bolt JS + Socket Mode and deployed on Railway. 21 slash commands 6 themes — Matrix, Blue, Purple, Red, Dark, Light 5 achievements — First Command, Calculator, Explorer, Timekeeper, Themed 20-command history capacity per user 4 Easter-egg/fun commands — /ysh-hello, /ysh-neofetch, /ysh-random, /ysh-404 Live Slack bot: YSH is installed in the Hack Club workspace and runs 24/7 through Slack Socket Mode + Railway. Use /ysh-help in Slack to try it.", "repo": "https://github.com/YousufProjs-exe/YSH-Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C16SN12P5"}, {"ship_num": 2, "ts": "2026-09-11T17:58:05Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "██╗ ██╗ ███████╗ ██╗ ██╗ ██╗ ██╔╝ ██╔════╝ ██║ ██║ ╚████╔╝ ███████╗ ███████║ ╚██╔╝ ╚════██║ ██╔══██║ ██║ ███████║ ██║ ██║ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ YSH Slack Bot v1.1 — A 24/7 YSH-style Slack bot with 20+ commands, custom ASCII branding, themes, achievements, command history, system information, Easter eggs, and Slack-native utilities. Built with Slack Bolt JS + Socket Mode and deployed on Railway. 21 slash commands 6 themes — Matrix, Blue, Purple, Red, Dark, Light 5 achievements — First Command, Calculator, Explorer, Timekeeper, Themed 20-command history capacity per user 4 Easter-egg/fun commands — /ysh-hello, /ysh-neofetch, /ysh-random, /ysh-404 Live Slack bot: YSH is installed in the Hack Club workspace and runs 24/7 through Slack Socket Mode + Railway. Use /ysh-help in Slack to try it.", "repo": "https://github.com/YousufProjs-exe/YSH-Slack-Bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C16SN12P5"}]...
|
[{"post_id": 81653, "ts": "202 [{"post_id": 81653, "ts": "2026-10-21T22:10:59Z", "hours": 2.6506, "text": "YSH Slack Bot v2 is finally completed with the last added command - /ysh-poll now you can cast a poll with a question and 2 - 5 options !! try it in #ysh-test @Slack"}, {"post_id": 81559, "ts": "2026-10-21T17:59:23Z", "hours": 1.0703, "text": "Added quotes !! 11 unique quotes got some of them from Google , coz I ran of some."}, {"post_id": 81539, "ts": "2026-10-21T16:52:40Z", "hours": 1.1456, "text": "After sooo many tries and fails /ysh-remind is working !! Just added /ysh-remind to help you ofc !"}, {"post_id": 81519, "ts": "2026-10-21T15:42:05Z", "hours": 0.515, "text": "Added password ! now YSH bot can help u suggesting a password ! try /ysh-password in #ysh-test @Slack !"}, {"post_id": 81470, "ts": "2026-10-21T11:57:52Z", "hours": 0.5625, "text": "Added - whoami command which shoes your name and ID ! try - /ysh-whoami in #ysh-test @Slack !"}, {"post_id": 81465, "ts": "2026-10-21T11:22:47Z", "hours": 0.5242, "text": "Yahhh Added Dice to roll any of 6 numbers ofc and Coinflip and Dice working !"}, {"post_id": 81456, "ts": "2026-10-21T10:46:50Z", "hours": 0.5358, "text": "added coinflip to the crew!!!"}, {"post_id": 66784, "ts": "2026-09-12T17:47:32Z", "hours": 0.7272, "text": "now this new YSH Bot is build from scratch and i hope that shipwright now test is correctly, Avoid CODE BLOCK these are Splash Commands , Commands as CODE BLOCK doesnt work! thats basic."}, {"post_id": 66086, "ts": "2026-09-11T17:41:57Z", "hours": 1.1258, "text": "Upgraded v1.0 into a more complete Slack experience with themes, achievements, command history, system info, Easter eggs, and new Slack-native commands. Also completed the 24/7 live deployment. try “/ysh-[command]”"}, {"post_id": 65914, "ts": "2026-09-11T11:34:57Z", "hours": 1.7883, "text": "YSH-v1.0 (Slack Bot), not just a regular Slack bot but v1.0 comes with /ysh- : legacy YSH commands like help, about, whoami, echo, pwd, ls, whatsup; and theres more to come!"}]...
|
Title: YSH for Slack (Bot) by @Yousuff | Stardance Title: YSH for Slack (Bot) by @Yousuff | Stardance
Devlogs:
YSH-v1.0 (Slack Bot), not just a regular Slack bot but v1.0 comes with /ysh- : legacy YSH commands like help, about, whoami, echo, pwd, ls, whatsup; and theres more to come!
Upgraded v1.0 into a more complete Slack experience with themes, achievements, command history, system info, Easter eggs, and new Slack-native commands. Also completed the 24/7 live deployment. try “/ysh-[command]”
now this new YSH Bot is build from scratch and i hope that shipwright now test is correctly, Avoid CODE BLOCK these are Splash Commands , Commands as CODE BLOCK doesnt work! thats basic.
added coinflip to the crew!!!
Yahhh Added Dice to roll any of 6 numbers ofc and Coinflip and Dice working !
Added - whoami command which shoes your name and ID ! try - /ysh-whoami in #ysh-test @Slack !
Added password ! now YSH bot can help u suggesting a password ! try /ysh-password in #ysh-test @Slack !
After sooo many tries and fails /ysh-remind is working !! Just added /ysh-remind to help you ofc !
Added quotes !! 11 unique quotes got some of them from Google , coz I ran of some.
YSH Slack Bot v2 is finally completed with the last added command - /ysh-poll now you can cast a poll with a question and 2 - 5 options !! try it in #ysh-test @Slack
Ships:
██╗ ██╗ ███████╗ ██╗ ██╗ ██╗ ██╔╝ ██╔════╝ ██║ ██║ ╚████╔╝ ███████╗ ███████║ ╚██╔╝ ╚════██║ ██╔══██║ ██║ ███████║ ██║ ██║ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ YSH Slack Bot v1.1 — A 24/7 YSH-style Slack bot with 20+ commands, custom ASCII branding, themes, achievements, command history, system information, Easter eggs, and Slack-native utilities. Built with Slack Bolt JS + Socket Mode and deployed on Railway. 21 slash commands 6 themes — Matrix, Blue, Purple, Red, Dark, Light 5 achievements — First Command, Calculator, Explorer, Timekeeper, Themed 20-command history capacity per user 4 Easter-egg/fun commands — /ysh-hello, /ysh-neofetch, /ysh-random, /ysh-404 Live Slack bot: YSH is installed in the Hack Club workspace and runs 24/7 through Slack Socket Mode + Railway. Use /ysh-help in Slack to try it.
YSH Slack Bot - truly inspired from YSH terminal with succeing commands like YSH Slack Bot v1.1 — A 24/7 YSH-style Slack bot with 20+ commands, custom ASCII branding, themes, achievements, command history, system information, Easter eggs, and Slack-native utilities. Built with Slack Bolt JS + Socket Mode and deployed on Railway. 21 slash commands 6 themes — Matrix, Blue, Purple, Red, Dark, Light 5 achievements — First Command, Calculator, Explorer, Timekeeper, Themed 20-command history capacity per user 4 Easter-egg/fun commands — /ysh-hello, /ysh-neofetch, /ysh-random, /ysh-404 Live Slack bot: YSH is installed in the Hack Club workspace and runs 24/7 through Slack Socket Mode + Railway. Use /ysh-help in Slack to try it....
|
1793206529.9870253
|
1793292929.9870253
|
|
13013
|
Goofy-Goober by @LPcomix123 | Stardance
|
LPcomix123
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-21T21:42:52Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Over the past few days, I have been making a slack bot along with the stardance guide. I have learned how to code basic slack bots in node.js, and how to securely store and use bot and app tokens and api keys in a .env. Some commands include (but not limited to): /goofy-goober-ranfact which gives you a random fact, and: /goofy-goober-wotd which gives you the word of the day.", "repo": "https://github.com/LPcomix123/Goofy-Goober", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?skip_today=1"}]...
|
[{"post_id": 81647, "ts": "202 [{"post_id": 81647, "ts": "2026-10-21T21:28:23Z", "hours": 3.6494, "text": "Over the last few days, I have been developing a node.js slack bot by following the stardance mission and guide."}]...
|
Title: Goofy-Goober by @LPcomix123 | Stardance
De Title: Goofy-Goober by @LPcomix123 | Stardance
Devlogs:
Over the last few days, I have been developing a node.js slack bot by following the stardance mission and guide.
Ships:
Over the past few days, I have been making a slack bot along with the stardance guide. I have learned how to code basic slack bots in node.js, and how to securely store and use bot and app tokens and api keys in a .env. Some commands include (but not limited to): /goofy-goober-ranfact which gives you a random fact, and: /goofy-goober-wotd which gives you the word of the day....
|
1793206164.133457
|
1793292564.133457
|
|
51788
|
My own web OS by @Dragonfly | Stardance
|
Dragonfly
|
0
|
22.26
|
0
|
[]
|
[{"post_id": 81646, "ts": "202 [{"post_id": 81646, "ts": "2026-10-21T21:20:03Z", "hours": 1.0292, "text": "Yayy I finished my notes app (for now - idk if I want to add things like typing in bold, italics, etc… later) and I added a word and character count that shows the words and characters for text you highlight which is pretty neat."}, {"post_id": 80660, "ts": "2026-10-18T13:01:06Z", "hours": 8.3294, "text": "I think I should probably post a devlog before I reach 10 hrs so here it is. I really should have done another one recently but oh well. I’m almost finished with the first app I’m making. I have finished the ‘my notes’ section - it has a menu of entries of notes and for the ‘your notes’ section, you can write notes that are automatically saved, there are word and character counts and soon I will make it so that the text you highlight, the counts for that will show instead and I might add features like writing in bold, italics, different font, etc… I have also made windows resizeable and I think that’s about it."}, {"post_id": 76253, "ts": "2026-10-02T22:12:55Z", "hours": 3.4939, "text": "Oh my golly goodness why is the time I have ‘spent’ coding so damn high? I feel like this number most likely is inflated by at least a couple hours but I swear I’m not doing it on purpose. The number just keeps rising somehow! Anyway I haven’t finished my first app yet and I’m going pretty damn slow. I now have it so when I click a window it rises to the top and that’s the most of it I think. Nothing compared to what you would expect from allegedly 3.5 more hours coding time from my last dev log!"}, {"post_id": 73915, "ts": "2026-09-26T09:46:09Z", "hours": 3.6764, "text": "I can now drag around, close and open my windows and I’m about to make my first app and after that I’ll make my second, finish the jam and ship it and then start working on it more for WebOS 2."}, {"post_id": 71322, "ts": "2026-09-20T17:00:17Z", "hours": 2.2953, "text": "Devlog #4: I have finished the second part of making my WebOS and will start part 3 soon. I have also added an extra thing with the help of ChatGPT (i made a bottom bar with the time on it that stays in place no matter where you scroll :D). (I am new to this stuff and it’s taking a crap ton of time don’t judge or whatever)"}, {"post_id": 70313, "ts": "2026-09-18T22:34:52Z", "hours": 0.3325, "text": "Ok so the awesome Github AI did it for me and it looks pretty neat."}, {"post_id": 70297, "ts": "2026-09-18T21:54:51Z", "hours": 2.4781, "text": "Devlog 2: My Web OS is coming along better and honestly I probably should have more done for the time I have logged but I am completely new to HTML so I am learning at every step. I want to add a white background around the text next so I’ll do that maybe tommorow because it’s late for me rn. The background is animated which is pretty cool although you can’t see in the screenshot."}, {"post_id": 66781, "ts": "2026-09-12T17:45:58Z", "hours": 0.6264, "text": "I’ve just started my first project and I’m struggling lol. The first part of this thing was meant to only take 30 mins but its been more time than that so far and I’m not even halfway through :(. This devlog won’t be visible to most people yet lol because I’m having trouble doing the identity verification thing because it says I used all my attempts or whatever even though I don’t think I did XD."}]...
|
Title: My own web OS by @Dragonfly | Stardance
De Title: My own web OS by @Dragonfly | Stardance
Devlogs:
I’ve just started my first project and I’m struggling lol. The first part of this thing was meant to only take 30 mins but its been more time than that so far and I’m not even halfway through :(. This devlog won’t be visible to most people yet lol because I’m having trouble doing the identity verification thing because it says I used all my attempts or whatever even though I don’t think I did XD.
Devlog 2: My Web OS is coming along better and honestly I probably should have more done for the time I have logged but I am completely new to HTML so I am learning at every step. I want to add a white background around the text next so I’ll do that maybe tommorow because it’s late for me rn. The background is animated which is pretty cool although you can’t see in the screenshot.
Ok so the awesome Github AI did it for me and it looks pretty neat.
Devlog #4: I have finished the second part of making my WebOS and will start part 3 soon. I have also added an extra thing with the help of ChatGPT (i made a bottom bar with the time on it that stays in place no matter where you scroll :D). (I am new to this stuff and it’s taking a crap ton of time don’t judge or whatever)
I can now drag around, close and open my windows and I’m about to make my first app and after that I’ll make my second, finish the jam and ship it and then start working on it more for WebOS 2.
Oh my golly goodness why is the time I have ‘spent’ coding so damn high? I feel like this number most likely is inflated by at least a couple hours but I swear I’m not doing it on purpose. The number just keeps rising somehow! Anyway I haven’t finished my first app yet and I’m going pretty damn slow. I now have it so when I click a window it rises to the top and that’s the most of it I think. Nothing compared to what you would expect from allegedly 3.5 more hours coding time from my last dev log!
I think I should probably post a devlog before I reach 10 hrs so here it is. I really should have done another one recently but oh well. I’m almost finished with the first app I’m making. I have finished the ‘my notes’ section - it has a menu of entries of notes and for the ‘your notes’ section, you can write notes that are automatically saved, there are word and character counts and soon I will make it so that the text you highlight, the counts for that will show instead and I might add features like writing in bold, italics, different font, etc… I have also made windows resizeable and I think that’s about it.
Yayy I finished my notes app (for now - idk if I want to add things like typing in bold, italics, etc… later) and I added a word and character count that shows the words and characters for text you highlight which is pretty neat....
|
1792684251.4057527
|
1793289051.4057527
|