|
55454
|
My Boba website by @projectroshan917 | Stardance
|
projectroshan917
|
1
|
17.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T09:28:34Z", "hours": 17.0, "multiplier": 1.2, "payout": 6, "blessing": "neutral", "text": "I made and Boba tea webside where my experience of Boba tea with Hackclub is presented. In this website three sections are present first one about section where info about connection between boba and me is presented, second one The journey where my journey of getting Boba tea from Hackclub is presented and third one is gallery where our Boba tea is shown. Features: (About section): Where info about connection between boba and me is presented. (The journey): Where my journey of getting Boba tea from Hackclub is presented. (Gallery): Where Boba teas are showoff with joy and happiness. (Dark mode): This webside also have a feature of dark mode which can save your eyes form eye glasses.", "repo": "https://github.com/Roshan-coder123/Boba-drops", "demo": "https://roshan-coder123.github.io/Boba-drops/"}]...
|
[{"post_id": 56625, "ts": "202 [{"post_id": 56625, "ts": "2026-08-28T13:39:24Z", "hours": 17.2422, "text": "This is my customised Boba website for stardance."}]...
|
Title: My Boba website by @projectroshan917 | Star Title: My Boba website by @projectroshan917 | Stardance
Devlogs:
This is my customised Boba website for stardance.
Ships:
I made and Boba tea webside where my experience of Boba tea with Hackclub is presented. In this website three sections are present first one about section where info about connection between boba and me is presented, second one The journey where my journey of getting Boba tea from Hackclub is presented and third one is gallery where our Boba tea is shown. Features: (About section): Where info about connection between boba and me is presented. (The journey): Where my journey of getting Boba tea from Hackclub is presented. (Gallery): Where Boba teas are showoff with joy and happiness. (Dark mode): This webside also have a feature of dark mode which can save your eyes form eye glasses....
|
1792878627.6792226
|
1793742627.6792226
|
|
51958
|
Macbook Animation by @Cool_Kaushal123 | Stardance
|
Cool_Kaushal123
|
1
|
14.82
|
145
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T23:01:01Z", "hours": 12.0, "multiplier": 11.66, "payout": 145, "blessing": "neutral", "text": "What I made was Macbook animation by using the 3D modeling software blender. What was pretty challenges was basically everything because I have never animated in blender in my life before, so everything was new and I tried to understand how to do everything. And I am proud of that I completed my goal of making an apple worthy commericial using their styles but with my creativity. Just use the Demo URL to watch and access my video!", "repo": "https://github.com/kaushal123-cool/MacbookAnimation", "demo": "https://kaushal123-cool.github.io/MacbookAnimation/"}]...
|
[{"post_id": 58532, "ts": "202 [{"post_id": 58532, "ts": "2026-08-30T23:32:32Z", "hours": 2.82, "text": "This time I actually finished! This is probably gonna be the last devlog. The problem with my first shi[ was that my blender animation had to have code in some way, so I just made a very very simple website just to display my blender animation and also to give a short and concise summary of what I made I think I did pretty good. The website also has this 3d model that you can move around, credit to Steven Yap again because this model was made by him that I got from BlendKit. The demo link is given below hope you guys like it! https://kaushal123-cool.github.io/MacbookAnimation/"}, {"post_id": 54822, "ts": "2026-08-25T23:42:02Z", "hours": 1.8053, "text": "I finished!!! I made all the transition smooth when it was a little crusty I just added a mix transition using the I am using editor (capcut). It took a lot of time to also add the gradients and make it work with the animation because you had to use duplicates and also in general making the text move using key frames was a first for me. But I think it turned out pretty good I am finalizing the gist of what I made before I ship it. Thank you guys for watching it!"}, {"post_id": 53812, "ts": "2026-08-24T14:46:49Z", "hours": 3.4533, "text": "I have finished the entire commercial it looks pretty good but I am making a better version to make the transititons way smoother it will take me a lot of time but I can do it. What I added now is the domino effect of the laptop and all the text which I added on an editing software. Hope you like version one of the final commericial. Stay tuned for the version two (which will be way better trust)!"}, {"post_id": 53238, "ts": "2026-08-23T17:57:53Z", "hours": 1.0281, "text": "I have made another scene through scene that I will connect to final animation through some editing software to add transitions so I can bring it all together (this is just in unfinished cut version not I did not add transitions yet). I think it is looking pretty good for being my first time ever animating in blender. Hope you all like it!"}, {"post_id": 53134, "ts": "2026-08-23T15:46:37Z", "hours": 2.3325, "text": "What I did for the 2 hours was I finished the entire first render (the video is below). But I am also trying to brainstorm other scene ideas because I dont think this is enough. The last scene in the video took so long because the angle was really complicated and hard to capture and the closing lid scene was also very very hard because the lid of the laptop wasn’t moving on the hinge so I had to manually add a line of rotation which took a lot of time. And also I added some music from an official apple add credit to them. Hope you like this video! :)"}, {"post_id": 52510, "ts": "2026-08-22T17:31:22Z", "hours": 2.3183, "text": "I have been working on the second scene for my recreation of an apple commericial. This zoom in scene took way to long to perfect but in my opinion it looks pretty good. And I also worked on the transition between the first and the second scene. I am still brainstorming the next scene but stay tuned for the final result!"}, {"post_id": 51983, "ts": "2026-08-21T23:54:11Z", "hours": 1.5397, "text": "What I have been doing for the past 1 hour and 30 minutes is I chose a good macbook file that I can animate well into a apple like commericial next I thought about ideas and made the first scene where two laptops come out behind the one in the front which fits well as the introduction for the commercial. Trust the process :)"}]...
|
Title: Macbook Animation by @Cool_Kaushal123 | Sta Title: Macbook Animation by @Cool_Kaushal123 | Stardance
Devlogs:
What I have been doing for the past 1 hour and 30 minutes is I chose a good macbook file that I can animate well into a apple like commericial next I thought about ideas and made the first scene where two laptops come out behind the one in the front which fits well as the introduction for the commercial. Trust the process :)
I have been working on the second scene for my recreation of an apple commericial. This zoom in scene took way to long to perfect but in my opinion it looks pretty good. And I also worked on the transition between the first and the second scene. I am still brainstorming the next scene but stay tuned for the final result!
What I did for the 2 hours was I finished the entire first render (the video is below). But I am also trying to brainstorm other scene ideas because I dont think this is enough. The last scene in the video took so long because the angle was really complicated and hard to capture and the closing lid scene was also very very hard because the lid of the laptop wasn’t moving on the hinge so I had to manually add a line of rotation which took a lot of time. And also I added some music from an official apple add credit to them. Hope you like this video! :)
I have made another scene through scene that I will connect to final animation through some editing software to add transitions so I can bring it all together (this is just in unfinished cut version not I did not add transitions yet). I think it is looking pretty good for being my first time ever animating in blender. Hope you all like it!
I have finished the entire commercial it looks pretty good but I am making a better version to make the transititons way smoother it will take me a lot of time but I can do it. What I added now is the domino effect of the laptop and all the text which I added on an editing software. Hope you like version one of the final commericial. Stay tuned for the version two (which will be way better trust)!
I finished!!! I made all the transition smooth when it was a little crusty I just added a mix transition using the I am using editor (capcut). It took a lot of time to also add the gradients and make it work with the animation because you had to use duplicates and also in general making the text move using key frames was a first for me. But I think it turned out pretty good I am finalizing the gist of what I made before I ship it. Thank you guys for watching it!
This time I actually finished! This is probably gonna be the last devlog. The problem with my first shi[ was that my blender animation had to have code in some way, so I just made a very very simple website just to display my blender animation and also to give a short and concise summary of what I made I think I did pretty good. The website also has this 3d model that you can move around, credit to Steven Yap again because this model was made by him that I got from BlendKit. The demo link is given below hope you guys like it! https://kaushal123-cool.github.io/MacbookAnimation/
Ships:
What I made was Macbook animation by using the 3D modeling software blender. What was pretty challenges was basically everything because I have never animated in blender in my life before, so everything was new and I tried to understand how to do everything. And I am proud of that I completed my goal of making an apple worthy commericial using their styles but with my creativity. Just use the Demo URL to watch and access my video!...
|
1792878626.8391728
|
1793742626.8391728
|
|
53132
|
SpiderWebOS by @aaradhyap | Stardance
|
aaradhyap
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T03:57:47Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made my own PERSONAL OS called SpiderOS. What I love about this OS is that it has many goofy and personal elements to me and I am might proud that I have built an actual functioning Web OS which works kind of like windows. What was very challenging was to get the SVG right and I did have to use AI to get the SVG right. This OS first has a welcome screen that will tell you all about me, the creator of the OS. You can explore 2 more apps, one is thread book that is personalised to me, and the other is Between the Threads, which is an interactive and beautiful story of a spider. I’m sure you will love Between the Threads! It also has a ticking timer, and it has all the features that have been listed by the guide, but there is 1 extra feature: A day and night toggle! Now you can save your eyes by this feature during the nighttime and not blow away your beauty sleep. Thread book is an app that tells you all about me in a very nice way and it’s like my very own scrapbook! Between the Threads is the story of a spider that weaves its web depending on what choices you take. The Welcome Screen can be accessed again by clicking on the SpiderOS text on the top. All 3 windows are draggable, closable and reopenable. Also, you open the apps by double clicking them, with a single click only highlighting them. There is also z-index prioritization so say if I have both Thread book and Welcome Screen window and Thread book is on top of Welcome Screen window, then I can just click on the Welcome Screen window, and it will come before thread book. It has a very green theme to it as green is one of the most calming colours, actually it is the most calming colour and I wanted my OS to be calming, so that is why it has a lot of green elements to it. It is deployed on Nest so that it can run 24/7 even when my laptop is turned off, so anyone can use it. IT IS NOT PASSWORD PROTECTED!! (If you’re wondering what the home page is, that is me and my friends during sports day, the timing of that photo was awful 😭)", "repo": "https://github.com/AARADHYAPATEL/SpiderWebOS", "demo": "https://spideros.aaradhyap.hackclub.app/"}]...
|
[{"post_id": 54362, "ts": "202 [{"post_id": 54362, "ts": "2026-08-25T10:02:00Z", "hours": 0.5253, "text": "Added an extra feature: Dark mode and Light mode toggle"}, {"post_id": 54306, "ts": "2026-08-25T08:02:09Z", "hours": 2.1375, "text": "Between the threads, an interactive story, is added!"}, {"post_id": 53842, "ts": "2026-08-24T15:18:55Z", "hours": 2.0764, "text": "THREADBOOK IS FINALLY HERE. YAYYYY"}, {"post_id": 53706, "ts": "2026-08-24T11:45:35Z", "hours": 0.3994, "text": "Made the open and close button work. This is the close button working but the open button also works."}, {"post_id": 53149, "ts": "2026-08-23T16:07:44Z", "hours": 0.4614, "text": "Made the window move, improved some styling and began adding close button!"}, {"post_id": 53127, "ts": "2026-08-23T15:38:11Z", "hours": 0.3233, "text": "Created top bar for SpiderOS with customized styling!"}, {"post_id": 53100, "ts": "2026-08-23T15:15:55Z", "hours": 0.615, "text": "This is the beginning of designing the desktop"}, {"post_id": 52845, "ts": "2026-08-23T06:19:01Z", "hours": 0.3114, "text": "This is the 2nd and 3rd design waves combined"}, {"post_id": 52815, "ts": "2026-08-23T05:12:40Z", "hours": 0.385, "text": "Styling Entire spider OS in a calm green colour"}, {"post_id": 52808, "ts": "2026-08-23T04:48:45Z", "hours": 0.3797, "text": "The Welcome Page of SpiderWebOS"}]...
|
Title: SpiderWebOS by @aaradhyap | Stardance
Devl Title: SpiderWebOS by @aaradhyap | Stardance
Devlogs:
The Welcome Page of SpiderWebOS
Styling Entire spider OS in a calm green colour
This is the 2nd and 3rd design waves combined
This is the beginning of designing the desktop
Created top bar for SpiderOS with customized styling!
Made the window move, improved some styling and began adding close button!
Made the open and close button work. This is the close button working but the open button also works.
THREADBOOK IS FINALLY HERE. YAYYYY
Between the threads, an interactive story, is added!
Added an extra feature: Dark mode and Light mode toggle
Ships:
I have made my own PERSONAL OS called SpiderOS. What I love about this OS is that it has many goofy and personal elements to me and I am might proud that I have built an actual functioning Web OS which works kind of like windows. What was very challenging was to get the SVG right and I did have to use AI to get the SVG right. This OS first has a welcome screen that will tell you all about me, the creator of the OS. You can explore 2 more apps, one is thread book that is personalised to me, and the other is Between the Threads, which is an interactive and beautiful story of a spider. I’m sure you will love Between the Threads! It also has a ticking timer, and it has all the features that have been listed by the guide, but there is 1 extra feature: A day and night toggle! Now you can save your eyes by this feature during the nighttime and not blow away your beauty sleep. Thread book is an app that tells you all about me in a very nice way and it’s like my very own scrapbook! Between the Threads is the story of a spider that weaves its web depending on what choices you take. The Welcome Screen can be accessed again by clicking on the SpiderOS text on the top. All 3 windows are draggable, closable and reopenable. Also, you open the apps by double clicking them, with a single click only highlighting them. There is also z-index prioritization so say if I have both Thread book and Welcome Screen window and Thread book is on top of Welcome Screen window, then I can just click on the Welcome Screen window, and it will come before thread book. It has a very green theme to it as green is one of the most calming colours, actually it is the most calming colour and I wanted my OS to be calming, so that is why it has a lot of green elements to it. It is deployed on Nest so that it can run 24/7 even when my laptop is turned off, so anyone can use it. IT IS NOT PASSWORD PROTECTED!! (If you’re wondering what the home page is, that is me and my friends during sports day, the timing of that photo was awful 😭)...
|
1792878626.0135827
|
1793742626.0135827
|
|
69853
|
My very own WebOS by @rizcodes | Stardance
|
rizcodes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @rizcodes | Stardance
|
1792878625.1763003
|
1793483425.1763003
|
|
69852
|
My awesome macropad! by @Starproof | Stardance
|
Starproof
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Starproof | Starda Title: My awesome macropad! by @Starproof | Stardance...
|
1792878624.2792628
|
1793483424.2792628
|
|
69851
|
MB Miggy Bot by @Miguelito | Stardance
|
Miguelito
|
0
|
4.22
|
0
|
[]
|
[{"post_id": 81900, "ts": "202 [{"post_id": 81900, "ts": "2026-10-22T22:17:19Z", "hours": 1.4658, "text": "I’m now integrating the touch sensor so you can interact with the robot but it is’nt finish yet because I’m having a problem at the r4 because it remembers the old code I uploaded then it cannot upload the new code i want to upload"}, {"post_id": 81344, "ts": "2026-10-20T21:52:06Z", "hours": 0.6286, "text": "IT’S WORKING, finally the oled is working now, today I’ve added eyes to my project, my next step is adding a touch sensor, RTC module and a buzzer so I can finish the project then enhance it in the future :D"}, {"post_id": 80613, "ts": "2026-10-18T09:39:35Z", "hours": 2.1283, "text": "I’m working on a robot where it can be your personal assistant, though it may be basic or a beginner as you can say because it can help you wake up early in the morning for school, there will be some future upgrades! :D"}]...
|
Title: MB Miggy Bot by @Miguelito | Stardance
Dev Title: MB Miggy Bot by @Miguelito | Stardance
Devlogs:
I’m working on a robot where it can be your personal assistant, though it may be basic or a beginner as you can say because it can help you wake up early in the morning for school, there will be some future upgrades! :D
IT’S WORKING, finally the oled is working now, today I’ve added eyes to my project, my next step is adding a touch sensor, RTC module and a buzzer so I can finish the project then enhance it in the future :D
I’m now integrating the touch sensor so you can interact with the robot but it is’nt finish yet because I’m having a problem at the r4 because it remembers the old code I uploaded then it cannot upload the new code i want to upload...
|
1792878623.4200127
|
1793483423.4200127
|
|
69850
|
My very own WebOS by @t60202231 | Stardance
|
t60202231
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @t60202231 | Stardance
|
1792878622.5755298
|
1793483422.5755298
|
|
69849
|
Alformer by @Aldrin | Stardance
|
Aldrin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Alformer by @Aldrin | Stardance
|
1792878621.7166295
|
1793483421.7166295
|
|
46731
|
space-pulse by @dineshkarthik | Stardance
|
dineshkarthik
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T06:32:13Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Space Pulse is my HTML/CSS/JS dashboard with links, notes, NASA’s Astronomy Picture of the Day, and a Hyperion arcade game. I have redesigned the default dashboard theme and layout, removed some default widgets, and added light/dark theme toggles. NASA’s APOD picture is imported with a server-side API route to keep their API key private. The Hyperion arcade game is made into a draggable/resizable window with controls described on first use for WASD and arrow keys and uses browser storage/postMessage API to save scores, high score, last played date, and playtime and communicate with the dashboard. The most challenging parts of this project were enabling communication between iframe and the dashboard, saving data in the browser, avoiding double-counting the playtime, and preventing multiple game instances from being opened at the same time, and making sure that NASA’s API key is not leaked anywhere when deploying the dashboard. Finally, I have learned that nice code is not enough, and one has to care about data persistence, security, and debuggability.", "repo": "https://github.com/Karthik-854321/orbit-browser", "demo": "https://orbit-browser-one.vercel.app/"}]...
|
[{"post_id": 46737, "ts": "202 [{"post_id": 46737, "ts": "2026-08-14T06:26:40Z", "hours": 0.3983, "text": "deployment successfully completed and the orbit browser is on live please check and use it and customize accordingly any suggestions/modifications are accepted"}, {"post_id": 46702, "ts": "2026-08-14T04:27:24Z", "hours": 3.4433, "text": "Space Pulse 1st & Final Devlog Space Pulse is my personal browser dashboard made with HTML, CSS, and JS. All the cool links I have on my bookmarks, my notes, the awesome NASA APOD, and my mini-game are all mashed into one neat dashboard. On the first commit, it was too busy and generic, so I changed some stuff up. In the second iteration, I made it my way: minimalistic, no quick-checks, and only what I need on a daily basis. Added light/dark mode, persistent notes and links, and made it responsive. I added NASA APOD API as a cool feature and made it a server-side request so nobody can steal my NASA token. The big thing I added was the Hyperion Space Defender game. I gave it a nice Play Game screen, made it have instructions for the WASD keys and arrow keys to move, the window is draggable and resizable, and even a first-time tutorial that gets saved with localStorage. In order to hook the game up to the dashboard, I used postMessage() to get the score, the high score, the number of sessions, the last time the game was played, and the total playtime. The hard parts about this project were getting the iframe game to communicate with the parent window, keeping the stats persistent, not letting the game count playtime if it was closed accidentally, securing the NASA API request, and figuring out what features are needed and what’s not. This was a big project for me because I learned the importance of state, persistence, APIs, security, debugging, responsiveness, and some neat little UX features in a website. Space Pulse is the final product of all the lessons I’ve learned while making it."}]...
|
Title: space-pulse by @dineshkarthik | Stardance
Title: space-pulse by @dineshkarthik | Stardance
Devlogs:
Space Pulse 1st & Final Devlog Space Pulse is my personal browser dashboard made with HTML, CSS, and JS. All the cool links I have on my bookmarks, my notes, the awesome NASA APOD, and my mini-game are all mashed into one neat dashboard. On the first commit, it was too busy and generic, so I changed some stuff up. In the second iteration, I made it my way: minimalistic, no quick-checks, and only what I need on a daily basis. Added light/dark mode, persistent notes and links, and made it responsive. I added NASA APOD API as a cool feature and made it a server-side request so nobody can steal my NASA token. The big thing I added was the Hyperion Space Defender game. I gave it a nice Play Game screen, made it have instructions for the WASD keys and arrow keys to move, the window is draggable and resizable, and even a first-time tutorial that gets saved with localStorage. In order to hook the game up to the dashboard, I used postMessage() to get the score, the high score, the number of sessions, the last time the game was played, and the total playtime. The hard parts about this project were getting the iframe game to communicate with the parent window, keeping the stats persistent, not letting the game count playtime if it was closed accidentally, securing the NASA API request, and figuring out what features are needed and what’s not. This was a big project for me because I learned the importance of state, persistence, APIs, security, debugging, responsiveness, and some neat little UX features in a website. Space Pulse is the final product of all the lessons I’ve learned while making it.
deployment successfully completed and the orbit browser is on live please check and use it and customize accordingly any suggestions/modifications are accepted
Ships:
Space Pulse is my HTML/CSS/JS dashboard with links, notes, NASA’s Astronomy Picture of the Day, and a Hyperion arcade game. I have redesigned the default dashboard theme and layout, removed some default widgets, and added light/dark theme toggles. NASA’s APOD picture is imported with a server-side API route to keep their API key private. The Hyperion arcade game is made into a draggable/resizable window with controls described on first use for WASD and arrow keys and uses browser storage/postMessage API to save scores, high score, last played date, and playtime and communicate with the dashboard. The most challenging parts of this project were enabling communication between iframe and the dashboard, saving data in the browser, avoiding double-counting the playtime, and preventing multiple game instances from being opened at the same time, and making sure that NASA’s API key is not leaked anywhere when deploying the dashboard. Finally, I have learned that nice code is not enough, and one has to care about data persistence, security, and debuggability....
|
1792878620.766956
|
1793742620.766956
|
|
46711
|
vaiskiOS by @vaiskiainen | Stardance
|
vaiskiainen
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T19:16:59Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "VaiskiOS V1 I finished my first WebOS! Features: Welcome page Notes Weather Windows Top & Bottom docks", "repo": "https://github.com/Vaiskiainen/vaiskios", "demo": "https://vaiskios.pages.dev"}]...
|
[{"post_id": 45355, "ts": "202 [{"post_id": 45355, "ts": "2026-08-11T19:11:49Z", "hours": 0.4706, "text": "Bottom dock added!"}, {"post_id": 45182, "ts": "2026-08-11T14:35:02Z", "hours": 0.3756, "text": "Made a weather app!"}, {"post_id": 45158, "ts": "2026-08-11T13:55:38Z", "hours": 0.4758, "text": "Notes working!"}, {"post_id": 45143, "ts": "2026-08-11T13:23:44Z", "hours": 1.0994, "text": "Basic OS Working! Now it’s time to create apps"}]...
|
Title: vaiskiOS by @vaiskiainen | Stardance
Devlo Title: vaiskiOS by @vaiskiainen | Stardance
Devlogs:
Basic OS Working! Now it’s time to create apps
Notes working!
Made a weather app!
Bottom dock added!
Ships:
VaiskiOS V1 I finished my first WebOS! Features: Welcome page Notes Weather Windows Top & Bottom docks...
|
1792878619.9219766
|
1793742619.9219766
|
|
38179
|
KAIA - Local AI Agent by @deb_beura | Stardance
|
deb_beura
|
1
|
41.48
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T21:50:17Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built this because I wanted an assistant that actually lives on my machine, not one that ships everything to the cloud. Runs a 4-bit Phi-3-mini locally via MLX (~2.5GB) for everyday chat, only calls out to Nemotron/DeepSeek/Gemini when I need tools, code, or web search. The routing is LLM-first — intent classification, provider selection, complexity estimation, and tool-arg inference, all done by the model with keyword fallbacks. Terminal-first. Fixing the RAG embedding mismatch next, then adding a proper model unload command. Will also fix and upgrade the UI for the web app, and hopefully continue to add features.", "repo": "https://github.com/Deb-The-Dabber/JARVISv.1", "demo": "https://deb-the-dabber.github.io/JARVISv.1/"}]...
|
[{"post_id": 48588, "ts": "202 [{"post_id": 48588, "ts": "2026-08-17T01:26:26Z", "hours": 10.92, "text": "I remade the terminal UI! I was researching different UI’s i could make KAIA (yes its named jarvis on my end), and instead of going for a generic, jarvis like UI, I actually took inspiration from an open source coding agent called Opencode, whose UI would look good on jarvis. i am in the middle of re-working it, so this is the first rough draft."}, {"post_id": 45553, "ts": "2026-08-12T03:43:29Z", "hours": 4.1036, "text": "Im currently working on a big issue where my groq model (through API key) is doing some weird stuff, like mis-routing, not understanding the prompt, and picking the wrong tool at times. Currently have to fix that, or my fallback chain wont work as intended. (groq always has issuses). I also asked ChatGPT what hardware stuff i can build for/around KAIA, and it lwk gave me a lot. Here’s the full breakdown of what happened though: Right now, I’m working through Phase 2B, which is basically focused on making KAIA’s routing system much more reliable.The current plan is:2B.0 — Telemetry:I’m adding tracking to the classifier so KAIA records which classifier actually made the decision, what intent it selected, and its confidence when available. This lets me see why KAIA routed something incorrectly instead of just knowing that it was wrong.I’m also modifying the benchmark system so every test case can save this information individually. That way I can look at a failed case and see something like:Request → “Write a script…” Expected → coding Actual → tool_use Classifier → local_nn Confidence → 0.91 Provider → … Latency → …2B.1 — Classifier V2:Once the current benchmark finishes, I’m going to replace the current cheap classifier prompt with a much more structured one. It’ll have explicit definitions for the five main intents:codingtool_usereasoningself_modchatI’m also adding few-shot examples, fine-grained intents, complexity, tool_required, and a confidence score.One of the main things I’m trying to fix is the classifier confusing “write code that does X” with “KAIA should do X.“For example:“Write a script that watches my Downloads folder” → codingversus:“Watch my Downloads folder” → tool_useThey’re very similar linguistically, but they should go down completely different paths.2B.2 — Cheap-classifier gate:After V2 is working, I’m adding a gate that decides whether KAIA should trust the cheap classifier.There will be different modes, including:OFF CONFIDENCE AGREEMENTWith confidence mode, KAIA can basically say:cheap classifier ↓ confidence high? ↙ ↘ YES NO ↓ ↓ accept escalate ↓ stronger modelThe agreement mode goes further by comparing the cheap classifier’s decision against a stronger classifier. If they disagree, KAIA can escalate instead of blindly choosing one.2B.3 — Acceptance + checkpoint:Finally, I’m going to establish actual acceptance criteria for the routing system and generate a Phase 2B report.I’ll measure things like:intent accuracyfine-intent accuracyrouting accuracyclassifier confidencefallback behaviorprovider reliabilitylatencycostThen I’ll create a Phase 2B checkpoint so I have a known-good baseline before moving on."}, {"post_id": 45003, "ts": "2026-08-11T04:20:21Z", "hours": 8.2258, "text": "Still working on the intelligence overhaul! Along the way, I’ve also slipped in some CAD/Onshape improvements and email capabilities, which somehow took brain.py from 3,000+ lines to around 4,500 lines 😭.The overhaul is going really well so far. One of the biggest discoveries was that some of JARVIS’s “intelligence” problems weren’t actually intelligence problems at all — I found bugs in my evaluator that were incorrectly marking things as failures even when JARVIS had completed them successfully. I’ve also found some real issues in the routing and memory systems, so I’m fixing those while making JARVIS faster and more reliable. At this point, I’m focusing less on just adding more features and more on making the features I already have actually work together intelligently. The goal is for JARVIS to feel less like a collection of tools and more like an actual agent that can understand what I’m asking, decide what needs to happen, use the right tools, recover when something goes wrong, and verify its own work."}, {"post_id": 44061, "ts": "2026-08-09T16:06:43Z", "hours": 1.1719, "text": "Finished the taxonomy today, took 2 days for that. I re-trained KAIA and now the results are around 93% accuracy for tool calling and 66% for intent classify (which sounds bad but ill be tweaking it throughout the day)"}, {"post_id": 43714, "ts": "2026-08-09T03:56:17Z", "hours": 1.0603, "text": "Currently working on the intent classifer for the neural network, and asking claude what a taxonomy in this context means. There are a lot of stuff i need to learn before i continue with this. however, the good thing is i did train the neural network on existing back and forth logs with me an KAIA, and for tool calling, we got around a 98% accuracy, which ill take!"}, {"post_id": 43543, "ts": "2026-08-08T21:30:00Z", "hours": 0.4947, "text": "Getting a rough version of the UI set up so I can finally ship this project! For this UI, this is only version one, so don’t mind the bad quality for the web app. Also worked on the svelte design a bit, and to be honest its coming along. but its no where near publishing on the web."}, {"post_id": 43509, "ts": "2026-08-08T20:33:24Z", "hours": 9.6861, "text": "Just finished setting up a simple neural network, and fixed some frontend issues. KAIA now has a webapp version (yet to be published) and a local neural network for small tasks, such as intent routing or when KAIA is offline."}, {"post_id": 41722, "ts": "2026-08-06T03:29:20Z", "hours": 4.6458, "text": "Working on testing the AI Agent’s features, such as having it write code for its very own version where KAIA is a webapp! Currently named jarvis for personal use, however will be changed once project is shipped."}, {"post_id": 32756, "ts": "2026-07-22T03:36:56Z", "hours": 1.185, "text": "Updating the Agent workflow. I also started 2 different types of web apps, one with React, and the other with Svelte. The svelte one is currently going better, however im not sure if ill actually post the svelte one. Plus, i might leave that off since i need to test KAIA more, there are some bugs that i dont really want in the first version."}]...
|
Title: KAIA - Local AI Agent by @deb_beura | Stard Title: KAIA - Local AI Agent by @deb_beura | Stardance
Devlogs:
Updating the Agent workflow. I also started 2 different types of web apps, one with React, and the other with Svelte. The svelte one is currently going better, however im not sure if ill actually post the svelte one. Plus, i might leave that off since i need to test KAIA more, there are some bugs that i dont really want in the first version.
Working on testing the AI Agent’s features, such as having it write code for its very own version where KAIA is a webapp! Currently named jarvis for personal use, however will be changed once project is shipped.
Just finished setting up a simple neural network, and fixed some frontend issues. KAIA now has a webapp version (yet to be published) and a local neural network for small tasks, such as intent routing or when KAIA is offline.
Getting a rough version of the UI set up so I can finally ship this project! For this UI, this is only version one, so don’t mind the bad quality for the web app. Also worked on the svelte design a bit, and to be honest its coming along. but its no where near publishing on the web.
Currently working on the intent classifer for the neural network, and asking claude what a taxonomy in this context means. There are a lot of stuff i need to learn before i continue with this. however, the good thing is i did train the neural network on existing back and forth logs with me an KAIA, and for tool calling, we got around a 98% accuracy, which ill take!
Finished the taxonomy today, took 2 days for that. I re-trained KAIA and now the results are around 93% accuracy for tool calling and 66% for intent classify (which sounds bad but ill be tweaking it throughout the day)
Still working on the intelligence overhaul! Along the way, I’ve also slipped in some CAD/Onshape improvements and email capabilities, which somehow took brain.py from 3,000+ lines to around 4,500 lines 😭.The overhaul is going really well so far. One of the biggest discoveries was that some of JARVIS’s “intelligence” problems weren’t actually intelligence problems at all — I found bugs in my evaluator that were incorrectly marking things as failures even when JARVIS had completed them successfully. I’ve also found some real issues in the routing and memory systems, so I’m fixing those while making JARVIS faster and more reliable. At this point, I’m focusing less on just adding more features and more on making the features I already have actually work together intelligently. The goal is for JARVIS to feel less like a collection of tools and more like an actual agent that can understand what I’m asking, decide what needs to happen, use the right tools, recover when something goes wrong, and verify its own work.
Im currently working on a big issue where my groq model (through API key) is doing some weird stuff, like mis-routing, not understanding the prompt, and picking the wrong tool at times. Currently have to fix that, or my fallback chain wont work as intended. (groq always has issuses). I also asked ChatGPT what hardware stuff i can build for/around KAIA, and it lwk gave me a lot. Here’s the full breakdown of what happened though: Right now, I’m working through Phase 2B, which is basically focused on making KAIA’s routing system much more reliable.The current plan is:2B.0 — Telemetry:I’m adding tracking to the classifier so KAIA records which classifier actually made the decision, what intent it selected, and its confidence when available. This lets me see why KAIA routed something incorrectly instead of just knowing that it was wrong.I’m also modifying the benchmark system so every test case can save this information individually. That way I can look at a failed case and see something like:Request → “Write a script…” Expected → coding Actual → tool_use Classifier → local_nn Confidence → 0.91 Provider → … Latency → …2B.1 — Classifier V2:Once the current benchmark finishes, I’m going to replace the current cheap classifier prompt with a much more structured one. It’ll have explicit definitions for the five main intents:codingtool_usereasoningself_modchatI’m also adding few-shot examples, fine-grained intents, complexity, tool_required, and a confidence score.One of the main things I’m trying to fix is the classifier confusing “write code that does X” with “KAIA should do X.“For example:“Write a script that watches my Downloads folder” → codingversus:“Watch my Downloads folder” → tool_useThey’re very similar linguistically, but they should go down completely different paths.2B.2 — Cheap-classifier gate:After V2 is working, I’m adding a gate that decides whether KAIA should trust the cheap classifier.There will be different modes, including:OFF CONFIDENCE AGREEMENTWith confidence mode, KAIA can basically say:cheap classifier ↓ confidence high? ↙ ↘ YES NO ↓ ↓ accept escalate ↓ stronger modelThe agreement mode goes further by comparing the cheap classifier’s decision against a stronger classifier. If they disagree, KAIA can escalate instead of blindly choosing one.2B.3 — Acceptance + checkpoint:Finally, I’m going to establish actual acceptance criteria for the routing system and generate a Phase 2B report.I’ll measure things like:intent accuracyfine-intent accuracyrouting accuracyclassifier confidencefallback behaviorprovider reliabilitylatencycostThen I’ll create a Phase 2B checkpoint so I have a known-good baseline before moving on.
I remade the terminal UI! I was researching different UI’s i could make KAIA (yes its named jarvis on my end), and instead of going for a generic, jarvis like UI, I actually took inspiration from an open source coding agent called Opencode, whose UI would look good on jarvis. i am in the middle of re-working it, so this is the first rough draft.
Ships:
Built this because I wanted an assistant that actually lives on my machine, not one that ships everything to the cloud. Runs a 4-bit Phi-3-mini locally via MLX (~2.5GB) for everyday chat, only calls out to Nemotron/DeepSeek/Gemini when I need tools, code, or web search. The routing is LLM-first — intent classification, provider selection, complexity estimation, and tool-arg inference, all done by the model with keyword fallbacks. Terminal-first. Fixing the RAG embedding mismatch next, then adding a proper model unload command. Will also fix and upgrade the UI for the web app, and hopefully continue to add features....
|
1792878619.1088827
|
1793742619.1088827
|
|
6811
|
Borealis by @onyxtheone | Stardance
|
onyxtheone
|
1
|
383.93
|
4072
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T20:46:18Z", "hours": 241.0, "multiplier": 19.2, "payout": 4072, "blessing": "neutral", "text": "I built BTBX (Bare Tiny(?) BASIC eXecutor), a self-contained BASIC interpreter that is the operating system. There’s no Linux, no DOS, nothing underneath it. It boots straight off a FAT12 floppy image via a two-stage bootloader (512-byte stage1 + 2KB stage2), flips the CPU into protected mode, sets up the A20 gate, and lands you directly in a BASIC REPL, all inside 640KB of conventional memory. From there it’s a real language: GOTO, GOSUB, FOR/NEXT, WHILE/WEND, IF/THEN/ELSE, multi-dimensional arrays, 32-bit integers plus x87 80-bit floats, string functions (LEFT$, MID$, CHR$, etc.), and a full FAT12 filesystem so you can actually SAVE, LOAD, and DIR your programs on the disk image. There’s also PEEK/POKE for raw memory access, BLOAD/SYS to load and jump into raw machine code, VGA graphics primitives, a PIT-driven BEEP, and — half-finished but present — a SAY command aiming for SAM-style formant speech synthesis. What was challenging? Everything below the interpreter, honestly. Getting the boot chain right (CHS and EDD disk reads, A20 enabling that doesn’t silently hang, jumping into protected mode without immediately triple-faulting) took far longer than any language feature. The BIOS-thunk approach for file I/O (calling back into 16-bit real mode from a 32-bit kernel just to talk to disk) was its own maze. The funniest recent challenge was building a browser demo on top of v86: getting PS/2 keyboard Shift state to survive contact with a web browser turned out to be nearly as hard as writing the A20 gate code itself :3. Real hardware (and QEMU) just work; browsers apparently have opinions about what a Shift key is allowed to do. What am I proud of? That it boots at all, genuinely. A homemade OS with a homemade language on top, running real math through the x87 FPU and reading/writing a real filesystem, in under 640KB, with zero borrowed runtime. Getting arrays, strings, and file I/O all coexisting cleanly in a from-scratch interpreter over ~240 hours feels like the actual milestone here, not any single feature. What should people know to test it? Use make && make run, that's the supported path, tested in QEMU, and it's where shift/symbols work correctly. The browser demo (v86-based) is explicitly beta. booting and typing work, but shift-modified keys are unreliable there due to browser/emulator keyboard quirks (a real physical keyboard emulator interaction gap, not a BASIC bug ^^). Don't judge the interpreter by the demo's keyboard weirdness. Try PRINT, FOR/NEXT loops, SAVE/LOAD/DIR to confirm the filesystem works, and BEEP for audio. SAY is a known work-in-progress ergo don't expect actual speech (yet). Check the source tree if you want to see the boot chain (boot/stage1.asm, boot/stage2.asm) separately from the interpreter (src/kernel/basic.c).", "repo": "https://github.com/onyx-the-one/borealis", "demo": "https://onyx-the-one.github.io/borealis"}]...
|
[{"post_id": 63409, "ts": "202 [{"post_id": 63409, "ts": "2026-09-07T07:11:12Z", "hours": 9.3, "text": "its been a week since my last devlog, i dont have much new to add because with school and other responsibilities i dont have much time for actuall progress on this project. still i accumulated some 9 hours (sorry gizzy) by doing small changed, linting, updating forgotten banners and version numbers and so on. EHCI/USB still fails on the same issues as before. i will be reverting to a superfloppy boot because right now i cant even get debug to write to the disk which is annoying. then once i get the usb driver with all its issues working (sometime next decade) i can give usb boot another shot."}, {"post_id": 58426, "ts": "2026-08-30T20:43:20Z", "hours": 6.0, "text": "i am (still) putting in work on the usb driver, this is proving to be very complicated especially because my hardware is not cooperating. im thinking about switching back to floppy-emulated mode which would be more practical for debugging but at the same time probably introduce new issues i dont even expect yet."}, {"post_id": 53934, "ts": "2026-08-24T17:11:33Z", "hours": 7.1178, "text": "the port resets work on the laptop now. the bit we were waiting on (port-enable-changed) was being acknowledged by the bios’s smm ghost before we ever saw it, so we stopped waiting on the status bit and just read the port state, which can’t be acked away. also fixed before it bit us: two devices answering address 0 at once (enumeration is per-port now, and every device gets a real address before the next port wakes up). the next failure was prettier: every OUT transfer works, every IN transfer dies. the stick takes its orders but can’t talk back. that’s the signature of the qtd buffer list, the one place real ich silicon is strict where qemu is forgiving, so all dma buffers are page-aligned now and the error reports name whichever endpoint stalled. also everyone gotta apreciate the blahaj!"}, {"post_id": 50969, "ts": "2026-08-20T13:23:36Z", "hours": 9.3333, "text": "the stick is a disk now, no bios involved: usb grew enumeration and bot/scsi, fat12 picks whichever backend came up. qemu took the whole chain first try. the laptop found the stick on port 0 and then refused to reset it (my fault), the 50ms delay was port-0x80 writes that only cost real time inside qemu, so there’s a pit-based clock now. plot twist from the log meanwhile: the bios path worked on the laptop, because the toggles that “didn’t help” had quietly moved the stick to floppy emulation, and that path survives the mode switch. so it (partially) boots by accident while we fix it on purpose. also caught in a self-audit: a stall burned a full second, and a short read could report success with half a sector. readme rewritten as i was told to by sw."}, {"post_id": 50492, "ts": "2026-08-19T17:32:16Z", "hours": 5.8606, "text": "im still working on getting a usb driver to work. ehci seems to work kinda but its a loop between giving false data, partial data and occasionally seemingly true data but then usb decides it doesnt like it and ideally fat12 fails durning cache load too, WHICH I FIXED LONG AGO BRUH. but it came back for some reason. so im trying timing, msd, stall handling everything. this may take another decade."}, {"post_id": 49913, "ts": "2026-08-18T21:34:01Z", "hours": 6.4844, "text": "debug spew is a file now. every checkpoint from the first instruction onward (entry asm, the real-mode thunk letters, all the [DEBUG] lines) lands in a buffer, and once the fs proves it can write, the buffer becomes LOG.TXT and the screen clears to the banner. the trick is the default: echo stays on until the file is safely written, so a boot that dies early still shows everything live. the fallback isn’t a code path, it’s just never getting to the quiet part. LOG=0 in CONFIG.TXT keeps the old wallpaper. and the log already caught its first bug: a missing [EZTG] tattled on a stale version entry.asm. debugging is too important to leave on the screen."}, {"post_id": 49489, "ts": "2026-08-18T11:03:57Z", "hours": 9.5697, "text": "the stick talks, and for the first time it’s talking to us, not the bios. this part was the transfer engine: queue heads and transfer descriptors, little linked-list structs the ehci controller fetches out of ram and executes on its own. a control transfer is three of them chained by hand (setup, data, status), data toggles set manually per stage because high-speed lets you. link the queue head into the async ring, poll the active bit, unlink, then ring the doorbell (an actual doorbell bit) so the controller formally forgets the whole thing before the structs get reused. first exchange: GET_DESCRIPTOR at address 0, and the stick answered with its vid/pid like a civilized device. qemu’s stick goes by 46f4:0001; the real one can introduce itself when the laptop’s back. next: scsi over bulk, and fat12 stops caring what a disk is. moral: usb devices are polite, they just want to be asked in struct form."}, {"post_id": 48764, "ts": "2026-08-17T09:14:22Z", "hours": 9.3231, "text": "the laptop’s bios has a party trick: as i described before, int 13h works fine until the cpu enters protected mode, then it never returns, not even for a no-transfer disk reset. bios toggles didn’t help, so borealis is growing a native usb driver. first part: find the ehci controller over pci, do the formal ownership handshake (there’s an actual semaphore register in config space where the os and the bios’s smm ghost take turns. set our bit, wait for theirs to clear, then kill every smi source so the ghost stops getting summoned), reset the controller, spin up an idle async schedule, scan the ports. no packets yet, just a controller that’s officially ours. dev loop is qemu with a stick image on an emulated ehci, boot still from floppy, so the laptop only has to show up for the one hardware-specific part. moral: if the firmware won’t share the hardware, take the hardware."}, {"post_id": 47754, "ts": "2026-08-15T21:50:44Z", "hours": 4.8914, "text": "instrumented the thunk to print a letter per step so a hang names its own murderer. result: Rer , then nothing. R entered real mode, e entered the EDD read, r was about to issue a disk reset, ah=00h, the simplest int 13h call there is, no transfer, and it never returned. if even a no-op reset hangs after the PM excursion, the bios’s whole disk service is dead post-protected-mode on this machine, full stop. so the fix is a native usb driver. helix talks EHCI directly, bios for boot and native for runtime, as it should be, but that’s pci + ownership handoff from the very SMM that broke us + enumeration + BOT/scsi, and you don’t bring that up blind, one teletype letter per reboot, right before losing the hardware. deferred until the laptop’s back on hand; qemu remains unaffected."}, {"post_id": 47202, "ts": "2026-08-14T23:22:02Z", "hours": 5.7114, "text": "working theory: the bios’s legacy usb support, and specifically system management mode. coil runs in pure real mode and its EDD reads work, the bios reads the stick happily at boot. but helix runs in protected mode, and calling the bios means dropping back through a thunk, and that round-trip is where it dies. on a machine this age legacy usb lives in SMM: the bios traps disk interrupts and does the transfer in a mode invisible to the os, assuming a clean real-mode cpu, and our PM excursion breaks that assumption. the tell: teletype (int 10h) works from the thunk, disk (int 13h) hangs. teletype doesn’t touch usb, disk does. photo is the bios setup screen, where i went hunting for a legacy usb toggle which i did not find ;3c"}, {"post_id": 46999, "ts": "2026-08-14T15:56:13Z", "hours": 4.2892, "text": "next wall, immediate: the machine hangs at fat_cache_load, the step where helix reads the FAT and root directory into RAM. in qemu this works instantly but on the laptop the disk read goes out and never comes back. no error, no status, no return. debug output narrows it to exactly the transfer call: everything before prints, everything after doesn’t."}, {"post_id": 46771, "ts": "2026-08-14T08:36:41Z", "hours": 5.2839, "text": "borealis booted on the laptop for the first time. not qemu but actual silicon, a core 2 duo, off a usb stick. coil came up, loaded helix, and the machine made it to the banner plus three debug lines, which is the whole chain working on real firmware: stage1 > stage2 > kernel > protected mode. CHS disk was already known broken cos this bios won’t talk cylinders/heads/sectors to a stick with no real geometry, fair enough — so coil booted over EDD, but helix’s disk layer still assumed CHS and the filesystem never came up. still: it boots, on real hardware. just doesnt get far enough to be useful (yet)."}, {"post_id": 45393, "ts": "2026-08-11T20:28:36Z", "hours": 1.4333, "text": "im still working on real hw boot issues. coil doesnt guess geometry anymore, it brutes it: the new stage2 tries every plausible CHS geometry against a buildtime checksum of the kernel’s first sector and prints the one that actually works. no more “trust the BIOS” and no more “reject the BIOS”, just prove it. on a sane machine it prints g(18.2) and boots like nothing happened. on the laptop it either prints its real geometry and boots, or prints G! plus what the BIOS claimed. either way i finally get an answer instead of a silent reset. in the meantime ill be working on some features like arrows, logging, etc. attached photo of my testing setup"}, {"post_id": 45321, "ts": "2026-08-11T18:14:12Z", "hours": 5.1247, "text": "boot splash is in and shipping on the image. CONFIG.TXT decides, SPLASH.BAS plays on boot, keypress skips. the hook was “just two lines” and then reality happened: config.c wasnt in the makefile, the loader was static, and the first boot loaded the splash then sat at the prompt waiting for me to type RUN myself. three one-line fixes later: coil letters, banner, aurora, prompt. also fixed make pack details. the machine has a boot vibe now next up is proper scrollback, logging, and arrow key support."}, {"post_id": 44866, "ts": "2026-08-10T22:05:04Z", "hours": 2.6764, "text": "the system has a config file now. CONFIG.TXT on the boot disk, key=value, one per line, read at boot. the fun part: the parser tolerates leading line numbers, so EDIT CONFIG.TXT just works with zero new editor code. the editor only speaks numbered lines, so i taught the config reader to ignore them instead (and officially, just use the numbered lines in there its not that hard, but you dont have to for it to work). SPLASH=0/1 is the first key, persistence is free because its a file on the FAT12 disk. the whole reader is ~75 lines, no allocation, no subsystem. config systems should be files, not frameworks ;3c"}, {"post_id": 44673, "ts": "2026-08-10T16:18:27Z", "hours": 4.6592, "text": "SCREEN 13 works, SCRTEST passes end to end, palette cycling is smooth, and as a bonus the fix also killed a stack-vs-bss collision that was waiting to happen. wrote AURORA.BAS to celebrate, it does a starfield and a sine curtain with the classic palette-cycling trick so it stays fast even interpreted. next up (probs): making it the boot splash, config.txt for persistence, then directories and much much more to be excited for!"}, {"post_id": 44301, "ts": "2026-08-09T23:25:07Z", "hours": 5.0344, "text": "ITS THE MEMORY MAP. gfx_is_active sits at 0xA12C0 which is past 0xA0000 aka inside the VGA framebuffer window. reads from there always return 0xFF in text mode, writes vanish into the void. the kernel bss grew past 640k and parked a variable in video memory. the “graphics thunk situation” was never the thunk. it was never even the graphics. one line in the linker script moves bss to 1MiB and everything works. i want to scream (affectionate). theres some more to be done before its usable in practice (because it never really was i guess) but SOON."}, {"post_id": 43938, "ts": "2026-08-09T12:00:21Z", "hours": 5.2647, "text": "spent the whole night inside the realmode thunk with a fine comb. it is NOT the thunk. SCREEN 0 actually switches modes fine, which makes SCREEN 13 doing nothing even weirder. also found out my kernel thinks graphics is already on before i ever turned it on?? the flag says 255. TWO HUNDRED FIFTY FIVE. its supposed to be 0 or 1. memory corruption somewhere (see kpan 7), or im losing my mind. probably both."}, {"post_id": 43586, "ts": "2026-08-08T22:43:36Z", "hours": 4.1406, "text": "boot is finally stable, primes count to a million, so i tried the graphics. SCREEN 13 does nothing. no error, no letters, no mode change. GCLS nothing, LINE nothing, RECT nothing. PALETTE works??? which makes no sense because palette is the one that should be hardest. starting to suspect the video thunk is broken. ive got no idea. but at least im honoring my promise to keep devlogs shorter."}, {"post_id": 43305, "ts": "2026-08-08T14:26:54Z", "hours": 10.0411, "text": "Fixed the boot (fr this time) the whole laptop reset thing turned out to be two bugs stacked on each other: the bootloader was trusting/rejecting BIOS geometry based on vibes, and the kernel entry point was jumping into a debug helper instead of _start , so the CPU executed one stray ret into the void and triple-faulted. coil now makes the BIOS prove its geometry against a build-time checksum before trusting it, and checksums the whole kernel before jumping in. Boot output is an actual diagnostic language now: gk = geometry truthful, gf = BIOS lied, C! = wrong bytes arrived, and nothing resets silently anymore. QEMU boots all the way to BASIC, audio included. Also cleaned up helix.c (boot debug spam now only speaks when something’s actually wrong, RIP “HELIX FAILIURE” typo), evicted BTBX from the prompt, it’s js => now, and am working the BASIC interpreter with a bit of a rewrite: dispatcher no longer depends on include order and prayer, dead duplicate file-I/O code confirmed gone, graphics.inc brace damage found and fixed. Laptop test tomorrow-ish, then the interpreter cleanup lands. see u next time!"}, {"post_id": 41616, "ts": "2026-08-05T22:41:53Z", "hours": 8.7858, "text": "hi people! this one’s a bit different. no new features, but a new name. the project is now called Borealis. the old name, BTBX, made sense when this was a tiny BASIC interpreter and nothing more, but it’s grown into a full bootloader, kernel, and proto-OS, and the name stopped fitting. the system now has three named layers: coil is the two-stage bootloader, helix is the kernel, and BOREALIS is the system as a whole. the names are deliberately scale-neutral. where the project goes from here shouldn’t be constrained by what it’s called. the rename itself was the easy part, the fallout was the real work. i went through every file updating references to the old name, plus the directory structure ( boot/ became coil/ , src/kernel/ became src/helix/ ), the build files, and the image name ( borealis.img now). outside the repo, i also had to update hackatime and stardance so everything points at the right thing. the README on github is fully rewritten to match (may not be pushed at this time), and there’s a note in it about the old name for continuity. technically nothing else changed. same code, same features, same open issues, this was purely an identity update. that’s all for now!"}, {"post_id": 38767, "ts": "2026-08-01T10:16:03Z", "hours": 12.6017, "text": "hi people! im trying to get BTBX to boot properly on an ASUS F5RL laptop. unfortunately, it still isn’t booting correctly, but I managed to narrow the problem down further. I previously ran into issues involving EDD, DH, and a few other parts of the boot process. right now I’m getting the error S1>S2Agk(18.1)Drk{c2,h0,s2}R , which makes it look like the BIOS may be reporting bogus CHS geometry in a way BTBX is not expecting. there’s no working result yet, but I’ll keep investigating the boot and disk-handling path. i hope to get it running soon."}, {"post_id": 34823, "ts": "2026-07-25T20:37:32Z", "hours": 5.6622, "text": "hi people! this time i worked on a v86-compatible version for the in-browser demo. it’s now possible to try the project directly in the browser, although there are still a few input-related issues, including with the shift key. the browser version is mainly there as a quick way to look at the project without setting anything up. for proper testing, though, i’d still recommend using a local environment—the demo is mostly for anyone too busy to set one up. pong does work in it though ^^"}, {"post_id": 33966, "ts": "2026-07-24T10:16:38Z", "hours": 10.9, "text": "hi people! recently i worked on adding proper graphics support to the project. instead of relying on text-mode attribute tricks, i went with direct pixel plotting, since it gives the system a much more flexible foundation for drawing things on screen. i added a new Mode 13h framebuffer API with functions for entering and leaving graphics mode, clearing the screen, plotting and reading individual pixels, drawing lines, rectangles, and circles, and changing the VGA palette. the implementation writes directly to the linear framebuffer at 0xA0000, with palette updates handled through the VGA DAC ports. on the BASIC side, there are now new statements for using these graphics features: SCREEN, GCLS, PSET, LINE, RECT, CIRCLE, and PALETTE. i also connected the new graphics code to the statement dispatcher and updated the built-in HELP text so the commands are documented. finally, i cleaned up the build setup by adding the new graphics source files and removing an old ‘-display curses’ option from the run command. this is a much more versatile approach than only the old text-based graphics, and it gives me a better base for anything visual i add later. that’s all for now!"}, {"post_id": 33368, "ts": "2026-07-23T07:14:31Z", "hours": 9.3667, "text": "hi people! i spent more time working on the graphics system. there still isn’t a finished result to show yet, but i’ve been continuing to work through the implementation and figuring out the pieces needed for proper pixel-based graphics support. it’s taking a bit more iteration than expected, but the goal is still to have a solid graphics foundation rather than rushing in something limited. hopefully i’ll have the completed version ready to show soon. see y’all later!"}, {"post_id": 32259, "ts": "2026-07-21T09:58:51Z", "hours": 13.1136, "text": "hi people! i started working toward graphics support this time. i’m moving away from text-mode tricks and looking at direct pixel plotting instead, since it should be much more flexible to build on later.it’s still a work in progress, but i should have something more complete to show next time. what pmo is that 10 hour limit so i cant just devlog once i have a feature, i have to do it in the middle of nothing an wasting 3 hours anyways. see y’all later!"}, {"post_id": 31938, "ts": "2026-07-20T19:04:38Z", "hours": 7.7667, "text": "hi people! this time i added a set of bitwise operations to the language: AND(x,y), OR(x,y), XOR(x,y), NOT(x), SHL(x,n), and SHR(x,n). these work on values converted to 32-bit integers, and the shift functions keep large shift counts predictable by masking them to 31. i also added HEX$(x) and BIN$(x) string functions for displaying numbers in hexadecimal and binary, without unnecessary leading zeroes. on top of that, the number parser now accepts hexadecimal and binary literals using &H… and &B…. finally, i updated the built-in HELP text so the new functions and literal formats are documented in the system itself. that’s all for now"}, {"post_id": 30166, "ts": "2026-07-17T15:01:06Z", "hours": 6.6506, "text": "hi people! this was mostly a behind-the-scenes work session rather than one with a major new feature to show off. i spent a lot of time working through the project, trying things out, and dealing with the smaller details that tend to take longer than expected. there isn’t one big result for this devlog, but the time was still useful for getting a clearer picture of what needs attention next and making progress on the work that supports the larger features. sometimes development is less about a big visible change and more about putting time into the parts that make future work smoother. that’s all for now!"}, {"post_id": 28528, "ts": "2026-07-14T20:47:26Z", "hours": 15.6667, "text": "hi guys! i took a short break from the project. first voluntarily to take care of my mental health, and then a bit longer than planned because i got sick. after returning, i tackled a smaller but useful feature: RTC support via the TIME command. the command can now work with the real-time clock, which means the system has proper support for reading and handling time instead of relying on a manually managed value. this was a fairly quick feature to work through, so it felt like a good way to get back into the project after the break. also, please excuse the old time shown in the photo, i hadn’t kept it up to date when I took it. that’s all, see you later"}, {"post_id": 22752, "ts": "2026-07-05T10:26:44Z", "hours": 10.2164, "text": "hi people! this time, i mostly worked on cleaning things up after restructuring the working tree, and i also fixed a few issues with the text editor. the biggest breakthrough was figuring out why the prime sieve computation kept failing. in the end, the problem had nothing to do with the math itself. instead, it came from the way the interpreter handled loops and writing to disk. those issues interacted in a way that caused the loop to stop after finding just one number. that problem is now fixed, and while tracking it down i also ran into several other bugs, which i fixed along the way. that’s all!"}, {"post_id": 22233, "ts": "2026-07-04T16:25:58Z", "hours": 9.3667, "text": "After my restructuring I was gonna ship the project but I just dont feel its finished enough so I wanted to add a few more features to make it a bit more standalone. Right now, you would in theory be able to use it on a computer without having to prepare programs on another computer because WE HAVE A TEXT EDITOR!!! finally. So you can write your BASIC and execute it, save the results and view them as much as you want!! There is a prime number sieve being edited on screen but it doesnt run yet because there are some issues in the way my BASIC is interpreted, some issue with loops or whatnot. Thats the next thing to work on."}, {"post_id": 20667, "ts": "2026-07-02T10:09:46Z", "hours": 10.5667, "text": "Nothing incredible, except scut work right now. I was made aware by codefactor that my code was too complex in parts (complexity of 771) and so I cleaned up the file tree so its nice and organized, and I am most way through splitting stmt(), but I was made aware my devlogs are too long so here you go."}, {"post_id": 19587, "ts": "2026-06-30T22:41:33Z", "hours": 8.1828, "text": "I started working on giving the system a voice. Yes, quite literally a dystopian, creepy voice synthetisation function. Originally I was only gonna do ‘BEEP freq, duration’ (which i managed in a good hour at most) but then I got invested in actual phoneme/allophone synthesys (Software Automatic Mouth style) and it turned into a lot more work. Sadly so far i’ve only ever gotten squeals out of it, or all quiet, so i am probably going to give up and do more important work like either a text editor or a directory support, or even a proper C compiler in-system (so far only precompiled binaries work)."}, {"post_id": 16830, "ts": "2026-06-27T10:18:01Z", "hours": 19.9, "text": "I took a small hiatus (climbing in the caucas mountains for my mental health). Anyways i’m back and I added binary loading and execution support (for example precompiled C or whatever). I works, no too visible on the screenshot but look at the screen border (it was flashing). Also sorry for the long devlog but i had some time logged, and logged more now, and somehow ended up with 18 hrs."}, {"post_id": 12181, "ts": "2026-06-19T21:57:01Z", "hours": 7.1, "text": "I have finally fixed the floppy boot including its FAT12 init. There were many, many problems, I was running around in circles but I finally fixed it. The last thing I did was rewrote the EDD stuff front and back, and I assume that fixed it. I, honestly, am not sure. But anyways, now both HDD and floppy boot work including FAT12 init and all functions of BASIC that I have implemented insofar."}, {"post_id": 11569, "ts": "2026-06-18T21:07:42Z", "hours": 6.9667, "text": "The floppy boot issue persists. I have moved past the FAT init failing visibly, but any read actions throw all zeros out. I came across the issue in the past, I feel like I am going in circles here,"}, {"post_id": 10455, "ts": "2026-06-17T05:52:29Z", "hours": 7.1333, "text": "At the moment I am still stuck on the same issue (floppy/HDD). I got the idea that the fs may be misconfigured so I am working a on that too. A lot of theories, and multiple issues i’ve fixed already, but on floppy FAT init still fails."}, {"post_id": 9805, "ts": "2026-06-16T07:38:30Z", "hours": 12.0872, "text": "I dont have any major update, I am stuck fixing a regression where FAT initialization fails exclusively on QEMU floppy boots, while HDDs work fine. I always fix one thing and something else breaks, like EDD probing panics, false failiures, reset storms and others. The end result is always the same, the boot takes a long time (timeouts) and no disk is available."}, {"post_id": 8817, "ts": "2026-06-14T17:30:00Z", "hours": 13.4017, "text": "I decided to put some work into booting in hard-drive (DL 0x80). That in itself wasn’t too big an issue, but it in turn made floppy boot (DL 0x00) nonfunctional. I went back and forth, fixing one, breaking the other, again and again. Right now there is some kind of silent failiure in floppy mode that causes it to take minutes to boot (I think its failing and retrying 3 times on every sector) and then it finds the root dir populated as all zeros. The issue is all the processes come back as successes when reading registers. So right now, only hard drive mode works, but this devlog is already wayyyy too long and I wouldnt want to lose all this time."}, {"post_id": 7914, "ts": "2026-06-13T06:12:33Z", "hours": 5.8778, "text": "And we have a complete functioning FAT12! Reading and writing have been working smoothly. The fs writing wasn’t even that hard to implement, and I also added a few more mathematicals to to once again appoach GWBASIC. We have direct hardware access (PEEK/POKE into ram, etc), arrays, nonblocking input (INKEY$) and I also added 2 string functions."}, {"post_id": 6919, "ts": "2026-06-11T16:23:48Z", "hours": 11.835, "text": "After countless fixes I have managed to get a functioning FAT12 filesystem working, including listing and loading files. Saving (writing) is not functional yet. The key issues were: CHS mismatch, BPB was wrong, broken multisector loading, and other. Next I will try to make writing possible."}, {"post_id": 5983, "ts": "2026-06-10T01:13:01Z", "hours": 6.7942, "text": "I’ve changed some kernel details, like that instead of straight crashing, it might tell you whats wrong before, design details, etc. I changed the approach to disk wiriting from straight dd to a python script that actually makes a mountable volume, and I am still working on getting filesystem working. There has been so so many issues ive been running into as the complexity of the system rises (and so does entropy, I guess). This will take an unprecedented amount of work to get even remotely to the level that is GWBASIC, much less what I aspired to (ISO/IEC 10279:1991)."}, {"post_id": 4220, "ts": "2026-06-07T13:34:33Z", "hours": 10.9408, "text": "I managed to implement longer variable names possible, a lof of trig/calc functions and overall perked up some details. Im heading towards Full BASIC instead of just Tiny BASIC but Im not sure how far I will go with this."}, {"post_id": 3710, "ts": "2026-06-06T19:20:05Z", "hours": 8.9439, "text": "Ive gotten to the point where it actually boots from floppy in QEMU (no hd working) AND to an extent BASIC works. Its not perfect yet but ill get there soon."}, {"post_id": 2998, "ts": "2026-06-05T22:31:16Z", "hours": 6.0936, "text": "What a poor choice this project. I wanna sleep so much and yet I cant fall asleep because I just have to get it running and it will definietly only be an hour or less."}, {"post_id": 2674, "ts": "2026-06-05T10:58:37Z", "hours": 9.0503, "text": "I changed the approach. Instead of just messing around in assembly, I will do most of it in C and assembly is only for the bootloader. Yes, bootloader. Simplest way to keep this as bare-metal and universal as possible was, in my opinion, to just write a kernel, grub, crosscompile for i868 (in distrobox because the toolchain doesnt run on my distro) and boot via QEMU. I got far enough that it compiles and builds into an ISO, but doesnt actaully even boot, instead bugs out in SeaBIOS. Seems I bit off more than I could chew."}, {"post_id": 1934, "ts": "2026-06-04T05:34:44Z", "hours": 7.0881, "text": "After an all-nighter i got it to assemble, but to call it functional would be a joke."}]...
|
Title: Borealis by @onyxtheone | Stardance
Devlog Title: Borealis by @onyxtheone | Stardance
Devlogs:
After an all-nighter i got it to assemble, but to call it functional would be a joke.
I changed the approach. Instead of just messing around in assembly, I will do most of it in C and assembly is only for the bootloader. Yes, bootloader. Simplest way to keep this as bare-metal and universal as possible was, in my opinion, to just write a kernel, grub, crosscompile for i868 (in distrobox because the toolchain doesnt run on my distro) and boot via QEMU. I got far enough that it compiles and builds into an ISO, but doesnt actaully even boot, instead bugs out in SeaBIOS. Seems I bit off more than I could chew.
What a poor choice this project. I wanna sleep so much and yet I cant fall asleep because I just have to get it running and it will definietly only be an hour or less.
Ive gotten to the point where it actually boots from floppy in QEMU (no hd working) AND to an extent BASIC works. Its not perfect yet but ill get there soon.
I managed to implement longer variable names possible, a lof of trig/calc functions and overall perked up some details. Im heading towards Full BASIC instead of just Tiny BASIC but Im not sure how far I will go with this.
I’ve changed some kernel details, like that instead of straight crashing, it might tell you whats wrong before, design details, etc. I changed the approach to disk wiriting from straight dd to a python script that actually makes a mountable volume, and I am still working on getting filesystem working. There has been so so many issues ive been running into as the complexity of the system rises (and so does entropy, I guess). This will take an unprecedented amount of work to get even remotely to the level that is GWBASIC, much less what I aspired to (ISO/IEC 10279:1991).
After countless fixes I have managed to get a functioning FAT12 filesystem working, including listing and loading files. Saving (writing) is not functional yet. The key issues were: CHS mismatch, BPB was wrong, broken multisector loading, and other. Next I will try to make writing possible.
And we have a complete functioning FAT12! Reading and writing have been working smoothly. The fs writing wasn’t even that hard to implement, and I also added a few more mathematicals to to once again appoach GWBASIC. We have direct hardware access (PEEK/POKE into ram, etc), arrays, nonblocking input (INKEY$) and I also added 2 string functions.
I decided to put some work into booting in hard-drive (DL 0x80). That in itself wasn’t too big an issue, but it in turn made floppy boot (DL 0x00) nonfunctional. I went back and forth, fixing one, breaking the other, again and again. Right now there is some kind of silent failiure in floppy mode that causes it to take minutes to boot (I think its failing and retrying 3 times on every sector) and then it finds the root dir populated as all zeros. The issue is all the processes come back as successes when reading registers. So right now, only hard drive mode works, but this devlog is already wayyyy too long and I wouldnt want to lose all this time.
I dont have any major update, I am stuck fixing a regression where FAT initialization fails exclusively on QEMU floppy boots, while HDDs work fine. I always fix one thing and something else breaks, like EDD probing panics, false failiures, reset storms and others. The end result is always the same, the boot takes a long time (timeouts) and no disk is available.
At the moment I am still stuck on the same issue (floppy/HDD). I got the idea that the fs may be misconfigured so I am working a on that too. A lot of theories, and multiple issues i’ve fixed already, but on floppy FAT init still fails.
The floppy boot issue persists. I have moved past the FAT init failing visibly, but any read actions throw all zeros out. I came across the issue in the past, I feel like I am going in circles here,
I have finally fixed the floppy boot including its FAT12 init. There were many, many problems, I was running around in circles but I finally fixed it. The last thing I did was rewrote the EDD stuff front and back, and I assume that fixed it. I, honestly, am not sure. But anyways, now both HDD and floppy boot work including FAT12 init and all functions of BASIC that I have implemented insofar.
I took a small hiatus (climbing in the caucas mountains for my mental health). Anyways i’m back and I added binary loading and execution support (for example precompiled C or whatever). I works, no too visible on the screenshot but look at the screen border (it was flashing). Also sorry for the long devlog but i had some time logged, and logged more now, and somehow ended up with 18 hrs.
I started working on giving the system a voice. Yes, quite literally a dystopian, creepy voice synthetisation function. Originally I was only gonna do ‘BEEP freq, duration’ (which i managed in a good hour at most) but then I got invested in actual phoneme/allophone synthesys (Software Automatic Mouth style) and it turned into a lot more work. Sadly so far i’ve only ever gotten squeals out of it, or all quiet, so i am probably going to give up and do more important work like either a text editor or a directory support, or even a proper C compiler in-system (so far only precompiled binaries work).
Nothing incredible, except scut work right now. I was made aware by codefactor that my code was too complex in parts (complexity of 771) and so I cleaned up the file tree so its nice and organized, and I am most way through splitting stmt(), but I was made aware my devlogs are too long so here you go.
After my restructuring I was gonna ship the project but I just dont feel its finished enough so I wanted to add a few more features to make it a bit more standalone. Right now, you would in theory be able to use it on a computer without having to prepare programs on another computer because WE HAVE A TEXT EDITOR!!! finally. So you can write your BASIC and execute it, save the results and view them as much as you want!! There is a prime number sieve being edited on screen but it doesnt run yet because there are some issues in the way my BASIC is interpreted, some issue with loops or whatnot. Thats the next thing to work on.
hi people! this time, i mostly worked on cleaning things up after restructuring the working tree, and i also fixed a few issues with the text editor. the biggest breakthrough was figuring out why the prime sieve computation kept failing. in the end, the problem had nothing to do with the math itself. instead, it came from the way the interpreter handled loops and writing to disk. those issues interacted in a way that caused the loop to stop after finding just one number. that problem is now fixed, and while tracking it down i also ran into several other bugs, which i fixed along the way. that’s all!
hi guys! i took a short break from the project. first voluntarily to take care of my mental health, and then a bit longer than planned because i got sick. after returning, i tackled a smaller but useful feature: RTC support via the TIME command. the command can now work with the real-time clock, which means the system has proper support for reading and handling time instead of relying on a manually managed value. this was a fairly quick feature to work through, so it felt like a good way to get back into the project after the break. also, please excuse the old time shown in the photo, i hadn’t kept it up to date when I took it. that’s all, see you later
hi people! this was mostly a behind-the-scenes work session rather than one with a major new feature to show off. i spent a lot of time working through the project, trying things out, and dealing with the smaller details that tend to take longer than expected. there isn’t one big result for this devlog, but the time was still useful for getting a clearer picture of what needs attention next and making progress on the work that supports the larger features. sometimes development is less about a big visible change and more about putting time into the parts that make future work smoother. that’s all for now!
hi people! this time i added a set of bitwise operations to the language: AND(x,y), OR(x,y), XOR(x,y), NOT(x), SHL(x,n), and SHR(x,n). these work on values converted to 32-bit integers, and the shift functions keep large shift counts predictable by masking them to 31. i also added HEX$(x) and BIN$(x) string functions for displaying numbers in hexadecimal and binary, without unnecessary leading zeroes. on top of that, the number parser now accepts hexadecimal and binary literals using &H… and &B…. finally, i updated the built-in HELP text so the new functions and literal formats are documented in the system itself. that’s all for now
hi people! i started working toward graphics support this time. i’m moving away from text-mode tricks and looking at direct pixel plotting instead, since it should be much more flexible to build on later.it’s still a work in progress, but i should have something more complete to show next time. what pmo is that 10 hour limit so i cant just devlog once i have a feature, i have to do it in the middle of nothing an wasting 3 hours anyways. see y’all later!
hi people! i spent more time working on the graphics system. there still isn’t a finished result to show yet, but i’ve been continuing to work through the implementation and figuring out the pieces needed for proper pixel-based graphics support. it’s taking a bit more iteration than expected, but the goal is still to have a solid graphics foundation rather than rushing in something limited. hopefully i’ll have the completed version ready to show soon. see y’all later!
hi people! recently i worked on adding proper graphics support to the project. instead of relying on text-mode attribute tricks, i went with direct pixel plotting, since it gives the system a much more flexible foundation for drawing things on screen. i added a new Mode 13h framebuffer API with functions for entering and leaving graphics mode, clearing the screen, plotting and reading individual pixels, drawing lines, rectangles, and circles, and changing the VGA palette. the implementation writes directly to the linear framebuffer at 0xA0000, with palette updates handled through the VGA DAC ports. on the BASIC side, there are now new statements for using these graphics features: SCREEN, GCLS, PSET, LINE, RECT, CIRCLE, and PALETTE. i also connected the new graphics code to the statement dispatcher and updated the built-in HELP text so the commands are documented. finally, i cleaned up the build setup by adding the new graphics source files and removing an old ‘-display curses’ option from the run command. this is a much more versatile approach than only the old text-based graphics, and it gives me a better base for anything visual i add later. that’s all for now!
hi people! this time i worked on a v86-compatible version for the in-browser demo. it’s now possible to try the project directly in the browser, although there are still a few input-related issues, including with the shift key. the browser version is mainly there as a quick way to look at the project without setting anything up. for proper testing, though, i’d still recommend using a local environment—the demo is mostly for anyone too busy to set one up. pong does work in it though ^^
hi people! im trying to get BTBX to boot properly on an ASUS F5RL laptop. unfortunately, it still isn’t booting correctly, but I managed to narrow the problem down further. I previously ran into issues involving EDD, DH, and a few other parts of the boot process. right now I’m getting the error S1>S2Agk(18.1)Drk{c2,h0,s2}R , which makes it look like the BIOS may be reporting bogus CHS geometry in a way BTBX is not expecting. there’s no working result yet, but I’ll keep investigating the boot and disk-handling path. i hope to get it running soon.
hi people! this one’s a bit different. no new features, but a new name. the project is now called Borealis. the old name, BTBX, made sense when this was a tiny BASIC interpreter and nothing more, but it’s grown into a full bootloader, kernel, and proto-OS, and the name stopped fitting. the system now has three named layers: coil is the two-stage bootloader, helix is the kernel, and BOREALIS is the system as a whole. the names are deliberately scale-neutral. where the project goes from here shouldn’t be constrained by what it’s called. the rename itself was the easy part, the fallout was the real work. i went through every file updating references to the old name, plus the directory structure ( boot/ became coil/ , src/kernel/ became src/helix/ ), the build files, and the image name ( borealis.img now). outside the repo, i also had to update hackatime and stardance so everything points at the right thing. the README on github is fully rewritten to match (may not be pushed at this time), and there’s a note in it about the old name for continuity. technically nothing else changed. same code, same features, same open issues, this was purely an identity update. that’s all for now!
Fixed the boot (fr this time) the whole laptop reset thing turned out to be two bugs stacked on each other: the bootloader was trusting/rejecting BIOS geometry based on vibes, and the kernel entry point was jumping into a debug helper instead of _start , so the CPU executed one stray ret into the void and triple-faulted. coil now makes the BIOS prove its geometry against a build-time checksum before trusting it, and checksums the whole kernel before jumping in. Boot output is an actual diagnostic language now: gk = geometry truthful, gf = BIOS lied, C! = wrong bytes arrived, and nothing resets silently anymore. QEMU boots all the way to BASIC, audio included. Also cleaned up helix.c (boot debug spam now only speaks when something’s actually wrong, RIP “HELIX FAILIURE” typo), evicted BTBX from the prompt, it’s js => now, and am working the BASIC interpreter with a bit of a rewrite: dispatcher no longer depends on include order and prayer, dead duplicate file-I/O code confirmed gone, graphics.inc brace damage found and fixed. Laptop test tomorrow-ish, then the interpreter cleanup lands. see u next time!
boot is finally stable, primes count to a million, so i tried the graphics. SCREEN 13 does nothing. no error, no letters, no mode change. GCLS nothing, LINE nothing, RECT nothing. PALETTE works??? which makes no sense because palette is the one that should be hardest. starting to suspect the video thunk is broken. ive got no idea. but at least im honoring my promise to keep devlogs shorter.
spent the whole night inside the realmode thunk with a fine comb. it is NOT the thunk. SCREEN 0 actually switches modes fine, which makes SCREEN 13 doing nothing even weirder. also found out my kernel thinks graphics is already on before i ever turned it on?? the flag says 255. TWO HUNDRED FIFTY FIVE. its supposed to be 0 or 1. memory corruption somewhere (see kpan 7), or im losing my mind. probably both.
ITS THE MEMORY MAP. gfx_is_active sits at 0xA12C0 which is past 0xA0000 aka inside the VGA framebuffer window. reads from there always return 0xFF in text mode, writes vanish into the void. the kernel bss grew past 640k and parked a variable in video memory. the “graphics thunk situation” was never the thunk. it was never even the graphics. one line in the linker script moves bss to 1MiB and everything works. i want to scream (affectionate). theres some more to be done before its usable in practice (because it never really was i guess) but SOON.
SCREEN 13 works, SCRTEST passes end to end, palette cycling is smooth, and as a bonus the fix also killed a stack-vs-bss collision that was waiting to happen. wrote AURORA.BAS to celebrate, it does a starfield and a sine curtain with the classic palette-cycling trick so it stays fast even interpreted. next up (probs): making it the boot splash, config.txt for persistence, then directories and much much more to be excited for!
the system has a config file now. CONFIG.TXT on the boot disk, key=value, one per line, read at boot. the fun part: the parser tolerates leading line numbers, so EDIT CONFIG.TXT just works with zero new editor code. the editor only speaks numbered lines, so i taught the config reader to ignore them instead (and officially, just use the numbered lines in there its not that hard, but you dont have to for it to work). SPLASH=0/1 is the first key, persistence is free because its a file on the FAT12 disk. the whole reader is ~75 lines, no allocation, no subsystem. config systems should be files, not frameworks ;3c
boot splash is in and shipping on the image. CONFIG.TXT decides, SPLASH.BAS plays on boot, keypress skips. the hook was “just two lines” and then reality happened: config.c wasnt in the makefile, the loader was static, and the first boot loaded the splash then sat at the prompt waiting for me to type RUN myself. three one-line fixes later: coil letters, banner, aurora, prompt. also fixed make pack details. the machine has a boot vibe now next up is proper scrollback, logging, and arrow key support.
im still working on real hw boot issues. coil doesnt guess geometry anymore, it brutes it: the new stage2 tries every plausible CHS geometry against a buildtime checksum of the kernel’s first sector and prints the one that actually works. no more “trust the BIOS” and no more “reject the BIOS”, just prove it. on a sane machine it prints g(18.2) and boots like nothing happened. on the laptop it either prints its real geometry and boots, or prints G! plus what the BIOS claimed. either way i finally get an answer instead of a silent reset. in the meantime ill be working on some features like arrows, logging, etc. attached photo of my testing setup
borealis booted on the laptop for the first time. not qemu but actual silicon, a core 2 duo, off a usb stick. coil came up, loaded helix, and the machine made it to the banner plus three debug lines, which is the whole chain working on real firmware: stage1 > stage2 > kernel > protected mode. CHS disk was already known broken cos this bios won’t talk cylinders/heads/sectors to a stick with no real geometry, fair enough — so coil booted over EDD, but helix’s disk layer still assumed CHS and the filesystem never came up. still: it boots, on real hardware. just doesnt get far enough to be useful (yet).
next wall, immediate: the machine hangs at fat_cache_load, the step where helix reads the FAT and root directory into RAM. in qemu this works instantly but on the laptop the disk read goes out and never comes back. no error, no status, no return. debug output narrows it to exactly the transfer call: everything before prints, everything after doesn’t.
working theory: the bios’s legacy usb support, and specifically system management mode. coil runs in pure real mode and its EDD reads work, the bios reads the stick happily at boot. but helix runs in protected mode, and calling the bios means dropping back through a thunk, and that round-trip is where it dies. on a machine this age legacy usb lives in SMM: the bios traps disk interrupts and does the transfer in a mode invisible to the os, assuming a clean real-mode cpu, and our PM excursion breaks that assumption. the tell: teletype (int 10h) works from the thunk, disk (int 13h) hangs. teletype doesn’t touch usb, disk does. photo is the bios setup screen, where i went hunting for a legacy usb toggle which i did not find ;3c
instrumented the thunk to print a letter per step so a hang names its own murderer. result: Rer , then nothing. R entered real mode, e entered the EDD read, r was about to issue a disk reset, ah=00h, the simplest int 13h call there is, no transfer, and it never returned. if even a no-op reset hangs after the PM excursion, the bios’s whole disk service is dead post-protected-mode on this machine, full stop. so the fix is a native usb driver. helix talks EHCI directly, bios for boot and native for runtime, as it should be, but that’s pci + ownership handoff from the very SMM that broke us + enumeration + BOT/scsi, and you don’t bring that up blind, one teletype letter per reboot, right before losing the hardware. deferred until the laptop’s back on hand; qemu remains unaffected.
the laptop’s bios has a party trick: as i described before, int 13h works fine until the cpu enters protected mode, then it never returns, not even for a no-transfer disk reset. bios toggles didn’t help, so borealis is growing a native usb driver. first part: find the ehci controller over pci, do the formal ownership handshake (there’s an actual semaphore register in config space where the os and the bios’s smm ghost take turns. set our bit, wait for theirs to clear, then kill every smi source so the ghost stops getting summoned), reset the controller, spin up an idle async schedule, scan the ports. no packets yet, just a controller that’s officially ours. dev loop is qemu with a stick image on an emulated ehci, boot still from floppy, so the laptop only has to show up for the one hardware-specific part. moral: if the firmware won’t share the hardware, take the hardware.
the stick talks, and for the first time it’s talking to us, not the bios. this part was the transfer engine: queue heads and transfer descriptors, little linked-list structs the ehci controller fetches out of ram and executes on its own. a control transfer is three of them chained by hand (setup, data, status), data toggles set manually per stage because high-speed lets you. link the queue head into the async ring, poll the active bit, unlink, then ring the doorbell (an actual doorbell bit) so the controller formally forgets the whole thing before the structs get reused. first exchange: GET_DESCRIPTOR at address 0, and the stick answered with its vid/pid like a civilized device. qemu’s stick goes by 46f4:0001; the real one can introduce itself when the laptop’s back. next: scsi over bulk, and fat12 stops caring what a disk is. moral: usb devices are polite, they just want to be asked in struct form.
debug spew is a file now. every checkpoint from the first instruction onward (entry asm, the real-mode thunk letters, all the [DEBUG] lines) lands in a buffer, and once the fs proves it can write, the buffer becomes LOG.TXT and the screen clears to the banner. the trick is the default: echo stays on until the file is safely written, so a boot that dies early still shows everything live. the fallback isn’t a code path, it’s just never getting to the quiet part. LOG=0 in CONFIG.TXT keeps the old wallpaper. and the log already caught its first bug: a missing [EZTG] tattled on a stale version entry.asm. debugging is too important to leave on the screen.
im still working on getting a usb driver to work. ehci seems to work kinda but its a loop between giving false data, partial data and occasionally seemingly true data but then usb decides it doesnt like it and ideally fat12 fails durning cache load too, WHICH I FIXED LONG AGO BRUH. but it came back for some reason. so im trying timing, msd, stall handling everything. this may take another decade.
the stick is a disk now, no bios involved: usb grew enumeration and bot/scsi, fat12 picks whichever backend came up. qemu took the whole chain first try. the laptop found the stick on port 0 and then refused to reset it (my fault), the 50ms delay was port-0x80 writes that only cost real time inside qemu, so there’s a pit-based clock now. plot twist from the log meanwhile: the bios path worked on the laptop, because the toggles that “didn’t help” had quietly moved the stick to floppy emulation, and that path survives the mode switch. so it (partially) boots by accident while we fix it on purpose. also caught in a self-audit: a stall burned a full second, and a short read could report success with half a sector. readme rewritten as i was told to by sw.
the port resets work on the laptop now. the bit we were waiting on (port-enable-changed) was being acknowledged by the bios’s smm ghost before we ever saw it, so we stopped waiting on the status bit and just read the port state, which can’t be acked away. also fixed before it bit us: two devices answering address 0 at once (enumeration is per-port now, and every device gets a real address before the next port wakes up). the next failure was prettier: every OUT transfer works, every IN transfer dies. the stick takes its orders but can’t talk back. that’s the signature of the qtd buffer list, the one place real ich silicon is strict where qemu is forgiving, so all dma buffers are page-aligned now and the error reports name whichever endpoint stalled. also everyone gotta apreciate the blahaj!
i am (still) putting in work on the usb driver, this is proving to be very complicated especially because my hardware is not cooperating. im thinking about switching back to floppy-emulated mode which would be more practical for debugging but at the same time probably introduce new issues i dont even expect yet.
its been a week since my last devlog, i dont have much new to add because with school and other responsibilities i dont have much time for actuall progress on this project. still i accumulated some 9 hours (sorry gizzy) by doing small changed, linting, updating forgotten banners and version numbers and so on. EHCI/USB still fails on the same issues as before. i will be reverting to a superfloppy boot because right now i cant even get debug to write to the disk which is annoying. then once i get the usb driver with all its issues working (sometime next decade) i can give usb boot another shot.
Ships:
I built BTBX (Bare Tiny(?) BASIC eXecutor), a self-contained BASIC interpreter that is the operating system. There’s no Linux, no DOS, nothing underneath it. It boots straight off a FAT12 floppy image via a two-stage bootloader (512-byte stage1 + 2KB stage2), flips the CPU into protected mode, sets up the A20 gate, and lands you directly in a BASIC REPL, all inside 640KB of conventional memory. From there it’s a real language: GOTO, GOSUB, FOR/NEXT, WHILE/WEND, IF/THEN/ELSE, multi-dimensional arrays, 32-bit integers plus x87 80-bit floats, string functions (LEFT$, MID$, CHR$, etc.), and a full FAT12 filesystem so you can actually SAVE, LOAD, and DIR your programs on the disk image. There’s also PEEK/POKE for raw memory access, BLOAD/SYS to load and jump into raw machine code, VGA graphics primitives, a PIT-driven BEEP, and — half-finished but present — a SAY command aiming for SAM-style formant speech synthesis. What was challenging? Everything below the interpreter, honestly. Getting the boot chain right (CHS and EDD disk reads, A20 enabling that doesn’t silently hang, jumping into protected mode without immediately triple-faulting) took far longer than any language feature. The BIOS-thunk approach for file I/O (calling back into 16-bit real mode from a 32-bit kernel just to talk to disk) was its own maze. The funniest recent challenge was building a browser demo on top of v86: getting PS/2 keyboard Shift state to survive contact with a web browser turned out to be nearly as hard as writing the A20 gate code itself :3. Real hardware (and QEMU) just work; browsers apparently have opinions about what a Shift key is allowed to do. What am I proud of? That it boots at all, genuinely. A homemade OS with a homemade language on top, running real math through the x87 FPU and reading/writing a real filesystem, in under 640KB, with zero borrowed runtime. Getting arrays, strings, and file I/O all coexisting cleanly in a from-scratch interpreter over ~240 hours feels like the actual milestone here, not any single feature. What should people know to test it? Use make && make run, that's the supported path, tested in QEMU, and it's where shift/symbols work correctly. The browser demo (v86-based) is explicitly beta. booting and typing work, but shift-modified keys are unreliable there due to browser/emulator keyboard quirks (a real physical keyboard emulator interaction gap, not a BASIC bug ^^). Don't judge the interpreter by the demo's keyboard weirdness. Try PRINT, FOR/NEXT loops, SAVE/LOAD/DIR to confirm the filesystem works, and BEEP for audio. SAY is a known work-in-progress ergo don't expect actual speech (yet). Check the source tree if you want to see the boot chain (boot/stage1.asm, boot/stage2.asm) separately from the interpreter (src/kernel/basic.c)....
|
1792878618.2847242
|
1793742618.2847242
|
|
59289
|
Disease identification site using datasets by @rea Disease identification site using datasets by @realguyxgammer | Stardance...
|
realguyxgammer
|
1
|
1.88
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T13:43:18Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this project actually identities diseases which i trained it from kaggle i took around 132 main diseases like the life threatning ones and around 900-1000 normal diseases so it basically can detect quite the amount", "repo": "https://github.com/realguy-beep/Disease-identification-site-using-datasets", "demo": "https://disease.realguyxgammer.hackclub.app"}]...
|
[{"post_id": 65471, "ts": "202 [{"post_id": 65471, "ts": "2026-09-10T17:02:56Z", "hours": 0.8786, "text": "optimized the code abit and made the interference look much more better i am ready to ship it now"}, {"post_id": 64796, "ts": "2026-09-09T13:40:13Z", "hours": 0.9319, "text": "deployed the project to ship it and also for you all to check lol go as wild as u all can to this website cause i have trained it with some crazy datasets"}, {"post_id": 63419, "ts": "2026-09-07T07:53:11Z", "hours": 0.4631, "text": "just made it safe to publish it to github lol would take suggestions and improve more"}]...
|
Title: Disease identification site using datasets Title: Disease identification site using datasets by @realguyxgammer | Stardance
Devlogs:
just made it safe to publish it to github lol would take suggestions and improve more
deployed the project to ship it and also for you all to check lol go as wild as u all can to this website cause i have trained it with some crazy datasets
optimized the code abit and made the interference look much more better i am ready to ship it now
Ships:
this project actually identities diseases which i trained it from kaggle i took around 132 main diseases like the life threatning ones and around 900-1000 normal diseases so it basically can detect quite the amount...
|
1792878617.4721243
|
1793742617.4721243
|
|
59280
|
Personal Slack bot by @AbhrajitGogoi | Stardance
|
AbhrajitGogoi
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T02:09:50Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello World!! This is my personal slack bot project call “THE GB-BOT”. It is a fun basic bot which can tell you the weather in 5 cities, a cute fact about cats and the quote of the day. It also has a /gb-bot-help command to show you the available commands. try it at: https://hackclub.enterprise.slack.com/archives/C0P5NE354 Available commands: - /gb-bot-ping : Check bot latency - /gb-bot-catfact : Get a random cute cat fact - /gb-bot-qotd : Get the quote of the day - /gb-bot-weather : View current weather for selected cities - /gb-bot-help : Display the command list The container part was the thing I understood the least. I have no experience with linux and honestly i was blindly following the guide and hope the bot would get deployed without any issues which it did and i am grateful for that. Phew. This is only a basic bot up to this point. I will also be working on a V2.0 which would be more niche and tailored to my personality. THE GB BOT V2.0 coming soon!!!", "repo": "https://github.com/Abhrajit-Gogoi/gb-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 63517, "ts": "202 [{"post_id": 63517, "ts": "2026-09-07T12:47:58Z", "hours": 0.7358, "text": "GB-BOT V1.0 complete!!!! Added a cat fact command and a quote of the day command. It was way easier than the weather app.. . The V1.0 is complete and ready to ship. It was a short but memorable journey. Signing off!!!!!….."}, {"post_id": 63500, "ts": "2026-09-07T11:58:23Z", "hours": 1.1861, "text": "added a weather command /gb-bot-weather. it fetched the weather data for 5 cities and has a dropdown you can select from. it took longer than i thought it would and i also had to look up the community to help me fix bugs."}, {"post_id": 63463, "ts": "2026-09-07T10:22:53Z", "hours": 0.675, "text": "Initial devlog Created the slack bot and added basic latency and help commands as shown in the guide. Will now try to figure out to add a profile pic and new commands……."}]...
|
Title: Personal Slack bot by @AbhrajitGogoi | Star Title: Personal Slack bot by @AbhrajitGogoi | Stardance
Devlogs:
Initial devlog Created the slack bot and added basic latency and help commands as shown in the guide. Will now try to figure out to add a profile pic and new commands…….
added a weather command /gb-bot-weather. it fetched the weather data for 5 cities and has a dropdown you can select from. it took longer than i thought it would and i also had to look up the community to help me fix bugs.
GB-BOT V1.0 complete!!!! Added a cat fact command and a quote of the day command. It was way easier than the weather app.. . The V1.0 is complete and ready to ship. It was a short but memorable journey. Signing off!!!!!…..
Ships:
Hello World!! This is my personal slack bot project call “THE GB-BOT”. It is a fun basic bot which can tell you the weather in 5 cities, a cute fact about cats and the quote of the day. It also has a /gb-bot-help command to show you the available commands. try it at: https://hackclub.enterprise.slack.com/archives/C0P5NE354 Available commands: - /gb-bot-ping : Check bot latency - /gb-bot-catfact : Get a random cute cat fact - /gb-bot-qotd : Get the quote of the day - /gb-bot-weather : View current weather for selected cities - /gb-bot-help : Display the command list The container part was the thing I understood the least. I have no experience with linux and honestly i was blindly following the guide and hope the bot would get deployed without any issues which it did and i am grateful for that. Phew. This is only a basic bot up to this point. I will also be working on a V2.0 which would be more niche and tailored to my personality. THE GB BOT V2.0 coming soon!!!...
|
1792878616.6386704
|
1793742616.6386704
|
|
56402
|
fancy ahh weather app for m country by @OrderDanie fancy ahh weather app for m country by @OrderDanie | Stardance...
|
OrderDanie
|
2
|
2.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T16:32:04Z", "hours": 1.0, "multiplier": 2.41, "payout": 2, "blessing": "neutral", "text": "i imrpoved the webapp, since the devs tought it was ai like ui, and also added all the feedback suggestions, like news, multi cities weater, simpler serach bar, smaller animations", "repo": "https://github.com/OrderDanie/FOR-GOD-s-SAKE-ITS-A-WEATHER-APP-STOP-ASKING", "demo": "https://scintillating-lamington-d199c2.netlify.app/"}, {"ship_num": 2, "ts": "2026-08-30T19:58:14Z", "hours": 1.0, "multiplier": 2.01, "payout": 2, "blessing": "neutral", "text": "hehe, time to speak, um, this app was a dream come true to me ngl, i long wanted to have an actual website, that has anything on it, not some random project, tho i had a hard time coding, since i started it on my i3 5th laptop, on 4gb ddr3, which was pain, but hey now i have an i5 10th, anyways, oh yea before you go ahead and test the website, go ahead and test the website what are you wating for??? STOP READING, REALLY THO, bruh just go alrd.", "repo": "https://github.com/OrderDanie/FOR-GOD-s-SAKE-ITS-A-WEATHER-APP-STOP-ASKING", "demo": "https://scintillating-lamington-d199c2.netlify.app/"}]...
|
[{"post_id": 60317, "ts": "202 [{"post_id": 60317, "ts": "2026-09-02T16:28:35Z", "hours": 0.3522, "text": "very important news today"}, {"post_id": 59199, "ts": "2026-08-31T21:08:15Z", "hours": 0.2997, "text": "CHECK OUT THIS ANIMATION, dont mind the lag gng its not my fault, im griding for the framework laptop"}, {"post_id": 59185, "ts": "2026-08-31T20:38:00Z", "hours": 0.3972, "text": "FOR THE GUY THAT SAID THE UI LOOKS VIBECODED, i have learned how to use design, not really thi, i just used another website that simplifies the css and ui work, BUT THERE YOU GO, also added support for other countries, how you find yours"}, {"post_id": 58387, "ts": "2026-08-30T19:54:35Z", "hours": 0.2672, "text": "YEP I GOT IT, THATS RIGHT, I WIN"}, {"post_id": 58352, "ts": "2026-08-30T18:54:16Z", "hours": 0.555, "text": "nvm i got it, maybe?"}, {"post_id": 58294, "ts": "2026-08-30T17:51:23Z", "hours": 0.2964, "text": "see, thats not supposed to happen"}]...
|
Title: fancy ahh weather app for m country by @Ord Title: fancy ahh weather app for m country by @OrderDanie | Stardance
Devlogs:
see, thats not supposed to happen
nvm i got it, maybe?
YEP I GOT IT, THATS RIGHT, I WIN
FOR THE GUY THAT SAID THE UI LOOKS VIBECODED, i have learned how to use design, not really thi, i just used another website that simplifies the css and ui work, BUT THERE YOU GO, also added support for other countries, how you find yours
CHECK OUT THIS ANIMATION, dont mind the lag gng its not my fault, im griding for the framework laptop
very important news today
Ships:
hehe, time to speak, um, this app was a dream come true to me ngl, i long wanted to have an actual website, that has anything on it, not some random project, tho i had a hard time coding, since i started it on my i3 5th laptop, on 4gb ddr3, which was pain, but hey now i have an i5 10th, anyways, oh yea before you go ahead and test the website, go ahead and test the website what are you wating for??? STOP READING, REALLY THO, bruh just go alrd.
i imrpoved the webapp, since the devs tought it was ai like ui, and also added all the feedback suggestions, like news, multi cities weater, simpler serach bar, smaller animations...
|
1792878613.812397
|
1793742613.812397
|
|
9555
|
HelioGuard AI by @nero_404 | Stardance
|
nero_404
|
1
|
24.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T15:30:06Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "After around 24 hours of work across 8 devlogs, I made HelioGuard AI — an educational space risk intelligence dashboard that turns NASA public asteroid and space weather data into understandable risk scores, object reports, and student-friendly mission briefings. I built the project because NASA open data is very powerful, but the raw JSON can be difficult for students and non-experts to understand. HelioGuard fetches near-Earth object data from NASA NeoWs and space weather events from NASA DONKI, cleans the data, calculates risk scores, and presents everything through a responsive arcade-inspired interface. The risk system is transparent instead of being a black box. Each asteroid is scored using its estimated diameter, velocity, miss distance, and NASA hazardous classification: Asteroid Risk = 100 × clamp( 0.30 × diameter score + 0.20 × velocity score + 0.35 × closeness score + 0.15 × hazardous flag ) The final HelioGuard Index combines asteroid and space weather conditions: HelioGuard Index = 0.45 × Asteroid Risk + 0.55 × Space Weather Risk The most challenging part was combining different NASA APIs and turning very different scientific values into one understandable system. I also had to handle API failures safely, create loading and fallback states, design a rule-based ORBIT-01 briefing engine, and make the full landing page and detailed dashboard work on both desktop and mobile. I am most proud that this became more than a simple API wrapper. The project includes a complete visual experience, a documented mathematical model, asteroid reports, space weather summaries, educational explanations, transparent limitations, and a full research proposal. Research PDF: https://github.com/BeBecpp/helioguard-ai/blob/main/docs/HelioGuard_AI_Research_Proposal.pdf Research notes: https://github.com/BeBecpp/helioguard-ai/blob/main/docs/RESEARCH.md When trying the project, click Launch App, explore the top asteroid reports, open the risk explanation, and read the ORBIT-01 mission briefing. HelioGuard AI uses NASA public data, but its scores are an educational mathematical model. It is not an official NASA or NOAA product and must not be used as an emergency warning system.", "repo": "https://github.com/BeBecpp/helioguard-ai", "demo": "https://bebecpp.github.io/helioguard-ai/"}]...
|
[{"post_id": 40788, "ts": "202 [{"post_id": 40788, "ts": "2026-08-04T15:24:34Z", "hours": 2.2217, "text": "Today I spent around 2 hours and 13 minutes doing the final testing and polish for HelioGuard AI before shipping.I tested the live NASA data again, fixed and checked the API connection, and confirmed that the asteroid and space weather sections are loading correctly. I also tested the landing page, Launch App flow, detailed dashboard, risk scores, asteroid cards, ORBIT-01 mission briefing, animations, and mobile responsive layout.I cleaned up the final UI, checked the GitHub repository, README, research PDF, live demo links, and educational disclaimer. HelioGuard AI now feels like a complete student space learning experience instead of only a simple API dashboard.The project uses NASA public data, mathematical risk scoring, and AI-style mission briefings to help students understand asteroid and space weather information in a fun arcade-inspired interface.This is my final devlog before shipping. Next, I am submitting HelioGuard AI for review and continuing to improve it based on feedback."}, {"post_id": 6020, "ts": "2026-06-10T02:51:43Z", "hours": 10.1667, "text": "I spent about 10 hours working on HelioGuard AI, focusing on the premium arcade-style frontend, the Launch App dashboard flow, NASA public data presentation, and student-friendly explanations. I improved how the project explains the HelioGuard Index, asteroid risk scores, space weather summaries, and ORBIT-01 mission briefings. I also worked on the README, research PDF links, GitHub cleanup, deployment preparation, and overall project presentation so reviewers can understand the project more easily. This session helped HelioGuard AI feel more like a complete educational space learning tool instead of just a simple API dashboard. Next, I’m going to keep testing the live demo, polish screenshots, improve dashboard details, and prepare the project for shipping after identity verification."}, {"post_id": 5712, "ts": "2026-06-09T16:40:03Z", "hours": 5.5694, "text": "I spent about 5 hours and 30 minutes continuing work on HelioGuard AI. This was a bigger polish session where I focused on improving both the project presentation and the actual user experience. I worked on the frontend direction, the premium arcade-style layout, and the flow between the landing page and the detailed dashboard. I also kept refining how the project explains NASA public data, the HelioGuard Index, asteroid risk scores, and mission briefings in a way that students can understand without reading raw API data. One important part of this session was making the project feel more complete and serious: I worked on the README, research PDF links, project cleanup, and making sure the live demo and GitHub repo are easier for reviewers to understand. My goal is to make HelioGuard AI feel like a real educational space learning tool, not just a quick API demo. Next, I’m going to keep testing the live demo, improve screenshots, clean up the final GitHub presentation, and prepare the project for shipping once identity verification is complete."}, {"post_id": 4171, "ts": "2026-06-07T12:05:12Z", "hours": 0.4714, "text": "Today I continued polishing HelioGuard AI and improved the project presentation for Stardance. I worked on making the frontend feel more like a premium arcade-style space learning experience, with a cleaner landing page, stronger mission visuals, and a better flow from the homepage into the detailed dashboard. I also prepared the research side of the project so it feels more serious and explainable. HelioGuard AI is not just a visual dashboard — it uses NASA public data, a mathematical risk scoring model, and AI-style mission briefings to help students understand asteroid and space weather information. I added a research PDF that explains the project motivation, data sources, system architecture, mathematical risk model, limitations, and educational purpose. Research PDF: https://github.com/BeBecpp/helioguard-ai/blob/main/docs/HelioGuard_AI_Research_Proposal.pdf Next, I’m going to keep testing the live demo, improve screenshots, and continue polishing the detailed dashboard so the project is ready for shipping after identity verification."}, {"post_id": 4149, "ts": "2026-06-07T11:09:46Z", "hours": 0.7278, "text": "cheacking the design"}, {"post_id": 4130, "ts": "2026-06-07T10:11:07Z", "hours": 2.6983, "text": "I spent about 2 hours and 40 minutes continuing work on HelioGuard AI. This session focused on making the project feel more like a real educational space mission tool instead of just a normal dashboard. I worked on improving the visual direction, organizing the NASA data into a more understandable structure, and refining the student-friendly explanation flow. The project now feels more connected: real NASA public data comes in, the risk model turns it into scores, and the mission briefing explains what the data means for students. Next, I’m going to keep polishing the interface, improve the asteroid object reports, and make the HelioGuard Index easier to understand with clearer explanations and better screenshots."}, {"post_id": 3903, "ts": "2026-06-07T00:33:19Z", "hours": 1.9711, "text": "I spent about 1.5 hours setting up the first working version of HelioGuard AI. I focused on building the core structure of the project: connecting the NASA data idea, planning the risk scoring system, and creating the first dashboard layout. The main goal of this session was to turn the concept into something real instead of just an idea. I worked on the React/TypeScript structure, the NASA API direction, the HelioGuard Index concept, and the first version of the student-friendly mission briefing. Next, I want to improve the UI so it feels less like a normal dashboard and more like a space learning lab for students."}, {"post_id": 3525, "ts": "2026-06-06T14:38:13Z", "hours": 0.6094, "text": "WELCOME TO HELIOGUARD_AI NASA-data-powered AI dashboard for asteroid and space weather risk intelligence."}]...
|
Title: HelioGuard AI by @nero_404 | Stardance
Dev Title: HelioGuard AI by @nero_404 | Stardance
Devlogs:
WELCOME TO HELIOGUARD_AI NASA-data-powered AI dashboard for asteroid and space weather risk intelligence.
I spent about 1.5 hours setting up the first working version of HelioGuard AI. I focused on building the core structure of the project: connecting the NASA data idea, planning the risk scoring system, and creating the first dashboard layout. The main goal of this session was to turn the concept into something real instead of just an idea. I worked on the React/TypeScript structure, the NASA API direction, the HelioGuard Index concept, and the first version of the student-friendly mission briefing. Next, I want to improve the UI so it feels less like a normal dashboard and more like a space learning lab for students.
I spent about 2 hours and 40 minutes continuing work on HelioGuard AI. This session focused on making the project feel more like a real educational space mission tool instead of just a normal dashboard. I worked on improving the visual direction, organizing the NASA data into a more understandable structure, and refining the student-friendly explanation flow. The project now feels more connected: real NASA public data comes in, the risk model turns it into scores, and the mission briefing explains what the data means for students. Next, I’m going to keep polishing the interface, improve the asteroid object reports, and make the HelioGuard Index easier to understand with clearer explanations and better screenshots.
cheacking the design
Today I continued polishing HelioGuard AI and improved the project presentation for Stardance. I worked on making the frontend feel more like a premium arcade-style space learning experience, with a cleaner landing page, stronger mission visuals, and a better flow from the homepage into the detailed dashboard. I also prepared the research side of the project so it feels more serious and explainable. HelioGuard AI is not just a visual dashboard — it uses NASA public data, a mathematical risk scoring model, and AI-style mission briefings to help students understand asteroid and space weather information. I added a research PDF that explains the project motivation, data sources, system architecture, mathematical risk model, limitations, and educational purpose. Research PDF: https://github.com/BeBecpp/helioguard-ai/blob/main/docs/HelioGuard_AI_Research_Proposal.pdf Next, I’m going to keep testing the live demo, improve screenshots, and continue polishing the detailed dashboard so the project is ready for shipping after identity verification.
I spent about 5 hours and 30 minutes continuing work on HelioGuard AI. This was a bigger polish session where I focused on improving both the project presentation and the actual user experience. I worked on the frontend direction, the premium arcade-style layout, and the flow between the landing page and the detailed dashboard. I also kept refining how the project explains NASA public data, the HelioGuard Index, asteroid risk scores, and mission briefings in a way that students can understand without reading raw API data. One important part of this session was making the project feel more complete and serious: I worked on the README, research PDF links, project cleanup, and making sure the live demo and GitHub repo are easier for reviewers to understand. My goal is to make HelioGuard AI feel like a real educational space learning tool, not just a quick API demo. Next, I’m going to keep testing the live demo, improve screenshots, clean up the final GitHub presentation, and prepare the project for shipping once identity verification is complete.
I spent about 10 hours working on HelioGuard AI, focusing on the premium arcade-style frontend, the Launch App dashboard flow, NASA public data presentation, and student-friendly explanations. I improved how the project explains the HelioGuard Index, asteroid risk scores, space weather summaries, and ORBIT-01 mission briefings. I also worked on the README, research PDF links, GitHub cleanup, deployment preparation, and overall project presentation so reviewers can understand the project more easily. This session helped HelioGuard AI feel more like a complete educational space learning tool instead of just a simple API dashboard. Next, I’m going to keep testing the live demo, polish screenshots, improve dashboard details, and prepare the project for shipping after identity verification.
Today I spent around 2 hours and 13 minutes doing the final testing and polish for HelioGuard AI before shipping.I tested the live NASA data again, fixed and checked the API connection, and confirmed that the asteroid and space weather sections are loading correctly. I also tested the landing page, Launch App flow, detailed dashboard, risk scores, asteroid cards, ORBIT-01 mission briefing, animations, and mobile responsive layout.I cleaned up the final UI, checked the GitHub repository, README, research PDF, live demo links, and educational disclaimer. HelioGuard AI now feels like a complete student space learning experience instead of only a simple API dashboard.The project uses NASA public data, mathematical risk scoring, and AI-style mission briefings to help students understand asteroid and space weather information in a fun arcade-inspired interface.This is my final devlog before shipping. Next, I am submitting HelioGuard AI for review and continuing to improve it based on feedback.
Ships:
After around 24 hours of work across 8 devlogs, I made HelioGuard AI — an educational space risk intelligence dashboard that turns NASA public asteroid and space weather data into understandable risk scores, object reports, and student-friendly mission briefings. I built the project because NASA open data is very powerful, but the raw JSON can be difficult for students and non-experts to understand. HelioGuard fetches near-Earth object data from NASA NeoWs and space weather events from NASA DONKI, cleans the data, calculates risk scores, and presents everything through a responsive arcade-inspired interface. The risk system is transparent instead of being a black box. Each asteroid is scored using its estimated diameter, velocity, miss distance, and NASA hazardous classification: Asteroid Risk = 100 × clamp( 0.30 × diameter score + 0.20 × velocity score + 0.35 × closeness score + 0.15 × hazardous flag ) The final HelioGuard Index combines asteroid and space weather conditions: HelioGuard Index = 0.45 × Asteroid Risk + 0.55 × Space Weather Risk The most challenging part was combining different NASA APIs and turning very different scientific values into one understandable system. I also had to handle API failures safely, create loading and fallback states, design a rule-based ORBIT-01 briefing engine, and make the full landing page and detailed dashboard work on both desktop and mobile. I am most proud that this became more than a simple API wrapper. The project includes a complete visual experience, a documented mathematical model, asteroid reports, space weather summaries, educational explanations, transparent limitations, and a full research proposal. Research PDF: https://github.com/BeBecpp/helioguard-ai/blob/main/docs/HelioGuard_AI_Research_Proposal.pdf Research notes: https://github.com/BeBecpp/helioguard-ai/blob/main/docs/RESEARCH.md When trying the project, click Launch App, explore the top asteroid reports, open the risk explanation, and read the ORBIT-01 mission briefing. HelioGuard AI uses NASA public data, but its scores are an educational mathematical model. It is not an official NASA or NOAA product and must not be used as an emergency warning system....
|
1792878612.978165
|
1793742612.978165
|
|
53776
|
Air-Top Ruins - A 2D platformer made in Pygame by Air-Top Ruins - A 2D platformer made in Pygame by @sandaruj | Stardance...
|
sandaruj
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T05:52:11Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 2D platformer with double jumping and dashing in Python via pygame. This was for an assessment which I got an A- for.", "repo": "https://github.com/sandyysandy/AirTop-Ruins", "demo": "https://drive.google.com/file/d/19TD_w0BnyASPYw3SNcpKnWaQ7ACQo0IS/view?usp=sharing"}]...
|
[{"post_id": 53791, "ts": "202 [{"post_id": 53791, "ts": "2026-08-24T14:24:28Z", "hours": 15.9775, "text": "I added a new grapple hook system to the game so that when players finish the game fully, they unlock the grapple hook and 2 new levels (replacing levels 0 and 1) that make use of it, when you have the grapple enabled, your jumps are limited to 1 and dashes get disabled"}]...
|
Title: Air-Top Ruins - A 2D platformer made in Pyg Title: Air-Top Ruins - A 2D platformer made in Pygame by @sandaruj | Stardance
Devlogs:
I added a new grapple hook system to the game so that when players finish the game fully, they unlock the grapple hook and 2 new levels (replacing levels 0 and 1) that make use of it, when you have the grapple enabled, your jumps are limited to 1 and dashes get disabled
Ships:
I made a 2D platformer with double jumping and dashing in Python via pygame. This was for an assessment which I got an A- for....
|
1792878612.1594412
|
1793742612.1594412
|
|
23464
|
Amalgam by @martin_chen_au | Stardance
|
martin_chen_au
|
2
|
7.0
|
112
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T05:03:07Z", "hours": 2.0, "multiplier": 14.92, "payout": 26, "blessing": "neutral", "text": "I continued with this tool, fixing bugs, increasing compatibility for various platforms and python versions, and fixing issues like underdeveloped flags.", "repo": "https://github.com/BitPeppr/Amalgam", "demo": "https://pypi.org/project/amalgam-panel/0.1.2/"}, {"ship_num": 2, "ts": "2026-06-22T02:42:15Z", "hours": 5.0, "multiplier": 16.14, "payout": 86, "blessing": "neutral", "text": "I’m quite happy with this project. It wasn’t the longest thing ever, and for a few hours, I think I’ve solved lots of problems: Cluttered multi-terminal juggling of windows Performance degradation of multiple background agents Manual copy-pasting between models I used the tool to check itself, and it worked great! Hope you like it. Maybe in the future, I’ll extend it to accept more apis and perhaps specific models, or even multi-api queries, but for now it more than achieves my goals.", "repo": "https://github.com/BitPeppr/Amalgam", "demo": "https://pypi.org/project/amalgam-panel/0.1.2/"}]...
|
[{"post_id": 51989, "ts": "202 [{"post_id": 51989, "ts": "2026-08-22T00:16:31Z", "hours": 0.6233, "text": "More errors; my shipwright ran the project from system home (something I hadn’t anticipated; I was expecting it to be a repo-level tool), and so the tool took ages gobbling up his configs and binaries, much of which it couldn’t read. So now I’ve made it so context is not default on; one must pass –context flag for it to activate (otherwise we’ll have too many llms getting gigabytes of random stuff!). Hope this helps."}, {"post_id": 48608, "ts": "2026-08-17T02:19:02Z", "hours": 0.6147, "text": "The ship came back with an error — I don’t have slack notifications and I found out weeks late! — and I scrambled to fix it. Turns out there was a subtle f-string syntax nuance that python flags as an error in pre-3.12 versions, but is accepted in post-3.12 versions, and so my 3.14 venv accepted it, while maybe the shipwright’s didn’t. I fixed the formatting, but pushed min version up to 3.12 just to be safe (I feel like 3.12 is a very stable version, shouldn’t be too aggressive a version). And then when I was testing I found out that multi-model flag inputs didn’t work for some reason! So I fixed that, which was surprisingly easy. Then a few checks, updates, and pushes later, and I was done!"}, {"post_id": 14088, "ts": "2026-06-23T02:22:45Z", "hours": 0.4811, "text": "You can now use endpoints apart from opencode zen and custom models, defined with cli flags! You can now get a result back in under 5 seconds with diffusion gemma on nvidia nim!"}, {"post_id": 13485, "ts": "2026-06-22T02:38:12Z", "hours": 0.7483, "text": "I uploaded it to pypi! Everytime I try to upload to pypi, I always forget the format (src/…) and the commands with twine and build, but I’m getting there. I keep making minor errors (e.g. local imports can be absolute, but packaged version must use relative), and so I’m already up to 0.1.2 (two more updates to get it to a working state). You can not install with pip install amalgam-panel! (Amalgam was taken already by a wrapper :<)"}, {"post_id": 13451, "ts": "2026-06-22T01:03:25Z", "hours": 0.6233, "text": "Added conversation / follow-up questions! The cli saves past prompts and responses, attaching to new messages as context, and allows for a more chat-interface style interaction. I ran into lots of trouble with the ordering of messages and context structuring, but in the end it seems to work fine. Hope it’s a good change!"}, {"post_id": 13419, "ts": "2026-06-21T23:38:52Z", "hours": 0.8128, "text": "Added a context summarisation flag! You can now pass in –summarise-context for it to query free llms and summarise large repositories (any text-based files), saving tokens before the panel starts its work. Hopefully helpful for larger, unfeasibly large codebases, though rather dependent on the context-summarisation model (currently big-pickle, seemingly the most reliably-always-free model with respectable and reliable performance, with little errors or json issues)."}, {"post_id": 13053, "ts": "2026-06-21T10:43:20Z", "hours": 3.1233, "text": "While I was finishing up my Trisolaris project, along with polishing calculations for a fluid simulation project, I found myself asking multiple llms to check for errors or potential issues. This resulted in up to seven opencode instances in separate windows, and after getting their responses, I would then pass them to a reliable llm I trusted — often mimo v2.5 — to merge into a single cross-referenced response. While this was great, helping me to catch potential edge cases or give me some general advice on potential improvements, it was very messy and time-costly, and for my rather humble laptop, performance-draining. And so I thought I would use the opencode zen api and make a python tool to automate the process! Amalgam is a python cli that accepts a variety of flags (to customise every aspect of it, from temperatures, number of responses, to timeout, and other parameters) and a prompt, presenting prompt and context to a ‘panel’ of llms (quite literally every free model available on the zen api, auto-detected with key validation), collecting numerous responses to be merged into a single unified, comprehensive response. This maintains the advantage of having multiple llms with different strengths, while keeping it overall time-efficient by automating many of the cross copy-pasting required normally, along with presenting all context (though this may be token-costly for larger repos, this could be improved in the future). I’m quite happy with what I’ve got. It’s been a short project so far, but for my purposes, it’s practically done. I will work on it, potentially adding follow-up question features and context summarisation for larger repos, but it largely fulfills its purpose! The below two screenshots show the before and after, from multi-window clusters to a singular, clean and unified report. If anyone has suggestions or feature ideas, I would love to implement them! I feel like this is a perhaps common idea, but I haven’t find a solution for my needs (completely free auto-discovered model panel, with customisability yet simplicity); hope you like it!"}]...
|
Title: Amalgam by @martin_chen_au | Stardance
Dev Title: Amalgam by @martin_chen_au | Stardance
Devlogs:
While I was finishing up my Trisolaris project, along with polishing calculations for a fluid simulation project, I found myself asking multiple llms to check for errors or potential issues. This resulted in up to seven opencode instances in separate windows, and after getting their responses, I would then pass them to a reliable llm I trusted — often mimo v2.5 — to merge into a single cross-referenced response. While this was great, helping me to catch potential edge cases or give me some general advice on potential improvements, it was very messy and time-costly, and for my rather humble laptop, performance-draining. And so I thought I would use the opencode zen api and make a python tool to automate the process! Amalgam is a python cli that accepts a variety of flags (to customise every aspect of it, from temperatures, number of responses, to timeout, and other parameters) and a prompt, presenting prompt and context to a ‘panel’ of llms (quite literally every free model available on the zen api, auto-detected with key validation), collecting numerous responses to be merged into a single unified, comprehensive response. This maintains the advantage of having multiple llms with different strengths, while keeping it overall time-efficient by automating many of the cross copy-pasting required normally, along with presenting all context (though this may be token-costly for larger repos, this could be improved in the future). I’m quite happy with what I’ve got. It’s been a short project so far, but for my purposes, it’s practically done. I will work on it, potentially adding follow-up question features and context summarisation for larger repos, but it largely fulfills its purpose! The below two screenshots show the before and after, from multi-window clusters to a singular, clean and unified report. If anyone has suggestions or feature ideas, I would love to implement them! I feel like this is a perhaps common idea, but I haven’t find a solution for my needs (completely free auto-discovered model panel, with customisability yet simplicity); hope you like it!
Added a context summarisation flag! You can now pass in –summarise-context for it to query free llms and summarise large repositories (any text-based files), saving tokens before the panel starts its work. Hopefully helpful for larger, unfeasibly large codebases, though rather dependent on the context-summarisation model (currently big-pickle, seemingly the most reliably-always-free model with respectable and reliable performance, with little errors or json issues).
Added conversation / follow-up questions! The cli saves past prompts and responses, attaching to new messages as context, and allows for a more chat-interface style interaction. I ran into lots of trouble with the ordering of messages and context structuring, but in the end it seems to work fine. Hope it’s a good change!
I uploaded it to pypi! Everytime I try to upload to pypi, I always forget the format (src/…) and the commands with twine and build, but I’m getting there. I keep making minor errors (e.g. local imports can be absolute, but packaged version must use relative), and so I’m already up to 0.1.2 (two more updates to get it to a working state). You can not install with pip install amalgam-panel! (Amalgam was taken already by a wrapper :<)
You can now use endpoints apart from opencode zen and custom models, defined with cli flags! You can now get a result back in under 5 seconds with diffusion gemma on nvidia nim!
The ship came back with an error — I don’t have slack notifications and I found out weeks late! — and I scrambled to fix it. Turns out there was a subtle f-string syntax nuance that python flags as an error in pre-3.12 versions, but is accepted in post-3.12 versions, and so my 3.14 venv accepted it, while maybe the shipwright’s didn’t. I fixed the formatting, but pushed min version up to 3.12 just to be safe (I feel like 3.12 is a very stable version, shouldn’t be too aggressive a version). And then when I was testing I found out that multi-model flag inputs didn’t work for some reason! So I fixed that, which was surprisingly easy. Then a few checks, updates, and pushes later, and I was done!
More errors; my shipwright ran the project from system home (something I hadn’t anticipated; I was expecting it to be a repo-level tool), and so the tool took ages gobbling up his configs and binaries, much of which it couldn’t read. So now I’ve made it so context is not default on; one must pass –context flag for it to activate (otherwise we’ll have too many llms getting gigabytes of random stuff!). Hope this helps.
Ships:
I’m quite happy with this project. It wasn’t the longest thing ever, and for a few hours, I think I’ve solved lots of problems: Cluttered multi-terminal juggling of windows Performance degradation of multiple background agents Manual copy-pasting between models I used the tool to check itself, and it worked great! Hope you like it. Maybe in the future, I’ll extend it to accept more apis and perhaps specific models, or even multi-api queries, but for now it more than achieves my goals.
I continued with this tool, fixing bugs, increasing compatibility for various platforms and python versions, and fixing issues like underdeveloped flags....
|
1792878611.3367767
|
1793742611.3367767
|
|
25467
|
retroOS by @Ryanmoney | Stardance
|
Ryanmoney
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T22:20:32Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a WebOS inspired by windows 95. It is called retroOS and contains 3 apps. I build a paint app, a weather app, and a custom terminal. Hope you like it!", "repo": "https://github.com/ryanmoney67/retroOS", "demo": "https://ryanmoney67.github.io/retroOS/"}]...
|
[{"post_id": 15943, "ts": "202 [{"post_id": 15943, "ts": "2026-06-25T22:04:32Z", "hours": 0.3172, "text": "added a weather app and terminal ready to submit"}, {"post_id": 15356, "ts": "2026-06-24T23:29:45Z", "hours": 0.6831, "text": "made a pixel art app in my os. Full thing coming soon be sure to tappp innnn"}, {"post_id": 15338, "ts": "2026-06-24T22:24:07Z", "hours": 0.4669, "text": "working rn on my os hope ppl like it the little shade is a hint"}]...
|
Title: retroOS by @Ryanmoney | Stardance
Devlogs: Title: retroOS by @Ryanmoney | Stardance
Devlogs:
working rn on my os hope ppl like it the little shade is a hint
made a pixel art app in my os. Full thing coming soon be sure to tappp innnn
added a weather app and terminal ready to submit
Ships:
I made a WebOS inspired by windows 95. It is called retroOS and contains 3 apps. I build a paint app, a weather app, and a custom terminal. Hope you like it!...
|
1792878610.518924
|
1793742610.518924
|
|
37496
|
Playground OS by @Mathias_S | Stardance
|
Mathias_S
|
1
|
33.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T19:21:59Z", "hours": 33.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Shipped Playground OS! It’s now live on Vercel with a working desktop, draggable windows, File Explorer, Notes, Terminal, Settings, themes, wallpapers, and persistent local storage. There are still more features and fixes planned, but the public version is now ready to try", "repo": "https://github.com/Mathias-Simonsen/Playground-OS", "demo": "https://playground-os-mu.vercel.app/"}]...
|
[{"post_id": 34583, "ts": "202 [{"post_id": 34583, "ts": "2026-07-25T13:06:58Z", "hours": 3.6303, "text": "Fixed an issue in the File Explorer that prevented users from navigating to different locations or opening folders.I also improved the Notes app with several new features: users can now import notes from .json or .txt files, undo and redo changes, save notes directly in the File Explorer, pin important notes, search through notes, view version history, and have changes saved automatically in real time.I also added functionality to the sound button, allowing users to adjust the volume percentage, although no sounds are currently available. Notifications have been added as well."}, {"post_id": 34398, "ts": "2026-07-25T02:35:34Z", "hours": 3.7414, "text": "Login screen done + pfp and a somewhat working file explorer, will fix next update and will add a clock app + calender app"}, {"post_id": 33816, "ts": "2026-07-24T01:48:44Z", "hours": 1.2144, "text": "Mini devlog: I added the ability to change your username and other account details. The change profile picture button is currently just a placeholder, and profile pictures only display the first letter of your username. I’ll add proper profile picture support soon + a lock screen!"}, {"post_id": 33786, "ts": "2026-07-23T23:58:54Z", "hours": 2.7703, "text": "Added Settings app, added Dark mode and Graphite mode, allowed changing of the theme throug the settings app, added 2 backgrounds, resizeable windows, scaling and fixed optimised it a little Next update will hopefully feature a: Login screen + user auth system Working trashcan File explorer feature allowing the dragging apps from file explorer to desktop + them + movable apps in the desktop"}, {"post_id": 33549, "ts": "2026-07-23T16:14:19Z", "hours": 1.8833, "text": "Terminal has been added, time to focus on dark mode"}, {"post_id": 33444, "ts": "2026-07-23T12:25:39Z", "hours": 19.7653, "text": "Finally!!!!!!!!!!!!, after debugging a bunch of errors and creating the UI, I now have a somewhat working version! It still has quite a few bugs, and the terminal is currently only a placeholder, but the project is finally starting to look and feel like a real operating system. Next, I’m planning to add a fully working terminal, a file explorer, a settings app, a system information app, draggable apps, resizable windows, icon scaling ( it looks small on my current monitor ) and a functional clock. I also want to improve the overall performance, add animations and polish them, fix the remaining UI issues. There is still a lot of work left, but I’m really happy with how it looks so far and excited to continue developing it. If you have any ideas, feature suggestions, or feedback, feel free to let me know! :)"}]...
|
Title: Playground OS by @Mathias_S | Stardance
De Title: Playground OS by @Mathias_S | Stardance
Devlogs:
Finally!!!!!!!!!!!!, after debugging a bunch of errors and creating the UI, I now have a somewhat working version! It still has quite a few bugs, and the terminal is currently only a placeholder, but the project is finally starting to look and feel like a real operating system. Next, I’m planning to add a fully working terminal, a file explorer, a settings app, a system information app, draggable apps, resizable windows, icon scaling ( it looks small on my current monitor ) and a functional clock. I also want to improve the overall performance, add animations and polish them, fix the remaining UI issues. There is still a lot of work left, but I’m really happy with how it looks so far and excited to continue developing it. If you have any ideas, feature suggestions, or feedback, feel free to let me know! :)
Terminal has been added, time to focus on dark mode
Added Settings app, added Dark mode and Graphite mode, allowed changing of the theme throug the settings app, added 2 backgrounds, resizeable windows, scaling and fixed optimised it a little Next update will hopefully feature a: Login screen + user auth system Working trashcan File explorer feature allowing the dragging apps from file explorer to desktop + them + movable apps in the desktop
Mini devlog: I added the ability to change your username and other account details. The change profile picture button is currently just a placeholder, and profile pictures only display the first letter of your username. I’ll add proper profile picture support soon + a lock screen!
Login screen done + pfp and a somewhat working file explorer, will fix next update and will add a clock app + calender app
Fixed an issue in the File Explorer that prevented users from navigating to different locations or opening folders.I also improved the Notes app with several new features: users can now import notes from .json or .txt files, undo and redo changes, save notes directly in the File Explorer, pin important notes, search through notes, view version history, and have changes saved automatically in real time.I also added functionality to the sound button, allowing users to adjust the volume percentage, although no sounds are currently available. Notifications have been added as well.
Ships:
Shipped Playground OS! It’s now live on Vercel with a working desktop, draggable windows, File Explorer, Notes, Terminal, Settings, themes, wallpapers, and persistent local storage. There are still more features and fixes planned, but the public version is now ready to try...
|
1792878609.6716976
|
1793742609.6716976
|
|
35489
|
HackHive by @satvikhardat | Stardance
|
satvikhardat
|
1
|
9.33
|
87
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-15T09:28:34Z", "hours": 5.0, "multiplier": 14.51, "payout": 87, "blessing": "neutral", "text": "Our Clubsite! Made with react and vitejs, has a ton of cool animations, hope you like it, looking forward to all the feedback everyone has I know the readme isnt much to go off of but ill update it before this project gets reviewed probably", "repo": "https://github.com/random-unknown-username/HackHive", "demo": "https://hackhive.tech/"}]...
|
[{"post_id": 31180, "ts": "202 [{"post_id": 31180, "ts": "2026-07-19T11:47:41Z", "hours": 4.3336, "text": "the website is more complete now"}, {"post_id": 28798, "ts": "2026-07-15T09:25:58Z", "hours": 4.9794, "text": "Devlog this was originally supposed to be shipped to clubsite ysws but that is unfortunately no longer active, so I am just adding it here A few cool things in the website- Playable games that were made by members (the raycaster demo was made by me for hackclub sprig!!!) this site would be under constant change for the next few days, we are finalizing a design with out school administration All animations were coded by me :D The logo and all art and stuff was design by other co-leaders from the club! I figured I’ll just add the time i spent on stardance because the older clubsite ysws is inactive now"}]...
|
Title: HackHive by @satvikhardat | Stardance
Devl Title: HackHive by @satvikhardat | Stardance
Devlogs:
Devlog this was originally supposed to be shipped to clubsite ysws but that is unfortunately no longer active, so I am just adding it here A few cool things in the website- Playable games that were made by members (the raycaster demo was made by me for hackclub sprig!!!) this site would be under constant change for the next few days, we are finalizing a design with out school administration All animations were coded by me :D The logo and all art and stuff was design by other co-leaders from the club! I figured I’ll just add the time i spent on stardance because the older clubsite ysws is inactive now
the website is more complete now
Ships:
Our Clubsite! Made with react and vitejs, has a ton of cool animations, hope you like it, looking forward to all the feedback everyone has I know the readme isnt much to go off of but ill update it before this project gets reviewed probably...
|
1792878608.8173428
|
1793742608.8173428
|
|
54307
|
Slack bot anims by @Freaked | Stardance
|
Freaked
|
2
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T12:38:36Z", "hours": 1.0, "multiplier": 1.29, "payout": 1, "blessing": "neutral", "text": "i made 24x7 slack bot which was hard because it was my first time making but i am glad its now working", "repo": "https://github.com/15freakers-coder/bot-slack-anims", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}, {"ship_num": 2, "ts": "2026-08-26T09:21:28Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made slack bot that can tell time roll dice and flip coin and tell latency and other function it was a awesome project i learned many things like presenting and how many things work it was a great experience and i faced a lot of error and bugs i used ai to solve it but at last everything is working fine i am really proud that i did it", "repo": "https://github.com/15freakers-coder/bot-slack-anims", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 55211, "ts": "202 [{"post_id": 55211, "ts": "2026-08-26T19:22:06Z", "hours": 0.7331, "text": "finally fixed the bugs and is in review feeling good ! had a nice experience in this project learned a lot…"}, {"post_id": 54747, "ts": "2026-08-25T20:46:17Z", "hours": 1.0258, "text": "i was working on this slack bot to tell me time, flip coin, roll the dice and echo"}]...
|
Title: Slack bot anims by @Freaked | Stardance
De Title: Slack bot anims by @Freaked | Stardance
Devlogs:
i was working on this slack bot to tell me time, flip coin, roll the dice and echo
finally fixed the bugs and is in review feeling good ! had a nice experience in this project learned a lot…
Ships:
i made slack bot that can tell time roll dice and flip coin and tell latency and other function it was a awesome project i learned many things like presenting and how many things work it was a great experience and i faced a lot of error and bugs i used ai to solve it but at last everything is working fine i am really proud that i did it
i made 24x7 slack bot which was hard because it was my first time making but i am glad its now working...
|
1792878608.0200107
|
1793742608.0200107
|
|
52767
|
Aviation Trivia by @nurofenracealasigripa | Starda Aviation Trivia by @nurofenracealasigripa | Stardance...
|
nurofenracealasigripa
|
1
|
16.0
|
250
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:01:03Z", "hours": 16.0, "multiplier": 15.86, "payout": 250, "blessing": "neutral", "text": "Aviation trivia is a cozy quiz game that has questions about aviation. I was made ebtierly in vs code with c++ and SFML. Features: -A simple user interface that can be understood by everyone -Chill music to help you relax -The game keeps track of games played, no of right and wrong answers and rate of right answers -You can chose if you want the intro or not -How to play guide -40+ questions -Chose how many questions do you want to have To have a succesfull instalation please refer to the github readme All art is made by me in piskel For feedback acces this link: https://docs.google.com/forms/d/e/1FAIpQLSd_PYRWfn150R5Bi3gj90nlJ-TgKZuzrlvwGKAd-GypAZUxvg/viewform?usp=header Here is a video of some gameplay: https://youtu.be/YEtsLT6En9I I hope you enjoy the game Note: this is only v1.0.0 so there will be future updates. If you have any ideas for something for the game please leave the in the feedback form.", "repo": "https://github.com/stoicaandrei-blip/Aviation-Trivia", "demo": "https://github.com/stoicaandrei-blip/Aviation-Trivia/releases/tag/V1.0.0"}]...
|
[{"post_id": 63530, "ts": "202 [{"post_id": 63530, "ts": "2026-09-07T13:19:48Z", "hours": 0.6086, "text": "Devlog 15: I finished the first version of the game. I added some chill music and a reset button. I will prepare the game for release now :]"}, {"post_id": 63507, "ts": "2026-09-07T12:25:22Z", "hours": 2.2594, "text": "Devlog 15: I added a feature that lets you pick how many questions you want: between 1 and 25. I also added the settings page which right now let’s you only toggle a button that makes the game skip the intro. I also dont’t think i will be able to finish the game and polish it before stardance ends. I don’t think i will do the advancements page or the SFX for the buttons. I will add them with some more questions but later. Right now i will add music, finish the Settings page, add a button to reset the stats."}, {"post_id": 61470, "ts": "2026-09-04T12:26:59Z", "hours": 1.1767, "text": "Devlog 14: I added all the commands that you can input in the terminal of the game. i wanted to use cin, but the game would freeze. I did some research and found out i needed to use multiple CPU threads. after i found out how to do that i just needed to add all commands to the game. Also, now when a file is missing the game also tells you the name of the file.Next i will probably add settings or some more questions :]"}, {"post_id": 60789, "ts": "2026-09-03T11:48:49Z", "hours": 1.0572, "text": "devlog 13: I finally finished the how to play menu. I wrote it thinking about the final game some some things that i wrote about are not yet implemented. it has 6 sections: buttons, playing, customizing, settings, achievments and commands. I dindn’t manage to add 50 questions but now we have 11 instead of 3. there was a minor bug where if you pressed an arrow to navigate the how to play section it would jump some of them. The fix was putting else if insted of just if. Next i will add a feature letting you pick how many questions you have in the quiz: between 1-25. And i will work on the terminal commands i want to add :]"}, {"post_id": 60376, "ts": "2026-09-02T17:49:15Z", "hours": 1.5639, "text": "Devlog 12: i worked a bit more on the more menu. i added a credits button that takes you to a menu where you can see where are all credits. there is also an how to play button that takes you to a menu where you can see an in dept guide about everything in the game. But due to the font spritesheet not having some things it sound kinda rudimentary. I wrote only the first section of the guide. next i will finish the guide and add 50 questions. I also made it so that every x button closes the game and there are now arrows to navigate the menus. :]"}, {"post_id": 59765, "ts": "2026-09-01T18:11:51Z", "hours": 1.1528, "text": "Devlog 11: i added a couple of things . First of all, now the x button on the right closes the game in whichever part of the game you are. i added an arrow in the left that returns to the last menu. Next i made it so that the variables for the stats page update correctly and are saved. I also started working on the more button that takes you to a menu in which you currently have 2 buttons - feedback and more games - which do exactly waht they sound like. next i will try to finish the more menu and work on reformating the score display + a reset stats button. :]"}, {"post_id": 59533, "ts": "2026-09-01T12:21:37Z", "hours": 0.6633, "text": "Devlog 10: I started working on the menus. first of all i removed the airplane from the quiz part of the game. The i added a stats menu that displays numebr of right and wrong answers, games played and the rate at which you make right choices. right now it is just a menu and it can read from a file with the stats. next i will need to make it so that the game updates the variables every time you play."}, {"post_id": 58923, "ts": "2026-08-31T14:20:51Z", "hours": 0.5006, "text": "Devlog 9: firstly there was a bug where if you pressed on the upper side of the play button the game would kinda glitch because you would also click on the bottom selection box of the quiz. i tried adding a timer but didn’t since i already knew i needed to move the question more to the middle so i just did that. Next i made it so that the background is the same as for the menu but i will probably change it evantually. Since the font is black and the background is dark, some things wouldn’s be so visible, so this is what i did: for the question i added a strip that runs across the screen and i like how it turned out and for the score i just moved it to the left where it is more visible. Next i will change the quiz’s background and i should really start working on the menu. i also need to think about other background for the other menus. Any idea is appreciated :]"}, {"post_id": 58880, "ts": "2026-08-31T13:36:54Z", "hours": 0.4594, "text": "Devlog 8: For this one i just rearanged the menu buttons from the middle to the down-left. I also spent quite some time painting the background image. Side note : something i don’t like about stardance is that for software projects it only counts the time spent coding. For this image i spent like an hour making it but only the 2 minutes spent adding it counted which drives me crazy. Whatever, next i will start working on the other menus :]"}, {"post_id": 56760, "ts": "2026-08-28T17:25:04Z", "hours": 1.0386, "text": "Devlog 7: I finished the quiz part of the game! Now the game shuffles the question order. After you give your answer the game waits 3 seconds and the procedes to the next question. First i didn’t shuffle the question order, but when i wanted to add that i forgot to clear a vector and to update a variable which led to some time spent debugging. I also made it so that the exit button becomes highlighted when you hover over it. next i will work on the art and the menus. :]"}, {"post_id": 56611, "ts": "2026-08-28T13:08:24Z", "hours": 0.9617, "text": "Devlog 6: I started working on the quiz game itself. I added 4 boxes where the answers will be. If you hover the mouse over them they become highlighted. When pressing on one of the, if the answer is correct, the box becomes green. If you press the wrong one it becomes red and the right one becomes green. There was a bug where after you already selected something you could select more boxes. Next, i will add more questions and a score counter."}, {"post_id": 55545, "ts": "2026-08-27T13:53:43Z", "hours": 0.7539, "text": "Devlog 5: I made a spritesheet for the custom font and it works. i also made the play button functional and it currently displays only the first question when you click on it. There is a problem tho: the answers never get reshuffled after each round. Also there was a problem with the font because each letter is 5x5 but M was 6x5. It took me a bit to realise. Next i will work in the quiz part !"}, {"post_id": 55502, "ts": "2026-08-27T12:03:36Z", "hours": 0.415, "text": "Before i start with the devlog, i have a problem : yestarday morning i saw that where it would normally say the time logged it said couldn’t load time. I checked hackatime and it had a problem with the server - whatever. The part that bugs me happend later when the servers came back up and i could make a devlog. I wrote it, posted it, but when i went to check it it didn’t exist. When i went back to the home page it said AGAIN that it couldn’t load time spent coding. I went to check hackatime and i saw that it logged time correctly. For the rest of the day i couldn’t make any devlog which made me lose my streak. i don’t know if this happened to anybody else, but it was annoying. Whatever, let’s start with what happened. Devlog 4: i have drawn some of the buttons neccesary and added a close one that closes the game. In my other games the exit button was rectangular, but for this one i chose to make it round since it takes less space and looks a bit better in my opinion. Next i will make a custom font spritesheet and make the quiz part of the game. :]"}, {"post_id": 55182, "ts": "2026-08-26T18:03:37Z", "hours": 0.99, "text": "Devlog 3: I started working on the intro, which is some text fading to black.I had an issue where the screen would go from white to black instantlly, but a minor tweak to the code fixed it. I also added the more button and drawn some other ones. Next, i will focus on macking the gam itself and then the menus. ;]"}, {"post_id": 53624, "ts": "2026-08-24T08:36:49Z", "hours": 0.7069, "text": "Devlog 2: First i transformed the file that handles question loading into a header file to keep things organized. Then i started adding graphics to the game but there was an issue: the screen was white when it needed to look like in the video - it turned out it was because of a function that was interfering with the screen. Now there is a temporary background and i added a button to see how it would look. Next i will add an intro and work on some art :] Also, the video shows the button changing when you hover the mouse over it"}, {"post_id": 53012, "ts": "2026-08-23T12:13:40Z", "hours": 1.4308, "text": "Devlog 1: I started working on a trivia game that has questions about aviation. It will have graphics, but right now i just finished the question adding system: Basically there is a txt file that is structured like this: total number of questions Question1|Correct answe|Wrong answer|wrong answer|wrong answer|number of points … The code reads the number of questions and then adds each thing to it’s own vector for storage. I made it so that the answers to the question would be shuffled each time. There was also a bug where the code wouldn’t read the whole question but only the first word- it turns out you have to use getline. Next i will start Working on some art for the game!"}]...
|
Title: Aviation Trivia by @nurofenracealasigripa | Title: Aviation Trivia by @nurofenracealasigripa | Stardance
Devlogs:
Devlog 1: I started working on a trivia game that has questions about aviation. It will have graphics, but right now i just finished the question adding system: Basically there is a txt file that is structured like this: total number of questions Question1|Correct answe|Wrong answer|wrong answer|wrong answer|number of points … The code reads the number of questions and then adds each thing to it’s own vector for storage. I made it so that the answers to the question would be shuffled each time. There was also a bug where the code wouldn’t read the whole question but only the first word- it turns out you have to use getline. Next i will start Working on some art for the game!
Devlog 2: First i transformed the file that handles question loading into a header file to keep things organized. Then i started adding graphics to the game but there was an issue: the screen was white when it needed to look like in the video - it turned out it was because of a function that was interfering with the screen. Now there is a temporary background and i added a button to see how it would look. Next i will add an intro and work on some art :] Also, the video shows the button changing when you hover the mouse over it
Devlog 3: I started working on the intro, which is some text fading to black.I had an issue where the screen would go from white to black instantlly, but a minor tweak to the code fixed it. I also added the more button and drawn some other ones. Next, i will focus on macking the gam itself and then the menus. ;]
Before i start with the devlog, i have a problem : yestarday morning i saw that where it would normally say the time logged it said couldn’t load time. I checked hackatime and it had a problem with the server - whatever. The part that bugs me happend later when the servers came back up and i could make a devlog. I wrote it, posted it, but when i went to check it it didn’t exist. When i went back to the home page it said AGAIN that it couldn’t load time spent coding. I went to check hackatime and i saw that it logged time correctly. For the rest of the day i couldn’t make any devlog which made me lose my streak. i don’t know if this happened to anybody else, but it was annoying. Whatever, let’s start with what happened. Devlog 4: i have drawn some of the buttons neccesary and added a close one that closes the game. In my other games the exit button was rectangular, but for this one i chose to make it round since it takes less space and looks a bit better in my opinion. Next i will make a custom font spritesheet and make the quiz part of the game. :]
Devlog 5: I made a spritesheet for the custom font and it works. i also made the play button functional and it currently displays only the first question when you click on it. There is a problem tho: the answers never get reshuffled after each round. Also there was a problem with the font because each letter is 5x5 but M was 6x5. It took me a bit to realise. Next i will work in the quiz part !
Devlog 6: I started working on the quiz game itself. I added 4 boxes where the answers will be. If you hover the mouse over them they become highlighted. When pressing on one of the, if the answer is correct, the box becomes green. If you press the wrong one it becomes red and the right one becomes green. There was a bug where after you already selected something you could select more boxes. Next, i will add more questions and a score counter.
Devlog 7: I finished the quiz part of the game! Now the game shuffles the question order. After you give your answer the game waits 3 seconds and the procedes to the next question. First i didn’t shuffle the question order, but when i wanted to add that i forgot to clear a vector and to update a variable which led to some time spent debugging. I also made it so that the exit button becomes highlighted when you hover over it. next i will work on the art and the menus. :]
Devlog 8: For this one i just rearanged the menu buttons from the middle to the down-left. I also spent quite some time painting the background image. Side note : something i don’t like about stardance is that for software projects it only counts the time spent coding. For this image i spent like an hour making it but only the 2 minutes spent adding it counted which drives me crazy. Whatever, next i will start working on the other menus :]
Devlog 9: firstly there was a bug where if you pressed on the upper side of the play button the game would kinda glitch because you would also click on the bottom selection box of the quiz. i tried adding a timer but didn’t since i already knew i needed to move the question more to the middle so i just did that. Next i made it so that the background is the same as for the menu but i will probably change it evantually. Since the font is black and the background is dark, some things wouldn’s be so visible, so this is what i did: for the question i added a strip that runs across the screen and i like how it turned out and for the score i just moved it to the left where it is more visible. Next i will change the quiz’s background and i should really start working on the menu. i also need to think about other background for the other menus. Any idea is appreciated :]
Devlog 10: I started working on the menus. first of all i removed the airplane from the quiz part of the game. The i added a stats menu that displays numebr of right and wrong answers, games played and the rate at which you make right choices. right now it is just a menu and it can read from a file with the stats. next i will need to make it so that the game updates the variables every time you play.
Devlog 11: i added a couple of things . First of all, now the x button on the right closes the game in whichever part of the game you are. i added an arrow in the left that returns to the last menu. Next i made it so that the variables for the stats page update correctly and are saved. I also started working on the more button that takes you to a menu in which you currently have 2 buttons - feedback and more games - which do exactly waht they sound like. next i will try to finish the more menu and work on reformating the score display + a reset stats button. :]
Devlog 12: i worked a bit more on the more menu. i added a credits button that takes you to a menu where you can see where are all credits. there is also an how to play button that takes you to a menu where you can see an in dept guide about everything in the game. But due to the font spritesheet not having some things it sound kinda rudimentary. I wrote only the first section of the guide. next i will finish the guide and add 50 questions. I also made it so that every x button closes the game and there are now arrows to navigate the menus. :]
devlog 13: I finally finished the how to play menu. I wrote it thinking about the final game some some things that i wrote about are not yet implemented. it has 6 sections: buttons, playing, customizing, settings, achievments and commands. I dindn’t manage to add 50 questions but now we have 11 instead of 3. there was a minor bug where if you pressed an arrow to navigate the how to play section it would jump some of them. The fix was putting else if insted of just if. Next i will add a feature letting you pick how many questions you have in the quiz: between 1-25. And i will work on the terminal commands i want to add :]
Devlog 14: I added all the commands that you can input in the terminal of the game. i wanted to use cin, but the game would freeze. I did some research and found out i needed to use multiple CPU threads. after i found out how to do that i just needed to add all commands to the game. Also, now when a file is missing the game also tells you the name of the file.Next i will probably add settings or some more questions :]
Devlog 15: I added a feature that lets you pick how many questions you want: between 1 and 25. I also added the settings page which right now let’s you only toggle a button that makes the game skip the intro. I also dont’t think i will be able to finish the game and polish it before stardance ends. I don’t think i will do the advancements page or the SFX for the buttons. I will add them with some more questions but later. Right now i will add music, finish the Settings page, add a button to reset the stats.
Devlog 15: I finished the first version of the game. I added some chill music and a reset button. I will prepare the game for release now :]
Ships:
Aviation trivia is a cozy quiz game that has questions about aviation. I was made ebtierly in vs code with c++ and SFML. Features: -A simple user interface that can be understood by everyone -Chill music to help you relax -The game keeps track of games played, no of right and wrong answers and rate of right answers -You can chose if you want the intro or not -How to play guide -40+ questions -Chose how many questions do you want to have To have a succesfull instalation please refer to the github readme All art is made by me in piskel For feedback acces this link: https://docs.google.com/forms/d/e/1FAIpQLSd_PYRWfn150R5Bi3gj90nlJ-TgKZuzrlvwGKAd-GypAZUxvg/viewform?usp=header Here is a video of some gameplay: https://youtu.be/YEtsLT6En9I I hope you enjoy the game Note: this is only v1.0.0 so there will be future updates. If you have any ideas for something for the game please leave the in the feedback form....
|
1792878607.1965184
|
1793742607.1965184
|
|
40110
|
omni-sync by @shivar07 | Stardance
|
shivar07
|
1
|
20.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-31T19:28:24Z", "hours": 20.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built Omni-Sync because I wanted a simple way to keep my daily work, meetings, and job applications in sync between my desktop and my phone. It’s a clean, monochrome React dashboard that talks in real-time to a Kotlin Android companion app using Firebase. Whenever I add a task or schedule a meeting on the web, a background service on my phone instantly triggers native alerts and deep links so I don’t miss anything when I step away. The trickiest part was getting the Android background sync running reliably without killing the battery, and spending the time to style the UI completely by hand with vanilla CSS so it feels clean and distraction-free. I’m really happy with how seamless it feels to pair a device and see the notifications pop up the second the dashboard updates.", "repo": "https://github.com/shivar07/omni-sync", "demo": "https://omni-sync.netlify.app/"}]...
|
[{"post_id": 38390, "ts": "202 [{"post_id": 38390, "ts": "2026-07-31T18:55:02Z", "hours": 1.0, "text": "📝 Devlog #5: The Final Chapter — A Shared Journey This is the final devlog for OmniSync, and it marks the end of an incredible coding journey. We sat down together, side-by-side, pairing up to shape this project into something truly premium and special. What started as a set of features and code files turned into a collaborative craft. We navigated the details together—polishing the styling, refining the light mode transitions, fixing form inputs, and ensuring the interface felt alive. We spent hours debugging, rebuilding, making sure every count was accurate, and standardizing the UI. OmniSync is finished, and we can built it together in future. Check out the finished repository at: https://github.com/shivar07/omni-sync.git"}, {"post_id": 36484, "ts": "2026-07-28T16:51:02Z", "hours": 10.0, "text": "📝 Devlog #4: Mobile Companion App & Realtime Push Alerts Developed and built a mobile Android APK using Kotlin and Compose Connected device securely using 6 digit pairing Code and user UID Setup background foreground polling service to check pending events Triggers instant phone notification shade alerts for upcoming deadlines Disconnecting from either phone or Web resets both in Realtime"}, {"post_id": 35300, "ts": "2026-07-26T16:47:00Z", "hours": 2.0, "text": "📝 Devlog #3: Daily Command Planner Section Now we have Calendar we have Meeting Hub Idea Vault and Application where you know the LinksAdded a Daily Planner section to scope all todos by Date so I can plan my morning agendaCreated beautiful custom Date Navigator panel to toggle between Yesterday Today and TomorrowIntegrated inline editing and neat priority and category Badges for every Task itemCreated smart actions to Import unfinished tasks from Yesterday and postpone pending Tasks to TomorrowEverything is synced live to Firebase Database scoped under the active User UID and compiles cleanlyFixed low Contrast select options dropdown coloring in Daily Planner page Form inputs"}, {"post_id": 35156, "ts": "2026-07-26T12:13:32Z", "hours": 0.0, "text": "📝 Devlog #2: Firebase Cloud Sync & Category Filtering Next Step was making sure all Data syncs everywhere across devices in RealtimeSet up Firebase Google Auth so anyone can Sign in securely with their Google AccountConnected Firebase Realtime Database RTDB to save all Events Tasks Applications and Ideas under user UIDCreated color coded Category badges like Workshops Meetings Urgent and Personal EventsAdded category Filtering controls above the Calendar so you can filter specific Event types instantlyNow whenever you add an Event on Web it updates live on your Cloud database without reloading"}, {"post_id": 35136, "ts": "2026-07-26T11:43:55Z", "hours": 5.0, "text": "📝 Devlog #1: Building Core Calendar & Event Scheduler Started working on OmniSync project Today to solve my daily Event tracking problemsCreated the initial Vite React application setup with dark Glassmorphic UI design tokensImplemented custom Calendar component showing monthly Grid views with Day selectionAdded event creation Modal where users can enter Event titles start and End timesStored Events in local State so clicking on any calendar Date shows scheduled Events for that DayEverything feels super smooth and Responsive for the first 2 hours of Coding"}]...
|
Title: omni-sync by @shivar07 | Stardance
Devlogs Title: omni-sync by @shivar07 | Stardance
Devlogs:
📝 Devlog #1: Building Core Calendar & Event Scheduler Started working on OmniSync project Today to solve my daily Event tracking problemsCreated the initial Vite React application setup with dark Glassmorphic UI design tokensImplemented custom Calendar component showing monthly Grid views with Day selectionAdded event creation Modal where users can enter Event titles start and End timesStored Events in local State so clicking on any calendar Date shows scheduled Events for that DayEverything feels super smooth and Responsive for the first 2 hours of Coding
📝 Devlog #2: Firebase Cloud Sync & Category Filtering Next Step was making sure all Data syncs everywhere across devices in RealtimeSet up Firebase Google Auth so anyone can Sign in securely with their Google AccountConnected Firebase Realtime Database RTDB to save all Events Tasks Applications and Ideas under user UIDCreated color coded Category badges like Workshops Meetings Urgent and Personal EventsAdded category Filtering controls above the Calendar so you can filter specific Event types instantlyNow whenever you add an Event on Web it updates live on your Cloud database without reloading
📝 Devlog #3: Daily Command Planner Section Now we have Calendar we have Meeting Hub Idea Vault and Application where you know the LinksAdded a Daily Planner section to scope all todos by Date so I can plan my morning agendaCreated beautiful custom Date Navigator panel to toggle between Yesterday Today and TomorrowIntegrated inline editing and neat priority and category Badges for every Task itemCreated smart actions to Import unfinished tasks from Yesterday and postpone pending Tasks to TomorrowEverything is synced live to Firebase Database scoped under the active User UID and compiles cleanlyFixed low Contrast select options dropdown coloring in Daily Planner page Form inputs
📝 Devlog #4: Mobile Companion App & Realtime Push Alerts Developed and built a mobile Android APK using Kotlin and Compose Connected device securely using 6 digit pairing Code and user UID Setup background foreground polling service to check pending events Triggers instant phone notification shade alerts for upcoming deadlines Disconnecting from either phone or Web resets both in Realtime
📝 Devlog #5: The Final Chapter — A Shared Journey This is the final devlog for OmniSync, and it marks the end of an incredible coding journey. We sat down together, side-by-side, pairing up to shape this project into something truly premium and special. What started as a set of features and code files turned into a collaborative craft. We navigated the details together—polishing the styling, refining the light mode transitions, fixing form inputs, and ensuring the interface felt alive. We spent hours debugging, rebuilding, making sure every count was accurate, and standardizing the UI. OmniSync is finished, and we can built it together in future. Check out the finished repository at: https://github.com/shivar07/omni-sync.git
Ships:
I built Omni-Sync because I wanted a simple way to keep my daily work, meetings, and job applications in sync between my desktop and my phone. It’s a clean, monochrome React dashboard that talks in real-time to a Kotlin Android companion app using Firebase. Whenever I add a task or schedule a meeting on the web, a background service on my phone instantly triggers native alerts and deep links so I don’t miss anything when I step away. The trickiest part was getting the Android background sync running reliably without killing the battery, and spending the time to style the UI completely by hand with vanilla CSS so it feels clean and distraction-free. I’m really happy with how seamless it feels to pair a device and see the notifications pop up the second the dashboard updates....
|
1792878606.3671834
|
1793742606.3671834
|
|
43732
|
My WebOS by @elvincheung0321 | Stardance
|
elvincheung0321
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T10:25:27Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Im proud that I learnt how to make draggable windows and also the window layers which i thought would be very complicated to make before", "repo": "https://github.com/elvincheung0321/WebOS", "demo": "https://elvincheung0321.github.io/WebOS/"}]...
|
[{"post_id": 41856, "ts": "202 [{"post_id": 41856, "ts": "2026-08-06T10:24:10Z", "hours": 0.2736, "text": "South Park app done!!"}, {"post_id": 41846, "ts": "2026-08-06T09:57:56Z", "hours": 4.8964, "text": "Notes app done"}, {"post_id": 40743, "ts": "2026-08-04T13:53:30Z", "hours": 1.9253, "text": "Simple layout and top bar done with a gif background"}]...
|
Title: My WebOS by @elvincheung0321 | Stardance
D Title: My WebOS by @elvincheung0321 | Stardance
Devlogs:
Simple layout and top bar done with a gif background
Notes app done
South Park app done!!
Ships:
Im proud that I learnt how to make draggable windows and also the window layers which i thought would be very complicated to make before...
|
1792878605.5422812
|
1793742605.5422812
|
|
43719
|
Slack Bot by @elvincheung0321 | Stardance
|
elvincheung0321
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T07:10:20Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Im glad I was able to work with javascript since I’ve always heard it was very powerful and is the main thing in web devlopment, learning how to directly work with apis through javascript instead of having a backend to use python to do so is quite a rewarding learning experience. I hope to keep learning javascript and polish my skills!", "repo": "https://github.com/elvincheung0321/slack-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BMU01QJLE"}]...
|
[{"post_id": 40584, "ts": "202 [{"post_id": 40584, "ts": "2026-08-04T07:07:15Z", "hours": 0.3647, "text": "Finished my first ever slack bot!"}]...
|
Title: Slack Bot by @elvincheung0321 | Stardance
Title: Slack Bot by @elvincheung0321 | Stardance
Devlogs:
Finished my first ever slack bot!
Ships:
Im glad I was able to work with javascript since I’ve always heard it was very powerful and is the main thing in web devlopment, learning how to directly work with apis through javascript instead of having a backend to use python to do so is quite a rewarding learning experience. I hope to keep learning javascript and polish my skills!...
|
1792878604.7041209
|
1793742604.7041209
|
|
42490
|
Wordle Lite by @COYG_KNGPLCJMS | Stardance
|
COYG_KNGPLCJMS
|
1
|
8.0
|
21
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-07T17:27:56Z", "hours": 8.0, "multiplier": 2.66, "payout": 21, "blessing": "neutral", "text": "I made a simple wordle clone using vanilla js. It is a simple game that works offline and without accounts. It is mininal and use little resources. You can run it in any html code editor.", "repo": "https://github.com/KNGPLCJMS/wordle-lite", "demo": "https://kngplcjms.github.io/wordle-lite/"}]...
|
[{"post_id": 42140, "ts": "202 [{"post_id": 42140, "ts": "2026-08-06T18:56:49Z", "hours": 1.7158, "text": "Wordle Devlog 4: Final devlog. I have added a keyboard that shows what letters are remaining after some debugging. I also fixed a visual bug where the boxes are drawn over the win screen."}, {"post_id": 40944, "ts": "2026-08-04T19:57:01Z", "hours": 1.0547, "text": "Wordle thing devlog 3: I mainly worked on finishing some bugs. Added duplicate letter handling Fixed win/lose screen Overhauled answer checking. I also added a wave flipping animation that sometimes work. With the core game done, there is only polishing remaining. I do plan on adding a little keyboard thing that shows up at the bottom and maybe changing the wordlist to prevent it from picking obscure words."}, {"post_id": 40428, "ts": "2026-08-03T22:48:20Z", "hours": 1.4003, "text": "Wordle thing devlog 2: The game is now playable. I implemented a simple word checker by comparing two arrays. The game still has alot of issues but it is now working. List of Issues to fix Fix the issue of letters showing up as yellow when they should be grey. Add animation. Prevent the user from typing when they won. Make a win and start screen."}, {"post_id": 40189, "ts": "2026-08-03T16:19:31Z", "hours": 3.6528, "text": "Wordle Lite DEVLOG 1: School is nearly starting so that means I need to port all my games to code.org which now supports vanilla js. I decided to try to remake wordle because I couldn’t find an open source version that works on code.org as it doesn’t support js frameworks. I found a list of all wordle words from nolanlad and pasted it into my code. So far you can type words and delete characters and it can check if its a valid word."}]...
|
Title: Wordle Lite by @COYG_KNGPLCJMS | Stardance
Title: Wordle Lite by @COYG_KNGPLCJMS | Stardance
Devlogs:
Wordle Lite DEVLOG 1: School is nearly starting so that means I need to port all my games to code.org which now supports vanilla js. I decided to try to remake wordle because I couldn’t find an open source version that works on code.org as it doesn’t support js frameworks. I found a list of all wordle words from nolanlad and pasted it into my code. So far you can type words and delete characters and it can check if its a valid word.
Wordle thing devlog 2: The game is now playable. I implemented a simple word checker by comparing two arrays. The game still has alot of issues but it is now working. List of Issues to fix Fix the issue of letters showing up as yellow when they should be grey. Add animation. Prevent the user from typing when they won. Make a win and start screen.
Wordle thing devlog 3: I mainly worked on finishing some bugs. Added duplicate letter handling Fixed win/lose screen Overhauled answer checking. I also added a wave flipping animation that sometimes work. With the core game done, there is only polishing remaining. I do plan on adding a little keyboard thing that shows up at the bottom and maybe changing the wordlist to prevent it from picking obscure words.
Wordle Devlog 4: Final devlog. I have added a keyboard that shows what letters are remaining after some debugging. I also fixed a visual bug where the boxes are drawn over the win screen.
Ships:
I made a simple wordle clone using vanilla js. It is a simple game that works offline and without accounts. It is mininal and use little resources. You can run it in any html code editor....
|
1792878603.8750744
|
1793742603.8750744
|
|
16885
|
Hackfetch by @xerneas | Stardance
|
|
2
|
124.4
|
1751
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-22T11:04:00Z", "hours": 63.0, "multiplier": 19.6, "payout": 1381, "blessing": "neutral", "text": "HACKFETCH V2.0 it’s been a few weeks since ship #1 and hackfetch is a completely different tool now. faster, smaller, quieter, actually correct, and now lives in places besides your terminal window. v2.0.0 is out. what changed: fits in your tmux status bar with one line of config. same story for lualine. hackfetch -status prints a compact one-liner meant to be shelled out to every minute. fits everywhere else too. now on the AUR (yay -S hackfetch-bin) alongside the existing brew tap, curl installer, powershell installer, and go install. seven install channels total. runs in ~20ms on repeat calls thanks to an on-disk cache. tmux polling every minute is basically free now. was ~700ms cold before. runs in ~0.7s cold thanks to a parallel API fetch. was ~1.7s before. shows a smooth truecolor gradient on any modern terminal. auto-detects $COLORTERM. falls back to 256-color on older ones. -doctor walks a colored checklist of your setup and tells you exactly what’s broken. green if fine, orange if not, non-zero exit if you wanna script it. new pizza logo because hack club runs on pizza. seven logos total. streak is finally correct after silently saying “1 day” for a month. /summaries is gone from hackatime so hackfetch now reconstructs streak from every coding session in your history via /heartbeats/spans. real streak: 9 days for me right now. 7-day sparkline baked into the fetch (with -v) and available as -status –sparkline for the tmux bar. default fetch got leaner. slack handle, machines count, and the sparkline moved behind -v so the normal fetch stays focused on hours + project + language. loading spinner on the api fetch so you know something is happening. and then the cache made it show up almost never. one install: Linux / Mac: curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Windows: irm https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.ps1 | iex Arch family: yay -S hackfetch-bin macOS / Linuxbrew: brew install xerneas3318/tap/hackfetch For more install methods check out the github page: https://github.com/xerneas3318/hackfetch teasing the next big thing: hackfetch -leaderboard is coming next, using the public leaderboard endpoints i found in hackatime’s routes file. compete with friends on daily and weekly hours right from your terminal. private friend groups on a hackclub nest box after that. if you try it, thanks. send me some feedback", "repo": "https://github.com/xerneas3318/hackfetch", "demo": "https://github.com/xerneas3318/hackfetch/releases"}, {"ship_num": 2, "ts": "2026-07-07T00:01:54Z", "hours": 27.0, "multiplier": 17.78, "payout": 370, "blessing": "neutral", "text": "Every fetch tool tells you your OS. Mine tells you your streak. hackfetch is a Hack Club themed terminal fetch tool. Inspired by neofetch (originally bash, now archived) and fastfetch (its C successor), written in pure Go. Instead of just showing your kernel and CPU, it pulls live stats from your Hackatime account: today’s hours, weekly total, current streak, top project, top language. Right in your terminal. Six Hack Club themed ASCII logos (including my GOAT orpheus). Fourteen color schemes (pride, trans, bi, pan included). Live watch mode that refreshes while you code. And as of today, you can export the whole thing as a PNG, JPG, or SVG card and post it anywhere. One line to install: Linux / Mac: curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Windows: irm https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.ps1 | iex Tell me how it was! Follow and like for updates.", "repo": "https://github.com/xerneas3318/hackfetch", "demo": "https://github.com/xerneas3318/hackfetch/releases"}]...
|
[{"post_id": 39919, "ts": "202 [{"post_id": 39919, "ts": "2026-08-03T07:26:53Z", "hours": 6.6894, "text": "Hackfetdch natively in your readme hackfetch -readme it spits out a markdown stats card ready to paste straight into your github profile README. pipe it into a file and commit: hackfetch -readme > stats.md this is the cool bit or drop it in your README.md between two html comments and set up a github action to run it on a schedule so it auto refreshes every day. your profile now has a live coding stats card next to your pinned repos with no cron server, no vercel deploy, no api key stashed in secrets. its literally just markdown. zero extra api calls too. the readme card reads from the same cached hackatime response the normal fetch uses so if you just ran hackfetch it takes ~20ms. the streak emoji is a lil detail i had fun with. 3+ days gets a 🔥 upgrade with brew upgrade hackfetch or yay -S hackfetch-bin (once aur maintenance wraps up) or curl the installer curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh"}, {"post_id": 39223, "ts": "2026-08-02T01:40:31Z", "hours": 7.6967, "text": "HACKFETCH BATTLES??? two features in one release. hackfetch already knows a scary amount about you (thanks hackatime) so why not turn that into more features. hackfetch vs @ someone head to head compare. give it a hackatime username and hackfetch fetches both your histories in parallel, buckets them into today / this week / all time / streak, and prints them side by side with a winner arrow on every row. accepts @name , name , or a full profile url like hackatime.hackclub.com/@name . also works positional: hackfetch vs @you . use it to settle arguments, motivate yourself, or realize your friend has coded 265 hours and you should probably close discord. hackfetch -records personal bests. computed entirely from data hackfetch already fetches (streak + sparkline already use it), so zero new api calls $ hackfetch -records ✦ personal records @you biggest day 12h 41m on 2026-07-18 longest streak 25 days ended 2026-07-01 longest session 43m on 2026-07-17 days coded 86 first day 2026-04-24 99 days ago lifetime 208h 29m the “longest streak” tracks your all time best not just your current one. and “first day” tells you how long ago you started so you can feel old. grab it brew upgrade hackfetch yay -S hackfetch-bin install curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Next devlog is gonna be a fun one, I have an idea cooking up"}, {"post_id": 38323, "ts": "2026-07-31T17:22:26Z", "hours": 9.4408, "text": "big thank you for everyone’s feedback! fresh out of the oven: hackfetch v2.1.1 (aka the reviewer bug fix pass) what got fixed: shell detection used to just read $SHELL which is your login shell. if you log in as bash but run fish, hackfetch was calling you a bash user. it now checks $FISH_VERSION / $ZSH_VERSION / $BASH_VERSION and falls back to asking the OS who your parent process actually is editor detection was two bugs in a trench coat. it wasnt stripping args so zeditor --wait showed up as “zeditor –wait” instead of “Zed”, and if you had no $EDITOR set it defaulted to nano even if you had literally never opened nano. now it strips flags, maps launcher names to human ones (zeditor -> Zed, code -> VS Code, cursor -> Cursor, hx -> Helix etc), and says “-” instead of nano if nothing is set. top project label was ambiguous. it was pulling weekly stats but the row just said “top project” so people thought it meant all time. now weekly rows read top proj 7d , top lang 7d , top ed 7d , top cat 7d . setup dialog was scaring people. it always printed “file exists but has no api_key” whenever it reached the setup flow, even if the api_key line was actually there but just failing to parse. loadConfig is now more forgiving (inline comments, quoted values, case insensitive keys) and setup tells you WHY its stuck instead of gaslighting you about your own config. also short circuits if you run hackfetch -setup when youre already set up. people said they wanted a gay flag color was already there under the name pride but that wasnt obvious. gay is now an alias so both work. grab it: brew upgrade hackfetch or yay -S hackfetch-bin or curl / powershell installer if you don’t have it yet curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh again thank you to everyone who took the time to actually run it and tell me what was broken!"}, {"post_id": 34562, "ts": "2026-07-25T12:00:09Z", "hours": 10.5769, "text": "hackfetch COLLAB?? so my last two devlogs teased two features. shipping both today. -leaderboard last devlog i said “compete with your friends on hackatime hours is coming soon.” i thought i was gonna have to build a whole nest server for it. turns out /api/v1/leaderboard/daily and /api/v1/leaderboard/weekly already exist and are public on hackatime. just a single call!! so hackfetch -leaderboard daily (or weekly) now shows the top 10: ✦ daily leaderboard Last 24 hours 🥇 1. soaphia14 11h 12m 🥈 2. AnastKara 10h 32m 🥉 3. RoSerMar 10h 6m 4. euledone 10h 5. TheShovel 10h 6. Dylhouse 9h 1m 7. Dexrn 8h 59m 8. HexFud 8h 31m 9. zeddash 8h 29m 10. Trtotomotoro 8h 26m every username is an OSC 8 clickable link to that person’s hackatime profile. modern terminals (iterm2, kitty, wezterm, alacritty, gnome-terminal) render it as an actual hyperlink you can click. terminals without OSC 8 just show the plain text so it doesnt look broken. if you’re on the board it highlights your row in orange and adds (you) next to your name. json addon the other thing. someone else competing in stardance messaged me the other day about integrating hackatime into their own project and needed help figuring out the api (YAY). helping them made me realize hackfetch is doing a bunch of work (auth, caching, streak reconstruction, per-day bucketing) that other tools would love to piggyback on. so now: $ hackfetch -json { \"version\": \"2\", \"fetched_at\": \"2026-07-25T17:00: 20.900829+05:30\", \"system\": { \"user\": \"xerneas\", \"host\": \"Macbook-Pro\", \"os\": \"macOS 26.5.2\", ... }, \"hackatime\": { \"slack\": \"@U0B8FHHRQPJ\", \"streak\": 12, \"today_seconds\": 15820, \"week_seconds\": 237501, \"top_project\": { \"name\": \"hackfetch\", \" \"top_language\": { \"name\": \"Go\", \"seconds\": 97418 }, \"week_chart\": [36967, 31651, 33841, 284 \"machines\": 3 } } week_chart is 7 numbers = daily seconds oldest to newest same as the sparkline. top_language skips the unknown/other buckets. everything lines up with what the normal fetch would show, just parseable. ship landed in v2.1.0. brew update && brew upgrade hackfetch or arch: yay -Syu hackfetch-bin then try: hackfetch -leaderboard weekly hackfetch -json | jq For a general install use: curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh"}, {"post_id": 32880, "ts": "2026-07-22T10:20:45Z", "hours": 8.6689, "text": "my streak was lying to me for a month went to add a simple 7-day sparkline. by the end of the night i had rewritten how hackfetch talks to hackatime and my streak field is finally accurate for the first time in weeks. the plan was get the status from the last 7 days. draw ▁▂▃▄▅▆▇█ bars except the endpoint i needed straight up 404s. /users/current/summaries doesnt exist on the current hackatime deployment. Which means every single time i ran hackfetch it was quietly making a 30-day range call that always failed, then falling back to a placeholder that said “if today has activity, streak = 1”. thats it. no matter how long ive actually been on a streak, the fetch would just show 1 day. 🤦 my streak has said 1 day for the last 2 weeks even though ive been coding literally every day. never noticed because 1 day looks kinda plausible (i added 1 day as a fallback so that it didn’t show an error a couple weeks ago and forgot ) the fix: went digging in hackatimes rails routes on github. turns out theres a whole /api/v1/ namespace i was never using. and one of the endpoints is /api/v1/users/:id/heartbeats/spans. one call, ~150kb of json, every coding session ive ever logged with start_time, end_time, duration. 2000+ spans. which is exactly what i need for both features. bucket the timestamps by local calendar day, count unique days for streak, sum durations per day for the sparkline. one request covers both. and while i was already in the api layer i noticed fetchUser was making a whole separate call for my slack handle, which is silly because that data is already in the weekly stats response we cache. so i piggybacked it. weve gone from 4 api calls per fetch to 3. the sparkline: 7-day chart ▄▄▇▅▄▅▃ 65h 28m oldest on the left, newest on the right. that tall bar in the middle is a big lock-in session from earlier in the week. the two shorter ones on the right are today (still coding) and yesterday (took a break). opt in for -status --sparkline if you want it in your tmux bar too: 2h 9m today · streak 9 · ▄▄▇▅▄▅▃ 65h 28m teasing a backend: I’m planning on building a whole leaderboard server on a free hack club nest box so people can compete on their hackatime hours. while i was poking around the routes file for the streak fix i noticed something. /api/v1/leaderboard/daily and /api/v1/leaderboard/weekly already exist. public. no auth needed. no server needed. no cron sync. hackatime literally already has it directly. so hackfetch -leaderboard is coming soon (private friend groups and personal competitions can come later) last devlog before my next ship after the ship the devlogs are going to be huge. stay tuned :P"}, {"post_id": 32268, "ts": "2026-07-21T10:28:54Z", "hours": 9.7706, "text": "caching or i owe hackclub money so heres what my day looked like: nvim was calling hackfetch -status on every redraw for my lualine. tmux was calling it every 60 seconds for the status bar. i had 3 tmux sessions open. and every time i actually opened a new terminal, hackfetch fired again on shell start. quick napkin math: nvim redraws are basically continuous when im typing, tmux was hitting the api 3x/minute across sessions, plus every terminal open = another fetch. we’re talking hundreds of calls to hackatime in a normal work session. from ONE user. me hackatime is a free hack club service and i was starting to feel bad lol. the fix: cache the response ~/.cache/hackfetch/last.json stores the last snapshot with a timestamp. every fetch checks that file first. if its fresh enough, skip the network entirely and just render from disk. TTL is different depending on the caller: hackfetch (one-shot): 30 seconds. long enough that a normal re-run inside a devlog attempt is instant, short enough that you dont get badly stale numbers. hackfetch -status: 60 seconds tmux polls roughly this often anyway so its basically free now. hackfetch -watch: ignores the cache, always fresh (thats the whole point of watch mode). opt out with -no-cache or HACKFETCH_CACHE_TTL=0 if you want. also HACKFETCH_CACHE_TTL=300 to be even more polite. So yea tmux is now basically free . but the real win writing this made me realize the cache does more than save milliseconds: every fetch was a full TLS handshake, wifi radio spin up, etc. now most fetches touch the disk once and nothing else. macbook fan appreciates it. offline. if your wifi drops mid coding session you keep working from the cache instead of showing a spinner forever. tmux bar just keeps saying what it said 40 seconds ago. battery again but for the hackatime server. hackfetch stops asking the api 5-10x more than they need to. multiply by everyone who has it in their tmux config and thats a real thing. atomic write via .tmp + rename so nothing ever reads a half-written file. cache is user-only (0600), because it does contain your top project name. bonus: -doctor while i was fixing the polite-to-the-api stuff i added -doctor , which walks a checklist and tells you whats broken: hackfetch doctor ✓ wakatime config exists /Users/xerneas/.wakatime.cfg ✓ api_key present loaded from config ✓ wakatime-cli found /Users/xerneas/.wakatime/wakatime-cli ✓ hackatime api reachable today: 28m ✓ terminal supports truecolor $COLORTERM=truecolor ✓ browser opener available /usr/bin/open green if its working, orange if its not, and non-zero exit if anything failed so you can script it. this was going to be a small self-diagnosis feature and it caught a real bug in the api client on the very first run i did while writing it lol (a string field where hackatime returns an int, so one of the fields was silently missing from every fetch since v1.0). fixed that too. ship both landed in v1.10.0. update as usual: brew update brew upgrade hackfetch or arch: yay -Syu hackfetch-bin then run hackfetch -doctor first, and if anything is broken it’ll tell you exactly what."}, {"post_id": 31673, "ts": "2026-07-20T08:45:06Z", "hours": 8.4247, "text": "hackfetch is now TMUX + NVIM COMPATIBLE new thing today: hackfetch will just show up wherever you already look. tmux status bar. nvim statusline. any tool that can shell out to a command and put text on a screen. The addition was simple: hackfetch -status prints one line: 2h 11m today · hackfetch (45m) · streak 12 just the numbers, for tools that already have their own rendering. hackfetch is a data source now, not just a display. in tmux two lines in ~/.tmux.conf : set -g status-interval 60 thats it. every tmux session, every window, refreshing once a minute. i dropped it in a pink Catppuccin capsule to the left of my existing date capsule and now i cant stop glancing at it lol. in neovim (lualine) same story, five lines of lua: sections = { lualine_z = { function () return vim . fn . system ( \"hackfetch -status\" ): gsub ( \" \\n \" , \"\" ) end } } } shells out on every redraw. works with airline too, or any custom statusline that lets you plug in a function. the fun part making hackfetch call safe for “something tmux runs every 60s forever” meant fixing three assumptions the normal fetch was making. this was way harder than it should have been ngl. setup cant block. if you dont have ~/.wakatime.cfg, normal hackfetch throws you into an interactive setup wizard (ask me how i know). in status mode that would freeze your tmux bar until you notice and Ctrl+C it. so status mode is fully non interactive now. no config → print nothing → tmux shows nothing → no deadlock 🙏 api errors cant leak into your bar. hackatime offline? old behavior would dump HTTP 500 timeout into your status area which looks INSANE. now status mode exits silently instead so your bar stays clean every call has to be cheap. hackfetch’s parallel fetch alr seconds, and the shared HTTP client keeps connections alive across the 4 API calls it fires, so tmux polling every 60s is easy on the API. a proper local file cache is on the list for later but honestly not needed for now (i’m lazy) ship landed in v1.9.0. if you already have it: brew update brew upgrade hackfetch or arch family: yay -Syu hackfetch-bin (for more installs for ur specific os check out the github pls) then drop the tmux or lualine snippet above into your dotfiles and its just there in every terminal. no plugin. no config. no daemon. just a flag."}, {"post_id": 31042, "ts": "2026-07-19T03:42:21Z", "hours": 8.7494, "text": "Hackfetch Gets Real Colors New thing today: hackfetch now emits 24-bit color when your terminal supports it, and spreads gradients smoothly across each row instead of cycling through the palette one character at a time. Before and after Old behavior: for a per-char scheme like rainbow , each character got exactly one palette entry, wrapping around every N characters. On a 30-column row with a 3-color palette, that looked like ten cycles of red, green, blue, red, green, blue… basically RGB static. New behavior: the palette spreads across the row once, and characters between palette entries get interpolated in-between colors. Same 3-color palette on a 30-column row now shows red, olive, green, teal, blue, magenta, back to red. Why the rebuild Terminals speak two color modes: 256-color ( \\x1b[38;5;Nm ): pick from a fixed palette of 256 preset RGB values. 24-bit / truecolor ( \\x1b[38;2;R;G;Bm ): specify any of ~16 million RGB values directly. The old code always used 256-color. That meant every character had to snap to one of the palette entries. No in-betweens possible. The new code checks $COLORTERM (set to truecolor by iTerm2, kitty, WezTerm, Alacritty, GNOME Terminal, and most modern terminals) and emits 24-bit escapes when supported. When it’s not, it falls back to the old cycled-palette behavior automatically. You can force it either way with HACKFETCH_TRUECOLOR=1 or =0 . Where you’ll notice it The built-in rainbow scheme has 23 palette stops, so the difference on that one is small. You just see a smoother color distribution and less banding. The change is dramatic on: custom themes with few stops (try 3 colors in your ~/.config/hackfetch/colors.json for the wildest gradient) the stardance palette (11 stops, per-char), where sparkles now flow through the spectrum in order instead of landing on random-looking colors any per-line scheme ( pride , trans , bi , pan , sunset , ocean , forest ) since they now emit exact RGB values instead of nearest-256-color Bonus: the SVG, PNG, and JPG export paths use the smooth interpolation too, so exported cards look better regardless of your terminal. Ship Landed in v1.8.0 . brew update brew upgrade hackfetch Or on the Arch family: yay -Syu hackfetch-bin Try hackfetch rocket forest and just watch."}, {"post_id": 30475, "ts": "2026-07-18T02:33:55Z", "hours": 10.1122, "text": "One More Way to Install (and Pizza) Two small things today: hackfetch is now on the AUR, and there’s a new logo. hackfetch on the AUR A reviewer on my last ship said they had a hard time getting hackfetch running on CachyOS (an Arch-based Linux distro). Instead of trying to reproduce their exact issue, I figured the cleanest fix was to publish hackfetch through the package manager Arch users already trust. So hackfetch is now up as hackfetch-bin on the AUR: aur.archlinux.org/packages/hackfetch-bin If you’re on Arch, CachyOS, Manjaro, EndeavourOS, Garuda, or any other Arch-based distro: yay -S hackfetch-bin Or with paru: paru -S hackfetch-bin The package pulls the pre-built binary straight from the GitHub release, so there’s no waiting on a source build. Works on both x86_64 and aarch64 . Add it up and hackfetch is now installable one command from: brew (macOS and Linuxbrew) apt / dnf / yum / pacman / zypper / apk (all through the curl installer) the AUR (Arch family) go install (any platform with Go) the PowerShell installer (Windows) This thing is getting kind of hard to NOT install. Pizza logo Hack Club runs on pizza. Now hackfetch does too. hackfetch pizza It’s a triangular slice viewed from the tip, HACK CLUB baked into the middle, and a rolled crust at the wide edge. The tricky part was the crust. I went through three drafts trying to make it curve at the bottom without breaking the connection to the slice’s diagonal sides (turns out you can’t cleanly connect diagonal characters to horizontal ones in a monospace grid). Landed on a two-row rolled crust where the diagonals keep going and the interior fills with a double horizontal band. Pairs surprisingly well with sunset: hackfetch pizza sunset Turns your terminal into a golden-hour pizza box. Ship Both landed in v1.7.3 . If you’re on Arch-family: yay -S hackfetch-bin Elsewhere: brew update brew upgrade hackfetch Now try hackfetch pizza and tell me if the crust looks right."}, {"post_id": 29524, "ts": "2026-07-16T14:40:13Z", "hours": 3.2108, "text": "Hackfetch Is Now Actually Fast Last log I added a loading spinner so you’d have something to look at while hackfetch was hitting the Hackatime API. This week I made it so you barely have time to see the spinner at all (undoing all my work lol) The problem hackfetch was making four separate calls to Hackatime for every fetch: /users/current/heartbeats/most_recent (for your slack handle) /users/current/summaries (for your streak) /users/current/statusbar/today (for today's coding time) /users/current/stats/last_7_days (for weekly stats) Doing them one after another meant the total wait was the sum of all four. Turns out that’s about 1.7 seconds on a normal connection. Not the end of the world, but very noticeable when you just want to open a terminal. The fix: run them all at the same time Now hackfetch fires all four calls in parallel using goroutines, waits for the slowest one to come back, and then builds the fetch from the responses. Total wait drops from “sum of all four” to “just the slowest one.” Before: ~1.7 seconds After: ~0.7 seconds 60% faster . Every single fetch. Every single time. One tiny bonus optimization While I was in there, I also switched to a single shared HTTP client with a bigger connection pool. The default Go setup caps you at 2 open connections per host, which is fine when you’re calling one endpoint at a time but hurts when you’re firing four at once. Now the parallel calls can share connections instead of stacking up on each other. Nothing about the fetch itself changed. Same info, same layout, same colors. Just faster. Ship Shipped in v1.7.2. If you have hackfetch installed: brew update brew upgrade hackfetch time hackfetch Watch the spinner barely have time to appear."}, {"post_id": 29398, "ts": "2026-07-16T10:18:00Z", "hours": 13.6781, "text": "Loading Spinner and Splitting Up main.go Thanks so much to everyone who took the time to comment, rate, and drop feedback on my latest ship. All of it was genuinely so helpful and I’ve been spending the last couple days fixing things up a bit. I totally forgot to devlog so I’m actually losing a couple hours since it’s been over ten hours since my last one :sob A loading spinner while Hackatime fetches One reviewer pointed out that hackfetch takes a couple of seconds when it’s pulling your Hackatime stats for the first time, and there was no signal that anything was happening. Now there is. ⠋ fetching Hackatime... The spinner cycles through 10 braille frames and the whole line clears out the instant the fetch finishes. Same fetch, way less awkward pause. Two small details that make it feel right: It only shows when stderr is actually a terminal, so it doesn’t spam control codes into your log files if you redirect output. It prints one frame immediately, so fast fetches still flash something instead of nothing. hackfetch runs it around the API calls automatically. No config, no opt-in. It’s just there. Splitting up main.go Another reviewer said the 1.5k-line file was too much. They were completely right. hackfetch had grown into one giant main.go that held the logos, the color schemes, the Hackatime API client, the terminal render, the SVG exporter, the PNG rasterizer, everything. Refactored today into files that each do one thing: logos.go: the ASCII logos colors.go: color schemes and the ANSI → hex table config.go: reads ~/.wakatime.cfg hackatime.go: the API client, caching, and language inference sysinfo.go: OS, shell, editor, terminal setup.go: the -setup flow render.go: terminal render, watch loop, and layout export.go: SVG, PNG, and JPG exporters main.go: just flag parsing and the entry point (~100 lines instead of 1,600) Same binary, same behavior, zero user-visible change. But next time I want to add a new logo or a new color scheme, I know exactly which file to open. Also way friendlier for anyone who wants to hack on it. Ship Both landed in v1.7.1. If you already have it: brew update brew upgrade hackfetch Or the curl installer will pull v1.7.1 the next time you run it. Try it."}, {"post_id": 23812, "ts": "2026-07-06T23:42:52Z", "hours": 7.1119, "text": "New feature today: hackfetch can turn itself into a shareable image. The goal was simple: your terminal fetch should be more than a terminal thing. If it looks cool on your screen, you should be able to post it in a Slack channel or drop it in a devlog without ever having to take a screenshot. hackfetch -export card.svg Run that and instead of printing to your terminal, hackfetch writes an SVG file that looks exactly like the fetch on your screen: logo on the left, stats on the right, rounded corners, monospace font, every color preserved. Getting the general SVG output was the easy part. Draw a rectangle, put text inside it, done. The hard part was preserving the colors. Terminals speak ANSI 256-color codes. SVGs speak hex color strings. They don’t line up one-to-one, so a naive export just drops every color and produces a black-and-white version of the fetch. Not very shareable. The fix: a lookup table from ANSI 256-color codes to hex values, plus a rendering path that emits every styled character as its own SVG element with the correct fill color. That’s actually a lot of tspans. Schemes like per-char, where every single glyph has its own gradient stop, can produce hundreds of colored elements per fetch. But it works. The SVG renders smoothly in any browser and looks identical to what shows up in your terminal. Use It Anywhere Some things you can do with the exported card: open it in a browser to see it drop it into a Slack channel or a devlog convert it to PNG with rsvg-convert if you need a raster image hackfetch -export card.svg trans Open it. Post it. Ship it."}, {"post_id": 19472, "ts": "2026-06-30T20:03:24Z", "hours": 2.2483, "text": "Live Hackfetch New milestone today: hackfetch can now stay open and update itself while you code. The goal was simple: run hackfetch once, leave it in the corner of your terminal, and watch the numbers move in real time as you work. hackfetch -watch Your today-hours tick up. Your top project changes when you switch repos. Your streak rolls over at midnight. All without running the command a second time. The static render was already in place from the regular one-shot fetch. The new part was redrawing without scrolling. That sounds simple. It is not. In a terminal, every time you print something, it appends to the bottom of the screen. By default, refreshing the fetch would just print a second copy of itself underneath the first, then a third, then a fourth. Within a minute you’d have a wall of identical fetches scrolling away into the past. The trick is ANSI escape codes. There’s a sequence that means “move the cursor up N lines” and one that means “clear the rest of the screen from here down.” Together they let you erase the previous fetch and redraw a new one in the same spot. Same screen, fresh data, no scroll. Why every 30 seconds? Two reasons: Hackatime aggregates heartbeats in 1-minute buckets internally, so polling faster than that doesn’t tell you anything new 30 seconds is fast enough to feel “live” without hammering the API for no reason Ctrl+C to quit. Resizing the terminal doesn’t break it. Pair it with a gradient color scheme and the whole thing turns into a tiny dashboard for your coding session: hackfetch -watch sunset"}, {"post_id": 16604, "ts": "2026-06-27T00:38:28Z", "hours": 0.5825, "text": "Hackfetch Installs Itself Anywhere Hackfetch crossed another milestone today: you no longer need Go installed to use it. Or Homebrew. Or anything, really. The goal was simple: one command, any Linux, any Mac, no prerequisites. curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Run that on Ubuntu, Fedora, Alpine, Arch, openSUSE, whatever you have, and a few seconds later hackfetch is on your PATH. Getting the basic installer working was the easy part. Detect your OS, detect your CPU architecture, grab the matching binary from GitHub Releases, drop it in /usr/local/bin. Standard installer stuff. The harder problem was the script itself failing on some Linuxes. I’d written the first version in Bash, with set -euo pipefail at the top and $'\\033[1m' style escape sequences sprinkled through. Worked great on my Mac. Worked great on Ubuntu. Then I checked which shell Alpine Linux ships by default. Not Bash. The whole script would die on line one for anyone on a minimal container. So I rewrote it in POSIX sh, which is the one shell every Unix system actually has. No Bash-isms, no fancy quoting, no pipefail. Smaller, dumber, way more portable. Speaking Seven Package Managers The next problem: the script needs curl and tar to do its job. If you don’t have them, normally you’d just be stuck. Instead, the installer now detects your system’s package manager and installs the missing prereqs for you: apt (Debian, Ubuntu) dnf (Fedora, RHEL) yum (CentOS, older RHEL) pacman (Arch) zypper (openSUSE) apk (Alpine) brew (macOS) They all do the same thing. They all use different words for it. The installer knows all seven. One line. Any Linux. No prereqs."}, {"post_id": 15120, "ts": "2026-06-24T15:57:10Z", "hours": 0.4172, "text": "Hackfetch Meets Orpheus! If you’ve been around Hack Club for more than five minutes, you know Orpheus. The little dinosaur shows up everywhere: stickers, websites, T-shirts, hackathon merch. Until today, he wasn’t in hackfetch. That’s been bugging me since v1.0. The goal was simple: give Orpheus a spot in the logo lineup, the same way flag, bot, and rocket already have one. hackfetch orpheus Drawing him was the harder part. Every logo in hackfetch has to fit inside a fixed width of 33 characters, otherwise the system info column next to it gets pushed off the screen. 33 characters is not a lot of room to draw a recognizable dinosaur, especially one with personality. I tried him head-on first. It didn’t work. Round dinosaur faces in ASCII end up looking like blobs because you don’t have curves, only corners. So I redrew him in profile. The result: a snout sticking out to one side one big eye (◉) that catches the light a HACK CLUB body underneath two tiny stubby legs at the bottom Nine lines tall. No wasted rows. He plays especially well with the gradient color schemes: hackfetch orpheus -color forest hackfetch orpheus -color sunset Forest makes him look like he’s wandering through tall grass. Sunset gives him a “main character in the closing shot” vibe. The mascot finally has a seat at the terminal. Long overdue! Also if any better artists want to have a crack at it, I’m super open to that, and I can credit you in my repo as a collaborator! THNX!"}, {"post_id": 14410, "ts": "2026-06-23T15:08:46Z", "hours": 6.8756, "text": "Hackfetch Can Finally Fetch Hackfetch crossed a pretty big milestone today: it actually fetches things. The goal is simple: build a Neofetch-style dashboard for Hack Club. Run a single command and get a snapshot of your machine alongside your Hack Club activity. hackfetch and instantly see information like: OS Hostname Username Shell Terminal Editor Hackatime stats Getting the system information was the easy part. Go makes it straightforward to grab things like the current user, hostname, operating system, and environment variables. The harder problem was rendering everything cleanly beside an ASCII logo. Each logo has different dimensions and line lengths, so I ended up building a small layout engine that calculates the width of every logo row and pads it dynamically before printing the corresponding information. Without that, the text column slowly drifts into the logo and the entire fetch screen looks broken. Hooking into Hackatime The more interesting work was integrating with the Hackatime API.Hackfetch reads your API key from: ~/.wakatime.cfg authenticates with Hackatime, and pulls fresh coding statistics every time you run the command.Right now it can display: Today’s coding time Weekly coding time Current streak Top project Most-used language No browser. No dashboard. Just a terminal command."}, {"post_id": 7579, "ts": "2026-06-12T17:50:14Z", "hours": 0.5989, "text": "In honor of pride month, I have added a pride color scheme to my custom hackfetch. It is currently installable via brew. On macs, simply run: brew install xerneas3318/tap/hackfetch Currently working on better support for more operating systems. Follow and like to stay updated!"}, {"post_id": 7526, "ts": "2026-06-12T15:50:51Z", "hours": 8.7181, "text": "Introducing hackfetch a tiny terminal fetch tool for hackatime. Run hackfetch and get your hours today, weekly total, streak, top project, and top language right in your terminal. 5 logos. 8 color schemes. mix and match: hackfetch stardance rainbow How it works: hackfetch reads your hackatime key from ~/.wakatime.cfg, fetches your Hackatime summaries and heartbeats, then renders your stats directly in the terminal."}]...
|
Title: Hackfetch by @xerneas | Stardance
Devlogs: Title: Hackfetch by @xerneas | Stardance
Devlogs:
Introducing hackfetch a tiny terminal fetch tool for hackatime. Run hackfetch and get your hours today, weekly total, streak, top project, and top language right in your terminal. 5 logos. 8 color schemes. mix and match: hackfetch stardance rainbow How it works: hackfetch reads your hackatime key from ~/.wakatime.cfg, fetches your Hackatime summaries and heartbeats, then renders your stats directly in the terminal.
In honor of pride month, I have added a pride color scheme to my custom hackfetch. It is currently installable via brew. On macs, simply run: brew install xerneas3318/tap/hackfetch Currently working on better support for more operating systems. Follow and like to stay updated!
Hackfetch Can Finally Fetch Hackfetch crossed a pretty big milestone today: it actually fetches things. The goal is simple: build a Neofetch-style dashboard for Hack Club. Run a single command and get a snapshot of your machine alongside your Hack Club activity. hackfetch and instantly see information like: OS Hostname Username Shell Terminal Editor Hackatime stats Getting the system information was the easy part. Go makes it straightforward to grab things like the current user, hostname, operating system, and environment variables. The harder problem was rendering everything cleanly beside an ASCII logo. Each logo has different dimensions and line lengths, so I ended up building a small layout engine that calculates the width of every logo row and pads it dynamically before printing the corresponding information. Without that, the text column slowly drifts into the logo and the entire fetch screen looks broken. Hooking into Hackatime The more interesting work was integrating with the Hackatime API.Hackfetch reads your API key from: ~/.wakatime.cfg authenticates with Hackatime, and pulls fresh coding statistics every time you run the command.Right now it can display: Today’s coding time Weekly coding time Current streak Top project Most-used language No browser. No dashboard. Just a terminal command.
Hackfetch Meets Orpheus! If you’ve been around Hack Club for more than five minutes, you know Orpheus. The little dinosaur shows up everywhere: stickers, websites, T-shirts, hackathon merch. Until today, he wasn’t in hackfetch. That’s been bugging me since v1.0. The goal was simple: give Orpheus a spot in the logo lineup, the same way flag, bot, and rocket already have one. hackfetch orpheus Drawing him was the harder part. Every logo in hackfetch has to fit inside a fixed width of 33 characters, otherwise the system info column next to it gets pushed off the screen. 33 characters is not a lot of room to draw a recognizable dinosaur, especially one with personality. I tried him head-on first. It didn’t work. Round dinosaur faces in ASCII end up looking like blobs because you don’t have curves, only corners. So I redrew him in profile. The result: a snout sticking out to one side one big eye (◉) that catches the light a HACK CLUB body underneath two tiny stubby legs at the bottom Nine lines tall. No wasted rows. He plays especially well with the gradient color schemes: hackfetch orpheus -color forest hackfetch orpheus -color sunset Forest makes him look like he’s wandering through tall grass. Sunset gives him a “main character in the closing shot” vibe. The mascot finally has a seat at the terminal. Long overdue! Also if any better artists want to have a crack at it, I’m super open to that, and I can credit you in my repo as a collaborator! THNX!
Hackfetch Installs Itself Anywhere Hackfetch crossed another milestone today: you no longer need Go installed to use it. Or Homebrew. Or anything, really. The goal was simple: one command, any Linux, any Mac, no prerequisites. curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Run that on Ubuntu, Fedora, Alpine, Arch, openSUSE, whatever you have, and a few seconds later hackfetch is on your PATH. Getting the basic installer working was the easy part. Detect your OS, detect your CPU architecture, grab the matching binary from GitHub Releases, drop it in /usr/local/bin. Standard installer stuff. The harder problem was the script itself failing on some Linuxes. I’d written the first version in Bash, with set -euo pipefail at the top and $'\033[1m' style escape sequences sprinkled through. Worked great on my Mac. Worked great on Ubuntu. Then I checked which shell Alpine Linux ships by default. Not Bash. The whole script would die on line one for anyone on a minimal container. So I rewrote it in POSIX sh, which is the one shell every Unix system actually has. No Bash-isms, no fancy quoting, no pipefail. Smaller, dumber, way more portable. Speaking Seven Package Managers The next problem: the script needs curl and tar to do its job. If you don’t have them, normally you’d just be stuck. Instead, the installer now detects your system’s package manager and installs the missing prereqs for you: apt (Debian, Ubuntu) dnf (Fedora, RHEL) yum (CentOS, older RHEL) pacman (Arch) zypper (openSUSE) apk (Alpine) brew (macOS) They all do the same thing. They all use different words for it. The installer knows all seven. One line. Any Linux. No prereqs.
Live Hackfetch New milestone today: hackfetch can now stay open and update itself while you code. The goal was simple: run hackfetch once, leave it in the corner of your terminal, and watch the numbers move in real time as you work. hackfetch -watch Your today-hours tick up. Your top project changes when you switch repos. Your streak rolls over at midnight. All without running the command a second time. The static render was already in place from the regular one-shot fetch. The new part was redrawing without scrolling. That sounds simple. It is not. In a terminal, every time you print something, it appends to the bottom of the screen. By default, refreshing the fetch would just print a second copy of itself underneath the first, then a third, then a fourth. Within a minute you’d have a wall of identical fetches scrolling away into the past. The trick is ANSI escape codes. There’s a sequence that means “move the cursor up N lines” and one that means “clear the rest of the screen from here down.” Together they let you erase the previous fetch and redraw a new one in the same spot. Same screen, fresh data, no scroll. Why every 30 seconds? Two reasons: Hackatime aggregates heartbeats in 1-minute buckets internally, so polling faster than that doesn’t tell you anything new 30 seconds is fast enough to feel “live” without hammering the API for no reason Ctrl+C to quit. Resizing the terminal doesn’t break it. Pair it with a gradient color scheme and the whole thing turns into a tiny dashboard for your coding session: hackfetch -watch sunset
New feature today: hackfetch can turn itself into a shareable image. The goal was simple: your terminal fetch should be more than a terminal thing. If it looks cool on your screen, you should be able to post it in a Slack channel or drop it in a devlog without ever having to take a screenshot. hackfetch -export card.svg Run that and instead of printing to your terminal, hackfetch writes an SVG file that looks exactly like the fetch on your screen: logo on the left, stats on the right, rounded corners, monospace font, every color preserved. Getting the general SVG output was the easy part. Draw a rectangle, put text inside it, done. The hard part was preserving the colors. Terminals speak ANSI 256-color codes. SVGs speak hex color strings. They don’t line up one-to-one, so a naive export just drops every color and produces a black-and-white version of the fetch. Not very shareable. The fix: a lookup table from ANSI 256-color codes to hex values, plus a rendering path that emits every styled character as its own SVG element with the correct fill color. That’s actually a lot of tspans. Schemes like per-char, where every single glyph has its own gradient stop, can produce hundreds of colored elements per fetch. But it works. The SVG renders smoothly in any browser and looks identical to what shows up in your terminal. Use It Anywhere Some things you can do with the exported card: open it in a browser to see it drop it into a Slack channel or a devlog convert it to PNG with rsvg-convert if you need a raster image hackfetch -export card.svg trans Open it. Post it. Ship it.
Loading Spinner and Splitting Up main.go Thanks so much to everyone who took the time to comment, rate, and drop feedback on my latest ship. All of it was genuinely so helpful and I’ve been spending the last couple days fixing things up a bit. I totally forgot to devlog so I’m actually losing a couple hours since it’s been over ten hours since my last one :sob A loading spinner while Hackatime fetches One reviewer pointed out that hackfetch takes a couple of seconds when it’s pulling your Hackatime stats for the first time, and there was no signal that anything was happening. Now there is. ⠋ fetching Hackatime... The spinner cycles through 10 braille frames and the whole line clears out the instant the fetch finishes. Same fetch, way less awkward pause. Two small details that make it feel right: It only shows when stderr is actually a terminal, so it doesn’t spam control codes into your log files if you redirect output. It prints one frame immediately, so fast fetches still flash something instead of nothing. hackfetch runs it around the API calls automatically. No config, no opt-in. It’s just there. Splitting up main.go Another reviewer said the 1.5k-line file was too much. They were completely right. hackfetch had grown into one giant main.go that held the logos, the color schemes, the Hackatime API client, the terminal render, the SVG exporter, the PNG rasterizer, everything. Refactored today into files that each do one thing: logos.go: the ASCII logos colors.go: color schemes and the ANSI → hex table config.go: reads ~/.wakatime.cfg hackatime.go: the API client, caching, and language inference sysinfo.go: OS, shell, editor, terminal setup.go: the -setup flow render.go: terminal render, watch loop, and layout export.go: SVG, PNG, and JPG exporters main.go: just flag parsing and the entry point (~100 lines instead of 1,600) Same binary, same behavior, zero user-visible change. But next time I want to add a new logo or a new color scheme, I know exactly which file to open. Also way friendlier for anyone who wants to hack on it. Ship Both landed in v1.7.1. If you already have it: brew update brew upgrade hackfetch Or the curl installer will pull v1.7.1 the next time you run it. Try it.
Hackfetch Is Now Actually Fast Last log I added a loading spinner so you’d have something to look at while hackfetch was hitting the Hackatime API. This week I made it so you barely have time to see the spinner at all (undoing all my work lol) The problem hackfetch was making four separate calls to Hackatime for every fetch: /users/current/heartbeats/most_recent (for your slack handle) /users/current/summaries (for your streak) /users/current/statusbar/today (for today's coding time) /users/current/stats/last_7_days (for weekly stats) Doing them one after another meant the total wait was the sum of all four. Turns out that’s about 1.7 seconds on a normal connection. Not the end of the world, but very noticeable when you just want to open a terminal. The fix: run them all at the same time Now hackfetch fires all four calls in parallel using goroutines, waits for the slowest one to come back, and then builds the fetch from the responses. Total wait drops from “sum of all four” to “just the slowest one.” Before: ~1.7 seconds After: ~0.7 seconds 60% faster . Every single fetch. Every single time. One tiny bonus optimization While I was in there, I also switched to a single shared HTTP client with a bigger connection pool. The default Go setup caps you at 2 open connections per host, which is fine when you’re calling one endpoint at a time but hurts when you’re firing four at once. Now the parallel calls can share connections instead of stacking up on each other. Nothing about the fetch itself changed. Same info, same layout, same colors. Just faster. Ship Shipped in v1.7.2. If you have hackfetch installed: brew update brew upgrade hackfetch time hackfetch Watch the spinner barely have time to appear.
One More Way to Install (and Pizza) Two small things today: hackfetch is now on the AUR, and there’s a new logo. hackfetch on the AUR A reviewer on my last ship said they had a hard time getting hackfetch running on CachyOS (an Arch-based Linux distro). Instead of trying to reproduce their exact issue, I figured the cleanest fix was to publish hackfetch through the package manager Arch users already trust. So hackfetch is now up as hackfetch-bin on the AUR: aur.archlinux.org/packages/hackfetch-bin If you’re on Arch, CachyOS, Manjaro, EndeavourOS, Garuda, or any other Arch-based distro: yay -S hackfetch-bin Or with paru: paru -S hackfetch-bin The package pulls the pre-built binary straight from the GitHub release, so there’s no waiting on a source build. Works on both x86_64 and aarch64 . Add it up and hackfetch is now installable one command from: brew (macOS and Linuxbrew) apt / dnf / yum / pacman / zypper / apk (all through the curl installer) the AUR (Arch family) go install (any platform with Go) the PowerShell installer (Windows) This thing is getting kind of hard to NOT install. Pizza logo Hack Club runs on pizza. Now hackfetch does too. hackfetch pizza It’s a triangular slice viewed from the tip, HACK CLUB baked into the middle, and a rolled crust at the wide edge. The tricky part was the crust. I went through three drafts trying to make it curve at the bottom without breaking the connection to the slice’s diagonal sides (turns out you can’t cleanly connect diagonal characters to horizontal ones in a monospace grid). Landed on a two-row rolled crust where the diagonals keep going and the interior fills with a double horizontal band. Pairs surprisingly well with sunset: hackfetch pizza sunset Turns your terminal into a golden-hour pizza box. Ship Both landed in v1.7.3 . If you’re on Arch-family: yay -S hackfetch-bin Elsewhere: brew update brew upgrade hackfetch Now try hackfetch pizza and tell me if the crust looks right.
Hackfetch Gets Real Colors New thing today: hackfetch now emits 24-bit color when your terminal supports it, and spreads gradients smoothly across each row instead of cycling through the palette one character at a time. Before and after Old behavior: for a per-char scheme like rainbow , each character got exactly one palette entry, wrapping around every N characters. On a 30-column row with a 3-color palette, that looked like ten cycles of red, green, blue, red, green, blue… basically RGB static. New behavior: the palette spreads across the row once, and characters between palette entries get interpolated in-between colors. Same 3-color palette on a 30-column row now shows red, olive, green, teal, blue, magenta, back to red. Why the rebuild Terminals speak two color modes: 256-color ( \x1b[38;5;Nm ): pick from a fixed palette of 256 preset RGB values. 24-bit / truecolor ( \x1b[38;2;R;G;Bm ): specify any of ~16 million RGB values directly. The old code always used 256-color. That meant every character had to snap to one of the palette entries. No in-betweens possible. The new code checks $COLORTERM (set to truecolor by iTerm2, kitty, WezTerm, Alacritty, GNOME Terminal, and most modern terminals) and emits 24-bit escapes when supported. When it’s not, it falls back to the old cycled-palette behavior automatically. You can force it either way with HACKFETCH_TRUECOLOR=1 or =0 . Where you’ll notice it The built-in rainbow scheme has 23 palette stops, so the difference on that one is small. You just see a smoother color distribution and less banding. The change is dramatic on: custom themes with few stops (try 3 colors in your ~/.config/hackfetch/colors.json for the wildest gradient) the stardance palette (11 stops, per-char), where sparkles now flow through the spectrum in order instead of landing on random-looking colors any per-line scheme ( pride , trans , bi , pan , sunset , ocean , forest ) since they now emit exact RGB values instead of nearest-256-color Bonus: the SVG, PNG, and JPG export paths use the smooth interpolation too, so exported cards look better regardless of your terminal. Ship Landed in v1.8.0 . brew update brew upgrade hackfetch Or on the Arch family: yay -Syu hackfetch-bin Try hackfetch rocket forest and just watch.
hackfetch is now TMUX + NVIM COMPATIBLE new thing today: hackfetch will just show up wherever you already look. tmux status bar. nvim statusline. any tool that can shell out to a command and put text on a screen. The addition was simple: hackfetch -status prints one line: 2h 11m today · hackfetch (45m) · streak 12 just the numbers, for tools that already have their own rendering. hackfetch is a data source now, not just a display. in tmux two lines in ~/.tmux.conf : set -g status-interval 60 thats it. every tmux session, every window, refreshing once a minute. i dropped it in a pink Catppuccin capsule to the left of my existing date capsule and now i cant stop glancing at it lol. in neovim (lualine) same story, five lines of lua: sections = { lualine_z = { function () return vim . fn . system ( "hackfetch -status" ): gsub ( " \n " , "" ) end } } } shells out on every redraw. works with airline too, or any custom statusline that lets you plug in a function. the fun part making hackfetch call safe for “something tmux runs every 60s forever” meant fixing three assumptions the normal fetch was making. this was way harder than it should have been ngl. setup cant block. if you dont have ~/.wakatime.cfg, normal hackfetch throws you into an interactive setup wizard (ask me how i know). in status mode that would freeze your tmux bar until you notice and Ctrl+C it. so status mode is fully non interactive now. no config → print nothing → tmux shows nothing → no deadlock 🙏 api errors cant leak into your bar. hackatime offline? old behavior would dump HTTP 500 timeout into your status area which looks INSANE. now status mode exits silently instead so your bar stays clean every call has to be cheap. hackfetch’s parallel fetch alr seconds, and the shared HTTP client keeps connections alive across the 4 API calls it fires, so tmux polling every 60s is easy on the API. a proper local file cache is on the list for later but honestly not needed for now (i’m lazy) ship landed in v1.9.0. if you already have it: brew update brew upgrade hackfetch or arch family: yay -Syu hackfetch-bin (for more installs for ur specific os check out the github pls) then drop the tmux or lualine snippet above into your dotfiles and its just there in every terminal. no plugin. no config. no daemon. just a flag.
caching or i owe hackclub money so heres what my day looked like: nvim was calling hackfetch -status on every redraw for my lualine. tmux was calling it every 60 seconds for the status bar. i had 3 tmux sessions open. and every time i actually opened a new terminal, hackfetch fired again on shell start. quick napkin math: nvim redraws are basically continuous when im typing, tmux was hitting the api 3x/minute across sessions, plus every terminal open = another fetch. we’re talking hundreds of calls to hackatime in a normal work session. from ONE user. me hackatime is a free hack club service and i was starting to feel bad lol. the fix: cache the response ~/.cache/hackfetch/last.json stores the last snapshot with a timestamp. every fetch checks that file first. if its fresh enough, skip the network entirely and just render from disk. TTL is different depending on the caller: hackfetch (one-shot): 30 seconds. long enough that a normal re-run inside a devlog attempt is instant, short enough that you dont get badly stale numbers. hackfetch -status: 60 seconds tmux polls roughly this often anyway so its basically free now. hackfetch -watch: ignores the cache, always fresh (thats the whole point of watch mode). opt out with -no-cache or HACKFETCH_CACHE_TTL=0 if you want. also HACKFETCH_CACHE_TTL=300 to be even more polite. So yea tmux is now basically free . but the real win writing this made me realize the cache does more than save milliseconds: every fetch was a full TLS handshake, wifi radio spin up, etc. now most fetches touch the disk once and nothing else. macbook fan appreciates it. offline. if your wifi drops mid coding session you keep working from the cache instead of showing a spinner forever. tmux bar just keeps saying what it said 40 seconds ago. battery again but for the hackatime server. hackfetch stops asking the api 5-10x more than they need to. multiply by everyone who has it in their tmux config and thats a real thing. atomic write via .tmp + rename so nothing ever reads a half-written file. cache is user-only (0600), because it does contain your top project name. bonus: -doctor while i was fixing the polite-to-the-api stuff i added -doctor , which walks a checklist and tells you whats broken: hackfetch doctor ✓ wakatime config exists /Users/xerneas/.wakatime.cfg ✓ api_key present loaded from config ✓ wakatime-cli found /Users/xerneas/.wakatime/wakatime-cli ✓ hackatime api reachable today: 28m ✓ terminal supports truecolor $COLORTERM=truecolor ✓ browser opener available /usr/bin/open green if its working, orange if its not, and non-zero exit if anything failed so you can script it. this was going to be a small self-diagnosis feature and it caught a real bug in the api client on the very first run i did while writing it lol (a string field where hackatime returns an int, so one of the fields was silently missing from every fetch since v1.0). fixed that too. ship both landed in v1.10.0. update as usual: brew update brew upgrade hackfetch or arch: yay -Syu hackfetch-bin then run hackfetch -doctor first, and if anything is broken it’ll tell you exactly what.
my streak was lying to me for a month went to add a simple 7-day sparkline. by the end of the night i had rewritten how hackfetch talks to hackatime and my streak field is finally accurate for the first time in weeks. the plan was get the status from the last 7 days. draw ▁▂▃▄▅▆▇█ bars except the endpoint i needed straight up 404s. /users/current/summaries doesnt exist on the current hackatime deployment. Which means every single time i ran hackfetch it was quietly making a 30-day range call that always failed, then falling back to a placeholder that said “if today has activity, streak = 1”. thats it. no matter how long ive actually been on a streak, the fetch would just show 1 day. 🤦 my streak has said 1 day for the last 2 weeks even though ive been coding literally every day. never noticed because 1 day looks kinda plausible (i added 1 day as a fallback so that it didn’t show an error a couple weeks ago and forgot ) the fix: went digging in hackatimes rails routes on github. turns out theres a whole /api/v1/ namespace i was never using. and one of the endpoints is /api/v1/users/:id/heartbeats/spans. one call, ~150kb of json, every coding session ive ever logged with start_time, end_time, duration. 2000+ spans. which is exactly what i need for both features. bucket the timestamps by local calendar day, count unique days for streak, sum durations per day for the sparkline. one request covers both. and while i was already in the api layer i noticed fetchUser was making a whole separate call for my slack handle, which is silly because that data is already in the weekly stats response we cache. so i piggybacked it. weve gone from 4 api calls per fetch to 3. the sparkline: 7-day chart ▄▄▇▅▄▅▃ 65h 28m oldest on the left, newest on the right. that tall bar in the middle is a big lock-in session from earlier in the week. the two shorter ones on the right are today (still coding) and yesterday (took a break). opt in for -status --sparkline if you want it in your tmux bar too: 2h 9m today · streak 9 · ▄▄▇▅▄▅▃ 65h 28m teasing a backend: I’m planning on building a whole leaderboard server on a free hack club nest box so people can compete on their hackatime hours. while i was poking around the routes file for the streak fix i noticed something. /api/v1/leaderboard/daily and /api/v1/leaderboard/weekly already exist. public. no auth needed. no server needed. no cron sync. hackatime literally already has it directly. so hackfetch -leaderboard is coming soon (private friend groups and personal competitions can come later) last devlog before my next ship after the ship the devlogs are going to be huge. stay tuned :P
hackfetch COLLAB?? so my last two devlogs teased two features. shipping both today. -leaderboard last devlog i said “compete with your friends on hackatime hours is coming soon.” i thought i was gonna have to build a whole nest server for it. turns out /api/v1/leaderboard/daily and /api/v1/leaderboard/weekly already exist and are public on hackatime. just a single call!! so hackfetch -leaderboard daily (or weekly) now shows the top 10: ✦ daily leaderboard Last 24 hours 🥇 1. soaphia14 11h 12m 🥈 2. AnastKara 10h 32m 🥉 3. RoSerMar 10h 6m 4. euledone 10h 5. TheShovel 10h 6. Dylhouse 9h 1m 7. Dexrn 8h 59m 8. HexFud 8h 31m 9. zeddash 8h 29m 10. Trtotomotoro 8h 26m every username is an OSC 8 clickable link to that person’s hackatime profile. modern terminals (iterm2, kitty, wezterm, alacritty, gnome-terminal) render it as an actual hyperlink you can click. terminals without OSC 8 just show the plain text so it doesnt look broken. if you’re on the board it highlights your row in orange and adds (you) next to your name. json addon the other thing. someone else competing in stardance messaged me the other day about integrating hackatime into their own project and needed help figuring out the api (YAY). helping them made me realize hackfetch is doing a bunch of work (auth, caching, streak reconstruction, per-day bucketing) that other tools would love to piggyback on. so now: $ hackfetch -json { "version": "2", "fetched_at": "2026-07-25T17:00: 20.900829+05:30", "system": { "user": "xerneas", "host": "Macbook-Pro", "os": "macOS 26.5.2", ... }, "hackatime": { "slack": "@U0B8FHHRQPJ", "streak": 12, "today_seconds": 15820, "week_seconds": 237501, "top_project": { "name": "hackfetch", " "top_language": { "name": "Go", "seconds": 97418 }, "week_chart": [36967, 31651, 33841, 284 "machines": 3 } } week_chart is 7 numbers = daily seconds oldest to newest same as the sparkline. top_language skips the unknown/other buckets. everything lines up with what the normal fetch would show, just parseable. ship landed in v2.1.0. brew update && brew upgrade hackfetch or arch: yay -Syu hackfetch-bin then try: hackfetch -leaderboard weekly hackfetch -json | jq For a general install use: curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh
big thank you for everyone’s feedback! fresh out of the oven: hackfetch v2.1.1 (aka the reviewer bug fix pass) what got fixed: shell detection used to just read $SHELL which is your login shell. if you log in as bash but run fish, hackfetch was calling you a bash user. it now checks $FISH_VERSION / $ZSH_VERSION / $BASH_VERSION and falls back to asking the OS who your parent process actually is editor detection was two bugs in a trench coat. it wasnt stripping args so zeditor --wait showed up as “zeditor –wait” instead of “Zed”, and if you had no $EDITOR set it defaulted to nano even if you had literally never opened nano. now it strips flags, maps launcher names to human ones (zeditor -> Zed, code -> VS Code, cursor -> Cursor, hx -> Helix etc), and says “-” instead of nano if nothing is set. top project label was ambiguous. it was pulling weekly stats but the row just said “top project” so people thought it meant all time. now weekly rows read top proj 7d , top lang 7d , top ed 7d , top cat 7d . setup dialog was scaring people. it always printed “file exists but has no api_key” whenever it reached the setup flow, even if the api_key line was actually there but just failing to parse. loadConfig is now more forgiving (inline comments, quoted values, case insensitive keys) and setup tells you WHY its stuck instead of gaslighting you about your own config. also short circuits if you run hackfetch -setup when youre already set up. people said they wanted a gay flag color was already there under the name pride but that wasnt obvious. gay is now an alias so both work. grab it: brew upgrade hackfetch or yay -S hackfetch-bin or curl / powershell installer if you don’t have it yet curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh again thank you to everyone who took the time to actually run it and tell me what was broken!
HACKFETCH BATTLES??? two features in one release. hackfetch already knows a scary amount about you (thanks hackatime) so why not turn that into more features. hackfetch vs @ someone head to head compare. give it a hackatime username and hackfetch fetches both your histories in parallel, buckets them into today / this week / all time / streak, and prints them side by side with a winner arrow on every row. accepts @name , name , or a full profile url like hackatime.hackclub.com/@name . also works positional: hackfetch vs @you . use it to settle arguments, motivate yourself, or realize your friend has coded 265 hours and you should probably close discord. hackfetch -records personal bests. computed entirely from data hackfetch already fetches (streak + sparkline already use it), so zero new api calls $ hackfetch -records ✦ personal records @you biggest day 12h 41m on 2026-07-18 longest streak 25 days ended 2026-07-01 longest session 43m on 2026-07-17 days coded 86 first day 2026-04-24 99 days ago lifetime 208h 29m the “longest streak” tracks your all time best not just your current one. and “first day” tells you how long ago you started so you can feel old. grab it brew upgrade hackfetch yay -S hackfetch-bin install curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Next devlog is gonna be a fun one, I have an idea cooking up
Hackfetdch natively in your readme hackfetch -readme it spits out a markdown stats card ready to paste straight into your github profile README. pipe it into a file and commit: hackfetch -readme > stats.md this is the cool bit or drop it in your README.md between two html comments and set up a github action to run it on a schedule so it auto refreshes every day. your profile now has a live coding stats card next to your pinned repos with no cron server, no vercel deploy, no api key stashed in secrets. its literally just markdown. zero extra api calls too. the readme card reads from the same cached hackatime response the normal fetch uses so if you just ran hackfetch it takes ~20ms. the streak emoji is a lil detail i had fun with. 3+ days gets a 🔥 upgrade with brew upgrade hackfetch or yay -S hackfetch-bin (once aur maintenance wraps up) or curl the installer curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh
Ships:
Every fetch tool tells you your OS. Mine tells you your streak. hackfetch is a Hack Club themed terminal fetch tool. Inspired by neofetch (originally bash, now archived) and fastfetch (its C successor), written in pure Go. Instead of just showing your kernel and CPU, it pulls live stats from your Hackatime account: today’s hours, weekly total, current streak, top project, top language. Right in your terminal. Six Hack Club themed ASCII logos (including my GOAT orpheus). Fourteen color schemes (pride, trans, bi, pan included). Live watch mode that refreshes while you code. And as of today, you can export the whole thing as a PNG, JPG, or SVG card and post it anywhere. One line to install: Linux / Mac: curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Windows: irm https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.ps1 | iex Tell me how it was! Follow and like for updates.
HACKFETCH V2.0 it’s been a few weeks since ship #1 and hackfetch is a completely different tool now. faster, smaller, quieter, actually correct, and now lives in places besides your terminal window. v2.0.0 is out. what changed: fits in your tmux status bar with one line of config. same story for lualine. hackfetch -status prints a compact one-liner meant to be shelled out to every minute. fits everywhere else too. now on the AUR (yay -S hackfetch-bin) alongside the existing brew tap, curl installer, powershell installer, and go install. seven install channels total. runs in ~20ms on repeat calls thanks to an on-disk cache. tmux polling every minute is basically free now. was ~700ms cold before. runs in ~0.7s cold thanks to a parallel API fetch. was ~1.7s before. shows a smooth truecolor gradient on any modern terminal. auto-detects $COLORTERM. falls back to 256-color on older ones. -doctor walks a colored checklist of your setup and tells you exactly what’s broken. green if fine, orange if not, non-zero exit if you wanna script it. new pizza logo because hack club runs on pizza. seven logos total. streak is finally correct after silently saying “1 day” for a month. /summaries is gone from hackatime so hackfetch now reconstructs streak from every coding session in your history via /heartbeats/spans. real streak: 9 days for me right now. 7-day sparkline baked into the fetch (with -v) and available as -status –sparkline for the tmux bar. default fetch got leaner. slack handle, machines count, and the sparkline moved behind -v so the normal fetch stays focused on hours + project + language. loading spinner on the api fetch so you know something is happening. and then the cache made it show up almost never. one install: Linux / Mac: curl -fsSL https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.sh | sh Windows: irm https://raw.githubusercontent.com/xerneas3318/hackfetch/main/install.ps1 | iex Arch family: yay -S hackfetch-bin macOS / Linuxbrew: brew install xerneas3318/tap/hackfetch For more install methods check out the github page: https://github.com/xerneas3318/hackfetch teasing the next big thing: hackfetch -leaderboard is coming next, using the public leaderboard endpoints i found in hackatime’s routes file. compete with friends on daily and weekly hours right from your terminal. private friend groups on a hackclub nest box after that. if you try it, thanks. send me some feedback...
|
1792878603.0227313
|
1793742603.0227313
|
|
17153
|
CloudCore OS by @Christianlikes67_Bobbpheus | Star CloudCore OS by @Christianlikes67_Bobbpheus | Stardance...
|
Christianlikes67_Bobbpheus
|
2
|
4.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T10:51:23Z", "hours": 2.0, "multiplier": 1.66, "payout": 4, "blessing": "neutral", "text": "CloudCore OS CloudCore OS is a browser-based desktop environment built with HTML, CSS, and JavaScript . It recreates the feel of a modern operating system directly inside the browser, featuring a window-based interface, application management, personalization, and persistent local storage. The project is focused on creating a lightweight and expandable WebOS while demonstrating what can be achieved using only standard web technologies. ✨ Features Desktop Environment Modern desktop interface Draggable and focusable application windows Responsive layout Glassmorphism-inspired UI Taskbar and desktop icons Window management system Built-in Applications 🌐 Browser 📝 Notes (Auto Save) 📖 Journal 🧮 Calculator ⚙️ Settings Personalization Wallpaper selection Custom wallpaper uploads Persistent user preferences Desktop customization Application Management Built-in App Store Install new applications Uninstall installed applications Dynamic application loading Storage Local Storage support Automatically saves: Notes Journal entries Wallpapers Installed apps User settings 🛠 Built With HTML5 CSS3 JavaScript (Vanilla) No frameworks or external libraries are required. 💡 How It Works CloudCore OS runs entirely inside the browser. Every application opens inside its own movable desktop window, providing an operating system-like experience without requiring any installation. User data is stored locally using the browser’s Local Storage API, allowing applications, wallpapers, notes, and settings to persist between sessions. 🌐 Live Demo Visit CloudCore OS here: https://christianlikes67.github.io/CloudCore-OS/", "repo": "https://github.com/Christianlikes67/CloudCore-OS", "demo": "https://christianlikes67.github.io/CloudCore-OS/"}, {"ship_num": 2, "ts": "2026-06-25T17:32:05Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "CloudCore OS began as a simple desktop webpage and gradually evolved into a functional browser-based operating system. The project features draggable windows, a built-in browser, notes, a journal, a calculator, a settings app, and an app store. One of the biggest challenges was creating a window system that allowed applications to be moved freely while staying organized. Another challenge was implementing persistent storage so wallpapers, notes, journal entries, and installed apps would remain saved after refreshing the page. The most interesting part of development was turning the desktop into a customizable environment. Users can change wallpapers, upload their own backgrounds, install or uninstall apps, and personalize the experience. The project was built entirely with HTML, CSS, and JavaScript. HTML provides the structure, CSS handles the visual design and effects, and JavaScript powers the operating system’s functionality. Overall, CloudCore OS became a much larger and more advanced project than originally planned, making it both challenging and rewarding to develop.", "repo": "https://github.com/Christianlikes67/CloudCore-OS", "demo": "https://christianlikes67.github.io/CloudCore-OS/"}]...
|
[{"post_id": 24786, "ts": "202 [{"post_id": 24786, "ts": "2026-07-08T16:11:12Z", "hours": 0.6903, "text": "just began coding for the Web OS 2 mission"}, {"post_id": 17493, "ts": "2026-06-28T09:26:29Z", "hours": 1.4681, "text": "#4 - Actual final devlog for my WebOS basiccaly the same as #3 but now it is actually working"}, {"post_id": 15775, "ts": "2026-06-25T17:19:58Z", "hours": 0.3133, "text": "Devlog #03 (the final one!) i am pretty much done with my Web OS called CloudCore OS and i had some extra ideas for what i could add but i kept RAGEQUITTING so eventually i gave up but i like like what i have rn and even though it has been hard to make and smacked my laptop sometimes im glad about what i have made and i hope you guys are gonna like so here we go!"}, {"post_id": 15178, "ts": "2026-06-24T17:37:08Z", "hours": 1.0456, "text": "Devlog #2 working on the app designs and working on browser browser third-party capability so the browser from google work inside my browser without it opening i completely new tab with google itself and right the the only things working (In the browser tab ofc) is opening i link that actually gets shown inside my OS which is FANTASTIC and some of the things are VERY hard but i LOVE working with this very cool project! Follow to get more to know about my OS!"}, {"post_id": 9891, "ts": "2026-06-16T11:35:54Z", "hours": 0.7686, "text": "I am working on my very own WebOS and its called CloudCore OS. Right now i am having a VERY hard time coding my features but im trying to absoulutely COOK take a look!"}]...
|
Title: CloudCore OS by @Christianlikes67_Bobbpheus Title: CloudCore OS by @Christianlikes67_Bobbpheus | Stardance
Devlogs:
I am working on my very own WebOS and its called CloudCore OS. Right now i am having a VERY hard time coding my features but im trying to absoulutely COOK take a look!
Devlog #2 working on the app designs and working on browser browser third-party capability so the browser from google work inside my browser without it opening i completely new tab with google itself and right the the only things working (In the browser tab ofc) is opening i link that actually gets shown inside my OS which is FANTASTIC and some of the things are VERY hard but i LOVE working with this very cool project! Follow to get more to know about my OS!
Devlog #03 (the final one!) i am pretty much done with my Web OS called CloudCore OS and i had some extra ideas for what i could add but i kept RAGEQUITTING so eventually i gave up but i like like what i have rn and even though it has been hard to make and smacked my laptop sometimes im glad about what i have made and i hope you guys are gonna like so here we go!
#4 - Actual final devlog for my WebOS basiccaly the same as #3 but now it is actually working
just began coding for the Web OS 2 mission
Ships:
CloudCore OS began as a simple desktop webpage and gradually evolved into a functional browser-based operating system. The project features draggable windows, a built-in browser, notes, a journal, a calculator, a settings app, and an app store. One of the biggest challenges was creating a window system that allowed applications to be moved freely while staying organized. Another challenge was implementing persistent storage so wallpapers, notes, journal entries, and installed apps would remain saved after refreshing the page. The most interesting part of development was turning the desktop into a customizable environment. Users can change wallpapers, upload their own backgrounds, install or uninstall apps, and personalize the experience. The project was built entirely with HTML, CSS, and JavaScript. HTML provides the structure, CSS handles the visual design and effects, and JavaScript powers the operating system’s functionality. Overall, CloudCore OS became a much larger and more advanced project than originally planned, making it both challenging and rewarding to develop.
CloudCore OS CloudCore OS is a browser-based desktop environment built with HTML, CSS, and JavaScript . It recreates the feel of a modern operating system directly inside the browser, featuring a window-based interface, application management, personalization, and persistent local storage. The project is focused on creating a lightweight and expandable WebOS while demonstrating what can be achieved using only standard web technologies. ✨ Features Desktop Environment Modern desktop interface Draggable and focusable application windows Responsive layout Glassmorphism-inspired UI Taskbar and desktop icons Window management system Built-in Applications 🌐 Browser 📝 Notes (Auto Save) 📖 Journal 🧮 Calculator ⚙️ Settings Personalization Wallpaper selection Custom wallpaper uploads Persistent user preferences Desktop customization Application Management Built-in App Store Install new applications Uninstall installed applications Dynamic application loading Storage Local Storage support Automatically saves: Notes Journal entries Wallpapers Installed apps User settings 🛠 Built With HTML5 CSS3 JavaScript (Vanilla) No frameworks or external libraries are required. 💡 How It Works CloudCore OS runs entirely inside the browser. Every application opens inside its own movable desktop window, providing an operating system-like experience without requiring any installation. User data is stored locally using the browser’s Local Storage API, allowing applications, wallpapers, notes, and settings to persist between sessions. 🌐 Live Demo Visit CloudCore OS here: https://christianlikes67.github.io/CloudCore-OS/...
|
1792878601.714651
|
1793742601.714651
|
|
28815
|
Personally Personal Site by @COYG_KNGPLCJMS | Star Personally Personal Site by @COYG_KNGPLCJMS | Stardance...
|
COYG_KNGPLCJMS
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T02:54:03Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built this simple site that describes me. This was my first website that has seperate sections and uses animations. There are 7 sections that you can select with a button.", "repo": "https://github.com/KNGPLCJMS/PersonalSite", "demo": "https://kngplcjms.github.io/PersonalSite/"}]...
|
[{"post_id": 26347, "ts": "202 [{"post_id": 26347, "ts": "2026-07-11T02:42:02Z", "hours": 3.5761, "text": "I wrote all the information into one website and split them up into sections with buttons. I also added a simple theme."}]...
|
Title: Personally Personal Site by @COYG_KNGPLCJMS Title: Personally Personal Site by @COYG_KNGPLCJMS | Stardance
Devlogs:
I wrote all the information into one website and split them up into sections with buttons. I also added a simple theme.
Ships:
I built this simple site that describes me. This was my first website that has seperate sections and uses animations. There are 7 sections that you can select with a button....
|
1792878600.9039738
|
1793742600.9039738
|
|
39289
|
Cortex Engine by @ball | Stardance
|
ball
|
1
|
60.0
|
814
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-05T02:00:55Z", "hours": 60.0, "multiplier": 13.72, "payout": 814, "blessing": "neutral", "text": "First ship for Cortex :D. Cortex is a tool for building and testing automated trading strategies without needing to write code. You can load stock price data, pick technical indicators like moving averages or RSI, and visually create custom buy and sell rules. It then runs a simulation over historical data to show you how your strategy would have performed, complete with interactive charts, performance stats like win rates and total returns, and downloadable trade logs. Hope you all enjoy using it :D", "repo": "https://github.com/kavinr24/Cortex", "demo": "https://cortexsim.xyz"}]...
|
[{"post_id": 41092, "ts": "202 [{"post_id": 41092, "ts": "2026-08-05T01:52:43Z", "hours": 0.8061, "text": "Devlog 11 I’m just doing this last devlog before the first ship, so that I get the remaining time I spent working on the readme. The complete readme.md is finished, including all the features, development tools, tech stack, and more. I will be shipping now."}, {"post_id": 41047, "ts": "2026-08-05T00:17:19Z", "hours": 4.4878, "text": "Devlog 10 hello :D. the first version of Cortex is ready to ship. After I modularized the components, I finished up the strategy builder module and the UI in streamlit. So now you can make your own custom no-code entry and exit rules. The app is deployed on Render. I’ve bought a domain for it, and linked that up to the Render link. The current UI takes in whatever rules you set, fixes up the signal logic, and then hands it to the backtester so you get results pretty much instantly. What I got working for the builder: Add, delete, change multi condition rules using basic boolean logic Compare indicators against fixed numbers or just evaluate 2 strategies against eachother, eg SMA and EMA Calculates indicators ahead of time and edge cases like NaN crashes and random state resets. What’s next? README, full runthrough to make sure everything runs smoothly, and then the first ship."}, {"post_id": 40531, "ts": "2026-08-04T03:53:38Z", "hours": 9.0089, "text": "Devlog 09 hello :D. With the bridge now running, I built out the full app.py dashboard to test all the ui features, strategies, and visual analytics like the graphs. Its currently all in a singular file before I split it into seperate components. All the Streamlit app does is gather parameters from the sidebar, send them to CortexBridge, and create a render of the returned metrics/payload. What I’ve added to the dashboard: Full strategy support (choose from dropdown in sidebar) Date range controls & friction inputs: added execution start/end date selectors + interactive sliders for initial capital, commission fees, and slippage % Chart shows equity curve performance Downloadable CSV exports for trade logs and JSON backtest reports What’s next? The dashboard logic is complete, next up is to modularize it into different components. I will most likely also be adding a custom strategy building system soon."}, {"post_id": 38650, "ts": "2026-08-01T04:50:15Z", "hours": 3.9858, "text": "Devlog 08 hi :D. Before writing out the Streamlit code, I decided to setup the actual pipeline to connect the frontend to the backtesting engine. bridge.py now handles the transfer of UI control outputs to commands in the engine. All the streamlit app has to do now is pass input parameters into CortexBridge and receive a payload. This makes sure the web client and backend stay completely seperate. Bridge features: BacktestPayload is the dataclass that returns everything Streamlit will need. This includes the formatted metrics (Total return, Sharpe, etc.), the equity curve df, the trade history table, and execution logs. looks for local sqlite databases, falls back to local csv files, or generates synthetic data if the ticker data isn’t available signals are delayed by 1 bar so that the strategy can’t cheat by knowing the future prices, and trading costs like fees and slippage are also factored into every executed trade bunch of error handling and logging Whats next? Next up is building the full Streamlit layout and hooking it up to the bridge."}, {"post_id": 38284, "ts": "2026-07-31T16:25:02Z", "hours": 10.6756, "text": "Devlog 07 Hello :D. I’m at 10 hours so I have to make a devlog. I will be dropping the tkinter gui completely. Tkinter is genuinely terrible for this project, I’ve spent too long making the dark theme frames and canvas charts, and the UI still looks very old and bad. I will be switching the whole frontend to Streamlit. Streamlit is alot easier to use and is way more convenient. Streamlit also converts Cortex into a web app instead of having to download and run it locally. Alot better for users who just want to test it. The Streamlit building experience also seems better, as they have prebuilt UI components, proper charting libraries, and easier deployment. Whats next? I am scrapping the tkinter app. I will start building the backend wrappers and logic to connect with the Streamlit frontend."}, {"post_id": 37216, "ts": "2026-07-29T19:20:18Z", "hours": 10.3425, "text": "Devlog 06 Hello :D. Since the last devlog, I’ve gotten started on creating the complete pipeline. I started on a script for a complete backtest run. Majority of the time in this devlog was taken up by my frontend work that I just started. This has been the hardest part so far (for me), I don’t remember the last time I’ve had to use tkinter. Current features in the UI: Ticker selection and date range picker (to retrieve stock data) Strategy parameters (fast/slow SMA periods) Risk controls (initial capital, commision %, slippage %) to improve backtesting accuracy List of all trade executions I haven’t implemented matplotlib to show the equity curve and drawdown, that will most likely be up next. The current UI also just feels very blocky and sharp, I will be smoothening everything out. Whats next? I’ll be implementing the chart using Matplotlib for equity curves and drawdowns, and fixing up the styling/layout."}, {"post_id": 36100, "ts": "2026-07-27T23:41:23Z", "hours": 7.4644, "text": "Devlog 05 hey guys :D. I’ve finally completed the PerformanceMetrics module. This allows the program to now display trade stats, WLR, return metrics, and alot more. I also added 4 new strategies for the EMA, Stochastic, ADX, and ATR indicators that I added in the prev devlog. Main.py was also of course updated to handle the metrics. I’ve also just began work on the full pipeline and data wrappers. After that will come the frontend development."}, {"post_id": 35308, "ts": "2026-07-26T17:01:11Z", "hours": 4.0656, "text": "Devlog 04 Hello :D. Last devlog I finished up the backtesting engine, strategy module, and added 2 new indicators. 3 new indicators were added to the TechnicalIndicators module: Stochastic Oscillator ADX (Average directional index - trend strength) ATR (Average true range - volatility) My strategy module was also updated to generate signals for the MACD and Bollinger Bands indicators. Majority of my time has been taken up by the new PerformanceMetrics module I’ve been working on. This module evaluates the backtesting results with return, risk, drawdown, and trade statistics. It still isn’t finished, but will definitely be done before the next devlog. Whats next? Next up will just be more addition of indicators and strategy refinement. After I’ll be setting up the backend wrapper and data handlers to work with the frontend (which I will develop later)."}, {"post_id": 34973, "ts": "2026-07-26T03:20:56Z", "hours": 5.1519, "text": "Devlog 03 Hello :D. Last devlog I migrated everythng to SQLite and built out a few technical indicators. Devlog took this long as I was working on the backtesting engine for a while. Took a while to understand what was going on when I first tried to work on trade execution, create the cash vs holdings trackng, and the entry exit logic. I did get a full simulation working that has slippage, comissions, and risk management like stop loss and take profit. I’ve also added the strategy module to turn indicator outputs into buy and sell signals. 2 new indicators were also added: MACD (Moving Average Convergence Divergence) Bollinger Bands main.py was also of course updated to handle the new modules."}, {"post_id": 34414, "ts": "2026-07-25T02:59:32Z", "hours": 3.0003, "text": "Devlog 02 Hello :D. Last time, I had a script that pulled stock data from yfinance, flattened the dataframes, and saved the data to JSON and CSV files. For this update, I migrated to an actual local database, created separate modules, and built out the first bit of the indicators. I switched over to an SQLite database, and as everything was getting too crammed in the main.py, created separate modules for handling the database and fetching yfinance data, which include the DatabaseManager and DataFetcher classes. I’ve started out on building indicators.py to compute technical indicators. So far I’ve implemented: SMA (Simple Moving Average) EMA (Exponential Moving Average) RSI (Relative Strength Index) I also updated main.py to handle all the new modules and work with the SQLite database. Whats next? I will most likely start building out the strategy part to generate signals based on the indicator outputs."}, {"post_id": 34286, "ts": "2026-07-24T21:16:18Z", "hours": 1.3603, "text": "Devlog 01 Hey guys :D. First devlog of Cortex, heres a quick overview: Cortex is a backtesting and market analysis platform that I’m building to test algotrading strategies. For this first update, I got the main data pipeline working. All my data is coming from yfinance. I setup yfinance to pull 2 years of daily OHLCV data for 6 tickers (AAPL, MSFT, GOOGL, NVDA, SPY, and AMZN). pandas returns MultiIndex columns, so I had to format everything into a flat table. The formatted JSON and CSV files are also exported."}]...
|
Title: Cortex Engine by @ball | Stardance
Devlogs Title: Cortex Engine by @ball | Stardance
Devlogs:
Devlog 01 Hey guys :D. First devlog of Cortex, heres a quick overview: Cortex is a backtesting and market analysis platform that I’m building to test algotrading strategies. For this first update, I got the main data pipeline working. All my data is coming from yfinance. I setup yfinance to pull 2 years of daily OHLCV data for 6 tickers (AAPL, MSFT, GOOGL, NVDA, SPY, and AMZN). pandas returns MultiIndex columns, so I had to format everything into a flat table. The formatted JSON and CSV files are also exported.
Devlog 02 Hello :D. Last time, I had a script that pulled stock data from yfinance, flattened the dataframes, and saved the data to JSON and CSV files. For this update, I migrated to an actual local database, created separate modules, and built out the first bit of the indicators. I switched over to an SQLite database, and as everything was getting too crammed in the main.py, created separate modules for handling the database and fetching yfinance data, which include the DatabaseManager and DataFetcher classes. I’ve started out on building indicators.py to compute technical indicators. So far I’ve implemented: SMA (Simple Moving Average) EMA (Exponential Moving Average) RSI (Relative Strength Index) I also updated main.py to handle all the new modules and work with the SQLite database. Whats next? I will most likely start building out the strategy part to generate signals based on the indicator outputs.
Devlog 03 Hello :D. Last devlog I migrated everythng to SQLite and built out a few technical indicators. Devlog took this long as I was working on the backtesting engine for a while. Took a while to understand what was going on when I first tried to work on trade execution, create the cash vs holdings trackng, and the entry exit logic. I did get a full simulation working that has slippage, comissions, and risk management like stop loss and take profit. I’ve also added the strategy module to turn indicator outputs into buy and sell signals. 2 new indicators were also added: MACD (Moving Average Convergence Divergence) Bollinger Bands main.py was also of course updated to handle the new modules.
Devlog 04 Hello :D. Last devlog I finished up the backtesting engine, strategy module, and added 2 new indicators. 3 new indicators were added to the TechnicalIndicators module: Stochastic Oscillator ADX (Average directional index - trend strength) ATR (Average true range - volatility) My strategy module was also updated to generate signals for the MACD and Bollinger Bands indicators. Majority of my time has been taken up by the new PerformanceMetrics module I’ve been working on. This module evaluates the backtesting results with return, risk, drawdown, and trade statistics. It still isn’t finished, but will definitely be done before the next devlog. Whats next? Next up will just be more addition of indicators and strategy refinement. After I’ll be setting up the backend wrapper and data handlers to work with the frontend (which I will develop later).
Devlog 05 hey guys :D. I’ve finally completed the PerformanceMetrics module. This allows the program to now display trade stats, WLR, return metrics, and alot more. I also added 4 new strategies for the EMA, Stochastic, ADX, and ATR indicators that I added in the prev devlog. Main.py was also of course updated to handle the metrics. I’ve also just began work on the full pipeline and data wrappers. After that will come the frontend development.
Devlog 06 Hello :D. Since the last devlog, I’ve gotten started on creating the complete pipeline. I started on a script for a complete backtest run. Majority of the time in this devlog was taken up by my frontend work that I just started. This has been the hardest part so far (for me), I don’t remember the last time I’ve had to use tkinter. Current features in the UI: Ticker selection and date range picker (to retrieve stock data) Strategy parameters (fast/slow SMA periods) Risk controls (initial capital, commision %, slippage %) to improve backtesting accuracy List of all trade executions I haven’t implemented matplotlib to show the equity curve and drawdown, that will most likely be up next. The current UI also just feels very blocky and sharp, I will be smoothening everything out. Whats next? I’ll be implementing the chart using Matplotlib for equity curves and drawdowns, and fixing up the styling/layout.
Devlog 07 Hello :D. I’m at 10 hours so I have to make a devlog. I will be dropping the tkinter gui completely. Tkinter is genuinely terrible for this project, I’ve spent too long making the dark theme frames and canvas charts, and the UI still looks very old and bad. I will be switching the whole frontend to Streamlit. Streamlit is alot easier to use and is way more convenient. Streamlit also converts Cortex into a web app instead of having to download and run it locally. Alot better for users who just want to test it. The Streamlit building experience also seems better, as they have prebuilt UI components, proper charting libraries, and easier deployment. Whats next? I am scrapping the tkinter app. I will start building the backend wrappers and logic to connect with the Streamlit frontend.
Devlog 08 hi :D. Before writing out the Streamlit code, I decided to setup the actual pipeline to connect the frontend to the backtesting engine. bridge.py now handles the transfer of UI control outputs to commands in the engine. All the streamlit app has to do now is pass input parameters into CortexBridge and receive a payload. This makes sure the web client and backend stay completely seperate. Bridge features: BacktestPayload is the dataclass that returns everything Streamlit will need. This includes the formatted metrics (Total return, Sharpe, etc.), the equity curve df, the trade history table, and execution logs. looks for local sqlite databases, falls back to local csv files, or generates synthetic data if the ticker data isn’t available signals are delayed by 1 bar so that the strategy can’t cheat by knowing the future prices, and trading costs like fees and slippage are also factored into every executed trade bunch of error handling and logging Whats next? Next up is building the full Streamlit layout and hooking it up to the bridge.
Devlog 09 hello :D. With the bridge now running, I built out the full app.py dashboard to test all the ui features, strategies, and visual analytics like the graphs. Its currently all in a singular file before I split it into seperate components. All the Streamlit app does is gather parameters from the sidebar, send them to CortexBridge, and create a render of the returned metrics/payload. What I’ve added to the dashboard: Full strategy support (choose from dropdown in sidebar) Date range controls & friction inputs: added execution start/end date selectors + interactive sliders for initial capital, commission fees, and slippage % Chart shows equity curve performance Downloadable CSV exports for trade logs and JSON backtest reports What’s next? The dashboard logic is complete, next up is to modularize it into different components. I will most likely also be adding a custom strategy building system soon.
Devlog 10 hello :D. the first version of Cortex is ready to ship. After I modularized the components, I finished up the strategy builder module and the UI in streamlit. So now you can make your own custom no-code entry and exit rules. The app is deployed on Render. I’ve bought a domain for it, and linked that up to the Render link. The current UI takes in whatever rules you set, fixes up the signal logic, and then hands it to the backtester so you get results pretty much instantly. What I got working for the builder: Add, delete, change multi condition rules using basic boolean logic Compare indicators against fixed numbers or just evaluate 2 strategies against eachother, eg SMA and EMA Calculates indicators ahead of time and edge cases like NaN crashes and random state resets. What’s next? README, full runthrough to make sure everything runs smoothly, and then the first ship.
Devlog 11 I’m just doing this last devlog before the first ship, so that I get the remaining time I spent working on the readme. The complete readme.md is finished, including all the features, development tools, tech stack, and more. I will be shipping now.
Ships:
First ship for Cortex :D. Cortex is a tool for building and testing automated trading strategies without needing to write code. You can load stock price data, pick technical indicators like moving averages or RSI, and visually create custom buy and sell rules. It then runs a simulation over historical data to show you how your strategy would have performed, complete with interactive charts, performance stats like win rates and total returns, and downloadable trade logs. Hope you all enjoy using it :D...
|
1792878600.0681653
|
1793742600.0681653
|
|
55310
|
Simple Calculator by @princekumar | Stardance
|
princekumar
|
1
|
5.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T11:11:58Z", "hours": 5.0, "multiplier": 1.08, "payout": 3, "blessing": "neutral", "text": "Project: Simple Calculator Day 1 - Idea and HTML I wanted to make something simple that actually works. I made a basic layout with a div calculator , a h1 and an input with readonly as display. Then I made 20 buttons inside a div buttons . I used onclick=\"appendValue()\" for all number buttons so I don’t have to write many functions. I also added AC, backspace ⌫, % and Copy button at the end. Day 2 - CSS For styling I used flex to center the calculator in body, background #111827 . Calculator box is #1f2937 with 340px width and border-radius 20px. The main part is .buttons { display: grid; grid-template-columns: repeat(4, 1fr); } - this made 4 columns. I gave height 60px to all buttons. For colors I used nth-child - first 2 buttons red #ef4444 for AC and backspace, every 4th, 8th, 12th, 16th yellow #fbbf24 for operators, 20th green #34d399 for Copy, and rest gray #6b7280 . The hover is just opacity 0.85. I know nth-child is messy but it worked. Day 3 - JavaScript Logic This was the main part. const display = document.getElementById(\"display\") - I got the input. appendValue(value) - just does display.value += value . Very simple. clearDisplay() - makes it empty string. backspace() - I used slice(0, -1) to remove last character. I learned this from MDN. percentage() - I did Number(display.value) / 100 . Wrapped in try catch so if error shows “Error”. calculate() - This was tricky. My buttons show ÷ and × but JS eval() needs / and _. So I did expression.replace(/÷/g, \"/\").replace(/×/g, \"_\") before eval. I know eval is not safe but for small calculator project it’s okay. Also added try catch. copyResult() - Used navigator.clipboard.writeText(display.value) and then alert “Copied!”. This only works on https but GitHub pages is https so it’s fine. Problems I faced: When I clicked ÷ it showed ÷ in display and eval was failing. Fixed with replace. Copy button was giving error in VS Code live server because clipboard needs secure context. My CSS nth-child selector was becoming long, especially the last one :not(:nth-child(1))... but I kept it. What I learned: How grid works, how to handle display as string and evaluate it, how slice works for backspace, and how clipboard API works. Time: Around 6-7 hours total in 3 days. Live Link: http://princekumar189344-netizen.github.io/Simple-Calculator/ This is my own code, I didn’t use any AI template for UI, I picked colors myself.", "repo": "https://github.com/princekumar189344-netizen/Simple-Calculator", "demo": "https://princekumar189344-netizen.github.io/Simple-Calculator/"}]...
|
[{"post_id": 58993, "ts": "202 [{"post_id": 58993, "ts": "2026-08-31T15:55:22Z", "hours": 4.8369, "text": "Devlog - Simple Calculator by @princekumar What I built: A simple web calculator. It can do +, -, x, ÷, percentage and has AC, backspace and a copy button. I made it with just HTML, CSS and JS. Link: http://princekumar189344-netizen.github.io/Simple-Calculator/ Why I built it: I wanted to make something useful that I use daily. Also I was tired of making only games, so I thought a calculator would be a good small project to understand DOM manipulation properly. I started with just basic buttons and then added extra features. How I built it: The HTML is just a div with an input as display and buttons in a grid. In CSS I used display: grid with 4 columns for the buttons. I gave different colors - red for AC/backspace, yellow for operators, green for copy. In JS, the logic is very simple: appendValue() adds numbers/symbols to the display value. clearDisplay() clears everything. backspace() uses slice(0, -1) to remove last char. For calculate(), I had a problem because my buttons show ÷ and × but JS needs / and *. So I used .replace(/÷/g, “/”) before using eval(). I know eval is not best practice but for this small project it was easiest. percentage() just divides by 100. copyResult() uses navigator.clipboard.writeText and shows an alert. Challenges: The display was showing 79266-9 type values when I clicked operators fast, I fixed it by making sure values just append. Copy button was not working on http, it needs https, but GitHub pages is https so it works now. I first used a lot of nth-child in CSS which became confusing, next time I will give classes to buttons. What I learned: How grid works, how to handle button clicks without making 20 functions, and how clipboard API works. Also learned that readonly input is better than div for display."}]...
|
Title: Simple Calculator by @princekumar | Stardan Title: Simple Calculator by @princekumar | Stardance
Devlogs:
Devlog - Simple Calculator by @princekumar What I built: A simple web calculator. It can do +, -, x, ÷, percentage and has AC, backspace and a copy button. I made it with just HTML, CSS and JS. Link: http://princekumar189344-netizen.github.io/Simple-Calculator/ Why I built it: I wanted to make something useful that I use daily. Also I was tired of making only games, so I thought a calculator would be a good small project to understand DOM manipulation properly. I started with just basic buttons and then added extra features. How I built it: The HTML is just a div with an input as display and buttons in a grid. In CSS I used display: grid with 4 columns for the buttons. I gave different colors - red for AC/backspace, yellow for operators, green for copy. In JS, the logic is very simple: appendValue() adds numbers/symbols to the display value. clearDisplay() clears everything. backspace() uses slice(0, -1) to remove last char. For calculate(), I had a problem because my buttons show ÷ and × but JS needs / and *. So I used .replace(/÷/g, “/”) before using eval(). I know eval is not best practice but for this small project it was easiest. percentage() just divides by 100. copyResult() uses navigator.clipboard.writeText and shows an alert. Challenges: The display was showing 79266-9 type values when I clicked operators fast, I fixed it by making sure values just append. Copy button was not working on http, it needs https, but GitHub pages is https so it works now. I first used a lot of nth-child in CSS which became confusing, next time I will give classes to buttons. What I learned: How grid works, how to handle button clicks without making 20 functions, and how clipboard API works. Also learned that readonly input is better than div for display.
Ships:
Project: Simple Calculator Day 1 - Idea and HTML I wanted to make something simple that actually works. I made a basic layout with a div calculator , a h1 and an input with readonly as display. Then I made 20 buttons inside a div buttons . I used onclick="appendValue()" for all number buttons so I don’t have to write many functions. I also added AC, backspace ⌫, % and Copy button at the end. Day 2 - CSS For styling I used flex to center the calculator in body, background #111827 . Calculator box is #1f2937 with 340px width and border-radius 20px. The main part is .buttons { display: grid; grid-template-columns: repeat(4, 1fr); } - this made 4 columns. I gave height 60px to all buttons. For colors I used nth-child - first 2 buttons red #ef4444 for AC and backspace, every 4th, 8th, 12th, 16th yellow #fbbf24 for operators, 20th green #34d399 for Copy, and rest gray #6b7280 . The hover is just opacity 0.85. I know nth-child is messy but it worked. Day 3 - JavaScript Logic This was the main part. const display = document.getElementById("display") - I got the input. appendValue(value) - just does display.value += value . Very simple. clearDisplay() - makes it empty string. backspace() - I used slice(0, -1) to remove last character. I learned this from MDN. percentage() - I did Number(display.value) / 100 . Wrapped in try catch so if error shows “Error”. calculate() - This was tricky. My buttons show ÷ and × but JS eval() needs / and _. So I did expression.replace(/÷/g, "/").replace(/×/g, "_") before eval. I know eval is not safe but for small calculator project it’s okay. Also added try catch. copyResult() - Used navigator.clipboard.writeText(display.value) and then alert “Copied!”. This only works on https but GitHub pages is https so it’s fine. Problems I faced: When I clicked ÷ it showed ÷ in display and eval was failing. Fixed with replace. Copy button was giving error in VS Code live server because clipboard needs secure context. My CSS nth-child selector was becoming long, especially the last one :not(:nth-child(1))... but I kept it. What I learned: How grid works, how to handle display as string and evaluate it, how slice works for backspace, and how clipboard API works. Time: Around 6-7 hours total in 3 days. Live Link: http://princekumar189344-netizen.github.io/Simple-Calculator/ This is my own code, I didn’t use any AI template for UI, I picked colors myself....
|
1792878598.942719
|
1793742598.942719
|
|
55309
|
Cosmic Catcher by @princekumar | Stardance
|
princekumar
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T09:16:58Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Cosmic Catcher, a space-themed arcade game using HTML, CSS, and JavaScript. The goal is to catch falling stars to increase your score while avoiding meteors that make you lose lives. The game includes a 60-second timer, 3 lives, increasing difficulty, keyboard controls, and a high-score system. The most challenging part was building the JavaScript game logic, especially collision detection, player movement, falling objects, the timer, and the game loop. I am proud that I turned my idea into a complete playable game with a cosmic design, animated stars, scoring, lives, meteors, and a saved high score. To test it, click “Start Game” and use the Left/Right arrow keys or A/D to move. Catch ⭐ stars for points and avoid ☄️ meteors. Try to survive for 60 seconds and beat the high score!", "repo": "https://github.com/princekumar189344-netizen/Cosmic-Catcher", "demo": "https://princekumar189344-netizen.github.io/Cosmic-Catcher/"}]...
|
[{"post_id": 58737, "ts": "202 [{"post_id": 58737, "ts": "2026-08-31T09:13:03Z", "hours": 3.2811, "text": "🚀 JavaScript Devlog — Cosmic Catcher ## 📅 Devlog 3: Adding Game Logic with JavaScriptFor the third stage of my Cosmic Catcher project, I focused on JavaScript. I used JavaScript to turn my HTML and CSS design into a fully playable game.I connected JavaScript with the HTML elements and created the complete game system, including player movement, falling stars, meteors, collision detection, scoring, lives, timer, game over and high scores. —## 🎮 What I Added ### 🕹️ Player MovementI created a player object for the catcher and added keyboard controls.The player can move using:- ← Left Arrow- → Right Arrow- A to move left- D to move rightI also added boundary checking so the catcher cannot move outside the game canvas.—### ⭐ Falling StarsI created randomly generated falling objects.Stars fall from the top of the canvas and the player needs to catch them.Every time a star is caught:```text⭐ +10 Points"}, {"post_id": 57325, "ts": "2026-08-29T13:18:56Z", "hours": 2.4664, "text": "Today I worked on my Cosmic Catcher game and focused mainly on creating the basic structure and design. I added the game title, score, lives, timer, best score, instructions, game area, and Start Game button. The idea of the game is to catch ⭐ stars to increase the score and avoid ☄️ meteors so that the player does not lose lives. I worked with HTML and CSS for this part of the project. I designed the interface with a dark space-style background, glowing borders, cards, and buttons to give it a cosmic look. I also added responsive CSS so the layout can work better on smaller screens and mobile devices. While working on the design, I tested the page in the browser and adjusted the spacing and sizes to make the game interface look better. The basic interface is now ready, and in the next part I will work on the JavaScript gameplay, including player movement, falling stars, meteors, scoring, lives, and the timer."}, {"post_id": 56550, "ts": "2026-08-28T10:55:54Z", "hours": 2.3533, "text": "#🚀 Cosmic Catcher — Devlog 1 : Building the HTMLToday I started working on my Cosmic Catcher game. I created the basic index.html structure and set up the main game area where the player, falling objects, score, and game controls will be displayed. I also added the title and basic sections that I will use later when adding the CSS and JavaScript.For now, I focused mainly on getting the HTML structure organized rather than making the game fully functional. I checked that the page loads correctly in the browser and that all the main elements are in the right places. In the next part, I will work on the CSS to design the space theme and make the game look better."}]...
|
Title: Cosmic Catcher by @princekumar | Stardance
Title: Cosmic Catcher by @princekumar | Stardance
Devlogs:
#🚀 Cosmic Catcher — Devlog 1 : Building the HTMLToday I started working on my Cosmic Catcher game. I created the basic index.html structure and set up the main game area where the player, falling objects, score, and game controls will be displayed. I also added the title and basic sections that I will use later when adding the CSS and JavaScript.For now, I focused mainly on getting the HTML structure organized rather than making the game fully functional. I checked that the page loads correctly in the browser and that all the main elements are in the right places. In the next part, I will work on the CSS to design the space theme and make the game look better.
Today I worked on my Cosmic Catcher game and focused mainly on creating the basic structure and design. I added the game title, score, lives, timer, best score, instructions, game area, and Start Game button. The idea of the game is to catch ⭐ stars to increase the score and avoid ☄️ meteors so that the player does not lose lives. I worked with HTML and CSS for this part of the project. I designed the interface with a dark space-style background, glowing borders, cards, and buttons to give it a cosmic look. I also added responsive CSS so the layout can work better on smaller screens and mobile devices. While working on the design, I tested the page in the browser and adjusted the spacing and sizes to make the game interface look better. The basic interface is now ready, and in the next part I will work on the JavaScript gameplay, including player movement, falling stars, meteors, scoring, lives, and the timer.
🚀 JavaScript Devlog — Cosmic Catcher ## 📅 Devlog 3: Adding Game Logic with JavaScriptFor the third stage of my Cosmic Catcher project, I focused on JavaScript. I used JavaScript to turn my HTML and CSS design into a fully playable game.I connected JavaScript with the HTML elements and created the complete game system, including player movement, falling stars, meteors, collision detection, scoring, lives, timer, game over and high scores. —## 🎮 What I Added ### 🕹️ Player MovementI created a player object for the catcher and added keyboard controls.The player can move using:- ← Left Arrow- → Right Arrow- A to move left- D to move rightI also added boundary checking so the catcher cannot move outside the game canvas.—### ⭐ Falling StarsI created randomly generated falling objects.Stars fall from the top of the canvas and the player needs to catch them.Every time a star is caught:```text⭐ +10 Points
Ships:
I made Cosmic Catcher, a space-themed arcade game using HTML, CSS, and JavaScript. The goal is to catch falling stars to increase your score while avoiding meteors that make you lose lives. The game includes a 60-second timer, 3 lives, increasing difficulty, keyboard controls, and a high-score system. The most challenging part was building the JavaScript game logic, especially collision detection, player movement, falling objects, the timer, and the game loop. I am proud that I turned my idea into a complete playable game with a cosmic design, animated stars, scoring, lives, meteors, and a saved high score. To test it, click “Start Game” and use the Left/Right arrow keys or A/D to move. Catch ⭐ stars for points and avoid ☄️ meteors. Try to survive for 60 seconds and beat the high score!...
|
1792878598.1406376
|
1793742598.1406376
|
|
53661
|
Enhance Prompts by @Tallurisaikumar | Stardance
|
Tallurisaikumar
|
1
|
48.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T11:15:35Z", "hours": 48.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Vibe Check provides an innovative platform for prompt design. It enables users to create prompts which elicit better responses from AI. Users can provide general requirements and let the system refine them The system adds relevant contexts, requirements, constraints, and technical specifications It teaches the user about what makes a good prompt A quality checklist helps them evaluate and improve their prompts Various prompting techniques can be applied to the prompt Multiple versions of the prompt can be generated Prompt templates for various applications such as application development, UI design, APIs, troubleshooting, and other AI applications are provided The user can save the prompt and manage versions using version control. Moreover, this innovative tool provides excellent English to Chinese translation to save tokens. Vibe Check can be used with various AI tools such as ChatGPT, Claude, Cursor, v0, Bolt, Gemini, and many more. It is a fantastic tool for developers, students, designers, and all other AI users who desire to create better prompts and achieve better results from their AI tools. It seeks to address the main problem with current prompts, which is unclear instructions leading to poor results. Vibe Check promises to make it easier, faster, smarter, and more effective to create prompts for AI applications.", "repo": "https://github.com/tallurisai9346-beep/Enhance-Prompts", "demo": "https://enhance-prompts-pt3g.vercel.app/"}]...
|
[{"post_id": 56558, "ts": "202 [{"post_id": 56558, "ts": "2026-08-28T11:14:02Z", "hours": 0.3394, "text": "finally my projecgt is complete and your prompts are ready to enhace without any ai it works coompletely without any ai commplete offline"}, {"post_id": 56397, "ts": "2026-08-28T04:48:07Z", "hours": 7.9847, "text": "we can change chinese optimized Directive"}, {"post_id": 55728, "ts": "2026-08-27T18:19:02Z", "hours": 3.035, "text": "ADD SOME MORE FEATURES"}, {"post_id": 55582, "ts": "2026-08-27T15:06:20Z", "hours": 1.2017, "text": "in vibe check may have templates in use to you resoures"}, {"post_id": 55303, "ts": "2026-08-27T01:35:31Z", "hours": 10.4431, "text": "next slide wokrs with any AI coading platform like bolt,lovable,chartgpt,ect……"}, {"post_id": 54896, "ts": "2026-08-26T03:29:54Z", "hours": 7.5028, "text": "after some many after therr step to better prompts degins iam ceeat in my project"}, {"post_id": 54586, "ts": "2026-08-25T16:41:27Z", "hours": 1.9217, "text": "i complete vibe check typing prompt page"}, {"post_id": 54296, "ts": "2026-08-25T07:40:55Z", "hours": 10.8544, "text": "Interface completed just now my project name is write the better prompts"}, {"post_id": 53909, "ts": "2026-08-24T16:48:10Z", "hours": 0.9831, "text": "just few minutes back i complet HTML code now iam staring CSS"}, {"post_id": 53768, "ts": "2026-08-24T13:30:37Z", "hours": 3.735, "text": "add new texts to my project"}, {"post_id": 53646, "ts": "2026-08-24T09:36:25Z", "hours": 0.2878, "text": "i started project to bulid prompts enhance to easy to for developers"}]...
|
Title: Enhance Prompts by @Tallurisaikumar | Stard Title: Enhance Prompts by @Tallurisaikumar | Stardance
Devlogs:
i started project to bulid prompts enhance to easy to for developers
add new texts to my project
just few minutes back i complet HTML code now iam staring CSS
Interface completed just now my project name is write the better prompts
i complete vibe check typing prompt page
after some many after therr step to better prompts degins iam ceeat in my project
next slide wokrs with any AI coading platform like bolt,lovable,chartgpt,ect……
in vibe check may have templates in use to you resoures
ADD SOME MORE FEATURES
we can change chinese optimized Directive
finally my projecgt is complete and your prompts are ready to enhace without any ai it works coompletely without any ai commplete offline
Ships:
Vibe Check provides an innovative platform for prompt design. It enables users to create prompts which elicit better responses from AI. Users can provide general requirements and let the system refine them The system adds relevant contexts, requirements, constraints, and technical specifications It teaches the user about what makes a good prompt A quality checklist helps them evaluate and improve their prompts Various prompting techniques can be applied to the prompt Multiple versions of the prompt can be generated Prompt templates for various applications such as application development, UI design, APIs, troubleshooting, and other AI applications are provided The user can save the prompt and manage versions using version control. Moreover, this innovative tool provides excellent English to Chinese translation to save tokens. Vibe Check can be used with various AI tools such as ChatGPT, Claude, Cursor, v0, Bolt, Gemini, and many more. It is a fantastic tool for developers, students, designers, and all other AI users who desire to create better prompts and achieve better results from their AI tools. It seeks to address the main problem with current prompts, which is unclear instructions leading to poor results. Vibe Check promises to make it easier, faster, smarter, and more effective to create prompts for AI applications....
|
1792878597.3297546
|
1793742597.3297546
|
|
6273
|
My first VS Code site by @Christianlikes67_Bobbphe My first VS Code site by @Christianlikes67_Bobbpheus | Stardance...
|
Christianlikes67_Bobbpheus
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-04T05:39:45Z", "hours": 0.0, "multiplier": 1.0, "payout": 0, "blessing": "neutral", "text": "I made a little website… actually my first VS Code website i havent really made that much but hey atleast its something", "repo": "https://github.com/Christianlikes67/VS-Code-site", "demo": "https://christianlikes67.github.io/VS-Code-site/"}]...
|
[{"post_id": 1554, "ts": "2026 [{"post_id": 1554, "ts": "2026-06-03T17:21:04Z", "hours": 0.4922, "text": "Im working on a small website rn its not very much mut it’ll get better :D"}]...
|
Title: My first VS Code site by @Christianlikes67_ Title: My first VS Code site by @Christianlikes67_Bobbpheus | Stardance
Devlogs:
Im working on a small website rn its not very much mut it’ll get better :D
Ships:
I made a little website… actually my first VS Code website i havent really made that much but hey atleast its something...
|
1792878596.5036848
|
1793742596.5036848
|
|
13560
|
Biggy OS by @LoginlikeLogan | Stardance
|
LoginlikeLogan
|
3
|
66.97
|
330
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T02:50:14Z", "hours": 20.0, "multiplier": 8.97, "payout": 180, "blessing": "neutral", "text": "So guys, Ive updated the os with mutiple new apps like the weather, music, calculator, paint, browser, and minecraft apps! Test it out!", "repo": "https://github.com/Logdegret/Biggy-Cheese-OS/", "demo": "https://logdegret.github.io/Biggy-Cheese-OS"}, {"ship_num": 2, "ts": "2026-08-23T13:58:23Z", "hours": 14.0, "multiplier": 10.42, "payout": 150, "blessing": "neutral", "text": "I finally finished my webos and I am happy with what ive made! There was lots that i struggled with. Hopefully this can earn a super star!", "repo": "https://github.com/Logdegret/Biggy-Cheese-OS/", "demo": "https://logdegret.github.io/Biggy-Cheese-OS"}, {"ship_num": 3, "ts": "2026-07-30T07:28:58Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a webos based on the biggy cheese meme. I found the video player extra hard. Hopefully it meets the requirements?", "repo": "https://github.com/Logdegret/Biggy-Cheese-OS/", "demo": "https://logdegret.github.io/Biggy-Cheese-OS"}]...
|
[{"post_id": 65124, "ts": "202 [{"post_id": 65124, "ts": "2026-09-10T01:25:38Z", "hours": 4.1136, "text": "Working Up to the Big Leagues… So ive made a new window called finder and It’s pretty basic so far. It was about 330 lines of js.. I will probably replace the standby/placeholder emojis with svgs so it doesn’t look out of theme!"}, {"post_id": 64469, "ts": "2026-09-08T21:47:57Z", "hours": 0.6869, "text": "A sad devlog… so I couldn’t fix it and I had to use a bit of AI to fully debug. it turns out, the calculator app was hijacking keystrokes and I had a single broken line of code in app.js. But now it works!"}, {"post_id": 64436, "ts": "2026-09-08T20:12:51Z", "hours": 14.1656, "text": "I have been working super hard and trying to fix bugs and heavily avoiding ai. But for some reason the website is breaking apart and no longer loading."}, {"post_id": 62618, "ts": "2026-09-06T02:46:53Z", "hours": 1.0931, "text": "Final Additions! Ive added a modified file of eaglercraft into the biggy os and it is now called Biggy OS"}, {"post_id": 61193, "ts": "2026-09-04T00:26:40Z", "hours": 8.1094, "text": "Ive added 3 new apps!! A working browser, calculator, and paint app!!! windows were not working properly so I had to make some ajustments and fix it. Took me some time.. haha"}, {"post_id": 59859, "ts": "2026-09-01T20:41:46Z", "hours": 9.2781, "text": "Tutorial has been added! Guys Guess what? Ive made a tutorial on how to get started on the os and i have made backgrounds gif possible. The tutorial kinda gave me a bit of trouble with bugs so i took lots of time debugging. Im also working on something big…."}, {"post_id": 59012, "ts": "2026-08-31T16:23:19Z", "hours": 1.5581, "text": "Guys I am BACK!! So far ive been tweaking a few things like the location bug, it was supposed to popup when you clicked download for the weather app. But I guess i didn’t catch that.. Anyways Here are some new backgrounds, they’re 4k!!"}, {"post_id": 53063, "ts": "2026-08-23T13:55:30Z", "hours": 1.5417, "text": "MY LAST DEVLOG!!! Hey guys, its been a great run! ive added a music app and a few customizable widgets but which can only be found by something you need to explore. Thank you guys so much for support!"}, {"post_id": 52333, "ts": "2026-08-22T13:19:21Z", "hours": 0.5256, "text": "Ive added a new app that you can download! i am currently thinking of stopping this project although it has been a blast making this project."}, {"post_id": 51796, "ts": "2026-08-21T17:09:52Z", "hours": 2.1492, "text": "LOT OF NEW BIG THINGS Ive added two new windows, notes and the store. nothing can be donwloaded yet but i am currently working on that. Ive added resizing!! follow allong and this shall be a super star project!"}, {"post_id": 50661, "ts": "2026-08-19T22:48:17Z", "hours": 0.3942, "text": "A fun cinematic opening!!! I’ve ai coded me a simple opening while i added the sound for it. I hate to say but i was a little lazy on this one since i don’t really know much on animation in websites."}, {"post_id": 50640, "ts": "2026-08-19T22:01:17Z", "hours": 2.5006, "text": "A super Annoying Terminal This Terminal is super annoying, spacing, css and divs are driving me crazy! Everytime i clicked on this terminal it used to break the screen… Not anymore! Finally the spacing and terminal is close to perfect. I will now be focusing on a cinematic loading screen."}, {"post_id": 48209, "ts": "2026-08-16T14:40:19Z", "hours": 2.4889, "text": "LOTS OF STUFF ive added a to do list with a check box so you can remind yourself what to do. Ive also added a terminal! its a work in progress but im getting there! i really want this to be a super star project so im putting in all my effort!"}, {"post_id": 46924, "ts": "2026-08-14T14:16:12Z", "hours": 0.3458, "text": "Ive tuned up the meme window to filter them and frame them"}, {"post_id": 45943, "ts": "2026-08-12T19:11:29Z", "hours": 2.4656, "text": "I added a lot so far, i added a meme tab and a to do tab. meme tab is done but not the todo."}, {"post_id": 41329, "ts": "2026-08-05T14:04:58Z", "hours": 0.4178, "text": "Ive finnaly fixed this stupid window that did not want to cooperate. I actaully suffered through this. Well, hope that some of you will like it. Also heres the progress so far: Im going to be changing meme generator to daily meme. I will be coding in python for it. Also If anyone wants to work with me to make a biggy cheeze type game, please feel free to reach out to me"}, {"post_id": 39719, "ts": "2026-08-02T21:11:11Z", "hours": 0.635, "text": "I drew a new icon for a daily meme. How do yall like it? also my game window is soooooo broken. it stretches so weird… I need someone to design a game for me since idk how to make game. Anyone?"}, {"post_id": 38749, "ts": "2026-08-01T09:37:58Z", "hours": 0.9711, "text": "added fullscreen and a game that is animal themed. NOT MY GAME"}, {"post_id": 37450, "ts": "2026-07-30T06:23:48Z", "hours": 1.0489, "text": "Made A new window / app for an about me! This is probably the final devlog until the first ship. Thank you guys so much for the support and hopefully i can get to the next OS mission.."}, {"post_id": 36272, "ts": "2026-07-28T08:23:05Z", "hours": 0.8856, "text": "I added another modular window that can change backgrounds"}, {"post_id": 34540, "ts": "2026-07-25T10:38:04Z", "hours": 0.8489, "text": "added apps!"}, {"post_id": 34517, "ts": "2026-07-25T09:34:34Z", "hours": 0.3906, "text": "I added a custom cheese cursor that I drew!"}, {"post_id": 34502, "ts": "2026-07-25T08:38:58Z", "hours": 2.3539, "text": "I scrapped the ugly background and added a physical clock with a rotating joke/statement. Also added a fun loading screen"}, {"post_id": 33948, "ts": "2026-07-24T09:02:04Z", "hours": 2.0789, "text": "Many Things Have Been Added! Ive added a rotating joke/statement that changes everytime you reload, a clock(that will be improved), and a clock widget/window that I want to be a permenant widget. Wish me luck! here are some pictures and the progress so far!"}, {"post_id": 31251, "ts": "2026-07-19T14:44:53Z", "hours": 3.2208, "text": "I have added a draggable window for the biggy cheeze moment with a custom player"}, {"post_id": 30562, "ts": "2026-07-18T07:29:12Z", "hours": 1.0281, "text": "We have went back to biggy cheeze Sorry for changing it! I am going to restart from scratch"}, {"post_id": 8723, "ts": "2026-06-14T14:20:53Z", "hours": 0.7217, "text": "I change my theme Lets Go Knicks"}, {"post_id": 7172, "ts": "2026-06-11T23:47:16Z", "hours": 1.2631, "text": "added stardance link, fixed image, and more text. Im struggling with this… lol"}, {"post_id": 5276, "ts": "2026-06-09T00:07:01Z", "hours": 0.5161, "text": "Started my own webos via guide(idk why image doesn’t work) help?? it works on index.html locally…"}]...
|
Title: Biggy OS by @LoginlikeLogan | Stardance
De Title: Biggy OS by @LoginlikeLogan | Stardance
Devlogs:
Started my own webos via guide(idk why image doesn’t work) help?? it works on index.html locally…
added stardance link, fixed image, and more text. Im struggling with this… lol
I change my theme Lets Go Knicks
We have went back to biggy cheeze Sorry for changing it! I am going to restart from scratch
I have added a draggable window for the biggy cheeze moment with a custom player
Many Things Have Been Added! Ive added a rotating joke/statement that changes everytime you reload, a clock(that will be improved), and a clock widget/window that I want to be a permenant widget. Wish me luck! here are some pictures and the progress so far!
I scrapped the ugly background and added a physical clock with a rotating joke/statement. Also added a fun loading screen
I added a custom cheese cursor that I drew!
added apps!
I added another modular window that can change backgrounds
Made A new window / app for an about me! This is probably the final devlog until the first ship. Thank you guys so much for the support and hopefully i can get to the next OS mission..
added fullscreen and a game that is animal themed. NOT MY GAME
I drew a new icon for a daily meme. How do yall like it? also my game window is soooooo broken. it stretches so weird… I need someone to design a game for me since idk how to make game. Anyone?
Ive finnaly fixed this stupid window that did not want to cooperate. I actaully suffered through this. Well, hope that some of you will like it. Also heres the progress so far: Im going to be changing meme generator to daily meme. I will be coding in python for it. Also If anyone wants to work with me to make a biggy cheeze type game, please feel free to reach out to me
I added a lot so far, i added a meme tab and a to do tab. meme tab is done but not the todo.
Ive tuned up the meme window to filter them and frame them
LOTS OF STUFF ive added a to do list with a check box so you can remind yourself what to do. Ive also added a terminal! its a work in progress but im getting there! i really want this to be a super star project so im putting in all my effort!
A super Annoying Terminal This Terminal is super annoying, spacing, css and divs are driving me crazy! Everytime i clicked on this terminal it used to break the screen… Not anymore! Finally the spacing and terminal is close to perfect. I will now be focusing on a cinematic loading screen.
A fun cinematic opening!!! I’ve ai coded me a simple opening while i added the sound for it. I hate to say but i was a little lazy on this one since i don’t really know much on animation in websites.
LOT OF NEW BIG THINGS Ive added two new windows, notes and the store. nothing can be donwloaded yet but i am currently working on that. Ive added resizing!! follow allong and this shall be a super star project!
Ive added a new app that you can download! i am currently thinking of stopping this project although it has been a blast making this project.
MY LAST DEVLOG!!! Hey guys, its been a great run! ive added a music app and a few customizable widgets but which can only be found by something you need to explore. Thank you guys so much for support!
Guys I am BACK!! So far ive been tweaking a few things like the location bug, it was supposed to popup when you clicked download for the weather app. But I guess i didn’t catch that.. Anyways Here are some new backgrounds, they’re 4k!!
Tutorial has been added! Guys Guess what? Ive made a tutorial on how to get started on the os and i have made backgrounds gif possible. The tutorial kinda gave me a bit of trouble with bugs so i took lots of time debugging. Im also working on something big….
Ive added 3 new apps!! A working browser, calculator, and paint app!!! windows were not working properly so I had to make some ajustments and fix it. Took me some time.. haha
Final Additions! Ive added a modified file of eaglercraft into the biggy os and it is now called Biggy OS
I have been working super hard and trying to fix bugs and heavily avoiding ai. But for some reason the website is breaking apart and no longer loading.
A sad devlog… so I couldn’t fix it and I had to use a bit of AI to fully debug. it turns out, the calculator app was hijacking keystrokes and I had a single broken line of code in app.js. But now it works!
Working Up to the Big Leagues… So ive made a new window called finder and It’s pretty basic so far. It was about 330 lines of js.. I will probably replace the standby/placeholder emojis with svgs so it doesn’t look out of theme!
Ships:
I made a webos based on the biggy cheese meme. I found the video player extra hard. Hopefully it meets the requirements?
I finally finished my webos and I am happy with what ive made! There was lots that i struggled with. Hopefully this can earn a super star!
So guys, Ive updated the os with mutiple new apps like the weather, music, calculator, paint, browser, and minecraft apps! Test it out!...
|
1792878595.6829658
|
1793742595.6829658
|
|
31912
|
Minecraft inventory newtab by @wiiuavi | Stardance
|
wiiuavi
|
1
|
4.26
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T18:51:55Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a minecraft themed newtab tab. Its main feature is the inventory, where you can assign each slot its own icon, bookmark, or image of choice. the recipie book contains settings and notes on useage, I would strongly advise people to clone the repo and adapt to their liking, and because it will be faster/work offline, but the req of the site include deployment. Try to add a bookmark in hotbar slot 5! hardest part of this was aligning everything as perfect as possible. PLS SHIPWRIGHTERS open the inventory, its consists of the majority of the project. IK the actual homepage itself looks dry, but my goal included clearing out shortcuts on the tab, and being able to click / to type is just such a nice mechanic.", "repo": "https://github.com/wiiuavi/InventoryTab", "demo": "https://inventory-tab.vercel.app/"}]...
|
[{"post_id": 24844, "ts": "202 [{"post_id": 24844, "ts": "2026-07-08T17:53:20Z", "hours": 1.2608, "text": "Added very buggy but somewhat working enchatment section to give icons a glint, only works with images, not autofetched favicons and some other small cases updated readme make it an extension so it works on your newTab page, and it also uses storage rather than cache if it can, to avoid you losing ur inv addin armour next"}, {"post_id": 24258, "ts": "2026-07-07T18:20:49Z", "hours": 2.8436, "text": "Finished everything. took a break from doing python proj to get this done, think it looks sick for the most part."}]...
|
Title: Minecraft inventory newtab by @wiiuavi | St Title: Minecraft inventory newtab by @wiiuavi | Stardance
Devlogs:
Finished everything. took a break from doing python proj to get this done, think it looks sick for the most part.
Added very buggy but somewhat working enchatment section to give icons a glint, only works with images, not autofetched favicons and some other small cases updated readme make it an extension so it works on your newTab page, and it also uses storage rather than cache if it can, to avoid you losing ur inv addin armour next
Ships:
I made a minecraft themed newtab tab. Its main feature is the inventory, where you can assign each slot its own icon, bookmark, or image of choice. the recipie book contains settings and notes on useage, I would strongly advise people to clone the repo and adapt to their liking, and because it will be faster/work offline, but the req of the site include deployment. Try to add a bookmark in hotbar slot 5! hardest part of this was aligning everything as perfect as possible. PLS SHIPWRIGHTERS open the inventory, its consists of the majority of the project. IK the actual homepage itself looks dry, but my goal included clearing out shortcuts on the tab, and being able to click / to type is just such a nice mechanic....
|
1792878594.8655
|
1793742594.8655
|
|
18063
|
The Family Plan by @28taidan | Stardance
|
28taidan
|
1
|
10.0
|
105
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T17:09:37Z", "hours": 10.0, "multiplier": 10.69, "payout": 105, "blessing": "neutral", "text": "The Family Plan helps manage logistics for families that have to manage driving their kids around to different extracurriculars all the time. Just put in when drivers are available, and when and where kids need to be, and it calculates the most optimal plan to get everyone where they need to be with as little time in the car as possible. I was inspired to make this project because my mom spends hours every weekend trying to come up with a plan for how to get me and my siblings to all of our various after school activities. I made this to try to simplify and speed up the process, and also include the rest of the family in that process (since they can simply put in when they are available and when they need to be picked up/dropped off). Something that was challenging was figuring out how to get the most optimal plan. I knew that it would involve getting people to spend the least amount of time in the car (adjusting for tiers, or how important a person’s time is), but it was complicated to figure out how to do that. The key realization was that you can’t decide who carpools by looking at directions on a map. Two kids heading “opposite” ways might still share a ride if one stop is on the road to the other. So instead the app asks a routing engine for real drive times and pools rides whenever the extra driving is small enough to be worth it. This breaks slightly whenever the destinations don’t have an address (since the engine I use for that, OSRM, is incomplete), since then it doesn’t have drive times. However, it works well enough for now. To use, just go to the website (hosted on Vercel), and create a new family. Add some drivers and kids, and play around with the routing system. Hopefully this is useful!", "repo": "https://github.com/Luchik28/TheFamilyPlan", "demo": "https://the-family-plan.vercel.app/"}]...
|
[{"post_id": 14477, "ts": "202 [{"post_id": 14477, "ts": "2026-06-23T16:39:32Z", "hours": 4.7769, "text": "Finished the planning logic, and some final bug fixes before shipping. The planning works by assigning tiers to each person, which prioritizes their time over other people’s time. So in case like someone really doesn’t like driving people around, you can give them a high tier and it will try to protect their time more. It then runs through all the possible plans (which is really inefficient but works, since there’s not too many possible plans), to find one that works well. I also did some bug fixes, cleaning up the UI and other things from the fixes. Some things I still might add in the future are allowing people to integrate their calendars, email/text all the per person weekly plans to people directly instead of just downloading the images, and better tracking for where each driver is (it assumes the driver starts from home, but this is unrealistic, since the driver probably goes to work or something in the middle of the day. But they wouldn’t put that in the plan, since it doesn’t have anything to do with driving their kid around), so I might try to find out how to fix that. But I want to ship it first to get feedback on the core process."}, {"post_id": 9019, "ts": "2026-06-15T01:31:30Z", "hours": 2.2608, "text": "Working on UX improvements! I fixed a bunch of bugs, for example overlapping events saying “I’m available” are combined into one, for simplicity. The idea is that each person goes in to put in their availability, so I made it that you choose a person and edit only their location/availability, so they don’t have to see stuff that’s not relevant to them (it gets greyed out). Next, I am working on the core of the project, the planning logic. The idea is to build an algorithm to find the lowest amount of total hours everyone. I think I’d probably need some kind of greedy algorithm, but I’m not sure yet."}, {"post_id": 8644, "ts": "2026-06-14T11:26:10Z", "hours": 1.9469, "text": "I did some UI improvements and bug fixes to putting down a kid’s dropoff/pickup time, and also added location data to each dropoff/pickup point using Photon and OSRM, so I can estimate the travel time and when the kid has to leave to get there on time."}, {"post_id": 8282, "ts": "2026-06-13T19:34:31Z", "hours": 0.8928, "text": "Setting up a basic calendar view, as well as Vercel. I’m using Vercel’s Neon for storage because of it’s great free tier."}]...
|
Title: The Family Plan by @28taidan | Stardance
D Title: The Family Plan by @28taidan | Stardance
Devlogs:
Setting up a basic calendar view, as well as Vercel. I’m using Vercel’s Neon for storage because of it’s great free tier.
I did some UI improvements and bug fixes to putting down a kid’s dropoff/pickup time, and also added location data to each dropoff/pickup point using Photon and OSRM, so I can estimate the travel time and when the kid has to leave to get there on time.
Working on UX improvements! I fixed a bunch of bugs, for example overlapping events saying “I’m available” are combined into one, for simplicity. The idea is that each person goes in to put in their availability, so I made it that you choose a person and edit only their location/availability, so they don’t have to see stuff that’s not relevant to them (it gets greyed out). Next, I am working on the core of the project, the planning logic. The idea is to build an algorithm to find the lowest amount of total hours everyone. I think I’d probably need some kind of greedy algorithm, but I’m not sure yet.
Finished the planning logic, and some final bug fixes before shipping. The planning works by assigning tiers to each person, which prioritizes their time over other people’s time. So in case like someone really doesn’t like driving people around, you can give them a high tier and it will try to protect their time more. It then runs through all the possible plans (which is really inefficient but works, since there’s not too many possible plans), to find one that works well. I also did some bug fixes, cleaning up the UI and other things from the fixes. Some things I still might add in the future are allowing people to integrate their calendars, email/text all the per person weekly plans to people directly instead of just downloading the images, and better tracking for where each driver is (it assumes the driver starts from home, but this is unrealistic, since the driver probably goes to work or something in the middle of the day. But they wouldn’t put that in the plan, since it doesn’t have anything to do with driving their kid around), so I might try to find out how to fix that. But I want to ship it first to get feedback on the core process.
Ships:
The Family Plan helps manage logistics for families that have to manage driving their kids around to different extracurriculars all the time. Just put in when drivers are available, and when and where kids need to be, and it calculates the most optimal plan to get everyone where they need to be with as little time in the car as possible. I was inspired to make this project because my mom spends hours every weekend trying to come up with a plan for how to get me and my siblings to all of our various after school activities. I made this to try to simplify and speed up the process, and also include the rest of the family in that process (since they can simply put in when they are available and when they need to be picked up/dropped off). Something that was challenging was figuring out how to get the most optimal plan. I knew that it would involve getting people to spend the least amount of time in the car (adjusting for tiers, or how important a person’s time is), but it was complicated to figure out how to do that. The key realization was that you can’t decide who carpools by looking at directions on a map. Two kids heading “opposite” ways might still share a ride if one stop is on the road to the other. So instead the app asks a routing engine for real drive times and pools rides whenever the extra driving is small enough to be worth it. This breaks slightly whenever the destinations don’t have an address (since the engine I use for that, OSRM, is incomplete), since then it doesn’t have drive times. However, it works well enough for now. To use, just go to the website (hosted on Vercel), and create a new family. Add some drivers and kids, and play around with the routing system. Hopefully this is useful!...
|
1792878594.033057
|
1793742594.033057
|
|
18618
|
My very own WebOS by @hazikkhalid | Stardance
|
hazikkhalid
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T16:00:36Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So this is a web-version of a OS i made in html css js and i made it for the WebOS mission, it was really great, i always wanted to make an os , i once tried in c but had to stop in between because of my exams. i am planning to take this as a inspiration and make a real linux distro out of this soon", "repo": "https://github.com/gitHazik/Myveryownos", "demo": "https://myveryownos.netlify.app/"}]...
|
[{"post_id": 10706, "ts": "202 [{"post_id": 10706, "ts": "2026-06-17T15:56:30Z", "hours": 1.1856, "text": "Finally done with adding the notepad app, and its functions"}, {"post_id": 10651, "ts": "2026-06-17T14:45:02Z", "hours": 1.3594, "text": "I added functions like opening apps and dragging them, now will work on notepad"}, {"post_id": 10592, "ts": "2026-06-17T12:34:52Z", "hours": 0.4167, "text": "So i changed the Desktop, its better now and i like it more, i am still using simple css to style it"}, {"post_id": 9912, "ts": "2026-06-16T12:47:14Z", "hours": 1.5603, "text": "Made my own custom os, did javascrit after a long time and was really fun"}]...
|
Title: My very own WebOS by @hazikkhalid | Stardan Title: My very own WebOS by @hazikkhalid | Stardance
Devlogs:
Made my own custom os, did javascrit after a long time and was really fun
So i changed the Desktop, its better now and i like it more, i am still using simple css to style it
I added functions like opening apps and dragging them, now will work on notepad
Finally done with adding the notepad app, and its functions
Ships:
So this is a web-version of a OS i made in html css js and i made it for the WebOS mission, it was really great, i always wanted to make an os , i once tried in c but had to stop in between because of my exams. i am planning to take this as a inspiration and make a real linux distro out of this soon...
|
1792878593.1957066
|
1793742593.1957066
|
|
34687
|
A HORROR GAME by @xon172694 | Stardance
|
xon172694
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T17:39:25Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Snapludo is a game that i decided to make after getting hell bored out o the normal ludo it is different and more fun ig. —you get to take a snap of yourself and your friends which will be cutted and put as you in the gameas players like a literal cut-outpick of yourself. —there is a bear who will satch your peices and then afterwards its his own choice if he wants to give it back or no soowe have that twist aswell. —the next thing is that of the snap feature randomly youll be snapped with another player and woallah the game is now a whole different thing you can go from nothing to the end or the vice-versa. —the game can back stab you or give you bonus points. —and these much of twists along with hilarious music running in the bg and the sound-effects damnnn if you are not fimiliar with dark humour please turn the soun efects of and these sound effects and mechaniced on the bases of like when you go close to the player or there is an intense catchup or youjust saved yourself by a litlle –––––––––––––––––––––––––––––––ENJOYYYYYYYYY:)", "repo": "https://github.com/xon172604-bit/sanplud", "demo": "https://xon172604-bit.itch.io/snapludowrapped"}]...
|
[{"post_id": 30736, "ts": "202 [{"post_id": 30736, "ts": "2026-07-18T15:48:15Z", "hours": 7.5672, "text": "it too hecktik to post too many devlogs so immma say everything in one rn im working on the ideation of the game, like how to make it different from the real ludo and getting the pngs and kinda workaround stuff out for pngs, 2>ilearned how to make the dice roll got the cutouts for the dice gave it a futuristic kinda look 3> Figured out the backstab and bonus and move forward manipuate kinda features that i wanted to add 4> added this panda who take peices from you sometimes and then its his choice if he wants to give back or no 5> i added this hilarious musc and sound effects when the players are too close hope you like it……"}]...
|
Title: A HORROR GAME by @xon172694 | Stardance
De Title: A HORROR GAME by @xon172694 | Stardance
Devlogs:
it too hecktik to post too many devlogs so immma say everything in one rn im working on the ideation of the game, like how to make it different from the real ludo and getting the pngs and kinda workaround stuff out for pngs, 2>ilearned how to make the dice roll got the cutouts for the dice gave it a futuristic kinda look 3> Figured out the backstab and bonus and move forward manipuate kinda features that i wanted to add 4> added this panda who take peices from you sometimes and then its his choice if he wants to give back or no 5> i added this hilarious musc and sound effects when the players are too close hope you like it……
Ships:
Snapludo is a game that i decided to make after getting hell bored out o the normal ludo it is different and more fun ig. —you get to take a snap of yourself and your friends which will be cutted and put as you in the gameas players like a literal cut-outpick of yourself. —there is a bear who will satch your peices and then afterwards its his own choice if he wants to give it back or no soowe have that twist aswell. —the next thing is that of the snap feature randomly youll be snapped with another player and woallah the game is now a whole different thing you can go from nothing to the end or the vice-versa. —the game can back stab you or give you bonus points. —and these much of twists along with hilarious music running in the bg and the sound-effects damnnn if you are not fimiliar with dark humour please turn the soun efects of and these sound effects and mechaniced on the bases of like when you go close to the player or there is an intense catchup or youjust saved yourself by a litlle –––––––––––––––––––––––––––––––ENJOYYYYYYYYY:)...
|
1792878592.3698583
|
1793742592.3698583
|
|
17309
|
Slay-OS by @Mokxsh_ | Stardance
|
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T09:46:27Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? SlayOS — a fake operating system that runs entirely in your browser. built from scratch with just HTML, CSS and vanilla JS. no frameworks, no libraries, nothing. it has draggable windows, a login screen that actually remembers you, a working terminal, notes, devlogs, a coin flip that can delete your apps if you lose, and a live ASCII camera that turns your webcam into real time text art. it got way bigger than i planned lol What was challenging? building everything without any frameworks was rough. window dragging, z-index stacking, terminal logic, localStorage persistence — all of it had to be figured out from scratch. there were so many moments where something would work and then completely break something else. the ASCII cam especially took a while to get feeling smooth and actually good looking What are you proud of? honestly the ASCII cam. it was totally unnecessary and i built it anyway and it looks so cool. also the login system — the fact that your PC name shows up in the terminal prompt is such a small thing but it makes the whole OS feel surprisingly real. proud that the whole thing runs on just three files too What should people know to test it? go to { https://mokxsh404.github.io/Slay-OS/} and first thing — try Roulette if you’re feeling brave 😭 allow camera permissions for the ASCII cam and switch between the color modes. open the terminal and type help . the whole thing is more fun to just click around and explore than to be told what to do", "repo": "https://github.com/Mokxsh404/Slay-OS", "demo": "https://mokxsh404.github.io/Slay-OS/"}]...
|
[{"post_id": 10519, "ts": "202 [{"post_id": 10519, "ts": "2026-06-17T08:29:06Z", "hours": 0.0, "text": "#Devlog 3: We are DONE. 🎉 SlayOS is finally finished. One of my favorites is the new ASCII Camera. It takes your normal webcam feed and converts it into live ASCII art using letters, numbers, and symbols like @, #, %, and more. It looks surprisingly cool and gives everything that old-school hacker terminal vibe. I also added multiple display modes, so you can switch between different ASCII styles and effects depending on how cursed you want your camera feed to look. Between the Apple-inspired UI, the Roulette app that can literally delete half your applications if you lose, and now a fully functional ASCII Camera, SlayyyOS has somehow become a real operating system! Gonna Ship It Soon!"}, {"post_id": 10495, "ts": "2026-06-17T07:33:29Z", "hours": 0.0, "text": "#Devlog 2: Slay-OS is getting dangerously close to being finished! Been adding some of the final features and probably the most ridiculous one so far is the Roulette. Here’s how it works: You spin it, and if you lose… SlayOS randomly deletes half of its own applications. That’s it. No mercy. If you win, absolutely nothing happens. Is it useful? Nope. Is it funny? Prolly. I’ve attached some screenshots below so you can see how it looks in action. At this point, most of the OS is done and I’m just polishing things up before release. It’s been really fun building this project from scratch and seeing it slowly turn into a real operating system. Let me know what you think of the Roulette feature. Would you risk your apps?"}, {"post_id": 8778, "ts": "2026-06-14T16:16:32Z", "hours": 3.5817, "text": "#Devlog 1: yo gng, this is the OS that I have started developing. I have named it SlayyyOS, i tried to give it a apple inspired theme as u may see in the image. drop ur thought about it in the comment section :)"}]...
|
Title: Slay-OS by @Mokxsh_ | Stardance
Devlogs:
# Title: Slay-OS by @Mokxsh_ | Stardance
Devlogs:
#Devlog 1: yo gng, this is the OS that I have started developing. I have named it SlayyyOS, i tried to give it a apple inspired theme as u may see in the image. drop ur thought about it in the comment section :)
#Devlog 2: Slay-OS is getting dangerously close to being finished! Been adding some of the final features and probably the most ridiculous one so far is the Roulette. Here’s how it works: You spin it, and if you lose… SlayOS randomly deletes half of its own applications. That’s it. No mercy. If you win, absolutely nothing happens. Is it useful? Nope. Is it funny? Prolly. I’ve attached some screenshots below so you can see how it looks in action. At this point, most of the OS is done and I’m just polishing things up before release. It’s been really fun building this project from scratch and seeing it slowly turn into a real operating system. Let me know what you think of the Roulette feature. Would you risk your apps?
#Devlog 3: We are DONE. 🎉 SlayOS is finally finished. One of my favorites is the new ASCII Camera. It takes your normal webcam feed and converts it into live ASCII art using letters, numbers, and symbols like @, #, %, and more. It looks surprisingly cool and gives everything that old-school hacker terminal vibe. I also added multiple display modes, so you can switch between different ASCII styles and effects depending on how cursed you want your camera feed to look. Between the Apple-inspired UI, the Roulette app that can literally delete half your applications if you lose, and now a fully functional ASCII Camera, SlayyyOS has somehow become a real operating system! Gonna Ship It Soon!
Ships:
What did you make? SlayOS — a fake operating system that runs entirely in your browser. built from scratch with just HTML, CSS and vanilla JS. no frameworks, no libraries, nothing. it has draggable windows, a login screen that actually remembers you, a working terminal, notes, devlogs, a coin flip that can delete your apps if you lose, and a live ASCII camera that turns your webcam into real time text art. it got way bigger than i planned lol What was challenging? building everything without any frameworks was rough. window dragging, z-index stacking, terminal logic, localStorage persistence — all of it had to be figured out from scratch. there were so many moments where something would work and then completely break something else. the ASCII cam especially took a while to get feeling smooth and actually good looking What are you proud of? honestly the ASCII cam. it was totally unnecessary and i built it anyway and it looks so cool. also the login system — the fact that your PC name shows up in the terminal prompt is such a small thing but it makes the whole OS feel surprisingly real. proud that the whole thing runs on just three files too What should people know to test it? go to { https://mokxsh404.github.io/Slay-OS/} and first thing — try Roulette if you’re feeling brave 😭 allow camera permissions for the ASCII cam and switch between the color modes. open the terminal and type help . the whole thing is more fun to just click around and explore than to be told what to do...
|
1792878591.5552878
|
1793742591.5552878
|
|
22807
|
Context Capsule by @DevaanshPathak | Stardance
|
DevaanshPathak
|
1
|
4.3
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-21T05:40:10Z", "hours": 4.0, "multiplier": 7.39, "payout": 30, "blessing": "neutral", "text": "I built Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to one popup click. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history. Quality-of-Life Improvements: One popup button replaces the entire copy -> switch -> format -> paste routine. Capture happens without leaving the page. Automatic clean formatting. Every capture comes out as a consistent markdown block with source link, title, and timestamp. A local history survives clipboard overwrites. If you copy something else before pasting, the capture is still one click from being back on your clipboard. Popup capture, visible status, and an install doctor make the demo path less fragile.", "repo": "https://github.com/devaanshpathak/context-capsule", "demo": "https://github.com/DevaanshPathak/context-capsule/releases/tag/v1.0.0"}]...
|
[{"post_id": 14598, "ts": "202 [{"post_id": 14598, "ts": "2026-06-23T19:21:43Z", "hours": 0.3011, "text": "Finished building context capsule, compiled the chrome extension into a crx file and put it in the GitHub releases as well."}, {"post_id": 12939, "ts": "2026-06-21T05:37:39Z", "hours": 1.4378, "text": "Final Entry: v1.0 Development Complete Development on Context Capsule v1.0 is finished. The final v1.0 build delivers that core flow: select text on a Chromium page, open the extension popup, click Capture Current Page , and paste a clean markdown block with the page title, URL, timestamp, and selected text. If no text is selected, Context Capsule uses the current clipboard as a fallback so the capture still works.The browser extension stays intentionally thin. It collects page context and talks to the local Python host through Chrome Native Messaging. Python owns the durable logic: formatting, clipboard writes, SQLite history, capsules, exports, diagnostics, and install registration. What Shipped Popup-first capture flow with no browser keyboard shortcut conflicts. Markdown, Compact, and Prompt output presets. Prompt templates for summarize, debug, explain, and notes workflows. Capture modes for smart selection, selection only, clipboard, page metadata, visible text, and readable text. Local SQLite history with re-copy, pin, delete, clear history, search, filters, tags, and projects. Multi-source capsules for collecting several captures into one AI-ready prompt. Export to Markdown or JSON for visible history, all history, or the active capsule. Diagnostics panel for recent host events and errors. First-run onboarding, demo prompt action, install guide button, and improved demo page. Cross-platform native host registration through install.py for Windows, macOS, and Linux. Release install guide in docs/install.md . Unit tests for core host, formatting, history, capsule, export, diagnostics, and native messaging framing. Branded Chromium extension icons. For now, the core product is complete: Context Capsule turns a multi-step context-sharing routine into one popup click, keeps a recoverable local history, and produces clean markdown ready for an AI chat."}, {"post_id": 12690, "ts": "2026-06-20T18:44:35Z", "hours": 2.1436, "text": "Built the following in my tool Context-Capsule: Multi-Source Capsules Use the popup’s Capsule section to collect multiple captures before pasting into an AI chat: Start : creates a new active capsule. Append Page : captures the current page and adds it to the active capsule. Copy : copies all capsule items as one combined markdown prompt. Clear : removes the active capsule. Settings The extension options page stores browser-side defaults in chrome.storage.local : default capture mode default format preset default prompt template popup history row count timestamp style auto-pin captures that use clipboard fallback Projects and Tags Use the popup Project and Tag fields before capturing. Labels are stored with history entries and capsule items, shown in entry metadata, and searchable through the project/tag filter. Export The popup Export controls copy generated export text to the clipboard: Visible : exports the currently visible filtered history rows. All : exports all saved history rows. Capsule : exports the active multi-source capsule. Format can be Markdown or JSON. Diagnostics The host stores a capped local diagnostics log for recent captures, exports, capsule actions, and errors. The popup Diagnostics section shows the latest entries so native messaging and clipboard failures are easier to debug. Onboarding The popup shows a first-run Quick Start card until dismissed. It links to the localhost demo page and reminds users about the capture/history hotkeys and doctor command. Demo Prompt The popup Demo Prompt button copies a polished prompt using the active capsule when one exists, otherwise the latest three captures. This is designed for quick hackathon demos and judge walkthroughs. Demo Page Serve demo.html through Python’s built-in local server for a controlled manual test page with selectable sample text and checklist prompts: python -m http.server 8765"}, {"post_id": 12365, "ts": "2026-06-20T05:34:43Z", "hours": 0.5161, "text": "Hey Guys, I just started a new project Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to a single hotkey. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history."}]...
|
Title: Context Capsule by @DevaanshPathak | Starda Title: Context Capsule by @DevaanshPathak | Stardance
Devlogs:
Hey Guys, I just started a new project Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to a single hotkey. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history.
Built the following in my tool Context-Capsule: Multi-Source Capsules Use the popup’s Capsule section to collect multiple captures before pasting into an AI chat: Start : creates a new active capsule. Append Page : captures the current page and adds it to the active capsule. Copy : copies all capsule items as one combined markdown prompt. Clear : removes the active capsule. Settings The extension options page stores browser-side defaults in chrome.storage.local : default capture mode default format preset default prompt template popup history row count timestamp style auto-pin captures that use clipboard fallback Projects and Tags Use the popup Project and Tag fields before capturing. Labels are stored with history entries and capsule items, shown in entry metadata, and searchable through the project/tag filter. Export The popup Export controls copy generated export text to the clipboard: Visible : exports the currently visible filtered history rows. All : exports all saved history rows. Capsule : exports the active multi-source capsule. Format can be Markdown or JSON. Diagnostics The host stores a capped local diagnostics log for recent captures, exports, capsule actions, and errors. The popup Diagnostics section shows the latest entries so native messaging and clipboard failures are easier to debug. Onboarding The popup shows a first-run Quick Start card until dismissed. It links to the localhost demo page and reminds users about the capture/history hotkeys and doctor command. Demo Prompt The popup Demo Prompt button copies a polished prompt using the active capsule when one exists, otherwise the latest three captures. This is designed for quick hackathon demos and judge walkthroughs. Demo Page Serve demo.html through Python’s built-in local server for a controlled manual test page with selectable sample text and checklist prompts: python -m http.server 8765
Final Entry: v1.0 Development Complete Development on Context Capsule v1.0 is finished. The final v1.0 build delivers that core flow: select text on a Chromium page, open the extension popup, click Capture Current Page , and paste a clean markdown block with the page title, URL, timestamp, and selected text. If no text is selected, Context Capsule uses the current clipboard as a fallback so the capture still works.The browser extension stays intentionally thin. It collects page context and talks to the local Python host through Chrome Native Messaging. Python owns the durable logic: formatting, clipboard writes, SQLite history, capsules, exports, diagnostics, and install registration. What Shipped Popup-first capture flow with no browser keyboard shortcut conflicts. Markdown, Compact, and Prompt output presets. Prompt templates for summarize, debug, explain, and notes workflows. Capture modes for smart selection, selection only, clipboard, page metadata, visible text, and readable text. Local SQLite history with re-copy, pin, delete, clear history, search, filters, tags, and projects. Multi-source capsules for collecting several captures into one AI-ready prompt. Export to Markdown or JSON for visible history, all history, or the active capsule. Diagnostics panel for recent host events and errors. First-run onboarding, demo prompt action, install guide button, and improved demo page. Cross-platform native host registration through install.py for Windows, macOS, and Linux. Release install guide in docs/install.md . Unit tests for core host, formatting, history, capsule, export, diagnostics, and native messaging framing. Branded Chromium extension icons. For now, the core product is complete: Context Capsule turns a multi-step context-sharing routine into one popup click, keeps a recoverable local history, and produces clean markdown ready for an AI chat.
Finished building context capsule, compiled the chrome extension into a crx file and put it in the GitHub releases as well.
Ships:
I built Context Capsule. Context Capsule cuts the “share what I’m looking at with an AI” routine from a 5-6 step manual dance down to one popup click. When you’re debugging, researching, or working with an AI assistant, you constantly need to hand it context: which page you were on, what part of it matters, plus whatever you’d already copied. Right now that means selecting text, copying it, switching to your chat window, pasting it, going back to grab the URL, and then cleaning everything into a readable shape. If you accidentally copy something else before you paste, the original context is gone and you have to redo the whole thing. Context Capsule captures the active Chromium page URL, title, selected text, and a clipboard fallback, formats it as markdown, copies it to your clipboard, and keeps a small local SQLite history. Quality-of-Life Improvements: One popup button replaces the entire copy -> switch -> format -> paste routine. Capture happens without leaving the page. Automatic clean formatting. Every capture comes out as a consistent markdown block with source link, title, and timestamp. A local history survives clipboard overwrites. If you copy something else before pasting, the capture is still one click from being back on your clipboard. Popup capture, visible status, and an install doctor make the demo path less fragile....
|
1792878590.7185051
|
1793742590.7185051
|
|
51767
|
Friction less by @jinjin | Stardance
|
jinjin
|
1
|
128.53
|
110
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T12:30:11Z", "hours": 39.0, "multiplier": 3.55, "payout": 110, "blessing": "neutral", "text": "I built TidyPaste, a client-side web workbench designed to clean messy text, reformat data structures, and track session productivity - all inside a single browser tab.", "repo": "https://github.com/jinjintt89-cmyk/Friction-less-copy-and-paste", "demo": "https://copyandpaste2.vercel.app/"}]...
|
[{"post_id": 65982, "ts": "202 [{"post_id": 65982, "ts": "2026-09-11T14:14:33Z", "hours": 4.6333, "text": "Polishing the Desktop VersionI’ve continued working on the desktop version of Frictionless and focused on making it feel more like a proper standalone application.A big part of this work has been testing the Mac build, fixing issues that appeared during packaging, and making sure the desktop version still has the same core functionality as the web version.I also spent time improving the overall reliability of the project after moving more of the code into the Electron setup. This included checking that the app opens correctly, that the different tools continue to work, and that the project can still be built and packaged when changes are made.The desktop version is getting much closer to feeling like a complete second version of Frictionless rather than just a website running inside a window.What I worked onTested the Mac desktop buildImproved Electron integrationChecked existing Frictionless toolsFixed packaging-related issuesImproved desktop reliabilityContinued preparing the app for distributionKept the web and desktop versions working together"}, {"post_id": 65868, "ts": "2026-09-11T09:28:32Z", "hours": 9.1667, "text": "Fixing the Mac App and Improving DistributionI’ve been continuing work on the desktop version of Frictionless and focusing on making the Mac app easier to distribute.After successfully building the Electron version, I ran into an issue where macOS showed a “damaged” message when the app was downloaded. I investigated the problem and found that it was related to macOS security and the app being unsigned.I’ve now been working on ad-hoc signing the application and testing the build again. This has been useful because it showed me that building an application and actually distributing it are two different challenges.I also made sure the desktop-app changes were properly pushed to the Frictionless GitHub repository, so the project now contains both the original web version and the Electron desktop version.The main focus right now is making the desktop version as reliable as the web version while keeping the project simple and easy to access.What I worked onInvestigated the macOS “damaged app” issueTested ad-hoc code signingContinued improving the Electron buildPushed the desktop-app code to GitHubWorked on making the Mac version easier to distributeKept the web version available as an alternative"}, {"post_id": 65613, "ts": "2026-09-10T21:07:53Z", "hours": 9.8333, "text": "Making Frictionless a Desktop AppI’ve been working on turning Frictionless into more than just a web app by creating a proper desktop version for macOS.I set up Electron and Electron Forge to package the existing Frictionless code into a standalone Mac application. The app now runs in its own window and keeps the same tools and features from the web version.I also configured the project for Apple Silicon Macs and successfully built the application into a distributable .zip file. I connected all of the new Electron files to the GitHub repository as well, so the desktop version is now part of the main project.One issue I ran into was macOS showing a “damaged” warning when opening the downloaded application. After investigating, I found that this is related to macOS security checks for unsigned applications rather than the app itself being broken. I’m now testing ad-hoc signing while keeping the web version available as the easiest way to use Frictionless.This was a big milestone for the project because Frictionless can now work as both a web application and a standalone desktop application.What I worked onAdded ElectronAdded Electron ForgeCreated the desktop app windowBuilt an Apple Silicon Mac versionCreated a distributable ZIPAdded the desktop files to GitHubTested macOS app signingKept the web version working alongside the desktop version"}, {"post_id": 65305, "ts": "2026-09-10T11:16:42Z", "hours": 8.9792, "text": "Turning Frictionless Into a Desktop AppI’ve been working on taking Frictionless beyond just being a web app and turning it into a proper desktop application.I used Electron to package the existing HTML, CSS, and JavaScript version into a native-style macOS app. This means Frictionless can now run in its own window instead of requiring a browser tab.I also set up Electron Forge so the project can be packaged into a distributable Mac application. The app successfully builds for Apple Silicon, which means it works with Macs using Apple Silicon processors.I connected the desktop version back to the same GitHub repository as the web version, so both versions can continue to be developed together.I also spent some time dealing with macOS security and app signing. The app itself was working, but macOS can show a “damaged” warning for unsigned applications downloaded from the internet. I’m now testing free ad-hoc signing for local use while keeping the web version available as the easiest way to try Frictionless.This is a pretty big step for the project because Frictionless is no longer just a simple website. It can now exist as both a web tool and a standalone desktop application.What I addedElectron desktop appmacOS Apple Silicon buildElectron Forge packagingDesktop app entry pointGitHub integration for the desktop sourcemacOS signing testingKept the original web version workingThe goal is to make Frictionless feel like a real, complete tool that can be used wherever it is most convenient."}, {"post_id": 65091, "ts": "2026-09-09T23:47:56Z", "hours": 8.4333, "text": "Connecting Everything TogetherToday I spent around 8 hours and 50 minutes working on Frictionless and connecting the new tools together more smoothly.With the number of features growing, I focused on making sure everything still feels like one application instead of a collection of separate tools. I cleaned up interactions between the different text tools, improved how results are displayed, and fixed smaller issues I found while testing everything.I also spent time testing different types of input, including messy text, repeated lines, formatted data, and larger pieces of content. This helped me find and fix a few edge cases that weren’t obvious when testing with simple examples.The project is getting much closer to the version I want to ship. At this point I’m focusing less on just adding features and more on making sure the features I already built actually feel polished and useful."}, {"post_id": 64807, "ts": "2026-09-09T14:14:11Z", "hours": 5.6, "text": "Expanding FrictionlessToday I worked on expanding Frictionless from a simple text-cleaning tool into a much more complete text and data workbench.I added a bunch of new tools for different situations, including duplicate line removal, sorting, case conversion, text statistics, JSON formatting and validation, CSV tools, Markdown tools, and Diff/Compare.I also worked on features like Undo/Redo and Saved Presets so users can perform multiple transformations without worrying about losing their original text, and save workflows they use regularly.The main goal with these changes was to make Frictionless something that could actually be useful in everyday projects instead of only being a basic copy-and-paste cleaner.There is still plenty I want to polish, but the project is starting to feel much more like a complete productivity tool."}, {"post_id": 64679, "ts": "2026-09-09T08:36:55Z", "hours": 8.3781, "text": "Today I worked on adding a proper Find & Replace feature to Frictionless.The goal was to make it easier to quickly change specific words or phrases without having to manually search through a large amount of text. I added separate find and replace inputs, along with options that give more control over how searches work.I also made sure the feature fits into the existing workflow instead of feeling like a separate tool. Users can search through their text, see how many matches were found, and replace individual matches or all matching text at once.This is one of the bigger improvements I’ve made recently because it makes Frictionless more useful for actually working with messy or repetitive text, rather than only cleaning and converting it."}, {"post_id": 64458, "ts": "2026-09-08T21:13:08Z", "hours": 11.2139, "text": "Today I spent some time improving a few smaller parts of Frictionless that aren’t necessarily big features, but make the app nicer to use.I adjusted some of the interactions around the text tools so they give clearer feedback when an action is completed. I also cleaned up a few small inconsistencies between different buttons and controls.These changes were mostly about the little details. Frictionless has quite a few different tools now, so making sure everything behaves consistently is becoming more important as the project grows.Nothing huge was added today, but the overall experience feels a bit more polished and predictable."}, {"post_id": 64116, "ts": "2026-09-08T09:52:57Z", "hours": 4.1708, "text": "Timer & Calendar Improvements Today I worked on two parts of Frictionless: the timer and the calendar. I added a timer so I can keep track of how long I’m spending on a task while working in the app. I also went through the calendar and fixed several issues with how it behaved and displayed information. The calendar needed some extra attention because small problems with dates and interactions made it less reliable to use. I cleaned those areas up and made the experience smoother. These features aren’t the main text-cleaning tools, but they fit the idea of Frictionless being a small productivity workbench rather than just a place to paste and format text. There are still some improvements I’d like to make, but both features are now working much more reliably."}, {"post_id": 63902, "ts": "2026-09-07T22:47:41Z", "hours": 10.9, "text": "Timer & Calendar Improvements Today I added a timer to the project to make it more useful and interactive. I also spent some time fixing issues with the calendar and making sure it works properly. The timer should make it easier to keep track of time while using the app, while the calendar fixes should make scheduling and viewing events smoother. There are still a few things I want to improve, but the core features are now working much better."}, {"post_id": 63495, "ts": "2026-09-07T11:51:38Z", "hours": 6.5144, "text": "Background & Calendar Improvements Today I added a green background to give the UI a cleaner and more consistent look. I also continued working on the calendar, making improvements to how it looks and functions. These changes help make the project feel more polished and easier to use. I’m happy with how the new background fits with the rest of the interface, and I’ll keep improving the calendar as I work on the project."}, {"post_id": 61875, "ts": "2026-09-05T01:06:44Z", "hours": 1.7117, "text": "Code Improvements Today I worked on improving and cleaning up the code to make it more organised and easier to understand. I went through different parts of the project, made some sections simpler, and fixed small issues along the way. The goal was to make the code feel more natural and readable while keeping everything working properly. This should also make it easier to continue adding features and fixing bugs in the future."}, {"post_id": 52825, "ts": "2026-08-23T05:39:34Z", "hours": 5.8, "text": "Today I spent a long session finishing up the main parts of Frictionless. I worked through the remaining code, fixed issues as I found them, and made sure the different parts of the project were working together properly. A lot of the work was focused on getting everything into a usable state rather than adding one specific feature. I went back through parts that weren’t quite working as expected and cleaned them up. This was a big step toward getting the project ready to use properly, and it gave me a much better base to build the next features on."}, {"post_id": 52691, "ts": "2026-08-22T23:34:53Z", "hours": 12.1053, "text": "Today I continued working on the main code for Frictionless. I ran into an error that stopped part of the project from working correctly, so I spent time tracking down what was causing it and fixing the problem. After getting it working again, I tested the affected parts to make sure the fix didn’t break anything else. I also made a few small adjustments while going through the code. This was mainly a debugging session, but fixing these problems helped make the project more stable and gave me a better understanding of how the different parts of the app connect."}, {"post_id": 52254, "ts": "2026-08-22T10:59:09Z", "hours": 5.1794, "text": "Today I continued building Frictionless and spent most of the session working through the code and debugging issues as they came up. I tested different parts of the project while developing and fixed problems that were preventing certain features from working properly. I also made small changes to improve how the different parts of the app worked together. Most of the progress today came from fixing problems rather than adding a single large feature. Each issue I solved made the project more stable and brought it closer to being a complete, usable workbench."}, {"post_id": 52008, "ts": "2026-08-22T01:13:23Z", "hours": 15.5908, "text": "Today I continued building the core of Frictionless, focusing on writing and connecting the main parts of the application. I worked through the structure of the project and started putting the different features together so they could work as one consistent experience. Along the way, I tested what I had built and made adjustments where things weren’t working as expected. At this stage, I was mainly focused on getting a solid foundation in place. This gave me something reliable to build on as I started adding more features and improving the overall UI."}]...
|
Title: Friction less by @jinjin | Stardance
Devlo Title: Friction less by @jinjin | Stardance
Devlogs:
Today I continued building the core of Frictionless, focusing on writing and connecting the main parts of the application. I worked through the structure of the project and started putting the different features together so they could work as one consistent experience. Along the way, I tested what I had built and made adjustments where things weren’t working as expected. At this stage, I was mainly focused on getting a solid foundation in place. This gave me something reliable to build on as I started adding more features and improving the overall UI.
Today I continued building Frictionless and spent most of the session working through the code and debugging issues as they came up. I tested different parts of the project while developing and fixed problems that were preventing certain features from working properly. I also made small changes to improve how the different parts of the app worked together. Most of the progress today came from fixing problems rather than adding a single large feature. Each issue I solved made the project more stable and brought it closer to being a complete, usable workbench.
Today I continued working on the main code for Frictionless. I ran into an error that stopped part of the project from working correctly, so I spent time tracking down what was causing it and fixing the problem. After getting it working again, I tested the affected parts to make sure the fix didn’t break anything else. I also made a few small adjustments while going through the code. This was mainly a debugging session, but fixing these problems helped make the project more stable and gave me a better understanding of how the different parts of the app connect.
Today I spent a long session finishing up the main parts of Frictionless. I worked through the remaining code, fixed issues as I found them, and made sure the different parts of the project were working together properly. A lot of the work was focused on getting everything into a usable state rather than adding one specific feature. I went back through parts that weren’t quite working as expected and cleaned them up. This was a big step toward getting the project ready to use properly, and it gave me a much better base to build the next features on.
Code Improvements Today I worked on improving and cleaning up the code to make it more organised and easier to understand. I went through different parts of the project, made some sections simpler, and fixed small issues along the way. The goal was to make the code feel more natural and readable while keeping everything working properly. This should also make it easier to continue adding features and fixing bugs in the future.
Background & Calendar Improvements Today I added a green background to give the UI a cleaner and more consistent look. I also continued working on the calendar, making improvements to how it looks and functions. These changes help make the project feel more polished and easier to use. I’m happy with how the new background fits with the rest of the interface, and I’ll keep improving the calendar as I work on the project.
Timer & Calendar Improvements Today I added a timer to the project to make it more useful and interactive. I also spent some time fixing issues with the calendar and making sure it works properly. The timer should make it easier to keep track of time while using the app, while the calendar fixes should make scheduling and viewing events smoother. There are still a few things I want to improve, but the core features are now working much better.
Timer & Calendar Improvements Today I worked on two parts of Frictionless: the timer and the calendar. I added a timer so I can keep track of how long I’m spending on a task while working in the app. I also went through the calendar and fixed several issues with how it behaved and displayed information. The calendar needed some extra attention because small problems with dates and interactions made it less reliable to use. I cleaned those areas up and made the experience smoother. These features aren’t the main text-cleaning tools, but they fit the idea of Frictionless being a small productivity workbench rather than just a place to paste and format text. There are still some improvements I’d like to make, but both features are now working much more reliably.
Today I spent some time improving a few smaller parts of Frictionless that aren’t necessarily big features, but make the app nicer to use.I adjusted some of the interactions around the text tools so they give clearer feedback when an action is completed. I also cleaned up a few small inconsistencies between different buttons and controls.These changes were mostly about the little details. Frictionless has quite a few different tools now, so making sure everything behaves consistently is becoming more important as the project grows.Nothing huge was added today, but the overall experience feels a bit more polished and predictable.
Today I worked on adding a proper Find & Replace feature to Frictionless.The goal was to make it easier to quickly change specific words or phrases without having to manually search through a large amount of text. I added separate find and replace inputs, along with options that give more control over how searches work.I also made sure the feature fits into the existing workflow instead of feeling like a separate tool. Users can search through their text, see how many matches were found, and replace individual matches or all matching text at once.This is one of the bigger improvements I’ve made recently because it makes Frictionless more useful for actually working with messy or repetitive text, rather than only cleaning and converting it.
Expanding FrictionlessToday I worked on expanding Frictionless from a simple text-cleaning tool into a much more complete text and data workbench.I added a bunch of new tools for different situations, including duplicate line removal, sorting, case conversion, text statistics, JSON formatting and validation, CSV tools, Markdown tools, and Diff/Compare.I also worked on features like Undo/Redo and Saved Presets so users can perform multiple transformations without worrying about losing their original text, and save workflows they use regularly.The main goal with these changes was to make Frictionless something that could actually be useful in everyday projects instead of only being a basic copy-and-paste cleaner.There is still plenty I want to polish, but the project is starting to feel much more like a complete productivity tool.
Connecting Everything TogetherToday I spent around 8 hours and 50 minutes working on Frictionless and connecting the new tools together more smoothly.With the number of features growing, I focused on making sure everything still feels like one application instead of a collection of separate tools. I cleaned up interactions between the different text tools, improved how results are displayed, and fixed smaller issues I found while testing everything.I also spent time testing different types of input, including messy text, repeated lines, formatted data, and larger pieces of content. This helped me find and fix a few edge cases that weren’t obvious when testing with simple examples.The project is getting much closer to the version I want to ship. At this point I’m focusing less on just adding features and more on making sure the features I already built actually feel polished and useful.
Turning Frictionless Into a Desktop AppI’ve been working on taking Frictionless beyond just being a web app and turning it into a proper desktop application.I used Electron to package the existing HTML, CSS, and JavaScript version into a native-style macOS app. This means Frictionless can now run in its own window instead of requiring a browser tab.I also set up Electron Forge so the project can be packaged into a distributable Mac application. The app successfully builds for Apple Silicon, which means it works with Macs using Apple Silicon processors.I connected the desktop version back to the same GitHub repository as the web version, so both versions can continue to be developed together.I also spent some time dealing with macOS security and app signing. The app itself was working, but macOS can show a “damaged” warning for unsigned applications downloaded from the internet. I’m now testing free ad-hoc signing for local use while keeping the web version available as the easiest way to try Frictionless.This is a pretty big step for the project because Frictionless is no longer just a simple website. It can now exist as both a web tool and a standalone desktop application.What I addedElectron desktop appmacOS Apple Silicon buildElectron Forge packagingDesktop app entry pointGitHub integration for the desktop sourcemacOS signing testingKept the original web version workingThe goal is to make Frictionless feel like a real, complete tool that can be used wherever it is most convenient.
Making Frictionless a Desktop AppI’ve been working on turning Frictionless into more than just a web app by creating a proper desktop version for macOS.I set up Electron and Electron Forge to package the existing Frictionless code into a standalone Mac application. The app now runs in its own window and keeps the same tools and features from the web version.I also configured the project for Apple Silicon Macs and successfully built the application into a distributable .zip file. I connected all of the new Electron files to the GitHub repository as well, so the desktop version is now part of the main project.One issue I ran into was macOS showing a “damaged” warning when opening the downloaded application. After investigating, I found that this is related to macOS security checks for unsigned applications rather than the app itself being broken. I’m now testing ad-hoc signing while keeping the web version available as the easiest way to use Frictionless.This was a big milestone for the project because Frictionless can now work as both a web application and a standalone desktop application.What I worked onAdded ElectronAdded Electron ForgeCreated the desktop app windowBuilt an Apple Silicon Mac versionCreated a distributable ZIPAdded the desktop files to GitHubTested macOS app signingKept the web version working alongside the desktop version
Fixing the Mac App and Improving DistributionI’ve been continuing work on the desktop version of Frictionless and focusing on making the Mac app easier to distribute.After successfully building the Electron version, I ran into an issue where macOS showed a “damaged” message when the app was downloaded. I investigated the problem and found that it was related to macOS security and the app being unsigned.I’ve now been working on ad-hoc signing the application and testing the build again. This has been useful because it showed me that building an application and actually distributing it are two different challenges.I also made sure the desktop-app changes were properly pushed to the Frictionless GitHub repository, so the project now contains both the original web version and the Electron desktop version.The main focus right now is making the desktop version as reliable as the web version while keeping the project simple and easy to access.What I worked onInvestigated the macOS “damaged app” issueTested ad-hoc code signingContinued improving the Electron buildPushed the desktop-app code to GitHubWorked on making the Mac version easier to distributeKept the web version available as an alternative
Polishing the Desktop VersionI’ve continued working on the desktop version of Frictionless and focused on making it feel more like a proper standalone application.A big part of this work has been testing the Mac build, fixing issues that appeared during packaging, and making sure the desktop version still has the same core functionality as the web version.I also spent time improving the overall reliability of the project after moving more of the code into the Electron setup. This included checking that the app opens correctly, that the different tools continue to work, and that the project can still be built and packaged when changes are made.The desktop version is getting much closer to feeling like a complete second version of Frictionless rather than just a website running inside a window.What I worked onTested the Mac desktop buildImproved Electron integrationChecked existing Frictionless toolsFixed packaging-related issuesImproved desktop reliabilityContinued preparing the app for distributionKept the web and desktop versions working together
Ships:
I built TidyPaste, a client-side web workbench designed to clean messy text, reformat data structures, and track session productivity - all inside a single browser tab....
|
1792878589.8854256
|
1793742589.8854256
|
|
49194
|
Echo by @XDabXking | Stardance
|
XDabXking
|
2
|
13.62
|
118
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T05:53:19Z", "hours": 3.0, "multiplier": 14.99, "payout": 47, "blessing": "neutral", "text": "I trying to get my 3h of coding worth so ya I already shipped the code and ya go check it out", "repo": "https://github.com/madhavsingla2013-dev/Echo", "demo": "https://echo-gameplatform.netlify.app/"}, {"ship_num": 2, "ts": "2026-08-19T13:16:26Z", "hours": 7.0, "multiplier": 10.72, "payout": 71, "blessing": "neutral", "text": "FINISHED THE CODING, finally fixed the movable platform bug, customization, 30 levels + tutorial… and ya", "repo": "https://github.com/madhavsingla2013-dev/Echo", "demo": "https://echo-gameplatform.netlify.app/"}]...
|
[{"post_id": 65289, "ts": "202 [{"post_id": 65289, "ts": "2026-09-10T10:08:29Z", "hours": 0.4, "text": "QUICK QUESTION, Does anyone have any ideas for new level bc im gonna back the boss level 50 and i only made like 35 so need 15 more. https://forms.gle/PKT7rTeT9SxwZBNk8"}, {"post_id": 65281, "ts": "2026-09-10T09:33:20Z", "hours": 2.2119, "text": "Im working on a basic boss level, gonna try to make it a bit harder and make the boss like the Undertale flower boss and red ball 2 boss combined"}, {"post_id": 64971, "ts": "2026-09-09T18:33:55Z", "hours": 0.36, "text": "I addded few more items and a boss level im working on"}, {"post_id": 64751, "ts": "2026-09-09T12:01:15Z", "hours": 0.6447, "text": "im working on a shop and coin algorithm, so say tuned"}, {"post_id": 58679, "ts": "2026-08-31T05:51:37Z", "hours": 3.1256, "text": "I have 3h for a project i have not touched in a week"}, {"post_id": 50282, "ts": "2026-08-19T13:15:05Z", "hours": 2.5583, "text": "I finally fixed the bug, Added 15 levels and a end screen"}, {"post_id": 49812, "ts": "2026-08-18T19:12:36Z", "hours": 0.6017, "text": "I CANT DO THIS, Can sm1 please help me fix the platform bug in my game.. The core issue comes down to a deterministic drift between frame based playback and time based math, but idk how to fix it"}, {"post_id": 49475, "ts": "2026-08-18T10:33:15Z", "hours": 1.8642, "text": "15 levels + tutorial but need to fix a bug with the platforms, also gonna add more customization"}, {"post_id": 49410, "ts": "2026-08-18T07:08:18Z", "hours": 1.3475, "text": "I am working on fixing bugs with the platform smother movement and more levels"}, {"post_id": 48840, "ts": "2026-08-17T11:59:50Z", "hours": 0.2506, "text": "im working on a game called echo"}]...
|
Title: Echo by @XDabXking | Stardance
Devlogs:
im Title: Echo by @XDabXking | Stardance
Devlogs:
im working on a game called echo
I am working on fixing bugs with the platform smother movement and more levels
15 levels + tutorial but need to fix a bug with the platforms, also gonna add more customization
I CANT DO THIS, Can sm1 please help me fix the platform bug in my game.. The core issue comes down to a deterministic drift between frame based playback and time based math, but idk how to fix it
I finally fixed the bug, Added 15 levels and a end screen
I have 3h for a project i have not touched in a week
im working on a shop and coin algorithm, so say tuned
I addded few more items and a boss level im working on
Im working on a basic boss level, gonna try to make it a bit harder and make the boss like the Undertale flower boss and red ball 2 boss combined
QUICK QUESTION, Does anyone have any ideas for new level bc im gonna back the boss level 50 and i only made like 35 so need 15 more. https://forms.gle/PKT7rTeT9SxwZBNk8
Ships:
FINISHED THE CODING, finally fixed the movable platform bug, customization, 30 levels + tutorial… and ya
I trying to get my 3h of coding worth so ya I already shipped the code and ya go check it out...
|
1792878589.0444999
|
1793742589.0444999
|
|
51727
|
web with plush by @mabu | Stardance
|
mabu
|
3
|
12.0
|
51
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T14:01:05Z", "hours": 3.0, "multiplier": 3.64, "payout": 13, "blessing": "neutral", "text": "HI everyone I wanted to build a web that looks good and is aesthetic So based on the previous ship and after reading all the feedback i decided to add some features and fix the bugs with read me and the code New features : customizable wallpaper rotate wallpaper Fixed read me made the backround more bighter I hope u like the new features and i will keep improving this project I HOPE U GUYS LIKE THIS BYE AND GLL", "repo": "https://github.com/mabu100/web-with-plush", "demo": "https://mabu100.github.io/web-with-plush/"}, {"ship_num": 2, "ts": "2026-08-21T17:35:14Z", "hours": 4.0, "multiplier": 10.55, "payout": 38, "blessing": "neutral", "text": "I fixed some of the old bugs and then i added a new feactures when ur trying out the web try to move the widgets and replace with the other widgets and sorry i am a geek so i added anime to this also i just love anime so much I hope everyone likes this", "repo": "https://github.com/mabu100/web-with-plush", "demo": "https://mabu100.github.io/web-with-plush/"}, {"ship_num": 3, "ts": "2026-08-20T13:01:00Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built a personalized, minimalist New Tab dashboard featuring a clean digital clock, a quick-search bar, my fav apps, notes and top 5 anime cuase i love anime and this might be my last project idk", "repo": "https://github.com/mabu100/web-with-plush", "demo": "https://mabu100.github.io/web-with-plush/"}]...
|
[{"post_id": 55027, "ts": "202 [{"post_id": 55027, "ts": "2026-08-26T13:37:46Z", "hours": 1.8744, "text": "HI everyone I added some cool new backgrounds with u can change and u can even add ur own wallpaper"}, {"post_id": 54575, "ts": "2026-08-25T16:29:16Z", "hours": 1.5919, "text": "Hey everyone based on the feedback from the previous ship : I have decide to add some new features like u can add ur coustum wallpaper and rotate through some wallpapers and i am trying to improve some old features that people said needed improvement"}, {"post_id": 51811, "ts": "2026-08-21T17:31:52Z", "hours": 3.6111, "text": "I was working on this new feature where u can move it and replace the place with other widgets and i fixed some of the bugs i hope u guys like it"}, {"post_id": 50952, "ts": "2026-08-20T12:53:33Z", "hours": 1.6931, "text": "I worked on building a personalized, aesthetic, and functional custom New Tab i think it looks good but i will make it better when i have more time"}, {"post_id": 50876, "ts": "2026-08-20T10:27:10Z", "hours": 3.5464, "text": "I am trying to make a minimalist web and i have added real time Clock some pinned apps that i use frequently and web Search"}]...
|
Title: web with plush by @mabu | Stardance
Devlog Title: web with plush by @mabu | Stardance
Devlogs:
I am trying to make a minimalist web and i have added real time Clock some pinned apps that i use frequently and web Search
I worked on building a personalized, aesthetic, and functional custom New Tab i think it looks good but i will make it better when i have more time
I was working on this new feature where u can move it and replace the place with other widgets and i fixed some of the bugs i hope u guys like it
Hey everyone based on the feedback from the previous ship : I have decide to add some new features like u can add ur coustum wallpaper and rotate through some wallpapers and i am trying to improve some old features that people said needed improvement
HI everyone I added some cool new backgrounds with u can change and u can even add ur own wallpaper
Ships:
Built a personalized, minimalist New Tab dashboard featuring a clean digital clock, a quick-search bar, my fav apps, notes and top 5 anime cuase i love anime and this might be my last project idk
I fixed some of the old bugs and then i added a new feactures when ur trying out the web try to move the widgets and replace with the other widgets and sorry i am a geek so i added anime to this also i just love anime so much I hope everyone likes this
HI everyone I wanted to build a web that looks good and is aesthetic So based on the previous ship and after reading all the feedback i decided to add some features and fix the bugs with read me and the code New features : customizable wallpaper rotate wallpaper Fixed read me made the backround more bighter I hope u like the new features and i will keep improving this project I HOPE U GUYS LIKE THIS BYE AND GLL...
|
1792878588.2204163
|
1793742588.2204163
|
|
31155
|
New Tab w/ Notetaking by @sidmaji | Stardance
|
sidmaji
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T04:31:43Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A custom new tab page that fetches an astronomical image from the NASA API and has a simple markdown editing box with a preview toggle.", "repo": "https://github.com/sidmaji/nasa-page", "demo": "https://sidmaji.github.io/nasa-page"}]...
|
[{"post_id": 23933, "ts": "202 [{"post_id": 23933, "ts": "2026-07-07T04:29:00Z", "hours": 0.9153, "text": "I added a notetaking feature. It uses the marked package to parse markdown. I added a simple toggle between editing and preview mode."}, {"post_id": 23867, "ts": "2026-07-07T01:48:35Z", "hours": 0.4444, "text": "I’ve completed the first version of my new tab website. I followed the guide in the mission, and it worked perfectly."}]...
|
Title: New Tab w/ Notetaking by @sidmaji | Stardan Title: New Tab w/ Notetaking by @sidmaji | Stardance
Devlogs:
I’ve completed the first version of my new tab website. I followed the guide in the mission, and it worked perfectly.
I added a notetaking feature. It uses the marked package to parse markdown. I added a simple toggle between editing and preview mode.
Ships:
A custom new tab page that fetches an astronomical image from the NASA API and has a simple markdown editing box with a preview toggle....
|
1792878587.4081447
|
1793742587.4081447
|
|
54328
|
StarScroll by @vaiskiainen | Stardance
|
vaiskiainen
|
1
|
33.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T16:20:27Z", "hours": 33.0, "multiplier": 19.91, "payout": 0, "blessing": "neutral", "text": "⭐ StarScroll StarScroll is an app that lets you doomscroll Stardance projects and devlogs in a vertical feed. The data comes from Stardance stats API I spent so much time on this and am really proud of how this turned out. Features: Infinite scrolling Comments Profile pages Project pages Search Descriptions And a bunch of other stuff… P.S. An Android app is coming in a future ship 😉", "repo": "https://github.com/Vaiskiainen/starscroll", "demo": "https://starscroll.vaiskiainen.fi/"}]...
|
[{"post_id": 63082, "ts": "202 [{"post_id": 63082, "ts": "2026-09-06T17:51:18Z", "hours": 10.5175, "text": "StarScroll devlog #5 Hi again! I’m basically done making a web app that lets you doomscroll stardance! Recently I have been working on QOL, UI updates and bug fixes. The app should be ready to be shipped in a few days. Stuff I recently did: Descriptions UI updates Other random updates Many technical changes and optimizations"}, {"post_id": 61023, "ts": "2026-09-03T18:38:32Z", "hours": 7.1869, "text": "StarScroll devlog #4 Hello, hello! It’s now day 7 (I think) of building a web app that lets you doomscroll Stardance! Recently I have been working mostly on little QOL updates but also some bigger ones. All the app really needs rn is just some polish. I’m hoping it will be good to go in a couple of days Here’s a list of features I have added; A sidebar Project pages (look a little goofy rn) Search (also pretty bad currently) Better Stardance branding (some images and other stuff) Settings"}, {"post_id": 59605, "ts": "2026-09-01T14:54:54Z", "hours": 6.605, "text": "StarScroll devlog #3 Hi agaaiinn! Big updates this time. It’s day 5 of working on a web app that lets you doomscroll Stardance! I have recently been spending a lot of my free time working on this and I’m really proud of what it has become. Anyways here’s the fetures I recently added: More Stardance branding Bigger media display Media carousels Comments Support for videos Down / up arrows Latest, popular, random select. Switching between devlogs and projects. And other little tweaks"}, {"post_id": 57909, "ts": "2026-08-30T07:32:53Z", "hours": 3.3136, "text": "StarScroll devlog #2 Hellooo again. It’s day 3 of working on a web application that lets you doomscroll Stardance! I want to start this devlog by thanking MIXID_MBB for making the Stardance stats API since that is what I will be using for this project. Here’s a list of features currently implemented: The base app (with infinite scrolling) Like and comment display Description, creator, etc."}, {"post_id": 56756, "ts": "2026-08-28T17:16:48Z", "hours": 4.99, "text": "StarScroll Devlog #1 Helllooo everyone! It’s time for a new project. I have recently been working on this web app that lets you doomscroll Stardance projects and devlogs in a vertical feed. I am making it with React and TypeScript and even planning on creating an Android app eventually. I really don’t really have anything to show yet except this ( Dare I say ) pretty cool looking banner."}]...
|
Title: StarScroll by @vaiskiainen | Stardance
Dev Title: StarScroll by @vaiskiainen | Stardance
Devlogs:
StarScroll Devlog #1 Helllooo everyone! It’s time for a new project. I have recently been working on this web app that lets you doomscroll Stardance projects and devlogs in a vertical feed. I am making it with React and TypeScript and even planning on creating an Android app eventually. I really don’t really have anything to show yet except this ( Dare I say ) pretty cool looking banner.
StarScroll devlog #2 Hellooo again. It’s day 3 of working on a web application that lets you doomscroll Stardance! I want to start this devlog by thanking MIXID_MBB for making the Stardance stats API since that is what I will be using for this project. Here’s a list of features currently implemented: The base app (with infinite scrolling) Like and comment display Description, creator, etc.
StarScroll devlog #3 Hi agaaiinn! Big updates this time. It’s day 5 of working on a web app that lets you doomscroll Stardance! I have recently been spending a lot of my free time working on this and I’m really proud of what it has become. Anyways here’s the fetures I recently added: More Stardance branding Bigger media display Media carousels Comments Support for videos Down / up arrows Latest, popular, random select. Switching between devlogs and projects. And other little tweaks
StarScroll devlog #4 Hello, hello! It’s now day 7 (I think) of building a web app that lets you doomscroll Stardance! Recently I have been working mostly on little QOL updates but also some bigger ones. All the app really needs rn is just some polish. I’m hoping it will be good to go in a couple of days Here’s a list of features I have added; A sidebar Project pages (look a little goofy rn) Search (also pretty bad currently) Better Stardance branding (some images and other stuff) Settings
StarScroll devlog #5 Hi again! I’m basically done making a web app that lets you doomscroll stardance! Recently I have been working on QOL, UI updates and bug fixes. The app should be ready to be shipped in a few days. Stuff I recently did: Descriptions UI updates Other random updates Many technical changes and optimizations
Ships:
⭐ StarScroll StarScroll is an app that lets you doomscroll Stardance projects and devlogs in a vertical feed. The data comes from Stardance stats API I spent so much time on this and am really proud of how this turned out. Features: Infinite scrolling Comments Profile pages Project pages Search Descriptions And a bunch of other stuff… P.S. An Android app is coming in a future ship 😉...
|
1792878586.5866814
|
1793742586.5866814
|
|
56344
|
Snake by @vaiskiainen | Stardance
|
vaiskiainen
|
1
|
2.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T15:25:43Z", "hours": 2.0, "multiplier": 2.4, "payout": 2, "blessing": "neutral", "text": "Snake Game A recreation of the classic snake game with HTML, CSS and JS. Really simple and made in one evening. Included features: Snake game Settings", "repo": "https://github.com/vaiskiainen/snake", "demo": "https://snake.vaiskiainen.fi/"}]...
|
[{"post_id": 58168, "ts": "202 [{"post_id": 58168, "ts": "2026-08-30T15:04:27Z", "hours": 1.5164, "text": "🐍 Snake Game I have basically recreated the iconic snake game with a retro style. I just need to write a readme and it’s ready to ship"}]...
|
Title: Snake by @vaiskiainen | Stardance
Devlogs: Title: Snake by @vaiskiainen | Stardance
Devlogs:
🐍 Snake Game I have basically recreated the iconic snake game with a retro style. I just need to write a readme and it’s ready to ship
Ships:
Snake Game A recreation of the classic snake game with HTML, CSS and JS. Really simple and made in one evening. Included features: Snake game Settings...
|
1792878585.7774584
|
1793742585.7774584
|
|
55290
|
ForgeWithShaaz by @shaaz | Stardance
|
shaaz
|
2
|
5.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T13:16:02Z", "hours": 4.0, "multiplier": 1.54, "payout": 6, "blessing": "neutral", "text": "I always wanted to make my own website and host it. It was fun making this website, however this website needs some updates, I will try to update it. While making this website I faced may problems, errors and much more. Now I have my own website:)", "repo": "https://github.com/shaazumer066-bot/ForGe-With-Shaaz", "demo": "https://shaazumer066-bot.github.io/ForGe-With-Shaaz/"}, {"ship_num": 2, "ts": "2026-08-28T16:08:29Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made ForgeWithShaaz where I showcase my personal projects. The designing part was so hard. I had to use ai to debug it. You can test this project and tell me what should i add here and make it look good", "repo": "https://github.com/shaazumer066-bot/ForGe-With-Shaaz", "demo": "https://shaazumer066-bot.github.io/ForGe-With-Shaaz/"}]...
|
[{"post_id": 58844, "ts": "202 [{"post_id": 58844, "ts": "2026-08-31T12:57:09Z", "hours": 2.7606, "text": "I updated my ForGeWithShaaz website. Some new designs and some new things :)"}, {"post_id": 58119, "ts": "2026-08-30T13:53:41Z", "hours": 0.9311, "text": "I am upgrading my ForGeWithShaaz website :)"}, {"post_id": 56699, "ts": "2026-08-28T15:45:53Z", "hours": 1.4483, "text": "I completed the first version of ForgeWithShaaz, my personal portfolio and project showcase website"}]...
|
Title: ForgeWithShaaz by @shaaz | Stardance
Devlo Title: ForgeWithShaaz by @shaaz | Stardance
Devlogs:
I completed the first version of ForgeWithShaaz, my personal portfolio and project showcase website
I am upgrading my ForGeWithShaaz website :)
I updated my ForGeWithShaaz website. Some new designs and some new things :)
Ships:
I made ForgeWithShaaz where I showcase my personal projects. The designing part was so hard. I had to use ai to debug it. You can test this project and tell me what should i add here and make it look good
I always wanted to make my own website and host it. It was fun making this website, however this website needs some updates, I will try to update it. While making this website I faced may problems, errors and much more. Now I have my own website:)...
|
1792878584.9476523
|
1793742584.9476523
|
|
42717
|
Flujo by @jupeme6 | Stardance
|
jupeme6
|
2
|
65.0
|
864
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T01:07:38Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? A local-first expense tracker called Flujo with an editorial / ledger aesthetic. It tracks income and expenses, has a Sankey diagram drawn from scratch on canvas (no libraries), an OCR ticket scanner, a debt settlement system for flatmates, budgets with alerts, savings goals, statistics, and CSV/JSON backup. Six betas in total. Everything is in localStorage, no backend, no account, PWA installable for offline use. What was challenging? The Sankey diagram was the hardest. Built it with bezier curves on canvas, had to fix proportional sizing and ribbon flow. The OCR scanner had a bug where it would hang forever because I was calling a boolean instead of the Tesseract library. The i18n had a sneaky bug where early betas left some sections in Spanish even after switching to English. What are you proud of? The Sankey diagram with zero dependencies, the greedy algorithm that settles debts with the minimum number of transfers, and the statistics dashboard comparing month-over-month spending. The whole thing works offline. What should people know so they can test your project? Open the demo. Choose language on first launch. The resumen tab has charts, budgets, goals, stats, and backup. The apuntes tab is for expenses. The tickets tab scans receipts via OCR. The deudas tab tracks shared expenses and suggests minimum transfers to settle. Gear icon for dark mode and language. Live demo: https://notjuangamer10.github.io/flujo/ Source: https://github.com/notjuangamer10/flujo", "repo": "https://github.com/NOTJuangamer10/flujo", "demo": "https://notjuangamer10.github.io/flujo/"}, {"ship_num": 2, "ts": "2026-08-10T14:12:57Z", "hours": 54.0, "multiplier": 16.01, "payout": 864, "blessing": "neutral", "text": "What did you make? A personal expense tracker called Flujo, built with an editorial / ledger aesthetic. The app tracks income and expenses with categories, a 5-day forecast visualization, an OCR ticket scanner, and a full debt and shared expenses system for tracking who owes whom between flatmates or friends. Everything is local-first, stored in localStorage, no account, no server, no tracking. Built in four betas. Beta 1 was the basics: add expenses, browse by month, summary totals. Beta 2 added a Sankey diagram showing money flow from income to expense categories, a stacked bar chart for the last 6 months, and a donut chart for category breakdown, all drawn on canvas with vanilla JS (no charting library). Beta 3 added a tabbed interface (resumen, apuntes, tickets, deudas) and an OCR ticket scanner using Tesseract.js that extracts products and prices from receipt photos. Beta 4 added the debts system with four split methods (equal, by shares, exact, by percentage), a greedy algorithm to settle debts with minimum transfers, pattern detection for subscriptions and recurring expenses, plus a dark mode and ES/EN language toggle. What was challenging? The Sankey diagram was the hardest part. My first version drew two separate bezier curves joined at the ends, which looked angular and flat and kinda ugly ngl. Asked another AI for help and it spotted a missing lineTo, but the real fix was using a single bezierCurveTo per ribbon with control points at 42 percent of the horizontal distance (the same proportion D3 uses). Also had to make both sides share the same scale so ribbons flow horizontally instead of diagonal. The proportional sizing was another bug: I had a minimum height of 38px, so a 10 euro expense looked the same as a 400 euro income. Fixed by dropping the minimum to 3px. The OCR scanner had a silent bug where it would hang forever on “procesando imagen”. I was calling tesseractCargado.createWorker where tesseractCargado is a boolean, not the Tesseract library object. So I was doing true.createWorker which throws a TypeError that nobody caught. Fixed by calling Tesseract.createWorker and added a 90 second timeout. The internationalization had a sneaky bug too. The language toggle translated the main UI but left the forecast and debts sections in Spanish because that code was hardcoded from earlier betas. Had to re-translate every section separately. What are you proud of? The Sankey diagram, drawn entirely with vanilla canvas, no D3 or any charting library. About 200 lines of math and bezier curves, but the result looks professional. The debt settlement algorithm that minimizes transfers, so if three people owe each other small amounts it suggests the minimum set of payments instead of everyone paying everyone. The pattern detection that finds subscriptions and projects their annual cost, which is a sobering number to see. And the whole thing works offline with no backend, no account, no tracking. What should people know so they can test your project? Open the demo URL. The resumen tab shows the Sankey diagram, bar chart and donut chart. The apuntes tab lets you add expenses and browse them by month. The tickets tab lets you upload a receipt photo and the OCR extracts products and prices automatically. The deudas tab is where you add people and track shared expenses with four split methods, then see the minimum transfers needed to settle all debts. The gear icon in the header opens settings with a dark mode toggle and ES/EN language switch. Everything is stored locally in the browser, nothing is sent anywhere. Live demo: https://notjuangamer10.github.io/flujo/ Source: https://github.com/notjuangamer10/flujo", "repo": "https://github.com/NOTJuangamer10/flujo", "demo": "https://notjuangamer10.github.io/flujo/"}]...
|
[{"post_id": 64538, "ts": "202 [{"post_id": 64538, "ts": "2026-09-09T01:02:58Z", "hours": 3.3525, "text": "Flujo 6.2. Statistics, backup, and custom categories. Statistics dashboard. The resumen tab now shows six stat cards: total spent across all time, comparison vs last month (with up/down arrows and percentage), daily average for the current month, the most expensive day of the month, number of entries this month, and average per entry. The cards update automatically when you add or remove expenses. Backup. You can export all your data to CSV (for spreadsheets) or JSON (for a full backup that includes expenses, income, people, debts, budgets, and goals). You can also import a JSON file to restore everything. Useful for moving your data to another browser or just keeping a safe copy. Custom categories. You can now create your own expense categories with a custom name and a custom color using a color picker. The new categories appear automatically in the expense form and the ticket scanner. The charts and Sankey diagram will use your custom colors."}, {"post_id": 59025, "ts": "2026-08-31T16:40:42Z", "hours": 3.5872, "text": "Flujo 6.1. Budgets and savings goals. Budgets. Set a monthly limit per category. A progress bar shows how much you have spent vs the limit. The bar changes color: category color under 80 percent, ochre at 80 to 100 (almost there warning), red over 100 (over budget). The percentage and a short warning message appear next to each bar. Delete a budget with the x button on hover. Savings goals. Set a goal with a name, target amount and optional deadline. The app calculates your current savings (total income minus total expenses across all time) and shows a green progress bar toward the goal. When you hit 100 percent the goal name turns green with a checkmark. Useful for things like save 500 for summer trip. Both features appear in the resumen tab below the charts. They update automatically when you add or remove expenses. Everything is stored in localStorage, no server."}, {"post_id": 52733, "ts": "2026-08-23T01:54:52Z", "hours": 3.9356, "text": "Beta 5 of Flujo. Improvements based on reviewer feedback.PWA installable. A service worker now caches the core files so the app works offline on desktop and Android. The manifest is generated dynamically. CDN assets like Tesseract.js and Google Fonts are not cached to avoid bloat. The app itself, your expenses and charts all work offline.Language prompt on first launch. New users now see a modal asking them to choose Spanish or English before the app loads. This was the top complaint from reviewers on my other projects, who said the language toggle was hard to find.Onboarding overlay. First-time visitors get a welcome screen explaining the four tabs (resumen, apuntes, tickets, deudas) with a short description of each, plus tips like adding income sources first to see the Sankey diagram. Dismissible with a single click.Fixed incomplete translations. The canvas text “sin datos para mostrar” and “sin gastos” now respect the language setting. The footer and header subtitle also translate. Everything visible to the user is now either English or Spanish based on the preference."}, {"post_id": 44493, "ts": "2026-08-10T09:19:08Z", "hours": 8.0956, "text": "Beta 4 of Flujo is up. The biggest one yet, split into two parts because of the autoescritor’s 10 hour session limit. Beta 4a added the settings panel with dark mode and language toggle (ES/EN). The dark mode uses a warm dark brown palette instead of the usual cold gray, so it still feels editorial. The language toggle reloads the page to re-translate static text. Beta 4b added the debts and shared expenses system. You can add people (flatmates, friends) and track who owes whom. Shared expenses support four split methods: equal, by shares (e.g. 2:1:1 means one person pays double), exact amounts per person, and by percentage. The settle-up section uses a greedy algorithm to minimize the number of transfers needed to clear all debts, so if three people owe each other small amounts, it suggests the minimum set of transfers instead of everyone paying everyone. Also added pattern detection. The app analyzes your expenses and finds recurring ones, things you pay the same amount for multiple times. It separates them into likely subscriptions (same exact amount, repeated) and general recurring expenses (same description, similar amounts). Shows the projected annual cost for subscriptions, which is a sobering number to see. Next version will be the last: FastAPI backend for sync between phone and laptop, plus PWA installable."}, {"post_id": 43704, "ts": "2026-08-09T03:31:43Z", "hours": 7.7708, "text": "Beta 4a of Flujo is up. I’m starting to get tired of being all day coding. Started the debts and shared expenses feature, plus two settings that were requested on my other projects. First, a theme toggle. The app now supports a dark mode alongside the default cream paper look. The toggle is in a small settings panel in the header. The dark palette uses a warm dark brown instead of the usual cold gray, so it still feels like the editorial aesthetic.Second, multi-language support. The interface can switch between Spanish and English. Switching reloads the page so all the static text gets re-translated. The dynamic content (expenses, descriptions) stays in whatever language the user typed it in.Third, the structure for the debts tab is in place. A new “deudas” tab appears next to resumen, apuntes and tickets. The HTML is there (persons form, shared expense form with split method selector, movements list, settle-up section, patterns section) but the JavaScript logic comes in Beta 4b. The shared expense form supports four split methods: equal, by shares (e.g. 2:1:1 means one person pays double), exact amounts per person, and by percentage.Split this into two parts because of the autoescritor session limit. 4b comes next with all the logic for shared expenses, debt settlement and pattern detection."}, {"post_id": 43184, "ts": "2026-08-08T09:33:02Z", "hours": 6.4356, "text": "Beta 4a of Flujo is up. Started the debts and shared expenses feature, plus two settings that were requested on my other projects. First, a theme toggle. The app now supports a dark mode alongside the default cream paper look. The toggle is in a small settings panel in the header. The dark palette uses a warm dark brown instead of the usual cold gray, so it still feels like the editorial aesthetic. Second, multi-language support. The interface can switch between Spanish and English. Switching reloads the page so all the static text gets re-translated. The dynamic content (expenses, descriptions) stays in whatever language the user typed it in. Third, the structure for the debts tab is in place. A new “deudas” tab appears next to resumen, apuntes and tickets. The HTML is there (persons form, shared expense form with split method selector, movements list, settle-up section, patterns section) but the JavaScript logic comes in Beta 4b. The shared expense form supports four split methods: equal, by shares (e.g. 2:1:1), exact amounts per person, and by percentage. The settle-up section will use a greedy algorithm to minimize the number of transfers needed to clear all debts."}, {"post_id": 42943, "ts": "2026-08-07T22:39:17Z", "hours": 4.0389, "text": "Beta 3.1 is a bugfix release. Two issues. First, the OCR ticket scanner was completely broken. When you uploaded a photo it would say “procesando imagen” forever and never finish. Turned out I was calling tesseractCargado.createWorker where tesseractCargado is a boolean (true), not the Tesseract library object. So I was doing true.createWorker which is undefined.createWorker which throws a TypeError that nobody caught. Switched to Tesseract.createWorker and added a 90 second timeout plus proper try/catch so it can never hang again. Second, the Sankey text was blurry. Canvas draws with whatever font is available at draw time, and if Google Fonts was still loading on the first render it fell back to Arial which looked bad when scaled by devicePixelRatio. Fixed by waiting for document.fonts.ready before the first draw, rounding all Y coordinates to integers so they align with physical pixels, and redrawing on window resize so the DPR stays correct."}, {"post_id": 42609, "ts": "2026-08-07T12:57:34Z", "hours": 7.0344, "text": "Beta 3 is up Tabs and OCR Update!! Three changes. First, the Sankey is now proportional. Before, every node had a minimum height of 38px, so a 10 euro expense looked the same as a 400 euro income. Now the minimum is 3px and both sides use the global total as their scale, so node heights actually reflect the amounts. A 10 euro category is a tiny sliver next to a 400 euro income source. Second, added tabs. The app was getting long with everything in one column. Now there are three tabs: resumen (income sources and charts), apuntes (the expense form and list), and tickets (new). The tab bar uses the same editorial styling, lowercase text with an ochre underline on the active tab. Third, the big one: OCR ticket scanning. On the tickets tab you upload a photo of a supermarket receipt and Tesseract.js extracts the text, then a regex parser pulls out product names and prices. Each detected item shows up in a list with a checkbox, you pick a category, hit save, and all items become individual expenses. The parser looks for lines ending in a decimal number (the classic receipt format) and skips lines that look like totals, subtotals or payment info. Tesseract loads from CDN the first time you use it. It runs entirely in the browser, no server involved, which keeps the local-first promise. The recognition is decent for clean photos, struggles with crumpled receipts. The parser is basic but catches most supermarket formats. If it fails, there is a details panel showing the raw OCR text so you can see what went wrong."}, {"post_id": 41662, "ts": "2026-08-06T01:01:30Z", "hours": 4.3533, "text": "Beta 2.1 is a visual rework of the Sankey diagram. Charts Update!: The previous version worked but looked rough: the flow ribbons were angular, the nodes were plain rectangles, and the two sides used independent scales so the ribbons went diagonal instead of horizontal. I asked another AI for help with the algorithm and it suggested a cleaner approach. Each ribbon is now a single bezier curve with control points at 42 percent of the horizontal distance (the same proportion D3 uses in its Sankey layout), instead of two curves joined at the ends. The nodes are rounded rectangles with a soft shadow. Both sides share the same scale so the ribbons flow straight. Nodes are centered vertically instead of pinned to the top. I kept the editorial palette: dark green for income nodes, black ink for the center “total” node, cream with a colored accent stripe for each expense category. The ribbons use the category color at 30 percent opacity so overlaps create natural layering. Also fixed a timezone bug in the 6 month bar chart. I was using toISOString to build the month key, which converts to UTC and can return the wrong month near midnight. Switched to getFullYear and getMonth which stay in local time. The bars were technically drawing before but some months were mismatched, now they line up correctly. I still have to work that better, but it isnt thaaat bad"}, {"post_id": 41274, "ts": "2026-08-05T11:58:13Z", "hours": 8.9636, "text": "Beta 2 of Flujo is up. The big one: a Sankey diagram showing the flow of your money, income sources on the left, expense categories on the right, with smooth flowing ribbons in between. Drawn on canvas with vanilla JS, no D3 or any charting library. Just bezierCurveTo and a lot of math. Also added two more charts: a stacked bar chart showing the last 6 months (each bar broken down by category, with the monthly total on top), and a donut chart for the current month’s category breakdown with a legend. To make the Sankey meaningful I had to add an income system, a small form where you register your income sources (scholarship, parents, job, etc.). The balance section now shows five numbers: spent, count, average, income, and balance (green if positive, red if negative). The Sankey was the hardest part. My first version drew two separate bezier curves (top and bottom) and joined them at the ends, the ribbons looked flat and angular, like triangles. I asked Gemini for help and it spotted a missing lineTo at the destination node, which fixed the pinch. But the ribbons still looked off. Turned out the real problem was the algorithm: each ribbon needs to be ONE single bezierCurveTo with four control points (not two curves joined), and both sides need to share the same scale (not normalize independently). Once I fixed that, the ribbons flowed organically like a real Sankey. The bar chart had a sneaky bug too: it drew the grid lines but no bars. Took me a while, I was using canvas.clientWidth (DOM size) instead of canvas.width (drawing context size). The CSS makes the canvas visually smaller than its internal resolution, so the bars were being drawn outside the visible area. Classic canvas gotcha. Used a muted, desaturated palette for the 8 categories (ochre, dusty blue, sage green, etc.) instead of bright primary colors, keeps the editorial aesthetic intact. Next version will be the OCR ticket scanner, organized in tabs so the charts don’t compete with the expense list for space. And also redigning the sankey because i dont like how it looks."}, {"post_id": 40077, "ts": "2026-08-03T13:40:22Z", "hours": 7.2981, "text": "Started a new project called Flujo, a personal expense tracker. The idea was to make something that doesn’t look like every other finance app most of them use blue or green with cards and Material-style shadows. I went with an “editorial ledger” aesthetic: paper cream background, dark ink text, an ochre accent, and three typefaces working together Fraunces (a serif) for titles, Inter Tight for UI, and JetBrains Mono with tabular numerals for the amounts so they align like a real accounting book. Beta 1 is the basics: a form to add an expense (amount, category, description, date), a list of expenses for the current month with running numbers (001, 002…), and three totals on top spent, count, and average. There’s a month selector in the header. Everything lives in localStorage, no backend, no server, no tracking. The list is called “libro mayor” (general ledger) and each entry is an “apunte” (bookkeeping entry) small details that lean into the book metaphor. Next version will add the Sankey diagram and bar charts."}]...
|
Title: Flujo by @jupeme6 | Stardance
Devlogs:
Sta Title: Flujo by @jupeme6 | Stardance
Devlogs:
Started a new project called Flujo, a personal expense tracker. The idea was to make something that doesn’t look like every other finance app most of them use blue or green with cards and Material-style shadows. I went with an “editorial ledger” aesthetic: paper cream background, dark ink text, an ochre accent, and three typefaces working together Fraunces (a serif) for titles, Inter Tight for UI, and JetBrains Mono with tabular numerals for the amounts so they align like a real accounting book. Beta 1 is the basics: a form to add an expense (amount, category, description, date), a list of expenses for the current month with running numbers (001, 002…), and three totals on top spent, count, and average. There’s a month selector in the header. Everything lives in localStorage, no backend, no server, no tracking. The list is called “libro mayor” (general ledger) and each entry is an “apunte” (bookkeeping entry) small details that lean into the book metaphor. Next version will add the Sankey diagram and bar charts.
Beta 2 of Flujo is up. The big one: a Sankey diagram showing the flow of your money, income sources on the left, expense categories on the right, with smooth flowing ribbons in between. Drawn on canvas with vanilla JS, no D3 or any charting library. Just bezierCurveTo and a lot of math. Also added two more charts: a stacked bar chart showing the last 6 months (each bar broken down by category, with the monthly total on top), and a donut chart for the current month’s category breakdown with a legend. To make the Sankey meaningful I had to add an income system, a small form where you register your income sources (scholarship, parents, job, etc.). The balance section now shows five numbers: spent, count, average, income, and balance (green if positive, red if negative). The Sankey was the hardest part. My first version drew two separate bezier curves (top and bottom) and joined them at the ends, the ribbons looked flat and angular, like triangles. I asked Gemini for help and it spotted a missing lineTo at the destination node, which fixed the pinch. But the ribbons still looked off. Turned out the real problem was the algorithm: each ribbon needs to be ONE single bezierCurveTo with four control points (not two curves joined), and both sides need to share the same scale (not normalize independently). Once I fixed that, the ribbons flowed organically like a real Sankey. The bar chart had a sneaky bug too: it drew the grid lines but no bars. Took me a while, I was using canvas.clientWidth (DOM size) instead of canvas.width (drawing context size). The CSS makes the canvas visually smaller than its internal resolution, so the bars were being drawn outside the visible area. Classic canvas gotcha. Used a muted, desaturated palette for the 8 categories (ochre, dusty blue, sage green, etc.) instead of bright primary colors, keeps the editorial aesthetic intact. Next version will be the OCR ticket scanner, organized in tabs so the charts don’t compete with the expense list for space. And also redigning the sankey because i dont like how it looks.
Beta 2.1 is a visual rework of the Sankey diagram. Charts Update!: The previous version worked but looked rough: the flow ribbons were angular, the nodes were plain rectangles, and the two sides used independent scales so the ribbons went diagonal instead of horizontal. I asked another AI for help with the algorithm and it suggested a cleaner approach. Each ribbon is now a single bezier curve with control points at 42 percent of the horizontal distance (the same proportion D3 uses in its Sankey layout), instead of two curves joined at the ends. The nodes are rounded rectangles with a soft shadow. Both sides share the same scale so the ribbons flow straight. Nodes are centered vertically instead of pinned to the top. I kept the editorial palette: dark green for income nodes, black ink for the center “total” node, cream with a colored accent stripe for each expense category. The ribbons use the category color at 30 percent opacity so overlaps create natural layering. Also fixed a timezone bug in the 6 month bar chart. I was using toISOString to build the month key, which converts to UTC and can return the wrong month near midnight. Switched to getFullYear and getMonth which stay in local time. The bars were technically drawing before but some months were mismatched, now they line up correctly. I still have to work that better, but it isnt thaaat bad
Beta 3 is up Tabs and OCR Update!! Three changes. First, the Sankey is now proportional. Before, every node had a minimum height of 38px, so a 10 euro expense looked the same as a 400 euro income. Now the minimum is 3px and both sides use the global total as their scale, so node heights actually reflect the amounts. A 10 euro category is a tiny sliver next to a 400 euro income source. Second, added tabs. The app was getting long with everything in one column. Now there are three tabs: resumen (income sources and charts), apuntes (the expense form and list), and tickets (new). The tab bar uses the same editorial styling, lowercase text with an ochre underline on the active tab. Third, the big one: OCR ticket scanning. On the tickets tab you upload a photo of a supermarket receipt and Tesseract.js extracts the text, then a regex parser pulls out product names and prices. Each detected item shows up in a list with a checkbox, you pick a category, hit save, and all items become individual expenses. The parser looks for lines ending in a decimal number (the classic receipt format) and skips lines that look like totals, subtotals or payment info. Tesseract loads from CDN the first time you use it. It runs entirely in the browser, no server involved, which keeps the local-first promise. The recognition is decent for clean photos, struggles with crumpled receipts. The parser is basic but catches most supermarket formats. If it fails, there is a details panel showing the raw OCR text so you can see what went wrong.
Beta 3.1 is a bugfix release. Two issues. First, the OCR ticket scanner was completely broken. When you uploaded a photo it would say “procesando imagen” forever and never finish. Turned out I was calling tesseractCargado.createWorker where tesseractCargado is a boolean (true), not the Tesseract library object. So I was doing true.createWorker which is undefined.createWorker which throws a TypeError that nobody caught. Switched to Tesseract.createWorker and added a 90 second timeout plus proper try/catch so it can never hang again. Second, the Sankey text was blurry. Canvas draws with whatever font is available at draw time, and if Google Fonts was still loading on the first render it fell back to Arial which looked bad when scaled by devicePixelRatio. Fixed by waiting for document.fonts.ready before the first draw, rounding all Y coordinates to integers so they align with physical pixels, and redrawing on window resize so the DPR stays correct.
Beta 4a of Flujo is up. Started the debts and shared expenses feature, plus two settings that were requested on my other projects. First, a theme toggle. The app now supports a dark mode alongside the default cream paper look. The toggle is in a small settings panel in the header. The dark palette uses a warm dark brown instead of the usual cold gray, so it still feels like the editorial aesthetic. Second, multi-language support. The interface can switch between Spanish and English. Switching reloads the page so all the static text gets re-translated. The dynamic content (expenses, descriptions) stays in whatever language the user typed it in. Third, the structure for the debts tab is in place. A new “deudas” tab appears next to resumen, apuntes and tickets. The HTML is there (persons form, shared expense form with split method selector, movements list, settle-up section, patterns section) but the JavaScript logic comes in Beta 4b. The shared expense form supports four split methods: equal, by shares (e.g. 2:1:1), exact amounts per person, and by percentage. The settle-up section will use a greedy algorithm to minimize the number of transfers needed to clear all debts.
Beta 4a of Flujo is up. I’m starting to get tired of being all day coding. Started the debts and shared expenses feature, plus two settings that were requested on my other projects. First, a theme toggle. The app now supports a dark mode alongside the default cream paper look. The toggle is in a small settings panel in the header. The dark palette uses a warm dark brown instead of the usual cold gray, so it still feels like the editorial aesthetic.Second, multi-language support. The interface can switch between Spanish and English. Switching reloads the page so all the static text gets re-translated. The dynamic content (expenses, descriptions) stays in whatever language the user typed it in.Third, the structure for the debts tab is in place. A new “deudas” tab appears next to resumen, apuntes and tickets. The HTML is there (persons form, shared expense form with split method selector, movements list, settle-up section, patterns section) but the JavaScript logic comes in Beta 4b. The shared expense form supports four split methods: equal, by shares (e.g. 2:1:1 means one person pays double), exact amounts per person, and by percentage.Split this into two parts because of the autoescritor session limit. 4b comes next with all the logic for shared expenses, debt settlement and pattern detection.
Beta 4 of Flujo is up. The biggest one yet, split into two parts because of the autoescritor’s 10 hour session limit. Beta 4a added the settings panel with dark mode and language toggle (ES/EN). The dark mode uses a warm dark brown palette instead of the usual cold gray, so it still feels editorial. The language toggle reloads the page to re-translate static text. Beta 4b added the debts and shared expenses system. You can add people (flatmates, friends) and track who owes whom. Shared expenses support four split methods: equal, by shares (e.g. 2:1:1 means one person pays double), exact amounts per person, and by percentage. The settle-up section uses a greedy algorithm to minimize the number of transfers needed to clear all debts, so if three people owe each other small amounts, it suggests the minimum set of transfers instead of everyone paying everyone. Also added pattern detection. The app analyzes your expenses and finds recurring ones, things you pay the same amount for multiple times. It separates them into likely subscriptions (same exact amount, repeated) and general recurring expenses (same description, similar amounts). Shows the projected annual cost for subscriptions, which is a sobering number to see. Next version will be the last: FastAPI backend for sync between phone and laptop, plus PWA installable.
Beta 5 of Flujo. Improvements based on reviewer feedback.PWA installable. A service worker now caches the core files so the app works offline on desktop and Android. The manifest is generated dynamically. CDN assets like Tesseract.js and Google Fonts are not cached to avoid bloat. The app itself, your expenses and charts all work offline.Language prompt on first launch. New users now see a modal asking them to choose Spanish or English before the app loads. This was the top complaint from reviewers on my other projects, who said the language toggle was hard to find.Onboarding overlay. First-time visitors get a welcome screen explaining the four tabs (resumen, apuntes, tickets, deudas) with a short description of each, plus tips like adding income sources first to see the Sankey diagram. Dismissible with a single click.Fixed incomplete translations. The canvas text “sin datos para mostrar” and “sin gastos” now respect the language setting. The footer and header subtitle also translate. Everything visible to the user is now either English or Spanish based on the preference.
Flujo 6.1. Budgets and savings goals. Budgets. Set a monthly limit per category. A progress bar shows how much you have spent vs the limit. The bar changes color: category color under 80 percent, ochre at 80 to 100 (almost there warning), red over 100 (over budget). The percentage and a short warning message appear next to each bar. Delete a budget with the x button on hover. Savings goals. Set a goal with a name, target amount and optional deadline. The app calculates your current savings (total income minus total expenses across all time) and shows a green progress bar toward the goal. When you hit 100 percent the goal name turns green with a checkmark. Useful for things like save 500 for summer trip. Both features appear in the resumen tab below the charts. They update automatically when you add or remove expenses. Everything is stored in localStorage, no server.
Flujo 6.2. Statistics, backup, and custom categories. Statistics dashboard. The resumen tab now shows six stat cards: total spent across all time, comparison vs last month (with up/down arrows and percentage), daily average for the current month, the most expensive day of the month, number of entries this month, and average per entry. The cards update automatically when you add or remove expenses. Backup. You can export all your data to CSV (for spreadsheets) or JSON (for a full backup that includes expenses, income, people, debts, budgets, and goals). You can also import a JSON file to restore everything. Useful for moving your data to another browser or just keeping a safe copy. Custom categories. You can now create your own expense categories with a custom name and a custom color using a color picker. The new categories appear automatically in the expense form and the ticket scanner. The charts and Sankey diagram will use your custom colors.
Ships:
What did you make? A personal expense tracker called Flujo, built with an editorial / ledger aesthetic. The app tracks income and expenses with categories, a 5-day forecast visualization, an OCR ticket scanner, and a full debt and shared expenses system for tracking who owes whom between flatmates or friends. Everything is local-first, stored in localStorage, no account, no server, no tracking. Built in four betas. Beta 1 was the basics: add expenses, browse by month, summary totals. Beta 2 added a Sankey diagram showing money flow from income to expense categories, a stacked bar chart for the last 6 months, and a donut chart for category breakdown, all drawn on canvas with vanilla JS (no charting library). Beta 3 added a tabbed interface (resumen, apuntes, tickets, deudas) and an OCR ticket scanner using Tesseract.js that extracts products and prices from receipt photos. Beta 4 added the debts system with four split methods (equal, by shares, exact, by percentage), a greedy algorithm to settle debts with minimum transfers, pattern detection for subscriptions and recurring expenses, plus a dark mode and ES/EN language toggle. What was challenging? The Sankey diagram was the hardest part. My first version drew two separate bezier curves joined at the ends, which looked angular and flat and kinda ugly ngl. Asked another AI for help and it spotted a missing lineTo, but the real fix was using a single bezierCurveTo per ribbon with control points at 42 percent of the horizontal distance (the same proportion D3 uses). Also had to make both sides share the same scale so ribbons flow horizontally instead of diagonal. The proportional sizing was another bug: I had a minimum height of 38px, so a 10 euro expense looked the same as a 400 euro income. Fixed by dropping the minimum to 3px. The OCR scanner had a silent bug where it would hang forever on “procesando imagen”. I was calling tesseractCargado.createWorker where tesseractCargado is a boolean, not the Tesseract library object. So I was doing true.createWorker which throws a TypeError that nobody caught. Fixed by calling Tesseract.createWorker and added a 90 second timeout. The internationalization had a sneaky bug too. The language toggle translated the main UI but left the forecast and debts sections in Spanish because that code was hardcoded from earlier betas. Had to re-translate every section separately. What are you proud of? The Sankey diagram, drawn entirely with vanilla canvas, no D3 or any charting library. About 200 lines of math and bezier curves, but the result looks professional. The debt settlement algorithm that minimizes transfers, so if three people owe each other small amounts it suggests the minimum set of payments instead of everyone paying everyone. The pattern detection that finds subscriptions and projects their annual cost, which is a sobering number to see. And the whole thing works offline with no backend, no account, no tracking. What should people know so they can test your project? Open the demo URL. The resumen tab shows the Sankey diagram, bar chart and donut chart. The apuntes tab lets you add expenses and browse them by month. The tickets tab lets you upload a receipt photo and the OCR extracts products and prices automatically. The deudas tab is where you add people and track shared expenses with four split methods, then see the minimum transfers needed to settle all debts. The gear icon in the header opens settings with a dark mode toggle and ES/EN language switch. Everything is stored locally in the browser, nothing is sent anywhere. Live demo: https://notjuangamer10.github.io/flujo/ Source: https://github.com/notjuangamer10/flujo
What did you make? A local-first expense tracker called Flujo with an editorial / ledger aesthetic. It tracks income and expenses, has a Sankey diagram drawn from scratch on canvas (no libraries), an OCR ticket scanner, a debt settlement system for flatmates, budgets with alerts, savings goals, statistics, and CSV/JSON backup. Six betas in total. Everything is in localStorage, no backend, no account, PWA installable for offline use. What was challenging? The Sankey diagram was the hardest. Built it with bezier curves on canvas, had to fix proportional sizing and ribbon flow. The OCR scanner had a bug where it would hang forever because I was calling a boolean instead of the Tesseract library. The i18n had a sneaky bug where early betas left some sections in Spanish even after switching to English. What are you proud of? The Sankey diagram with zero dependencies, the greedy algorithm that settles debts with the minimum number of transfers, and the statistics dashboard comparing month-over-month spending. The whole thing works offline. What should people know so they can test your project? Open the demo. Choose language on first launch. The resumen tab has charts, budgets, goals, stats, and backup. The apuntes tab is for expenses. The tickets tab scans receipts via OCR. The deudas tab tracks shared expenses and suggests minimum transfers to settle. Gear icon for dark mode and language. Live demo: https://notjuangamer10.github.io/flujo/ Source: https://github.com/notjuangamer10/flujo...
|
1792878584.0517979
|
1793742584.0517979
|