|
57252
|
pretty cool by @aatriv38 | Stardance
|
aatriv38
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: pretty cool by @aatriv38 | Stardance
|
1793426004.3072455
|
1794030804.3072455
|
|
57253
|
pretty cool by @aatriv38 | Stardance
|
aatriv38
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: pretty cool by @aatriv38 | Stardance
|
1793426005.2401261
|
1794030805.2401261
|
|
57254
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793764449.1599553
|
1794628449.1599553
|
|
57255
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793764450.931599
|
1794628450.931599
|
|
57256
|
My very own WebOS by @ShaikhHassan | Stardance
|
ShaikhHassan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @ShaikhHassan | Starda Title: My very own WebOS by @ShaikhHassan | Stardance...
|
1793426009.17436
|
1794030809.17436
|
|
57257
|
planets by @maria2_soitu5 | Stardance
|
maria2_soitu5
|
0
|
1.8
|
0
|
[]
|
[{"post_id": 61057, "ts": "202 [{"post_id": 61057, "ts": "2026-09-03T19:25:33Z", "hours": 1.8008, "text": "I finalised the title screen yayy :)) And i made each button work. Also the background is made by me"}]...
|
Title: planets by @maria2_soitu5 | Stardance
Devl Title: planets by @maria2_soitu5 | Stardance
Devlogs:
I finalised the title screen yayy :)) And i made each button work. Also the background is made by me...
|
1793426012.2371607
|
1794030812.2371607
|
|
57258
|
Everyday life coach by @Nele | Stardance
|
Nele
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Everyday life coach by @Nele | Stardance
|
1793426018.3695555
|
1794030818.3695555
|
|
57259
|
ASINAT OS by @tanisayadav111 | Stardance
|
tanisayadav111
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ASINAT OS by @tanisayadav111 | Stardance
|
1793426022.1198087
|
1794030822.1198087
|
|
57260
|
aquiz game by @Marlvin | Stardance
|
Marlvin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: aquiz game by @Marlvin | Stardance
|
1793426024.0031767
|
1794030824.0031767
|
|
57261
|
CHAO by @NerdyItachi | Stardance
|
NerdyItachi
|
0
|
0.52
|
0
|
[]
|
[{"post_id": 62523, "ts": "202 [{"post_id": 62523, "ts": "2026-09-05T22:49:49Z", "hours": 0.5167, "text": "Hehe :D"}]...
|
Title: CHAO by @NerdyItachi | Stardance
Devlogs:
Title: CHAO by @NerdyItachi | Stardance
Devlogs:
Hehe :D...
|
1793426028.436327
|
1794030828.436327
|
|
57262
|
My own claude code by @Monowar | Stardance
|
Monowar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own claude code by @Monowar | Stardance
|
1793426036.2465298
|
1794030836.2465298
|
|
57263
|
friction by @ShaikhHassan | Stardance
|
ShaikhHassan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: friction by @ShaikhHassan | Stardance
|
1793426039.410309
|
1794030839.410309
|
|
57264
|
ByteBox by @garvjangra | Stardance
|
garvjangra
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ByteBox by @garvjangra | Stardance
|
1793426041.3042748
|
1794030841.3042748
|
|
57265
|
vansh-ai_for desktop by @GAMERZVANSH | Stardance
|
GAMERZVANSH
|
0
|
6.75
|
0
|
[]
|
[{"post_id": 59875, "ts": "202 [{"post_id": 59875, "ts": "2026-09-01T21:16:13Z", "hours": 6.7489, "text": "I am working on Vansh, a cross-platform Python voice assistant inspired by Jarvis. It is designed to run on Windows, macOS, and Linux and can respond to voice commands after detecting the wake word “Vansh.” The project includes features such as speech recognition, natural-sounding text-to-speech, telling the time and date, opening websites and applications, and remote control through a REST API. I am building it in a modular way using Python, with separate components for speech-to-text, text-to-speech, configuration, command handling, and the remote server."}]...
|
Title: vansh-ai_for desktop by @GAMERZVANSH | Star Title: vansh-ai_for desktop by @GAMERZVANSH | Stardance
Devlogs:
I am working on Vansh, a cross-platform Python voice assistant inspired by Jarvis. It is designed to run on Windows, macOS, and Linux and can respond to voice commands after detecting the wake word “Vansh.” The project includes features such as speech recognition, natural-sounding text-to-speech, telling the time and date, opening websites and applications, and remote control through a REST API. I am building it in a modular way using Python, with separate components for speech-to-text, text-to-speech, configuration, command handling, and the remote server....
|
1793426046.4050398
|
1794030846.4050398
|
|
57266
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793764452.6778665
|
1794628452.6778665
|
|
57267
|
Perfect-day by @HappyMinion | Stardance
|
HappyMinion
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T19:53:27Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Perfect-day: Movies I made a interactive web page which has movie recommendations across four popular genres. Users can browse through the movie posters , view the title of the movie on hover, and click any poster to reveal a summary on what the movie is about. Features -The header which contains buttons to navigate easily and reach a genre faster. -The movie posters which show the title of the movie on hover. -Clickable movie posters which display a quick summary when a user clicks on it. Files -index.html which is the main HTML page. -style.css which is the CSS file for styling. -.jpg, .jpeg for the image files. How to run 1.Download all the files in one folder. 2.Open the index.html file in a suitable browser.", "repo": "https://github.com/saniakorai2-max/Perfect-day", "demo": "https://saniakorai2-max.github.io/Perfect-day/"}]...
|
[{"post_id": 59819, "ts": "202 [{"post_id": 59819, "ts": "2026-09-01T19:50:01Z", "hours": 5.8292, "text": "Devlog : “My Perfect Day: Movies” Project Overview My Perfect Day: Movies is an interactive web page that shows my favorite movies across four genres: Marvel, Classics, Dystopian, and Animated that i would recommend to others so they can have a perfect day. It is a clean, modern UI that feels smooth and easy to navigate, IIt has interactive posters and movie detail cards! Key Features Glass Header: Styled using CSS backdrop-filter to create a glassy effect. Scrolling Posters: Each genre has scrollbars for easy browsing. Hover Overlays: Poster titles show up whenever you hover over a movie. Interactive Summary Cards: Clicking on any poster toggles an info card directly beneath the row to display a quick summary of the movie. Languages Used HTML5: Semantic structure and container layouts. CSS3: Flexbox, glassmorphism filters, transitions, and custom scrollbar styling. JavaScript (Vanilla): Event listeners and DOM class toggling. Bug Fixes Poster Clicks Not Registering The overlay title box sat on top of the image element, due to which it would capture the mouse clicks instead of the poster. Solution: Added “pointer-events: none;” to the title class in CSS so clicks pass straight through to the image."}]...
|
Title: Perfect-day by @HappyMinion | Stardance
De Title: Perfect-day by @HappyMinion | Stardance
Devlogs:
Devlog : “My Perfect Day: Movies” Project Overview My Perfect Day: Movies is an interactive web page that shows my favorite movies across four genres: Marvel, Classics, Dystopian, and Animated that i would recommend to others so they can have a perfect day. It is a clean, modern UI that feels smooth and easy to navigate, IIt has interactive posters and movie detail cards! Key Features Glass Header: Styled using CSS backdrop-filter to create a glassy effect. Scrolling Posters: Each genre has scrollbars for easy browsing. Hover Overlays: Poster titles show up whenever you hover over a movie. Interactive Summary Cards: Clicking on any poster toggles an info card directly beneath the row to display a quick summary of the movie. Languages Used HTML5: Semantic structure and container layouts. CSS3: Flexbox, glassmorphism filters, transitions, and custom scrollbar styling. JavaScript (Vanilla): Event listeners and DOM class toggling. Bug Fixes Poster Clicks Not Registering The overlay title box sat on top of the image element, due to which it would capture the mouse clicks instead of the poster. Solution: Added “pointer-events: none;” to the title class in CSS so clicks pass straight through to the image.
Ships:
Perfect-day: Movies I made a interactive web page which has movie recommendations across four popular genres. Users can browse through the movie posters , view the title of the movie on hover, and click any poster to reveal a summary on what the movie is about. Features -The header which contains buttons to navigate easily and reach a genre faster. -The movie posters which show the title of the movie on hover. -Clickable movie posters which display a quick summary when a user clicks on it. Files -index.html which is the main HTML page. -style.css which is the CSS file for styling. -.jpg, .jpeg for the image files. How to run 1.Download all the files in one folder. 2.Open the index.html file in a suitable browser....
|
1793890439.539973
|
1793976839.539973
|
|
57268
|
mirrorbot by @denis | Stardance
|
denis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mirrorbot by @denis | Stardance
|
1793426057.1375268
|
1794030857.1375268
|
|
57269
|
Nothing can change the end by @Ottimations | Stard Nothing can change the end by @Ottimations | Stardance...
|
Ottimations
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nothing can change the end by @Ottimations Title: Nothing can change the end by @Ottimations | Stardance...
|
1793426061.034317
|
1794030861.034317
|
|
57270
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793764453.5662344
|
1794628453.5662344
|
|
57271
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1793764455.5983925
|
1794628455.5983925
|
|
57272
|
My first slack bot! by @Saqu | Stardance
|
Saqu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Saqu | Stardance
|
1793426076.8434277
|
1794030876.8434277
|
|
57273
|
Slarvis (Jarvis In Slack by @Uncool | Stardance
|
Uncool
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Slarvis (Jarvis In Slack by @Uncool | Stard Title: Slarvis (Jarvis In Slack by @Uncool | Stardance...
|
1793426080.8608167
|
1794030880.8608167
|
|
57274
|
Chronotameion by @Ayin | Stardance
|
Ayin
|
0
|
8.75
|
0
|
[]
|
[{"post_id": 66231, "ts": "202 [{"post_id": 66231, "ts": "2026-09-11T22:39:04Z", "hours": 8.7539, "text": "Added a gun lil style meter, it generates points randomly around a line that represents your actual style points, and stays self contained within the box."}]...
|
Title: Chronotameion by @Ayin | Stardance
Devlogs Title: Chronotameion by @Ayin | Stardance
Devlogs:
Added a gun lil style meter, it generates points randomly around a line that represents your actual style points, and stays self contained within the box....
|
1793426081.783387
|
1794030881.783387
|
|
57275
|
My awesome macropad! by @Froster | Stardance
|
Froster
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Froster | Stardanc Title: My awesome macropad! by @Froster | Stardance...
|
1793426084.5072002
|
1794030884.5072002
|
|
57276
|
Celvorn by @Tuxilio | Stardance
|
Tuxilio
|
0
|
20.67
|
0
|
[]
|
[{"post_id": 70637, "ts": "202 [{"post_id": 70637, "ts": "2026-09-19T14:26:45Z", "hours": 2.1736, "text": "You can now find a dead npc lying in the bed and then again an empty bed which (hopefully) creates some horror feeling … The bed changes it’s appereance only if it is not lit."}, {"post_id": 65823, "ts": "2026-09-11T07:00:45Z", "hours": 0.4589, "text": "I’ve added doors that open automatically when the player is near them, but which block out the light by default to add a bit more suspense :)"}, {"post_id": 65812, "ts": "2026-09-11T06:25:05Z", "hours": 2.7819, "text": "I reworked my complete spritesheet to be fully topdown instead of 45 degrees as before. This is imo much better for a horror game, and another pro is that I don’t have to bother when the player or light is in front or behind a furniture. It took a bit to redraw everything, but it took longer to adjust everythinh in Godot. Timelapse: https://lapse.hackclub.com/timelapse/zXPgC01Cz_F3"}, {"post_id": 63706, "ts": "2026-09-07T17:13:14Z", "hours": 1.0939, "text": "I added an AudioManager for playing generic horror background music and a AudioStreamPlayer to the player to play the player’s footstep sound. The next step is to build a bigger map with doors etc"}, {"post_id": 63502, "ts": "2026-09-07T12:03:54Z", "hours": 1.9517, "text": "I finally added the flashlight! It is a bit difficult because I made the game 2d and Godot can’t tell if the player is behind an object or not for lightning, so I added two occluders, so you can light up things if you are in front of them and don’t light them up when behind. I think it’s ok-ish done…"}, {"post_id": 62076, "ts": "2026-09-05T09:53:39Z", "hours": 1.2478, "text": "I finally created the flashlight in GIMP!!! It took a lot of time because I am not well in GIMP but it worked finally!!! Lapse: https://lapse.hackclub.com/timelapse/e9Bx9rDVkK6L Now I need to rotate it to the mouse and it should work :)"}, {"post_id": 61767, "ts": "2026-09-04T20:39:51Z", "hours": 1.9167, "text": "I tried to darken the whole scene and add a flashlight… But I spent over 1 hour debugging the gradient and trying to get it to get darker on the way of the light but IT JUST DOESNT WORK :(((("}, {"post_id": 61596, "ts": "2026-09-04T16:05:31Z", "hours": 0.7517, "text": "I fixed the problem that the player was not showing up! (the problem was that one script wasn’t attached to a scene … and that took nearly 45min to debug …)"}, {"post_id": 61478, "ts": "2026-09-04T12:40:36Z", "hours": 1.5369, "text": "I improved the tilemap for my game! It now has more tiles to be able to build rooms :) I recorded both sessions on Lapse: Session 2: https://lapse.hackclub.com/timelapse/CxfSRjfYYLvD Session 3: https://lapse.hackclub.com/timelapse/QI2A813NdaoZ"}, {"post_id": 61097, "ts": "2026-09-03T20:22:49Z", "hours": 1.0039, "text": "I created a basic tilemap for my game! It is done completely in white/grey/black. You can have a look at the progress at https://lapse.hackclub.com/timelapse/CiYcAOcturLs"}, {"post_id": 61035, "ts": "2026-09-03T18:58:27Z", "hours": 0.9669, "text": "I created 2 more character animations, idle and walk from side view, and added the state machine states to the player :)"}, {"post_id": 60729, "ts": "2026-09-03T09:10:47Z", "hours": 1.4089, "text": "I reworked my main character art to be more simple and a bit more horror like. It took some time because I’m not well using Aseprite but it’s ok-ish …"}, {"post_id": 60162, "ts": "2026-09-02T11:12:07Z", "hours": 3.3728, "text": "I started working on my godot game. The idea is a horror topdown rpg in pixel art. I already have done some Godot, but only really basic tutorials, and now wanted to start a new, nice project without just following tutorials. I’m not really good at pixel art, but I want to try to create it by myself. I added a basic player and character class, a player and a level manager, but currently it is more a draft implementation than a working version (and I don’t have any spritesheets currently so nothing to see)"}]...
|
Title: Celvorn by @Tuxilio | Stardance
Devlogs:
I Title: Celvorn by @Tuxilio | Stardance
Devlogs:
I started working on my godot game. The idea is a horror topdown rpg in pixel art. I already have done some Godot, but only really basic tutorials, and now wanted to start a new, nice project without just following tutorials. I’m not really good at pixel art, but I want to try to create it by myself. I added a basic player and character class, a player and a level manager, but currently it is more a draft implementation than a working version (and I don’t have any spritesheets currently so nothing to see)
I reworked my main character art to be more simple and a bit more horror like. It took some time because I’m not well using Aseprite but it’s ok-ish …
I created 2 more character animations, idle and walk from side view, and added the state machine states to the player :)
I created a basic tilemap for my game! It is done completely in white/grey/black. You can have a look at the progress at https://lapse.hackclub.com/timelapse/CiYcAOcturLs
I improved the tilemap for my game! It now has more tiles to be able to build rooms :) I recorded both sessions on Lapse: Session 2: https://lapse.hackclub.com/timelapse/CxfSRjfYYLvD Session 3: https://lapse.hackclub.com/timelapse/QI2A813NdaoZ
I fixed the problem that the player was not showing up! (the problem was that one script wasn’t attached to a scene … and that took nearly 45min to debug …)
I tried to darken the whole scene and add a flashlight… But I spent over 1 hour debugging the gradient and trying to get it to get darker on the way of the light but IT JUST DOESNT WORK :((((
I finally created the flashlight in GIMP!!! It took a lot of time because I am not well in GIMP but it worked finally!!! Lapse: https://lapse.hackclub.com/timelapse/e9Bx9rDVkK6L Now I need to rotate it to the mouse and it should work :)
I finally added the flashlight! It is a bit difficult because I made the game 2d and Godot can’t tell if the player is behind an object or not for lightning, so I added two occluders, so you can light up things if you are in front of them and don’t light them up when behind. I think it’s ok-ish done…
I added an AudioManager for playing generic horror background music and a AudioStreamPlayer to the player to play the player’s footstep sound. The next step is to build a bigger map with doors etc
I reworked my complete spritesheet to be fully topdown instead of 45 degrees as before. This is imo much better for a horror game, and another pro is that I don’t have to bother when the player or light is in front or behind a furniture. It took a bit to redraw everything, but it took longer to adjust everythinh in Godot. Timelapse: https://lapse.hackclub.com/timelapse/zXPgC01Cz_F3
I’ve added doors that open automatically when the player is near them, but which block out the light by default to add a bit more suspense :)
You can now find a dead npc lying in the bed and then again an empty bed which (hopefully) creates some horror feeling … The bed changes it’s appereance only if it is not lit....
|
1793426089.3833492
|
1794030889.3833492
|
|
57277
|
My very own WebOS by @coolcreations87 | Stardance
|
coolcreations87
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @coolcreations87 | Sta Title: My very own WebOS by @coolcreations87 | Stardance...
|
1793426092.950192
|
1794030892.950192
|
|
57278
|
Untitled project by @Brady_8806 | Stardance
|
Brady_8806
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Brady_8806 | Stardance
|
1793426096.829861
|
1794030896.829861
|
|
57279
|
My own site! by @Bipsa | Stardance
|
Bipsa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Bipsa | Stardance
|
1793426109.314317
|
1794030909.314317
|
|
57280
|
Astro270 Camera Mod by @Advay | Stardance
|
Advay
|
0
|
1.95
|
0
|
[]
|
[{"post_id": 61904, "ts": "202 [{"post_id": 61904, "ts": "2026-09-05T02:28:36Z", "hours": 0.9778, "text": "DEVLOG 002 Complete CAD and assemblyI completed the CAD models, printed out the second version of the front mount, and assembled the whole camera by disassembling the outer frame, screwing the PCB into the main front case, and then finally using superglue to secure the back cover. I then tested out the camera in SharpCap, where it worked perfectly, but with a few mistakes that could be improved. I must have accidentally smudged the sensor a little bit, as I can see a pretty large portion of the screen being slightly hazy or with small impurities all over it, so I will have to remove those by taking calibration frames, as it is not possible to clean a sensor easily without damaging it. Another mistake is that I forgot to take off the small green LED light, which might have some small effects on the performance, as it can be slightly seen in full darkness, so I will again have to resort to using calibration frames to eradicate any imaging quality issues. There will likely be one more DEVLOG, in which I will create the official repository, BOM, and prepare everything for publication, and publish everything. Then I will test the whole setup as well in my final devlog."}, {"post_id": 60522, "ts": "2026-09-02T22:20:41Z", "hours": 0.9711, "text": "DEVLOG 001 I made the CAD model for the initial front case and got it printed out. It features two screw mounting holes, one hole for the microphone to fit through, one large hole to expose the processing chips to air for cooling, and two side supports to hold the whole PCB in place. I accidentally made the main tube of the setup with an inner diameter of 1.25 inches rather than an outer diameter of 1.25 inches, so that will be fixed in the V3 model. I also did some minor adjustments to place the screws in the right place, as they were about 1mm off in the first version. Along with the screws, the whole sensor was not centered in the circular hole too, so this change will fix that. For the V3 design, I will change the 1mm gap, fix the optical tube diameter, and extrude the outer shell further to allow for the back cover to go onto it with a simple push-in lip. I will also CAD the back cover with proper air vents to allow for more circulation, even though I can’t mount a heatsink onto it easily. After this, I will test the whole setup in my big dob, as well as the Hadley in daytime, to get everything working, and test the FOV, and then I can try imaging Saturn, or imaging the Moon."}]...
|
Title: Astro270 Camera Mod by @Advay | Stardance
Title: Astro270 Camera Mod by @Advay | Stardance
Devlogs:
DEVLOG 001 I made the CAD model for the initial front case and got it printed out. It features two screw mounting holes, one hole for the microphone to fit through, one large hole to expose the processing chips to air for cooling, and two side supports to hold the whole PCB in place. I accidentally made the main tube of the setup with an inner diameter of 1.25 inches rather than an outer diameter of 1.25 inches, so that will be fixed in the V3 model. I also did some minor adjustments to place the screws in the right place, as they were about 1mm off in the first version. Along with the screws, the whole sensor was not centered in the circular hole too, so this change will fix that. For the V3 design, I will change the 1mm gap, fix the optical tube diameter, and extrude the outer shell further to allow for the back cover to go onto it with a simple push-in lip. I will also CAD the back cover with proper air vents to allow for more circulation, even though I can’t mount a heatsink onto it easily. After this, I will test the whole setup in my big dob, as well as the Hadley in daytime, to get everything working, and test the FOV, and then I can try imaging Saturn, or imaging the Moon.
DEVLOG 002 Complete CAD and assemblyI completed the CAD models, printed out the second version of the front mount, and assembled the whole camera by disassembling the outer frame, screwing the PCB into the main front case, and then finally using superglue to secure the back cover. I then tested out the camera in SharpCap, where it worked perfectly, but with a few mistakes that could be improved. I must have accidentally smudged the sensor a little bit, as I can see a pretty large portion of the screen being slightly hazy or with small impurities all over it, so I will have to remove those by taking calibration frames, as it is not possible to clean a sensor easily without damaging it. Another mistake is that I forgot to take off the small green LED light, which might have some small effects on the performance, as it can be slightly seen in full darkness, so I will again have to resort to using calibration frames to eradicate any imaging quality issues. There will likely be one more DEVLOG, in which I will create the official repository, BOM, and prepare everything for publication, and publish everything. Then I will test the whole setup as well in my final devlog....
|
1793426111.1830425
|
1794030911.1830425
|
|
57281
|
flood-risk-index by @Hamerenoh | Stardance
|
Hamerenoh
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T04:21:22Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built Flood Risk Index — an interactive map that estimates flood risk for any point using real elevation and rainfall data, not a black-box model. Click anywhere on the map, and it fetches that location’s actual elevation and rain forecast, then calculates a Low/Moderate/High risk level using a transparent formula: lower elevation combined with higher rain chance means higher risk. The most unexpected challenge was the map itself — the tile provider I’d originally set up started requiring an API key partway through building, and the whole map was covered in “API KEY REQUIRED” watermarks. I fixed it by switching to OpenStreetMap’s free tiles and using a CSS trick to keep the dark visual style I wanted, instead of depending on a paid service. I’m proud that I wrote the actual risk-calculation logic myself — the rules combining elevation and rainfall into a risk score — and that every result the app shows is fully explainable, not hidden inside a model no one can inspect. The original idea for this project involved a trained CNN on satellite imagery, which isn’t realistic to build honestly in this timeframe, so I deliberately scoped it down to something transparent and fully working instead. To test it: click anywhere on the map (try a low-lying area near a river or coast vs. a mountainous region) and watch the readout panel show the real elevation, rain chance, and resulting risk level with a gauge visual.", "repo": "https://github.com/hamerenohdemelash16-rgb/flood-risk-index", "demo": "https://hamerenohdemelash16-rgb.github.io/flood-risk-index/"}]...
|
[{"post_id": 61287, "ts": "202 [{"post_id": 61287, "ts": "2026-09-04T04:12:40Z", "hours": 2.8425, "text": "Built the core risk-calculation logic for Flood Risk Index today. Ran into a real problem first: the map tiles I’d originally set up (CartoDB dark tiles) started requiring an API key I don’t have — the whole map was covered in “API KEY REQUIRED” watermarks. Fixed it by switching to OpenStreetMap’s standard tiles (permanently free, no key) and using a CSS color-inversion trick to keep the dark navy look I wanted. Then wrote calculateRisk() myself — it takes real elevation and rainfall data for any point someone clicks on the map, and combines them into a Low/Moderate/High risk score using simple, transparent rules (low elevation + high rain chance = higher risk). Also wrote a full README explaining the project, and being upfront that this uses a rule-based formula rather than a trained ML model on satellite imagery — that’s a deliberate scope decision (real, explainable results now) rather than an unfinished feature, with the ML version listed as future work."}]...
|
Title: flood-risk-index by @Hamerenoh | Stardance
Title: flood-risk-index by @Hamerenoh | Stardance
Devlogs:
Built the core risk-calculation logic for Flood Risk Index today. Ran into a real problem first: the map tiles I’d originally set up (CartoDB dark tiles) started requiring an API key I don’t have — the whole map was covered in “API KEY REQUIRED” watermarks. Fixed it by switching to OpenStreetMap’s standard tiles (permanently free, no key) and using a CSS color-inversion trick to keep the dark navy look I wanted. Then wrote calculateRisk() myself — it takes real elevation and rainfall data for any point someone clicks on the map, and combines them into a Low/Moderate/High risk score using simple, transparent rules (low elevation + high rain chance = higher risk). Also wrote a full README explaining the project, and being upfront that this uses a rule-based formula rather than a trained ML model on satellite imagery — that’s a deliberate scope decision (real, explainable results now) rather than an unfinished feature, with the ML version listed as future work.
Ships:
Built Flood Risk Index — an interactive map that estimates flood risk for any point using real elevation and rainfall data, not a black-box model. Click anywhere on the map, and it fetches that location’s actual elevation and rain forecast, then calculates a Low/Moderate/High risk level using a transparent formula: lower elevation combined with higher rain chance means higher risk. The most unexpected challenge was the map itself — the tile provider I’d originally set up started requiring an API key partway through building, and the whole map was covered in “API KEY REQUIRED” watermarks. I fixed it by switching to OpenStreetMap’s free tiles and using a CSS trick to keep the dark visual style I wanted, instead of depending on a paid service. I’m proud that I wrote the actual risk-calculation logic myself — the rules combining elevation and rainfall into a risk score — and that every result the app shows is fully explainable, not hidden inside a model no one can inspect. The original idea for this project involved a trained CNN on satellite imagery, which isn’t realistic to build honestly in this timeframe, so I deliberately scoped it down to something transparent and fully working instead. To test it: click anywhere on the map (try a low-lying area near a river or coast vs. a mountainous region) and watch the readout panel show the real elevation, rain chance, and resulting risk level with a gauge visual....
|
1793771443.865419
|
1794635443.865419
|
|
57282
|
My first slack bot! by @srnavaneeth1 | Stardance
|
srnavaneeth1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @srnavaneeth1 | Star Title: My first slack bot! by @srnavaneeth1 | Stardance...
|
1793426121.2363303
|
1794030921.2363303
|
|
57283
|
Make life smooth by @Bipsa | Stardance
|
Bipsa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Make life smooth by @Bipsa | Stardance
|
1793426124.037485
|
1794030924.037485
|
|
57284
|
Mickey mouse by @Bipsa | Stardance
|
Bipsa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mickey mouse by @Bipsa | Stardance
|
1793426127.7797008
|
1794030927.7797008
|
|
57285
|
My awesome macropad! by @Willi | Stardance
|
Willi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Willi | Stardance
|
1793426131.9953835
|
1794030931.9953835
|
|
57286
|
Machine Learning Lab by @sandebrandon | Stardance
|
sandebrandon
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Machine Learning Lab by @sandebrandon | Sta Title: Machine Learning Lab by @sandebrandon | Stardance...
|
1793426136.5627277
|
1794030936.5627277
|
|
57287
|
My very own WebOS by @adeebshadique | Stardance
|
adeebshadique
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @adeebshadique | Stard Title: My very own WebOS by @adeebshadique | Stardance...
|
1793426143.1787915
|
1794030943.1787915
|
|
57288
|
My own site! by @kukucska_zsombor | Stardance
|
kukucska_zsombor
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @kukucska_zsombor | Stardan Title: My own site! by @kukucska_zsombor | Stardance...
|
1793426147.0217102
|
1794030947.0217102
|
|
57289
|
Angle of Repose Digital Twin by @dillonyegudkin | Angle of Repose Digital Twin by @dillonyegudkin | Stardance...
|
dillonyegudkin
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T03:29:39Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Angle of Repose Digital Twin is complete. I built it from scratch for my angle-of-repose research project. It runs 18 true-3D physics trials across quartz-sand and glass-bead conditions, measures and saves every pile, and automatically turns the results into a research report with comparison graphs, validation checks, replayable trials, raw XYZ data, and reproducibility settings. Its diagnostic system checks whether results are trustworthy before accepting them. The complete workflow—from running the experiment to producing the research output—is available in the demo and source code.", "repo": "https://github.com/DillGrammer/angle-of-repose-digital-twin", "demo": "https://dillgrammer.github.io/angle-of-repose-digital-twin/"}]...
|
[{"post_id": 60793, "ts": "202 [{"post_id": 60793, "ts": "2026-09-03T11:57:45Z", "hours": 4.02, "text": "From a failed 2D pile to a 3D simulator that can reject its own results I started this because a friend had spent a full week at UCF helping run an angle-of-repose experiment. The physical work was much bigger than just pouring sand: the team needed a built apparatus, fabricated parts, repeated cleaning and resetting between trials, travel, and separate people handling the experiment and slope-analysis software. I wanted to know whether a digital twin could make that kind of research faster and easier to reproduce. My first version was a 2D particle solver. It could draw a convincing pile, but the pre-validation checks showed that the biggest remaining problem was the physics model itself—not the line used to measure the slope. Fixing the graph would only have hidden the real problem, so I restarted the core in true 3D with PyBullet. My notebook says the first material went from more than 12% error to under 5%, which felt huge. The other materials were not magically fixed: several quartz sizes were still too steep, and the glass-bead conditions revealed bad symmetry and input problems. I corrected the physical sizes, contact behavior, and measurement rules rather than entering the UCF answers and tuning until they matched. Then the most important moment happened. I wrote “A breakthrough has occurred” across the page because the pre-validator saw that a run was likely to create bad data and stopped the simulation before it could report an angle. That is now the main idea of the project: the simulator should not just output a number—it should explain whether that number passed its own reliability checks. The next bugs were more subtle. A few particles could roll away from the main pile and pull the measured slope downward, so I changed the analysis to isolate the supported pile body and compare two perpendicular views. The automatic experiment also trapped the user after it started, saved trials without a clear replay path, and showed technical cache/lock messages that made sense to the code but not to a new user. I redesigned the interface around one action: click Run Current Trial , let the complete trial measure and save itself, review the result or replay, then move to the next trial. Replays now have familiar previous, play, pause, restart, next, and timeline controls, plus one shared speed setting. The diagnostic status is written in normal language and the controls are centered instead of scattered around the screen. The final experiment contains 18 trials across unsieved quartz, three sieved quartz size ranges, and one- and two-cup glass-bead conditions. It stores the seeds, settings, raw XYZ positions, browser replays, CSV data, validation report, graphs, and final research report. Compared with the selected published benchmarks, the simulation was closer in four of six conditions and the UCF measurements were closer in two. The two-cup glass-bead case still has a large error, and I kept it because removing the worst result would defeat the purpose of the project. I spent about 15 hours on the complete process. Hackatime captures about 4 hours from the project-specific coding records; the rest includes research, long-running simulations, reviewing results, handwritten planning, and work outside the tracked editor. What I learned is that a believable visualization is not the same thing as a defensible experiment. The most valuable feature is not the 3D pile—it is the point where the program is willing to say, “This result is not ready to trust.”"}]...
|
Title: Angle of Repose Digital Twin by @dillonyegu Title: Angle of Repose Digital Twin by @dillonyegudkin | Stardance
Devlogs:
From a failed 2D pile to a 3D simulator that can reject its own results I started this because a friend had spent a full week at UCF helping run an angle-of-repose experiment. The physical work was much bigger than just pouring sand: the team needed a built apparatus, fabricated parts, repeated cleaning and resetting between trials, travel, and separate people handling the experiment and slope-analysis software. I wanted to know whether a digital twin could make that kind of research faster and easier to reproduce. My first version was a 2D particle solver. It could draw a convincing pile, but the pre-validation checks showed that the biggest remaining problem was the physics model itself—not the line used to measure the slope. Fixing the graph would only have hidden the real problem, so I restarted the core in true 3D with PyBullet. My notebook says the first material went from more than 12% error to under 5%, which felt huge. The other materials were not magically fixed: several quartz sizes were still too steep, and the glass-bead conditions revealed bad symmetry and input problems. I corrected the physical sizes, contact behavior, and measurement rules rather than entering the UCF answers and tuning until they matched. Then the most important moment happened. I wrote “A breakthrough has occurred” across the page because the pre-validator saw that a run was likely to create bad data and stopped the simulation before it could report an angle. That is now the main idea of the project: the simulator should not just output a number—it should explain whether that number passed its own reliability checks. The next bugs were more subtle. A few particles could roll away from the main pile and pull the measured slope downward, so I changed the analysis to isolate the supported pile body and compare two perpendicular views. The automatic experiment also trapped the user after it started, saved trials without a clear replay path, and showed technical cache/lock messages that made sense to the code but not to a new user. I redesigned the interface around one action: click Run Current Trial , let the complete trial measure and save itself, review the result or replay, then move to the next trial. Replays now have familiar previous, play, pause, restart, next, and timeline controls, plus one shared speed setting. The diagnostic status is written in normal language and the controls are centered instead of scattered around the screen. The final experiment contains 18 trials across unsieved quartz, three sieved quartz size ranges, and one- and two-cup glass-bead conditions. It stores the seeds, settings, raw XYZ positions, browser replays, CSV data, validation report, graphs, and final research report. Compared with the selected published benchmarks, the simulation was closer in four of six conditions and the UCF measurements were closer in two. The two-cup glass-bead case still has a large error, and I kept it because removing the worst result would defeat the purpose of the project. I spent about 15 hours on the complete process. Hackatime captures about 4 hours from the project-specific coding records; the rest includes research, long-running simulations, reviewing results, handwritten planning, and work outside the tracked editor. What I learned is that a believable visualization is not the same thing as a defensible experiment. The most valuable feature is not the 3D pile—it is the point where the program is willing to say, “This result is not ready to trust.”
Ships:
Angle of Repose Digital Twin is complete. I built it from scratch for my angle-of-repose research project. It runs 18 true-3D physics trials across quartz-sand and glass-bead conditions, measures and saves every pile, and automatically turns the results into a research report with comparison graphs, validation checks, replayable trials, raw XYZ data, and reproducibility settings. Its diagnostic system checks whether results are trustworthy before accepting them. The complete workflow—from running the experiment to producing the research output—is available in the demo and source code....
|
1793890562.0619514
|
1793976962.0619514
|
|
57290
|
My first slack bot! by @Djjamonconqueso | Stardanc My first slack bot! by @Djjamonconqueso | Stardance...
|
Djjamonconqueso
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Djjamonconqueso | S Title: My first slack bot! by @Djjamonconqueso | Stardance...
|
1793426150.0388155
|
1794030950.0388155
|
|
57291
|
Droneprint by @TheJazzGamer | Stardance
|
TheJazzGamer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Droneprint by @TheJazzGamer | Stardance
|
1793426152.148867
|
1794030952.148867
|
|
57292
|
jammer by @oskar_piasecki09 | Stardance
|
oskar_piasecki09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: jammer by @oskar_piasecki09 | Stardance
|
1793426153.0934699
|
1794030953.0934699
|
|
57293
|
My very own WebOS by @Guptaji | Stardance
|
Guptaji
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Guptaji | Stardance
|
1793426153.9973881
|
1794030953.9973881
|
|
57294
|
My awesome macropad! by @milo31231 | Stardance
|
milo31231
|
0
|
10.47
|
0
|
[]
|
[{"post_id": 73354, "ts": "202 [{"post_id": 73354, "ts": "2026-09-24T23:38:08Z", "hours": 1.0283, "text": "models done? fitment might need some tweaking"}, {"post_id": 72527, "ts": "2026-09-23T04:19:34Z", "hours": 1.7006, "text": "okay figured out the case finally"}, {"post_id": 68855, "ts": "2026-09-15T21:34:28Z", "hours": 1.5619, "text": "sadly will have to restart the case stuff since I didnt account for the top or bottom case bit… did move the microcontroller though"}, {"post_id": 66356, "ts": "2026-09-12T04:37:01Z", "hours": 1.7086, "text": "setting up the pcb any help with finding models would be greatly appreciated"}, {"post_id": 65656, "ts": "2026-09-10T22:55:06Z", "hours": 1.1239, "text": "its setup now the hard part wiring"}, {"post_id": 65588, "ts": "2026-09-10T20:28:42Z", "hours": 1.3789, "text": "setting up the pcb now"}, {"post_id": 61771, "ts": "2026-09-04T20:49:52Z", "hours": 1.4028, "text": "the base is donnnneeee"}, {"post_id": 60595, "ts": "2026-09-03T01:42:14Z", "hours": 0.5611, "text": "Just starting out with Ki Cad not too confusing I’m excited for using fusion 360 I’ve only really cad in on shape"}]...
|
Title: My awesome macropad! by @milo31231 | Starda Title: My awesome macropad! by @milo31231 | Stardance
Devlogs:
Just starting out with Ki Cad not too confusing I’m excited for using fusion 360 I’ve only really cad in on shape
the base is donnnneeee
setting up the pcb now
its setup now the hard part wiring
setting up the pcb any help with finding models would be greatly appreciated
sadly will have to restart the case stuff since I didnt account for the top or bottom case bit… did move the microcontroller though
okay figured out the case finally
models done? fitment might need some tweaking...
|
1793426156.1221359
|
1794030956.1221359
|
|
57295
|
linux stream deck by @sudaimiqbal | Stardance
|
sudaimiqbal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: linux stream deck by @sudaimiqbal | Stardan Title: linux stream deck by @sudaimiqbal | Stardance...
|
1793426159.2155852
|
1794030959.2155852
|
|
57296
|
AVIA-BOT by @lukas_56376 | Stardance
|
lukas_56376
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T10:39:05Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Heya, this is AVIABOT, this is the first Aviation Bot here on stardance, feel free to checkout: https://stardance.hackclub.com/projects/56883 for my Aviation Website, also!", "repo": "https://github.com/Lukas-56376/AVIA-BOT", "demo": "https://hackclub.enterprise.slack.com/archives/C0BU5MMQY4D"}]...
|
[{"post_id": 59942, "ts": "202 [{"post_id": 59942, "ts": "2026-09-02T00:24:59Z", "hours": 2.2042, "text": "It runs locally, so just have to wait for the request to be accepted in Nest"}]...
|
Title: AVIA-BOT by @lukas_56376 | Stardance
Devlo Title: AVIA-BOT by @lukas_56376 | Stardance
Devlogs:
It runs locally, so just have to wait for the request to be accepted in Nest
Ships:
Heya, this is AVIABOT, this is the first Aviation Bot here on stardance, feel free to checkout: https://stardance.hackclub.com/projects/56883 for my Aviation Website, also!...
|
1793771446.5284877
|
1794635446.5284877
|
|
57297
|
AI by @coolcreations87 | Stardance
|
coolcreations87
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AI by @coolcreations87 | Stardance
|
1793426161.9603684
|
1794030961.9603684
|
|
57298
|
Hackpad design by @marloweb | Stardance
|
marloweb
|
0
|
3.17
|
0
|
[]
|
[{"post_id": 66882, "ts": "202 [{"post_id": 66882, "ts": "2026-09-12T20:37:47Z", "hours": 2.0831, "text": "Sat down and worked the whole day to get this finished. Had to pivot from fusion to tinker cad due because I had already spent forever learning Kicad the day before. Then I spend a while making basic QMK firmware for the keyboard. Finally I got all the different files organised and uploaded to my github repo ( https://github.com/marloweb-dev/Hackpad/tree/main ). Hopefully now I should be ready to ship!"}, {"post_id": 66521, "ts": "2026-09-12T11:14:00Z", "hours": 1.0833, "text": "Finished the pcb design. forgot to film though so heres some random footage of me measuring it for the case design: https://lapse.hackclub.com/timelapse/9mx8nyErzr-O"}]...
|
Title: Hackpad design by @marloweb | Stardance
De Title: Hackpad design by @marloweb | Stardance
Devlogs:
Finished the pcb design. forgot to film though so heres some random footage of me measuring it for the case design: https://lapse.hackclub.com/timelapse/9mx8nyErzr-O
Sat down and worked the whole day to get this finished. Had to pivot from fusion to tinker cad due because I had already spent forever learning Kicad the day before. Then I spend a while making basic QMK firmware for the keyboard. Finally I got all the different files organised and uploaded to my github repo ( https://github.com/marloweb-dev/Hackpad/tree/main ). Hopefully now I should be ready to ship!...
|
1793426164.0766826
|
1794030964.0766826
|
|
57299
|
My very own WebOS by @ajashra_tripathi | Stardance
|
ajashra_tripathi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @ajashra_tripathi | St Title: My very own WebOS by @ajashra_tripathi | Stardance...
|
1793426168.4266424
|
1794030968.4266424
|
|
57300
|
Frictionless by @prada | Stardance
|
prada
|
1
|
12.73
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T22:01:32Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Last update was mostly optimizations and bug fixes, but this ship is all about new features, UI cleanups, and a big Stacklet overhaul. Main focus was making everything feel alive, fixing layout glitches, and giving better tab control without hogging memory. UI/UX Fixes: Fixed a splash screen rendering a ghost duplicate over onboarding Fixed tutorial highlights misaligning mid-scroll Added a scroll container so the accessories panel doesn’t get cut off by popup height limits Fixed Stacklet’s positioning so he actually stands on the logo instead of floating next to it Bug Fixes: Fixed a duplicate const declaration that silently crashed an entire script file Fixed typewriter animation where overlapping text streams canceled each other mid-sentence New Features: Stacklet overhaul: rebuilt him with a full animation rig (antenna lag, arm overshoots, squash jumps) Instant Undo: one-click undo if you accidentally sort or deduplicate tabs Tab suspension & Read Later: freezes idle tabs and saves week-old tabs automatically Quick Search: command palette style launcher to jump to any tab fast Spent ~28 hours (only 11 logged…) on this build getting the physics and UI quirks sorted out. Next up is polishing based on feedback. If you test it out and have ideas, drop a review or ping me on GitHub / Discord (fraghaft)!", "repo": "https://github.com/babaminghong/stax", "demo": "https://github.com/babaminghong/stax/releases/tag/v1.4.0"}]...
|
[{"post_id": 67553, "ts": "202 [{"post_id": 67553, "ts": "2026-09-13T18:09:55Z", "hours": 1.7322, "text": "Snooze lets you close a tab and pick when it comes back. In an hour, tonight, tomorrow morning, this weekend, next week. Tab disappears and reopens on its own. Timing was annoying to get right. First version just added hours, so “tomorrow morning” meant 24 hours from now, useless if you snooze at 11pm. Now it resolves against the actual clock. Also had to catch presets landing in the past, like asking for “this evening” at 9pm, because then the alarm fires instantly and the tab just blinks. Surviving a restart was the other problem. I went with setTimeout first which is completely wrong for MV3, the background worker gets killed and takes every timeout with it. Switched to chrome.alarms, which the browser re-delivers even after you quit Chrome. Added a startup check too since alarms can get missed if Chrome was closed when one was due. Small fix: Find only worked with the mouse before. Arrow keys move through results now, Enter opens, Escape clears. If nothing matches, Enter falls through to AI search."}, {"post_id": 65985, "ts": "2026-09-11T14:19:14Z", "hours": 8.5678, "text": "8+ Hours of Stax: Big Updates & Quality-of-Life Improvements! 🚀 What started as “Stax is working fine” quickly turned into an 8+ hour feature binge! Stax was doing its job, but I knew it could be even better. Here is a breakdown of the new features added to save memory, boost performance, and make your workflow smoother: Instant Undo Action: Accidentally sorted or deduplicated tabs? You can now undo your last action with a single click to restore your workspace immediately. Suspend Inactive Tabs: Free up memory and boost browser performance by freezing idle background tabs directly from the extension. Save & Restore Sessions: Working across multiple projects? Easily save your current session and reopen it anytime from the new Saved Sessions tab. Enhanced Smart Sort & AI Methods: Re-engineered category patterns and AI matching rules to deliver cleaner, faster, and far more accurate tab organization. Quick Switch Search: Easily find and jump to any tab or open website using the new search icon command palette."}, {"post_id": 63575, "ts": "2026-09-07T14:22:39Z", "hours": 0.5331, "text": "Stax Devlog 2!!! / What I did Before this update, Stax could only group a tab if I had explicitly hardcoded its exact domain into the background script. Anything else just got dumped into a generic grey group, which meant the extension barely worked unless I had manually added the site beforehand. I overhauled the classification logic so it looks for broader patterns instead of fixed domain lists. It now checks domain endings like .shop or .bank , path keywords like /cart or /checkout , platform routes like /pull/42 , and active page titles as a fallback so a tab named “Your boarding pass” gets caught under Travel even on a random airline site. I also cleaned up the codebase structure. popup.js and sidepanel.js were sharing a bunch of copy-pasted helper functions. I moved those out into a shared script file so I’m not maintaining the exact same logic in two places. Issues I ran into and fixed Keyword classifier false positives. The old string check was matching shop anywhere inside a URL string. That meant photoshop.adobe.com was getting sorted straight into Shopping. Switched it to match proper hostname boundaries so creative tools don’t end up in shopping groups. Code duplication across UI files. Having identical helper functions in both popup.js and sidepanel.js meant any bug fix had to be applied twice. Extracted them into a common utility script to keep both views in sync. What’s next Workspaces. Saving full tab group setups to chrome.storage.local so you can close an entire session and restore it later. Command Palette. Adding a Cmd+K / Ctrl+K search overlay to quickly search across all open tabs and jump to them instantly."}, {"post_id": 62573, "ts": "2026-09-06T01:04:11Z", "hours": 1.7619, "text": "Stax — hybrid sort, a real auto-sort toggle, and settings that finally live where they should Stax groups browser tabs into color-coded groups. Local domain rules by default, plus an optional AI pass (Claude or Gemini, your own key) for tabs that don’t match anything obvious. What I did Local rule matching and AI grouping used to be two separate paths. Smart Sort only ran local rules. A separate button re-ran AI on everything from scratch and ignored what local rules had already sorted, so tabs the local rules couldn’t place just sat there ungrouped even with an API key set. I merged these into one pipeline: local rules run first since they’re instant, free, and work offline, and only the leftover tabs get handed to AI. If the AI call fails, it now falls back to the local result instead of breaking the whole action. The auto-sort-on-new-tab toggle in Preferences used to be fake. It wrote a value to storage that nothing ever read, so flipping the switch did literally nothing. Wired it up for real, debounced per window so restoring a saved session doesn’t fire a sort for every single tab. Settings and the custom domain-rule editor used to live on a separate page you had to open in a new tab. Moved the whole thing into the popup as a second screen, and built a side panel that mirrors it with live updates as tabs and groups change, so you’re not stuck refreshing manually. Issues I ran into and fixed Keyword classifier false positives. The fallback classifier (kicks in when a domain isn’t in the built-in list) was doing plain substring matching on hostnames. “shop” was matching photoshop.adobe.com , “dev” was matching random domains that just happened to contain those letters. Switched it to match whole hostname tokens instead, which kills the false positives without losing the keyword coverage. Extension pages slipping through. chrome-extension:// pages weren’t excluded from sorting the way chrome:// pages were. The old regex only matched schemes ending right after the browser name, so extension pages like the built-in PDF viewer could end up grouped under a garbage name based on the extension ID. Fixed the exclusion list to cover that too. Silent save failures. Settings saves had zero error handling around chrome.storage.sync.set . That API has an 8KB-per-item quota, so enough custom rules could make a save fail silently while the UI still said “Saved.” Wrapped it in a try/catch so a failed save actually tells you it failed now. Dead options page. After moving settings into the popup, the old separate options.html / options.js page wasn’t wired to anything in the manifest anymore. It was just dead code sitting in the repo doing nothing. Deleted it instead of fixing a page nobody could ever reach. What’s next Nothing blocking, the extension works end to end. For later: popup.js and sidepanel.js currently duplicate a few small helper functions (glyph lookup, sending messages), so I’d like to pull those into one shared file so I’m not editing the same logic twice."}]...
|
Title: Frictionless by @prada | Stardance
Devlogs Title: Frictionless by @prada | Stardance
Devlogs:
Stax — hybrid sort, a real auto-sort toggle, and settings that finally live where they should Stax groups browser tabs into color-coded groups. Local domain rules by default, plus an optional AI pass (Claude or Gemini, your own key) for tabs that don’t match anything obvious. What I did Local rule matching and AI grouping used to be two separate paths. Smart Sort only ran local rules. A separate button re-ran AI on everything from scratch and ignored what local rules had already sorted, so tabs the local rules couldn’t place just sat there ungrouped even with an API key set. I merged these into one pipeline: local rules run first since they’re instant, free, and work offline, and only the leftover tabs get handed to AI. If the AI call fails, it now falls back to the local result instead of breaking the whole action. The auto-sort-on-new-tab toggle in Preferences used to be fake. It wrote a value to storage that nothing ever read, so flipping the switch did literally nothing. Wired it up for real, debounced per window so restoring a saved session doesn’t fire a sort for every single tab. Settings and the custom domain-rule editor used to live on a separate page you had to open in a new tab. Moved the whole thing into the popup as a second screen, and built a side panel that mirrors it with live updates as tabs and groups change, so you’re not stuck refreshing manually. Issues I ran into and fixed Keyword classifier false positives. The fallback classifier (kicks in when a domain isn’t in the built-in list) was doing plain substring matching on hostnames. “shop” was matching photoshop.adobe.com , “dev” was matching random domains that just happened to contain those letters. Switched it to match whole hostname tokens instead, which kills the false positives without losing the keyword coverage. Extension pages slipping through. chrome-extension:// pages weren’t excluded from sorting the way chrome:// pages were. The old regex only matched schemes ending right after the browser name, so extension pages like the built-in PDF viewer could end up grouped under a garbage name based on the extension ID. Fixed the exclusion list to cover that too. Silent save failures. Settings saves had zero error handling around chrome.storage.sync.set . That API has an 8KB-per-item quota, so enough custom rules could make a save fail silently while the UI still said “Saved.” Wrapped it in a try/catch so a failed save actually tells you it failed now. Dead options page. After moving settings into the popup, the old separate options.html / options.js page wasn’t wired to anything in the manifest anymore. It was just dead code sitting in the repo doing nothing. Deleted it instead of fixing a page nobody could ever reach. What’s next Nothing blocking, the extension works end to end. For later: popup.js and sidepanel.js currently duplicate a few small helper functions (glyph lookup, sending messages), so I’d like to pull those into one shared file so I’m not editing the same logic twice.
Stax Devlog 2!!! / What I did Before this update, Stax could only group a tab if I had explicitly hardcoded its exact domain into the background script. Anything else just got dumped into a generic grey group, which meant the extension barely worked unless I had manually added the site beforehand. I overhauled the classification logic so it looks for broader patterns instead of fixed domain lists. It now checks domain endings like .shop or .bank , path keywords like /cart or /checkout , platform routes like /pull/42 , and active page titles as a fallback so a tab named “Your boarding pass” gets caught under Travel even on a random airline site. I also cleaned up the codebase structure. popup.js and sidepanel.js were sharing a bunch of copy-pasted helper functions. I moved those out into a shared script file so I’m not maintaining the exact same logic in two places. Issues I ran into and fixed Keyword classifier false positives. The old string check was matching shop anywhere inside a URL string. That meant photoshop.adobe.com was getting sorted straight into Shopping. Switched it to match proper hostname boundaries so creative tools don’t end up in shopping groups. Code duplication across UI files. Having identical helper functions in both popup.js and sidepanel.js meant any bug fix had to be applied twice. Extracted them into a common utility script to keep both views in sync. What’s next Workspaces. Saving full tab group setups to chrome.storage.local so you can close an entire session and restore it later. Command Palette. Adding a Cmd+K / Ctrl+K search overlay to quickly search across all open tabs and jump to them instantly.
8+ Hours of Stax: Big Updates & Quality-of-Life Improvements! 🚀 What started as “Stax is working fine” quickly turned into an 8+ hour feature binge! Stax was doing its job, but I knew it could be even better. Here is a breakdown of the new features added to save memory, boost performance, and make your workflow smoother: Instant Undo Action: Accidentally sorted or deduplicated tabs? You can now undo your last action with a single click to restore your workspace immediately. Suspend Inactive Tabs: Free up memory and boost browser performance by freezing idle background tabs directly from the extension. Save & Restore Sessions: Working across multiple projects? Easily save your current session and reopen it anytime from the new Saved Sessions tab. Enhanced Smart Sort & AI Methods: Re-engineered category patterns and AI matching rules to deliver cleaner, faster, and far more accurate tab organization. Quick Switch Search: Easily find and jump to any tab or open website using the new search icon command palette.
Snooze lets you close a tab and pick when it comes back. In an hour, tonight, tomorrow morning, this weekend, next week. Tab disappears and reopens on its own. Timing was annoying to get right. First version just added hours, so “tomorrow morning” meant 24 hours from now, useless if you snooze at 11pm. Now it resolves against the actual clock. Also had to catch presets landing in the past, like asking for “this evening” at 9pm, because then the alarm fires instantly and the tab just blinks. Surviving a restart was the other problem. I went with setTimeout first which is completely wrong for MV3, the background worker gets killed and takes every timeout with it. Switched to chrome.alarms, which the browser re-delivers even after you quit Chrome. Added a startup check too since alarms can get missed if Chrome was closed when one was due. Small fix: Find only worked with the mouse before. Arrow keys move through results now, Enter opens, Escape clears. If nothing matches, Enter falls through to AI search.
Ships:
Last update was mostly optimizations and bug fixes, but this ship is all about new features, UI cleanups, and a big Stacklet overhaul. Main focus was making everything feel alive, fixing layout glitches, and giving better tab control without hogging memory. UI/UX Fixes: Fixed a splash screen rendering a ghost duplicate over onboarding Fixed tutorial highlights misaligning mid-scroll Added a scroll container so the accessories panel doesn’t get cut off by popup height limits Fixed Stacklet’s positioning so he actually stands on the logo instead of floating next to it Bug Fixes: Fixed a duplicate const declaration that silently crashed an entire script file Fixed typewriter animation where overlapping text streams canceled each other mid-sentence New Features: Stacklet overhaul: rebuilt him with a full animation rig (antenna lag, arm overshoots, squash jumps) Instant Undo: one-click undo if you accidentally sort or deduplicate tabs Tab suspension & Read Later: freezes idle tabs and saves week-old tabs automatically Quick Search: command palette style launcher to jump to any tab fast Spent ~28 hours (only 11 logged…) on this build getting the physics and UI quirks sorted out. Next up is polishing based on feedback. If you test it out and have ideas, drop a review or ping me on GitHub / Discord (fraghaft)!...
|
1794023453.7910333
|
1794109853.7910333
|
|
57301
|
My awesome macropad! by @Abhayraj | Stardance
|
Abhayraj
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Abhayraj | Stardan Title: My awesome macropad! by @Abhayraj | Stardance...
|
1793433193.3099098
|
1794037993.3099098
|