|
51736
|
My awesome macropad! by @Semaya | Stardance
|
Semaya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Semaya | Stardance
|
1793404127.3401558
|
1794008927.3401558
|
|
26936
|
DIY Bench PSU by @Fabio | Stardance
|
Fabio
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: DIY Bench PSU by @Fabio | Stardance
|
1793404126.445166
|
1794008926.445166
|
|
51735
|
test by @supercoolcodinggirl | Stardance
|
supercoolcodinggirl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: test by @supercoolcodinggirl | Stardance
|
1793404125.5774188
|
1794008925.5774188
|
|
31053
|
EX1LE by @elbek | Stardance
|
elbek
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: EX1LE by @elbek | Stardance
|
1793404124.6959362
|
1794008924.6959362
|
|
8771
|
My first slack bot! by @esmeraldasostenes811 | Sta My first slack bot! by @esmeraldasostenes811 | Stardance...
|
esmeraldasostenes811
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @esmeraldasostenes81 Title: My first slack bot! by @esmeraldasostenes811 | Stardance...
|
1793404123.8050077
|
1794008923.8050077
|
|
38968
|
My very own WebOS by @AjCreates | Stardance
|
AjCreates
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @AjCreates | Stardance
|
1793404122.9222572
|
1794008922.9222572
|
|
51732
|
My awesome macropad! by @souravgole082 | Stardance
|
souravgole082
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @souravgole082 | St Title: My awesome macropad! by @souravgole082 | Stardance...
|
1793404122.00569
|
1794008922.00569
|
|
51731
|
My awesome macropad! by @demirmagalov | Stardance
|
demirmagalov
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @demirmagalov | Sta Title: My awesome macropad! by @demirmagalov | Stardance...
|
1793404119.5079992
|
1794008919.5079992
|
|
34452
|
Spotify Player ESP32 by @ziadmansi | Stardance
|
ziadmansi
|
0
|
1.49
|
0
|
[]
|
[{"post_id": 30161, "ts": "202 [{"post_id": 30161, "ts": "2026-07-17T14:50:39Z", "hours": 1.4922, "text": "Im currently working on the code that’ll fetch the data from spotify from what’s being played, the artist, and etc."}]...
|
Title: Spotify Player ESP32 by @ziadmansi | Starda Title: Spotify Player ESP32 by @ziadmansi | Stardance
Devlogs:
Im currently working on the code that’ll fetch the data from spotify from what’s being played, the artist, and etc....
|
1793404118.5966113
|
1794008918.5966113
|
|
51730
|
ASTRA — The Space Archive by @Mahii | Stardance
|
Mahii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ASTRA — The Space Archive by @Mahii | Stard Title: ASTRA — The Space Archive by @Mahii | Stardance...
|
1793404115.7755935
|
1794008915.7755935
|
|
13796
|
My first slack bot! by @Javi | Stardance
|
Javi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Javi | Stardance
|
1793404114.8315213
|
1794008914.8315213
|
|
33090
|
My very own WebOS by @k0sta | Stardance
|
k0sta
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @k0sta | Stardance
|
1793404113.8784578
|
1794008913.8784578
|
|
27420
|
Stirling Engine by @EndLess9 | Stardance
|
EndLess9
|
0
|
0.39
|
0
|
[]
|
[{"post_id": 20138, "ts": "202 [{"post_id": 20138, "ts": "2026-07-01T17:58:40Z", "hours": 0.3914, "text": "Finished making the lower plate: Used the sketch tool to make a sketch of a circle. Used extrude tool to make it a cylinder. Used fillet tool to make the edge rounder. Used the sketch tool to make a small circle near the edge. Used the extrude tool to use the sketch to make a hole in the lower plate. Then I used the circular pattern tool to make 6 identical holes proportional to each other."}]...
|
Title: Stirling Engine by @EndLess9 | Stardance
D Title: Stirling Engine by @EndLess9 | Stardance
Devlogs:
Finished making the lower plate: Used the sketch tool to make a sketch of a circle. Used extrude tool to make it a cylinder. Used fillet tool to make the edge rounder. Used the sketch tool to make a small circle near the edge. Used the extrude tool to use the sketch to make a hole in the lower plate. Then I used the circular pattern tool to make 6 identical holes proportional to each other....
|
1793404112.3580868
|
1794008912.3580868
|
|
37449
|
MacWeb by @tonymac129 | Stardance
|
tonymac129
|
0
|
3.83
|
0
|
[]
|
[{"post_id": 31517, "ts": "202 [{"post_id": 31517, "ts": "2026-07-20T00:07:27Z", "hours": 3.8347, "text": "MacWeb is back from the dead MacWeb is my biggest project so far that I’ve worked on periodically in the past 2 years, and ever since I rewrote it from scratch for like the third time to migrate to Next.js and fullstack during Flavortown, I have not touched it at all I didn’t plan on starting it again any time soon, but I actually needed to make a form for a hackathon I’m hosting, and while I could’ve used Google Forms or something else, I decided making my own form creation tool was the best option I wanted the tool to be part of MacWeb, meaning it had to connect to the original auth and database system, but those were outdated and I wanted a more modern stack, so I decided to completely migrate this platform before even starting with the form tool The database was the easiest to migrate since I just had to set up Neon and Prisma, rewrite a few server actions and APIs, build a clean, new schema and type system, and run a few migrations Auth was the actual pain because not only did I have to replace all the original structure with the new framework and generate new OAuth clients, I also had to make cross origin subdomain cookie session sharing work because the other apps are on their own subdomains. This meant reading a ton of docs and changing the auth config way too many times Every time I had to change the config to see if the subdomain CORS/whatever error was fixed, I had to commit, push, and redeploy on the actual domain since cookies and auth behave differently in local dev environment I ended up repeating this frustrating cycle of endless commits to fix that one bug for like 2 hours before realizing I made a typo for an environment variable and then everything got fixed…"}]...
|
Title: MacWeb by @tonymac129 | Stardance
Devlogs: Title: MacWeb by @tonymac129 | Stardance
Devlogs:
MacWeb is back from the dead MacWeb is my biggest project so far that I’ve worked on periodically in the past 2 years, and ever since I rewrote it from scratch for like the third time to migrate to Next.js and fullstack during Flavortown, I have not touched it at all I didn’t plan on starting it again any time soon, but I actually needed to make a form for a hackathon I’m hosting, and while I could’ve used Google Forms or something else, I decided making my own form creation tool was the best option I wanted the tool to be part of MacWeb, meaning it had to connect to the original auth and database system, but those were outdated and I wanted a more modern stack, so I decided to completely migrate this platform before even starting with the form tool The database was the easiest to migrate since I just had to set up Neon and Prisma, rewrite a few server actions and APIs, build a clean, new schema and type system, and run a few migrations Auth was the actual pain because not only did I have to replace all the original structure with the new framework and generate new OAuth clients, I also had to make cross origin subdomain cookie session sharing work because the other apps are on their own subdomains. This meant reading a ton of docs and changing the auth config way too many times Every time I had to change the config to see if the subdomain CORS/whatever error was fixed, I had to commit, push, and redeploy on the actual domain since cookies and auth behave differently in local dev environment I ended up repeating this frustrating cycle of endless commits to fix that one bug for like 2 hours before realizing I made a typo for an environment variable and then everything got fixed…...
|
1793404111.4410238
|
1794008911.4410238
|
|
51726
|
UAV Military Drone by @Pratik145 | Stardance
|
Pratik145
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: UAV Military Drone by @Pratik145 | Stardanc Title: UAV Military Drone by @Pratik145 | Stardance...
|
1793404110.5446725
|
1794008910.5446725
|
|
2304
|
My awesome macropad! by @reyfl | Stardance
|
reyfl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @reyfl | Stardance
|
1793404109.6442528
|
1794008909.6442528
|
|
51725
|
My own site! by @Gagtan | Stardance
|
Gagtan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Gagtan | Stardance
|
1793404108.7185252
|
1794008908.7185252
|
|
25154
|
Working on Chromium/PDFium by @APK | Stardance
|
APK
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Working on Chromium/PDFium by @APK | Starda Title: Working on Chromium/PDFium by @APK | Stardance...
|
1793404107.832436
|
1794008907.832436
|
|
51724
|
My own site! by @TanushGagan | Stardance
|
TanushGagan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @TanushGagan | Stardance
|
1793404106.9094067
|
1794008906.9094067
|
|
31799
|
My own site! by @Aufa | Stardance
|
Aufa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Aufa | Stardance
|
1793404104.0859895
|
1794008904.0859895
|
|
51723
|
My own site! by @aidenk48 | Stardance
|
aidenk48
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @aidenk48 | Stardance
|
1793404102.0572708
|
1794008902.0572708
|
|
2835
|
My simple HTML Website by @StarDustShineBright | S My simple HTML Website by @StarDustShineBright | Stardance...
|
StarDustShineBright
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My simple HTML Website by @StarDustShineBri Title: My simple HTML Website by @StarDustShineBright | Stardance...
|
1793404101.1501718
|
1794008901.1501718
|
|
51722
|
My very own WebOS by @Apex500 | Stardance
|
Apex500
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Apex500 | Stardance
|
1793404100.210197
|
1794008900.210197
|
|
30296
|
RoFind Revamp by @KERNL | Stardance
|
KERNL
|
0
|
3.29
|
0
|
[]
|
[{"post_id": 28262, "ts": "202 [{"post_id": 28262, "ts": "2026-07-14T12:40:23Z", "hours": 1.5283, "text": "7/14/26 - Revamp DevBlog 2 Came back from a break from this project since it’s really stressful. Anyways, images has been brought back and working on the API backend has been very confusing. (I’m learning React and Next.js while also porting this project so its a two process for me :) ) As we can see the button on the Nav bar is pretty wonky. Data will be the same and not wiped out so both version will work side by side just the front end was changed. Image below is the current status"}, {"post_id": 21491, "ts": "2026-07-03T13:56:15Z", "hours": 1.7614, "text": "7/2/26 & 7/3/26 - Revamp I have began translating pages from the vanilla HTML and JS original version to the new revamped React framework version! Development time will be affected since I am currently busy with college and stuff but yes I’m working on the revamped version. Why? I have been playing patience with repetitive HTML and JS code that it becomes so confusing where components are and maintainability in the future will be a struggle. I have decided to go with React to address the said issue being faced. At the mean time the original web version RoFind will still be up and be put on hold from updates and fixes."}]...
|
Title: RoFind Revamp by @KERNL | Stardance
Devlog Title: RoFind Revamp by @KERNL | Stardance
Devlogs:
7/2/26 & 7/3/26 - Revamp I have began translating pages from the vanilla HTML and JS original version to the new revamped React framework version! Development time will be affected since I am currently busy with college and stuff but yes I’m working on the revamped version. Why? I have been playing patience with repetitive HTML and JS code that it becomes so confusing where components are and maintainability in the future will be a struggle. I have decided to go with React to address the said issue being faced. At the mean time the original web version RoFind will still be up and be put on hold from updates and fixes.
7/14/26 - Revamp DevBlog 2 Came back from a break from this project since it’s really stressful. Anyways, images has been brought back and working on the API backend has been very confusing. (I’m learning React and Next.js while also porting this project so its a two process for me :) ) As we can see the button on the Nav bar is pretty wonky. Data will be the same and not wiped out so both version will work side by side just the front end was changed. Image below is the current status...
|
1793404099.3005655
|
1794008899.3005655
|
|
51720
|
Celsius's Personal SIte by @Celsius | Stardanc Celsius's Personal SIte by @Celsius | Stardance...
|
Celsius
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Celsius's Personal SIte by @Celsius | S Title: Celsius's Personal SIte by @Celsius | Stardance...
|
1793404097.1676066
|
1794008897.1676066
|
|
28946
|
My own site! by @nishadmulay | Stardance
|
nishadmulay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @nishadmulay | Stardance
|
1793404096.195753
|
1794008896.195753
|
|
51717
|
The Glove by @kasen | Stardance
|
kasen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: The Glove by @kasen | Stardance
|
1793404095.2195582
|
1794008895.2195582
|
|
51716
|
Voided's More Music Discs by @OliverR | Starda Voided's More Music Discs by @OliverR | Stardance...
|
OliverR
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Voided's More Music Discs by @OliverR | Title: Voided's More Music Discs by @OliverR | Stardance...
|
1793404094.3248131
|
1794008894.3248131
|
|
40074
|
My first slack bot! by @giorgi_jamaspishvili | Sta My first slack bot! by @giorgi_jamaspishvili | Stardance...
|
giorgi_jamaspishvili
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @giorgi_jamaspishvil Title: My first slack bot! by @giorgi_jamaspishvili | Stardance...
|
1793404093.4490833
|
1794268093.4490833
|
|
51715
|
My awesome macropad! by @Mahii | Stardance
|
Mahii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Mahii | Stardance
|
1793404092.5369747
|
1794008892.5369747
|
|
29001
|
Whole lotta beats by @ysharma530 | Stardance
|
ysharma530
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Whole lotta beats by @ysharma530 | Stardanc Title: Whole lotta beats by @ysharma530 | Stardance...
|
1793404091.659497
|
1794008891.659497
|
|
51714
|
Supa Doopa Cool Keyboard by @xX_tomDaBomB_Xx | Sta Supa Doopa Cool Keyboard by @xX_tomDaBomB_Xx | Stardance...
|
xX_tomDaBomB_Xx
|
0
|
0.32
|
0
|
[]
|
[{"post_id": 50829, "ts": "202 [{"post_id": 50829, "ts": "2026-08-20T08:19:24Z", "hours": 0.3167, "text": "Started playing around with making the hackpad, I placed in some of the switches but still want to add in a rotary knob and OLED/LCD screen"}]...
|
Title: Supa Doopa Cool Keyboard by @xX_tomDaBomB_X Title: Supa Doopa Cool Keyboard by @xX_tomDaBomB_Xx | Stardance
Devlogs:
Started playing around with making the hackpad, I placed in some of the switches but still want to add in a rotary knob and OLED/LCD screen...
|
1793404089.4686704
|
1794008889.4686704
|
|
51712
|
My own site! by @parker_lawson1 | Stardance
|
parker_lawson1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @parker_lawson1 | Stardance
|
1793404088.5677624
|
1794008888.5677624
|
|
51710
|
Da Block by @Ganda1f | Stardance
|
Ganda1f
|
0
|
1.42
|
0
|
[]
|
[{"post_id": 50742, "ts": "202 [{"post_id": 50742, "ts": "2026-08-20T02:54:54Z", "hours": 1.4197, "text": "I designed some of the enclosure for the electronics to fit into. I started by trying to make the opening from the bottom, but realized it would be very hard to machine that way, so I made it be from the back instead. I also designed an access panel so I can change whatever I need to easily. I’m thinking about using magnets to hold it on for simplicity. Also I forgot about doing a timelapse, sorry about that."}]...
|
Title: Da Block by @Ganda1f | Stardance
Devlogs:
Title: Da Block by @Ganda1f | Stardance
Devlogs:
I designed some of the enclosure for the electronics to fit into. I started by trying to make the opening from the bottom, but realized it would be very hard to machine that way, so I made it be from the back instead. I also designed an access panel so I can change whatever I need to easily. I’m thinking about using magnets to hold it on for simplicity. Also I forgot about doing a timelapse, sorry about that....
|
1793404087.6272044
|
1794008887.6272044
|
|
51709
|
NeoXalle by @rekirxs | Stardance
|
rekirxs
|
0
|
3.0
|
0
|
[]
|
[{"post_id": 72034, "ts": "202 [{"post_id": 72034, "ts": "2026-09-22T01:15:24Z", "hours": 1.5839, "text": "Soldered more important modulles and components, such as the Esp32c3 u1, which all of these are smd, took me some time"}, {"post_id": 53255, "ts": "2026-08-23T18:12:32Z", "hours": 1.4161, "text": "PCB Assembly, working on first time soldering SMD components by hand, with no heat bed or heat gun, just a soldering iron, really hard but got the touch to it now."}]...
|
Title: NeoXalle by @rekirxs | Stardance
Devlogs:
Title: NeoXalle by @rekirxs | Stardance
Devlogs:
PCB Assembly, working on first time soldering SMD components by hand, with no heat bed or heat gun, just a soldering iron, really hard but got the touch to it now.
Soldered more important modulles and components, such as the Esp32c3 u1, which all of these are smd, took me some time...
|
1793404086.6811764
|
1794008886.6811764
|
|
40036
|
Gorgon vOS by @Soala7 | Stardance
|
Soala7
|
0
|
54.23
|
0
|
[]
|
[{"post_id": 56968, "ts": "202 [{"post_id": 56968, "ts": "2026-08-29T00:42:54Z", "hours": 13.6908, "text": "Chip 8 emulator in C."}, {"post_id": 48804, "ts": "2026-08-17T10:38:52Z", "hours": 25.3711, "text": "Been working on Virtual memory for my Virtual OS project"}, {"post_id": 37788, "ts": "2026-07-30T18:33:06Z", "hours": 0.7433, "text": "I made a chess game with python. It has to mode pvp and on there you can play an AI with variable difficulty. I nice looking UI with Pygame, working sound effects and correct game logic. This project combines my love for Chess and Python. And in the future hope to do it again in C/C++"}, {"post_id": 37392, "ts": "2026-07-30T02:26:36Z", "hours": 1.3189, "text": "Working desktop simulator using python-c bridge"}, {"post_id": 37006, "ts": "2026-07-29T13:40:07Z", "hours": 5.1711, "text": "PCB type 1"}, {"post_id": 36031, "ts": "2026-07-27T21:04:20Z", "hours": 4.6419, "text": "File manager re-design, I’m creating a virtual operating system with an encoded Linux sand box to launch apps. Current stage file manager, create, copy and paste, delete, move file and folder"}, {"post_id": 35409, "ts": "2026-07-26T19:52:51Z", "hours": 1.6742, "text": "Developing the File explorer"}, {"post_id": 35178, "ts": "2026-07-26T13:09:25Z", "hours": 1.1447, "text": "Making a filesystem is no longer stores temporary RAM data; VOS now has a basic storage system like a real OS."}, {"post_id": 35116, "ts": "2026-07-26T10:51:08Z", "hours": 0.47, "text": "Currently design an ability to save files made in VOS for the eventual creation of the file explorer"}]...
|
Title: Gorgon vOS by @Soala7 | Stardance
Devlogs: Title: Gorgon vOS by @Soala7 | Stardance
Devlogs:
Currently design an ability to save files made in VOS for the eventual creation of the file explorer
Making a filesystem is no longer stores temporary RAM data; VOS now has a basic storage system like a real OS.
Developing the File explorer
File manager re-design, I’m creating a virtual operating system with an encoded Linux sand box to launch apps. Current stage file manager, create, copy and paste, delete, move file and folder
PCB type 1
Working desktop simulator using python-c bridge
I made a chess game with python. It has to mode pvp and on there you can play an AI with variable difficulty. I nice looking UI with Pygame, working sound effects and correct game logic. This project combines my love for Chess and Python. And in the future hope to do it again in C/C++
Been working on Virtual memory for my Virtual OS project
Chip 8 emulator in C....
|
1793404084.5125265
|
1794008884.5125265
|
|
51707
|
My awesome macropad! by @malakkrmm | Stardance
|
malakkrmm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @malakkrmm | Starda Title: My awesome macropad! by @malakkrmm | Stardance...
|
1793404081.491239
|
1794008881.491239
|
|
25253
|
Untitled by @GregorySem | Stardance
|
GregorySem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @GregorySem | Stardance
|
1793404080.560055
|
1794008880.560055
|
|
51706
|
My site by @samarth_hota | Stardance
|
samarth_hota
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My site by @samarth_hota | Stardance
|
1793404079.6545708
|
1794008879.6545708
|
|
30006
|
WebMacOS by @WilGulf | Stardance
|
WilGulf
|
0
|
3.11
|
0
|
[]
|
[{"post_id": 21424, "ts": "202 [{"post_id": 21424, "ts": "2026-07-03T11:18:32Z", "hours": 3.1097, "text": "My webOS I took a break from developing my actual OS (NeoOS) and tried making a webOS like many others. Now I got my first app open that also can be closed. I also started on a dock and some animations for it. You may think this look really close to macOS and that is exactly what i try to make it look like, or more exactly macOS 12 monterey. –WilGulf"}]...
|
Title: WebMacOS by @WilGulf | Stardance
Devlogs:
Title: WebMacOS by @WilGulf | Stardance
Devlogs:
My webOS I took a break from developing my actual OS (NeoOS) and tried making a webOS like many others. Now I got my first app open that also can be closed. I also started on a dock and some animations for it. You may think this look really close to macOS and that is exactly what i try to make it look like, or more exactly macOS 12 monterey. –WilGulf...
|
1793404078.7425542
|
1794008878.7425542
|
|
51705
|
Notification Hub by @Steve | Stardance
|
Steve
|
0
|
48.29
|
0
|
[]
|
[{"post_id": 79156, "ts": "202 [{"post_id": 79156, "ts": "2026-10-12T20:41:11Z", "hours": 7.6194, "text": "I’ve been struggling with the plugin setting pages. The main point of hardship is the object-list setting, which is a list of entries, each containing several different instances of the pluginSetting class. I’ve rewritten it way too many times. Fortunately I’m making progress, unfortunately very slowly."}, {"post_id": 69755, "ts": "2026-09-17T18:46:09Z", "hours": 6.9061, "text": "I’ve been again, working on learning oop better. This time I’ve been having trouble with dependencies. I decided to have a global context that gets passed into each page, problem is it get circular. I also heavily refactored/abstracted filtering and sorting a page, now it’s much better. All of the changes I’ve made since the last devlog have been mainly architectural, not much of the ui changed."}, {"post_id": 65710, "ts": "2026-09-11T01:23:07Z", "hours": 7.585, "text": "I’m continuing to learn OOP principles and design patterns, this is super fun. I’ve been struggling with dependency injection, but I think I’ve got it set up well for the most part The problem is that each page has different actions that the sidebar needs to call, but I want to abstract it with page manager so that the sidebar doesn’t know too much about each individual page, and instead communicates through the page manager. This is annoying to set up in the page manager unfortunately. I also added the plugins page and I’m working on the individual plugins page which will be it’s own headache. With that you’ll be able to control each plugin with the plugin’s defined settings."}, {"post_id": 60794, "ts": "2026-09-03T11:59:15Z", "hours": 5.5931, "text": "Conventional commits are sooo nice. I’ve started using them after just dumping everything I was working on into one big commit and it’s so worth it. I’ve also been working on shoring up my current structure, dependencies, and all that good stuff to make it more maintainable. That’s what this project is supposed to teach me after all and I think I’m getting the hang of it. Also tidied up the ui a bit and am working on making the plugins page with settings. That will be interesting compnent-wise because each setting for a plugin has several different types and has to update based on that. We’ll see how that goes."}, {"post_id": 57393, "ts": "2026-08-29T15:09:24Z", "hours": 8.3222, "text": "I’ve been working on the ui, made with typescript and scss. This is what I have so far. I’m making it super nice and maintainable with typescript features. I also made a whole component system that automatically handles get/set functionality for the properties. I used that for each sidebar item and each notification. I also made a sorting system that has yet to be functional at all."}, {"post_id": 55324, "ts": "2026-08-27T02:11:57Z", "hours": 10.9486, "text": "I’ve been having a lot of fun with abstraction/object oriented stuff. With it I set up a whole system that loads plugins and gives them methods to call like a logger, setNotification() , etc. Also the system calls it’s getNotifications() function every 5 minutes (will be configurable). I’ve also moved the implementations of my school’s grade/homework system and email imap to the new schema, along with implementing slack. The big thing right now is to design/create the web ui. It will be able to handle everything eventually."}, {"post_id": 51090, "ts": "2026-08-20T16:15:18Z", "hours": 1.3194, "text": "I designed the UI for the app, and am currently working on setting up the main structure for the backend. I’m setting up the plugin system and in the process learning object oriented concepts in ts. Instead of having all the db calls inline where I serve the routes like I did before now I have an interface for my database! It’s a lot of fun"}]...
|
Title: Notification Hub by @Steve | Stardance
Dev Title: Notification Hub by @Steve | Stardance
Devlogs:
I designed the UI for the app, and am currently working on setting up the main structure for the backend. I’m setting up the plugin system and in the process learning object oriented concepts in ts. Instead of having all the db calls inline where I serve the routes like I did before now I have an interface for my database! It’s a lot of fun
I’ve been having a lot of fun with abstraction/object oriented stuff. With it I set up a whole system that loads plugins and gives them methods to call like a logger, setNotification() , etc. Also the system calls it’s getNotifications() function every 5 minutes (will be configurable). I’ve also moved the implementations of my school’s grade/homework system and email imap to the new schema, along with implementing slack. The big thing right now is to design/create the web ui. It will be able to handle everything eventually.
I’ve been working on the ui, made with typescript and scss. This is what I have so far. I’m making it super nice and maintainable with typescript features. I also made a whole component system that automatically handles get/set functionality for the properties. I used that for each sidebar item and each notification. I also made a sorting system that has yet to be functional at all.
Conventional commits are sooo nice. I’ve started using them after just dumping everything I was working on into one big commit and it’s so worth it. I’ve also been working on shoring up my current structure, dependencies, and all that good stuff to make it more maintainable. That’s what this project is supposed to teach me after all and I think I’m getting the hang of it. Also tidied up the ui a bit and am working on making the plugins page with settings. That will be interesting compnent-wise because each setting for a plugin has several different types and has to update based on that. We’ll see how that goes.
I’m continuing to learn OOP principles and design patterns, this is super fun. I’ve been struggling with dependency injection, but I think I’ve got it set up well for the most part The problem is that each page has different actions that the sidebar needs to call, but I want to abstract it with page manager so that the sidebar doesn’t know too much about each individual page, and instead communicates through the page manager. This is annoying to set up in the page manager unfortunately. I also added the plugins page and I’m working on the individual plugins page which will be it’s own headache. With that you’ll be able to control each plugin with the plugin’s defined settings.
I’ve been again, working on learning oop better. This time I’ve been having trouble with dependencies. I decided to have a global context that gets passed into each page, problem is it get circular. I also heavily refactored/abstracted filtering and sorting a page, now it’s much better. All of the changes I’ve made since the last devlog have been mainly architectural, not much of the ui changed.
I’ve been struggling with the plugin setting pages. The main point of hardship is the object-list setting, which is a list of entries, each containing several different instances of the pluginSetting class. I’ve rewritten it way too many times. Fortunately I’m making progress, unfortunately very slowly....
|
1793404077.5074906
|
1794008877.5074906
|
|
27564
|
Опечатка by @FedShved | Stardance
|
FedShved
|
0
|
5.94
|
0
|
[]
|
[{"post_id": 18722, "ts": "202 [{"post_id": 18722, "ts": "2026-06-29T22:08:34Z", "hours": 0.7911, "text": "I set out to make the keyboard actually look like the design I’d settled on.Everything worked by then but it still wore a generic light theme, and the wholepitch is a keyboard that looks and types like Samsung’s, so the look had to land. Ipulled every color and a few sizing numbers into one theme object and repaintedthrough it: a black keyboard, near-black keys, white letters, and red used for onething only, the key you’re pressing. On top of that I added the pieces the mockupshowed — a floating preview of the letter above your finger, a permanent numberrow, a dim symbol in the corner of every key that you get by long-pressing, atwo-page ?123 layer, a blue enter key that turns into a magnifier in search boxes, arow of toolbar icons up top, and holding the spacebar to slide the cursor throughtext. The part I was wary of was the number row, because it doesn’t just sit on top, itgoes into the same grid the autocorrect uses to read where your taps land. Adding a fifth row shifts every letter’s position, and the worry was that it would quietlythrow off the typo-fixing and start mangling words. It turned out not to matter: thedecoder measures distances in key-widths rather than pixels, so adding oneevenly-sized row leaves the spacing between letters exactly what it was, and thedigits aren’t letters so they never enter the word search at all. The offline testthat runs thousands of fake typos came back with the same numbers as before thechange, false corrections still at zero, which is what let me put the row in the reallayout instead of bolting it on as a separate strip. The screenshot shows the new black keyboard with the number row on top and a pressedkey lit red with its letter popped up above it. Note, found while testing the redesign and not caused by it: two things in the decoder are worth fixing later. The bar offers “дом ас” when you type “домас”,because the run-together splitter will break a word in two as long as both halves are real, and “ас” happens to be a real word, so it peels it off even though that’s almost never what you want. And “домасний” won’t correct to “домашний”: that’s aс-for-ш mistake, but с and ш sit on opposite rows of the keyboard, and the auto correct only ever considers the key you hit and its close neighbors, so it never even weighsш as a possibility. The first is a small tuning fix; the second would mean teaching it to consider letter swaps beyond fat-finger range, which is a real feature and has to be done without breaking the zero-false-correction rule. ( the toolbar icons along the top aren’t wired up yet. The language one switches keyboards, but emoji, clipboard, settings, and the overflow menu are drawn for now and don’t do anything — they’re waiting for future wiring)"}, {"post_id": 18653, "ts": "2026-06-29T20:52:38Z", "hours": 4.0881, "text": "I wanted to close a gap that felt wrong in real use: autocorrect only ever looked at the word being typed right now. If a typo had already landed in the text and you tapped back into it, the keyboard just sat there and wouldn’t re-check the word or offer the right spelling. An earlier pass had made tapping into a word safe so it no longer mangled it, but the part you actually expect, tap the broken word and get the fix, wasn’t there yet. So now when the cursor lands inside a finished word the keyboard adopts it: it works out where the word starts and ends and, since the original taps are long gone, recreates them by dropping one tap dead-center on each letter’s key, then runs the same autocorrect search it uses while typing. The correct spelling shows up in the bar and one tap swaps it in where the word sits, without disturbing the spaces or words around it, and you can also just backspace and retype and it re-checks live. It never changes the word on its own - tapping in only offers a fix -which keeps the rule the whole project lives by, never correct a word that was already fine, intact at zero false corrections. The tricky part was telling apart the two times the cursor moves - when I move it, since right after committing a word the system reports the cursor now sitting after it, versus when you tap somewhere new. Treating my own cursor updates as a fresh tap made the keyboard re-grab and re-offer the word it had just finished, in a loop. I fixed it by remembering exactly where I last put the cursor and only reacting when it turns up somewhere I didn’t put it. The other half was being conservative about which words to touch: only plain Russian words, never names, numbers, or anything with characters that don’t exist on the keyboard, and never a half-typed fragment. Finally I was also able to fix a bug word-tearing. At first I had marked it done, but the exact thing that happens when you edit a word still broke. Type a word, press space, backspace into it, keep typing, and the keyboard treats the new letters as a separate new word and splits the old one in half. So I reproduced it on the emulator in the Settings search box, the field from the screenshots, and changed how typing into existing text works. Now when you start typing with the cursor inside a word the keyboard adopts that whole word and edits it as one unit instead of starting a loose fragment beside it, and I gave it a cursor index within the word so an inserted or deleted letter lands where the cursor actually is instead of always at the end. What slowed me down was that clean scripted taps would not tear the word no matter what I tried, which is the same trap I have fell into earlier. The bug was never in the path I kept testing. It only shows up once space has committed the word, and my reproductions weren’t pressing space first. Only after many many tries I was able to finally understand the logic of the bug. Space, then backspace, then type. With space, the word is committed text, so backspacing into it does plain deletes and the old code then composed only the new letter as its own fragment. Replacing that “cursor sits inside text” path with whole-word adoption fixed it, and false corrections stayed at zero the whole time since an adopted word is only ever offered, never swapped on its own."}, {"post_id": 17546, "ts": "2026-06-28T11:36:04Z", "hours": 1.0558, "text": "What I set out to do. Build the core of the keyboard: a full Russian ЙЦУКЕН layout that doesn’t just type letters, but fixes fat-finger typos as you go. The whole reason for this project is that Samsung’s Russian autocorrect is rough, so this part had to genuinely work, not just look the part. Drew the keyboard as a custom Canvas view instead of a UI framework, so it stays small and opens fast on old phones. Then wrote the autocorrect engine - it treats every tap as a point on the screen, not a fixed key, and runs a search over a word dictionary that scores how well your taps match each word against how common that word is. On space it decides whether to swap your typo for the best match. Never touch a word that’s already spelled right. At first the system said the keyboard was visible, the process was running, no crash in the logs, just a thin blank strip at the bottom. I lost a good while on this. Turned out Android measures the keyboard once with a width of zero before the real layout pass, and I was computing the keyboard’s height from its width, so zero width meant zero height and it never recovered. Fixed it by falling back to the actual screen width when the measured width comes back as zero. Keyboard popped straight up after that. (to be honest there are still problems with this system which i aim to soon fix, like for example starting mid word, or not spaced word. But at least I was able to get it to work in the most ideal conditions)"}]...
|
Title: Опечатка by @FedShved | Stardance
Devlogs: Title: Опечатка by @FedShved | Stardance
Devlogs:
What I set out to do. Build the core of the keyboard: a full Russian ЙЦУКЕН layout that doesn’t just type letters, but fixes fat-finger typos as you go. The whole reason for this project is that Samsung’s Russian autocorrect is rough, so this part had to genuinely work, not just look the part. Drew the keyboard as a custom Canvas view instead of a UI framework, so it stays small and opens fast on old phones. Then wrote the autocorrect engine - it treats every tap as a point on the screen, not a fixed key, and runs a search over a word dictionary that scores how well your taps match each word against how common that word is. On space it decides whether to swap your typo for the best match. Never touch a word that’s already spelled right. At first the system said the keyboard was visible, the process was running, no crash in the logs, just a thin blank strip at the bottom. I lost a good while on this. Turned out Android measures the keyboard once with a width of zero before the real layout pass, and I was computing the keyboard’s height from its width, so zero width meant zero height and it never recovered. Fixed it by falling back to the actual screen width when the measured width comes back as zero. Keyboard popped straight up after that. (to be honest there are still problems with this system which i aim to soon fix, like for example starting mid word, or not spaced word. But at least I was able to get it to work in the most ideal conditions)
I wanted to close a gap that felt wrong in real use: autocorrect only ever looked at the word being typed right now. If a typo had already landed in the text and you tapped back into it, the keyboard just sat there and wouldn’t re-check the word or offer the right spelling. An earlier pass had made tapping into a word safe so it no longer mangled it, but the part you actually expect, tap the broken word and get the fix, wasn’t there yet. So now when the cursor lands inside a finished word the keyboard adopts it: it works out where the word starts and ends and, since the original taps are long gone, recreates them by dropping one tap dead-center on each letter’s key, then runs the same autocorrect search it uses while typing. The correct spelling shows up in the bar and one tap swaps it in where the word sits, without disturbing the spaces or words around it, and you can also just backspace and retype and it re-checks live. It never changes the word on its own - tapping in only offers a fix -which keeps the rule the whole project lives by, never correct a word that was already fine, intact at zero false corrections. The tricky part was telling apart the two times the cursor moves - when I move it, since right after committing a word the system reports the cursor now sitting after it, versus when you tap somewhere new. Treating my own cursor updates as a fresh tap made the keyboard re-grab and re-offer the word it had just finished, in a loop. I fixed it by remembering exactly where I last put the cursor and only reacting when it turns up somewhere I didn’t put it. The other half was being conservative about which words to touch: only plain Russian words, never names, numbers, or anything with characters that don’t exist on the keyboard, and never a half-typed fragment. Finally I was also able to fix a bug word-tearing. At first I had marked it done, but the exact thing that happens when you edit a word still broke. Type a word, press space, backspace into it, keep typing, and the keyboard treats the new letters as a separate new word and splits the old one in half. So I reproduced it on the emulator in the Settings search box, the field from the screenshots, and changed how typing into existing text works. Now when you start typing with the cursor inside a word the keyboard adopts that whole word and edits it as one unit instead of starting a loose fragment beside it, and I gave it a cursor index within the word so an inserted or deleted letter lands where the cursor actually is instead of always at the end. What slowed me down was that clean scripted taps would not tear the word no matter what I tried, which is the same trap I have fell into earlier. The bug was never in the path I kept testing. It only shows up once space has committed the word, and my reproductions weren’t pressing space first. Only after many many tries I was able to finally understand the logic of the bug. Space, then backspace, then type. With space, the word is committed text, so backspacing into it does plain deletes and the old code then composed only the new letter as its own fragment. Replacing that “cursor sits inside text” path with whole-word adoption fixed it, and false corrections stayed at zero the whole time since an adopted word is only ever offered, never swapped on its own.
I set out to make the keyboard actually look like the design I’d settled on.Everything worked by then but it still wore a generic light theme, and the wholepitch is a keyboard that looks and types like Samsung’s, so the look had to land. Ipulled every color and a few sizing numbers into one theme object and repaintedthrough it: a black keyboard, near-black keys, white letters, and red used for onething only, the key you’re pressing. On top of that I added the pieces the mockupshowed — a floating preview of the letter above your finger, a permanent numberrow, a dim symbol in the corner of every key that you get by long-pressing, atwo-page ?123 layer, a blue enter key that turns into a magnifier in search boxes, arow of toolbar icons up top, and holding the spacebar to slide the cursor throughtext. The part I was wary of was the number row, because it doesn’t just sit on top, itgoes into the same grid the autocorrect uses to read where your taps land. Adding a fifth row shifts every letter’s position, and the worry was that it would quietlythrow off the typo-fixing and start mangling words. It turned out not to matter: thedecoder measures distances in key-widths rather than pixels, so adding oneevenly-sized row leaves the spacing between letters exactly what it was, and thedigits aren’t letters so they never enter the word search at all. The offline testthat runs thousands of fake typos came back with the same numbers as before thechange, false corrections still at zero, which is what let me put the row in the reallayout instead of bolting it on as a separate strip. The screenshot shows the new black keyboard with the number row on top and a pressedkey lit red with its letter popped up above it. Note, found while testing the redesign and not caused by it: two things in the decoder are worth fixing later. The bar offers “дом ас” when you type “домас”,because the run-together splitter will break a word in two as long as both halves are real, and “ас” happens to be a real word, so it peels it off even though that’s almost never what you want. And “домасний” won’t correct to “домашний”: that’s aс-for-ш mistake, but с and ш sit on opposite rows of the keyboard, and the auto correct only ever considers the key you hit and its close neighbors, so it never even weighsш as a possibility. The first is a small tuning fix; the second would mean teaching it to consider letter swaps beyond fat-finger range, which is a real feature and has to be done without breaking the zero-false-correction rule. ( the toolbar icons along the top aren’t wired up yet. The language one switches keyboards, but emoji, clipboard, settings, and the overflow menu are drawn for now and don’t do anything — they’re waiting for future wiring)...
|
1793404076.2897468
|
1794008876.2897468
|
|
51704
|
My own site! by @mirandaa__ | Stardance
|
mirandaa__
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @mirandaa__ | Stardance
|
1793404075.358672
|
1794008875.358672
|
|
2713
|
My first slack bot! by @brunohakuzwe | Stardance
|
brunohakuzwe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @brunohakuzwe | Star Title: My first slack bot! by @brunohakuzwe | Stardance...
|
1793404073.436744
|
1794008873.436744
|
|
51701
|
My awesome macropad! by @MuhammedNihal9 | Stardanc My awesome macropad! by @MuhammedNihal9 | Stardance...
|
MuhammedNihal9
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @MuhammedNihal9 | S Title: My awesome macropad! by @MuhammedNihal9 | Stardance...
|
1793404072.516377
|
1794008872.516377
|
|
51700
|
My own site! by @rohansure19 | Stardance
|
rohansure19
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @rohansure19 | Stardance
|
1793404071.5655239
|
1794008871.5655239
|
|
34695
|
My first slack bot! by @oulak291 | Stardance
|
oulak291
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @oulak291 | Stardanc Title: My first slack bot! by @oulak291 | Stardance...
|
1793404066.3944142
|
1794008866.3944142
|
|
22177
|
Catch the parcel by @srijayan | Stardance
|
srijayan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Catch the parcel by @srijayan | Stardance
|
1793404065.4836137
|
1794008865.4836137
|
|
8365
|
app by @pratyushtheplatypus | Stardance
|
pratyushtheplatypus
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: app by @pratyushtheplatypus | Stardance
|
1793404064.5690267
|
1794008864.5690267
|
|
26912
|
My very own WebOS by @Mainlader | Stardance
|
Mainlader
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Mainlader | Stardance
|
1793404063.6765702
|
1794008863.6765702
|