|
59902
|
My own site! by @nvalenzu0059 | Stardance
|
nvalenzu0059
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @nvalenzu0059 | Stardance
|
1793638428.337422
|
1794243228.337422
|
|
59903
|
My own site! by @compqueror | Stardance
|
compqueror
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @compqueror | Stardance
|
1793638429.2439315
|
1794243229.2439315
|
|
59904
|
REACTOR by @mindstormpro3 | Stardance
|
mindstormpro3
|
1
|
12.58
|
159
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-01T06:13:17Z", "hours": 12.0, "multiplier": 13.22, "payout": 159, "blessing": "neutral", "text": "Reactor is a special python TUI tool for running bots made for the hack club defector event 100% locally. Gone are the days of uploading your bot to the defector website just to see if there is a bug! Now you can test your bot locally, even against the top 20 leaderboard bots! This project made me relearn python, and also learn a bit about the internal workings of javascript, and most importantly, taught me how to publish a python package to PyPi. If you want to try out Reactor for yourself, download it with pip install reactor_mindstormpro3 or check out my github for more instructions! once downloaded all you gotta do is restart your terminal and run Reactor in it to start it up!", "repo": "https://github.com/mindstormpro/Reactor", "demo": "https://pypi.org/project/reactor-mindstormpro3/"}]...
|
[{"post_id": 76056, "ts": "202 [{"post_id": 76056, "ts": "2026-10-02T06:46:33Z", "hours": 0.5822, "text": "REACTOR DEVLOG #3.5! This is a very speedy devlog, since it’s only like 30 mins of bugfixing so I can reship, but Ill give some details: So basically, when I wrote the error handling in the last devlog, turns out I was trying to write to a dictionary (the bot’s data dictionary) without actually initializing it first, causing a silent crash. I just did a little switcharoo to move the init statement (which was right after ) to run first and now it works fine! I also just added some more error logging with the textual notification system in case something goes wrong and bumped up the PyPi python package version to 1.0.4 instead of 1.0.3 . Also, for the shipwrights, I just want to clarify that it only loads files if they are .js or if they have no extension at all, so no .txt or any other file."}, {"post_id": 75267, "ts": "2026-09-29T16:26:12Z", "hours": 1.5125, "text": "Reactor Devlog #3! Hello guys! Ive been a little busy the past week, but I finally got around to making some progress, and so here’s what I have to show for it: WE’RE ON PYPI! I managed to upload Reactor to pypi under the name reactor_mindstormpro3 ( Check it out here! ) It took a while to get everything set up but basically I just used hatchling to build and twine to upload, with a pyproject.toml I borrowed from some guide and modified to require some dependencies like py_mini_racer . ( Hippity Hoppity Your Code Is Now My Property ) A Lot of Bug Fixing And Changes! I fixed the following issues: Invalid bots that throw errors when loaded now throw an error as a push notification but doesnt crash the app. Made refreshing more reliable Moved loading bots at boot to a separate thread to not impair loading time of the app."}, {"post_id": 71867, "ts": "2026-09-21T17:52:41Z", "hours": 3.9761, "text": "Reactor Devlog #2! What changed? A lot has happened since my last devlog! I locked in and implemented a bunch of new features, such as: error handling!!! a WORKING request system to fetch the latest reactor bots to test your bot against A bot selector system to add any bot in the CWD or sub-directories into the runner, so you can test your own bot! Better UI!! Woah thats a lot of changes, lemme break it down… First, the Error Handling! This one is kinda the most self-explanitory. Basically, The mini_racer engine for python uses an old version of javascript, so some features, like table.at() isnt supported. For table.at() I just added a filler script to the front of the src that defines it, but I can’t realistically catch everything so I a segment in the loading of the bot that runs the code once and checks for a crash or parsing error from the engine and if it fails then it doesn’t import the bot into the bot table. (AI wrote the filler script, but I originally found the bug and also made the error handling section) Secondly, The Request System! The request system is arguably the coolest part of this project, but I feel obligated to also explain that some of the request system was assisted by AI (meaning that AI wrote code, I read it, and then reimplemented it with the same general idea) and also ai DID write the leaderboard grabber which just grabs all of the bots’ id’s that I can use to find their links and grab the src, but ONLY the leaderboard parser, not the bot page parser. Ok, with that out of the way, how does this really work? well basically I take and parse the current leaderboard stream at defector.hackclub.com/_app/remote/1jsclqx/leaderboardData . Then with that info, I manually take the bot IDs given with that and shove them into this template: https://defector.hackclub.com/bot/(bot ID here) . That spits out an HTML page, so I use BeautifulSoup to parse it with this absolute horror of a line: BeautifulSoup(response.text, \"html.parser\").find_all(\"pre\")[-1].get_text() and extract the source code, before writing them into a file in the botCache folder in the CWD. Then I load the file as normal, just like any other bot. Thirdly, The Bot Selection System! The bot selection system works by just replacing the normal leaderboard widget with a DirectoryTree widget and then setting it to show the current working directory, or CWD. I then use a custom sorter script to show only folders and .js files. whenever a JS script is clicked, it just imports it as a normal bot. Finally, we have UI Improvements! I added zebra tiling to the leaderboard to make it more readable, made buttons disable themselves during certain actions like disabling the run button when refreshing, and fixed a few little UI bugs. What’s Next? well after this I’m going to try to ship, with only 9 days left in Stardance. I Just need to package it with PyPi and I’m done!"}, {"post_id": 65635, "ts": "2026-09-10T21:54:24Z", "hours": 6.5558, "text": "Reactor Devlog 1! Wait…. So what is Reactor? Reactor is a tool to test bots made for Defector without having to publish your bot to the website and go through all that hassle. What I’ve done in the first 6 hours Installed mini_racer for python and wrote a basic function to take a .js script and run the bot function inside it. Fixed a but with mini_racer lacking array.at() due to mini_racer using an outdated version of js by just defining it myself :) Learned the basics of Textual for making TUIs in python Made a cool TUI that allows you to start the reactor and then shows the statistics of the sim in a table. (see attached image) fixed some misc bugs Ok, now how does it actually work? So basically, whenever I want to to play two bots against each other, I define a new mini_racer context with a modified version of their src (changed the export default with export default\", \"globalThis.botFunc = because otherwise mini_racer wouldnt be able to see it, and added a polyfill to the front of the script to define table.prototype.at() ) and then evaluate the bot () function for both bots and simulate a match between them! I then just made a function to loop through each possible robot matchup and run the game of 100-150 rounds, and then delegated the whole thing to a thread so the UI could still render while it runs. So What’s next? Add the ability to get the bots on the leaderboard and play against them Make some more simple bots add misc features like better UI and the ability to select extra bots to add instead of just ones in the cache folder See Ya Later! - Elio :3"}]...
|
Title: REACTOR by @mindstormpro3 | Stardance
Devl Title: REACTOR by @mindstormpro3 | Stardance
Devlogs:
Reactor Devlog 1! Wait…. So what is Reactor? Reactor is a tool to test bots made for Defector without having to publish your bot to the website and go through all that hassle. What I’ve done in the first 6 hours Installed mini_racer for python and wrote a basic function to take a .js script and run the bot function inside it. Fixed a but with mini_racer lacking array.at() due to mini_racer using an outdated version of js by just defining it myself :) Learned the basics of Textual for making TUIs in python Made a cool TUI that allows you to start the reactor and then shows the statistics of the sim in a table. (see attached image) fixed some misc bugs Ok, now how does it actually work? So basically, whenever I want to to play two bots against each other, I define a new mini_racer context with a modified version of their src (changed the export default with export default", "globalThis.botFunc = because otherwise mini_racer wouldnt be able to see it, and added a polyfill to the front of the script to define table.prototype.at() ) and then evaluate the bot () function for both bots and simulate a match between them! I then just made a function to loop through each possible robot matchup and run the game of 100-150 rounds, and then delegated the whole thing to a thread so the UI could still render while it runs. So What’s next? Add the ability to get the bots on the leaderboard and play against them Make some more simple bots add misc features like better UI and the ability to select extra bots to add instead of just ones in the cache folder See Ya Later! - Elio :3
Reactor Devlog #2! What changed? A lot has happened since my last devlog! I locked in and implemented a bunch of new features, such as: error handling!!! a WORKING request system to fetch the latest reactor bots to test your bot against A bot selector system to add any bot in the CWD or sub-directories into the runner, so you can test your own bot! Better UI!! Woah thats a lot of changes, lemme break it down… First, the Error Handling! This one is kinda the most self-explanitory. Basically, The mini_racer engine for python uses an old version of javascript, so some features, like table.at() isnt supported. For table.at() I just added a filler script to the front of the src that defines it, but I can’t realistically catch everything so I a segment in the loading of the bot that runs the code once and checks for a crash or parsing error from the engine and if it fails then it doesn’t import the bot into the bot table. (AI wrote the filler script, but I originally found the bug and also made the error handling section) Secondly, The Request System! The request system is arguably the coolest part of this project, but I feel obligated to also explain that some of the request system was assisted by AI (meaning that AI wrote code, I read it, and then reimplemented it with the same general idea) and also ai DID write the leaderboard grabber which just grabs all of the bots’ id’s that I can use to find their links and grab the src, but ONLY the leaderboard parser, not the bot page parser. Ok, with that out of the way, how does this really work? well basically I take and parse the current leaderboard stream at defector.hackclub.com/_app/remote/1jsclqx/leaderboardData . Then with that info, I manually take the bot IDs given with that and shove them into this template: https://defector.hackclub.com/bot/(bot ID here) . That spits out an HTML page, so I use BeautifulSoup to parse it with this absolute horror of a line: BeautifulSoup(response.text, "html.parser").find_all("pre")[-1].get_text() and extract the source code, before writing them into a file in the botCache folder in the CWD. Then I load the file as normal, just like any other bot. Thirdly, The Bot Selection System! The bot selection system works by just replacing the normal leaderboard widget with a DirectoryTree widget and then setting it to show the current working directory, or CWD. I then use a custom sorter script to show only folders and .js files. whenever a JS script is clicked, it just imports it as a normal bot. Finally, we have UI Improvements! I added zebra tiling to the leaderboard to make it more readable, made buttons disable themselves during certain actions like disabling the run button when refreshing, and fixed a few little UI bugs. What’s Next? well after this I’m going to try to ship, with only 9 days left in Stardance. I Just need to package it with PyPi and I’m done!
Reactor Devlog #3! Hello guys! Ive been a little busy the past week, but I finally got around to making some progress, and so here’s what I have to show for it: WE’RE ON PYPI! I managed to upload Reactor to pypi under the name reactor_mindstormpro3 ( Check it out here! ) It took a while to get everything set up but basically I just used hatchling to build and twine to upload, with a pyproject.toml I borrowed from some guide and modified to require some dependencies like py_mini_racer . ( Hippity Hoppity Your Code Is Now My Property ) A Lot of Bug Fixing And Changes! I fixed the following issues: Invalid bots that throw errors when loaded now throw an error as a push notification but doesnt crash the app. Made refreshing more reliable Moved loading bots at boot to a separate thread to not impair loading time of the app.
REACTOR DEVLOG #3.5! This is a very speedy devlog, since it’s only like 30 mins of bugfixing so I can reship, but Ill give some details: So basically, when I wrote the error handling in the last devlog, turns out I was trying to write to a dictionary (the bot’s data dictionary) without actually initializing it first, causing a silent crash. I just did a little switcharoo to move the init statement (which was right after ) to run first and now it works fine! I also just added some more error logging with the textual notification system in case something goes wrong and bumped up the PyPi python package version to 1.0.4 instead of 1.0.3 . Also, for the shipwrights, I just want to clarify that it only loads files if they are .js or if they have no extension at all, so no .txt or any other file.
Ships:
Reactor is a special python TUI tool for running bots made for the hack club defector event 100% locally. Gone are the days of uploading your bot to the defector website just to see if there is a bug! Now you can test your bot locally, even against the top 20 leaderboard bots! This project made me relearn python, and also learn a bit about the internal workings of javascript, and most importantly, taught me how to publish a python package to PyPi. If you want to try out Reactor for yourself, download it with pip install reactor_mindstormpro3 or check out my github for more instructions! once downloaded all you gotta do is restart your terminal and run Reactor in it to start it up!...
|
1793825560.5905416
|
1793911960.5905416
|
|
59905
|
My awesome macropad! by @Walenmorski | Stardance
|
Walenmorski
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Walenmorski | Star Title: My awesome macropad! by @Walenmorski | Stardance...
|
1793638430.1539993
|
1794243230.1539993
|
|
59906
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739021.5490403
|
1794603021.5490403
|
|
59907
|
NFC Card Remastered by @Imtiaz | Stardance
|
Imtiaz
|
0
|
2.55
|
0
|
[]
|
[{"post_id": 65619, "ts": "202 [{"post_id": 65619, "ts": "2026-09-10T21:19:35Z", "hours": 2.5461, "text": "yay, cooler business card!"}]...
|
Title: NFC Card Remastered by @Imtiaz | Stardance
Title: NFC Card Remastered by @Imtiaz | Stardance
Devlogs:
yay, cooler business card!...
|
1793638431.0980947
|
1794243231.0980947
|
|
59908
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739023.2949288
|
1794603023.2949288
|
|
59909
|
CosmicBlare by @Hanthar | Stardance
|
Hanthar
|
0
|
0.68
|
0
|
[]
|
[{"post_id": 64461, "ts": "202 [{"post_id": 64461, "ts": "2026-09-08T21:24:43Z", "hours": 0.6833, "text": "Devlog #1 (Day 1) So some part of me thought that because I’ve never done any hardware projects before, maybe I should do two at once, so here I am. This one definitely took me longer and is, for sure, more confusing, but progress is being made. I still don’t know how I plan on keeping up with both and finishing them, but here’s the schematic I completed. (If you’re wondering why it looks almost identical to the example, that’s cause I copied it down exactly. Still gotta figure out what each of the parts does before I start making things a little more custom.)"}]...
|
Title: CosmicBlare by @Hanthar | Stardance
Devlog Title: CosmicBlare by @Hanthar | Stardance
Devlogs:
Devlog #1 (Day 1) So some part of me thought that because I’ve never done any hardware projects before, maybe I should do two at once, so here I am. This one definitely took me longer and is, for sure, more confusing, but progress is being made. I still don’t know how I plan on keeping up with both and finishing them, but here’s the schematic I completed. (If you’re wondering why it looks almost identical to the example, that’s cause I copied it down exactly. Still gotta figure out what each of the parts does before I start making things a little more custom.)...
|
1793638432.3232033
|
1794243232.3232033
|
|
59910
|
make a games and apps and weps by @masterjordan | make a games and apps and weps by @masterjordan | Stardance...
|
masterjordan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: make a games and apps and weps by @masterjo Title: make a games and apps and weps by @masterjordan | Stardance...
|
1793638433.2081506
|
1794243233.2081506
|
|
59911
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739024.1450899
|
1794603024.1450899
|
|
59912
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739025.8841205
|
1794603025.8841205
|
|
59913
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739026.7564723
|
1794603026.7564723
|
|
59914
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739027.6095116
|
1794603027.6095116
|
|
59915
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739031.5778425
|
1794603031.5778425
|
|
59916
|
INTARE AI by @ishnaweigner | Stardance
|
ishnaweigner
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: INTARE AI by @ishnaweigner | Stardance
|
1793638434.104276
|
1794243234.104276
|
|
59917
|
WarioWare Game by @charbel_e_farhat | Stardance
|
charbel_e_farhat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @charbel_e_farhat | Stard Title: WarioWare Game by @charbel_e_farhat | Stardance...
|
1793638435.0192719
|
1794243235.0192719
|
|
59918
|
Clocky by @Habib | Stardance
|
Habib
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Clocky by @Habib | Stardance
|
1793638435.9958305
|
1794243235.9958305
|
|
59919
|
My own site! by @arii_ | Stardance
|
arii_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @arii_ | Stardance
|
1793638436.9245656
|
1794243236.9245656
|
|
59920
|
SpacePad by @Hanthar | Stardance
|
Hanthar
|
0
|
0.6
|
0
|
[]
|
[{"post_id": 64460, "ts": "202 [{"post_id": 64460, "ts": "2026-09-08T21:18:06Z", "hours": 0.6, "text": "Devlog #1 (Day 1) First time doing a hardware project, and I literally have no clue what I’m doing. Finished the entire PCB today, but it was all just following the directions in the guide. I’m thinking I’ll maybe do everything as I’m told first and leave the personalization for later (the end). If there is a later."}]...
|
Title: SpacePad by @Hanthar | Stardance
Devlogs:
Title: SpacePad by @Hanthar | Stardance
Devlogs:
Devlog #1 (Day 1) First time doing a hardware project, and I literally have no clue what I’m doing. Finished the entire PCB today, but it was all just following the directions in the guide. I’m thinking I’ll maybe do everything as I’m told first and leave the personalization for later (the end). If there is a later....
|
1793638441.1194148
|
1794243241.1194148
|
|
59921
|
A bridge between human and Ai by @nabeeha_atif | S A bridge between human and Ai by @nabeeha_atif | Stardance...
|
nabeeha_atif
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A bridge between human and Ai by @nabeeha_a Title: A bridge between human and Ai by @nabeeha_atif | Stardance...
|
1793638442.0900455
|
1794243242.0900455
|
|
59922
|
WarioWare Game by @noci | Stardance
|
noci
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @noci | Stardance
|
1793638443.0287468
|
1794243243.0287468
|
|
59923
|
My Creative Space by @Onel | Stardance
|
Onel
|
0
|
0.3
|
0
|
[]
|
[{"post_id": 64765, "ts": "202 [{"post_id": 64765, "ts": "2026-09-09T12:43:02Z", "hours": 0.2972, "text": "Today I started my first website. I learned the basic HTML structure and added an About Me and Projects section. I also started using CSS to style the page."}]...
|
Title: My Creative Space by @Onel | Stardance
Dev Title: My Creative Space by @Onel | Stardance
Devlogs:
Today I started my first website. I learned the basic HTML structure and added an About Me and Projects section. I also started using CSS to style the page....
|
1793638443.9853566
|
1794243243.9853566
|
|
59924
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739032.451382
|
1794603032.451382
|
|
59925
|
My very own WebOS by @shronge | Stardance
|
shronge
|
0
|
0.89
|
0
|
[]
|
[{"post_id": 79602, "ts": "202 [{"post_id": 79602, "ts": "2026-10-14T17:46:23Z", "hours": 0.4608, "text": "Working on my onboarding screen!"}, {"post_id": 67281, "ts": "2026-09-13T10:54:57Z", "hours": 0.4303, "text": "The very basics (github is confusing)"}]...
|
Title: My very own WebOS by @shronge | Stardance
Title: My very own WebOS by @shronge | Stardance
Devlogs:
The very basics (github is confusing)
Working on my onboarding screen!...
|
1793638444.931279
|
1794243244.931279
|
|
59926
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739034.5095062
|
1794603034.5095062
|
|
59927
|
My awesome macropad! by @mihret56923 | Stardance
|
mihret56923
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @mihret56923 | Star Title: My awesome macropad! by @mihret56923 | Stardance...
|
1793638445.9397125
|
1794243245.9397125
|
|
59928
|
Cyberdeck by @nadabidi | Stardance
|
nadabidi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cyberdeck by @nadabidi | Stardance
|
1793638448.4399822
|
1794243248.4399822
|
|
59929
|
WarioWare Game by @rohanhotwani | Stardance
|
rohanhotwani
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @rohanhotwani | Stardance
|
1793638449.631596
|
1794243249.631596
|
|
59930
|
The Stratus Magpad by @ace_x | Stardance
|
ace_x
|
0
|
1.8
|
0
|
[]
|
[{"post_id": 64545, "ts": "202 [{"post_id": 64545, "ts": "2026-09-09T01:24:27Z", "hours": 1.8036, "text": "The making of the schematic: I started with the chip and just added stuff from memory till i had to check the datasheets and I got footprints in and tried using autoplacer but it doesnt like me, will add all footprints later"}]...
|
Title: The Stratus Magpad by @ace_x | Stardance
D Title: The Stratus Magpad by @ace_x | Stardance
Devlogs:
The making of the schematic: I started with the chip and just added stuff from memory till i had to check the datasheets and I got footprints in and tried using autoplacer but it doesnt like me, will add all footprints later...
|
1793638451.1776307
|
1794243251.1776307
|
|
59931
|
My awesome macropad! by @NICK24 | Stardance
|
NICK24
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @NICK24 | Stardance
|
1793638452.1428885
|
1794243252.1428885
|
|
59932
|
My awesome macropad! by @codexmsh09 | Stardance
|
codexmsh09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @codexmsh09 | Stard Title: My awesome macropad! by @codexmsh09 | Stardance...
|
1793638453.0922208
|
1794243253.0922208
|
|
59933
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739036.2825553
|
1794603036.2825553
|
|
59934
|
AstroOS by @codexmsh09 | Stardance
|
codexmsh09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AstroOS by @codexmsh09 | Stardance
|
1793638454.0071938
|
1794243254.0071938
|
|
59935
|
My awesome macropad! by @Hack007 | Stardance
|
Hack007
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Hack007 | Stardanc Title: My awesome macropad! by @Hack007 | Stardance...
|
1793638454.9443035
|
1794243254.9443035
|
|
59936
|
My first slack bot! by @petrowwx_ | Stardance
|
petrowwx_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @petrowwx_ | Stardan Title: My first slack bot! by @petrowwx_ | Stardance...
|
1793638455.8154151
|
1794243255.8154151
|
|
59937
|
Rougelike Platformer by @Ares_god_of_softWARe | St Rougelike Platformer by @Ares_god_of_softWARe | Stardance...
|
Ares_god_of_softWARe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Rougelike Platformer by @Ares_god_of_softWA Title: Rougelike Platformer by @Ares_god_of_softWARe | Stardance...
|
1793638456.7496533
|
1794243256.7496533
|
|
59938
|
My awesome macropad! by @raghenza | Stardance
|
raghenza
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @raghenza | Stardan Title: My awesome macropad! by @raghenza | Stardance...
|
1793638457.664837
|
1794243257.664837
|
|
59939
|
First Project by @golo | Stardance
|
golo
|
0
|
1.37
|
0
|
[]
|
[{"post_id": 66255, "ts": "202 [{"post_id": 66255, "ts": "2026-09-11T23:47:29Z", "hours": 1.3736, "text": "Just working on the hackpad, almost done with my model but having some trouble actually figuring out how Fusion 360 actually works D:"}]...
|
Title: First Project by @golo | Stardance
Devlogs Title: First Project by @golo | Stardance
Devlogs:
Just working on the hackpad, almost done with my model but having some trouble actually figuring out how Fusion 360 actually works D:...
|
1793638458.5594046
|
1794243258.5594046
|
|
59940
|
WarioWare Game by @rayyanbashir | Stardance
|
rayyanbashir
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @rayyanbashir | Stardance
|
1793638459.4910057
|
1794243259.4910057
|
|
59941
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739038.0275183
|
1794603038.0275183
|
|
59942
|
NEMO — A Tiny AI Creature by @narutomithun28 | Sta NEMO — A Tiny AI Creature by @narutomithun28 | Stardance...
|
narutomithun28
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: NEMO — A Tiny AI Creature by @narutomithun2 Title: NEMO — A Tiny AI Creature by @narutomithun28 | Stardance...
|
1793638460.4424727
|
1794243260.4424727
|
|
59943
|
My own site! by @Efosa | Stardance
|
Efosa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Efosa | Stardance
|
1793638461.333514
|
1794243261.333514
|
|
59944
|
Aster by @srithimahi | Stardance
|
srithimahi
|
1
|
50.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T04:57:33Z", "hours": 50.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ASTER IS DONEEEEE I MADE A TERMINAL. IN RUST. SOMEHOW. Aster is a custom terminal emulator + multiplexer I built basically from scratch while learning Rust. It started with me wondering what actually happens underneath a terminal. Then I learned that a terminal is NOT the shell, discovered PTYs and ANSI escape sequences, built my own terminal grid/parser/renderer, and accidentally entered one of the deepest rabbit holes of my life. Aster now has: PTY-backed PowerShell sessions ANSI/VT parsing + custom terminal rendering tabs and recursive split panes draggable pane resizing + zooming text selection, clipboard, scrollback and search dynamic pane/tab titles a built-in System Monitor process filtering, inspection and safe process killing Aster’s own : command system searchable command palette + shortcuts menu command history + autocomplete runtime themes dynamic theme discovery Stardance, Nebula, Sunshine and Mono themes The coolest architectural change happened when I realized panes didn’t have to contain terminals. I refactored Aster so panes can contain different tools, which is how the System Monitor became a first-class pane. That turned Aster from just a terminal + multiplexer into the beginning of a terminal-centered developer workspace. And OH MY GOD THE BUGS. I had ghost characters because I hadn’t implemented ANSI ECH. ConPTY and my terminal disagreed about their dimensions. I started this project knowing basically no Rust and ended up learning about ownership, PTYs, ANSI/VT sequences, terminal state machines, recursive pane trees, rendering, process management, terminal geometry, and how unbelievably complicated the rectangle I type commands into actually is. For the final test, I cloned Aster into a completely fresh directory and ran: cargo run --release AND IT WORKED. SO YAYYYYYY!!!!", "repo": "https://github.com/srithimahi/Aster", "demo": "https://github.com/srithimahi/Aster/blob/main/README.md"}]...
|
[{"post_id": 84131, "ts": "202 [{"post_id": 84131, "ts": "2026-10-29T04:55:08Z", "hours": 7.2875, "text": "Devlog-7 in the last devlog I said: “AND THENNNNN ASTER IS DONE (for now)” WELLLLLL I DID IT. ASTER IS DONEEEEEEEEE but obviously not before it found 700 new ways to break. THE SYSTEM MONITOR GOT AN UPGRADEEEE The process list is actually useful now instead of being a giant wall of processes. I added process filtering! Press / , type a process name or PID, and Aster filters the list live. You can select a process, inspect it, and kill it. which led to the realization that perhaps my terminal should not casually murder processes with no confirmation. SOOO process killing now has a confirmation screen AND Aster prevents itself from killing its own process. no Aster-on-Aster violence allowed. COMMANDS GOT BETTERRRR The : command system got more polish! It now has command history with the up/down arrows, autocomplete got improved, and themes now support things like: :theme next :theme previous Aster also keeps track of the currently active theme. AND themes are dynamic now! Aster discovers .toml files from the themes/ folder instead of having every theme hardcoded. The final themes are Stardance, Nebula, Sunshine, and Mono. TAB NAMES + TEXT SELECTION Tabs can now have their own names!! I also polished text selection so the mouse becomes a text cursor only when you’re actually hovering over terminal text, and clicking random empty space doesn’t create a mysterious selection from the void. tiny details but they make Aster feel SO much more finished. THE FOREHEAD oh my god. When I resized Aster vertically, sometimes a giant empty region appeared ABOVE all the terminal content. BUT I FIXED IT SO IM DONE FINAL CLEANUP I deleted all the debugging stuff that accumulated while I was fighting these bugs, including my PTY byte debugger. I also discovered a ReloadConfig command that did absolutely nothing except print: Config reload coming next yeahhhhh that got removed. NO FAKE FEATURES ALLOWED. AND THEN THE SCARIEST TEST I pushed everything. Made a completely fresh clone of the GitHub repo. Ran: cargo run --release AND IT WORKED. fonts worked. themes worked. terminal worked. everything launched from the clean clone. SO IT’S NOT JUST WORKING BECAUSE MY COMPUTER HAS DEVELOPED A PERSONAL RELATIONSHIP WITH THE CODEBASE. ASTER IS DONEEEEE I started this project thinking: “wait terminals are cool, what if I make one” while knowing basically no Rust. and somehow ended up learning SOOOOO much Aster started as a terminal emulator + multiplexer and slowly became a terminal-centered developer workspace. There are SO MANY directions I could take it later. BUT NOT TODAY. because if I add another feature I will never ship this thing. NEXTTTT ASTER IS GETTING SHIPPED. I MADE A TERMINAL WHAT THE HELL"}, {"post_id": 76540, "ts": "2026-10-03T21:27:22Z", "hours": 9.3839, "text": "Devlog-6 in the last devlog I ended by saying “Next I want a shortcuts command to show all the shortcuts cause I am STARTING TO FORGET EVERYTHING” …yeahhhh, i made that and an entire command system Aster has COMMANDSSSSS Before this, every action was linked to a keyboard shortcut. That was a mildly questionable. SO i made shortcuts for tabs, panes, zooming, focusing the panes, search, copy, paste, opening the system monitor, blah blah and I was reaching the point where I MADE THE TERMINAL AND EVEN I COULDN’T REMEMBER HOW TO USE IT. So instead of having all those actions just scattered around the keyboard handling code part, so I made a command system So things like NewTab, CloseTab, SplitVertical, SplitHorizontal, and much more are now commands The keyboard shortcuts just execute those commands now instead of each shortcut having its own completely separate logic. whichhhhh also meant I could use those exact same commands from other places… SHORTCUT MENU I did the thing yep! i made the menu There is a shortcuts overlay now that shows the shortcuts for tabs, panes, navigation and other terminal commands. So I no longer need to remember ANYTHING to summon the features. very useful considering this project now has TOOOO MANY CONTROLS COMMAND PALETTE There is also a searchable command palette now. So when you open it and start typing it, it would filter out the available aster commands. Then you can select any one command you like and execute it just by clicking enter ASTER HAS : COMMANDS ok my absolute favourite feature. If you just type : in a fresh terminal input, Aster would intercept and open its OWN COMMAND LINE AHGHHHH. I can now do things like :themes , :monitor, :shortcuts and these are SPECIFICALLY aster command, not for powershell BTW IT ALSO HAS AUTOCOMPLETE when you click tab after you typed some of your commands out. A BUNCH MORE THEMES I have been planning this for too long and NOW THEY EXIST Now Aster has themes like: stardance, nebula, sunshine, mono and you can change them in the shortcuts command line. NEXTTTT Aster is much much closer to where I wanted it to be. I only want some more patches here and there for this iteration of this project FOR THE FINAL STRETCH: Polish the Monitor Make the process killing a bit more safer Polish the theme and command UI Hunt down bugs and make everything feel finished AND THENNNNN ASTER IS DONE (for now)"}, {"post_id": 74299, "ts": "2026-09-27T04:33:19Z", "hours": 9.6747, "text": "Devlog-5 soooooo last devlog, I said I wanted to add some uniquely dedicated panes, something specific like something that could monitor RAM and memory while I was working. … I may have gotten a little too further in that… like a 10 hours too further SO ALL PANES WONT JUST BE TERMINALS Originally every pane in Aster was fundamentally a terminal. That did work just fine, but I wanted something more cause i like torturing myself… and I refactored the pane’s architecture. Instead of a pane directly holding a terminal, panes can now be different types using a rust enum called PaneKind So, a pane is just like a container and anything in it can be different and it took a longggg longggg time to change all the code for this, but i can add SOOO many more stuff cause of this (i will tease them in the coming up section) System Monitor and then i just accidentally made my first specific pane Ctrl+Shift+M now splits the current pane and opens up a super live System Monitor and it displays CPU usage, Memory usage, Disk usage, Network activity, System uptime, Running processes. Both the CPU and memory have cute little bars. (they use sysinfo to update btw) Process List & Process Inspector and Terminator You can select a process and pressing I or Enter to open up a specific process inspector and it shows the process specific stuff like specific things like name, pid, cpu usage and memory usage. and esc or q can get u out of the specific process. You can kill processes now! just by pressing k in the specific process inspector and saying yes to a confirmation. Though the kill still uses the stored pid, finds the corresponding process through sysinfo and it would request the OS terminate it. (I may have killed Aster… with Aster…) Originally I was just going to show the top five processes anddddd that lasted exactly one run, because I couldnt kill a process as it kept shifting as the cpu usage kept changing. So, i made it so u can see all the processes NEXT While making Aster I realised that WINDOWS TERMINAL ALREADY HAVE A LOT OF THE THINGS I WANTED. SO i am changing directions: instead of making aster just another customizable terminal, i want it to be more of a terminal-centered around developer workspace. SO THIS IS THE FIRST STEP. Next, i want a shortcuts command to show all the shortcuts cause i myself am starting to forget everything. AI Agent monitor so you can see what your agents are doing meanwhile u work. AND yes i need to make the themes… and fix the bugs…"}, {"post_id": 72954, "ts": "2026-09-24T03:18:54Z", "hours": 8.6644, "text": "Devlog-4! So last time, we were done with vertical panes, being able to have multiple tabs and plenty of shortcut keys to move through the tabs, cursor and panes much quicker. PANE STUFF I first added borders to each individual pane because it became visually messy without them and the ability to be able to resize the panes because some panes are more important than the other, obvi. I did the resizing using a regular hand dragging motion and using some simple math using the old width and height and the current hand grabbing motion’s position to calculate the new position of the panes. Switching between panes have become much easier with its own shortcuts: ctrl + shift + (any arrow keys) to move between them. Apparently this was called spatial navigation when I was researching abt it. TEXT SELECTION!!! I did add text selection and copy and paste, because I got sick and tired of having to test some long and painful commands by hand, instead of just copy-pasting it from the internet. Paste => Ctrl + Shift + V and to copy just select the text by hovering over the text, and click and drag the text and Copy => Ctrl + C Added a much more accurate scrollback to retrieve your terminal commands from even before you opened aster. SEARCH UR STUFF you can now also search whatever previous commands you typed into using Ctrl + Shift + F. Yes, I did make it run ASTER aster Aster 100 times to test search😭 so it will do the regular selection point from the start to end of the search terms and show the amount of times it has appeared in the terminal it is just a super simple for loop searching for the particular search terms and the thing is rust is fast as hell, even if there are 10000 instances, rust is super fast just like c++… i have a feeling i fell out of love with java and found someone new Moving on by the next devlog, I want to add some uniquely dedicated panes, maybe a pane that would monitor the RAM and memory usage on the side while you are working on your main pane or even a AI agent pane that would update on the progress of your AI agents. I also want to add a lot more themes, and just make the core template aesthetically pleasing while retaining its bare personality. (and fix the bugs… i have too much of them."}, {"post_id": 70885, "ts": "2026-09-19T23:16:46Z", "hours": 9.8094, "text": "Devlog-3 OKAY ASTER IS ACTUALLY BECOMING A TERMINAL NOW Last devlog I finally had the terminal grid rendering, the cursor moving around, and text actually showing up on screen. Which meant obviously the next reasonable step was: MAKE EVERYTHING INTERACTIVE. and then somehow I ended up making a multiplexer too. ⸻ SCROLLINGGGG First I added scrolling. Once the terminal reaches the bottom of the screen, I obviously can’t just let the cursor continue its journey into the void. So now when Aster runs out of rows, the existing terminal content can scroll upward to make space for the next line. I also started keeping the older lines around so I can move through terminal history instead of everything disappearing the second it leaves the visible grid. ⸻ KEYBOARD INPUT THENNN I started making the terminal properly interactive. I added keyboard handling for normal typing, backspace, and special keys. Arrow keys now work too: Up Down Left Right which is important because PowerShell needs those actual key sequences for things like moving around your input and navigating command history. It is VERY satisfying being able to actually type and edit commands inside the terminal I MADE. ⸻ AND THEN I DECIDED ONE TERMINAL WASN’T ENOUGH This is supposed to be a terminal emulator AND multiplexer. SOOOO… TABS. Aster can now have multiple terminal sessions open in the same window. I added shortcuts for creating tabs, switching between them, and closing them. Each tab has its own terminal session, so I can jump between completely separate terminals without opening another Aster window. THIS WAS THE POINT WHERE IT STARTED FEELING LIKE AN ACTUAL APPLICATION. ⸻ BUT APPARENTLY TABS WERE ALSO NOT ENOUGH I STARTED THE MULTIPLEXER. Now a tab can be split into multiple panes so I can have two or more terminals visible at the SAME TIME. Instead of just storing a list of panes, I started representing the layout like a TREE. A node can either be: an actual terminal pane OR a split containing more nodes which means those splits can contain MORE splits. ⸻ RUST UPDATE I am learning an unreasonable amount of Rust from this. Especially ownership and borrowing because now I have tabs containing pane trees containing terminals containing state and Rust would VERY MUCH like to know exactly who owns all of it. Honestly though, it is starting to click. ⸻ ASTER NOW HAS terminal rendering cursor movement scrolling scrollback keyboard input backspace/editing arrow keys multiple tabs multiple terminal sessions split panes recursive pane layouts which is SLIGHTLY more than the suspicious Vec I had a couple devlogs ago. ⸻ NEXTTTT Now that the basic multiplexer exists, I want to make actually USING all these panes feel good. So next: better pane navigation resizing mouse interactions more terminal behavior and inevitably fixing whatever horrifying bugs I have created by making terminals recursively multiply"}, {"post_id": 67738, "ts": "2026-09-13T23:27:08Z", "hours": 3.7961, "text": "Devlog-2 ASTER IS STARTING TO ACTUALLY LOOK LIKE A TERMINAL Last time I had the basic terminal state working, where every character on the screen is stored as a Cell inside a flat Vec. Which is cool and all… but a Vec full of letters is not particularly useful if I cannot actually SEE ANYTHING. SOOO I started working on actually rendering the terminal. ⸻ THE TERMINAL GRID Each cell stores a character and its formatting, and Aster converts an (x, y) position into the correct place in the Vec using: y * width + x So instead of having a giant 2D structure, the terminal screen is basically one long array that Aster interprets as rows and columns. Then the renderer can go through those cells and figure out where each character belongs on the screen. AND IT ACTUALLY DISPLAYS TEXT NOW. ⸻ CURSORRRR I also needed Aster to know where the next character should go. So the terminal keeps track of a cursor position. When a character is written, it gets placed into the cell at the cursor, then the cursor moves forward. When it reaches the end of a line, Aster can move down to the next one. Which sounds extremely obvious until you’re the one who has to tell the rectangle how typing works. ⸻ NEWLINES Then I worked on newline behavior. Instead of just throwing characters into the grid forever, Aster needs to understand when to move to another row and what should happen once the cursor reaches the bottom. This is where it started feeling less like “I rendered some text in a Rust window” and more like I was actually building terminal behavior. ⸻ RUST IS ALSO TRYING TO FIGHT ME Since this is my first actual Rust project, I am learning a LOT of Rust while building this. Ownership and borrowing are starting to make more sense, and I’m using structs/enums way more naturally now. The borrow checker and I still have disagreements. I usually lose. ⸻ NEXTTTT Now that Aster has an actual terminal grid, rendering, cursor movement, and basic writing behavior, I want to make it properly interactive. Next up: scrolling keyboard input editing text arrow keys backspace and eventually MULTIPLE TERMINALS because apparently building one terminal was not enough."}, {"post_id": 64426, "ts": "2026-09-08T19:55:04Z", "hours": 1.5822, "text": "Devlog-1 SOOOO I STARTED ASTER A fully customizable terminal emulator + multiplexer written in Rust. and this is also my first actual Rust project. because apparently I looked at Rust and thought the appropriate beginner project was a TERMINAL EMULATOR. I have done a little bit of Rust before, so I am not going in COMPLETELY blind, but I definitely had to dust up on things like borrowing, ownership, structs and enums before I could actually start building this. ⸻ OK BUT WHAT EVEN IS ASTER The goal with Aster is to build my own terminal emulator that I can customize however I want, while also having multiplexer features so I can eventually have multiple terminal sessions, tabs and split panes inside the same window. But before I can have all the cool multiplexer stuff… I need an actual terminal. SO THAT’S WHERE I STARTED. ⸻ THE CELL The first thing I made was a Cell. Basically every single character you see inside a terminal needs somewhere to exist. So instead of thinking of the terminal as one giant string of text, I’m treating it as a grid of individual cells. Each Cell can store a character and information about how that character should be formatted. So if Aster wants to display something like: hello that’s actually five separate cells containing: h e l l o which is weirdly fun to think about. ⸻ THE TERMINAL GRID Then I needed somewhere to store ALL of those cells. I could’ve represented the screen as a 2D structure, but instead I made the terminal grid using one flat Vec. So even though I think about the terminal as: (x, y) the actual data is stored in one long array. To find the correct cell, I convert the coordinates into an index using: y * width + x So if I know the terminal width and the (x, y) coordinate, I know EXACTLY which cell inside the Vec I need. This is basically the foundation for the entire terminal screen. ⸻ AND THEN THE GUI Once I had the terminal state starting to exist, I started working on the GUI. Because having a beautiful Vec full of characters somewhere in memory is great and all… BUT I WOULD LIKE TO ACTUALLY SEE MY TERMINAL. The next step is getting those cells onto the screen and making Aster actually behave like a terminal instead of just being a suspicious Rust data structure. ⸻ RUST SO FAR I am already getting WAY more comfortable with Rust from this. I already was too, because of C++ I understood what borrowing was before this project, but there is a very large difference between reading about borrowing and having the Rust compiler personally inform you that your plans are unacceptable. Enums are also starting to make a lot more sense now that I’m actually using them for something instead of learning them in isolation."}]...
|
Title: Aster by @srithimahi | Stardance
Devlogs:
Title: Aster by @srithimahi | Stardance
Devlogs:
Devlog-1 SOOOO I STARTED ASTER A fully customizable terminal emulator + multiplexer written in Rust. and this is also my first actual Rust project. because apparently I looked at Rust and thought the appropriate beginner project was a TERMINAL EMULATOR. I have done a little bit of Rust before, so I am not going in COMPLETELY blind, but I definitely had to dust up on things like borrowing, ownership, structs and enums before I could actually start building this. ⸻ OK BUT WHAT EVEN IS ASTER The goal with Aster is to build my own terminal emulator that I can customize however I want, while also having multiplexer features so I can eventually have multiple terminal sessions, tabs and split panes inside the same window. But before I can have all the cool multiplexer stuff… I need an actual terminal. SO THAT’S WHERE I STARTED. ⸻ THE CELL The first thing I made was a Cell. Basically every single character you see inside a terminal needs somewhere to exist. So instead of thinking of the terminal as one giant string of text, I’m treating it as a grid of individual cells. Each Cell can store a character and information about how that character should be formatted. So if Aster wants to display something like: hello that’s actually five separate cells containing: h e l l o which is weirdly fun to think about. ⸻ THE TERMINAL GRID Then I needed somewhere to store ALL of those cells. I could’ve represented the screen as a 2D structure, but instead I made the terminal grid using one flat Vec. So even though I think about the terminal as: (x, y) the actual data is stored in one long array. To find the correct cell, I convert the coordinates into an index using: y * width + x So if I know the terminal width and the (x, y) coordinate, I know EXACTLY which cell inside the Vec I need. This is basically the foundation for the entire terminal screen. ⸻ AND THEN THE GUI Once I had the terminal state starting to exist, I started working on the GUI. Because having a beautiful Vec full of characters somewhere in memory is great and all… BUT I WOULD LIKE TO ACTUALLY SEE MY TERMINAL. The next step is getting those cells onto the screen and making Aster actually behave like a terminal instead of just being a suspicious Rust data structure. ⸻ RUST SO FAR I am already getting WAY more comfortable with Rust from this. I already was too, because of C++ I understood what borrowing was before this project, but there is a very large difference between reading about borrowing and having the Rust compiler personally inform you that your plans are unacceptable. Enums are also starting to make a lot more sense now that I’m actually using them for something instead of learning them in isolation.
Devlog-2 ASTER IS STARTING TO ACTUALLY LOOK LIKE A TERMINAL Last time I had the basic terminal state working, where every character on the screen is stored as a Cell inside a flat Vec. Which is cool and all… but a Vec full of letters is not particularly useful if I cannot actually SEE ANYTHING. SOOO I started working on actually rendering the terminal. ⸻ THE TERMINAL GRID Each cell stores a character and its formatting, and Aster converts an (x, y) position into the correct place in the Vec using: y * width + x So instead of having a giant 2D structure, the terminal screen is basically one long array that Aster interprets as rows and columns. Then the renderer can go through those cells and figure out where each character belongs on the screen. AND IT ACTUALLY DISPLAYS TEXT NOW. ⸻ CURSORRRR I also needed Aster to know where the next character should go. So the terminal keeps track of a cursor position. When a character is written, it gets placed into the cell at the cursor, then the cursor moves forward. When it reaches the end of a line, Aster can move down to the next one. Which sounds extremely obvious until you’re the one who has to tell the rectangle how typing works. ⸻ NEWLINES Then I worked on newline behavior. Instead of just throwing characters into the grid forever, Aster needs to understand when to move to another row and what should happen once the cursor reaches the bottom. This is where it started feeling less like “I rendered some text in a Rust window” and more like I was actually building terminal behavior. ⸻ RUST IS ALSO TRYING TO FIGHT ME Since this is my first actual Rust project, I am learning a LOT of Rust while building this. Ownership and borrowing are starting to make more sense, and I’m using structs/enums way more naturally now. The borrow checker and I still have disagreements. I usually lose. ⸻ NEXTTTT Now that Aster has an actual terminal grid, rendering, cursor movement, and basic writing behavior, I want to make it properly interactive. Next up: scrolling keyboard input editing text arrow keys backspace and eventually MULTIPLE TERMINALS because apparently building one terminal was not enough.
Devlog-3 OKAY ASTER IS ACTUALLY BECOMING A TERMINAL NOW Last devlog I finally had the terminal grid rendering, the cursor moving around, and text actually showing up on screen. Which meant obviously the next reasonable step was: MAKE EVERYTHING INTERACTIVE. and then somehow I ended up making a multiplexer too. ⸻ SCROLLINGGGG First I added scrolling. Once the terminal reaches the bottom of the screen, I obviously can’t just let the cursor continue its journey into the void. So now when Aster runs out of rows, the existing terminal content can scroll upward to make space for the next line. I also started keeping the older lines around so I can move through terminal history instead of everything disappearing the second it leaves the visible grid. ⸻ KEYBOARD INPUT THENNN I started making the terminal properly interactive. I added keyboard handling for normal typing, backspace, and special keys. Arrow keys now work too: Up Down Left Right which is important because PowerShell needs those actual key sequences for things like moving around your input and navigating command history. It is VERY satisfying being able to actually type and edit commands inside the terminal I MADE. ⸻ AND THEN I DECIDED ONE TERMINAL WASN’T ENOUGH This is supposed to be a terminal emulator AND multiplexer. SOOOO… TABS. Aster can now have multiple terminal sessions open in the same window. I added shortcuts for creating tabs, switching between them, and closing them. Each tab has its own terminal session, so I can jump between completely separate terminals without opening another Aster window. THIS WAS THE POINT WHERE IT STARTED FEELING LIKE AN ACTUAL APPLICATION. ⸻ BUT APPARENTLY TABS WERE ALSO NOT ENOUGH I STARTED THE MULTIPLEXER. Now a tab can be split into multiple panes so I can have two or more terminals visible at the SAME TIME. Instead of just storing a list of panes, I started representing the layout like a TREE. A node can either be: an actual terminal pane OR a split containing more nodes which means those splits can contain MORE splits. ⸻ RUST UPDATE I am learning an unreasonable amount of Rust from this. Especially ownership and borrowing because now I have tabs containing pane trees containing terminals containing state and Rust would VERY MUCH like to know exactly who owns all of it. Honestly though, it is starting to click. ⸻ ASTER NOW HAS terminal rendering cursor movement scrolling scrollback keyboard input backspace/editing arrow keys multiple tabs multiple terminal sessions split panes recursive pane layouts which is SLIGHTLY more than the suspicious Vec I had a couple devlogs ago. ⸻ NEXTTTT Now that the basic multiplexer exists, I want to make actually USING all these panes feel good. So next: better pane navigation resizing mouse interactions more terminal behavior and inevitably fixing whatever horrifying bugs I have created by making terminals recursively multiply
Devlog-4! So last time, we were done with vertical panes, being able to have multiple tabs and plenty of shortcut keys to move through the tabs, cursor and panes much quicker. PANE STUFF I first added borders to each individual pane because it became visually messy without them and the ability to be able to resize the panes because some panes are more important than the other, obvi. I did the resizing using a regular hand dragging motion and using some simple math using the old width and height and the current hand grabbing motion’s position to calculate the new position of the panes. Switching between panes have become much easier with its own shortcuts: ctrl + shift + (any arrow keys) to move between them. Apparently this was called spatial navigation when I was researching abt it. TEXT SELECTION!!! I did add text selection and copy and paste, because I got sick and tired of having to test some long and painful commands by hand, instead of just copy-pasting it from the internet. Paste => Ctrl + Shift + V and to copy just select the text by hovering over the text, and click and drag the text and Copy => Ctrl + C Added a much more accurate scrollback to retrieve your terminal commands from even before you opened aster. SEARCH UR STUFF you can now also search whatever previous commands you typed into using Ctrl + Shift + F. Yes, I did make it run ASTER aster Aster 100 times to test search😭 so it will do the regular selection point from the start to end of the search terms and show the amount of times it has appeared in the terminal it is just a super simple for loop searching for the particular search terms and the thing is rust is fast as hell, even if there are 10000 instances, rust is super fast just like c++… i have a feeling i fell out of love with java and found someone new Moving on by the next devlog, I want to add some uniquely dedicated panes, maybe a pane that would monitor the RAM and memory usage on the side while you are working on your main pane or even a AI agent pane that would update on the progress of your AI agents. I also want to add a lot more themes, and just make the core template aesthetically pleasing while retaining its bare personality. (and fix the bugs… i have too much of them.
Devlog-5 soooooo last devlog, I said I wanted to add some uniquely dedicated panes, something specific like something that could monitor RAM and memory while I was working. … I may have gotten a little too further in that… like a 10 hours too further SO ALL PANES WONT JUST BE TERMINALS Originally every pane in Aster was fundamentally a terminal. That did work just fine, but I wanted something more cause i like torturing myself… and I refactored the pane’s architecture. Instead of a pane directly holding a terminal, panes can now be different types using a rust enum called PaneKind So, a pane is just like a container and anything in it can be different and it took a longggg longggg time to change all the code for this, but i can add SOOO many more stuff cause of this (i will tease them in the coming up section) System Monitor and then i just accidentally made my first specific pane Ctrl+Shift+M now splits the current pane and opens up a super live System Monitor and it displays CPU usage, Memory usage, Disk usage, Network activity, System uptime, Running processes. Both the CPU and memory have cute little bars. (they use sysinfo to update btw) Process List & Process Inspector and Terminator You can select a process and pressing I or Enter to open up a specific process inspector and it shows the process specific stuff like specific things like name, pid, cpu usage and memory usage. and esc or q can get u out of the specific process. You can kill processes now! just by pressing k in the specific process inspector and saying yes to a confirmation. Though the kill still uses the stored pid, finds the corresponding process through sysinfo and it would request the OS terminate it. (I may have killed Aster… with Aster…) Originally I was just going to show the top five processes anddddd that lasted exactly one run, because I couldnt kill a process as it kept shifting as the cpu usage kept changing. So, i made it so u can see all the processes NEXT While making Aster I realised that WINDOWS TERMINAL ALREADY HAVE A LOT OF THE THINGS I WANTED. SO i am changing directions: instead of making aster just another customizable terminal, i want it to be more of a terminal-centered around developer workspace. SO THIS IS THE FIRST STEP. Next, i want a shortcuts command to show all the shortcuts cause i myself am starting to forget everything. AI Agent monitor so you can see what your agents are doing meanwhile u work. AND yes i need to make the themes… and fix the bugs…
Devlog-6 in the last devlog I ended by saying “Next I want a shortcuts command to show all the shortcuts cause I am STARTING TO FORGET EVERYTHING” …yeahhhh, i made that and an entire command system Aster has COMMANDSSSSS Before this, every action was linked to a keyboard shortcut. That was a mildly questionable. SO i made shortcuts for tabs, panes, zooming, focusing the panes, search, copy, paste, opening the system monitor, blah blah and I was reaching the point where I MADE THE TERMINAL AND EVEN I COULDN’T REMEMBER HOW TO USE IT. So instead of having all those actions just scattered around the keyboard handling code part, so I made a command system So things like NewTab, CloseTab, SplitVertical, SplitHorizontal, and much more are now commands The keyboard shortcuts just execute those commands now instead of each shortcut having its own completely separate logic. whichhhhh also meant I could use those exact same commands from other places… SHORTCUT MENU I did the thing yep! i made the menu There is a shortcuts overlay now that shows the shortcuts for tabs, panes, navigation and other terminal commands. So I no longer need to remember ANYTHING to summon the features. very useful considering this project now has TOOOO MANY CONTROLS COMMAND PALETTE There is also a searchable command palette now. So when you open it and start typing it, it would filter out the available aster commands. Then you can select any one command you like and execute it just by clicking enter ASTER HAS : COMMANDS ok my absolute favourite feature. If you just type : in a fresh terminal input, Aster would intercept and open its OWN COMMAND LINE AHGHHHH. I can now do things like :themes , :monitor, :shortcuts and these are SPECIFICALLY aster command, not for powershell BTW IT ALSO HAS AUTOCOMPLETE when you click tab after you typed some of your commands out. A BUNCH MORE THEMES I have been planning this for too long and NOW THEY EXIST Now Aster has themes like: stardance, nebula, sunshine, mono and you can change them in the shortcuts command line. NEXTTTT Aster is much much closer to where I wanted it to be. I only want some more patches here and there for this iteration of this project FOR THE FINAL STRETCH: Polish the Monitor Make the process killing a bit more safer Polish the theme and command UI Hunt down bugs and make everything feel finished AND THENNNNN ASTER IS DONE (for now)
Devlog-7 in the last devlog I said: “AND THENNNNN ASTER IS DONE (for now)” WELLLLLL I DID IT. ASTER IS DONEEEEEEEEE but obviously not before it found 700 new ways to break. THE SYSTEM MONITOR GOT AN UPGRADEEEE The process list is actually useful now instead of being a giant wall of processes. I added process filtering! Press / , type a process name or PID, and Aster filters the list live. You can select a process, inspect it, and kill it. which led to the realization that perhaps my terminal should not casually murder processes with no confirmation. SOOO process killing now has a confirmation screen AND Aster prevents itself from killing its own process. no Aster-on-Aster violence allowed. COMMANDS GOT BETTERRRR The : command system got more polish! It now has command history with the up/down arrows, autocomplete got improved, and themes now support things like: :theme next :theme previous Aster also keeps track of the currently active theme. AND themes are dynamic now! Aster discovers .toml files from the themes/ folder instead of having every theme hardcoded. The final themes are Stardance, Nebula, Sunshine, and Mono. TAB NAMES + TEXT SELECTION Tabs can now have their own names!! I also polished text selection so the mouse becomes a text cursor only when you’re actually hovering over terminal text, and clicking random empty space doesn’t create a mysterious selection from the void. tiny details but they make Aster feel SO much more finished. THE FOREHEAD oh my god. When I resized Aster vertically, sometimes a giant empty region appeared ABOVE all the terminal content. BUT I FIXED IT SO IM DONE FINAL CLEANUP I deleted all the debugging stuff that accumulated while I was fighting these bugs, including my PTY byte debugger. I also discovered a ReloadConfig command that did absolutely nothing except print: Config reload coming next yeahhhhh that got removed. NO FAKE FEATURES ALLOWED. AND THEN THE SCARIEST TEST I pushed everything. Made a completely fresh clone of the GitHub repo. Ran: cargo run --release AND IT WORKED. fonts worked. themes worked. terminal worked. everything launched from the clean clone. SO IT’S NOT JUST WORKING BECAUSE MY COMPUTER HAS DEVELOPED A PERSONAL RELATIONSHIP WITH THE CODEBASE. ASTER IS DONEEEEE I started this project thinking: “wait terminals are cool, what if I make one” while knowing basically no Rust. and somehow ended up learning SOOOOO much Aster started as a terminal emulator + multiplexer and slowly became a terminal-centered developer workspace. There are SO MANY directions I could take it later. BUT NOT TODAY. because if I add another feature I will never ship this thing. NEXTTTT ASTER IS GETTING SHIPPED. I MADE A TERMINAL WHAT THE HELL
Ships:
ASTER IS DONEEEEE I MADE A TERMINAL. IN RUST. SOMEHOW. Aster is a custom terminal emulator + multiplexer I built basically from scratch while learning Rust. It started with me wondering what actually happens underneath a terminal. Then I learned that a terminal is NOT the shell, discovered PTYs and ANSI escape sequences, built my own terminal grid/parser/renderer, and accidentally entered one of the deepest rabbit holes of my life. Aster now has: PTY-backed PowerShell sessions ANSI/VT parsing + custom terminal rendering tabs and recursive split panes draggable pane resizing + zooming text selection, clipboard, scrollback and search dynamic pane/tab titles a built-in System Monitor process filtering, inspection and safe process killing Aster’s own : command system searchable command palette + shortcuts menu command history + autocomplete runtime themes dynamic theme discovery Stardance, Nebula, Sunshine and Mono themes The coolest architectural change happened when I realized panes didn’t have to contain terminals. I refactored Aster so panes can contain different tools, which is how the System Monitor became a first-class pane. That turned Aster from just a terminal + multiplexer into the beginning of a terminal-centered developer workspace. And OH MY GOD THE BUGS. I had ghost characters because I hadn’t implemented ANSI ECH. ConPTY and my terminal disagreed about their dimensions. I started this project knowing basically no Rust and ended up learning about ownership, PTYs, ANSI/VT sequences, terminal state machines, recursive pane trees, rendering, process management, terminal geometry, and how unbelievably complicated the rectangle I type commands into actually is. For the final test, I cloned Aster into a completely fresh directory and ran: cargo run --release AND IT WORKED. SO YAYYYYYY!!!!...
|
1793742519.3221617
|
1793828919.3221617
|
|
59945
|
alarm clock by @_jacy | Stardance
|
_jacy
|
0
|
1.23
|
0
|
[]
|
[{"post_id": 65076, "ts": "202 [{"post_id": 65076, "ts": "2026-09-09T22:52:14Z", "hours": 0.55, "text": "I have finished working on the case. There will be a top layer for the switches, then the bottom layer will be for mounting the pcb and hiding the electronics/cables in the back."}, {"post_id": 65041, "ts": "2026-09-09T21:12:46Z", "hours": 0.6833, "text": "I completely finished designing the PCB for the alarm clock, now onto the firmware."}]...
|
Title: alarm clock by @_jacy | Stardance
Devlogs: Title: alarm clock by @_jacy | Stardance
Devlogs:
I completely finished designing the PCB for the alarm clock, now onto the firmware.
I have finished working on the case. There will be a top layer for the switches, then the bottom layer will be for mounting the pcb and hiding the electronics/cables in the back....
|
1793638463.5227873
|
1794243263.5227873
|
|
59946
|
monsOS by @mons_reinus | Stardance
|
mons_reinus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: monsOS by @mons_reinus | Stardance
|
1793638464.7695956
|
1794243264.7695956
|
|
59947
|
my APOD site by @wertu | Stardance
|
wertu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: my APOD site by @wertu | Stardance
|
1793638465.6838224
|
1794243265.6838224
|
|
59948
|
My first slack bot! by @Squiglls | Stardance
|
Squiglls
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Squiglls | Stardanc Title: My first slack bot! by @Squiglls | Stardance...
|
1793638466.62454
|
1794243266.62454
|
|
59949
|
A calculator by @Wisso | Stardance
|
Wisso
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A calculator by @Wisso | Stardance
|
1793638467.5970137
|
1794243267.5970137
|
|
59950
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793739039.7359607
|
1794603039.7359607
|
|
59951
|
Fidget Cube by @ektoracc | Stardance
|
ektoracc
|
1
|
15.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T13:21:53Z", "hours": 15.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple interactive fidget cube in Onshape. Through the design process of this specific model, my Onshape mate skills definitely improved, since this project required different variants of mates compared to my previous Turbofan engine model. Would say I am proud of this design, but I had a lot of trouble designing the joystick area in order to make it have a full range of motion, so that’s one part I could perhaps improve in the near future.", "repo": "https://github.com/STektorEM/Stardance---Fidget-Cube/blob/main/README.md", "demo": "https://makerworld.com/en/models/3513371-fidget-cube"}]...
|
[{"post_id": 84288, "ts": "202 [{"post_id": 84288, "ts": "2026-10-29T12:24:35Z", "hours": 4.375, "text": "Final Devlog After 4 hours of my life spent trying to find a solution to the joystick problem, I accepted my fate and simply deleted one of the 2 gimbals; therefore, the joystick will not have full movement, even though it will be good enough. For the ones that will actually take the time to print the whole thing, I saved y’all some material😉"}, {"post_id": 73186, "ts": "2026-09-24T15:34:21Z", "hours": 3.3758, "text": "Second-to-last devlog I finally managed to assemble almost everything together; that includes: -Switch -Switch casing -Walls -rods -Gears (both the 25-tooth and the 10-tooth one) -rolling ball (which doesn’t quite look like it’s moving in the video) -Spinner The very last thing I have to do is assemble the joystick mechanism, which I am guessing will pure pain to do, and then I’m done!"}, {"post_id": 70674, "ts": "2026-09-19T15:56:03Z", "hours": 2.715, "text": "Because the last design wasn’t only terrible but also unfinished, I focused on the joystick, which ended up taking a lot more time than expected. I shortened it since it wouldn’t fit in the cube, added the spring that will hold the stick in the middle in place, all the connectors, and the cap. The proportions compared to the fidget cube are still off by quite a lot. The part that genuinely scares me, though, is the mate connectors, which will definitely take a lot of time"}, {"post_id": 67658, "ts": "2026-09-13T20:13:38Z", "hours": 1.9058, "text": "Devlog #3 After redesigning the switch and making it thicker, I got into the joystick part, where I had a lot of trouble for no reason at all. After several concepts, I came up with this idea, featuring 2 bridges that will be able to move freely on the x and z axes, making the joystick movable in all directions."}, {"post_id": 65577, "ts": "2026-09-10T20:15:07Z", "hours": 1.3992, "text": "Devlog #2 Remade the side with the gears and made it cleaner and more refined, while also adding a place for a rolling sphere. I also designed a simple switch mechanism, which, when 3D-printed, would, in theory, make a satisfying clicking sound."}, {"post_id": 64438, "ts": "2026-09-08T20:19:00Z", "hours": 1.2614, "text": "Devlog #1 With school starting and me being fresh out of ideas for CAD, I decided to start on an anti-stress fidget cube, which everyone has used at least 3 times in their lifetime fs. Proportions are off as HELL, but anyway. Did the first 2 sides (almost) and am now aiming to clock in more time to get that certificate. Shi lowk looking kinda fire tho. (it doesn’t)."}]...
|
Title: Fidget Cube by @ektoracc | Stardance
Devlo Title: Fidget Cube by @ektoracc | Stardance
Devlogs:
Devlog #1 With school starting and me being fresh out of ideas for CAD, I decided to start on an anti-stress fidget cube, which everyone has used at least 3 times in their lifetime fs. Proportions are off as HELL, but anyway. Did the first 2 sides (almost) and am now aiming to clock in more time to get that certificate. Shi lowk looking kinda fire tho. (it doesn’t).
Devlog #2 Remade the side with the gears and made it cleaner and more refined, while also adding a place for a rolling sphere. I also designed a simple switch mechanism, which, when 3D-printed, would, in theory, make a satisfying clicking sound.
Devlog #3 After redesigning the switch and making it thicker, I got into the joystick part, where I had a lot of trouble for no reason at all. After several concepts, I came up with this idea, featuring 2 bridges that will be able to move freely on the x and z axes, making the joystick movable in all directions.
Because the last design wasn’t only terrible but also unfinished, I focused on the joystick, which ended up taking a lot more time than expected. I shortened it since it wouldn’t fit in the cube, added the spring that will hold the stick in the middle in place, all the connectors, and the cap. The proportions compared to the fidget cube are still off by quite a lot. The part that genuinely scares me, though, is the mate connectors, which will definitely take a lot of time
Second-to-last devlog I finally managed to assemble almost everything together; that includes: -Switch -Switch casing -Walls -rods -Gears (both the 25-tooth and the 10-tooth one) -rolling ball (which doesn’t quite look like it’s moving in the video) -Spinner The very last thing I have to do is assemble the joystick mechanism, which I am guessing will pure pain to do, and then I’m done!
Final Devlog After 4 hours of my life spent trying to find a solution to the joystick problem, I accepted my fate and simply deleted one of the 2 gimbals; therefore, the joystick will not have full movement, even though it will be good enough. For the ones that will actually take the time to print the whole thing, I saved y’all some material😉
Ships:
I made a simple interactive fidget cube in Onshape. Through the design process of this specific model, my Onshape mate skills definitely improved, since this project required different variants of mates compared to my previous Turbofan engine model. Would say I am proud of this design, but I had a lot of trouble designing the joystick area in order to make it have a full range of motion, so that’s one part I could perhaps improve in the near future....
|
1793742533.4152153
|
1793828933.4152153
|