|
24962
|
cmdLookup by @Pixeleyesd | Stardance
|
Pixeleyesd
|
1
|
7.55
|
87
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T06:02:49Z", "hours": 7.0, "multiplier": 12.19, "payout": 87, "blessing": "neutral", "text": "I made a Linux commandline tool that allows you to check the use and install commands of a tool / program. This is incredibly useful when installing certain apps, so you don’t need to google the install script of any command, which is a common problem I have. It uses APIs and local information. Major QoL improvements: You can find the install location of any program you enter You can see the installation command of any program entered You can see the help menu of any program entered Minor QoL improvements: You can easily see the description of any program entered You can see what command correlates to any program entered Syntax is: cmdlookup [command] [options] Install script: apt (Debian and debian based distros): curl -1sLf ‘ https://dl.cloudsmith.io/public/pixeleyesd/cmdlookup/setup.deb.sh ’ | sudo -E bash sudo apt install cmdlookup dnf (Redhat distros): curl -1sLf ‘ https://dl.cloudsmith.io/public/pixeleyesd/cmdlookup/setup.rpm.sh ’ | sudo -E bash sudo dnf install cmdlookup thank you :3", "repo": "https://github.com/Pixeleyesd/CMDLookup", "demo": "https://github.com/Pixeleyesd/CMDLookup/releases/tag/Program"}]...
|
[{"post_id": 26312, "ts": "202 [{"post_id": 26312, "ts": "2026-07-11T01:14:32Z", "hours": 0.5469, "text": "This project got denied so many times for bogus reasons, and now I’m forced to devlog to resubmit apparently. THEY TOLD ME I NEEDED SOURCE CODE IN MY REPO, WHEN I LITERALLY HAVE SOURCE CODE IN MY REPO. ITS THE FRICKIN BASH SCRIPT."}, {"post_id": 16708, "ts": "2026-06-27T04:41:10Z", "hours": 2.09, "text": "The API is now working fully, and aside from some accidental inconsistencies, the project is largely ready to ship!"}, {"post_id": 15993, "ts": "2026-06-25T23:40:33Z", "hours": 1.8433, "text": "I finished setting up my Cloudsmith repository. you can now the package by typing: ( https://dl.cloudsmith.io/public/pixeleyesd/cmdlookup/setup.deb.sh )’ | sudo -E bash then type: sudo apt install cmdlookup. I also made the package name and the command name behave the same when inputted, and also made invalid values show up as “Invalid”"}, {"post_id": 15288, "ts": "2026-06-24T20:36:04Z", "hours": 1.9878, "text": "I have the status of whether the program is installed on the PC or not, as well as using the APIs listed before to add the description. I also locally fetch the install location if installed, and I output the help menu of the program if this is the case. Next step is to fetch the help menu or equivalent over an API."}, {"post_id": 14877, "ts": "2026-06-24T04:44:45Z", "hours": 1.2031, "text": "I started work on my bash script that automatically finds the use of a given command, as well as where to download the package that uses the command. First, I looked for and found a few APIs I wanted to use for this project. I settled on https://command-not-found.com and https://cheat.sh for my main, and for the backup, in case command-not-found.com goes down, I went with https://packages.debian.org/search?keywords= . Originally, when you put in, for example, firefox, the code was structured like as follows: INSTALL_APT=“sudo apt install $COMMAND” INSTALL_PACMAN=“sudo pacman -S $COMMAND” INSTALL_DNF=“sudo dnf install $COMMAND” INSTALL_ZYP=“sudo zypper install $COMMAND” INSTALL_BREW=“brew install $COMMAND” INSTALL_SNAP=“sudo snap install $COMMAND” this basically meant that it would always tell you: Installation Commands: Debian/Ubuntu (APT): sudo apt install firefox Arch Linux (Pacman): sudo pacman -S firefox Fedora/RedHat (DNF): sudo dnf install firefox openSUSE (Zypper): sudo zypper install firefox macOS/Linux (Brew): brew install firefox Universal (Snap): sudo snap install firefox which is clearly NOT RIGHT The solution was to use the APIs (as mentioned before) to look for the methods of installation. I’m now working on getting the local status of packages and displaying that, as well as using local information of the packages BEFORE using the APIs to fetch."}]...
|
Title: cmdLookup by @Pixeleyesd | Stardance
Devlo Title: cmdLookup by @Pixeleyesd | Stardance
Devlogs:
I started work on my bash script that automatically finds the use of a given command, as well as where to download the package that uses the command. First, I looked for and found a few APIs I wanted to use for this project. I settled on https://command-not-found.com and https://cheat.sh for my main, and for the backup, in case command-not-found.com goes down, I went with https://packages.debian.org/search?keywords= . Originally, when you put in, for example, firefox, the code was structured like as follows: INSTALL_APT=“sudo apt install $COMMAND” INSTALL_PACMAN=“sudo pacman -S $COMMAND” INSTALL_DNF=“sudo dnf install $COMMAND” INSTALL_ZYP=“sudo zypper install $COMMAND” INSTALL_BREW=“brew install $COMMAND” INSTALL_SNAP=“sudo snap install $COMMAND” this basically meant that it would always tell you: Installation Commands: Debian/Ubuntu (APT): sudo apt install firefox Arch Linux (Pacman): sudo pacman -S firefox Fedora/RedHat (DNF): sudo dnf install firefox openSUSE (Zypper): sudo zypper install firefox macOS/Linux (Brew): brew install firefox Universal (Snap): sudo snap install firefox which is clearly NOT RIGHT The solution was to use the APIs (as mentioned before) to look for the methods of installation. I’m now working on getting the local status of packages and displaying that, as well as using local information of the packages BEFORE using the APIs to fetch.
I have the status of whether the program is installed on the PC or not, as well as using the APIs listed before to add the description. I also locally fetch the install location if installed, and I output the help menu of the program if this is the case. Next step is to fetch the help menu or equivalent over an API.
I finished setting up my Cloudsmith repository. you can now the package by typing: ( https://dl.cloudsmith.io/public/pixeleyesd/cmdlookup/setup.deb.sh )’ | sudo -E bash then type: sudo apt install cmdlookup. I also made the package name and the command name behave the same when inputted, and also made invalid values show up as “Invalid”
The API is now working fully, and aside from some accidental inconsistencies, the project is largely ready to ship!
This project got denied so many times for bogus reasons, and now I’m forced to devlog to resubmit apparently. THEY TOLD ME I NEEDED SOURCE CODE IN MY REPO, WHEN I LITERALLY HAVE SOURCE CODE IN MY REPO. ITS THE FRICKIN BASH SCRIPT.
Ships:
I made a Linux commandline tool that allows you to check the use and install commands of a tool / program. This is incredibly useful when installing certain apps, so you don’t need to google the install script of any command, which is a common problem I have. It uses APIs and local information. Major QoL improvements: You can find the install location of any program you enter You can see the installation command of any program entered You can see the help menu of any program entered Minor QoL improvements: You can easily see the description of any program entered You can see what command correlates to any program entered Syntax is: cmdlookup [command] [options] Install script: apt (Debian and debian based distros): curl -1sLf ‘ https://dl.cloudsmith.io/public/pixeleyesd/cmdlookup/setup.deb.sh ’ | sudo -E bash sudo apt install cmdlookup dnf (Redhat distros): curl -1sLf ‘ https://dl.cloudsmith.io/public/pixeleyesd/cmdlookup/setup.rpm.sh ’ | sudo -E bash sudo dnf install cmdlookup thank you :3...
|
1793713836.116264
|
1794577836.116264
|
|
69161
|
club website by @RishitJain | Stardance
|
RishitJain
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: club website by @RishitJain | Stardance
|
1793760754.391423
|
1794365554.391423
|
|
47680
|
cloudy by @lockedinfrthistime | Stardance
|
lockedinfrthistime
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cloudy by @lockedinfrthistime | Stardance
|
1793901199.1640322
|
1794505999.1640322
|
|
55131
|
cloud by @Tanmay81 | Stardance
|
Tanmay81
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cloud by @Tanmay81 | Stardance
|
1793782458.5665538
|
1794387258.5665538
|
|
69291
|
clone webite by @ilrksy | Stardance
|
ilrksy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clone webite by @ilrksy | Stardance
|
1793764208.2434304
|
1794369008.2434304
|
|
67927
|
clocky by @Davi89 | Stardance
|
Davi89
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clocky by @Davi89 | Stardance
|
1793735624.5137217
|
1794340424.5137217
|
|
72504
|
clocks by @Dec_Snow | Stardance
|
Dec_Snow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clocks by @Dec_Snow | Stardance
|
1793494043.828623
|
1794098843.828623
|
|
55256
|
clockity alarm clock by @mithbhasker | Stardance
|
mithbhasker
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clockity alarm clock by @mithbhasker | Star Title: clockity alarm clock by @mithbhasker | Stardance...
|
1793800603.0618937
|
1794405403.0618937
|
|
54870
|
clockitttt by @nayela | Stardance
|
nayela
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clockitttt by @nayela | Stardance
|
1793570074.3854005
|
1794174874.3854005
|
|
67759
|
clock-a-doodle-doo by @salvador_gc | Stardance
|
salvador_gc
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock-a-doodle-doo by @salvador_gc | Starda Title: clock-a-doodle-doo by @salvador_gc | Stardance...
|
1793735319.455671
|
1794599319.455671
|
|
64454
|
clock by @willmm | Stardance
|
willmm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @willmm | Stardance
|
1793674411.0425403
|
1794279211.0425403
|
|
70137
|
clock by @threatsentinels | Stardance
|
threatsentinels
|
0
|
2.25
|
0
|
[]
|
[{"post_id": 84165, "ts": "202 [{"post_id": 84165, "ts": "2026-10-29T06:28:31Z", "hours": 0.3603, "text": "Devlog 2 Completed the case model for the deskyy . I used scad for it ."}, {"post_id": 80347, "ts": "2026-10-17T10:43:12Z", "hours": 1.8911, "text": "devlog 1 I have finished working on the pcb and CAD . Now going to write the firmware for it ."}]...
|
Title: clock by @threatsentinels | Stardance
Devl Title: clock by @threatsentinels | Stardance
Devlogs:
devlog 1 I have finished working on the pcb and CAD . Now going to write the firmware for it .
Devlog 2 Completed the case model for the deskyy . I used scad for it ....
|
1793605897.6134121
|
1794210697.6134121
|
|
56025
|
clock by @nokianvirtanen | Stardance
|
nokianvirtanen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @nokianvirtanen | Stardance
|
1793361237.4140193
|
1793966037.4140193
|
|
65416
|
clock by @meorilandau | Stardance
|
meorilandau
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @meorilandau | Stardance
|
1793699741.1149817
|
1794304541.1149817
|
|
65417
|
clock by @meorilandau | Stardance
|
meorilandau
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @meorilandau | Stardance
|
1793699743.2164028
|
1794304543.2164028
|
|
65418
|
clock by @meorilandau | Stardance
|
meorilandau
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @meorilandau | Stardance
|
1793699745.3205733
|
1794304545.3205733
|
|
57522
|
clock by @lukas_gye2 | Stardance
|
lukas_gye2
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @lukas_gye2 | Stardance
|
1793443826.7443001
|
1794048626.7443001
|
|
57624
|
clock by @jassim | Stardance
|
jassim
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @jassim | Stardance
|
1793447638.282502
|
1794052438.282502
|
|
56536
|
clock by @bradymend | Stardance
|
bradymend
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @bradymend | Stardance
|
1793386512.2219467
|
1793991312.2219467
|
|
69910
|
clock by @atincogluali | Stardance
|
atincogluali
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @atincogluali | Stardance
|
1793598714.4768343
|
1794203514.4768343
|
|
55079
|
clock by @arthurgarcia | Stardance
|
arthurgarcia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @arthurgarcia | Stardance
|
1793778682.7292738
|
1794383482.7292738
|
|
71511
|
clock by @aranmendelow | Stardance
|
aranmendelow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @aranmendelow | Stardance
|
1793652572.3729177
|
1794257372.3729177
|
|
60841
|
clock by @anay_ | Stardance
|
anay_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @anay_ | Stardance
|
1793645700.5917385
|
1794250500.5917385
|
|
64844
|
clock by @Kristyan | Stardance
|
Kristyan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @Kristyan | Stardance
|
1793678140.39839
|
1794282940.39839
|
|
71261
|
clock by @Anniex | Stardance
|
Anniex
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @Anniex | Stardance
|
1793591814.0139413
|
1794455814.0139413
|
|
71262
|
clock by @Anniex | Stardance
|
Anniex
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @Anniex | Stardance
|
1793591816.1188223
|
1794455816.1188223
|
|
59967
|
clock by @Aleks_001 | Stardance
|
Aleks_001
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock by @Aleks_001 | Stardance
|
1793638485.7622728
|
1794243285.7622728
|
|
46200
|
clock box by @Soggy_Cat | Stardance
|
Soggy_Cat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock box by @Soggy_Cat | Stardance
|
1793372108.882874
|
1793976908.882874
|
|
63864
|
clock 0.1 by @Tela | Stardance
|
Tela
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clock 0.1 by @Tela | Stardance
|
1793663769.093406
|
1794268569.093406
|
|
50077
|
clk0 by @pizzalover125 | Stardance
|
pizzalover125
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T04:22:26Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "an open source chess clock with custom CAD and firmware", "repo": "https://github.com/pizzalover125/chess-clock", "demo": ""}]...
|
[{"post_id": 56139, "ts": "202 [{"post_id": 56139, "ts": "2024-07-17T00:00:00Z", "hours": 1.0, "text": "this is from open sauce the clock stopped working need to fix it opened it up almost broke the screw 💀 ok thankfully it was just one wire that disconnected will reconnect it! ok it works! im going to add multiple time controls so its better done! there are a bunch of new time controls now im rlly proud of this project"}, {"post_id": 56121, "ts": "2024-07-11T00:00:00Z", "hours": 2.0, "text": "i tried really hard to fit it all together i put it together, then something would disconnect, then i would it put it back together, then it would disconnect again ill just redesign it to be taller printer not working? i tried to fix the wifi settings 💀 still didn’t work ill just use SD card redesign: ok hopefully ts works IT WORKED OMG OMG OMG im leaving for open sauce tomorrow so this was done right when I needed it to be LETS GO"}, {"post_id": 56120, "ts": "2024-06-29T00:00:00Z", "hours": 1.5, "text": "ok this is going to be hard to build I LAPSEd me soldering the 7-segment display (took 30 min) i printed out the bottom part realized the top part isn’t compatible with bottom part need to redesign didn’t have USB-C hole either redesigned! asked for help on Slack got that help with print settings ok redesigned: printed it the hole was too small the supports were impossible to remove will reprint"}, {"post_id": 56119, "ts": "2024-06-17T00:00:00Z", "hours": 1.0, "text": "going to work on the firmware somebody told me that the M2 wouldn’t work ok this is the firmware: https://pastebin.com/s5BTVMHb pretty simple going to make it better when i get parts redesigned the wiring diagram cause I’m going to have batteries! the display uses M2.5 holes 😭 time to fix fixed going to work on README created README updated files"}, {"post_id": 56118, "ts": "2024-06-16T00:00:00Z", "hours": 2.0, "text": "okay i learned that expedited shipping is allowed for JLCPCB so im designing a PCB this is also due to the fact that idk how to wire it without a PCB will make it a lot cleaner also! schematic done time to assign footprints assigned them! problem: stemma qt is very small and hard to solder it seems like ok this PCB is wayyyy too simple to need a PCB at all ill figure out how standoffs work watching https://www.youtube.com/watch?v=NHIrTtLCnEo that was so easy found these bumpers: https://www.adafruit.com/product/550 will add them actually no point in adding to CAD made this https://docs.google.com/spreadsheets/d/1HJi_SoZmRUPXIg3fWTzNNd4LjoeZRIxf5KhnIGp8wuw/edit?usp=sharing ! comes out to $54.36 at a quantity of 1 hardware is so expensive ok i just need to make firmware i think this project is almost ready to ship! added these holes:"}, {"post_id": 56117, "ts": "2024-06-15T00:00:00Z", "hours": 3.0, "text": "i was away from my house for a couple of days time to get back on this project added tolerances added a border! it looks kinda weird ngl added keycaps and colors! looks very cool made it assembleable remade the assembly ill make a render cause why not technically i am done with the CAD but idk if i want to make a PCB cause it needs to arrive in time ok made that apparently M1 screws don’t work with 3d printed stuff so ill need M2 made it M2 ok im working super slow now idk why new session at night i added chamfer to add M3 holes! the only major thing left other than firmware is how im going to assemble this i dont want to make a PCB cause i want it to be done in time PCB also not required? i could use a breadboard ok ill figure this out tmrw will create wiring diagram! kinda basic because wiring diagram is kinda basic"}, {"post_id": 56116, "ts": "2024-06-10T00:00:00Z", "hours": 2.5, "text": "rebranding this to be a chess clock again planning to use 8-segment clock displays like this one: thats what these clocks use: going to also use mx switches cause hey are used in: time to import all CAD models ah i can only find 1.2” not 0.56” i imported the mx switch time to decide what MCU i think ill use RP2040-zero wait nvm its hard to mount? i might use pico just because its easier to mount imported the pico! apparently i need beveled face to make it have good viewing angles watching https://www.youtube.com/watch?v=eApyyNPppaY starting to look like a chess clock! did some more research on how to mount a mx switch i need a 14x14mm cutout with 1.5mm plate size looks great! ill add pico mounting now okay turns out every OLED is different so ig ill have to redo some dimensions also i might make it bigger ok found models for the 0.56 i2c 7-segment display! going to use that because its better using this image annoying i need to covnert to mm voila! time to add screen cutout looks like a chess clock will later figure out how to assemble"}, {"post_id": 56115, "ts": "2024-05-23T00:00:00Z", "hours": 1.0, "text": "time for The Great Reset im starting over designs i want to rival the industry standard cubing timer browsing [link] for inspo + ideas bro no way there is an AI speedcubing timer; this is wild ok im thinking to use capacitve touch pad instead of switches to not make this a hackpad watching https://www.youtube.com/watch?v=tTMsbL0eH_M to learn that video wasn’t helpful; watching https://www.youtube.com/watch?v=42jUcqwKIw8 that vid didn’t have much so watching this https://www.youtube.com/watch?v=mWR9Q_pTagw ok capacitve touch is very hard to implement in such a large area such as a palm lots of chance for missed calls did some research and a grand total of 0 people have made an open source cubing timer soooo this is the first! thats kind of cool okay i might use this type of design with infared/distance sensors on each side to determine mx switches aren’t good bc they are designed for fingers, not hands ok this is a hard project wait i found [https://github.com/amadensor/cube-timer/tree/main/pcb/cube_timer] ok mine is the first PCB + case; the project is just an ESP32 on a breadboard going to read https://ww1.microchip.com/downloads/en/DeviceDoc/40001946A.pdf ok idk if this is possible even"}, {"post_id": 56114, "ts": "2024-05-16T00:00:00Z", "hours": 0.92, "text": "okay i tried a THIRD cable and it STILL DOESN’T WORK I need to buy another cable later I’ll work on PCB finished w schematic bc its super ez i want to use 1.3” OLED cause its bigger so easier to see downloaded the footprint + schematic from SNAPEDA updated schematic idk where to put MCU if I put it under then OLED pins would hit the MCU ok someone told me I can put it under found 3D model of OLED in GrabCAD and imported it downloaded Xiao RP2040 model from GrabCAD and imported it routed everything was going to move the mounting holes but decided not to ONSHAPE time! nvm, i wanted to change it just to be safe rounded the corners and routed! now time for CAD added holes + the rectangle itself tried to add top plate but i think its better to just have backplate printed the PCB IRL! going to print the backplate to get a feel on what this is going to be like prined backplate out; pretty good fit!"}, {"post_id": 56113, "ts": "2024-05-15T00:00:00Z", "hours": 1.0, "text": "thought of this project a long time ago i wanted to build an open source chess clock then I thought, why make the chess clock also work as a rubiks cube timer? thats when this idea popped in my head going to make this basic and cheap, so a 4 point project start off w schematic added xiao from https://hackpad.hackclub.com/resources going to be making the following thing: changing MCU to ESP32C3 bc i can create web app for chess clock! using low-profile switches to potentially make this folding finished schematic assigned footprints looked at 0.96” OLED on my desk and realized two numbers would be too small on that was thinking about 2 OLEDs but the Xiao has 1 i2c bus only guess we are switching to Pi Pico choc v2 switches have same travel distance but 4mm lower height than gateron did some research; choosing kalih PG1350 time to route ez routing had them flipped; had to route again added 3d models! ok im not going to make it round so its easier to CAD mounting holes took forever for some reason but I got it! created logo tried to add texture but it didn’t end up working ok i just realized the way i envisioned it is completely wrong i think i’ll switch this to a cubing timer cause this is the proper thing for that"}]...
|
Title: clk0 by @pizzalover125 | Stardance
Devlogs Title: clk0 by @pizzalover125 | Stardance
Devlogs:
thought of this project a long time ago i wanted to build an open source chess clock then I thought, why make the chess clock also work as a rubiks cube timer? thats when this idea popped in my head going to make this basic and cheap, so a 4 point project start off w schematic added xiao from https://hackpad.hackclub.com/resources going to be making the following thing: changing MCU to ESP32C3 bc i can create web app for chess clock! using low-profile switches to potentially make this folding finished schematic assigned footprints looked at 0.96” OLED on my desk and realized two numbers would be too small on that was thinking about 2 OLEDs but the Xiao has 1 i2c bus only guess we are switching to Pi Pico choc v2 switches have same travel distance but 4mm lower height than gateron did some research; choosing kalih PG1350 time to route ez routing had them flipped; had to route again added 3d models! ok im not going to make it round so its easier to CAD mounting holes took forever for some reason but I got it! created logo tried to add texture but it didn’t end up working ok i just realized the way i envisioned it is completely wrong i think i’ll switch this to a cubing timer cause this is the proper thing for that
okay i tried a THIRD cable and it STILL DOESN’T WORK I need to buy another cable later I’ll work on PCB finished w schematic bc its super ez i want to use 1.3” OLED cause its bigger so easier to see downloaded the footprint + schematic from SNAPEDA updated schematic idk where to put MCU if I put it under then OLED pins would hit the MCU ok someone told me I can put it under found 3D model of OLED in GrabCAD and imported it downloaded Xiao RP2040 model from GrabCAD and imported it routed everything was going to move the mounting holes but decided not to ONSHAPE time! nvm, i wanted to change it just to be safe rounded the corners and routed! now time for CAD added holes + the rectangle itself tried to add top plate but i think its better to just have backplate printed the PCB IRL! going to print the backplate to get a feel on what this is going to be like prined backplate out; pretty good fit!
time for The Great Reset im starting over designs i want to rival the industry standard cubing timer browsing [link] for inspo + ideas bro no way there is an AI speedcubing timer; this is wild ok im thinking to use capacitve touch pad instead of switches to not make this a hackpad watching https://www.youtube.com/watch?v=tTMsbL0eH_M to learn that video wasn’t helpful; watching https://www.youtube.com/watch?v=42jUcqwKIw8 that vid didn’t have much so watching this https://www.youtube.com/watch?v=mWR9Q_pTagw ok capacitve touch is very hard to implement in such a large area such as a palm lots of chance for missed calls did some research and a grand total of 0 people have made an open source cubing timer soooo this is the first! thats kind of cool okay i might use this type of design with infared/distance sensors on each side to determine mx switches aren’t good bc they are designed for fingers, not hands ok this is a hard project wait i found [https://github.com/amadensor/cube-timer/tree/main/pcb/cube_timer] ok mine is the first PCB + case; the project is just an ESP32 on a breadboard going to read https://ww1.microchip.com/downloads/en/DeviceDoc/40001946A.pdf ok idk if this is possible even
rebranding this to be a chess clock again planning to use 8-segment clock displays like this one: thats what these clocks use: going to also use mx switches cause hey are used in: time to import all CAD models ah i can only find 1.2” not 0.56” i imported the mx switch time to decide what MCU i think ill use RP2040-zero wait nvm its hard to mount? i might use pico just because its easier to mount imported the pico! apparently i need beveled face to make it have good viewing angles watching https://www.youtube.com/watch?v=eApyyNPppaY starting to look like a chess clock! did some more research on how to mount a mx switch i need a 14x14mm cutout with 1.5mm plate size looks great! ill add pico mounting now okay turns out every OLED is different so ig ill have to redo some dimensions also i might make it bigger ok found models for the 0.56 i2c 7-segment display! going to use that because its better using this image annoying i need to covnert to mm voila! time to add screen cutout looks like a chess clock will later figure out how to assemble
i was away from my house for a couple of days time to get back on this project added tolerances added a border! it looks kinda weird ngl added keycaps and colors! looks very cool made it assembleable remade the assembly ill make a render cause why not technically i am done with the CAD but idk if i want to make a PCB cause it needs to arrive in time ok made that apparently M1 screws don’t work with 3d printed stuff so ill need M2 made it M2 ok im working super slow now idk why new session at night i added chamfer to add M3 holes! the only major thing left other than firmware is how im going to assemble this i dont want to make a PCB cause i want it to be done in time PCB also not required? i could use a breadboard ok ill figure this out tmrw will create wiring diagram! kinda basic because wiring diagram is kinda basic
okay i learned that expedited shipping is allowed for JLCPCB so im designing a PCB this is also due to the fact that idk how to wire it without a PCB will make it a lot cleaner also! schematic done time to assign footprints assigned them! problem: stemma qt is very small and hard to solder it seems like ok this PCB is wayyyy too simple to need a PCB at all ill figure out how standoffs work watching https://www.youtube.com/watch?v=NHIrTtLCnEo that was so easy found these bumpers: https://www.adafruit.com/product/550 will add them actually no point in adding to CAD made this https://docs.google.com/spreadsheets/d/1HJi_SoZmRUPXIg3fWTzNNd4LjoeZRIxf5KhnIGp8wuw/edit?usp=sharing ! comes out to $54.36 at a quantity of 1 hardware is so expensive ok i just need to make firmware i think this project is almost ready to ship! added these holes:
going to work on the firmware somebody told me that the M2 wouldn’t work ok this is the firmware: https://pastebin.com/s5BTVMHb pretty simple going to make it better when i get parts redesigned the wiring diagram cause I’m going to have batteries! the display uses M2.5 holes 😭 time to fix fixed going to work on README created README updated files
ok this is going to be hard to build I LAPSEd me soldering the 7-segment display (took 30 min) i printed out the bottom part realized the top part isn’t compatible with bottom part need to redesign didn’t have USB-C hole either redesigned! asked for help on Slack got that help with print settings ok redesigned: printed it the hole was too small the supports were impossible to remove will reprint
i tried really hard to fit it all together i put it together, then something would disconnect, then i would it put it back together, then it would disconnect again ill just redesign it to be taller printer not working? i tried to fix the wifi settings 💀 still didn’t work ill just use SD card redesign: ok hopefully ts works IT WORKED OMG OMG OMG im leaving for open sauce tomorrow so this was done right when I needed it to be LETS GO
this is from open sauce the clock stopped working need to fix it opened it up almost broke the screw 💀 ok thankfully it was just one wire that disconnected will reconnect it! ok it works! im going to add multiple time controls so its better done! there are a bunch of new time controls now im rlly proud of this project
Ships:
an open source chess clock with custom CAD and firmware...
|
1793378968.5880759
|
1794242968.5880759
|
|
22040
|
clk-link by @CLK | Stardance
|
CLK
|
1
|
1.63
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T19:49:22Z", "hours": 1.0, "multiplier": 1.3, "payout": 1, "blessing": "neutral", "text": "I made a website that links most of my other websites together with this one I hope you like it, enjoy", "repo": "https://github.com/NIVLACvt/clk-link", "demo": "https://nivlacvt.github.io/clk-link/"}]...
|
[{"post_id": 27636, "ts": "202 [{"post_id": 27636, "ts": "2026-07-13T12:13:01Z", "hours": 0.6297, "text": "just added my rock-paper-scissor game’s button, made buttons larger and made it so that the buttons are below the description of the project and a cool pattern for the layout"}, {"post_id": 13673, "ts": "2026-06-22T13:01:03Z", "hours": 0.5842, "text": "Added button links instead of normal links and my calculater website"}, {"post_id": 11646, "ts": "2026-06-18T23:50:59Z", "hours": 0.5842, "text": "Just finished adding the first three websites and color(can’t wait to add more) to view you can go to https://nivlacvt.github.io/clk-link/"}]...
|
Title: clk-link by @CLK | Stardance
Devlogs:
Just Title: clk-link by @CLK | Stardance
Devlogs:
Just finished adding the first three websites and color(can’t wait to add more) to view you can go to https://nivlacvt.github.io/clk-link/
Added button links instead of normal links and my calculater website
just added my rock-paper-scissor game’s button, made buttons larger and made it so that the buttons are below the description of the project and a cool pattern for the layout
Ships:
I made a website that links most of my other websites together with this one I hope you like it, enjoy...
|
1793958684.2628264
|
1794045084.2628264
|
|
63655
|
clipping website by @ranaarul53 | Stardance
|
ranaarul53
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clipping website by @ranaarul53 | Stardance
|
1793663580.5503387
|
1794268380.5503387
|
|
44165
|
clipchimp by @ali14 | Stardance
|
ali14
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clipchimp by @ali14 | Stardance
|
1793260183.8873403
|
1793864983.8873403
|
|
63456
|
clipboard history manager by @waffles888 | Stardan clipboard history manager by @waffles888 | Stardance...
|
waffles888
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clipboard history manager by @waffles888 | Title: clipboard history manager by @waffles888 | Stardance...
|
1793663316.015786
|
1794268116.015786
|
|
70416
|
clicksy by @srithimahi | Stardance
|
srithimahi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clicksy by @srithimahi | Stardance
|
1793620620.5064468
|
1794225420.5064468
|
|
47485
|
clicker kingdom by @Sepkatt | Stardance
|
Sepkatt
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T20:41:59Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "1. What did I make? I made StarDance. I wanted to make something fun and I worked on getting everything to look and work the way I wanted. 2. What was hard? Some things didn’t work the first time, so I had to try again and fix them. It took some time to get everything right. 3. What am I proud of? I’m proud that I finished it and that I got it to work. I also learned some new things while making it. 4. What should people know about my project? I put time into making StarDance and tried to make it good. It wasn’t always easy, but I’m happy with how it turned out.", "repo": "https://github.com/katarinawattum-lgtm/New-folder", "demo": "https://katarinawattum-lgtm.github.io/New-folder/"}]...
|
[{"post_id": 79150, "ts": "202 [{"post_id": 79150, "ts": "2026-10-12T20:28:07Z", "hours": 1.2403, "text": "Just finished a game made with HTML, CSS, and JS."}, {"post_id": 79088, "ts": "2026-10-12T16:58:35Z", "hours": 3.0461, "text": "Clicker Kingdom - Stardance Challenge Progress Update I started building my own browser game called Clicker Kingdom using HTML, CSS, and JavaScript in Visual Studio Code. So far, I have: Created the basic game structure using HTML. Designed the game with CSS, using a dark background, gold colours, and a kingdom theme. Added a gold counter and a button that lets players earn gold by clicking. -Created a shop where players can buy gold workers for 10 gold. Added an automatic gold system where each worker produces 1 gold per second.Implemented a save system using the browser’s local storage, so game progress can be saved and loaded again. My next step is to test that all the features work correctly and continue adding new features to make the game more fun and interactive."}]...
|
Title: clicker kingdom by @Sepkatt | Stardance
De Title: clicker kingdom by @Sepkatt | Stardance
Devlogs:
Clicker Kingdom - Stardance Challenge Progress Update I started building my own browser game called Clicker Kingdom using HTML, CSS, and JavaScript in Visual Studio Code. So far, I have: Created the basic game structure using HTML. Designed the game with CSS, using a dark background, gold colours, and a kingdom theme. Added a gold counter and a button that lets players earn gold by clicking. -Created a shop where players can buy gold workers for 10 gold. Added an automatic gold system where each worker produces 1 gold per second.Implemented a save system using the browser’s local storage, so game progress can be saved and loaded again. My next step is to test that all the features work correctly and continue adding new features to make the game more fun and interactive.
Just finished a game made with HTML, CSS, and JS.
Ships:
1. What did I make? I made StarDance. I wanted to make something fun and I worked on getting everything to look and work the way I wanted. 2. What was hard? Some things didn’t work the first time, so I had to try again and fix them. It took some time to get everything right. 3. What am I proud of? I’m proud that I finished it and that I got it to work. I also learned some new things while making it. 4. What should people know about my project? I put time into making StarDance and tried to make it good. It wasn’t always easy, but I’m happy with how it turned out....
|
1793810863.604563
|
1793897263.604563
|
|
12019
|
clicker game in scratch by @Juan_Thousand_Pound_Me clicker game in scratch by @Juan_Thousand_Pound_Mexicain | Stardance...
|
Juan_Thousand_Pound_Mexicain
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clicker game in scratch by @Juan_Thousand_P Title: clicker game in scratch by @Juan_Thousand_Pound_Mexicain | Stardance...
|
1793767999.0169694
|
1794372799.0169694
|
|
58904
|
clicker by @juli13 | Stardance
|
juli13
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T14:46:39Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a clicker game using ai", "repo": "https://github.com/fueralles1233-sys/clicker", "demo": "https://fueralles1233-sys.github.io/clicker/"}]...
|
[{"post_id": 63548, "ts": "202 [{"post_id": 63548, "ts": "2026-09-07T13:52:59Z", "hours": 1.55, "text": "clicker"}]...
|
Title: clicker by @juli13 | Stardance
Devlogs:
cl Title: clicker by @juli13 | Stardance
Devlogs:
clicker
Ships:
i made a clicker game using ai...
|
1793918853.0769327
|
1794005253.0769327
|
|
58903
|
clicker by @juli13 | Stardance
|
juli13
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clicker by @juli13 | Stardance
|
1793519576.1941907
|
1794124376.1941907
|
|
30596
|
click to heaven by @Shy_cape | Stardance
|
Shy_cape
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: click to heaven by @Shy_cape | Stardance
|
1793566350.0018773
|
1794171150.0018773
|
|
27153
|
click lense by @nishank | Stardance
|
nishank
|
1
|
43.67
|
325
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-19T02:08:38Z", "hours": 43.0, "multiplier": 11.21, "payout": 325, "blessing": "neutral", "text": "A modern, full-featured URL shortener & analytics platform with password-protected links, expiration dates, custom aliases, QR code generation, and rich click metrics. Built with Next.js 16", "repo": "https://github.com/Devnish0/click-lense", "demo": "https://clicklense.vercel.app/"}]...
|
[{"post_id": 36229, "ts": "202 [{"post_id": 36229, "ts": "2026-07-28T05:22:01Z", "hours": 0.6656, "text": "changed the readme.md"}, {"post_id": 30777, "ts": "2026-07-18T17:25:43Z", "hours": 23.8922, "text": "completed and in production right now check it out now"}, {"post_id": 26142, "ts": "2026-07-10T19:24:50Z", "hours": 6.1253, "text": "built the main dashboard ui"}, {"post_id": 24832, "ts": "2026-07-08T17:23:56Z", "hours": 3.3294, "text": "built the landing page for the clause app"}, {"post_id": 17058, "ts": "2026-06-27T18:13:55Z", "hours": 9.5158, "text": "completed basic 0 auth login , redirection logic, max attempt, time based attempt, disabled attempt etc."}]...
|
Title: click lense by @nishank | Stardance
Devlog Title: click lense by @nishank | Stardance
Devlogs:
completed basic 0 auth login , redirection logic, max attempt, time based attempt, disabled attempt etc.
built the landing page for the clause app
built the main dashboard ui
completed and in production right now check it out now
changed the readme.md
Ships:
A modern, full-featured URL shortener & analytics platform with password-protected links, expiration dates, custom aliases, QR code generation, and rich click metrics. Built with Next.js 16...
|
1793947972.9073112
|
1794034372.9073112
|
|
63321
|
click counter by @dzh0701 | Stardance
|
dzh0701
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: click counter by @dzh0701 | Stardance
|
1793660151.0727735
|
1794264951.0727735
|
|
71128
|
click click by @bahan_hime | Stardance
|
bahan_hime
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: click click by @bahan_hime | Stardance
|
1793577429.5927882
|
1794182229.5927882
|
|
14076
|
click clack by @aeroghurt | Stardance
|
aeroghurt
|
0
|
9.4
|
0
|
[]
|
[{"post_id": 13029, "ts": "202 [{"post_id": 13029, "ts": "2026-06-21T09:34:37Z", "hours": 9.4036, "text": "I made this little schematic a while ago (when I wasn’t verified), but I’m not sure if it even works (if anyone wants to take a look and correct any errors, feel free to do so :D ) My plan for this hackpad (which I call the Click Clack Pad™ ) is that it will have 3 switches, 1 rotary encoder switch and an OLED that I can display my art on. (Possibly an audio visualizer too for my music?? That would be super cool!) I’m pretty new to this kind of thing but I do have a flair for design (I think) and some experience working with an Arduino, it’s just the technicalities that make my head hurt a bit. But I’m here to get out of my comfort zone and make even cooler things ( yippeee ). The Wakatime for KiCad was bugging out so unfortunately I’ve lost a few hours of time, but thankfully I switched to Lapse before I lost even more. (P.S. I’ve already worked on the PCB, the casing is still in the works) So yeah, see you in the next devlog :DD"}]...
|
Title: click clack by @aeroghurt | Stardance
Devl Title: click clack by @aeroghurt | Stardance
Devlogs:
I made this little schematic a while ago (when I wasn’t verified), but I’m not sure if it even works (if anyone wants to take a look and correct any errors, feel free to do so :D ) My plan for this hackpad (which I call the Click Clack Pad™ ) is that it will have 3 switches, 1 rotary encoder switch and an OLED that I can display my art on. (Possibly an audio visualizer too for my music?? That would be super cool!) I’m pretty new to this kind of thing but I do have a flair for design (I think) and some experience working with an Arduino, it’s just the technicalities that make my head hurt a bit. But I’m here to get out of my comfort zone and make even cooler things ( yippeee ). The Wakatime for KiCad was bugging out so unfortunately I’ve lost a few hours of time, but thankfully I switched to Lapse before I lost even more. (P.S. I’ve already worked on the PCB, the casing is still in the works) So yeah, see you in the next devlog :DD...
|
1793443774.250817
|
1794048574.250817
|
|
58175
|
cli tool by @prithvics1106 | Stardance
|
prithvics1106
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cli tool by @prithvics1106 | Stardance
|
1793476611.757817
|
1794081411.757817
|
|
42698
|
clearfx by @satvikhardat | Stardance
|
satvikhardat
|
1
|
39.47
|
563
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T12:40:30Z", "hours": 37.0, "multiplier": 18.75, "payout": 563, "blessing": "neutral", "text": "A small CLI + website where people can upload TUI designs, and anyone can make those TUI animations show up whenever they type a specific command in their terminal like “clear” or “ls” while also doing the job of that command!!! Package Manager Install the core CLI globally via pip. pip install clearfx Shell Hooks Initialize shell integrations to wrap the clear command automatically. clearfx setup-shell Quick Wrap Want to animate a specific command? Wrap it directly (e.g., wrap ls with the Aurora Fold animation). clearfx wrap ls --anim aurora-fold Reload Shell Source your configuration file to apply the newly added shell hooks. source ~/.bashrc # or ~/.zshrc if you wanna stop the animation you can run clearfx reset", "repo": "https://github.com/random-unknown-username/clearfx/", "demo": "https://clearfx-zeta.vercel.app/"}]...
|
[{"post_id": 41926, "ts": "202 [{"post_id": 41926, "ts": "2026-08-06T13:29:40Z", "hours": 2.4739, "text": "Fixed vercel hosting hell, the whole thing js didnt want to work for soon long, small fix not much, not writing a huge devlog, because the ships already done, and probably wont be working on this again moving forward"}, {"post_id": 41330, "ts": "2026-08-05T14:06:46Z", "hours": 12.5803, "text": "devlog 3: debugging hell and nuking the UI bruh the last 10 hours were an absolute nightmare. the web UI preview was completely broken. you’d hit play, and it would just flash and disappear. i was losing my mind trying to figure out why the terminal was instantly clearing itself. turns out, the core engine’s TerminalSession was doing its job too well. when the animation finished, it sent the ANSI sequence to exit the alternate screen buffer, which is exactly what you want in a real terminal. but in xterm.js , exiting the alternate screen just leaves you with a blank black box! had to wire up a --keep-screen flag all the way through the CLI architecture to intercept that sequence when running inside the web preview. # src/clearfx/engine/terminal.py def __exit__ ( self , exc_type , exc_val , exc_tb ): if not self . keep_screen : # restore alternate screen self . write ( b \" \\033 [?1049l \" ) then there was the resizing bug. xterm.js was fitting to the container, but the PTY backend was hardcoded to 80x24. so it looked super misaligned. had to intercept term.cols and term.rows in React and pass them through the WebSocket JSON payload. wsRef . current . send ( JSON . stringify ({ type : ' run ' , code , width : termRef . current . cols , height : termRef . current . rows })); once the bugs were dead, i looked at the web UI and realized it looked like generic SaaS slop. huge glowing pills, purple gradients everywhere… it was dog shit. so i nuked index.css entirely. built a custom design system inspired by factory.ai. pure dark operations console vibes. strictly monochrome, 8px spacing grid, geist monospace fonts for technical labels, and tiny orange/green signal dots instead of giant colored backgrounds. /* replaced the generic slop with this */ :root { --bg-canvas : #101010 ; --bg-surface : #1D1A18 ; --border-hairline : #34312F ; --signal-orange : #EE6018 ; --font-mono : 'Geist Mono' , monospace ; } the hero section now has a literal UI-in-UI terminal preview embedded in a custom .product-frame . the whole app feels like a precision engineering tool now, not a marketing page. we finally shipped a safe, strictly declarative, gorgeous terminal engine."}, {"post_id": 39256, "ts": "2026-08-02T03:27:42Z", "hours": 10.2494, "text": "devlog 2: nuking the backend and building a safe package format so after the engine was running, i needed a marketplace. initially i spun up a whole fastAPI backend, but maintaining that sounded like a nightmare. so i ripped it all out and moved the entire catalog to firebase. but here’s the catch: if i’m letting randos upload python animations to a public marketplace, they could literally just inject os.system(\"rm -rf /\") inside their design.py and wipe everyone’s machines when they run clear . security was a massive issue. to fix this, i built a compiler that parses the python animation locally, extracts all the elements and keyframes, and bakes them into a purely declarative design.json . def pack ( self , directory : str | Path ) -> Path : # we literally run their code in an isolated builder # and dump the resulting state. no logic is saved. design_data = { \" elements \" : builder . _elements , \" keyframes \" : builder . _keyframes , \" config \" : builder . _config } with zipfile . ZipFile ( out_path , ' w ' ) as zf : zf . writestr ( \" manifest.toml \" , toml_content ) zf . writestr ( \" design.json \" , json . dumps ( design_data )) this means .clearfx packages are just dumb JSON files. the CLI’s DesignInterpreter reads the JSON and feeds it back into the engine safely. zero arbitrary code execution. then i had to build the web studio so people could preview their animations in the browser. getting a live terminal running in react is a pain. i used xterm.js on the frontend, and built a websocket server in python using pty.fork() to spin up a fake terminal session. @app.websocket ( \" /ws/studio \" ) async def websocket_studio ( websocket : WebSocket , width : int = 80 , height : int = 24 ): pid , fd = pty . fork () if pid == 0 : # child process - sets up the fake terminal size winsize = struct . pack ( \" HHHH \" , height , width , 0 , 0 ) fcntl . ioctl ( sys . stdout . fileno (), termios . TIOCSWINSZ , winsize ) os . execvpe ( \" python \" , [ \" python \" , \" -m \" , \" clearfx.cli.main \" , \" preview \" , temp_dir ], env ) so when you click “execute” in the web UI, it literally sends the python code over websockets, saves it to a temp dir, forks a new PTY, runs the engine natively, and pipes the raw ANSI output back to xterm.js . it’s basically magic. but the resize bugs were driving me insane."}, {"post_id": 38827, "ts": "2026-08-01T12:02:35Z", "hours": 14.2386, "text": "devlog 1: building a terminal engine from scratch because clear is boring bro i got so tired of just typing clear and seeing the terminal instantly snap to empty. it’s so boring. so i decided to build a full double-buffered animation engine in python just to replace the clear command. the idea was to make something that hooks into your .bashrc or .zshrc and intercepts clear , plays a sick terminal animation, and then actually clears the screen. first thing i realized: you can’t just print strings to the terminal and expect it to look like a smooth 60fps animation. the flickering is insane if you do that. so i had to build a double-buffered FrameBuffer system from scratch. class FrameBuffer : def diff ( self ) -> list [ tuple [ int , int , Cell ]]: \"\"\" returns only the cells that changed since last frame. \"\"\" changes = [] for i in range ( len ( self . front . cells )): if self . front . cells [ i ] != self . back . cells [ i ]: x = i % self . width y = i // self . width changes . append (( x , y , self . front . cells [ i ])) return changes this is the secret sauce. instead of redrawing 80x24 characters every frame, we only send ANSI escape codes for the exact pixels (cells) that changed. then i built a DiffRenderer that takes those changes and constructs the smallest possible ANSI sequence to move the cursor and update the colors. # snippet from renderer.py for x , y , cell in changes : # only move cursor if we aren't already there if not ( y == cy and x == cx ): out . append ( f \" \\033 [ { y + 1 } ; { x + 1 } H \" ) # write the actual character with truecolor out . append ( f \" \\033 [38;2; { cell . fg [ 0 ] } ; { cell . fg [ 1 ] } ; { cell . fg [ 2 ] } m { cell . char } \" ) after getting the engine running, i needed a way to safely inject it into the shell without destroying people’s configs. built a ShellIntegration class that detects zsh/bash/fish, backs up the config, and safely appends a wrapper. # >>> clearfx managed block >>> if command -v clearfx &>/dev/null ; then clear () { command clearfx play --clear-after } fi # <<< clearfx managed block <<< i spent like 10 hours just getting the core engine to hit 60fps consistently. python is slow, so minimizing string concatenations and using sys.stdout.buffer.write instead of print() was mandatory. next up was actually building out the animation formats and getting a marketplace running so people could share these."}]...
|
Title: clearfx by @satvikhardat | Stardance
Devlo Title: clearfx by @satvikhardat | Stardance
Devlogs:
devlog 1: building a terminal engine from scratch because clear is boring bro i got so tired of just typing clear and seeing the terminal instantly snap to empty. it’s so boring. so i decided to build a full double-buffered animation engine in python just to replace the clear command. the idea was to make something that hooks into your .bashrc or .zshrc and intercepts clear , plays a sick terminal animation, and then actually clears the screen. first thing i realized: you can’t just print strings to the terminal and expect it to look like a smooth 60fps animation. the flickering is insane if you do that. so i had to build a double-buffered FrameBuffer system from scratch. class FrameBuffer : def diff ( self ) -> list [ tuple [ int , int , Cell ]]: """ returns only the cells that changed since last frame. """ changes = [] for i in range ( len ( self . front . cells )): if self . front . cells [ i ] != self . back . cells [ i ]: x = i % self . width y = i // self . width changes . append (( x , y , self . front . cells [ i ])) return changes this is the secret sauce. instead of redrawing 80x24 characters every frame, we only send ANSI escape codes for the exact pixels (cells) that changed. then i built a DiffRenderer that takes those changes and constructs the smallest possible ANSI sequence to move the cursor and update the colors. # snippet from renderer.py for x , y , cell in changes : # only move cursor if we aren't already there if not ( y == cy and x == cx ): out . append ( f " \033 [ { y + 1 } ; { x + 1 } H " ) # write the actual character with truecolor out . append ( f " \033 [38;2; { cell . fg [ 0 ] } ; { cell . fg [ 1 ] } ; { cell . fg [ 2 ] } m { cell . char } " ) after getting the engine running, i needed a way to safely inject it into the shell without destroying people’s configs. built a ShellIntegration class that detects zsh/bash/fish, backs up the config, and safely appends a wrapper. # >>> clearfx managed block >>> if command -v clearfx &>/dev/null ; then clear () { command clearfx play --clear-after } fi # <<< clearfx managed block <<< i spent like 10 hours just getting the core engine to hit 60fps consistently. python is slow, so minimizing string concatenations and using sys.stdout.buffer.write instead of print() was mandatory. next up was actually building out the animation formats and getting a marketplace running so people could share these.
devlog 2: nuking the backend and building a safe package format so after the engine was running, i needed a marketplace. initially i spun up a whole fastAPI backend, but maintaining that sounded like a nightmare. so i ripped it all out and moved the entire catalog to firebase. but here’s the catch: if i’m letting randos upload python animations to a public marketplace, they could literally just inject os.system("rm -rf /") inside their design.py and wipe everyone’s machines when they run clear . security was a massive issue. to fix this, i built a compiler that parses the python animation locally, extracts all the elements and keyframes, and bakes them into a purely declarative design.json . def pack ( self , directory : str | Path ) -> Path : # we literally run their code in an isolated builder # and dump the resulting state. no logic is saved. design_data = { " elements " : builder . _elements , " keyframes " : builder . _keyframes , " config " : builder . _config } with zipfile . ZipFile ( out_path , ' w ' ) as zf : zf . writestr ( " manifest.toml " , toml_content ) zf . writestr ( " design.json " , json . dumps ( design_data )) this means .clearfx packages are just dumb JSON files. the CLI’s DesignInterpreter reads the JSON and feeds it back into the engine safely. zero arbitrary code execution. then i had to build the web studio so people could preview their animations in the browser. getting a live terminal running in react is a pain. i used xterm.js on the frontend, and built a websocket server in python using pty.fork() to spin up a fake terminal session. @app.websocket ( " /ws/studio " ) async def websocket_studio ( websocket : WebSocket , width : int = 80 , height : int = 24 ): pid , fd = pty . fork () if pid == 0 : # child process - sets up the fake terminal size winsize = struct . pack ( " HHHH " , height , width , 0 , 0 ) fcntl . ioctl ( sys . stdout . fileno (), termios . TIOCSWINSZ , winsize ) os . execvpe ( " python " , [ " python " , " -m " , " clearfx.cli.main " , " preview " , temp_dir ], env ) so when you click “execute” in the web UI, it literally sends the python code over websockets, saves it to a temp dir, forks a new PTY, runs the engine natively, and pipes the raw ANSI output back to xterm.js . it’s basically magic. but the resize bugs were driving me insane.
devlog 3: debugging hell and nuking the UI bruh the last 10 hours were an absolute nightmare. the web UI preview was completely broken. you’d hit play, and it would just flash and disappear. i was losing my mind trying to figure out why the terminal was instantly clearing itself. turns out, the core engine’s TerminalSession was doing its job too well. when the animation finished, it sent the ANSI sequence to exit the alternate screen buffer, which is exactly what you want in a real terminal. but in xterm.js , exiting the alternate screen just leaves you with a blank black box! had to wire up a --keep-screen flag all the way through the CLI architecture to intercept that sequence when running inside the web preview. # src/clearfx/engine/terminal.py def __exit__ ( self , exc_type , exc_val , exc_tb ): if not self . keep_screen : # restore alternate screen self . write ( b " \033 [?1049l " ) then there was the resizing bug. xterm.js was fitting to the container, but the PTY backend was hardcoded to 80x24. so it looked super misaligned. had to intercept term.cols and term.rows in React and pass them through the WebSocket JSON payload. wsRef . current . send ( JSON . stringify ({ type : ' run ' , code , width : termRef . current . cols , height : termRef . current . rows })); once the bugs were dead, i looked at the web UI and realized it looked like generic SaaS slop. huge glowing pills, purple gradients everywhere… it was dog shit. so i nuked index.css entirely. built a custom design system inspired by factory.ai. pure dark operations console vibes. strictly monochrome, 8px spacing grid, geist monospace fonts for technical labels, and tiny orange/green signal dots instead of giant colored backgrounds. /* replaced the generic slop with this */ :root { --bg-canvas : #101010 ; --bg-surface : #1D1A18 ; --border-hairline : #34312F ; --signal-orange : #EE6018 ; --font-mono : 'Geist Mono' , monospace ; } the hero section now has a literal UI-in-UI terminal preview embedded in a custom .product-frame . the whole app feels like a precision engineering tool now, not a marketing page. we finally shipped a safe, strictly declarative, gorgeous terminal engine.
Fixed vercel hosting hell, the whole thing js didnt want to work for soon long, small fix not much, not writing a huge devlog, because the ships already done, and probably wont be working on this again moving forward
Ships:
A small CLI + website where people can upload TUI designs, and anyone can make those TUI animations show up whenever they type a specific command in their terminal like “clear” or “ls” while also doing the job of that command!!! Package Manager Install the core CLI globally via pip. pip install clearfx Shell Hooks Initialize shell integrations to wrap the clear command automatically. clearfx setup-shell Quick Wrap Want to animate a specific command? Wrap it directly (e.g., wrap ls with the Aurora Fold animation). clearfx wrap ls --anim aurora-fold Reload Shell Source your configuration file to apply the newly added shell hooks. source ~/.bashrc # or ~/.zshrc if you wanna stop the animation you can run clearfx reset...
|
1793774976.5347357
|
1794638976.5347357
|
|
13512
|
cleancoal.online by @ggbooks | Stardance
|
ggbooks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cleancoal.online by @ggbooks | Stardance
|
1793465813.358091
|
1794070613.358091
|
|
39828
|
cleanbot by @Alset | Stardance
|
Alset
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cleanbot by @Alset | Stardance
|
1793987313.697463
|
1794592113.697463
|
|
46533
|
clean-os by @Baule | Stardance
|
Baule
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: clean-os by @Baule | Stardance
|
1793875879.8010583
|
1794739879.8010583
|
|
9952
|
claude-code-usage-insta-bio by @SeasonedRiceFarmer claude-code-usage-insta-bio by @SeasonedRiceFarmer | Stardance...
|
SeasonedRiceFarmer
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: claude-code-usage-insta-bio by @SeasonedRic Title: claude-code-usage-insta-bio by @SeasonedRiceFarmer | Stardance...
|
1793836130.8216245
|
1794440930.8216245
|