|
10101
|
macropad by @mattheww | Stardance
|
mattheww
|
0
|
0.31
|
0
|
[]
|
[{"post_id": 4614, "ts": "2026 [{"post_id": 4614, "ts": "2026-06-08T00:06:04Z", "hours": 0.3106, "text": "macropad tingy"}]...
|
Title: macropad by @mattheww | Stardance
Devlogs: Title: macropad by @mattheww | Stardance
Devlogs:
macropad tingy...
|
1792795752.3236861
|
1793400552.3236861
|
|
10102
|
MyCroPad by @db34 | Stardance
|
db34
|
0
|
7.82
|
0
|
[]
|
[{"post_id": 26298, "ts": "202 [{"post_id": 26298, "ts": "2026-07-11T00:39:32Z", "hours": 1.0, "text": "CADding Case & PCB Finalization (Sec. 7 & 8) Today I did a final check-over of the PCB, in order to get the correct sizing for my case, which I began and almost finished work on. P.S. Fusion, i love u but u can be SO ANNOYING at times Roadmap: Completed Sections: 1: Getting Started with a Schematic 2: Beginning Wiring & Case, realizing it was all wrong, starting over 3: Creating 2.0 Schematic 4: Wiring 2.0 PCB 5: Troubleshooting 2.0 PCB 6: Adding Silkscreens 7: Final PCB Check 8: Design Case Incomplete Sections: 9: Final Check-over of Everything 10: Create QMK Firmware 11: Submission of MyCroPad! Section 7: Final PCB Check Hours 6:30-6:45 Just did a simple check-over of the PCB and finalized the sizing so that I could move on to the next section: Section 8: Design Case Hours 6:45-7:30 Made the 3d model of most of the case. Now I just need to make some cutouts so that my awesome silkscreens are visible ;P"}, {"post_id": 25654, "ts": "2026-07-10T02:06:58Z", "hours": 6.8178, "text": "My first 6 & 1/2hrs I hadn’t figured out syncing all my Lapse with Stardance, so this is going to make up for the dev blogs I would have made in that time. This is gonna be a long one. Roadmap: Completed Sections: 1: Getting Started with a Schematic 2: Beginning Wiring & Case, realizing it was all wrong, starting over 3: Creating 2.0 Schematic 4: Wiring 2.0 PCB 5: Troubleshooting 2.0 PCB 6: Adding Silkscreens Incomplete Sections: 7: Final PCB Check 8: Design Case 9: Final Check-over of Everything 10: Create QMK Firmware 11: Submission of MyCroPad! Alright, let’s get started: Section 1: Getting Started with a Schematic Hours 0-1:30 I was very inexperienced when I started this (well, I had no experience at all) so I didn’t do very well on my first try. I made a simple 4-key WASD pad and jumped straight from schematic to case without designing a PCB. I really don’t know what I was thinking. Section 2: Beginning Wiring & Case, realizing it was all wrong, starting over Hours 1:30-2 Midway through designing my case, I realized I had to change a few things. For one, it has to be unique and not follow the directions exactly to the letter, as I was. (skipping a few necessary parts ofc) I decided it would be best to just start over. Section 3: Creating 2.0 Schematic Hours 2-3:45 Starting over completely, I created a 3x3 key matrix, adding a rotary encoder and an OLED screen to top it all off. Maybe this was a bit ambitious now that I think back on it. I had a bit of trouble finding correct footprints for everything, but it worked out in the end. Section 4: Wiring 2.0 PCB Hours 3:45-5:15 I realized a few times in here I was doing things wrong, but I learned a lot along the way and ended with what I hope is a job well done. Section 5: Troubleshooting 2.0 PCB Hours ??? Now that I think of it, I can’t remember doing this for 2.0. I’ll go back and do it again. Section 6: Adding Silkscreens Hours 5:15-6:30 This was the most fun part of the whole thing so far. (Probably why I spent so much time on it) I added a TON of silkscreens, shown in the screenshot attached, including the Mandalorian, Carl Pei (my role model), credits to Fusion and KiCad (the software used), a Hack Club logo, and a cat for obvious reasons. ##That’s all for now, thanks for reading, please support my project and thanks so much if you do. This has really been a fun project and I’ve had so much fun doing something actually cool and learning along the way."}]...
|
Title: MyCroPad by @db34 | Stardance
Devlogs:
My Title: MyCroPad by @db34 | Stardance
Devlogs:
My first 6 & 1/2hrs I hadn’t figured out syncing all my Lapse with Stardance, so this is going to make up for the dev blogs I would have made in that time. This is gonna be a long one. Roadmap: Completed Sections: 1: Getting Started with a Schematic 2: Beginning Wiring & Case, realizing it was all wrong, starting over 3: Creating 2.0 Schematic 4: Wiring 2.0 PCB 5: Troubleshooting 2.0 PCB 6: Adding Silkscreens Incomplete Sections: 7: Final PCB Check 8: Design Case 9: Final Check-over of Everything 10: Create QMK Firmware 11: Submission of MyCroPad! Alright, let’s get started: Section 1: Getting Started with a Schematic Hours 0-1:30 I was very inexperienced when I started this (well, I had no experience at all) so I didn’t do very well on my first try. I made a simple 4-key WASD pad and jumped straight from schematic to case without designing a PCB. I really don’t know what I was thinking. Section 2: Beginning Wiring & Case, realizing it was all wrong, starting over Hours 1:30-2 Midway through designing my case, I realized I had to change a few things. For one, it has to be unique and not follow the directions exactly to the letter, as I was. (skipping a few necessary parts ofc) I decided it would be best to just start over. Section 3: Creating 2.0 Schematic Hours 2-3:45 Starting over completely, I created a 3x3 key matrix, adding a rotary encoder and an OLED screen to top it all off. Maybe this was a bit ambitious now that I think back on it. I had a bit of trouble finding correct footprints for everything, but it worked out in the end. Section 4: Wiring 2.0 PCB Hours 3:45-5:15 I realized a few times in here I was doing things wrong, but I learned a lot along the way and ended with what I hope is a job well done. Section 5: Troubleshooting 2.0 PCB Hours ??? Now that I think of it, I can’t remember doing this for 2.0. I’ll go back and do it again. Section 6: Adding Silkscreens Hours 5:15-6:30 This was the most fun part of the whole thing so far. (Probably why I spent so much time on it) I added a TON of silkscreens, shown in the screenshot attached, including the Mandalorian, Carl Pei (my role model), credits to Fusion and KiCad (the software used), a Hack Club logo, and a cat for obvious reasons. ##That’s all for now, thanks for reading, please support my project and thanks so much if you do. This has really been a fun project and I’ve had so much fun doing something actually cool and learning along the way.
CADding Case & PCB Finalization (Sec. 7 & 8) Today I did a final check-over of the PCB, in order to get the correct sizing for my case, which I began and almost finished work on. P.S. Fusion, i love u but u can be SO ANNOYING at times Roadmap: Completed Sections: 1: Getting Started with a Schematic 2: Beginning Wiring & Case, realizing it was all wrong, starting over 3: Creating 2.0 Schematic 4: Wiring 2.0 PCB 5: Troubleshooting 2.0 PCB 6: Adding Silkscreens 7: Final PCB Check 8: Design Case Incomplete Sections: 9: Final Check-over of Everything 10: Create QMK Firmware 11: Submission of MyCroPad! Section 7: Final PCB Check Hours 6:30-6:45 Just did a simple check-over of the PCB and finalized the sizing so that I could move on to the next section: Section 8: Design Case Hours 6:45-7:30 Made the 3d model of most of the case. Now I just need to make some cutouts so that my awesome silkscreens are visible ;P...
|
1793418909.1696339
|
1794023709.1696339
|
|
10103
|
My AI Clone by @the_middle_school_maestro_MCH | St My AI Clone by @the_middle_school_maestro_MCH | Stardance...
|
the_middle_school_maestro_MCH
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My AI Clone by @the_middle_school_maestro_M Title: My AI Clone by @the_middle_school_maestro_MCH | Stardance...
|
1793328979.0587096
|
1793933779.0587096
|
|
10104
|
Jibblet by @RishuKamboj | Stardance
|
RishuKamboj
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T16:41:07Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Jibblet is a Slack Bot which has the capabilities of a text generating ai! You can talk all day long with Jibblet or ask it for some random facts about cats or nasa. It was pretty easy to setup thanks to the guide and i figured out how to add other apis. I used free apis from google ai studio , /jibblet-reason uses gemini-3.1-pro-preview where as tagging the bot uses gemini-3.6-flashh. You can head over to my slack channel to test it out or just invite jibblet to your own channel.", "repo": "https://github.com/rydei/Jibblet", "demo": "https://hackclub.enterprise.slack.com/archives/C0BL85E4WA1"}]...
|
[{"post_id": 36374, "ts": "202 [{"post_id": 36374, "ts": "2026-07-28T13:28:33Z", "hours": 3.4806, "text": "HEYOOOOOO! been a while since ive done anything on stardance. Started working on Jibblet again to make it great. Added ai support using api keys from google ai studio and random nasa facts from an api key that i found in my mail."}, {"post_id": 5527, "ts": "2026-06-09T10:36:53Z", "hours": 0.4442, "text": "Started building the slack bot, ran into ‘no variables found’ for like 10 times before i realised i named .env file tokens.env :’)"}]...
|
Title: Jibblet by @RishuKamboj | Stardance
Devlog Title: Jibblet by @RishuKamboj | Stardance
Devlogs:
Started building the slack bot, ran into ‘no variables found’ for like 10 times before i realised i named .env file tokens.env :’)
HEYOOOOOO! been a while since ive done anything on stardance. Started working on Jibblet again to make it great. Added ai support using api keys from google ai studio and random nasa facts from an api key that i found in my mail.
Ships:
Jibblet is a Slack Bot which has the capabilities of a text generating ai! You can talk all day long with Jibblet or ask it for some random facts about cats or nasa. It was pretty easy to setup thanks to the guide and i figured out how to add other apis. I used free apis from google ai studio , /jibblet-reason uses gemini-3.1-pro-preview where as tagging the bot uses gemini-3.6-flashh. You can head over to my slack channel to test it out or just invite jibblet to your own channel....
|
1793436517.0225132
|
1793522917.0225132
|
|
10105
|
SchoolPool by @dxnkey | Stardance
|
dxnkey
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T21:15:28Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "🚗 SchoolPool is live! 🚗 Pool together. Lift each other. Introducing carpool matching for school communities. Students, parents, and staff can post and claim rides within their own verified school circle. Try it now, no signup required: https://github.com/guptaronav/SchoolPool/releases/tag/v1.1.0 Download the zip, drop it into the iOS Simulator, tap Mock Sign In, and you’re in. Please give me a 9 because I spent forever making this and hopefully with enough stardust I can get the apple developer license to deploy this on the app store!!!", "repo": "https://github.com/guptaronav/SchoolPool", "demo": "https://guptaronav.github.io/SchoolPool/"}]...
|
[{"post_id": 62485, "ts": "202 [{"post_id": 62485, "ts": "2026-09-05T21:07:32Z", "hours": 1.3028, "text": "Devlog #4 – SchoolPool I didn’t have an apple developer account when making this project, so rather than using TestFlight, I had to make an alternative. I set up GitHub Actions to build the app straight from the repo, zip it up, and attach it to a GitHub release automatically every time I push a version tag. Anyone can download that zip, drag it into their own Simulator, and run the real app in a couple minutes."}, {"post_id": 26492, "ts": "2026-07-11T09:49:41Z", "hours": 1.5975, "text": "Devlog #3 – SchoolPool Picked the project back up after a couple of days away and spent the first stretch just untangling repo state — the iOS repo had diverged from GitHub (turns out global GPG signing was making merges silently hang), AdminViewModel had somehow been emptied out with a duplicate copy floating around, and the Firebase service account key wasn’t gitignored. Got all of that reconciled, merged, and pushed, then ran the full test suite: 41 unit tests green. Built and launched the app on the iPhone 16 simulator, re-seeded the demo school and rides, and grabbed fresh screenshots of a living ride feed. Then I audited every source file for bugs and dead weight, and it turned up something genuinely bad: approving a verification request never actually updated the student’s user doc, so an approved student would stay stuck on the pending screen forever. On top of that, the admin review dashboard was fully built but unreachable — no navigation path led to it at all. Fixed both: approve/reject now flips the request and the user’s status + school in one atomic batch write, and the dashboard now lives in an Admin tab that only appears for school admins. The backend got a matching rules pass too — school admins can now actually write verification status, ride requests and verification requests are validated against school boundaries, and rating reads are restricted to ride participants so nobody can scrape strangers’ ratings. All validated in the Firebase emulator and committed. Two loose ends for next time: the backend repo has no git remote configured, so those commits only exist on my machine, and the new rules still need a firebase deploy to actually hit production."}, {"post_id": 24575, "ts": "2026-07-08T08:02:12Z", "hours": 1.0264, "text": "Devlog #2 – SchoolPool Spent the session auditing and tightening the SchoolPool backend on the Spark plan. I found that any user could self-grant verified/schoolAdmin/adminSchoolIds at doc-create, and a driver could rewrite any ride field. Plus ratings could target strangers and rideRequests could forge a driverId to push-spam anyone. Also, the school search was fully broken. So I fixed both of them! :P"}, {"post_id": 23993, "ts": "2026-07-07T08:12:56Z", "hours": 2.675, "text": "Devlog #1 – SchoolPool Got all ten core features built and the app running on the simulator this week — creating and finding rides, booking seats, live ride status, chat, ratings, trip history, the works. Wired up the Firebase backend too and deployed the security rules and indexes, then seeded a fake school with a handful of rides so the discovery feed actually looks alive instead of empty. Hit one wall: I’m still on Firebase’s free plan, which won’t let me turn on Cloud Storage, so the student-ID verification upload just errors out — there’s literally no bucket for the photo to land in. The code itself is fine, it just needs me to upgrade the plan. For now I’m skipping verification by flagging my test account as verified directly in the database. So the whole ride flow is working end to end and looks the way I wanted. The one broken piece is broken for a billing reason, not a code reason, which I’ll take. Next up: upgrade the plan to light up Storage + push notifications, then grab real screenshots for the App Store."}]...
|
Title: SchoolPool by @dxnkey | Stardance
Devlogs: Title: SchoolPool by @dxnkey | Stardance
Devlogs:
Devlog #1 – SchoolPool Got all ten core features built and the app running on the simulator this week — creating and finding rides, booking seats, live ride status, chat, ratings, trip history, the works. Wired up the Firebase backend too and deployed the security rules and indexes, then seeded a fake school with a handful of rides so the discovery feed actually looks alive instead of empty. Hit one wall: I’m still on Firebase’s free plan, which won’t let me turn on Cloud Storage, so the student-ID verification upload just errors out — there’s literally no bucket for the photo to land in. The code itself is fine, it just needs me to upgrade the plan. For now I’m skipping verification by flagging my test account as verified directly in the database. So the whole ride flow is working end to end and looks the way I wanted. The one broken piece is broken for a billing reason, not a code reason, which I’ll take. Next up: upgrade the plan to light up Storage + push notifications, then grab real screenshots for the App Store.
Devlog #2 – SchoolPool Spent the session auditing and tightening the SchoolPool backend on the Spark plan. I found that any user could self-grant verified/schoolAdmin/adminSchoolIds at doc-create, and a driver could rewrite any ride field. Plus ratings could target strangers and rideRequests could forge a driverId to push-spam anyone. Also, the school search was fully broken. So I fixed both of them! :P
Devlog #3 – SchoolPool Picked the project back up after a couple of days away and spent the first stretch just untangling repo state — the iOS repo had diverged from GitHub (turns out global GPG signing was making merges silently hang), AdminViewModel had somehow been emptied out with a duplicate copy floating around, and the Firebase service account key wasn’t gitignored. Got all of that reconciled, merged, and pushed, then ran the full test suite: 41 unit tests green. Built and launched the app on the iPhone 16 simulator, re-seeded the demo school and rides, and grabbed fresh screenshots of a living ride feed. Then I audited every source file for bugs and dead weight, and it turned up something genuinely bad: approving a verification request never actually updated the student’s user doc, so an approved student would stay stuck on the pending screen forever. On top of that, the admin review dashboard was fully built but unreachable — no navigation path led to it at all. Fixed both: approve/reject now flips the request and the user’s status + school in one atomic batch write, and the dashboard now lives in an Admin tab that only appears for school admins. The backend got a matching rules pass too — school admins can now actually write verification status, ride requests and verification requests are validated against school boundaries, and rating reads are restricted to ride participants so nobody can scrape strangers’ ratings. All validated in the Firebase emulator and committed. Two loose ends for next time: the backend repo has no git remote configured, so those commits only exist on my machine, and the new rules still need a firebase deploy to actually hit production.
Devlog #4 – SchoolPool I didn’t have an apple developer account when making this project, so rather than using TestFlight, I had to make an alternative. I set up GitHub Actions to build the app straight from the repo, zip it up, and attach it to a GitHub release automatically every time I push a version tag. Anyone can download that zip, drag it into their own Simulator, and run the real app in a couple minutes.
Ships:
🚗 SchoolPool is live! 🚗 Pool together. Lift each other. Introducing carpool matching for school communities. Students, parents, and staff can post and claim rides within their own verified school circle. Try it now, no signup required: https://github.com/guptaronav/SchoolPool/releases/tag/v1.1.0 Download the zip, drop it into the iOS Simulator, tap Mock Sign In, and you’re in. Please give me a 9 because I spent forever making this and hopefully with enough stardust I can get the apple developer license to deploy this on the app store!!!...
|
1793271186.3512306
|
1793357586.3512306
|
|
10106
|
More Fingers! by @4arjun_m | Stardance
|
4arjun_m
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: More Fingers! by @4arjun_m | Stardance
|
1793235049.339774
|
1793839849.339774
|
|
10107
|
Untitled project by @nikhilkadam_comp | Stardance
|
nikhilkadam_comp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @nikhilkadam_comp | Sta Title: Untitled project by @nikhilkadam_comp | Stardance...
|
1793195485.0590658
|
1793800285.0590658
|
|
10108
|
Volatility Surface Builder by @Arnav_Garg | Starda Volatility Surface Builder by @Arnav_Garg | Stardance...
|
Arnav_Garg
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Volatility Surface Builder by @Arnav_Garg | Title: Volatility Surface Builder by @Arnav_Garg | Stardance...
|
1793213785.2592628
|
1793818585.2592628
|
|
10109
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792943466.921827
|
1793807466.921827
|
|
10110
|
Vencord Autoinstall by @snows_alt | Stardance
|
snows_alt
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T04:23:45Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a script that later turned into an executable to solve the issue of vencord randomly uninstalling when discord would update. To achieve this I first made a simple script to interact with the vencord installer CLI using subprocess. After this was done I made another script to automatically download a verify the integrity of the vencord installer CLI. After this I made another script that scheduled the running of the update script so it gets ran automatically on login. And then I packaged it all into a zip and EXE using pyinstaller and set that as a release! To try out the script you must have discord and vencord installed and to build it you need UV. Best of luck to anyone trying this out feel free to report any issues to me on GitHub!", "repo": "https://github.com/snqwq/Vencord-Autoinstall", "demo": "https://github.com/snqwq/Vencord-Autoinstall/releases/latest"}]...
|
[{"post_id": 7279, "ts": "2026 [{"post_id": 7279, "ts": "2026-06-12T04:13:05Z", "hours": 0.3656, "text": "Made a cool logo and updated readme :) All credit for the original vencord logo goes to the vencord team i literally just added autoinstall to the bottom trying to keep with the style and stuff, and it turned out pretty well I think."}, {"post_id": 7188, "ts": "2026-06-12T00:17:23Z", "hours": 3.0678, "text": "Made 0.1.0 of my script to automate vencord installation. The goal of this script is to prevent the occasional uninstallation of vencord whenever discord updates. All interaction with discord is through vencords own cli installer the script is just to automate its usage. Its currently only available for windows but linux support is hopefully going to happen soon :)"}]...
|
Title: Vencord Autoinstall by @snows_alt | Stardan Title: Vencord Autoinstall by @snows_alt | Stardance
Devlogs:
Made 0.1.0 of my script to automate vencord installation. The goal of this script is to prevent the occasional uninstallation of vencord whenever discord updates. All interaction with discord is through vencords own cli installer the script is just to automate its usage. Its currently only available for windows but linux support is hopefully going to happen soon :)
Made a cool logo and updated readme :) All credit for the original vencord logo goes to the vencord team i literally just added autoinstall to the bottom trying to keep with the style and stuff, and it turned out pretty well I think.
Ships:
I made a script that later turned into an executable to solve the issue of vencord randomly uninstalling when discord would update. To achieve this I first made a simple script to interact with the vencord installer CLI using subprocess. After this was done I made another script to automatically download a verify the integrity of the vencord installer CLI. After this I made another script that scheduled the running of the update script so it gets ran automatically on login. And then I packaged it all into a zip and EXE using pyinstaller and set that as a release! To try out the script you must have discord and vencord installed and to build it you need UV. Best of luck to anyone trying this out feel free to report any issues to me on GitHub!...
|
1793325441.038814
|
1793411841.038814
|
|
10111
|
My first slack bot! by @mostafasamy | Stardance
|
mostafasamy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @mostafasamy | Stard Title: My first slack bot! by @mostafasamy | Stardance...
|
1793415262.7564855
|
1794020062.7564855
|
|
10112
|
2D by @moayed_jouini | Stardance
|
moayed_jouini
|
0
|
3.82
|
0
|
[]
|
[{"post_id": 6170, "ts": "2026 [{"post_id": 6170, "ts": "2026-06-10T11:36:52Z", "hours": 3.82, "text": "my game"}]...
|
Title: 2D by @moayed_jouini | Stardance
Devlogs:
Title: 2D by @moayed_jouini | Stardance
Devlogs:
my game...
|
1793411355.6687553
|
1794016155.6687553
|
|
10113
|
My first slack bot! by @SuperTNT | Stardance
|
SuperTNT
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @SuperTNT | Stardanc Title: My first slack bot! by @SuperTNT | Stardance...
|
1793137970.3380127
|
1793742770.3380127
|
|
10114
|
My first slack bot! by @ovipuma51 | Stardance
|
ovipuma51
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @ovipuma51 | Stardan Title: My first slack bot! by @ovipuma51 | Stardance...
|
1793354111.9909074
|
1793958911.9909074
|
|
10115
|
fd-guardian by @husnain | Stardance
|
husnain
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: fd-guardian by @husnain | Stardance
|
1793425873.2868583
|
1794030673.2868583
|
|
10116
|
My awesome macropad! by @Magic_X | Stardance
|
Magic_X
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Magic_X | Stardanc Title: My awesome macropad! by @Magic_X | Stardance...
|
1793191696.0003438
|
1793796496.0003438
|
|
10117
|
My awesome macropad! by @Lunixx | Stardance
|
Lunixx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Lunixx | Stardance
|
1792802898.4362755
|
1793407698.4362755
|
|
10118
|
My awesome macropad! by @Rufus | Stardance
|
Rufus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Rufus | Stardance
|
1792742111.7825825
|
1793346911.7825825
|
|
10119
|
My awesome macropad! by @jocelyn | Stardance
|
jocelyn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @jocelyn | Stardanc Title: My awesome macropad! by @jocelyn | Stardance...
|
1793450888.9582767
|
1794055688.9582767
|
|
10120
|
Project Formula 0 by @SohanB | Stardance
|
SohanB
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project Formula 0 by @SohanB | Stardance
|
1793199264.7349308
|
1793804064.7349308
|
|
10121
|
Untitled project by @washimui | Stardance
|
washimui
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @washimui | Stardance
|
1793184721.564184
|
1793789521.564184
|
|
10122
|
boom n zoom by @remainium | Stardance
|
remainium
|
0
|
6.36
|
0
|
[]
|
[{"post_id": 9446, "ts": "2026 [{"post_id": 9446, "ts": "2026-06-15T20:14:44Z", "hours": 0.885, "text": "forward fuselage cad started"}, {"post_id": 9410, "ts": "2026-06-15T19:20:36Z", "hours": 5.4783, "text": "designing the main wing airfoil"}]...
|
Title: boom n zoom by @remainium | Stardance
Devl Title: boom n zoom by @remainium | Stardance
Devlogs:
designing the main wing airfoil
forward fuselage cad started...
|
1793422250.780653
|
1794027050.780653
|
|
10123
|
My first slack bot! by @Shay | Stardance
|
Shay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Shay | Stardance
|
1793163237.1698358
|
1793768037.1698358
|
|
10124
|
cosmic sticky by @aarooshr | Stardance
|
aarooshr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cosmic sticky by @aarooshr | Stardance
|
1792767158.271373
|
1793371958.271373
|
|
10125
|
Chamber's Card by @RishuKamboj | Stardance
|
RishuKamboj
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T19:44:23Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 3D model of the ability card of Chamber from Valorant. Made this to get better at designing in Fusion360, im really happy with how it turned out.", "repo": "https://github.com/rydei/Chamber-Card", "demo": ""}]...
|
[{"post_id": 9422, "ts": "2026 [{"post_id": 9422, "ts": "2026-06-15T19:42:38Z", "hours": 0.2958, "text": "Final Product! Here are my Printer Settings: - (0.4 mm nozzle) -Layer Height: 0.12mm Fine -Build Plate: Textured PEI Plate (you can use any) -Wall Generator: Arachne -Order of walls: Outer/Inner -Ironing: Topmost Surfaces only -Only one wall on top surfaces: Enabled -Outer Wall Speed: 50 mm/s -Top Surface Speed: 50 mm/s -No Brim"}, {"post_id": 4287, "ts": "2026-06-07T15:23:29Z", "hours": 1.9464, "text": "Finished with Modelling the designs , will post Printed Version soon."}]...
|
Title: Chamber's Card by @RishuKamboj | Starda Title: Chamber's Card by @RishuKamboj | Stardance
Devlogs:
Finished with Modelling the designs , will post Printed Version soon.
Final Product! Here are my Printer Settings: - (0.4 mm nozzle) -Layer Height: 0.12mm Fine -Build Plate: Textured PEI Plate (you can use any) -Wall Generator: Arachne -Order of walls: Outer/Inner -Ironing: Topmost Surfaces only -Only one wall on top surfaces: Enabled -Outer Wall Speed: 50 mm/s -Top Surface Speed: 50 mm/s -No Brim
Ships:
I made a 3D model of the ability card of Chamber from Valorant. Made this to get better at designing in Fusion360, im really happy with how it turned out....
|
1793281967.2461839
|
1793368367.2461839
|
|
10126
|
My first slack bot! by @timotiussimanjuntak | Star My first slack bot! by @timotiussimanjuntak | Stardance...
|
timotiussimanjuntak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @timotiussimanjuntak Title: My first slack bot! by @timotiussimanjuntak | Stardance...
|
1792803262.5917947
|
1793408062.5917947
|
|
10127
|
artergpt by @zarthy10111 | Stardance
|
zarthy10111
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 3822, "ts": "2026 [{"post_id": 3822, "ts": "2026-06-06T21:34:40Z", "hours": 1.0, "text": "Created the bot and allowed him to gather all of my messages for training data!"}, {"post_id": 4471, "ts": "2026-06-07T19:58:54Z", "hours": 0.0, "text": "trained model using google colab. now figuring out a way to create the usable model with ollama"}]...
|
Title: artergpt by @zarthy10111 | Stardance
Devlo Title: artergpt by @zarthy10111 | Stardance
Devlogs:
Created the bot and allowed him to gather all of my messages for training data!
trained model using google colab. now figuring out a way to create the usable model with ollama...
|
1792896873.8558908
|
1793760873.8558908
|
|
10128
|
My awesome macropad! by @MyNose | Stardance
|
MyNose
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @MyNose | Stardance
|
1792745660.0588043
|
1793350460.0588043
|
|
10129
|
reMDer by @Keyboard1000n17 | Stardance
|
Keyboard1000n17
|
0
|
197.03
|
0
|
[]
|
[{"post_id": 71282, "ts": "202 [{"post_id": 71282, "ts": "2026-09-20T16:00:28Z", "hours": 25.7911, "text": "last devlog this is my last devlog the project isn’t complete and i won’t be shipping it. you see, i was banned for 2 months for misconduct on slack (i will not provide details here but i deserved it, it was corny anyway), and as part of that ban, i can’t participate in any events, including stardance. in this time however, i’ve done a lot. there’s now spinners for images, proper tables, and so many more improvements. keep your eyes peeled for a release on the github ! 👀 also it doesn’t matter that this devlog is 15 hours over the limit, its not like i can do anything about it. also if one of you regulars in #stardance see this, can you please ask amber if i can have my sticky streak rewards? i really want the stickers and plushie Changelog ( 446103b ) Render details elements properly again ( f527e5d ) Better logs, align images in row when a paragraph contains only images ( 3df2f59 ) Make task list function use TextChunk over ANSI escapes ( 2367089 ) Add proper tables ( 47c2b42 ) Add aligning components ( 00785d7 ) Move from Chalk/ANSI escapes to OpenTUI StyledText for styles ( 429e4b6 ) Load images lazily with spinner while loading ( a993197 ) Use OpenTUI ImageRenderable for images in renderer ( aa96067 ) Improve types and error handling, work on image bug ( b54ad43 ) Revert “Add footnote plugin (usage WIP) (errors on run)”"}, {"post_id": 64726, "ts": "2026-09-09T11:11:17Z", "hours": 6.0719, "text": "scroll one line at a time, render div and details elements not very big news here, but now you can: scroll just one line at a time instead of a whole renderable/element at once render div and details properly! now you can click on a details element to open and close it! this didn’t even take too long more technical, but i switched to mostly using the opentui renderable api which uses classes like TextRenderable or BoxRenderable that return a Renderable instance instead of functions like Text and Box which return a ProxiedVNode<T> . this is mostly because there’s a bunch of things a Renderable has that a ProxiedVNode doesn’t anyways im currently working on adding footnotes, so see you in a few days Changelog ( 64f6ed8 ) Add footnote plugin (usage WIP) (errors on run) ( ddd5c46 ) Add indicators to details elements and opening on click/space/enter ( 344806a ) Add support for rendering div and details elements ( d3b4a1d ) Fix small layout issues ( 5eb11b9 ) Scroll only one line at a time and convert (mostly) to Renderable API"}, {"post_id": 62808, "ts": "2026-09-06T10:22:48Z", "hours": 10.2442, "text": "table of contents feature is done! took only 10 hours, but im done with the table of contents thing! you can press shift+j to go down to the next heading, and i forgot to add shift+k 😭 anyway this took a while since i couldn’t figure out how to position the box properly and how to style it. this was fucking ass icl. i usually have much more to talk about but this wasn’t the most fun so here’s the commits: Changelog ( 5ccec11 ) Remove unnecessary focusing ToC ( 927cae9 ) Add tab cycling ( ae72d3d ) Scroll ToC menu to selected index instead of blindly 1 down ( 249d61a ) Implement scrolling ToC on pressing J ( a2ae0f2 ) Get table of contents feature working ( a6c7744 ) Add scrolling to next heading on pressing J ( 49f8fec ) Add “? - Help” hint to end of bottom bar"}, {"post_id": 60445, "ts": "2026-09-02T19:38:19Z", "hours": 10.6467, "text": "figlet headings, small headings, bottom bar, help menu and keybinds we’ve got a lot of new stuff! firstly we’ve got a bottom bar! all it does for now is show reMDer with a green bg and the file name next to it, but i’ll add more later! next we’ve got figlet headings! at the start i was thinking about using figlet for headings but i gave up on that. but now, i’m back to using it! this took a good chunk of the overflowing hours here but they look really cool too! passing a --no-render-headings or -H flag will make the headings render as normal text with colors instead of figlet fonts now! there’s now a tiny help menu in the corner! it only shows two keybinds right now–oh and speaking of keybinds… keybindings are now in ! for now you can press q to quit, ? to toggle the help menu, and C (shift+c) to open the console in debug mode and that’s about it next steps? here’s what i’m gonna do next: add support for horizontal rules add a table of contents feature like that of the leaf markdown viewer add some stuff to the bottom bar add an option to put the bottom bar at the top instead add support for a config file using YAML Changelog ( 9557586 ) Add help menu ( a4149e2 ) Add keybinds: q to quit, C to toggle console ( 4b18153 ) Finish figlet fonts support ( d23466d ) Start trying figlet again for ASCII art ( 33d52ea ) Start working on ASCII art for h2 headings ( b0e1668 ) Add option to not print big headings ( c58369c ) Start with bottom bar"}, {"post_id": 56522, "ts": "2026-08-28T10:01:31Z", "hours": 7.42, "text": "code blocks, alerts, emojis and task lists! we’ve got loads of new cool stuff that get rendered now! first, github alerts/callouts now render nicely! they look like this: > [!TAG] > content where TAG can be NOTE , IMPORTANT , TIP , WARNING or CAUTION . they also have these cool icons next to them, but the catch is you need a nerd font for it. i’ll add an option to not need it and only use ascii characters next, we have highlighted code blocks! the renderer can highlight hundreds of languages using shiki ! you might not even have heard of some of the languages that it can highlight! imo its really nice looking and i love it! the bulk of this time came from adding support for task list items because i couldn’t figure out how to do it. eventually after some tinkering i’ve got it to work! it looks kinda cool too tbh i also got emoji support using an extension. it automatically converts :emoji: to the corresponding emoji if its in the unicode specification. finally, i added a simple height option that just sets the height of the renderer. it allows you to set the height of the renderer manually and that’s about it lmao Changelog ( b4f69ad ) Add height option ( beea3a6 ) Add task list items support ( 4c42c84 ) Add emoji support ( 564a761 ) Upgrade markdown-it, fix breaking changes ( 963d910 ) Add alerts support ( 5e266e8 ) Add icons in code blocks ( 0bf0af7 ) Add code block support"}, {"post_id": 54062, "ts": "2026-08-24T20:36:45Z", "hours": 4.4367, "text": "holy fuck, you can pipe into stdin and tables render properly! while this is quite out of schedule (i usually post every 2-3 days), today brings some peak stuff! the peakest part is at the end firstly, i have in fact fixed tables! the issue was i was pushing the accumulated cells array to the rows array in the wrong loop. i was doing this in the loop that iterates over the cells in a row, so it was causing it to repeatedly push the same strings over and over. the fix was putting it in the loop just outside, that is, the loop that iterates over the rows in the table token! i’ve also improved the image handling! now Image classes have the buffer property renamed to content , and has a new property called properties , which is always {} . with this, it has all the properties of ProcessedToken , so my lsp won’t complain that some property doesn’t exist on Image speaking of ProcessedToken , its now an interface instead of a type. there’s also a new TableToken interface that extends ProcessedToken , with an alignment property. this makes it a bit easier to handle tables since the content property is narrowed. also, it seems like opentui’s tables don’t support alignment, so i might have to make a custom table function. i also upgraded opentui from 0.5.7 to 0.5.8! i have no idea what changed, but whatever i’ve also stopped using chalk to color my errors since the opentui console doesn’t support ansi now the peakest part is you can pipe markdown into the program . this is pretty peak and you must agree since there’s a lot of stuff you can do with this. for example, you could render arbitrary markdown without having to create a file first! it has a limitation though: if you’re on windows, you can’t use the interactive mode, and the rendered content is forced to print to stdout. this is because of a bug with bun. if you’re piping into the program, it’ll get the input by calling await Bun.stdin.text() , but this stops sending keypresses to opentui because of a bug in the bun runtime, so you can’t scroll down. i solved this issue (or rather, chatgpt solved this issue) by opening a read stream on /dev/tty . the issue with this is that /dev/tty doesn’t exist on windows since its not unix-like. my idea was to just, not let you do interactive mode on windows if you’re piping content to it. again, this is a bug with bun, and i’ll remove this limitation once one of the two is merged. that’s right, there’s two! here’s one for reference: https://github.com/oven-sh/bun/pull/32153 shit that was long Changelog ( dd07e14 ) Upgrade packages ( 77e6d34 ) Add support for piping into renderer.ts from stdin ( 1995f45 ) Improve image and ANSI handling, stop using chalk in errors ( 22cfacd ) Improve table handling, switch some types to interfaces pls like"}, {"post_id": 53181, "ts": "2026-08-23T16:52:59Z", "hours": 9.7842, "text": "better types. debug mode and stdout! from my last devlog: next up: code blocks (~2-4 hours) fixes to table rendering (<30 mins) fix image handling (it doesn’t handle relative paths correctly) (<1hr?) of these, i’ve done none! what i have done though is add flags and types! i spent a while dealing with type errors because i decided to specify types instead of just putting any on ProcessedToken.content . i also added a debug flag, but literally all it does is show the console i also fixed the width thing, so the content is only as wide as the space you give it so cooll!! the main part of this is that i added a --print-to-stdout flag that just prints the formatted markdown to stdout! you can just scroll in your terminal instead of having a whole ass tui its kinda borked and incomplete though, so i’ll fix it up! it does print some garbage at the beginning so that’s not great anyways, i’d better do what i said i’ll do last devlog! i went off track for this lmao Changelog ( b1c0489 ) Implement half-baked print to stdout option ( aa3c029 ) Add debug flag, fix logic errors ( aa33e84 ) Specify types for ProcessedToken.content instead of any"}, {"post_id": 51600, "ts": "2026-08-21T11:25:29Z", "hours": 8.0094, "text": "(back to) opentui! if you’ve read my last devlog, you might remember that i was considering the jsvision library. however, i came back to opentui because its still much simpler. also, i found that there are libs to adapt ansi! or at least chatgpt did at first i was doing ghostty-opentui , but i realized after some time that it was literally a whole terminal. then i got chatgpt to find me this package called ansi-sequence-parser ( https://www.npmjs.com/package/ansi-sequence-parser ) and its perfect! so now im using that to render the bold and italics! tbh i could just eliminate the middle stage ( stylize.ts ), but i put a lot of work into it and i’m extremely vulnerable to the sunken cost fallacy, so i’m doing this bloat lmao. also, i got ordered lists, bullet lists, and blockquotes working! they look so cool! as for the menu, its not doing very fine, but that’s because i’ve not worked on it! i’ll get to it, don’t worry! next up: code blocks (~2-4 hours) fixes to table rendering (<30 mins) fix image handling (it doesn’t handle relative paths correctly) (<1hr?) Changelog ( 8b44667 ) Add blockquotes and 1 row bottom margin to second-level renderables ( 3e5182f ) Add oredered list handling ( d997aff ) Switch back to OpenTUI, get things working"}, {"post_id": 49847, "ts": "2026-08-18T19:57:55Z", "hours": 8.505, "text": "generational fuck up well i’ve messed up big time, sunken cost fallacy is real and it got me you see, i was using opentui earlier, but i decided to change because i realized that it doesn’t support ansi escape sequences. i landed on neo-neo-blessed , and it seemed cool, until i realized the list selection thing got fucked up because it didn’t handle scrolling list options with heights greater than 1 row properly which is a deal breaker. i also spent a lot of time patching its types, in fact that’s what most of this time went to i think i’ll use jsvision. it seems interesting and i’ve got nothing to lose. the only issue is it has one maintainer and 9 stars, but gpt found it, and it seems cool. also they have demos of the unmodified lib running in the browser which i wanted to do, so this will be fun Changelog ( 33e1c91 ) Start using neo-neo-blessed and do a generational fuck up"}, {"post_id": 47449, "ts": "2026-08-15T11:47:19Z", "hours": 9.8211, "text": "TUI! i’ve got news: the TUI renders! for this tui, im using opentui! right now, the tui only shows an interactive list of files, and its supposed to render the file content if you select one, but that’s not happening right now. i’ve been working on the function to make opentui render the markdown. while opentui does have its own thing for markdown rendering ( ), i’m gonna render my own markdown. im currently trying to get tables working! Changelog ( c8ab716 ) Work further on rendering, start with rendering tables ( dc8b0be ) Start using OpenTUI for rendering TUI ( 86347cf ) Render unknown HTML correctly (without showing tags)"}, {"post_id": 44744, "ts": "2026-08-10T18:22:19Z", "hours": 2.7394, "text": "it works holy shit it works, the problem was that i was running a function but i wasn’t putting it in a console.log . the test function for reference returned a string. also, unknown tags are handled somewhat properly. i need to actually fix that, but once i do, im gonna start on the tui!! its been 96+ hours now what a crazy thing, i expected this to take 10-20 hours and now look at this… anyways, i’ll go fix the unknown tag thing! after that i’ll start working on the tui Changelog ( c1461c3 ) Get unknown HTML tags rendering"}, {"post_id": 43978, "ts": "2026-08-09T13:44:03Z", "hours": 10.3797, "text": "headings! unknown tag handling (that doesn’t work)! well we’ve got some nice stuff now! here’s a list of everything, including problems!: just whitespace? no more! : tokens that are just whitespace get omitted typescript lsp doesn’t complain : oh my god finally that was so annoying what’s this tag? : if it doesn’t have a handler, it falls back to the default, that is, it turns into a string! this doesn’t work properly though, i have to fix this ching chong ruby tags : now ruby tags are supported! is that a highlighter? : mark elements are now supported, which just put a yellow bg on some text is this a block element or not? : now the renderer can tell by looking at a token’s block property proper heading rendering?!?!? : chatgpt wrote the entirety of this part because you cannot bother me to make an efficient function that wraps giant text art letters based on width where’s the inline code? : that’s right, it doesn’t work and gets completely omitted! Changelog ( 456161f ) Trim content, add boolean property ( 07da8a6 ) Add handlers type to make the LSP shut up, trim strings in test file ( b4d251c ) Add handling for unknown tags ( d903b48 ) Add support for dfn , samp , ruby tags ( 813d934 ) Fix code to stop TypeScript ( vtsls lsp) warnings"}, {"post_id": 40582, "ts": "2026-08-04T07:04:35Z", "hours": 9.9967, "text": "typescript! i’ve moved to typescript, cleaned up some code, finished that image function from last devlog, and upgraded packages! finished the image function : now it works perfectly! upgraded packages : shiki was upgraded! its the code coloring package btw added a test : i can’t keep pressing the arrow keys in bun repl i have to do this moved to typescript : this is the main thing. devs on discord kept telling me to use and i said i’d do it soon. i wasn’t planning on it at this time, but i did because i got fed up with a stupid bug where i was accidentally setting token types to a boolean instead of a string. that prompted me to just do it™ and now i’m fixing a bunch of bugs! still not sure why the language server is just complaining about cases that can’t happen, but that’s what typescript is for i guess Changelog ( 688afd8 ) Start moving to TypeScript ( ac99373 ) Switch to map for aliases, add test, clean up code ( c62c57b ) Upgrade packages, clean up code ( f98e65c ) Finish revamping image function"}, {"post_id": 38811, "ts": "2026-08-01T11:37:47Z", "hours": 10.2436, "text": "WIP WORK // INCOMPLETE // this was a lot of work, and i’m still not done with html in the stylizer! here’s a list of changes with explanations: add more aliases to the aliases array in the html parsing section: this makes it so that html tokens and markdown tokens have the same types convert the array of allowed html tags into a set : sets have a .has() function that lets us find an element in O(1) time complexity which is much faster compared to Array.prototype.includes() which has an O(n) time complexity properly implement disallowed tags: these tags show as plain text because they are disallowed and shouldn’t be processed in markdown put non-block tokens as children of an inline token: non-block tokens only got parsed in the part where inline tokens were processed set attributes: the objects returned by the stylize function now have a properties key better error handling: now, where it used to just throw an error about being undefined or whatever, it will catch it, and throw a more useful error with better debug info [BUGFIX] make sure that arrays don’t get nested: this was a bug where arrays would get nested for some reason [BUGFIX] set token.level and token.nesting properly when processing html: this is necessary because the while loop depends on the nesting to know when to stop accumulating tokens and process them [WIP] html handling: any tokens having the substring _open in their .type property are handled all together, with a handlers object made up of functions. this handling is recursive token with types that don’t match the substring _open get handled through other branches of the if statement ( else if(...) {..} ) [WIP] bullet list handling: i did not realize that there were more markdown-it tokens that i had not added handling for in the stylize function. i also need to do this for some more token types too [WIP] revamp image handling: instead of just a complicated function, i added a class called Image that has a function to render the image. its nearly complete but it has some errors that i committed because i need to commit often lmao chatpgt usage now here i used chatgpt a lot for debugging. here’s exactly what i used it for: why tokens weren’t being processed: this is the problem the array nesting bugfix fixed fixing infinite recursion: i accidentally did that lmfao replacing top-level non-block tokens with an inline token that contains those top-level non-block tokens as children figuring how to set the level property of the tokens questions about syntax and mutation of global vars Changelog ( 5e931f7 ) Revamp image function (WIP) ( 0ce066f ) Improve error handling and fix token.level assignment ( 0f28b75 ) Process details element in stylizer ( 0e154f3 ) Start improving stylizer (WIP) why such long devlogs? you may have noticed i’ve been going more and more time without devlogging. that’s because i like devlogging when there’s a big new thing, not for every small little thing. my plan for this devlog was to announce that i was done with processing html in the stylize function, but that hasn’t happened yet because well, there were a latta bugs here and there, and i had to fix those too. as for the length of the devlog text, i like writing about my progress here because its the only place where it makes sense to talk about it in-depth"}, {"post_id": 35679, "ts": "2026-07-27T08:45:19Z", "hours": 7.8072, "text": "HTML parsing is now complete its been nearly 2 weeks and i have great news: html parsing is complete what this means is that html blocks get processed into token streams like the one’s markdown-it makes. now, i must clarify that these html blocks were already in a token stream but they were distinctly html, having the type html_block , and if i didn’t convert those html blocks into markdown-it’s _open / _close tokens, i’d have to parse it in the file that styles the tokens, and many html tags do the exact same thing as their markdown counterparts so i could reuse some functions. i must also clarify that i have NOT done anything for stylizing html in the stylize.js file, which deals with processing text formatting and image processing next up: stylizing html! Changelog ( c5a5ce0 ) Finish HTML parsing ( 841ba42 ) Start work on HTML parsing"}, {"post_id": 29515, "ts": "2026-07-16T14:30:25Z", "hours": 1.24, "text": "improvements and fixes to inline rendering this is way earlier than my normal schedule, but that’s because i’ve got something to show . basically, inline rendering was bugged , and not only did i fix it , i also made it so that it works better ! that’s all you need to know, do NOT read the rest of this if you don’t want to be bored to death, its a really lengthy explanation of this the initial bug was that inline rendering wouldn’t work at all. i figured out the problem was that i wasn’t pushing \"inline\" to the state array somewhere. i realized that it wasn’t working when called in the table rendering function, and that was because i wasn’t pushing \"inline\" to the state array. the reason for this is because the renderInline function slices the state array at the index after the \"inline\" string, so if its something like [\"paragraph\", \"inline\", \"bold\", \"italic\"] , the function slices at index 2 because \"inline\" is at index 1, and we get [\"bold\", \"italic\"] . the problem is, if \"inline\" doesn’t exist, running indexOf(\"inline\") returns -1, so it slices at -1 + 1 , which is 0, so its just the whole array. but anything before “inline” isn’t a valid style, and since the function for that is undefined, it goes kaboom and throws an error saying that it’s not a function. also gpt found 5 other bugs but they’re kinda irrelevant the fix was making it so that the renderInline function itself pushed \"inline' to the state array instead of depending on it being already there. this also removed the need for making sure that the inline string was already there. i might do this with the rest of the functions too actually :goonology: also removed unnecessary state.pop() occurrences since the pop method is destructive and can mess up everything as for the improvement, you might see in the first screenshot that there’s a bunch of text tokens together. yk, they could be squished together into one token… oh right, that’s what i did! i changed the renderInline function to make a variable where the text accumulates until there’s no more text or if there’s an image, on which it gets pushed to the contents array now the most important thing is that there’s only one more thing left to do: html rendering . this is the last thing before i get to actually rendering stuff on the screen! this is exciting! Changelog ( 9de477d ) Fix, improve inline rendering please like this took more than an hour to write"}, {"post_id": 29168, "ts": "2026-07-15T21:42:41Z", "hours": 4.2522, "text": "THAT WAS SO LONG WHAT ON EARTH in short, tables now work and the inline rendering function is fixed! this took a while because i genuinely had no idea what i was doing. now the long stuff: tables go brr i got distracted while writing this and realized everything’s actually borked, but tables do somewhat work! its still borked tho– also i realized that my whole code is borked, but… inline rendering includes links now! still have no idea how i missed that other i just changed image function so that it returns an object with a prototype function instead of unnecessarily repeating the function as a property of all the image objects, so if there’s 10 pictures in a file, there will only be one function to render each as opposed to 10 instances of that function Changelog ( d8feb46 ) Add table support, fix inline rendering oh fuck, my code is COMPLETELY borked"}, {"post_id": 27805, "ts": "2026-07-13T17:59:20Z", "hours": 2.5478, "text": "PEAK CODE gng TS IS PEAK!!!! i added a function that renders code AND ITS PEAK JUST SEE THE SS now some of this time came from trying to figure out why my code was joining the contents of a function, and it was because i forgot to add the argument that gave the coloring function (chalk library) the text to color. hey, at least i found a way to read the contents of functions time to go steal code from closed-source packages leaving that aside, my next step is thematic breaks. this shouldn’t be too hard, in fact, i’ll do it rn since it’s that easy. rn its 8:49 PM GMT+0300, i’ll tell in the next paragraph when i finish it. [8:54 PM] just did it, it only took like 2 mins, the other 3 were because i found a bug that never removed codeBlock from the stack after it was added. that’s about it, and this devlog was quite short. well, comparatively, to my other devlogs, after all there’s people posting 4 word devlogs. you should follow this project tho Changelog ( a17bd2b ) Add thematic break support ( e28f1b1 ) Add code block styling"}, {"post_id": 26701, "ts": "2026-07-11T17:20:33Z", "hours": 4.4769, "text": "when the FUCK did this become 4 hours so uhh i spent like all of this time debugging and improving my code. first thing is, i replaced these “microfunctions”, as i call them, with an object that had keys whose values were arrow functions. these arrow functions did the exact same thing and took up less space and was even more readable! second, i spent some time on a stupid bug where the main function in stylize.js would hang. i thought it was an issue with the image function, but after half an hour or so, when i added console.log(done) right before the return, i realized it had to do with the main function that was calling the image function, and sure enough, the second i looked at it, i realized the problem: it was a while loop and i forgot to add a line that incremented the index, so it just kept doing the same thing forever until i killed the process oh well, more hours for me third, i improved (or rather cleaned) my image function. it returns promises and doesn’t use terminal-image directly. instead, i made it so that it would return an object with a bunch of keys, one of which is a function that takes the whole object as an input. this function actually renders the image, since i plan to write the function to display it in a way that deals with image rendering after rendering text, and while the images get rendered, a spinner takes their place temporarily, but the images replace those spinners once they are processed fourth thing is, i made it so that the main function calls the renderInline function instead of the paragraph function. in fact, this paragraph function is completely useless, so i went ahead and removed it too. lastly, i upgraded a bunch of packages: upgraded typescript from version 5 to 5.9.3 upgraded got from version 15.0.7 to 15.1.0 upgraded markdown-it from version 14.2.0 to 14.3.0 upgraded shiki from version 4.3.0 to 4.3.1 if you wonder what these packages are typescript is, well, the typescript language, not sure why i have it, might be a dependency for another package. got is some package that does pretty much the same thing as the default fetch() but it can give me a buffer, which i need for images markdown-it is the markdown parser shiki is for coloring code. fancy, right? Changelog ( 9118913 ) Improve code ( 5b9c953 ) Remove test file ( ab3af08 ) Test image URL parsing on GitHub aight this took me 2 hours to write and i started coding again in the middle of writing this"}, {"post_id": 21475, "ts": "2026-07-03T13:24:58Z", "hours": 5.595, "text": "oof! that was a lot of work, but now we’re REALLY getting somewhere!!! first thing, headings actually work now, and if there’s a link in the heading, it gets displayed right below the heading! tbf i did rip the heading thing straight out of the original index.js file when i was trying to make a markdown parser using regex secondly, and the more important thing, image rendering now works . pretty big milestone. i achieved this through the terminal-image npm package. however, this took a while because i couldn’t figure out why it wouldn’t render. the problem was tmux–it was stripping the codes it didn’t recognise so i implemented another system to detect if the terminal had color and/or image support to decide whether to use ansi blocks or actual images. now, it works! ts so peak fr tl;dr headings work (i ripped them out of my original implementation in index.js ) images work (took me a while because it didn’t work properly in tmux we getting somewhere with this one 🔥 Changelog ( 9941b1b ) Finish image rendering ( 007b3f4 ) Work on image rendering ( 609be18 ) Make heading work"}, {"post_id": 18690, "ts": "2026-06-29T21:31:37Z", "hours": 6.2242, "text": "holy this shit is so long heyo! this is a long one, so i’ll go over this commit by commit ( 0ad2cb2 ) Start paragraph parsing here, i did these: i made a global string state to maintain the nesting while styling. managing this was quite tedious and useless i added a helper function to get the style of a token called getStyle() . i’ll explain the use for it below. i continued working on the heading() and paragraph() functions as well as the stylize() function ( eb218d2 ) Add markdown extensions as for this one, i added a bunch of packages, mostly extensions for markdown-it . these are: markdown-it-footnote markdown-it-github-alerts markdown-it-sanitizer markdown-it-table markdown-it-task-lists shiki (for code highlighting) terminal-image i removed a few of these later because they were either not really working properly or just weren’t necessary. besides these, i also configured the plugin to use the plugins, enable the autolink extension and also replace all HTML line breaks ( <br> ) with double newlines ( \\n\\n ) ( 5ecef2c ) Start working on image rendering and colors/styles now here is where i found a gem in my dependency tree. you see, i was searching for a package to handle color rendering since i sure as hell wasn’t gonna deal with the hex codes shiki , the code-highlighting plugin, was giving me for the colors of the tokens. so i saw a package called chalk and it sounded familiar. turns out, shiki had chalk as a dependency, so it was already installed! for that reason, i added a chalk import in this commit. i also started working on an image function to render images, and named it renderImage() . also added a great error message if two requirements weren’t met: throw new Error ( \" WRONG TOKEN IDIOT DEV \" ); but that was all i really did in that function ( 0dc393d ) Remove unnecessary object processing and dependencies this is where i removed markdown-it-footnote and markdown-it-table because i realized there just wasn’t a point in those since they weren’t letting me test my function, they were erroring out for some reason and i found out markdown-it-table already had support for markdown tables. i also removed the mapping function in the parser stage that i made to give myself only a few fields. it was pretty useless since i kept randomly finding that i’d need some new property. ( 8a5200c ) Continue work on inline parsing, add terminal-link latest commit, this is where i did a lot of work: i removed terminal-image as a dependency since i found that bun already provided a class for it ( Bun.Image ) and it also had webp support unlike terminal-image , so no point in another package when a built-in one works better i made the getStyles() function better i added a bunch of micro-functions like bold() , italic() , etc. i also renamed renderImage() to image() i combined two if statements into one in this image() function because why 2 if statements when 1 i did a lot of work in the renderInline() function. now it uses computed function names that call those micro-functions. i also changed that global string state to a global array, made things much easier. i worked on the heading() and paragraph() functions further that’s about it gng, also its 12:28 am for me rn this is why we devlog more often gng ✌️"}, {"post_id": 17162, "ts": "2026-06-27T21:04:18Z", "hours": 2.7842, "text": "toiling away… toiling away at this code… today was a bunch of stuff i added a renderInline() function to render stuff inline. i still need to add images and links, but i’d need a lib for links, and maybe for the images too i worked more on the main function. right now, im trying to get paragraphs actually rendered, which will take a while. i also added a heading() function that will render headings, emphasis on will because its not being called yet it took me a lot of thinking to get here so that part wasn’t too fun (a person who thinks all the time, has nothing to think about 🔥) changelog ( e24a192 ) Work more on the stylizer ( 1a02163 ) Start actual work on stylizer"}, {"post_id": 16483, "ts": "2026-06-26T20:35:10Z", "hours": 1.5342, "text": "revamp! i revamped the parse-input.js file! now, it has two functions: giveFields(obj) this is a function called by the second function. since markdown-it (the parser im using now!) has a lot of fields that i don’t need. so this function returns a mapped array with the fields type , tag , nesting , content , and children . as for this children field, the children field is an array of objects, where the objects are just like the parent object, with lots of unnecessary fields. for those, i used recursion! (it’s my first time using recursion ) parse(input) : this is the function that i’ll be using to get the tokens i need to style! what it does is pretty simple: initialize a new instance of the MarkdownIt constructor (? i’m not too sure if it’s a constructor) get markdown-it ’s tokens using their parsing function make a constant whose content is an array of objects returned by the first function ( giveFields() if your memory is that terrible). again its a mapped array that gives only select fields from the markdown-it tokens return that constant in other news, i wrote 2 more test markdown files. one tests the behaviour of headings and the other tests the behaviour of inline stuff like bold and italic text! Changelog ( 88bad121 ) Revamp parse-input.js ( 3eda61e5 ) Add more stuff to inlines.md"}, {"post_id": 15772, "ts": "2026-06-25T17:18:25Z", "hours": 2.5692, "text": "FUCK fuck this rewrite, i’m abandoning this shithole of a parser i’m trying to make, i’ll just go use an already existing parser, its just not worth it it’s too much hassle to make an in-house parser, so here’s my plan: i install a markdown parser that returns a tree of text, not html, and as a dependency in the styling part, i’ll go ahead and read the tree of text that the parser returns it gets passed to the renderer hopefully this will move much faster now!"}, {"post_id": 11542, "ts": "2026-06-18T20:48:29Z", "hours": 2.0211, "text": "rewrite i started a rewrite! what i was doing earlier was honestly too messy to actually use. my earlier way was making a bunch of regexes and using those to match the remaining text. my new method is still using regexes, but i split the whole thing into two parts: block parser and inline parser. block parser the block parser splits the markdown doc on newlines and checks what it starts with or ends with. when it finds that some line is not a paragraph, it pushes a token to the tokens array indicating that it is the start of a block. when it detects that the block has ended, it pushes a token to the tokens array indicating the end of the block. this is currently only implemented for headings, more are coming. it took this long because me dumb inline parser the inline parser loops through the existing tokens array made by the block parser and looks for characters that indicate the start of an inline token like bold, italic and so on. like the block parser, it will push start and end tokens to the tokens array the implementation of the inline parser has not started yet new character i added a backslash to the giant block letters i made for headings! Changelog (bac8c5a) Start parser rewrite (664713e) Add backslash in heading"}, {"post_id": 10859, "ts": "2026-06-17T20:14:25Z", "hours": 7.0403, "text": "help me what on god’s green earth is this so after dealing with a shit ton of regex and doing pretty much nothing with it besides some stuff that would improve performance, i have decided that regex is not the way. instead, i’ll just set a bunch of flags with empty content and make a separate function that processes everything. i think the styling function will handle tokens because that’s its job, to style the tokens. at least i have something to follow now. (i did not implement any of this yet) Changelog fc8de72 : Fix some regexes fe6eeef : Change some regexes f67c3b5 : Change matching system in parser 8a80409 : Add some HTML support in lexical parser 0727d82 : Finish lexical parser (almost) b7bc45b : Make lexical parser work"}, {"post_id": 7594, "ts": "2026-06-12T18:16:30Z", "hours": 6.0661, "text": "i got bombed by my own regex anyways, so i started making a lexical parser and uhh its not going all sunshine and rainbows. the blockquote regex doesn’t really work right and also i checked the gfm spec since i want to adhere to it and uhh fuck i might be cooked. i thought ts was going to be a 20h project help meeeeeee also yes it took me 6 hours for 74 lines of code sob this is just great"}, {"post_id": 6452, "ts": "2026-06-10T21:06:48Z", "hours": 1.475, "text": "HEADINGS NOW RENDER! headings now render! as you can see in the screenshot, it now renders the headings as big boys also, me very happy. this took a while because i lowk didn’t know what to really do. i didn’t think about how i would do it, i was only thinking about doing it anyways gn gng"}, {"post_id": 5881, "ts": "2026-06-09T20:48:17Z", "hours": 6.8622, "text": "took only this long to make a bunch of letters you see, i had to make a bunch of custom glyphs to render headings in the terminal. making that for pretty much all the characters on your keyboard isn’t quite easy but hey its done now. the thing is, this is only for level one headings. once i finish the actual parser, i’ll add glyphs for the rest of the headings. in the meantime, i’ll have to do the rest. i did not expect to have spent this long on the project already yk"}, {"post_id": 4481, "ts": "2026-06-07T20:14:04Z", "hours": 0.4414, "text": "a terminal markdown reader that has actual headings? never could have thought of it huh well this is what i’m doing. literally a markdown reader that prints text the way you might have written it. anyways so this is gonna use bun since bun is ultra fast. also this might be a 10-20h proj, shouldn’t be too hard. well i like more hours, so i might also add stuff like: browsing all the markdown files in a directory (and subdirectories) editing (very unlikely!) well i don’t really know what else to put so ig that’s it? anyways i have actually done some work, that is, my file currently ouputs some text. literally the raw original text. what’d you expect from 24m of coding"}]...
|
Title: reMDer by @Keyboard1000n17 | Stardance
Dev Title: reMDer by @Keyboard1000n17 | Stardance
Devlogs:
a terminal markdown reader that has actual headings? never could have thought of it huh well this is what i’m doing. literally a markdown reader that prints text the way you might have written it. anyways so this is gonna use bun since bun is ultra fast. also this might be a 10-20h proj, shouldn’t be too hard. well i like more hours, so i might also add stuff like: browsing all the markdown files in a directory (and subdirectories) editing (very unlikely!) well i don’t really know what else to put so ig that’s it? anyways i have actually done some work, that is, my file currently ouputs some text. literally the raw original text. what’d you expect from 24m of coding
took only this long to make a bunch of letters you see, i had to make a bunch of custom glyphs to render headings in the terminal. making that for pretty much all the characters on your keyboard isn’t quite easy but hey its done now. the thing is, this is only for level one headings. once i finish the actual parser, i’ll add glyphs for the rest of the headings. in the meantime, i’ll have to do the rest. i did not expect to have spent this long on the project already yk
HEADINGS NOW RENDER! headings now render! as you can see in the screenshot, it now renders the headings as big boys also, me very happy. this took a while because i lowk didn’t know what to really do. i didn’t think about how i would do it, i was only thinking about doing it anyways gn gng
i got bombed by my own regex anyways, so i started making a lexical parser and uhh its not going all sunshine and rainbows. the blockquote regex doesn’t really work right and also i checked the gfm spec since i want to adhere to it and uhh fuck i might be cooked. i thought ts was going to be a 20h project help meeeeeee also yes it took me 6 hours for 74 lines of code sob this is just great
help me what on god’s green earth is this so after dealing with a shit ton of regex and doing pretty much nothing with it besides some stuff that would improve performance, i have decided that regex is not the way. instead, i’ll just set a bunch of flags with empty content and make a separate function that processes everything. i think the styling function will handle tokens because that’s its job, to style the tokens. at least i have something to follow now. (i did not implement any of this yet) Changelog fc8de72 : Fix some regexes fe6eeef : Change some regexes f67c3b5 : Change matching system in parser 8a80409 : Add some HTML support in lexical parser 0727d82 : Finish lexical parser (almost) b7bc45b : Make lexical parser work
rewrite i started a rewrite! what i was doing earlier was honestly too messy to actually use. my earlier way was making a bunch of regexes and using those to match the remaining text. my new method is still using regexes, but i split the whole thing into two parts: block parser and inline parser. block parser the block parser splits the markdown doc on newlines and checks what it starts with or ends with. when it finds that some line is not a paragraph, it pushes a token to the tokens array indicating that it is the start of a block. when it detects that the block has ended, it pushes a token to the tokens array indicating the end of the block. this is currently only implemented for headings, more are coming. it took this long because me dumb inline parser the inline parser loops through the existing tokens array made by the block parser and looks for characters that indicate the start of an inline token like bold, italic and so on. like the block parser, it will push start and end tokens to the tokens array the implementation of the inline parser has not started yet new character i added a backslash to the giant block letters i made for headings! Changelog (bac8c5a) Start parser rewrite (664713e) Add backslash in heading
FUCK fuck this rewrite, i’m abandoning this shithole of a parser i’m trying to make, i’ll just go use an already existing parser, its just not worth it it’s too much hassle to make an in-house parser, so here’s my plan: i install a markdown parser that returns a tree of text, not html, and as a dependency in the styling part, i’ll go ahead and read the tree of text that the parser returns it gets passed to the renderer hopefully this will move much faster now!
revamp! i revamped the parse-input.js file! now, it has two functions: giveFields(obj) this is a function called by the second function. since markdown-it (the parser im using now!) has a lot of fields that i don’t need. so this function returns a mapped array with the fields type , tag , nesting , content , and children . as for this children field, the children field is an array of objects, where the objects are just like the parent object, with lots of unnecessary fields. for those, i used recursion! (it’s my first time using recursion ) parse(input) : this is the function that i’ll be using to get the tokens i need to style! what it does is pretty simple: initialize a new instance of the MarkdownIt constructor (? i’m not too sure if it’s a constructor) get markdown-it ’s tokens using their parsing function make a constant whose content is an array of objects returned by the first function ( giveFields() if your memory is that terrible). again its a mapped array that gives only select fields from the markdown-it tokens return that constant in other news, i wrote 2 more test markdown files. one tests the behaviour of headings and the other tests the behaviour of inline stuff like bold and italic text! Changelog ( 88bad121 ) Revamp parse-input.js ( 3eda61e5 ) Add more stuff to inlines.md
toiling away… toiling away at this code… today was a bunch of stuff i added a renderInline() function to render stuff inline. i still need to add images and links, but i’d need a lib for links, and maybe for the images too i worked more on the main function. right now, im trying to get paragraphs actually rendered, which will take a while. i also added a heading() function that will render headings, emphasis on will because its not being called yet it took me a lot of thinking to get here so that part wasn’t too fun (a person who thinks all the time, has nothing to think about 🔥) changelog ( e24a192 ) Work more on the stylizer ( 1a02163 ) Start actual work on stylizer
holy this shit is so long heyo! this is a long one, so i’ll go over this commit by commit ( 0ad2cb2 ) Start paragraph parsing here, i did these: i made a global string state to maintain the nesting while styling. managing this was quite tedious and useless i added a helper function to get the style of a token called getStyle() . i’ll explain the use for it below. i continued working on the heading() and paragraph() functions as well as the stylize() function ( eb218d2 ) Add markdown extensions as for this one, i added a bunch of packages, mostly extensions for markdown-it . these are: markdown-it-footnote markdown-it-github-alerts markdown-it-sanitizer markdown-it-table markdown-it-task-lists shiki (for code highlighting) terminal-image i removed a few of these later because they were either not really working properly or just weren’t necessary. besides these, i also configured the plugin to use the plugins, enable the autolink extension and also replace all HTML line breaks ( <br> ) with double newlines ( \n\n ) ( 5ecef2c ) Start working on image rendering and colors/styles now here is where i found a gem in my dependency tree. you see, i was searching for a package to handle color rendering since i sure as hell wasn’t gonna deal with the hex codes shiki , the code-highlighting plugin, was giving me for the colors of the tokens. so i saw a package called chalk and it sounded familiar. turns out, shiki had chalk as a dependency, so it was already installed! for that reason, i added a chalk import in this commit. i also started working on an image function to render images, and named it renderImage() . also added a great error message if two requirements weren’t met: throw new Error ( " WRONG TOKEN IDIOT DEV " ); but that was all i really did in that function ( 0dc393d ) Remove unnecessary object processing and dependencies this is where i removed markdown-it-footnote and markdown-it-table because i realized there just wasn’t a point in those since they weren’t letting me test my function, they were erroring out for some reason and i found out markdown-it-table already had support for markdown tables. i also removed the mapping function in the parser stage that i made to give myself only a few fields. it was pretty useless since i kept randomly finding that i’d need some new property. ( 8a5200c ) Continue work on inline parsing, add terminal-link latest commit, this is where i did a lot of work: i removed terminal-image as a dependency since i found that bun already provided a class for it ( Bun.Image ) and it also had webp support unlike terminal-image , so no point in another package when a built-in one works better i made the getStyles() function better i added a bunch of micro-functions like bold() , italic() , etc. i also renamed renderImage() to image() i combined two if statements into one in this image() function because why 2 if statements when 1 i did a lot of work in the renderInline() function. now it uses computed function names that call those micro-functions. i also changed that global string state to a global array, made things much easier. i worked on the heading() and paragraph() functions further that’s about it gng, also its 12:28 am for me rn this is why we devlog more often gng ✌️
oof! that was a lot of work, but now we’re REALLY getting somewhere!!! first thing, headings actually work now, and if there’s a link in the heading, it gets displayed right below the heading! tbf i did rip the heading thing straight out of the original index.js file when i was trying to make a markdown parser using regex secondly, and the more important thing, image rendering now works . pretty big milestone. i achieved this through the terminal-image npm package. however, this took a while because i couldn’t figure out why it wouldn’t render. the problem was tmux–it was stripping the codes it didn’t recognise so i implemented another system to detect if the terminal had color and/or image support to decide whether to use ansi blocks or actual images. now, it works! ts so peak fr tl;dr headings work (i ripped them out of my original implementation in index.js ) images work (took me a while because it didn’t work properly in tmux we getting somewhere with this one 🔥 Changelog ( 9941b1b ) Finish image rendering ( 007b3f4 ) Work on image rendering ( 609be18 ) Make heading work
when the FUCK did this become 4 hours so uhh i spent like all of this time debugging and improving my code. first thing is, i replaced these “microfunctions”, as i call them, with an object that had keys whose values were arrow functions. these arrow functions did the exact same thing and took up less space and was even more readable! second, i spent some time on a stupid bug where the main function in stylize.js would hang. i thought it was an issue with the image function, but after half an hour or so, when i added console.log(done) right before the return, i realized it had to do with the main function that was calling the image function, and sure enough, the second i looked at it, i realized the problem: it was a while loop and i forgot to add a line that incremented the index, so it just kept doing the same thing forever until i killed the process oh well, more hours for me third, i improved (or rather cleaned) my image function. it returns promises and doesn’t use terminal-image directly. instead, i made it so that it would return an object with a bunch of keys, one of which is a function that takes the whole object as an input. this function actually renders the image, since i plan to write the function to display it in a way that deals with image rendering after rendering text, and while the images get rendered, a spinner takes their place temporarily, but the images replace those spinners once they are processed fourth thing is, i made it so that the main function calls the renderInline function instead of the paragraph function. in fact, this paragraph function is completely useless, so i went ahead and removed it too. lastly, i upgraded a bunch of packages: upgraded typescript from version 5 to 5.9.3 upgraded got from version 15.0.7 to 15.1.0 upgraded markdown-it from version 14.2.0 to 14.3.0 upgraded shiki from version 4.3.0 to 4.3.1 if you wonder what these packages are typescript is, well, the typescript language, not sure why i have it, might be a dependency for another package. got is some package that does pretty much the same thing as the default fetch() but it can give me a buffer, which i need for images markdown-it is the markdown parser shiki is for coloring code. fancy, right? Changelog ( 9118913 ) Improve code ( 5b9c953 ) Remove test file ( ab3af08 ) Test image URL parsing on GitHub aight this took me 2 hours to write and i started coding again in the middle of writing this
PEAK CODE gng TS IS PEAK!!!! i added a function that renders code AND ITS PEAK JUST SEE THE SS now some of this time came from trying to figure out why my code was joining the contents of a function, and it was because i forgot to add the argument that gave the coloring function (chalk library) the text to color. hey, at least i found a way to read the contents of functions time to go steal code from closed-source packages leaving that aside, my next step is thematic breaks. this shouldn’t be too hard, in fact, i’ll do it rn since it’s that easy. rn its 8:49 PM GMT+0300, i’ll tell in the next paragraph when i finish it. [8:54 PM] just did it, it only took like 2 mins, the other 3 were because i found a bug that never removed codeBlock from the stack after it was added. that’s about it, and this devlog was quite short. well, comparatively, to my other devlogs, after all there’s people posting 4 word devlogs. you should follow this project tho Changelog ( a17bd2b ) Add thematic break support ( e28f1b1 ) Add code block styling
THAT WAS SO LONG WHAT ON EARTH in short, tables now work and the inline rendering function is fixed! this took a while because i genuinely had no idea what i was doing. now the long stuff: tables go brr i got distracted while writing this and realized everything’s actually borked, but tables do somewhat work! its still borked tho– also i realized that my whole code is borked, but… inline rendering includes links now! still have no idea how i missed that other i just changed image function so that it returns an object with a prototype function instead of unnecessarily repeating the function as a property of all the image objects, so if there’s 10 pictures in a file, there will only be one function to render each as opposed to 10 instances of that function Changelog ( d8feb46 ) Add table support, fix inline rendering oh fuck, my code is COMPLETELY borked
improvements and fixes to inline rendering this is way earlier than my normal schedule, but that’s because i’ve got something to show . basically, inline rendering was bugged , and not only did i fix it , i also made it so that it works better ! that’s all you need to know, do NOT read the rest of this if you don’t want to be bored to death, its a really lengthy explanation of this the initial bug was that inline rendering wouldn’t work at all. i figured out the problem was that i wasn’t pushing "inline" to the state array somewhere. i realized that it wasn’t working when called in the table rendering function, and that was because i wasn’t pushing "inline" to the state array. the reason for this is because the renderInline function slices the state array at the index after the "inline" string, so if its something like ["paragraph", "inline", "bold", "italic"] , the function slices at index 2 because "inline" is at index 1, and we get ["bold", "italic"] . the problem is, if "inline" doesn’t exist, running indexOf("inline") returns -1, so it slices at -1 + 1 , which is 0, so its just the whole array. but anything before “inline” isn’t a valid style, and since the function for that is undefined, it goes kaboom and throws an error saying that it’s not a function. also gpt found 5 other bugs but they’re kinda irrelevant the fix was making it so that the renderInline function itself pushed "inline' to the state array instead of depending on it being already there. this also removed the need for making sure that the inline string was already there. i might do this with the rest of the functions too actually :goonology: also removed unnecessary state.pop() occurrences since the pop method is destructive and can mess up everything as for the improvement, you might see in the first screenshot that there’s a bunch of text tokens together. yk, they could be squished together into one token… oh right, that’s what i did! i changed the renderInline function to make a variable where the text accumulates until there’s no more text or if there’s an image, on which it gets pushed to the contents array now the most important thing is that there’s only one more thing left to do: html rendering . this is the last thing before i get to actually rendering stuff on the screen! this is exciting! Changelog ( 9de477d ) Fix, improve inline rendering please like this took more than an hour to write
HTML parsing is now complete its been nearly 2 weeks and i have great news: html parsing is complete what this means is that html blocks get processed into token streams like the one’s markdown-it makes. now, i must clarify that these html blocks were already in a token stream but they were distinctly html, having the type html_block , and if i didn’t convert those html blocks into markdown-it’s _open / _close tokens, i’d have to parse it in the file that styles the tokens, and many html tags do the exact same thing as their markdown counterparts so i could reuse some functions. i must also clarify that i have NOT done anything for stylizing html in the stylize.js file, which deals with processing text formatting and image processing next up: stylizing html! Changelog ( c5a5ce0 ) Finish HTML parsing ( 841ba42 ) Start work on HTML parsing
WIP WORK // INCOMPLETE // this was a lot of work, and i’m still not done with html in the stylizer! here’s a list of changes with explanations: add more aliases to the aliases array in the html parsing section: this makes it so that html tokens and markdown tokens have the same types convert the array of allowed html tags into a set : sets have a .has() function that lets us find an element in O(1) time complexity which is much faster compared to Array.prototype.includes() which has an O(n) time complexity properly implement disallowed tags: these tags show as plain text because they are disallowed and shouldn’t be processed in markdown put non-block tokens as children of an inline token: non-block tokens only got parsed in the part where inline tokens were processed set attributes: the objects returned by the stylize function now have a properties key better error handling: now, where it used to just throw an error about being undefined or whatever, it will catch it, and throw a more useful error with better debug info [BUGFIX] make sure that arrays don’t get nested: this was a bug where arrays would get nested for some reason [BUGFIX] set token.level and token.nesting properly when processing html: this is necessary because the while loop depends on the nesting to know when to stop accumulating tokens and process them [WIP] html handling: any tokens having the substring _open in their .type property are handled all together, with a handlers object made up of functions. this handling is recursive token with types that don’t match the substring _open get handled through other branches of the if statement ( else if(...) {..} ) [WIP] bullet list handling: i did not realize that there were more markdown-it tokens that i had not added handling for in the stylize function. i also need to do this for some more token types too [WIP] revamp image handling: instead of just a complicated function, i added a class called Image that has a function to render the image. its nearly complete but it has some errors that i committed because i need to commit often lmao chatpgt usage now here i used chatgpt a lot for debugging. here’s exactly what i used it for: why tokens weren’t being processed: this is the problem the array nesting bugfix fixed fixing infinite recursion: i accidentally did that lmfao replacing top-level non-block tokens with an inline token that contains those top-level non-block tokens as children figuring how to set the level property of the tokens questions about syntax and mutation of global vars Changelog ( 5e931f7 ) Revamp image function (WIP) ( 0ce066f ) Improve error handling and fix token.level assignment ( 0f28b75 ) Process details element in stylizer ( 0e154f3 ) Start improving stylizer (WIP) why such long devlogs? you may have noticed i’ve been going more and more time without devlogging. that’s because i like devlogging when there’s a big new thing, not for every small little thing. my plan for this devlog was to announce that i was done with processing html in the stylize function, but that hasn’t happened yet because well, there were a latta bugs here and there, and i had to fix those too. as for the length of the devlog text, i like writing about my progress here because its the only place where it makes sense to talk about it in-depth
typescript! i’ve moved to typescript, cleaned up some code, finished that image function from last devlog, and upgraded packages! finished the image function : now it works perfectly! upgraded packages : shiki was upgraded! its the code coloring package btw added a test : i can’t keep pressing the arrow keys in bun repl i have to do this moved to typescript : this is the main thing. devs on discord kept telling me to use and i said i’d do it soon. i wasn’t planning on it at this time, but i did because i got fed up with a stupid bug where i was accidentally setting token types to a boolean instead of a string. that prompted me to just do it™ and now i’m fixing a bunch of bugs! still not sure why the language server is just complaining about cases that can’t happen, but that’s what typescript is for i guess Changelog ( 688afd8 ) Start moving to TypeScript ( ac99373 ) Switch to map for aliases, add test, clean up code ( c62c57b ) Upgrade packages, clean up code ( f98e65c ) Finish revamping image function
headings! unknown tag handling (that doesn’t work)! well we’ve got some nice stuff now! here’s a list of everything, including problems!: just whitespace? no more! : tokens that are just whitespace get omitted typescript lsp doesn’t complain : oh my god finally that was so annoying what’s this tag? : if it doesn’t have a handler, it falls back to the default, that is, it turns into a string! this doesn’t work properly though, i have to fix this ching chong ruby tags : now ruby tags are supported! is that a highlighter? : mark elements are now supported, which just put a yellow bg on some text is this a block element or not? : now the renderer can tell by looking at a token’s block property proper heading rendering?!?!? : chatgpt wrote the entirety of this part because you cannot bother me to make an efficient function that wraps giant text art letters based on width where’s the inline code? : that’s right, it doesn’t work and gets completely omitted! Changelog ( 456161f ) Trim content, add boolean property ( 07da8a6 ) Add handlers type to make the LSP shut up, trim strings in test file ( b4d251c ) Add handling for unknown tags ( d903b48 ) Add support for dfn , samp , ruby tags ( 813d934 ) Fix code to stop TypeScript ( vtsls lsp) warnings
it works holy shit it works, the problem was that i was running a function but i wasn’t putting it in a console.log . the test function for reference returned a string. also, unknown tags are handled somewhat properly. i need to actually fix that, but once i do, im gonna start on the tui!! its been 96+ hours now what a crazy thing, i expected this to take 10-20 hours and now look at this… anyways, i’ll go fix the unknown tag thing! after that i’ll start working on the tui Changelog ( c1461c3 ) Get unknown HTML tags rendering
TUI! i’ve got news: the TUI renders! for this tui, im using opentui! right now, the tui only shows an interactive list of files, and its supposed to render the file content if you select one, but that’s not happening right now. i’ve been working on the function to make opentui render the markdown. while opentui does have its own thing for markdown rendering ( ), i’m gonna render my own markdown. im currently trying to get tables working! Changelog ( c8ab716 ) Work further on rendering, start with rendering tables ( dc8b0be ) Start using OpenTUI for rendering TUI ( 86347cf ) Render unknown HTML correctly (without showing tags)
generational fuck up well i’ve messed up big time, sunken cost fallacy is real and it got me you see, i was using opentui earlier, but i decided to change because i realized that it doesn’t support ansi escape sequences. i landed on neo-neo-blessed , and it seemed cool, until i realized the list selection thing got fucked up because it didn’t handle scrolling list options with heights greater than 1 row properly which is a deal breaker. i also spent a lot of time patching its types, in fact that’s what most of this time went to i think i’ll use jsvision. it seems interesting and i’ve got nothing to lose. the only issue is it has one maintainer and 9 stars, but gpt found it, and it seems cool. also they have demos of the unmodified lib running in the browser which i wanted to do, so this will be fun Changelog ( 33e1c91 ) Start using neo-neo-blessed and do a generational fuck up
(back to) opentui! if you’ve read my last devlog, you might remember that i was considering the jsvision library. however, i came back to opentui because its still much simpler. also, i found that there are libs to adapt ansi! or at least chatgpt did at first i was doing ghostty-opentui , but i realized after some time that it was literally a whole terminal. then i got chatgpt to find me this package called ansi-sequence-parser ( https://www.npmjs.com/package/ansi-sequence-parser ) and its perfect! so now im using that to render the bold and italics! tbh i could just eliminate the middle stage ( stylize.ts ), but i put a lot of work into it and i’m extremely vulnerable to the sunken cost fallacy, so i’m doing this bloat lmao. also, i got ordered lists, bullet lists, and blockquotes working! they look so cool! as for the menu, its not doing very fine, but that’s because i’ve not worked on it! i’ll get to it, don’t worry! next up: code blocks (~2-4 hours) fixes to table rendering (<30 mins) fix image handling (it doesn’t handle relative paths correctly) (<1hr?) Changelog ( 8b44667 ) Add blockquotes and 1 row bottom margin to second-level renderables ( 3e5182f ) Add oredered list handling ( d997aff ) Switch back to OpenTUI, get things working
better types. debug mode and stdout! from my last devlog: next up: code blocks (~2-4 hours) fixes to table rendering (<30 mins) fix image handling (it doesn’t handle relative paths correctly) (<1hr?) of these, i’ve done none! what i have done though is add flags and types! i spent a while dealing with type errors because i decided to specify types instead of just putting any on ProcessedToken.content . i also added a debug flag, but literally all it does is show the console i also fixed the width thing, so the content is only as wide as the space you give it so cooll!! the main part of this is that i added a --print-to-stdout flag that just prints the formatted markdown to stdout! you can just scroll in your terminal instead of having a whole ass tui its kinda borked and incomplete though, so i’ll fix it up! it does print some garbage at the beginning so that’s not great anyways, i’d better do what i said i’ll do last devlog! i went off track for this lmao Changelog ( b1c0489 ) Implement half-baked print to stdout option ( aa3c029 ) Add debug flag, fix logic errors ( aa33e84 ) Specify types for ProcessedToken.content instead of any
holy fuck, you can pipe into stdin and tables render properly! while this is quite out of schedule (i usually post every 2-3 days), today brings some peak stuff! the peakest part is at the end firstly, i have in fact fixed tables! the issue was i was pushing the accumulated cells array to the rows array in the wrong loop. i was doing this in the loop that iterates over the cells in a row, so it was causing it to repeatedly push the same strings over and over. the fix was putting it in the loop just outside, that is, the loop that iterates over the rows in the table token! i’ve also improved the image handling! now Image classes have the buffer property renamed to content , and has a new property called properties , which is always {} . with this, it has all the properties of ProcessedToken , so my lsp won’t complain that some property doesn’t exist on Image speaking of ProcessedToken , its now an interface instead of a type. there’s also a new TableToken interface that extends ProcessedToken , with an alignment property. this makes it a bit easier to handle tables since the content property is narrowed. also, it seems like opentui’s tables don’t support alignment, so i might have to make a custom table function. i also upgraded opentui from 0.5.7 to 0.5.8! i have no idea what changed, but whatever i’ve also stopped using chalk to color my errors since the opentui console doesn’t support ansi now the peakest part is you can pipe markdown into the program . this is pretty peak and you must agree since there’s a lot of stuff you can do with this. for example, you could render arbitrary markdown without having to create a file first! it has a limitation though: if you’re on windows, you can’t use the interactive mode, and the rendered content is forced to print to stdout. this is because of a bug with bun. if you’re piping into the program, it’ll get the input by calling await Bun.stdin.text() , but this stops sending keypresses to opentui because of a bug in the bun runtime, so you can’t scroll down. i solved this issue (or rather, chatgpt solved this issue) by opening a read stream on /dev/tty . the issue with this is that /dev/tty doesn’t exist on windows since its not unix-like. my idea was to just, not let you do interactive mode on windows if you’re piping content to it. again, this is a bug with bun, and i’ll remove this limitation once one of the two is merged. that’s right, there’s two! here’s one for reference: https://github.com/oven-sh/bun/pull/32153 shit that was long Changelog ( dd07e14 ) Upgrade packages ( 77e6d34 ) Add support for piping into renderer.ts from stdin ( 1995f45 ) Improve image and ANSI handling, stop using chalk in errors ( 22cfacd ) Improve table handling, switch some types to interfaces pls like
code blocks, alerts, emojis and task lists! we’ve got loads of new cool stuff that get rendered now! first, github alerts/callouts now render nicely! they look like this: > [!TAG] > content where TAG can be NOTE , IMPORTANT , TIP , WARNING or CAUTION . they also have these cool icons next to them, but the catch is you need a nerd font for it. i’ll add an option to not need it and only use ascii characters next, we have highlighted code blocks! the renderer can highlight hundreds of languages using shiki ! you might not even have heard of some of the languages that it can highlight! imo its really nice looking and i love it! the bulk of this time came from adding support for task list items because i couldn’t figure out how to do it. eventually after some tinkering i’ve got it to work! it looks kinda cool too tbh i also got emoji support using an extension. it automatically converts :emoji: to the corresponding emoji if its in the unicode specification. finally, i added a simple height option that just sets the height of the renderer. it allows you to set the height of the renderer manually and that’s about it lmao Changelog ( b4f69ad ) Add height option ( beea3a6 ) Add task list items support ( 4c42c84 ) Add emoji support ( 564a761 ) Upgrade markdown-it, fix breaking changes ( 963d910 ) Add alerts support ( 5e266e8 ) Add icons in code blocks ( 0bf0af7 ) Add code block support
figlet headings, small headings, bottom bar, help menu and keybinds we’ve got a lot of new stuff! firstly we’ve got a bottom bar! all it does for now is show reMDer with a green bg and the file name next to it, but i’ll add more later! next we’ve got figlet headings! at the start i was thinking about using figlet for headings but i gave up on that. but now, i’m back to using it! this took a good chunk of the overflowing hours here but they look really cool too! passing a --no-render-headings or -H flag will make the headings render as normal text with colors instead of figlet fonts now! there’s now a tiny help menu in the corner! it only shows two keybinds right now–oh and speaking of keybinds… keybindings are now in ! for now you can press q to quit, ? to toggle the help menu, and C (shift+c) to open the console in debug mode and that’s about it next steps? here’s what i’m gonna do next: add support for horizontal rules add a table of contents feature like that of the leaf markdown viewer add some stuff to the bottom bar add an option to put the bottom bar at the top instead add support for a config file using YAML Changelog ( 9557586 ) Add help menu ( a4149e2 ) Add keybinds: q to quit, C to toggle console ( 4b18153 ) Finish figlet fonts support ( d23466d ) Start trying figlet again for ASCII art ( 33d52ea ) Start working on ASCII art for h2 headings ( b0e1668 ) Add option to not print big headings ( c58369c ) Start with bottom bar
table of contents feature is done! took only 10 hours, but im done with the table of contents thing! you can press shift+j to go down to the next heading, and i forgot to add shift+k 😭 anyway this took a while since i couldn’t figure out how to position the box properly and how to style it. this was fucking ass icl. i usually have much more to talk about but this wasn’t the most fun so here’s the commits: Changelog ( 5ccec11 ) Remove unnecessary focusing ToC ( 927cae9 ) Add tab cycling ( ae72d3d ) Scroll ToC menu to selected index instead of blindly 1 down ( 249d61a ) Implement scrolling ToC on pressing J ( a2ae0f2 ) Get table of contents feature working ( a6c7744 ) Add scrolling to next heading on pressing J ( 49f8fec ) Add “? - Help” hint to end of bottom bar
scroll one line at a time, render div and details elements not very big news here, but now you can: scroll just one line at a time instead of a whole renderable/element at once render div and details properly! now you can click on a details element to open and close it! this didn’t even take too long more technical, but i switched to mostly using the opentui renderable api which uses classes like TextRenderable or BoxRenderable that return a Renderable instance instead of functions like Text and Box which return a ProxiedVNode<T> . this is mostly because there’s a bunch of things a Renderable has that a ProxiedVNode doesn’t anyways im currently working on adding footnotes, so see you in a few days Changelog ( 64f6ed8 ) Add footnote plugin (usage WIP) (errors on run) ( ddd5c46 ) Add indicators to details elements and opening on click/space/enter ( 344806a ) Add support for rendering div and details elements ( d3b4a1d ) Fix small layout issues ( 5eb11b9 ) Scroll only one line at a time and convert (mostly) to Renderable API
last devlog this is my last devlog the project isn’t complete and i won’t be shipping it. you see, i was banned for 2 months for misconduct on slack (i will not provide details here but i deserved it, it was corny anyway), and as part of that ban, i can’t participate in any events, including stardance. in this time however, i’ve done a lot. there’s now spinners for images, proper tables, and so many more improvements. keep your eyes peeled for a release on the github ! 👀 also it doesn’t matter that this devlog is 15 hours over the limit, its not like i can do anything about it. also if one of you regulars in #stardance see this, can you please ask amber if i can have my sticky streak rewards? i really want the stickers and plushie Changelog ( 446103b ) Render details elements properly again ( f527e5d ) Better logs, align images in row when a paragraph contains only images ( 3df2f59 ) Make task list function use TextChunk over ANSI escapes ( 2367089 ) Add proper tables ( 47c2b42 ) Add aligning components ( 00785d7 ) Move from Chalk/ANSI escapes to OpenTUI StyledText for styles ( 429e4b6 ) Load images lazily with spinner while loading ( a993197 ) Use OpenTUI ImageRenderable for images in renderer ( aa96067 ) Improve types and error handling, work on image bug ( b54ad43 ) Revert “Add footnote plugin (usage WIP) (errors on run)”...
|
1792803099.7726493
|
1793407899.7726493
|
|
10130
|
Guided "Rocket" by @danikraft | Stardance
|
danikraft
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Guided "Rocket" by @danikraft | Sta Title: Guided "Rocket" by @danikraft | Stardance...
|
1793458441.1698806
|
1794063241.1698806
|
|
10131
|
Functioning! by @YoussefTech | Stardance
|
YoussefTech
|
0
|
2.17
|
0
|
[]
|
[{"post_id": 4406, "ts": "2026 [{"post_id": 4406, "ts": "2026-06-07T18:42:52Z", "hours": 2.1744, "text": "I was playing around in the desmos graphing calculator when I got the idea for this project, it sounded easier in my head than it actually was, and for now most of it is TODOs, the input parsing will be a nightmare, as of this devlog though, the function and graph generation for linear, quadratic, and cubic functions is working, next up I’ll focus on adding more function types and making the game easier cause I CANNOT guess a single one 😭, there’s no input checking yet, the submit button is just for show, and I don’t have a logo yet so I’m using the chart emoji 😁, I wanna attach a video of it working but the video is too big to be uploaded 😤"}]...
|
Title: Functioning! by @YoussefTech | Stardance
D Title: Functioning! by @YoussefTech | Stardance
Devlogs:
I was playing around in the desmos graphing calculator when I got the idea for this project, it sounded easier in my head than it actually was, and for now most of it is TODOs, the input parsing will be a nightmare, as of this devlog though, the function and graph generation for linear, quadratic, and cubic functions is working, next up I’ll focus on adding more function types and making the game easier cause I CANNOT guess a single one 😭, there’s no input checking yet, the submit button is just for show, and I don’t have a logo yet so I’m using the chart emoji 😁, I wanna attach a video of it working but the video is too big to be uploaded 😤...
|
1793307276.0648654
|
1793912076.0648654
|
|
10132
|
My awesome macropad! by @dudeman | Stardance
|
dudeman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @dudeman | Stardanc Title: My awesome macropad! by @dudeman | Stardance...
|
1792770606.84477
|
1793375406.84477
|
|
10133
|
My first slack bot! by @Gralgi | Stardance
|
Gralgi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Gralgi | Stardance
|
1793285780.8157911
|
1793890580.8157911
|
|
10134
|
Chess VS Checkers by @rafan | Stardance
|
rafan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Chess VS Checkers by @rafan | Stardance
|
1793450911.3205004
|
1794055711.3205004
|
|
10135
|
My first slack bot! by @tommy | Stardance
|
tommy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @tommy | Stardance
|
1793213687.2425036
|
1793818487.2425036
|
|
10136
|
Football Trivia Game by @Steven_Hany | Stardance
|
Steven_Hany
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Football Trivia Game by @Steven_Hany | Star Title: Football Trivia Game by @Steven_Hany | Stardance...
|
1793181199.3328292
|
1793785999.3328292
|
|
10137
|
My awesome macropad! by @amberfemboy | Stardance
|
amberfemboy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @amberfemboy | Star Title: My awesome macropad! by @amberfemboy | Stardance...
|
1793465684.5468996
|
1794070484.5468996
|
|
10138
|
My awesome macropad! by @weibolin322 | Stardance
|
weibolin322
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @weibolin322 | Star Title: My awesome macropad! by @weibolin322 | Stardance...
|
1793451157.3768747
|
1794055957.3768747
|
|
10139
|
Weapon mod for Blade and Sorcery by @TacoCrab | St Weapon mod for Blade and Sorcery by @TacoCrab | Stardance...
|
TacoCrab
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Weapon mod for Blade and Sorcery by @TacoCr Title: Weapon mod for Blade and Sorcery by @TacoCrab | Stardance...
|
1793191752.8690946
|
1793796552.8690946
|
|
10140
|
YonatanOS by @Yonatan1 | Stardance
|
Yonatan1
|
0
|
2.97
|
0
|
[]
|
[{"post_id": 6934, "ts": "2026 [{"post_id": 6934, "ts": "2026-06-11T16:53:54Z", "hours": 0.9706, "text": "Just wrapped up Part 4 of WebOS! 🎧🚀 Added my first real application to YonatanOS: a custom music app that displays my favorite music. I set up the desktop icon and got the window layering correctly when you click it. The OS is finally coming to life with real applications!"}, {"post_id": 6809, "ts": "2026-06-11T12:48:35Z", "hours": 0.5044, "text": "Part 3 is officially done! 🚀 For this update, I added some real interactivity to YonatanOS. The welcome window is now fully draggable, closable, and openable! I also cleaned up the codebase by organizing my styles and moving the JavaScript logic into its own file. It’s really starting to feel like a functional desktop!"}, {"post_id": 5217, "ts": "2026-06-08T22:31:54Z", "hours": 0.4894, "text": "Leveling up my WebOS! 🚀 For this second update, I finished part 2 and added a cool div on the top that shows the time, also changed the background picture and all of the website style to more whiteish style"}, {"post_id": 5187, "ts": "2026-06-08T21:40:25Z", "hours": 1.0061, "text": "Just finished building out the core of my new WebOS desktop! Finished Part1 !!"}]...
|
Title: YonatanOS by @Yonatan1 | Stardance
Devlogs Title: YonatanOS by @Yonatan1 | Stardance
Devlogs:
Just finished building out the core of my new WebOS desktop! Finished Part1 !!
Leveling up my WebOS! 🚀 For this second update, I finished part 2 and added a cool div on the top that shows the time, also changed the background picture and all of the website style to more whiteish style
Part 3 is officially done! 🚀 For this update, I added some real interactivity to YonatanOS. The welcome window is now fully draggable, closable, and openable! I also cleaned up the codebase by organizing my styles and moving the JavaScript logic into its own file. It’s really starting to feel like a functional desktop!
Just wrapped up Part 4 of WebOS! 🎧🚀 Added my first real application to YonatanOS: a custom music app that displays my favorite music. I set up the desktop icon and got the window layering correctly when you click it. The OS is finally coming to life with real applications!...
|
1793231316.775944
|
1793836116.775944
|
|
10141
|
Red River Pollution by @weibolin322 | Stardance
|
weibolin322
|
1
|
11.0
|
100
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-18T21:24:20Z", "hours": 11.0, "multiplier": 9.66, "payout": 100, "blessing": "neutral", "text": "I came up with this idea from a report that talks about 10 billion liters of untreated sewage are dumped into the Red River every year. As a someone lived here, I feel like it’s my responsibility to show more people about this so that it can be fixed as soon as possible.", "repo": "https://github.com/Weibo0123/Red-River-Pollution", "demo": "https://weibo0123.github.io/Red-River-Pollution/index.html"}]...
|
[{"post_id": 11333, "ts": "202 [{"post_id": 11333, "ts": "2026-06-18T15:23:27Z", "hours": 0.3578, "text": "Compressed all the pictures so they load faster."}, {"post_id": 8847, "ts": "2026-06-14T18:29:55Z", "hours": 10.2225, "text": "This is a website that talk about the untreated sewage that gets dumped into the Red River in Winnipeg, Canada."}]...
|
Title: Red River Pollution by @weibolin322 | Stard Title: Red River Pollution by @weibolin322 | Stardance
Devlogs:
This is a website that talk about the untreated sewage that gets dumped into the Red River in Winnipeg, Canada.
Compressed all the pictures so they load faster.
Ships:
I came up with this idea from a report that talks about 10 billion liters of untreated sewage are dumped into the Red River every year. As a someone lived here, I feel like it’s my responsibility to show more people about this so that it can be fixed as soon as possible....
|
1793296057.2712908
|
1793382457.2712908
|
|
10142
|
leefy's personal site by @leefymoon | Stardanc leefy's personal site by @leefymoon | Stardance...
|
leefymoon
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T13:51:11Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i continued the making of my personal site! a few challenging things were finding features to add, how to design pages, and what to write blogs on! but through three years of having this site i’ve enjoyed making it. :]", "repo": "https://git.leefymoons-room.net/leefy/leefymoons-room", "demo": "https://leefymoons-room.net"}]...
|
[{"post_id": 35797, "ts": "202 [{"post_id": 35797, "ts": "2026-07-27T13:46:28Z", "hours": 1.1017, "text": "made a readme! go check it out if you so please ^^"}, {"post_id": 3813, "ts": "2026-06-06T21:20:12Z", "hours": 0.4611, "text": "made a new blog post! (after two months lol) https://leefymoons-room.net/blog.html#7"}]...
|
Title: leefy's personal site by @leefymoon | S Title: leefy's personal site by @leefymoon | Stardance
Devlogs:
made a new blog post! (after two months lol) https://leefymoons-room.net/blog.html#7
made a readme! go check it out if you so please ^^
Ships:
i continued the making of my personal site! a few challenging things were finding features to add, how to design pages, and what to write blogs on! but through three years of having this site i’ve enjoyed making it. :]...
|
1793469057.9976776
|
1793555457.9976776
|
|
10143
|
SolidWorks Macropad by @JamesSATX | Stardance
|
JamesSATX
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SolidWorks Macropad by @JamesSATX | Stardan Title: SolidWorks Macropad by @JamesSATX | Stardance...
|
1792759960.0331624
|
1793364760.0331624
|
|
10144
|
Incident-2012 by @weibolin322 | Stardance
|
weibolin322
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Incident-2012 by @weibolin322 | Stardance
|
1792742025.7611449
|
1793346825.7611449
|
|
10145
|
Prop Hunt game ig? by @Nogard_Inmo | Stardance
|
Nogard_Inmo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Prop Hunt game ig? by @Nogard_Inmo | Starda Title: Prop Hunt game ig? by @Nogard_Inmo | Stardance...
|
1793198864.9334855
|
1793803664.9334855
|
|
10146
|
My first slack bot! by @weibolin322 | Stardance
|
weibolin322
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @weibolin322 | Stard Title: My first slack bot! by @weibolin322 | Stardance...
|
1793177455.9866753
|
1793782255.9866753
|
|
10147
|
GTM Marketing Panel by @Alex-Shick | Stardance
|
Alex-Shick
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: GTM Marketing Panel by @Alex-Shick | Starda Title: GTM Marketing Panel by @Alex-Shick | Stardance...
|
1792799656.938156
|
1793404456.938156
|
|
10148
|
freeWillAi by @aryavora21 | Stardance
|
aryavora21
|
0
|
2.98
|
0
|
[]
|
[{"post_id": 3916, "ts": "2026 [{"post_id": 3916, "ts": "2026-06-07T01:03:21Z", "hours": 1.2025, "text": "improving backend ui: ive gotten the ai model to self think and run a local model on my rpi 4, its currently able to research online, plan out tasks & adding shell tools soon"}, {"post_id": 3769, "ts": "2026-06-06T20:21:37Z", "hours": 1.7797, "text": "improving current setup & adding backup api endpoints"}]...
|
Title: freeWillAi by @aryavora21 | Stardance
Devl Title: freeWillAi by @aryavora21 | Stardance
Devlogs:
improving current setup & adding backup api endpoints
improving backend ui: ive gotten the ai model to self think and run a local model on my rpi 4, its currently able to research online, plan out tasks & adding shell tools soon...
|
1793271207.1410332
|
1793876007.1410332
|
|
10149
|
My first slack bot! by @OdeliaG | Stardance
|
OdeliaG
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @OdeliaG | Stardance
|
1793159681.5864425
|
1793764481.5864425
|
|
10150
|
Simple Powder Sim by @thefjonkan | Stardance
|
thefjonkan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Simple Powder Sim by @thefjonkan | Stardanc Title: Simple Powder Sim by @thefjonkan | Stardance...
|
1793145147.381647
|
1793749947.381647
|